summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2019-06-25 09:12:27 +0000
committerArne Juul <arnej@yahoo-inc.com>2019-06-25 09:12:27 +0000
commit3e0cb8d91a98cf8065de5a47af924d38f45e9750 (patch)
treed15d4471b62b6b52848b911cff42406a2b4cefb4 /eval
parent74b2ac25810ce2eda7975469b87942d72089c82a (diff)
use common SideDim struct for both left and right dimensions
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.cpp16
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.h34
2 files changed, 22 insertions, 28 deletions
diff --git a/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.cpp b/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.cpp
index 80aef3c79b6..52bda0d42ec 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.cpp
+++ b/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.cpp
@@ -53,9 +53,9 @@ DenseDimensionCombiner::DenseDimensionCombiner(const eval::ValueType &lhs,
_outputSize *= cd.size;
_commonDims.push_back(cd);
} else {
- LeftDim ld;
+ SideDim ld;
ld.idx = 0;
- ld.leftMultiplier = lMul;
+ ld.sideMultiplier = lMul;
ld.outputMultiplier = oMul;
assert(lDims[i].size == oDims[k].size);
ld.size = oDims[k].size;
@@ -70,9 +70,9 @@ DenseDimensionCombiner::DenseDimensionCombiner(const eval::ValueType &lhs,
assert(j > 0);
assert(rDims[j-1].name == oDims[k].name);
--j;
- RightDim rd;
+ SideDim rd;
rd.idx = 0;
- rd.rightMultiplier = rMul;
+ rd.sideMultiplier = rMul;
rd.outputMultiplier = oMul;
assert(rDims[j].size == oDims[k].size);
rd.size = oDims[k].size;
@@ -89,13 +89,13 @@ void
DenseDimensionCombiner::dump() const
{
fprintf(stderr, "DenseDimensionCombiner: %u * %u -> %u\n", _leftOnlySize, _rightOnlySize, _outputSize);
- for (const LeftDim& ld : _leftDims) {
+ for (const SideDim& ld : _leftDims) {
fprintf(stderr, "ld curidx=%u (of %u) leftmul=%u outmul=%u\n",
- ld.idx, ld.size, ld.leftMultiplier, ld.outputMultiplier);
+ ld.idx, ld.size, ld.sideMultiplier, ld.outputMultiplier);
}
- for (const RightDim& rd : _rightDims) {
+ for (const SideDim& rd : _rightDims) {
fprintf(stderr, "rd curidx=%u (of %u) rightmul=%u outmul=%u\n",
- rd.idx, rd.size, rd.rightMultiplier, rd.outputMultiplier);
+ rd.idx, rd.size, rd.sideMultiplier, rd.outputMultiplier);
}
for (const CommonDim& cd : _commonDims) {
fprintf(stderr, "cd curidx=%u (of %u) leftmul=%u rightmul=%u outmul=%u\n",
diff --git a/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.h b/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.h
index dee6bf0460a..5a52d7945ab 100644
--- a/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.h
+++ b/eval/src/vespa/eval/tensor/dense/dense_dimension_combiner.h
@@ -10,16 +10,10 @@ namespace vespalib::tensor {
class DenseDimensionCombiner {
- struct LeftDim {
+ struct SideDim {
uint32_t idx;
uint32_t size;
- uint32_t leftMultiplier;
- uint32_t outputMultiplier;
- };
- struct RightDim {
- uint32_t idx;
- uint32_t size;
- uint32_t rightMultiplier;
+ uint32_t sideMultiplier;
uint32_t outputMultiplier;
};
struct CommonDim {
@@ -30,8 +24,8 @@ class DenseDimensionCombiner {
uint32_t outputMultiplier;
};
- std::vector<LeftDim> _leftDims;
- std::vector<RightDim> _rightDims;
+ std::vector<SideDim> _leftDims;
+ std::vector<SideDim> _rightDims;
std::vector<CommonDim> _commonDims;
uint32_t _leftIndex;
@@ -52,8 +46,8 @@ public:
bool commonInRange() const { return _outputIndex < _outputSize; }
void leftReset() {
- for (LeftDim& ld : _leftDims) {
- _leftIndex -= ld.idx * ld.leftMultiplier;
+ for (SideDim& ld : _leftDims) {
+ _leftIndex -= ld.idx * ld.sideMultiplier;
_outputIndex -= ld.idx * ld.outputMultiplier;
ld.idx = 0;
}
@@ -65,12 +59,12 @@ public:
void stepLeft() {
size_t lim = _leftDims.size();
for (size_t i = 0; i < lim; ++i) {
- LeftDim& ld = _leftDims[i];
+ SideDim& ld = _leftDims[i];
ld.idx++;
- _leftIndex += ld.leftMultiplier;
+ _leftIndex += ld.sideMultiplier;
_outputIndex += ld.outputMultiplier;
if (ld.idx < ld.size) return;
- _leftIndex -= ld.idx * ld.leftMultiplier;
+ _leftIndex -= ld.idx * ld.sideMultiplier;
_outputIndex -= ld.idx * ld.outputMultiplier;
ld.idx = 0;
}
@@ -79,8 +73,8 @@ public:
void rightReset() {
- for (RightDim& rd : _rightDims) {
- _rightIndex -= rd.idx * rd.rightMultiplier;
+ for (SideDim& rd : _rightDims) {
+ _rightIndex -= rd.idx * rd.sideMultiplier;
_outputIndex -= rd.idx * rd.outputMultiplier;
rd.idx = 0;
}
@@ -92,12 +86,12 @@ public:
void stepRight() {
size_t lim = _rightDims.size();
for (size_t i = 0; i < lim; ++i) {
- RightDim& rd = _rightDims[i];
+ SideDim& rd = _rightDims[i];
rd.idx++;
- _rightIndex += rd.rightMultiplier;
+ _rightIndex += rd.sideMultiplier;
_outputIndex += rd.outputMultiplier;
if (rd.idx < rd.size) return;
- _rightIndex -= rd.idx * rd.rightMultiplier;
+ _rightIndex -= rd.idx * rd.sideMultiplier;
_outputIndex -= rd.idx * rd.outputMultiplier;
rd.idx = 0;
}