diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2021-02-28 14:26:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-28 14:26:08 +0100 |
commit | 064c29f0186487fc498aa2efac22db548818b86d (patch) | |
tree | 0476b85ffcf37c9040bd1d7f29d58d779a49e73e | |
parent | 00ac6743f1dfb984e9710a70d443a1de0d59d27e (diff) | |
parent | b1558d132fca0244362107915140aefb3aede042 (diff) |
Merge pull request #16695 from vespa-engine/arnej/any-vector-in-nested-loop
handle any vector-like loop/stride pairs
-rw-r--r-- | eval/src/vespa/eval/eval/nested_loop.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/eval/src/vespa/eval/eval/nested_loop.h b/eval/src/vespa/eval/eval/nested_loop.h index c7898e26179..46f11006137 100644 --- a/eval/src/vespa/eval/eval/nested_loop.h +++ b/eval/src/vespa/eval/eval/nested_loop.h @@ -67,8 +67,8 @@ template <typename F> void execute_many(size_t idx1, size_t idx2, const size_t * } // implementation details // Run a nested loop and pass indexes to 'f' -template <typename F> -void run_nested_loop(size_t idx, const std::vector<size_t> &loop, const std::vector<size_t> &stride, const F &f) { +template <typename F, typename V> +void run_nested_loop(size_t idx, const V &loop, const V &stride, const F &f) { size_t levels = loop.size(); switch(levels) { case 0: return f(idx); @@ -82,8 +82,8 @@ void run_nested_loop(size_t idx, const std::vector<size_t> &loop, const std::vec // Run two nested loops in parallel and pass both indexes to 'f'. Note // that 'loop' is shared, which means that only individual strides may // differ between the two loops. -template <typename F> -void run_nested_loop(size_t idx1, size_t idx2, const std::vector<size_t> &loop, const std::vector<size_t> &stride1, const std::vector<size_t> &stride2, const F &f) { +template <typename F, typename V> +void run_nested_loop(size_t idx1, size_t idx2, const V &loop, const V &stride1, const V &stride2, const F &f) { size_t levels = loop.size(); switch(levels) { case 0: return f(idx1, idx2); |