diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-12-09 14:44:05 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-12-09 14:45:07 +0000 |
commit | bdb8ab9e3373f95d6a06ade3bd07709565d4040e (patch) | |
tree | 29ed9eb0735bee80df704e8ceb8aa5b3b8398ce0 /eval | |
parent | 71a5577eedae43597dbb5db11933fa86249c54bd (diff) |
GC leftovers
Diffstat (limited to 'eval')
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(); } |