diff options
author | HÃ¥vard Pettersen <3535158+havardpe@users.noreply.github.com> | 2022-02-09 10:18:51 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-09 10:18:51 +0100 |
commit | 2676100e8719b5605017df1700f9e45073219a87 (patch) | |
tree | 45bfd5c6c52a63bf0bc05b38256464529da841ec | |
parent | f99a9a1005f35117e90f0df0d6f9c2bb36357d07 (diff) | |
parent | adf6b9845376577e3501db88aa6e58b4677dc209 (diff) |
Merge pull request #21110 from vespa-engine/balder/use-mmap-for-large-vectors-1
Use mmap automatically for large vectors.
-rw-r--r-- | eval/src/vespa/eval/eval/array_array_map.h | 26 | ||||
-rw-r--r-- | eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp | 6 |
2 files changed, 18 insertions, 14 deletions
diff --git a/eval/src/vespa/eval/eval/array_array_map.h b/eval/src/vespa/eval/eval/array_array_map.h index 3c070210680..e3601644f3e 100644 --- a/eval/src/vespa/eval/eval/array_array_map.h +++ b/eval/src/vespa/eval/eval/array_array_map.h @@ -4,6 +4,7 @@ #include <vespa/vespalib/util/arrayref.h> #include <vespa/vespalib/stllike/hash_set.h> +#include <vespa/vespalib/stllike/allocator.h> #include <vespa/vespalib/stllike/hash_set.hpp> #include <vector> #include <cassert> @@ -27,8 +28,8 @@ class ArrayArrayMap private: size_t _keys_per_entry; size_t _values_per_entry; - std::vector<K> _keys; - std::vector<V> _values; + std::vector<K, vespalib::allocator_large<K>> _keys; + std::vector<V, vespalib::allocator_large<V>> _values; public: size_t keys_per_entry() const { return _keys_per_entry; } @@ -123,14 +124,9 @@ private: } public: - ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries) - : _keys_per_entry(keys_per_entry_in), _values_per_entry(values_per_entry_in), _keys(), _values(), - _map(expected_entries * 2, Hash(), Equal(*this)), _hasher() - { - _keys.reserve(_keys_per_entry * expected_entries); - _values.reserve(_values_per_entry * expected_entries); - static_assert(!std::is_pointer_v<K>, "keys cannot be pointers due to auto-deref of alt keys"); - } + ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries); + ArrayArrayMap(const ArrayArrayMap &) = delete; + ArrayArrayMap & operator = (const ArrayArrayMap &) = delete; ~ArrayArrayMap(); size_t size() const { return _map.size(); } @@ -168,6 +164,16 @@ public: }; template <typename K, typename V, typename H, typename EQ> +ArrayArrayMap<K,V,H,EQ>::ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries) + : _keys_per_entry(keys_per_entry_in), _values_per_entry(values_per_entry_in), _keys(), _values(), + _map(expected_entries * 2, Hash(), Equal(*this)), _hasher() +{ + _keys.reserve(_keys_per_entry * expected_entries); + _values.reserve(_values_per_entry * expected_entries); + static_assert(!std::is_pointer_v<K>, "keys cannot be pointers due to auto-deref of alt keys"); +} + +template <typename K, typename V, typename H, typename EQ> ArrayArrayMap<K,V,H,EQ>::~ArrayArrayMap() = default; } diff --git a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp index 9ddbf41f909..d6a7f54a78e 100644 --- a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp +++ b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp @@ -13,8 +13,7 @@ #include <vespa/log/log.h> LOG_SETUP(".vespalib.eval.value_cache.constant_tensor_loader"); -namespace vespalib { -namespace eval { +namespace vespalib::eval { using Inspector = slime::Inspector; using ObjectTraverser = slime::ObjectTraverser; @@ -110,5 +109,4 @@ ConstantTensorLoader::create(const vespalib::string &path, const vespalib::strin } } -} // namespace vespalib::eval -} // namespace vespalib +} |