summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2020-12-09 14:44:05 +0000
committerArne Juul <arnej@verizonmedia.com>2020-12-09 14:45:07 +0000
commitbdb8ab9e3373f95d6a06ade3bd07709565d4040e (patch)
tree29ed9eb0735bee80df704e8ceb8aa5b3b8398ce0 /eval
parent71a5577eedae43597dbb5db11933fa86249c54bd (diff)
GC leftovers
Diffstat (limited to 'eval')
-rw-r--r--eval/src/tests/tensor/dense_dimension_combiner/CMakeLists.txt9
-rw-r--r--eval/src/tests/tensor/dense_dimension_combiner/dense_dimension_combiner_test.cpp185
-rw-r--r--eval/src/tests/tensor/direct_sparse_tensor_builder/CMakeLists.txt8
-rw-r--r--eval/src/tests/tensor/direct_sparse_tensor_builder/direct_sparse_tensor_builder_test.cpp119
4 files changed, 0 insertions, 321 deletions
diff --git a/eval/src/tests/tensor/dense_dimension_combiner/CMakeLists.txt b/eval/src/tests/tensor/dense_dimension_combiner/CMakeLists.txt
deleted file mode 100644
index eaee8ebb4e4..00000000000
--- a/eval/src/tests/tensor/dense_dimension_combiner/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-vespa_add_executable(eval_dense_dimension_combiner_test_app TEST
- SOURCES
- dense_dimension_combiner_test.cpp
- DEPENDS
- vespaeval
-)
-vespa_add_test(NAME eval_dense_dimension_combiner_test_app COMMAND eval_dense_dimension_combiner_test_app)
diff --git a/eval/src/tests/tensor/dense_dimension_combiner/dense_dimension_combiner_test.cpp b/eval/src/tests/tensor/dense_dimension_combiner/dense_dimension_combiner_test.cpp
deleted file mode 100644
index b8949e3a7e6..00000000000
--- a/eval/src/tests/tensor/dense_dimension_combiner/dense_dimension_combiner_test.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2019 Oath Inc. 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/tensor/dense/dense_dimension_combiner.h>
-
-using namespace vespalib;
-using namespace vespalib::eval;
-using namespace vespalib::tensor;
-
-void verifyLeft(DenseDimensionCombiner &d, size_t last) {
- d.commonReset();
- d.leftReset();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
- size_t expect = 0;
- while (d.leftInRange()) {
- d.stepLeft();
- EXPECT_GREATER(d.leftIdx(), expect);
- expect = d.leftIdx();
- }
- EXPECT_FALSE(d.leftInRange());
- EXPECT_EQUAL(expect, last);
- d.leftReset();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
-}
-
-void verifyRight(DenseDimensionCombiner &d, size_t last) {
- d.commonReset();
- d.rightReset();
- EXPECT_TRUE(d.rightInRange());
- EXPECT_EQUAL(d.rightIdx(), 0u);
- size_t expect = 0;
- while (d.rightInRange()) {
- d.stepRight();
- EXPECT_GREATER(d.rightIdx(), expect);
- expect = d.rightIdx();
- }
- EXPECT_FALSE(d.rightInRange());
- EXPECT_EQUAL(expect, last);
- d.rightReset();
- EXPECT_TRUE(d.rightInRange());
- EXPECT_EQUAL(d.rightIdx(), 0u);
-}
-
-
-TEST("require that one left, one common, one right dimension works") {
- ValueType t12_lc = ValueType::tensor_type({{"d1_l", 3},{"d2_c", 4}});
- ValueType t23_cr = ValueType::tensor_type({{"d2_c", 4},{"d3_r", 5}});
-
- DenseDimensionCombiner d(t12_lc, t23_cr);
-
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
- EXPECT_EQUAL(d.rightIdx(), 0u);
- EXPECT_EQUAL(d.outputIdx(), 0u);
-
- d.stepCommon();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 1u);
- EXPECT_EQUAL(d.rightIdx(), 5u);
- EXPECT_EQUAL(d.outputIdx(), 5u);
-
- d.stepRight();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 1u);
- EXPECT_EQUAL(d.rightIdx(), 6u);
- EXPECT_EQUAL(d.outputIdx(), 6u);
-
- d.stepLeft();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 5u);
- EXPECT_EQUAL(d.rightIdx(), 6u);
- EXPECT_EQUAL(d.outputIdx(), 26u);
-
- d.stepLeft();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 9u);
- EXPECT_EQUAL(d.rightIdx(), 6u);
- EXPECT_EQUAL(d.outputIdx(), 46u);
-
- d.stepLeft();
- EXPECT_FALSE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 13u);
- EXPECT_EQUAL(d.rightIdx(), 6u);
- EXPECT_EQUAL(d.outputIdx(), 6u);
-
- d.leftReset();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 1u);
- EXPECT_EQUAL(d.rightIdx(), 6u);
- EXPECT_EQUAL(d.outputIdx(), 6u);
-
- d.stepCommon();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 2u);
- EXPECT_EQUAL(d.rightIdx(), 11u);
- EXPECT_EQUAL(d.outputIdx(), 11u);
-
- d.stepRight();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 2u);
- EXPECT_EQUAL(d.rightIdx(), 12u);
- EXPECT_EQUAL(d.outputIdx(), 12u);
-
- TEST_DO(verifyLeft(d, 12));
- TEST_DO(verifyRight(d, 20));
-}
-
-TEST("require that two left, no common, two right dimensions works") {
- ValueType t12_ll = ValueType::tensor_type({{"d1_l", 3},{"d2_l", 4}});
- ValueType t34_rr = ValueType::tensor_type({{"d3_r", 5},{"d4_r", 2}});
-
- DenseDimensionCombiner d(t12_ll, t34_rr);
-
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
- EXPECT_EQUAL(d.rightIdx(), 0u);
- EXPECT_EQUAL(d.outputIdx(), 0u);
-
- d.stepCommon();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_FALSE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
- EXPECT_EQUAL(d.rightIdx(), 0u);
- EXPECT_EQUAL(d.outputIdx(), 120u);
-
- d.commonReset();
- d.stepRight();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 0u);
- EXPECT_EQUAL(d.rightIdx(), 1u);
- EXPECT_EQUAL(d.outputIdx(), 1u);
-
- d.stepLeft();
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 1u);
- EXPECT_EQUAL(d.rightIdx(), 1u);
- EXPECT_EQUAL(d.outputIdx(), 11u);
-
- d.stepLeft();
- d.stepLeft();
- d.stepLeft();
- d.stepLeft();
- d.stepLeft();
- d.stepLeft();
- d.stepLeft();
-
- EXPECT_TRUE(d.leftInRange());
- EXPECT_TRUE(d.rightInRange());
- EXPECT_TRUE(d.commonInRange());
- EXPECT_EQUAL(d.leftIdx(), 8u);
- EXPECT_EQUAL(d.rightIdx(), 1u);
- EXPECT_EQUAL(d.outputIdx(), 81u);
-
- TEST_DO(verifyLeft(d, 12));
- TEST_DO(verifyRight(d, 10));
-}
-
-TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/eval/src/tests/tensor/direct_sparse_tensor_builder/CMakeLists.txt b/eval/src/tests/tensor/direct_sparse_tensor_builder/CMakeLists.txt
deleted file mode 100644
index 00ff230fadd..00000000000
--- a/eval/src/tests/tensor/direct_sparse_tensor_builder/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(eval_direct_sparse_tensor_builder_test_app TEST
- SOURCES
- direct_sparse_tensor_builder_test.cpp
- DEPENDS
- vespaeval
-)
-vespa_add_test(NAME eval_direct_sparse_tensor_builder_test_app COMMAND eval_direct_sparse_tensor_builder_test_app)
diff --git a/eval/src/tests/tensor/direct_sparse_tensor_builder/direct_sparse_tensor_builder_test.cpp b/eval/src/tests/tensor/direct_sparse_tensor_builder/direct_sparse_tensor_builder_test.cpp
deleted file mode 100644
index bcee6471f76..00000000000
--- a/eval/src/tests/tensor/direct_sparse_tensor_builder/direct_sparse_tensor_builder_test.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2017 Yahoo Holdings. 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/tensor/sparse/direct_sparse_tensor_builder.h>
-#include <vespa/eval/tensor/sparse/sparse_tensor_address_combiner.h>
-#include <vespa/vespalib/test/insertion_operators.h>
-
-using namespace vespalib::tensor;
-using namespace vespalib::tensor::sparse;
-using vespalib::eval::TensorSpec;
-using vespalib::eval::CellType;
-using vespalib::eval::ValueType;
-
-void
-assertCellValue(double expValue, const TensorAddress &address,
- const ValueType &type,
- const SparseTensor &tensor)
-{
- SparseTensorAddressBuilder addressBuilder;
- auto dimsItr = type.dimensions().cbegin();
- auto dimsItrEnd = type.dimensions().cend();
- for (const auto &element : address.elements()) {
- while ((dimsItr < dimsItrEnd) && (dimsItr->name < element.dimension())) {
- addressBuilder.add("");
- ++dimsItr;
- }
- assert((dimsItr != dimsItrEnd) && (dimsItr->name == element.dimension()));
- addressBuilder.add(element.label());
- ++dimsItr;
- }
- while (dimsItr < dimsItrEnd) {
- addressBuilder.add("");
- ++dimsItr;
- }
- SparseTensorAddressRef addressRef(addressBuilder.getAddressRef());
- size_t idx;
- bool found = tensor.index().lookup_address(addressRef, idx);
- EXPECT_TRUE(found);
- auto cells = tensor.cells();
- if (EXPECT_TRUE(cells.type == CellType::DOUBLE)) {
- auto arr = cells.typify<double>();
- EXPECT_EQUAL(expValue, arr[idx]);
- }
-}
-
-Tensor::UP
-buildTensor()
-{
- DirectSparseTensorBuilder<double> builder(ValueType::from_spec("tensor(a{},b{},c{},d{})"));
- SparseTensorAddressBuilder address;
- address.set({"1", "2", "", ""});
- builder.insertCell(address, 10);
- address.set({"", "", "3", "4"});
- builder.insertCell(address, 20);
- return builder.build();
-}
-
-TEST("require that tensor can be constructed")
-{
- Tensor::UP tensor = buildTensor();
- const SparseTensor &sparseTensor = dynamic_cast<const SparseTensor &>(*tensor);
- const ValueType &type = sparseTensor.type();
- const auto & index = sparseTensor.index();
- EXPECT_EQUAL(2u, index.size());
- assertCellValue(10, TensorAddress({{"a","1"},{"b","2"}}), type, sparseTensor);
- assertCellValue(20, TensorAddress({{"c","3"},{"d","4"}}), type, sparseTensor);
-}
-
-TEST("require that tensor can be converted to tensor spec")
-{
- Tensor::UP tensor = buildTensor();
- TensorSpec expSpec("tensor(a{},b{},c{},d{})");
- expSpec.add({{"a", "1"}, {"b", "2"}, {"c", ""}, {"d", ""}}, 10).
- add({{"a", ""},{"b",""},{"c", "3"}, {"d", "4"}}, 20);
- TensorSpec actSpec = tensor->toSpec();
- EXPECT_EQUAL(expSpec, actSpec);
-}
-
-TEST("require that dimensions are extracted")
-{
- Tensor::UP tensor = buildTensor();
- const SparseTensor &sparseTensor = dynamic_cast<const SparseTensor &>(*tensor);
- const auto &dims = sparseTensor.type().dimensions();
- EXPECT_EQUAL(4u, dims.size());
- EXPECT_EQUAL("a", dims[0].name);
- EXPECT_EQUAL("b", dims[1].name);
- EXPECT_EQUAL("c", dims[2].name);
- EXPECT_EQUAL("d", dims[3].name);
- EXPECT_EQUAL("tensor(a{},b{},c{},d{})", sparseTensor.type().to_spec());
-}
-
-void verifyAddressCombiner(const ValueType & a, const ValueType & b, size_t numDim, size_t numOverlapping) {
- TensorAddressCombiner combiner(a, b);
- EXPECT_EQUAL(numDim, combiner.numDimensions());
- EXPECT_EQUAL(numOverlapping, combiner.numOverlappingDimensions());
-}
-TEST("Test sparse tensor address combiner") {
- verifyAddressCombiner(ValueType::tensor_type({{"a"}}), ValueType::tensor_type({{"b"}}), 2, 0);
- verifyAddressCombiner(ValueType::tensor_type({{"a"}, {"b"}}), ValueType::tensor_type({{"b"}}), 2, 1);
- verifyAddressCombiner(ValueType::tensor_type({{"a"}, {"b"}}), ValueType::tensor_type({{"b"}, {"c"}}), 3, 1);
-
-}
-
-TEST("Test essential object sizes") {
- EXPECT_EQUAL(16u, sizeof(SparseTensorAddressRef));
- EXPECT_EQUAL(24u, sizeof(std::pair<SparseTensorAddressRef, double>));
- EXPECT_EQUAL(32u, sizeof(vespalib::hash_node<std::pair<SparseTensorAddressRef, double>>));
- Tensor::UP tensor = buildTensor();
- size_t used = tensor->get_memory_usage().usedBytes();
- EXPECT_GREATER(used, sizeof(SparseTensor));
- EXPECT_LESS(used, 10000u);
- size_t allocated = tensor->get_memory_usage().allocatedBytes();
- EXPECT_GREATER(allocated, used);
- EXPECT_LESS(allocated, 50000u);
- fprintf(stderr, "tensor using %zu bytes of %zu allocated\n",
- used, allocated);
-}
-
-TEST_MAIN() { TEST_RUN_ALL(); }