aboutsummaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-05-11 11:30:02 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2018-05-11 14:03:37 +0000
commit9a378d7d1923b983fa7a1f6267d7a375684f08d1 (patch)
tree12e7e4d0be7b7f2e5cc7b4bce2714b65180a3799 /eval
parent8015f2118c4dca8bbfecb0c3458a05e0d8d3630f (diff)
Deinline
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/tensor/sparse/CMakeLists.txt1
-rw-r--r--eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.cpp53
-rw-r--r--eval/src/vespa/eval/tensor/sparse/sparse_tensor_address_padder.h47
-rw-r--r--eval/src/vespa/eval/tensor/sparse/sparse_tensor_match.cpp1
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 {