diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-11 14:40:54 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-02-11 14:40:54 +0000 |
commit | 51eb186a651a41344322f3d9e44510c8e14fd54d (patch) | |
tree | 6375a0d65d225499eb84a73e70e37d4b7f68717c | |
parent | 31b7cd9833fe8ecf783148b8510ee67222934d18 (diff) |
Deinline the double nested core loop
-rw-r--r-- | eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp b/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp index 080f51e384a..b17c2db8b22 100644 --- a/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp +++ b/eval/src/vespa/eval/instruction/sparse_112_dot_product.cpp @@ -16,17 +16,17 @@ using namespace instruction; namespace { template <typename T, size_t N> -ConstArrayRef<T> as_car(std::array<T, N> &array) { +ConstArrayRef<T> as_car(std::array<T, N> &array) noexcept { return {array.data(), array.size()}; } template <typename T, size_t N> -ConstArrayRef<const T *> as_ccar(std::array<T *, N> &array) { +ConstArrayRef<const T *> as_ccar(std::array<T *, N> &array) noexcept { return {array.data(), array.size()}; } template <typename T> -ConstArrayRef<T> as_car(T &value) { +ConstArrayRef<T> as_car(T &value) noexcept { return {&value, 1}; } @@ -63,6 +63,9 @@ double my_sparse_112_dot_product_fallback(const Value::Index &a_idx, const Value template <typename CT> double my_fast_sparse_112_dot_product(const FastAddrMap *a_map, const FastAddrMap *b_map, const FastAddrMap *c_map, + const CT *a_cells, const CT *b_cells, const CT *c_cells) __attribute__((noinline)); +template <typename CT> +double my_fast_sparse_112_dot_product(const FastAddrMap *a_map, const FastAddrMap *b_map, const FastAddrMap *c_map, const CT *a_cells, const CT *b_cells, const CT *c_cells) { double result = 0.0; |