aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-13 14:38:24 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-13 14:38:24 +0100
commitfdcf0682eb4ed0471431adaf4a6be70628b9c84d (patch)
tree929006dbc7398704f1ee496c3e9df020ef23c21d /vespajlib
parent7fad0f3d7b5dcd171655d101c05cf51f758bfc83 (diff)
Convert tensor update to sparse
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/abi-spec.json1
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/Tensor.java7
3 files changed, 10 insertions, 4 deletions
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index f631b3e1c58..66eb4b1f4e6 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -1107,6 +1107,7 @@
"public varargs abstract com.yahoo.tensor.Tensor$Builder cell(float, long[])",
"public com.yahoo.tensor.Tensor$Builder cell(com.yahoo.tensor.Tensor$Cell, double)",
"public com.yahoo.tensor.Tensor$Builder cell(com.yahoo.tensor.Tensor$Cell, float)",
+ "public com.yahoo.tensor.Tensor$Builder cell(com.yahoo.tensor.Tensor$Cell)",
"public abstract com.yahoo.tensor.Tensor build()"
],
"fields": []
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
index 67c6930ce35..2b393d8a637 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
@@ -253,8 +253,12 @@ public class MixedTensor implements Tensor {
}
public Tensor.Builder block(TensorAddress sparsePart, double[] values) {
+ int denseSubspaceSize = (int)denseSubspaceSize();
+ if (values.length < denseSubspaceSize)
+ throw new IllegalArgumentException("Block should have " + denseSubspaceSize +
+ " values, but has only " + values.length);
double[] denseSubspace = denseSubspace(sparsePart);
- System.arraycopy(values, 0, denseSubspace, 0, (int)denseSubspaceSize());
+ System.arraycopy(values, 0, denseSubspace, 0, denseSubspaceSize);
return this;
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
index 08d4f1c08b7..71bdee36c27 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
@@ -516,9 +516,10 @@ public interface Tensor {
default Builder cell(Cell cell, double value) {
return cell(cell.getKey(), value);
}
- default Builder cell(Cell cell, float value) {
- return cell(cell.getKey(), value);
- }
+ default Builder cell(Cell cell, float value) { return cell(cell.getKey(), value); }
+
+ /** Adds the given cell to this tensor */
+ default Builder cell(Cell cell) { return cell(cell.getKey(), cell.getValue()); }
Tensor build();