summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2023-03-07 14:14:52 +0100
committerGitHub <noreply@github.com>2023-03-07 14:14:52 +0100
commit16757d03fe631ff31e809b2188484f981f29871d (patch)
tree19dbd0b242952f1a37290e298c69b390cf914ee4 /searchlib
parent251964b9450ed3eadbb9e95be4a52431a22b4df3 (diff)
parentbaa60285dab24b698412708180c55179d391f6f8 (diff)
Merge pull request #26335 from vespa-engine/toregge/split-tensor-buffer-type-mapper
Split tensor buffer type mapper.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.cpp29
-rw-r--r--searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h10
2 files changed, 4 insertions, 35 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.cpp b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.cpp
index ce8cc11026c..3bd9f72c73b 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.cpp
@@ -9,13 +9,13 @@
namespace search::tensor {
TensorBufferTypeMapper::TensorBufferTypeMapper()
- : _array_sizes(),
+ : vespalib::datastore::ArrayStoreTypeMapper(),
_ops(nullptr)
{
}
TensorBufferTypeMapper::TensorBufferTypeMapper(uint32_t max_small_subspaces_type_id, double grow_factor, TensorBufferOperations* ops)
- : _array_sizes(),
+ : vespalib::datastore::ArrayStoreTypeMapper(),
_ops(ops)
{
_array_sizes.reserve(max_small_subspaces_type_id + 1);
@@ -42,29 +42,4 @@ TensorBufferTypeMapper::TensorBufferTypeMapper(uint32_t max_small_subspaces_type
TensorBufferTypeMapper::~TensorBufferTypeMapper() = default;
-uint32_t
-TensorBufferTypeMapper::get_type_id(size_t array_size) const
-{
- assert(!_array_sizes.empty());
- auto result = std::lower_bound(_array_sizes.begin() + 1, _array_sizes.end(), array_size);
- if (result == _array_sizes.end()) {
- return 0; // type id 0 uses LargeSubspacesBufferType
- }
- return result - _array_sizes.begin();
-}
-
-size_t
-TensorBufferTypeMapper::get_array_size(uint32_t type_id) const
-{
- assert(type_id > 0 && type_id < _array_sizes.size());
- return _array_sizes[type_id];
-}
-
-uint32_t
-TensorBufferTypeMapper::get_max_small_array_type_id(uint32_t max_small_array_type_id) const noexcept
-{
- auto clamp_type_id = _array_sizes.size() - 1;
- return (clamp_type_id < max_small_array_type_id) ? clamp_type_id : max_small_array_type_id;
-}
-
}
diff --git a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h
index ad2116a429c..422224751e3 100644
--- a/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h
+++ b/searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h
@@ -2,9 +2,7 @@
#pragma once
-#include <cstddef>
-#include <cstdint>
-#include <vector>
+#include <vespa/vespalib/datastore/array_store_type_mapper.h>
namespace search::tensor {
@@ -16,9 +14,8 @@ class TensorBufferOperations;
* This class provides mapping between type ids and array sizes needed for
* storing a tensor.
*/
-class TensorBufferTypeMapper
+class TensorBufferTypeMapper : public vespalib::datastore::ArrayStoreTypeMapper
{
- std::vector<size_t> _array_sizes;
TensorBufferOperations* _ops;
public:
using SmallBufferType = SmallSubspacesBufferType;
@@ -28,10 +25,7 @@ public:
TensorBufferTypeMapper(uint32_t max_small_subspaces_type_id, double grow_factor, TensorBufferOperations* ops);
~TensorBufferTypeMapper();
- uint32_t get_type_id(size_t array_size) const;
- size_t get_array_size(uint32_t type_id) const;
TensorBufferOperations& get_tensor_buffer_operations() const noexcept { return *_ops; }
- uint32_t get_max_small_array_type_id(uint32_t max_small_array_type_id) const noexcept;
};
}