diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-01-09 16:47:13 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-01-09 16:47:13 +0100 |
commit | 3a18307f7f9784299f4306a0032d1e968c28731e (patch) | |
tree | 9f895f1aab8db5983f67d890d1ae750ca8c7c3d0 /eval | |
parent | ccb02db31521233a31be3025dc41485548262b3d (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.cpp | 11 | ||||
-rw-r--r-- | eval/src/vespa/eval/tensor/dense/dense_tensor_view.h | 1 |
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; |