diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-05-11 11:30:02 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-05-11 14:03:37 +0000 |
commit | 9a378d7d1923b983fa7a1f6267d7a375684f08d1 (patch) | |
tree | 12e7e4d0be7b7f2e5cc7b4bce2714b65180a3799 /eval/src | |
parent | 8015f2118c4dca8bbfecb0c3458a05e0d8d3630f (diff) |
Deinline
Diffstat (limited to 'eval/src')
4 files changed, 61 insertions, 41 deletions
diff --git a/eval/src/vespa/eval/tensor/sparse/CMakeLists.txt b/eval/src/vespa/eval/tensor/sparse/CMakeLists.txt index b4304a2c810..4cd682d8953 100644 --- a/eval/src/vespa/eval/tensor/sparse/CMakeLists.txt +++ b/eval/src/vespa/eval/tensor/sparse/CMakeLists.txt @@ -3,6 +3,7 @@ vespa_add_library(eval_tensor_sparse OBJECT SOURCES sparse_tensor.cpp sparse_tensor_address_combiner.cpp + sparse_tensor_address_padder.cpp sparse_tensor_address_reducer.cpp sparse_tensor_match.cpp sparse_tensor_builder.cpp diff --git a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.cpp b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.cpp new file mode 100644 index 00000000000..46cd6537802 --- /dev/null +++ b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.cpp @@ -0,0 +1,53 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "sparse_tensor_address_padder.h" +#include "sparse_tensor_address_decoder.h" +#include <cassert> + +namespace vespalib::tensor { + +SparseTensorAddressPadder::SparseTensorAddressPadder(const eval::ValueType &resultType, + const eval::ValueType &inputType) + : SparseTensorAddressBuilder(), + _padOps() +{ + auto resultDimsItr = resultType.dimensions().cbegin(); + auto resultDimsItrEnd = resultType.dimensions().cend(); + for (auto &dim : inputType.dimensions()) { + while (resultDimsItr != resultDimsItrEnd && + resultDimsItr->name < dim.name) { + _padOps.push_back(PadOp::PAD); + ++resultDimsItr; + } + assert(resultDimsItr != resultDimsItrEnd && + resultDimsItr->name == dim.name); + _padOps.push_back(PadOp::COPY); + ++resultDimsItr; + } + while (resultDimsItr != resultDimsItrEnd) { + _padOps.push_back(PadOp::PAD); + ++resultDimsItr; + } +} + +SparseTensorAddressPadder::~SparseTensorAddressPadder() = default; + +void +SparseTensorAddressPadder::padAddress(SparseTensorAddressRef ref) +{ + clear(); + SparseTensorAddressDecoder addr(ref); + for (auto op : _padOps) { + switch (op) { + case PadOp::PAD: + addUndefined(); + break; + default: + add(addr.decodeLabel()); + } + } + assert(!addr.valid()); +} + +} + diff --git a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.h b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.h index 29e10c778ba..fbd34fcb0f8 100644 --- a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.h +++ b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.h @@ -3,12 +3,11 @@ #pragma once #include "sparse_tensor_address_builder.h" -#include "sparse_tensor_address_decoder.h" +#include <vespa/eval/eval/value_type.h> #include <cassert> namespace vespalib::tensor { - /** * This class transforms serialized sparse tensor addresses by padding * in "undefined" labels for new dimensions. @@ -20,46 +19,12 @@ class SparseTensorAddressPadder : public SparseTensorAddressBuilder std::vector<PadOp> _padOps; public: - SparseTensorAddressPadder(const eval::ValueType &resultType, - const eval::ValueType &inputType) - : SparseTensorAddressBuilder(), - _padOps() - { - auto resultDimsItr = resultType.dimensions().cbegin(); - auto resultDimsItrEnd = resultType.dimensions().cend(); - for (auto &dim : inputType.dimensions()) { - while (resultDimsItr != resultDimsItrEnd && - resultDimsItr->name < dim.name) { - _padOps.push_back(PadOp::PAD); - ++resultDimsItr; - } - assert(resultDimsItr != resultDimsItrEnd && - resultDimsItr->name == dim.name); - _padOps.push_back(PadOp::COPY); - ++resultDimsItr; - } - while (resultDimsItr != resultDimsItrEnd) { - _padOps.push_back(PadOp::PAD); - ++resultDimsItr; - } - } + SparseTensorAddressPadder(const eval::ValueType &resultType, const eval::ValueType &inputType); + SparseTensorAddressPadder(SparseTensorAddressPadder &&) = default; + SparseTensorAddressPadder & operator =(SparseTensorAddressPadder &&) = default; + ~SparseTensorAddressPadder(); - void - padAddress(SparseTensorAddressRef ref) - { - clear(); - SparseTensorAddressDecoder addr(ref); - for (auto op : _padOps) { - switch (op) { - case PadOp::PAD: - addUndefined(); - break; - default: - add(addr.decodeLabel()); - } - } - assert(!addr.valid()); - } + void padAddress(SparseTensorAddressRef ref); }; } diff --git a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_match.cpp b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_match.cpp index cd5715e7379..1de08de342a 100644 --- a/eval/src/vespa/eval/tensor/sparse/sparse_tensor_match.cpp +++ b/eval/src/vespa/eval/tensor/sparse/sparse_tensor_match.cpp @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "sparse_tensor_match.h" +#include "sparse_tensor_address_decoder.h" #include <vespa/vespalib/stllike/hash_map.hpp> namespace vespalib::tensor { |