diff options
author | Håvard Pettersen <havardpe@oath.com> | 2017-11-06 15:27:58 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2017-11-07 14:47:34 +0000 |
commit | 0970129d98a386753e2fa24c559c77392691c633 (patch) | |
tree | aea271d8b97ff24fb3f4020b09d26901b978ddba /searchlib | |
parent | f5957dbf63a5fcd7df5df9062ef0324a52ed8605 (diff) |
clean up tensor engine API
make Tensor a subclass of Value
Diffstat (limited to 'searchlib')
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); } |