summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2017-11-06 15:27:58 +0000
committerHåvard Pettersen <havardpe@oath.com>2017-11-07 14:47:34 +0000
commit0970129d98a386753e2fa24c559c77392691c633 (patch)
treeaea271d8b97ff24fb3f4020b09d26901b978ddba /searchlib
parentf5957dbf63a5fcd7df5df9062ef0324a52ed8605 (diff)
clean up tensor engine API
make Tensor a subclass of Value
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/features/constant/constant_test.cpp5
-rw-r--r--searchlib/src/tests/features/tensor/tensor_test.cpp2
-rw-r--r--searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp2
-rw-r--r--searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp2
-rw-r--r--searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_tensor_executor.h11
-rw-r--r--searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h1
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h4
11 files changed, 22 insertions, 28 deletions
diff --git a/searchlib/src/tests/features/constant/constant_test.cpp b/searchlib/src/tests/features/constant/constant_test.cpp
index a10f76e25ba..4a88fde58ce 100644
--- a/searchlib/src/tests/features/constant/constant_test.cpp
+++ b/searchlib/src/tests/features/constant/constant_test.cpp
@@ -19,7 +19,6 @@ using namespace search::features;
using vespalib::eval::Function;
using vespalib::eval::Value;
using vespalib::eval::DoubleValue;
-using vespalib::eval::TensorValue;
using vespalib::eval::TensorSpec;
using vespalib::eval::ValueType;
using vespalib::tensor::DefaultTensorEngine;
@@ -39,7 +38,7 @@ Tensor::UP createTensor(const TensorCells &cells,
}
Tensor::UP make_tensor(const TensorSpec &spec) {
- auto tensor = DefaultTensorEngine::ref().create(spec);
+ auto tensor = DefaultTensorEngine::ref().from_spec(spec);
return Tensor::UP(dynamic_cast<Tensor*>(tensor.release()));
}
@@ -80,7 +79,7 @@ struct ExecFixture
ValueType type(tensor->getType());
test.getIndexEnv().addConstantValue(name,
std::move(type),
- std::make_unique<TensorValue>(std::move(tensor)));
+ std::move(tensor));
}
void addDouble(const vespalib::string &name, const double value) {
diff --git a/searchlib/src/tests/features/tensor/tensor_test.cpp b/searchlib/src/tests/features/tensor/tensor_test.cpp
index be7bb9defac..b097f27342d 100644
--- a/searchlib/src/tests/features/tensor/tensor_test.cpp
+++ b/searchlib/src/tests/features/tensor/tensor_test.cpp
@@ -54,7 +54,7 @@ Tensor::UP createTensor(const TensorCells &cells,
}
Tensor::UP make_tensor(const TensorSpec &spec) {
- auto tensor = DefaultTensorEngine::ref().create(spec);
+ auto tensor = DefaultTensorEngine::ref().from_spec(spec);
return Tensor::UP(dynamic_cast<Tensor*>(tensor.release()));
}
diff --git a/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp b/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
index 0a900ad9ec8..1ac524b5d0b 100644
--- a/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
+++ b/searchlib/src/tests/features/tensor_from_labels/tensor_from_labels_test.cpp
@@ -36,7 +36,7 @@ typedef search::AttributeVector::SP AttributePtr;
typedef FtTestApp FTA;
Tensor::UP make_tensor(const TensorSpec &spec) {
- auto tensor = DefaultTensorEngine::ref().create(spec);
+ auto tensor = DefaultTensorEngine::ref().from_spec(spec);
return Tensor::UP(dynamic_cast<Tensor*>(tensor.release()));
}
diff --git a/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp b/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
index cad0c56b0ca..e0eee954a53 100644
--- a/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
+++ b/searchlib/src/tests/features/tensor_from_weighted_set/tensor_from_weighted_set_test.cpp
@@ -37,7 +37,7 @@ typedef search::AttributeVector::SP AttributePtr;
typedef FtTestApp FTA;
Tensor::UP make_tensor(const TensorSpec &spec) {
- auto tensor = DefaultTensorEngine::ref().create(spec);
+ auto tensor = DefaultTensorEngine::ref().from_spec(spec);
return Tensor::UP(dynamic_cast<Tensor*>(tensor.release()));
}
diff --git a/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp b/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
index 28b4ad3c4e4..2e88f0e90b0 100644
--- a/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
+++ b/searchlib/src/tests/tensor/dense_tensor_store/dense_tensor_store_test.cpp
@@ -21,7 +21,7 @@ using EntryRef = DenseTensorStore::EntryRef;
Tensor::UP
makeTensor(const TensorSpec &spec)
{
- auto tensor = DefaultTensorEngine::ref().create(spec);
+ auto tensor = DefaultTensorEngine::ref().from_spec(spec);
return Tensor::UP(dynamic_cast<Tensor *>(tensor.release()));
}
diff --git a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
index 1a0e425e0ef..43ce48282ee 100644
--- a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
+++ b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h
@@ -18,10 +18,10 @@ namespace features {
class ConstantTensorExecutor : public fef::FeatureExecutor
{
private:
- const vespalib::eval::TensorValue::UP _tensor;
+ vespalib::eval::Value::UP _tensor;
public:
- ConstantTensorExecutor(vespalib::eval::TensorValue::UP tensor)
+ ConstantTensorExecutor(vespalib::eval::Value::UP tensor)
: _tensor(std::move(tensor))
{}
virtual bool isPure() override { return true; }
@@ -29,11 +29,12 @@ public:
outputs().set_object(0, *_tensor);
}
static fef::FeatureExecutor &create(std::unique_ptr<vespalib::eval::Tensor> tensor, vespalib::Stash &stash) {
- return stash.create<ConstantTensorExecutor>(std::make_unique<vespalib::eval::TensorValue>(std::move(tensor)));
+ return stash.create<ConstantTensorExecutor>(std::move(tensor));
}
static fef::FeatureExecutor &createEmpty(const vespalib::eval::ValueType &valueType, vespalib::Stash &stash) {
- return create(vespalib::tensor::DefaultTensorEngine::ref()
- .create(vespalib::eval::TensorSpec(valueType.to_spec())), stash);
+ const auto &engine = vespalib::tensor::DefaultTensorEngine::ref();
+ auto spec = vespalib::eval::TensorSpec(valueType.to_spec());
+ return stash.create<ConstantTensorExecutor>(engine.from_spec(spec));
}
static fef::FeatureExecutor &createEmpty(vespalib::Stash &stash) {
return createEmpty(vespalib::eval::ValueType::double_type(), stash);
diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
index 76252486bf4..487bc724e07 100644
--- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
+++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp
@@ -5,7 +5,6 @@
using search::tensor::DenseTensorAttribute;
using vespalib::eval::Tensor;
-using vespalib::eval::TensorValue;
using vespalib::tensor::MutableDenseTensorView;
namespace search {
@@ -14,8 +13,7 @@ namespace features {
DenseTensorAttributeExecutor::
DenseTensorAttributeExecutor(const DenseTensorAttribute *attribute)
: _attribute(attribute),
- _tensorView(_attribute->getConfig().tensorType()),
- _tensor(_tensorView)
+ _tensorView(_attribute->getConfig().tensorType())
{
}
@@ -23,7 +21,7 @@ void
DenseTensorAttributeExecutor::execute(uint32_t docId)
{
_attribute->getTensor(docId, _tensorView);
- outputs().set_object(0, _tensor);
+ outputs().set_object(0, _tensorView);
}
} // namespace features
diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
index 68042075942..ac3d327c12a 100644
--- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.h
@@ -19,7 +19,6 @@ class DenseTensorAttributeExecutor : public fef::FeatureExecutor
private:
const search::tensor::DenseTensorAttribute *_attribute;
vespalib::tensor::MutableDenseTensorView _tensorView;
- vespalib::eval::TensorValue _tensor;
public:
DenseTensorAttributeExecutor(const search::tensor::DenseTensorAttribute *attribute);
diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
index 6ee7664f2bb..03393d6f590 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
+++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp
@@ -3,8 +3,6 @@
#include "tensor_attribute_executor.h"
#include <vespa/searchlib/tensor/tensor_attribute.h>
-using vespalib::eval::TensorValue;
-
namespace search {
namespace features {
@@ -12,20 +10,19 @@ TensorAttributeExecutor::
TensorAttributeExecutor(const search::tensor::TensorAttribute *attribute)
: _attribute(attribute),
_emptyTensor(attribute->getEmptyTensor()),
- _tensor(*_emptyTensor)
+ _tensor()
{
}
void
TensorAttributeExecutor::execute(uint32_t docId)
{
- auto tensor = _attribute->getTensor(docId);
- if (!tensor) {
- _tensor = TensorValue(*_emptyTensor);
+ _tensor = _attribute->getTensor(docId);
+ if (_tensor) {
+ outputs().set_object(0, *_tensor);
} else {
- _tensor = TensorValue(std::move(tensor));
+ outputs().set_object(0, *_emptyTensor);
}
- outputs().set_object(0, _tensor);
}
} // namespace features
diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
index 198b03e3d1d..0f1e21c8cad 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.h
@@ -17,7 +17,7 @@ class TensorAttributeExecutor : public fef::FeatureExecutor
private:
const search::tensor::TensorAttribute *_attribute;
std::unique_ptr<vespalib::eval::Tensor> _emptyTensor;
- vespalib::eval::TensorValue _tensor;
+ std::unique_ptr<vespalib::eval::Tensor> _tensor;
public:
TensorAttributeExecutor(const search::tensor::TensorAttribute *attribute);
diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
index 31b92f89538..f102749f1b6 100644
--- a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
+++ b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h
@@ -22,7 +22,7 @@ private:
const search::attribute::IAttributeVector *_attribute;
vespalib::string _dimension;
WeightedBufferType _attrBuffer;
- vespalib::eval::TensorValue::UP _tensor;
+ std::unique_ptr<vespalib::tensor::Tensor> _tensor;
public:
TensorFromAttributeExecutor(const search::attribute::IAttributeVector *attribute,
@@ -48,7 +48,7 @@ TensorFromAttributeExecutor<WeightedBufferType>::execute(uint32_t docId)
builder.add_label(dimensionEnum, vespalib::string(_attrBuffer[i].value()));
builder.add_cell(_attrBuffer[i].weight());
}
- _tensor = vespalib::eval::TensorValue::UP(new vespalib::eval::TensorValue(builder.build()));
+ _tensor = builder.build();
outputs().set_object(0, *_tensor);
}