diff options
author | Tor Egge <Tor.Egge@yahooinc.com> | 2023-03-07 14:14:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-07 14:14:52 +0100 |
commit | 16757d03fe631ff31e809b2188484f981f29871d (patch) | |
tree | 19dbd0b242952f1a37290e298c69b390cf914ee4 /searchlib | |
parent | 251964b9450ed3eadbb9e95be4a52431a22b4df3 (diff) | |
parent | baa60285dab24b698412708180c55179d391f6f8 (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.cpp | 29 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/tensor/tensor_buffer_type_mapper.h | 10 |
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; }; } |