diff options
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.cpp | 62 |
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")); } |