summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-01-09 16:47:13 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2018-01-09 16:47:13 +0100
commit3a18307f7f9784299f4306a0032d1e968c28731e (patch)
tree9f895f1aab8db5983f67d890d1ae750ca8c7c3d0 /eval
parentccb02db31521233a31be3025dc41485548262b3d (diff)
Add an inner unconditional reduce to avoid temporary vector.
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_tensor_view.cpp11
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_tensor_view.h1
2 files changed, 10 insertions, 2 deletions
diff --git a/eval/src/vespa/eval/tensor/dense/dense_tensor_view.cpp b/eval/src/vespa/eval/tensor/dense/dense_tensor_view.cpp
index 80e24e6e2bb..80548d33e72 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_tensor_view.cpp
+++ b/eval/src/vespa/eval/tensor/dense/dense_tensor_view.cpp
@@ -261,9 +261,8 @@ DenseTensorView::join(join_fun_t function, const Tensor &arg) const
}
Tensor::UP
-DenseTensorView::reduce(join_fun_t op, const std::vector<vespalib::string> &dimensions) const
+DenseTensorView::reduce_all(join_fun_t op, const std::vector<vespalib::string> &dims) const
{
- const std::vector<vespalib::string> & dims = (dimensions.empty() ? _typeRef.dimension_names() : dimensions);
if (op == eval::operation::Mul::f) {
return dense::reduce(*this, dims, [](double a, double b) { return (a * b);});
}
@@ -273,4 +272,12 @@ DenseTensorView::reduce(join_fun_t op, const std::vector<vespalib::string> &dime
return dense::reduce(*this, dims, op);
}
+Tensor::UP
+DenseTensorView::reduce(join_fun_t op, const std::vector<vespalib::string> &dimensions) const
+{
+ return dimensions.empty()
+ ? reduce_all(op, _typeRef.dimension_names())
+ : reduce_all(op, dimensions);
+}
+
}
diff --git a/eval/src/vespa/eval/tensor/dense/dense_tensor_view.h b/eval/src/vespa/eval/tensor/dense/dense_tensor_view.h
index 14d10a669b0..7104a1f86f0 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_tensor_view.h
+++ b/eval/src/vespa/eval/tensor/dense/dense_tensor_view.h
@@ -25,6 +25,7 @@ public:
private:
const eval::ValueType &_typeRef;
+ Tensor::UP reduce_all(join_fun_t op, const std::vector<vespalib::string> &dimensions) const;
protected:
CellsRef _cellsRef;