diff options
3 files changed, 0 insertions, 126 deletions
diff --git a/eval/CMakeLists.txt b/eval/CMakeLists.txt index 4ef530518df..d7fb168cc9d 100644 --- a/eval/CMakeLists.txt +++ b/eval/CMakeLists.txt @@ -60,7 +60,6 @@ vespa_define_module( src/tests/tensor/dense_fast_rename_optimizer src/tests/tensor/dense_generic_join src/tests/tensor/dense_inplace_join_function - src/tests/tensor/dense_number_join_function src/tests/tensor/dense_pow_as_map_optimizer src/tests/tensor/dense_remove_dimension_optimizer src/tests/tensor/dense_replace_type_function diff --git a/eval/src/tests/tensor/dense_number_join_function/CMakeLists.txt b/eval/src/tests/tensor/dense_number_join_function/CMakeLists.txt deleted file mode 100644 index 73c544cab38..00000000000 --- a/eval/src/tests/tensor/dense_number_join_function/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(eval_dense_number_join_function_test_app TEST - SOURCES - dense_number_join_function_test.cpp - DEPENDS - vespaeval -) -vespa_add_test(NAME eval_dense_number_join_function_test_app COMMAND eval_dense_number_join_function_test_app) diff --git a/eval/src/tests/tensor/dense_number_join_function/dense_number_join_function_test.cpp b/eval/src/tests/tensor/dense_number_join_function/dense_number_join_function_test.cpp deleted file mode 100644 index 2e428bb501e..00000000000 --- a/eval/src/tests/tensor/dense_number_join_function/dense_number_join_function_test.cpp +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/vespalib/testkit/test_kit.h> -#include <vespa/eval/eval/tensor_function.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/dense/dense_number_join_function.h> -#include <vespa/eval/eval/test/eval_fixture.h> -#include <vespa/eval/eval/test/tensor_model.hpp> - -#include <vespa/vespalib/util/stringfmt.h> - -using namespace vespalib; -using namespace vespalib::eval; -using namespace vespalib::eval::test; -using namespace vespalib::tensor; -using namespace vespalib::eval::tensor_function; - -using vespalib::make_string_short::fmt; - -using Primary = DenseNumberJoinFunction::Primary; - -namespace vespalib::tensor { - -std::ostream &operator<<(std::ostream &os, Primary primary) -{ - switch(primary) { - case Primary::LHS: return os << "LHS"; - case Primary::RHS: return os << "RHS"; - } - abort(); -} - -} - -const TensorEngine &prod_engine = DefaultTensorEngine::ref(); - -EvalFixture::ParamRepo make_params() { - return EvalFixture::ParamRepo() - .add("a", spec(1.5)) - .add("number", spec(2.5)) - .add("sparse", spec({x({"a"})}, N())) - .add("dense", spec({y(5)}, N())) - .add("mixed", spec({x({"a"}),y(5)}, N())) - .add_matrix("x", 3, "y", 5); -} -EvalFixture::ParamRepo param_repo = make_params(); - -void verify_optimized(const vespalib::string &expr, Primary primary, bool inplace) { - EvalFixture slow_fixture(prod_engine, expr, param_repo, false); - EvalFixture fixture(prod_engine, expr, param_repo, true, true); - EXPECT_EQUAL(fixture.result(), EvalFixture::ref(expr, param_repo)); - EXPECT_EQUAL(fixture.result(), slow_fixture.result()); - auto info = fixture.find_all<DenseNumberJoinFunction>(); - ASSERT_EQUAL(info.size(), 1u); - EXPECT_TRUE(info[0]->result_is_mutable()); - EXPECT_EQUAL(info[0]->primary(), primary); - EXPECT_EQUAL(info[0]->inplace(), inplace); - int p_inplace = inplace ? ((primary == Primary::LHS) ? 0 : 1) : -1; - EXPECT_TRUE((p_inplace == -1) || (fixture.num_params() > size_t(p_inplace))); - for (size_t i = 0; i < fixture.num_params(); ++i) { - if (i == size_t(p_inplace)) { - EXPECT_EQUAL(fixture.get_param(i), fixture.result()); - } else { - EXPECT_NOT_EQUAL(fixture.get_param(i), fixture.result()); - } - } -} - -void verify_not_optimized(const vespalib::string &expr) { - EvalFixture slow_fixture(prod_engine, expr, param_repo, false); - EvalFixture fixture(prod_engine, expr, param_repo, true); - EXPECT_EQUAL(fixture.result(), EvalFixture::ref(expr, param_repo)); - EXPECT_EQUAL(fixture.result(), slow_fixture.result()); - auto info = fixture.find_all<DenseNumberJoinFunction>(); - EXPECT_TRUE(info.empty()); -} - -TEST("require that dense number join can be optimized") { - TEST_DO(verify_optimized("x3y5+a", Primary::LHS, false)); - TEST_DO(verify_optimized("a+x3y5", Primary::RHS, false)); - TEST_DO(verify_optimized("x3y5f*a", Primary::LHS, false)); - TEST_DO(verify_optimized("a*x3y5f", Primary::RHS, false)); -} - -TEST("require that dense number join can be inplace") { - TEST_DO(verify_optimized("@x3y5*a", Primary::LHS, true)); - TEST_DO(verify_optimized("a*@x3y5", Primary::RHS, true)); - TEST_DO(verify_optimized("@x3y5f+a", Primary::LHS, true)); - TEST_DO(verify_optimized("a+@x3y5f", Primary::RHS, true)); -} - -TEST("require that asymmetric operations work") { - TEST_DO(verify_optimized("x3y5/a", Primary::LHS, false)); - TEST_DO(verify_optimized("a/x3y5", Primary::RHS, false)); - TEST_DO(verify_optimized("x3y5f-a", Primary::LHS, false)); - TEST_DO(verify_optimized("a-x3y5f", Primary::RHS, false)); -} - -TEST("require that inappropriate cases are not optimized") { - int optimized = 0; - for (vespalib::string lhs: {"number", "dense", "sparse", "mixed"}) { - for (vespalib::string rhs: {"number", "dense", "sparse", "mixed"}) { - if (((lhs == "number") && (rhs == "dense")) || - ((lhs == "dense") && (rhs == "number"))) - { - ++optimized; - } else { - auto expr = fmt("%s+%s", lhs.c_str(), rhs.c_str()); - TEST_STATE(expr.c_str()); - verify_not_optimized(expr); - } - } - } - EXPECT_EQUAL(optimized, 2); -} - -TEST_MAIN() { TEST_RUN_ALL(); } |