summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2020-04-03 09:36:21 +0000
committerHåvard Pettersen <havardpe@oath.com>2020-04-03 09:38:00 +0000
commit16aa15bdc65d7bf6813fc2452529fc778ff61f95 (patch)
treea297cfb53ece6f02e3cad3f7607827f8b8628aab /eval
parent092186debc2bb188b6c13b7a2d438225bd94afa5 (diff)
added skeleton for lambda peek optimizer
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/tensor/default_tensor_engine.cpp2
-rw-r--r--eval/src/vespa/eval/tensor/dense/CMakeLists.txt1
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.cpp13
-rw-r--r--eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.h18
4 files changed, 34 insertions, 0 deletions
diff --git a/eval/src/vespa/eval/tensor/default_tensor_engine.cpp b/eval/src/vespa/eval/tensor/default_tensor_engine.cpp
index a9e1ad84eb7..b16241fe5e5 100644
--- a/eval/src/vespa/eval/tensor/default_tensor_engine.cpp
+++ b/eval/src/vespa/eval/tensor/default_tensor_engine.cpp
@@ -14,6 +14,7 @@
#include "dense/dense_fast_rename_optimizer.h"
#include "dense/dense_add_dimension_optimizer.h"
#include "dense/dense_remove_dimension_optimizer.h"
+#include "dense/dense_lambda_peek_optimizer.h"
#include "dense/dense_inplace_join_function.h"
#include "dense/dense_inplace_map_function.h"
#include "dense/vector_from_doubles_function.h"
@@ -267,6 +268,7 @@ DefaultTensorEngine::optimize(const TensorFunction &expr, Stash &stash) const
const Child &child = nodes.back();
child.set(VectorFromDoublesFunction::optimize(child.get(), stash));
child.set(DenseTensorCreateFunction::optimize(child.get(), stash));
+ child.set(DenseLambdaPeekOptimizer::optimize(child.get(), stash));
child.set(DenseTensorPeekFunction::optimize(child.get(), stash));
child.set(DenseDotProductFunction::optimize(child.get(), stash));
child.set(DenseXWProductFunction::optimize(child.get(), stash));
diff --git a/eval/src/vespa/eval/tensor/dense/CMakeLists.txt b/eval/src/vespa/eval/tensor/dense/CMakeLists.txt
index 635a49cb4a9..9e4c9857bd1 100644
--- a/eval/src/vespa/eval/tensor/dense/CMakeLists.txt
+++ b/eval/src/vespa/eval/tensor/dense/CMakeLists.txt
@@ -14,6 +14,7 @@ vespa_add_library(eval_tensor_dense OBJECT
dense_tensor_address_mapper.cpp
dense_tensor_cells_iterator.cpp
dense_tensor_create_function.cpp
+ dense_lambda_peek_optimizer.cpp
dense_tensor_modify.cpp
dense_tensor_peek_function.cpp
dense_tensor_reduce.cpp
diff --git a/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.cpp b/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.cpp
new file mode 100644
index 00000000000..14954a77834
--- /dev/null
+++ b/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.cpp
@@ -0,0 +1,13 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "dense_lambda_peek_optimizer.h"
+
+namespace vespalib::tensor {
+
+const eval::TensorFunction &
+DenseLambdaPeekOptimizer::optimize(const eval::TensorFunction &expr, Stash &)
+{
+ return expr;
+}
+
+}
diff --git a/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.h b/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.h
new file mode 100644
index 00000000000..7d2a0efde76
--- /dev/null
+++ b/eval/src/vespa/eval/tensor/dense/dense_lambda_peek_optimizer.h
@@ -0,0 +1,18 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/eval/eval/tensor_function.h>
+
+namespace vespalib::tensor {
+
+/**
+ * Tensor lambda optimizer for creating a new dense tensor based on
+ * peeking cells of a single existing tensor. This can represent a
+ * wide area of operations (reshape, gather, slice).
+ **/
+struct DenseLambdaPeekOptimizer {
+ static const eval::TensorFunction &optimize(const eval::TensorFunction &expr, Stash &stash);
+};
+
+}