summaryrefslogtreecommitdiffstats
path: root/eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp')
-rw-r--r--eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp62
1 files changed, 23 insertions, 39 deletions
diff --git a/eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp b/eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp
index 80321ac3d22..ba2b1ba0023 100644
--- a/eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp
+++ b/eval/src/tests/tensor/dense_inplace_join_function/dense_inplace_join_function_test.cpp
@@ -5,7 +5,6 @@
#include <vespa/eval/eval/simple_tensor.h>
#include <vespa/eval/eval/simple_tensor_engine.h>
#include <vespa/eval/tensor/default_tensor_engine.h>
-#include <vespa/eval/tensor/dense/dense_inplace_join_function.h>
#include <vespa/eval/tensor/dense/dense_tensor.h>
#include <vespa/eval/eval/test/tensor_model.hpp>
#include <vespa/eval/eval/test/eval_fixture.h>
@@ -53,7 +52,7 @@ EvalFixture::ParamRepo make_params() {
}
EvalFixture::ParamRepo param_repo = make_params();
-void verify_optimized(const vespalib::string &expr, size_t cnt, size_t param_idx) {
+void verify_optimized(const vespalib::string &expr, size_t param_idx) {
EvalFixture fixture(prod_engine, expr, param_repo, true, true);
EXPECT_EQUAL(fixture.result(), EvalFixture::ref(expr, param_repo));
for (size_t i = 0; i < fixture.num_params(); ++i) {
@@ -64,23 +63,18 @@ void verify_optimized(const vespalib::string &expr, size_t cnt, size_t param_idx
EXPECT_NOT_EQUAL(fixture.get_param(i), fixture.result());
}
}
- auto info = fixture.find_all<DenseInplaceJoinFunction>();
- ASSERT_EQUAL(info.size(), cnt);
- for (size_t i = 0; i < cnt; ++i) {
- EXPECT_TRUE(info[i]->result_is_mutable());
- }
}
-void verify_p0_optimized(const vespalib::string &expr, size_t cnt) {
- verify_optimized(expr, cnt, 0);
+void verify_p0_optimized(const vespalib::string &expr) {
+ verify_optimized(expr, 0);
}
-void verify_p1_optimized(const vespalib::string &expr, size_t cnt) {
- verify_optimized(expr, cnt, 1);
+void verify_p1_optimized(const vespalib::string &expr) {
+ verify_optimized(expr, 1);
}
-void verify_p2_optimized(const vespalib::string &expr, size_t cnt) {
- verify_optimized(expr, cnt, 2);
+void verify_p2_optimized(const vespalib::string &expr) {
+ verify_optimized(expr, 2);
}
void verify_not_optimized(const vespalib::string &expr) {
@@ -89,21 +83,19 @@ void verify_not_optimized(const vespalib::string &expr) {
for (size_t i = 0; i < fixture.num_params(); ++i) {
EXPECT_NOT_EQUAL(fixture.get_param(i), fixture.result());
}
- auto info = fixture.find_all<DenseInplaceJoinFunction>();
- EXPECT_TRUE(info.empty());
}
TEST("require that mutable dense concrete tensors are optimized") {
- TEST_DO(verify_p0_optimized("mut_x5_A-mut_x5_B", 1));
- TEST_DO(verify_p0_optimized("mut_x5_A-con_x5_B", 1));
- TEST_DO(verify_p1_optimized("con_x5_A-mut_x5_B", 1));
- TEST_DO(verify_p0_optimized("mut_x5y3_A-mut_x5y3_B", 1));
- TEST_DO(verify_p0_optimized("mut_x5y3_A-con_x5y3_B", 1));
- TEST_DO(verify_p1_optimized("con_x5y3_A-mut_x5y3_B", 1));
+ TEST_DO(verify_p1_optimized("mut_x5_A-mut_x5_B"));
+ TEST_DO(verify_p0_optimized("mut_x5_A-con_x5_B"));
+ TEST_DO(verify_p1_optimized("con_x5_A-mut_x5_B"));
+ TEST_DO(verify_p1_optimized("mut_x5y3_A-mut_x5y3_B"));
+ TEST_DO(verify_p0_optimized("mut_x5y3_A-con_x5y3_B"));
+ TEST_DO(verify_p1_optimized("con_x5y3_A-mut_x5y3_B"));
}
TEST("require that self-join operations can be optimized") {
- TEST_DO(verify_p0_optimized("mut_x5_A+mut_x5_A", 1));
+ TEST_DO(verify_p0_optimized("mut_x5_A+mut_x5_A"));
}
TEST("require that join(tensor,scalar) operations are not optimized") {
@@ -111,15 +103,15 @@ TEST("require that join(tensor,scalar) operations are not optimized") {
TEST_DO(verify_not_optimized("mut_dbl_A-mut_x5_B"));
}
-TEST("require that join with different tensor shapes are not optimized") {
- TEST_DO(verify_not_optimized("mut_x5_A*mut_x5y3_B"));
+TEST("require that join with different tensor shapes are optimized") {
+ TEST_DO(verify_p1_optimized("mut_x5_A*mut_x5y3_B"));
}
TEST("require that inplace join operations can be chained") {
- TEST_DO(verify_p0_optimized("mut_x5_A-(mut_x5_B-mut_x5_C)", 2));
- TEST_DO(verify_p0_optimized("(mut_x5_A-con_x5_B)-con_x5_C", 2));
- TEST_DO(verify_p1_optimized("con_x5_A-(mut_x5_B-con_x5_C)", 2));
- TEST_DO(verify_p2_optimized("con_x5_A-(con_x5_B-mut_x5_C)", 2));
+ TEST_DO(verify_p2_optimized("mut_x5_A+(mut_x5_B+mut_x5_C)"));
+ TEST_DO(verify_p0_optimized("(mut_x5_A+con_x5_B)+con_x5_C"));
+ TEST_DO(verify_p1_optimized("con_x5_A+(mut_x5_B+con_x5_C)"));
+ TEST_DO(verify_p2_optimized("con_x5_A+(con_x5_B+mut_x5_C)"));
}
TEST("require that non-mutable tensors are not optimized") {
@@ -136,21 +128,13 @@ TEST("require that mapped tensors are not optimized") {
TEST_DO(verify_not_optimized("mut_x_sparse+mut_x_sparse"));
}
-TEST("require that inplace join can be debug dumped") {
- EvalFixture fixture(prod_engine, "con_x5_A-mut_x5_B", param_repo, true, true);
- auto info = fixture.find_all<DenseInplaceJoinFunction>();
- ASSERT_EQUAL(info.size(), 1u);
- EXPECT_TRUE(info[0]->result_is_mutable());
- fprintf(stderr, "%s\n", info[0]->as_string().c_str());
-}
-
TEST("require that optimization works with float cells") {
- TEST_DO(verify_p0_optimized("mut_x5f_D-mut_x5f_E", 1));
+ TEST_DO(verify_p1_optimized("mut_x5f_D-mut_x5f_E"));
}
TEST("require that overwritten value must have same cell type as result") {
- TEST_DO(verify_p0_optimized("mut_x5_A-mut_x5f_D", 1));
- TEST_DO(verify_p1_optimized("mut_x5f_D-mut_x5_A", 1));
+ TEST_DO(verify_p0_optimized("mut_x5_A-mut_x5f_D"));
+ TEST_DO(verify_p1_optimized("mut_x5f_D-mut_x5_A"));
TEST_DO(verify_not_optimized("con_x5_A-mut_x5f_D"));
TEST_DO(verify_not_optimized("mut_x5f_D-con_x5_A"));
}