summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2021-02-05 19:29:18 +0100
committerGitHub <noreply@github.com>2021-02-05 19:29:18 +0100
commitfbc302824871c911cd5ceb6c6587453cd15a3313 (patch)
treebbb9ca4ea4af1c543913cff3afc92042aaa02712
parentff2ae195a7fc9e42cbdd49412c20a08f77d04763 (diff)
parent1bcb4ffac595d07c890aea8a03f6752bc251b2ad (diff)
Merge pull request #16423 from vespa-engine/havardpe/param-repo-adjust-add-options
adjust param repo add options and remove seq_bias
-rw-r--r--eval/src/tests/eval/fast_value/fast_value_test.cpp4
-rw-r--r--eval/src/tests/eval/gen_spec/gen_spec_test.cpp9
-rw-r--r--eval/src/tests/eval/simple_value/simple_value_test.cpp16
-rw-r--r--eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp18
-rw-r--r--eval/src/tests/eval/value_codec/value_codec_test.cpp4
-rw-r--r--eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp10
-rw-r--r--eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp24
-rw-r--r--eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp30
-rw-r--r--eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp2
-rw-r--r--eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp6
-rw-r--r--eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp4
-rw-r--r--eval/src/tests/instruction/dense_tensor_create_function/dense_tensor_create_function_test.cpp6
-rw-r--r--eval/src/tests/instruction/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp18
-rw-r--r--eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp8
-rw-r--r--eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp14
-rw-r--r--eval/src/tests/instruction/generic_concat/generic_concat_test.cpp8
-rw-r--r--eval/src/tests/instruction/generic_create/generic_create_test.cpp4
-rw-r--r--eval/src/tests/instruction/generic_join/generic_join_test.cpp8
-rw-r--r--eval/src/tests/instruction/generic_map/generic_map_test.cpp4
-rw-r--r--eval/src/tests/instruction/generic_merge/generic_merge_test.cpp8
-rw-r--r--eval/src/tests/instruction/generic_peek/generic_peek_test.cpp4
-rw-r--r--eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp4
-rw-r--r--eval/src/tests/instruction/generic_rename/generic_rename_test.cpp4
-rw-r--r--eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp6
-rw-r--r--eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp28
-rw-r--r--eval/src/tests/instruction/mixed_map_function/mixed_map_function_test.cpp4
-rw-r--r--eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp12
-rw-r--r--eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp8
-rw-r--r--eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp8
-rw-r--r--eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp14
-rw-r--r--eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp12
-rw-r--r--eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp32
-rw-r--r--eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp10
-rw-r--r--eval/src/tests/streamed/value/streamed_value_test.cpp16
-rw-r--r--eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp190
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.cpp85
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.h17
-rw-r--r--eval/src/vespa/eval/eval/test/gen_spec.h3
-rw-r--r--eval/src/vespa/eval/eval/test/tensor_model.cpp4
39 files changed, 300 insertions, 366 deletions
diff --git a/eval/src/tests/eval/fast_value/fast_value_test.cpp b/eval/src/tests/eval/fast_value/fast_value_test.cpp
index 9d29d8de660..bb268a386ac 100644
--- a/eval/src/tests/eval/fast_value/fast_value_test.cpp
+++ b/eval/src/tests/eval/fast_value/fast_value_test.cpp
@@ -159,8 +159,8 @@ const std::vector<GenSpec> layouts = {
TEST(FastValueBuilderFactoryTest, fast_values_can_be_copied) {
auto factory = FastValueBuilderFactory::get();
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, factory);
std::unique_ptr<Value> copy = factory.copy(*value);
diff --git a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
index 9af26e1284d..40fa9424243 100644
--- a/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
+++ b/eval/src/tests/eval/gen_spec/gen_spec_test.cpp
@@ -57,12 +57,12 @@ TensorSpec scalar_5 = TensorSpec("double").add({}, 5.0);
TEST(GenSpecTest, scalar_double) {
EXPECT_EQ(GenSpec().gen(), scalar_1);
- EXPECT_EQ(GenSpec().seq_bias(5.0).gen(), scalar_5);
+ EXPECT_EQ(GenSpec(5.0).gen(), scalar_5);
}
TEST(GenSpecTest, not_scalar_float_just_yet) {
EXPECT_EQ(GenSpec().cells_float().gen(), scalar_1);
- EXPECT_EQ(GenSpec().cells_float().seq_bias(5.0).gen(), scalar_5);
+ EXPECT_EQ(GenSpec(5.0).cells_float().gen(), scalar_5);
}
//-----------------------------------------------------------------------------
@@ -228,6 +228,11 @@ TEST(GenSpecTest, generating_inverted_mixed) {
EXPECT_EQ(GenSpec().idx("d", 3).map("c", 1).idx("b", 1).map("a", 3).gen(), inverted_mixed);
}
+TEST(GenSpecTest, gen_spec_can_be_implicitly_converted_to_tensor_spec) {
+ EXPECT_EQ(GenSpec().map("a", 3).idx("b", 1).map("c", 1).idx("d", 3), basic_mixed);
+ EXPECT_EQ(GenSpec().idx("d", 3).map("c", 1).idx("b", 1).map("a", 3), inverted_mixed);
+}
+
//-----------------------------------------------------------------------------
GTEST_MAIN_RUN_ALL_TESTS()
diff --git a/eval/src/tests/eval/simple_value/simple_value_test.cpp b/eval/src/tests/eval/simple_value/simple_value_test.cpp
index c1301bf6b1a..f7bda441bfd 100644
--- a/eval/src/tests/eval/simple_value/simple_value_test.cpp
+++ b/eval/src/tests/eval/simple_value/simple_value_test.cpp
@@ -67,8 +67,8 @@ TensorSpec simple_value_join(const TensorSpec &a, const TensorSpec &b, join_fun_
TEST(SimpleValueTest, simple_values_can_be_converted_from_and_to_tensor_spec) {
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, SimpleValueBuilderFactory::get());
TensorSpec actual = spec_from_value(*value);
@@ -79,8 +79,8 @@ TEST(SimpleValueTest, simple_values_can_be_converted_from_and_to_tensor_spec) {
TEST(SimpleValueTest, simple_values_can_be_copied) {
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, SimpleValueBuilderFactory::get());
std::unique_ptr<Value> copy = SimpleValueBuilderFactory::get().copy(*value);
@@ -130,11 +130,11 @@ TEST(SimpleValueTest, new_generic_join_works_for_simple_values) {
for (size_t i = 0; i < join_layouts.size(); i += 2) {
const auto l = join_layouts[i].cpy().seq(N_16ths);
const auto r = join_layouts[i + 1].cpy().seq(N_16ths);
- for (TensorSpec lhs : { l.cpy().cells_float().gen(),
- l.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { l.cpy().cells_float(),
+ l.cpy().cells_double() })
{
- for (TensorSpec rhs : { r.cpy().cells_float().gen(),
- r.cpy().cells_double().gen() })
+ for (TensorSpec rhs : { r.cpy().cells_float(),
+ r.cpy().cells_double() })
{
for (auto fun: {operation::Add::f, operation::Sub::f, operation::Mul::f, operation::Div::f}) {
SCOPED_TRACE(fmt("\n===\nLHS: %s\nRHS: %s\n===\n", lhs.to_string().c_str(), rhs.to_string().c_str()));
diff --git a/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp b/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
index dd21b663fa9..4b17e49fa80 100644
--- a/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
+++ b/eval/src/tests/eval/tensor_lambda/tensor_lambda_test.cpp
@@ -25,15 +25,15 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1).gen())
- .add("b", GenSpec().seq_bias(2).gen())
- .add("x3", GenSpec().idx("x", 3).gen())
- .add("x3f", GenSpec().idx("x", 3).cells_float().gen())
- .add("x3m", GenSpec().map("x", 3).gen())
- .add("x3y5", GenSpec().idx("x", 3).idx("y", 5).gen())
- .add("x3y5f", GenSpec().idx("x", 3).idx("y", 5).cells_float().gen())
- .add("x15", GenSpec().idx("x", 15).gen())
- .add("x15f", GenSpec().idx("x", 15).cells_float().gen());
+ .add("a", GenSpec(1))
+ .add("b", GenSpec(2))
+ .add("x3", GenSpec().idx("x", 3))
+ .add("x3f", GenSpec().idx("x", 3).cells_float())
+ .add("x3m", GenSpec().map("x", 3))
+ .add("x3y5", GenSpec().idx("x", 3).idx("y", 5))
+ .add("x3y5f", GenSpec().idx("x", 3).idx("y", 5).cells_float())
+ .add("x15", GenSpec().idx("x", 15))
+ .add("x15f", GenSpec().idx("x", 15).cells_float());
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/eval/value_codec/value_codec_test.cpp b/eval/src/tests/eval/value_codec/value_codec_test.cpp
index 110b58c27de..30de76abb7d 100644
--- a/eval/src/tests/eval/value_codec/value_codec_test.cpp
+++ b/eval/src/tests/eval/value_codec/value_codec_test.cpp
@@ -32,8 +32,8 @@ const std::vector<GenSpec> layouts = {
TEST(ValueCodecTest, simple_values_can_be_converted_from_and_to_tensor_spec) {
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, factory);
TensorSpec actual = spec_from_value(*value);
diff --git a/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp b/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
index d2dccfde2fd..3ad6b3ef5dc 100644
--- a/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
+++ b/eval/src/tests/instruction/add_trivial_dimension_optimizer/add_trivial_dimension_optimizer_test.cpp
@@ -20,11 +20,11 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("x5", GenSpec().idx("x", 5).gen())
- .add("x5f", GenSpec().idx("x", 5).cells_float().gen())
- .add("x5y1", GenSpec().idx("x", 5).idx("y", 1).gen())
- .add("y1z1", GenSpec().idx("y", 5).idx("z", 1).gen())
- .add("x_m", GenSpec().map("x", {"a"}).gen());
+ .add("x5", GenSpec().idx("x", 5))
+ .add("x5f", GenSpec().idx("x", 5).cells_float())
+ .add("x5y1", GenSpec().idx("x", 5).idx("y", 1))
+ .add("y1z1", GenSpec().idx("y", 5).idx("z", 1))
+ .add("x_m", GenSpec().map("x", {"a"}));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp b/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
index 5121c587d5b..1b913e41e94 100644
--- a/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/dense_dot_product_function/dense_dot_product_function_test.cpp
@@ -19,7 +19,7 @@ using namespace vespalib::eval::test;
const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
TensorSpec makeTensor(size_t numCells, double cellBias) {
- return GenSpec().idx("x", numCells).seq_bias(cellBias).gen();
+ return GenSpec(cellBias).idx("x", numCells);
}
const double leftBias = 3.0;
@@ -39,7 +39,7 @@ void check_gen_with_result(size_t l, size_t r, double wanted) {
param_repo.add("b", makeTensor(r, rightBias));
vespalib::string expr = "reduce(a*b,sum,x)";
EvalFixture evaluator(prod_factory, expr, param_repo, true);
- EXPECT_EQUAL(GenSpec().seq_bias(wanted).gen(), evaluator.result());
+ EXPECT_EQUAL(GenSpec(wanted), evaluator.result());
EXPECT_EQUAL(evaluator.result(), EvalFixture::ref(expr, param_repo));
auto info = evaluator.find_all<DenseDotProductFunction>();
EXPECT_EQUAL(info.size(), 1u);
@@ -87,16 +87,16 @@ TEST("require that dot product with equal sizes is correct") {
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("v01_x1", GenSpec().idx("x", 1).seq_bias(2.0).gen())
- .add("v02_x3", GenSpec().idx("x", 3).seq_bias(4.0).gen())
- .add("v03_x3", GenSpec().idx("x", 3).seq_bias(5.0).gen())
- .add("v04_y3", GenSpec().idx("y", 3).seq_bias(10).gen())
- .add("v05_x5", GenSpec().idx("x", 5).seq_bias(6.0).gen())
- .add("v06_x5", GenSpec().idx("x", 5).seq_bias(7.0).gen())
- .add("v07_x5f", GenSpec().cells_float().idx("x", 5).seq_bias(7.0).gen())
- .add("v08_x5f", GenSpec().cells_float().idx("x", 5).seq_bias(6.0).gen())
- .add("m01_x3y3", GenSpec().idx("x", 3).idx("y", 3).seq_bias(1.0).gen())
- .add("m02_x3y3", GenSpec().idx("x", 3).idx("y", 3).seq_bias(2.0).gen());
+ .add("v01_x1", GenSpec(2.0).idx("x", 1))
+ .add("v02_x3", GenSpec(4.0).idx("x", 3))
+ .add("v03_x3", GenSpec(5.0).idx("x", 3))
+ .add("v04_y3", GenSpec(10).idx("y", 3))
+ .add("v05_x5", GenSpec(6.0).idx("x", 5))
+ .add("v06_x5", GenSpec(7.0).idx("x", 5))
+ .add("v07_x5f", GenSpec(7.0).cells_float().idx("x", 5))
+ .add("v08_x5f", GenSpec(6.0).cells_float().idx("x", 5))
+ .add("m01_x3y3", GenSpec(1.0).idx("x", 3).idx("y", 3))
+ .add("m02_x3y3", GenSpec(2.0).idx("x", 3).idx("y", 3));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp b/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
index a1fea41858c..07e995d091f 100644
--- a/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
+++ b/eval/src/tests/instruction/dense_inplace_join_function/dense_inplace_join_function_test.cpp
@@ -23,21 +23,21 @@ GenSpec::seq_t glb = [] (size_t) noexcept {
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("con_x5_A", GenSpec().idx("x", 5).seq(glb).gen())
- .add("con_x5_B", GenSpec().idx("x", 5).seq(glb).gen())
- .add("con_x5_C", GenSpec().idx("x", 5).seq(glb).gen())
- .add("con_x5y3_A", GenSpec().idx("x", 5).idx("y", 3).seq(glb).gen())
- .add("con_x5y3_B", GenSpec().idx("x", 5).idx("y", 3).seq(glb).gen())
- .add_mutable("mut_dbl_A", GenSpec().seq_bias(1.5).gen())
- .add_mutable("mut_dbl_B", GenSpec().seq_bias(2.5).gen())
- .add_mutable("mut_x5_A", GenSpec().idx("x", 5).seq(glb).gen())
- .add_mutable("mut_x5_B", GenSpec().idx("x", 5).seq(glb).gen())
- .add_mutable("mut_x5_C", GenSpec().idx("x", 5).seq(glb).gen())
- .add_mutable("mut_x5f_D", GenSpec().cells_float().idx("x", 5).seq(glb).gen())
- .add_mutable("mut_x5f_E", GenSpec().cells_float().idx("x", 5).seq(glb).gen())
- .add_mutable("mut_x5y3_A", GenSpec().idx("x", 5).idx("y", 3).seq(glb).gen())
- .add_mutable("mut_x5y3_B", GenSpec().idx("x", 5).idx("y", 3).seq(glb).gen())
- .add_mutable("mut_x_sparse", GenSpec().map("x", {"a", "b", "c"}).seq(glb).gen());
+ .add("con_x5_A", GenSpec().idx("x", 5).seq(glb))
+ .add("con_x5_B", GenSpec().idx("x", 5).seq(glb))
+ .add("con_x5_C", GenSpec().idx("x", 5).seq(glb))
+ .add("con_x5y3_A", GenSpec().idx("x", 5).idx("y", 3).seq(glb))
+ .add("con_x5y3_B", GenSpec().idx("x", 5).idx("y", 3).seq(glb))
+ .add_mutable("mut_dbl_A", GenSpec(1.5))
+ .add_mutable("mut_dbl_B", GenSpec(2.5))
+ .add_mutable("mut_x5_A", GenSpec().idx("x", 5).seq(glb))
+ .add_mutable("mut_x5_B", GenSpec().idx("x", 5).seq(glb))
+ .add_mutable("mut_x5_C", GenSpec().idx("x", 5).seq(glb))
+ .add_mutable("mut_x5f_D", GenSpec().cells_float().idx("x", 5).seq(glb))
+ .add_mutable("mut_x5f_E", GenSpec().cells_float().idx("x", 5).seq(glb))
+ .add_mutable("mut_x5y3_A", GenSpec().idx("x", 5).idx("y", 3).seq(glb))
+ .add_mutable("mut_x5y3_B", GenSpec().idx("x", 5).idx("y", 3).seq(glb))
+ .add_mutable("mut_x_sparse", GenSpec().map("x", {"a", "b", "c"}).seq(glb));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp b/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
index 5dcdbc5bab8..00af70d9136 100644
--- a/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
+++ b/eval/src/tests/instruction/dense_replace_type_function/dense_replace_type_function_test.cpp
@@ -33,7 +33,7 @@ struct Fixture {
std::vector<TensorFunction::Child::CREF> children;
InterpretedFunction::State state;
Fixture()
- : my_value(value_from_spec(GenSpec().idx("x", 10).gen(), prod_factory)),
+ : my_value(value_from_spec(GenSpec().idx("x", 10), prod_factory)),
new_type(ValueType::from_spec("tensor(x[5],y[2])")),
mock_child(my_value->type()),
my_fun(new_type, mock_child),
diff --git a/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp b/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
index 132f88076f6..e8f68e5021e 100644
--- a/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
+++ b/eval/src/tests/instruction/dense_simple_expand_function/dense_simple_expand_function_test.cpp
@@ -18,9 +18,9 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.5).gen())
- .add("sparse", GenSpec().map("x", {"a"}).gen())
- .add("mixed", GenSpec().map("y", {"a"}).idx("z", 5).gen())
+ .add("a", GenSpec(1.5))
+ .add("sparse", GenSpec().map("x", {"a"}))
+ .add("mixed", GenSpec().map("y", {"a"}).idx("z", 5))
.add_variants("a5", GenSpec().idx("a", 5))
.add_variants("b3", GenSpec().idx("b", 3))
.add_variants("A1a5c1", GenSpec().idx("A", 1).idx("a", 5).idx("c", 1))
diff --git a/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp b/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
index 2d7b32359bc..a2733b1f7cb 100644
--- a/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
+++ b/eval/src/tests/instruction/dense_single_reduce_function/dense_single_reduce_function_test.cpp
@@ -26,8 +26,8 @@ EvalFixture::ParamRepo make_params() {
.add_variants("a1b1c2", GenSpec().idx("a", 1).idx("b", 1).idx("c", 2))
.add_variants("a1b1c1", GenSpec().idx("a", 1).idx("b", 1).idx("c", 1))
.add_variants("a10", GenSpec().idx("a", 10))
- .add("xy_mapped", GenSpec().map("x", {"a", "b"}).map("y", {"x", "y"}).gen())
- .add("xyz_mixed", GenSpec().map("x", {"a", "b"}).map("y", {"x", "y"}).idx("z", 3).gen());
+ .add("xy_mapped", GenSpec().map("x", {"a", "b"}).map("y", {"x", "y"}))
+ .add("xyz_mixed", GenSpec().map("x", {"a", "b"}).map("y", {"x", "y"}).idx("z", 3));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_tensor_create_function/dense_tensor_create_function_test.cpp b/eval/src/tests/instruction/dense_tensor_create_function/dense_tensor_create_function_test.cpp
index 15a677c738d..3ab701e58a6 100644
--- a/eval/src/tests/instruction/dense_tensor_create_function/dense_tensor_create_function_test.cpp
+++ b/eval/src/tests/instruction/dense_tensor_create_function/dense_tensor_create_function_test.cpp
@@ -18,9 +18,9 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.0).gen())
- .add("b", GenSpec().seq_bias(2.0).gen())
- .add("c", GenSpec().seq_bias(3.0).gen());
+ .add("a", GenSpec(1.0))
+ .add("b", GenSpec(2.0))
+ .add("c", GenSpec(3.0));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp b/eval/src/tests/instruction/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
index 3662aa6243a..782666ed36e 100644
--- a/eval/src/tests/instruction/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
+++ b/eval/src/tests/instruction/dense_tensor_peek_function/dense_tensor_peek_function_test.cpp
@@ -18,15 +18,15 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.0).gen())
- .add("b", GenSpec().seq_bias(2.0).gen())
- .add("c", GenSpec().seq_bias(3.0).gen())
- .add("x3", GenSpec().idx("x", 3).gen())
- .add("x3f", GenSpec().cells_float().idx("x", 3).gen())
- .add("x3y2", GenSpec().idx("x", 3).idx("y", 2).gen())
- .add("x3y2f", GenSpec().cells_float().idx("x", 3).idx("y", 2).gen())
- .add("xm", GenSpec().map("x", {"1","2","3","-1","-2","-3"}).gen())
- .add("xmy2", GenSpec().map("x", {"1","2","3"}).idx("y", 2).gen());
+ .add("a", GenSpec(1.0))
+ .add("b", GenSpec(2.0))
+ .add("c", GenSpec(3.0))
+ .add("x3", GenSpec().idx("x", 3))
+ .add("x3f", GenSpec().cells_float().idx("x", 3))
+ .add("x3y2", GenSpec().idx("x", 3).idx("y", 2))
+ .add("x3y2f", GenSpec().cells_float().idx("x", 3).idx("y", 2))
+ .add("xm", GenSpec().map("x", {"1","2","3","-1","-2","-3"}))
+ .add("xmy2", GenSpec().map("x", {"1","2","3"}).idx("y", 2));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp b/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
index 35f6b7b1eb8..f4fce7cb5f5 100644
--- a/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
+++ b/eval/src/tests/instruction/dense_xw_product_function/dense_xw_product_function_test.cpp
@@ -30,15 +30,15 @@ GenSpec::seq_t my_mat_seq = [] (size_t i) noexcept { return (5.0 + i) * 43.0; };
void add_vector(EvalFixture::ParamRepo &repo, const char *d1, size_t s1) {
auto name = make_string("%s%zu", d1, s1);
auto layout = GenSpec().idx(d1, s1).seq(my_vec_seq);
- repo.add(name, layout.gen());
- repo.add(name + "f", layout.cells_float().gen());
+ repo.add(name, layout);
+ repo.add(name + "f", layout.cells_float());
}
void add_matrix(EvalFixture::ParamRepo &repo, const char *d1, size_t s1, const char *d2, size_t s2) {
auto name = make_string("%s%zu%s%zu", d1, s1, d2, s2);
auto layout = GenSpec().idx(d1, s1).idx(d2, s2).seq(my_mat_seq);
- repo.add(name, layout.gen());
- repo.add(name + "f", layout.cells_float().gen());
+ repo.add(name, layout);
+ repo.add(name + "f", layout.cells_float());
}
EvalFixture::ParamRepo make_params() {
diff --git a/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp b/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
index e915a396ae7..3bc1472f2d5 100644
--- a/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
+++ b/eval/src/tests/instruction/fast_rename_optimizer/fast_rename_optimizer_test.cpp
@@ -19,13 +19,13 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("x5", GenSpec().idx("x", 5).gen())
- .add("x5f", GenSpec().idx("x", 5).cells_float().gen())
- .add("x_m", GenSpec().map("x", {"a", "b", "c"}).gen())
- .add("xy_mm", GenSpec().map("x", {"a", "b", "c"}).map("y", {"d","e"}).gen())
- .add("x5y3z_m", GenSpec().idx("x", 5).idx("y", 3).map("z", {"a","b"}).gen())
- .add("x5yz_m", GenSpec().idx("x", 5).map("y", {"a","b"}).map("z", {"d","e"}).gen())
- .add("x5y3", GenSpec().idx("x", 5).idx("y", 3).gen());
+ .add("x5", GenSpec().idx("x", 5))
+ .add("x5f", GenSpec().idx("x", 5).cells_float())
+ .add("x_m", GenSpec().map("x", {"a", "b", "c"}))
+ .add("xy_mm", GenSpec().map("x", {"a", "b", "c"}).map("y", {"d","e"}))
+ .add("x5y3z_m", GenSpec().idx("x", 5).idx("y", 3).map("z", {"a","b"}))
+ .add("x5yz_m", GenSpec().idx("x", 5).map("y", {"a","b"}).map("z", {"d","e"}))
+ .add("x5y3", GenSpec().idx("x", 5).idx("y", 3));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp b/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
index 17e012b8e33..637a1633f0f 100644
--- a/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
+++ b/eval/src/tests/instruction/generic_concat/generic_concat_test.cpp
@@ -78,11 +78,11 @@ void test_generic_concat_with(const ValueBuilderFactory &factory) {
for (size_t i = 0; i < concat_layouts.size(); i += 2) {
const auto l = concat_layouts[i];
const auto r = concat_layouts[i+1].cpy().seq(N_16ths);
- for (TensorSpec lhs : { l.cpy().cells_float().gen(),
- l.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { l.cpy().cells_float(),
+ l.cpy().cells_double() })
{
- for (TensorSpec rhs : { r.cpy().cells_float().gen(),
- r.cpy().cells_double().gen() })
+ for (TensorSpec rhs : { r.cpy().cells_float(),
+ r.cpy().cells_double() })
{
SCOPED_TRACE(fmt("\n===\nin LHS: %s\nin RHS: %s\n===\n", lhs.to_string().c_str(), rhs.to_string().c_str()));
auto actual = perform_generic_concat(lhs, rhs, "y", factory);
diff --git a/eval/src/tests/instruction/generic_create/generic_create_test.cpp b/eval/src/tests/instruction/generic_create/generic_create_test.cpp
index fcf4618d592..3677159b64e 100644
--- a/eval/src/tests/instruction/generic_create/generic_create_test.cpp
+++ b/eval/src/tests/instruction/generic_create/generic_create_test.cpp
@@ -91,8 +91,8 @@ TensorSpec perform_generic_create(const TensorSpec &a, const ValueBuilderFactory
void test_generic_create_with(const ValueBuilderFactory &factory) {
for (const auto &layout : create_layouts) {
- for (TensorSpec full : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec full : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
auto actual = perform_generic_create(full, factory);
auto expect = reference_create(full).normalize();
diff --git a/eval/src/tests/instruction/generic_join/generic_join_test.cpp b/eval/src/tests/instruction/generic_join/generic_join_test.cpp
index f724cdf1024..994e67934e7 100644
--- a/eval/src/tests/instruction/generic_join/generic_join_test.cpp
+++ b/eval/src/tests/instruction/generic_join/generic_join_test.cpp
@@ -107,11 +107,11 @@ TEST(GenericJoinTest, generic_join_works_for_simple_and_fast_values) {
for (size_t i = 0; i < join_layouts.size(); i += 2) {
const auto &l = join_layouts[i];
const auto &r = join_layouts[i+1];
- for (TensorSpec lhs : { l.cpy().cells_float().gen(),
- l.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { l.cpy().cells_float(),
+ l.cpy().cells_double() })
{
- for (TensorSpec rhs : { r.cpy().cells_float().gen(),
- r.cpy().cells_double().gen() })
+ for (TensorSpec rhs : { r.cpy().cells_float(),
+ r.cpy().cells_double() })
{
for (auto fun: {operation::Add::f, operation::Sub::f, operation::Mul::f, operation::Div::f}) {
SCOPED_TRACE(fmt("\n===\nLHS: %s\nRHS: %s\n===\n", lhs.to_string().c_str(), rhs.to_string().c_str()));
diff --git a/eval/src/tests/instruction/generic_map/generic_map_test.cpp b/eval/src/tests/instruction/generic_map/generic_map_test.cpp
index 8e39fa68072..9f30efe135e 100644
--- a/eval/src/tests/instruction/generic_map/generic_map_test.cpp
+++ b/eval/src/tests/instruction/generic_map/generic_map_test.cpp
@@ -43,8 +43,8 @@ TensorSpec perform_generic_map(const TensorSpec &a, map_fun_t func, const ValueB
void test_generic_map_with(const ValueBuilderFactory &factory) {
for (const auto &layout : map_layouts) {
- for (TensorSpec lhs : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
for (auto func : {operation::Floor::f, operation::Fabs::f, operation::Square::f, operation::Inv::f}) {
SCOPED_TRACE(fmt("\n===\nLHS: %s\n===\n", lhs.to_string().c_str()));
diff --git a/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp b/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
index d5f7bc071f6..bb14d869440 100644
--- a/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
+++ b/eval/src/tests/instruction/generic_merge/generic_merge_test.cpp
@@ -50,11 +50,11 @@ void test_generic_merge_with(const ValueBuilderFactory &factory) {
for (size_t i = 0; i < merge_layouts.size(); i += 2) {
const auto l = merge_layouts[i];
const auto r = merge_layouts[i+1].cpy().seq(N_16ths);
- for (TensorSpec lhs : { l.cpy().cells_float().gen(),
- l.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { l.cpy().cells_float(),
+ l.cpy().cells_double() })
{
- for (TensorSpec rhs : { r.cpy().cells_float().gen(),
- r.cpy().cells_double().gen() })
+ for (TensorSpec rhs : { r.cpy().cells_float(),
+ r.cpy().cells_double() })
{
SCOPED_TRACE(fmt("\n===\nLHS: %s\nRHS: %s\n===\n", lhs.to_string().c_str(), rhs.to_string().c_str()));
for (auto fun: {operation::Add::f, operation::Mul::f, operation::Sub::f, operation::Max::f}) {
diff --git a/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp b/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
index c80e8a1296b..cafaf5837ec 100644
--- a/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
+++ b/eval/src/tests/instruction/generic_peek/generic_peek_test.cpp
@@ -194,8 +194,8 @@ void fill_dims_and_check(const TensorSpec &input,
void test_generic_peek_with(const ValueBuilderFactory &factory) {
for (const auto &layout : peek_layouts) {
- for (TensorSpec input : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec input : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
ValueType input_type = ValueType::from_spec(input.type());
const auto &dims = input_type.dimensions();
diff --git a/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp b/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
index 2c5baf234c4..4e4cc5fb50b 100644
--- a/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
+++ b/eval/src/tests/instruction/generic_reduce/generic_reduce_test.cpp
@@ -70,8 +70,8 @@ TEST(GenericReduceTest, sparse_reduce_plan_can_be_created) {
void test_generic_reduce_with(const ValueBuilderFactory &factory) {
for (const auto &layout: layouts) {
- for (TensorSpec input : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec input : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
SCOPED_TRACE(fmt("tensor type: %s, num_cells: %zu", input.type().c_str(), input.cells().size()));
for (Aggr aggr: {Aggr::SUM, Aggr::AVG, Aggr::MIN, Aggr::MAX}) {
diff --git a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
index f0c2241202e..dedb22f2763 100644
--- a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
+++ b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
@@ -110,8 +110,8 @@ TensorSpec perform_generic_rename(const TensorSpec &a,
void test_generic_rename_with(const ValueBuilderFactory &factory) {
for (const auto &layout : rename_layouts) {
- for (TensorSpec lhs : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
ValueType lhs_type = ValueType::from_spec(lhs.type());
for (const auto & from_to : rename_from_to) {
diff --git a/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp b/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
index e6a256a493b..6c8afbca681 100644
--- a/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
+++ b/eval/src/tests/instruction/join_with_number/join_with_number_function_test.cpp
@@ -35,9 +35,9 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
auto repo = EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.5).gen())
- .add("number", GenSpec().seq_bias(2.5).gen())
- .add("dense", GenSpec().idx("y", 5).gen())
+ .add("a", GenSpec(1.5))
+ .add("number", GenSpec(2.5))
+ .add("dense", GenSpec().idx("y", 5))
.add_variants("x3y5", GenSpec().idx("x", 3).idx("y", 5))
.add_variants("mixed", GenSpec().map("x", {"a"}).idx("y", 5).map("z", {"d","e"}))
.add_variants("sparse", GenSpec().map("x", {"a","b","c"}).map("z", {"d","e","f"}));
diff --git a/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp b/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
index 6b549b4d4d4..11e7c41fad2 100644
--- a/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
+++ b/eval/src/tests/instruction/mixed_inner_product_function/mixed_inner_product_function_test.cpp
@@ -27,20 +27,20 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add_variants("x3", GenSpec().idx("x", 3).seq_bias(2.0))
- .add_variants("x3$2", GenSpec().idx("x", 3).seq_bias(13.25))
- .add_variants("y3", GenSpec().idx("y", 3).seq_bias(4.0))
- .add_variants("z3", GenSpec().idx("z", 3).seq_bias(0.25))
- .add_variants("x3y3", GenSpec().idx("x", 3).idx("y", 3).seq_bias(5.0))
- .add_variants("x1y3", GenSpec().idx("x", 1).idx("y", 3).seq_bias(6.0))
- .add_variants("x3y1", GenSpec().idx("x", 3).idx("y", 1).seq_bias(1.5))
- .add_variants("x3z3", GenSpec().idx("x", 3).idx("z", 3).seq_bias(2.5))
- .add_variants("x3y3z3", GenSpec().idx("x", 3).idx("y", 3).idx("z", 3).seq_bias(-4.0))
- .add("mix_x3zm", GenSpec().idx("x", 3).map("z", {"c","d"}).seq_bias(0.5).gen())
- .add("mix_y3zm", GenSpec().idx("y", 3).map("z", {"c","d"}).seq_bias(3.5).gen())
- .add("mix_x3zm_f", GenSpec().idx("x", 3).map("z", {"c","d"}).cells_float().seq_bias(0.5).gen())
- .add("mix_y3zm_f", GenSpec().idx("y", 3).map("z", {"c","d"}).cells_float().seq_bias(3.5).gen())
- .add("mix_x3y3zm", GenSpec().idx("x", 3).idx("y", 3).map("z", {"c","d"}).seq_bias(0.0).gen())
+ .add_variants("x3", GenSpec(2.0).idx("x", 3))
+ .add_variants("x3$2", GenSpec(13.25).idx("x", 3))
+ .add_variants("y3", GenSpec(4.0).idx("y", 3))
+ .add_variants("z3", GenSpec(0.25).idx("z", 3))
+ .add_variants("x3y3", GenSpec(5.0).idx("x", 3).idx("y", 3))
+ .add_variants("x1y3", GenSpec(6.0).idx("x", 1).idx("y", 3))
+ .add_variants("x3y1", GenSpec(1.5).idx("x", 3).idx("y", 1))
+ .add_variants("x3z3", GenSpec(2.5).idx("x", 3).idx("z", 3))
+ .add_variants("x3y3z3", GenSpec(-4.0).idx("x", 3).idx("y", 3).idx("z", 3))
+ .add("mix_x3zm", GenSpec(0.5).idx("x", 3).map("z", {"c","d"}))
+ .add("mix_y3zm", GenSpec(3.5).idx("y", 3).map("z", {"c","d"}))
+ .add("mix_x3zm_f", GenSpec(0.5).idx("x", 3).map("z", {"c","d"}).cells_float())
+ .add("mix_y3zm_f", GenSpec(3.5).idx("y", 3).map("z", {"c","d"}).cells_float())
+ .add("mix_x3y3zm", GenSpec(0.0).idx("x", 3).idx("y", 3).map("z", {"c","d"}))
;
}
diff --git a/eval/src/tests/instruction/mixed_map_function/mixed_map_function_test.cpp b/eval/src/tests/instruction/mixed_map_function/mixed_map_function_test.cpp
index 3a7d1368f03..dae147da216 100644
--- a/eval/src/tests/instruction/mixed_map_function/mixed_map_function_test.cpp
+++ b/eval/src/tests/instruction/mixed_map_function/mixed_map_function_test.cpp
@@ -15,8 +15,8 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.5).gen())
- .add("b", GenSpec().seq_bias(2.5).gen())
+ .add("a", GenSpec(1.5))
+ .add("b", GenSpec(2.5))
.add_variants("sparse", GenSpec().map("x", {"a"}))
.add_variants("mixed", GenSpec().map("x", {"a"}).idx("y", 5))
.add_variants("x5y3", GenSpec().idx("x", 5).idx("y", 3));
diff --git a/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp b/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
index 105ae22e06e..6220682d716 100644
--- a/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
+++ b/eval/src/tests/instruction/mixed_simple_join_function/mixed_simple_join_function_test.cpp
@@ -45,12 +45,12 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.5).gen())
- .add("b", GenSpec().seq_bias(2.5).gen())
- .add("sparse", GenSpec().map("x", {"a", "b", "c"}).gen())
- .add("mixed", GenSpec().map("x", {"a", "b", "c"}).idx("y", 5).idx("z", 3).gen())
- .add("empty_mixed", GenSpec().map("x", {}).idx("y", 5).idx("z", 3).gen())
- .add_mutable("@mixed", GenSpec().map("x", {"a", "b", "c"}).idx("y", 5).idx("z", 3).gen())
+ .add("a", GenSpec(1.5))
+ .add("b", GenSpec(2.5))
+ .add("sparse", GenSpec().map("x", {"a", "b", "c"}))
+ .add("mixed", GenSpec().map("x", {"a", "b", "c"}).idx("y", 5).idx("z", 3))
+ .add("empty_mixed", GenSpec().map("x", {}).idx("y", 5).idx("z", 3))
+ .add_mutable("@mixed", GenSpec().map("x", {"a", "b", "c"}).idx("y", 5).idx("z", 3))
.add_variants("a1b1c1", GenSpec().idx("a", 1).idx("b", 1).idx("c", 1))
.add_variants("x1y1z1", GenSpec().idx("x", 1).idx("y", 1).idx("z", 1))
.add_variants("x3y5z3", GenSpec().idx("x", 3).idx("y", 5).idx("z", 3))
diff --git a/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp b/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
index fe32a59bb78..029a080197d 100644
--- a/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
+++ b/eval/src/tests/instruction/pow_as_map_optimizer/pow_as_map_optimizer_test.cpp
@@ -16,10 +16,10 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.5).gen())
- .add("b", GenSpec().seq_bias(2.5).gen())
- .add("sparse", GenSpec().map("x", {"a","b"}).gen())
- .add("mixed", GenSpec().map("x", {"a"}).idx("y", 5).gen())
+ .add("a", GenSpec(1.5))
+ .add("b", GenSpec(2.5))
+ .add("sparse", GenSpec().map("x", {"a","b"}))
+ .add("mixed", GenSpec().map("x", {"a"}).idx("y", 5))
.add_variants("x5y3", GenSpec().idx("x", 5).idx("y", 3));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
index 794725a8257..6439ec305dd 100644
--- a/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
+++ b/eval/src/tests/instruction/remove_trivial_dimension_optimizer/remove_trivial_dimension_optimizer_test.cpp
@@ -19,10 +19,10 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("x1y5z1", GenSpec().idx("x", 1).idx("y", 5).idx("z", 1).gen())
- .add("x1y5z1f", GenSpec().idx("x", 1).idx("y", 5).idx("z", 1).cells_float().gen())
- .add("x1y1z1", GenSpec().idx("x", 1).idx("y", 1).idx("z", 1).gen())
- .add("x1y5z_m", GenSpec().idx("x", 1).idx("y", 5).map("z", {"a"}).gen());
+ .add("x1y5z1", GenSpec().idx("x", 1).idx("y", 5).idx("z", 1))
+ .add("x1y5z1f", GenSpec().idx("x", 1).idx("y", 5).idx("z", 1).cells_float())
+ .add("x1y1z1", GenSpec().idx("x", 1).idx("y", 1).idx("z", 1))
+ .add("x1y5z_m", GenSpec().idx("x", 1).idx("y", 5).map("z", {"a"}));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp b/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
index ac333f5224a..96f156ccdb9 100644
--- a/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_dot_product_function/sparse_dot_product_function_test.cpp
@@ -17,13 +17,13 @@ const ValueBuilderFactory &test_factory = SimpleValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add_variants("v1_x", GenSpec().map("x", 32, 1).seq_bias(3.0))
- .add_variants("v2_x", GenSpec().map("x", 16, 2).seq_bias(7.0))
- .add("v3_y", GenSpec().map("y", 10, 1).gen())
- .add("v4_xd", GenSpec().idx("x", 10).gen())
- .add("m1_xy", GenSpec().map("x", 32, 1).map("y", 16, 2).seq_bias(3.0).gen())
- .add("m2_xy", GenSpec().map("x", 16, 2).map("y", 32, 1).seq_bias(7.0).gen())
- .add("m3_xym", GenSpec().map("x", 8, 1).idx("y", 5).gen());
+ .add_variants("v1_x", GenSpec(3.0).map("x", 32, 1))
+ .add_variants("v2_x", GenSpec(7.0).map("x", 16, 2))
+ .add("v3_y", GenSpec().map("y", 10, 1))
+ .add("v4_xd", GenSpec().idx("x", 10))
+ .add("m1_xy", GenSpec(3.0).map("x", 32, 1).map("y", 16, 2))
+ .add("m2_xy", GenSpec(7.0).map("x", 16, 2).map("y", 32, 1))
+ .add("m3_xym", GenSpec().map("x", 8, 1).idx("y", 5));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp b/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
index e175286e18c..8bd27bd9a03 100644
--- a/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
+++ b/eval/src/tests/instruction/sparse_merge_function/sparse_merge_function_test.cpp
@@ -17,15 +17,15 @@ const ValueBuilderFactory &test_factory = SimpleValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("scalar1", GenSpec(1.0).gen())
- .add("scalar2", GenSpec(2.0).gen())
+ .add("scalar1", GenSpec(1.0))
+ .add("scalar2", GenSpec(2.0))
.add_variants("v1_x", GenSpec(3.0).map("x", 32, 1))
.add_variants("v2_x", GenSpec(4.0).map("x", 16, 2))
.add_variants("v3_xz", GenSpec(5.0).map("x", 16, 2).idx("z", 1))
- .add("dense", GenSpec(6.0).idx("x", 10).gen())
- .add("m1_xy", GenSpec(7.0).map("x", 32, 1).map("y", 16, 2).gen())
- .add("m2_xy", GenSpec(8.0).map("x", 16, 2).map("y", 32, 1).gen())
- .add("mixed", GenSpec(9.0).map("x", 8, 1).idx("y", 5).gen());
+ .add("dense", GenSpec(6.0).idx("x", 10))
+ .add("m1_xy", GenSpec(7.0).map("x", 32, 1).map("y", 16, 2))
+ .add("m2_xy", GenSpec(8.0).map("x", 16, 2).map("y", 32, 1))
+ .add("mixed", GenSpec(9.0).map("x", 8, 1).idx("y", 5));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp b/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
index 1013c98b424..f68c089e784 100644
--- a/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
+++ b/eval/src/tests/instruction/sum_max_dot_product_function/sum_max_dot_product_function_test.cpp
@@ -45,9 +45,9 @@ void assert_not_optimized(const TensorSpec &a, const TensorSpec &b, const vespal
//-----------------------------------------------------------------------------
-GenSpec QueGen(size_t x_size, size_t z_size) { return GenSpec().cells_float().map("x", x_size).idx("z", z_size).seq_bias(0.5); }
+GenSpec QueGen(size_t x_size, size_t z_size) { return GenSpec(0.5).cells_float().map("x", x_size).idx("z", z_size); }
-GenSpec DocGen(size_t y_size, size_t z_size) { return GenSpec().cells_float().map("y", y_size).idx("z", z_size).seq_bias(2.5); }
+GenSpec DocGen(size_t y_size, size_t z_size) { return GenSpec(2.5).cells_float().map("y", y_size).idx("z", z_size); }
GenSpec Que() { return QueGen(3, 5); }
GenSpec Doc() { return DocGen(6, 5); }
@@ -58,10 +58,10 @@ GenSpec DocEmptyX() { return DocGen(0, 5); }
GenSpec QueTrivialZ() { return QueGen(3, 1); }
GenSpec DocTrivialZ() { return DocGen(6, 1); }
-auto query = Que().gen();
-auto document = Doc().gen();
-auto empty_query = QueEmptyX().gen();
-auto empty_document = DocEmptyX().gen();
+auto query = Que();
+auto document = Doc();
+auto empty_query = QueEmptyX();
+auto empty_document = DocEmptyX();
TEST(SumMaxDotProduct, expressions_can_be_optimized)
{
@@ -73,24 +73,24 @@ TEST(SumMaxDotProduct, expressions_can_be_optimized)
}
TEST(SumMaxDotProduct, double_cells_are_not_optimized) {
- auto double_query = Que().cells_double().gen();
- auto double_document = Doc().cells_double().gen();
+ auto double_query = Que().cells_double();
+ auto double_document = Doc().cells_double();
assert_not_optimized(query, double_document);
assert_not_optimized(double_query, document);
assert_not_optimized(double_query, double_document);
}
TEST(SumMaxDotProduct, trivial_dot_product_is_not_optimized) {
- auto trivial_query = QueTrivialZ().gen();
- auto trivial_document = DocTrivialZ().gen();
+ auto trivial_query = QueTrivialZ();
+ auto trivial_document = DocTrivialZ();
assert_not_optimized(trivial_query, trivial_document);
}
TEST(SumMaxDotProduct, additional_dimensions_are_not_optimized) {
- auto extra_sparse_query = Que().map("a", 1).gen();
- auto extra_dense_query = Que().idx("a", 1).gen();
- auto extra_sparse_document = Doc().map("a", 1).gen();
- auto extra_dense_document = Doc().idx("a", 1).gen();
+ auto extra_sparse_query = Que().map("a", 1);
+ auto extra_dense_query = Que().idx("a", 1);
+ auto extra_sparse_document = Doc().map("a", 1);
+ auto extra_dense_document = Doc().idx("a", 1);
vespalib::string extra_sum_expr = "reduce(reduce(reduce(a*b,sum,z),max,y),sum,a,x)";
vespalib::string extra_max_expr = "reduce(reduce(reduce(a*b,sum,z),max,a,y),sum,x)";
assert_not_optimized(extra_sparse_query, document);
@@ -104,8 +104,8 @@ TEST(SumMaxDotProduct, additional_dimensions_are_not_optimized) {
}
TEST(SumMaxDotProduct, more_dense_variants_are_not_optimized) {
- auto dense_query = GenSpec().cells_float().idx("x", 3).idx("z", 5).seq_bias(0.5).gen();
- auto dense_document = GenSpec().cells_float().idx("y", 5).idx("z", 5).seq_bias(2.5).gen();
+ auto dense_query = GenSpec(0.5).cells_float().idx("x", 3).idx("z", 5);
+ auto dense_document = GenSpec(2.5).cells_float().idx("y", 5).idx("z", 5);
assert_not_optimized(dense_query, document);
assert_not_optimized(query, dense_document);
assert_not_optimized(dense_query, dense_document);
diff --git a/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp b/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
index 2371c1e4006..635296ef78c 100644
--- a/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
+++ b/eval/src/tests/instruction/vector_from_doubles_function/vector_from_doubles_function_test.cpp
@@ -18,11 +18,11 @@ const ValueBuilderFactory &prod_factory = FastValueBuilderFactory::get();
EvalFixture::ParamRepo make_params() {
return EvalFixture::ParamRepo()
- .add("a", GenSpec().seq_bias(1.0).gen())
- .add("b", GenSpec().seq_bias(2.0).gen())
- .add("c", GenSpec().seq_bias(3.0).gen())
- .add("d", GenSpec().seq_bias(4.0).gen())
- .add("x5", GenSpec().idx("x", 5).gen());
+ .add("a", GenSpec(1.0))
+ .add("b", GenSpec(2.0))
+ .add("c", GenSpec(3.0))
+ .add("d", GenSpec(4.0))
+ .add("x5", GenSpec().idx("x", 5));
}
EvalFixture::ParamRepo param_repo = make_params();
diff --git a/eval/src/tests/streamed/value/streamed_value_test.cpp b/eval/src/tests/streamed/value/streamed_value_test.cpp
index 7aaa8cdebbc..965970e47e3 100644
--- a/eval/src/tests/streamed/value/streamed_value_test.cpp
+++ b/eval/src/tests/streamed/value/streamed_value_test.cpp
@@ -67,8 +67,8 @@ TensorSpec streamed_value_join(const TensorSpec &a, const TensorSpec &b, join_fu
TEST(StreamedValueTest, streamed_values_can_be_converted_from_and_to_tensor_spec) {
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, StreamedValueBuilderFactory::get());
TensorSpec actual = spec_from_value(*value);
@@ -79,8 +79,8 @@ TEST(StreamedValueTest, streamed_values_can_be_converted_from_and_to_tensor_spec
TEST(StreamedValueTest, streamed_values_can_be_copied) {
for (const auto &layout: layouts) {
- for (TensorSpec expect : { layout.cpy().cells_float().gen(),
- layout.cpy().cells_double().gen() })
+ for (TensorSpec expect : { layout.cpy().cells_float(),
+ layout.cpy().cells_double() })
{
std::unique_ptr<Value> value = value_from_spec(expect, StreamedValueBuilderFactory::get());
std::unique_ptr<Value> copy = StreamedValueBuilderFactory::get().copy(*value);
@@ -130,11 +130,11 @@ TEST(StreamedValueTest, new_generic_join_works_for_streamed_values) {
for (size_t i = 0; i < join_layouts.size(); i += 2) {
const auto l = join_layouts[i].cpy().seq(N_16ths);
const auto r = join_layouts[i + 1].cpy().seq(N_16ths);
- for (TensorSpec lhs : { l.cpy().cells_float().gen(),
- l.cpy().cells_double().gen() })
+ for (TensorSpec lhs : { l.cpy().cells_float(),
+ l.cpy().cells_double() })
{
- for (TensorSpec rhs : { r.cpy().cells_float().gen(),
- r.cpy().cells_double().gen() })
+ for (TensorSpec rhs : { r.cpy().cells_float(),
+ r.cpy().cells_double() })
{
for (auto fun: {operation::Add::f, operation::Sub::f, operation::Mul::f, operation::Max::f}) {
SCOPED_TRACE(fmt("\n===\nLHS: %s\nRHS: %s\n===\n", lhs.to_string().c_str(), rhs.to_string().c_str()));
diff --git a/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp b/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
index 000794aca7d..d8dff63cddf 100644
--- a/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
+++ b/eval/src/tests/tensor/instruction_benchmark/instruction_benchmark.cpp
@@ -61,7 +61,7 @@ template <typename T> using CREF = std::reference_wrapper<const T>;
//-----------------------------------------------------------------------------
-test::GenSpec GS(double bias) { return test::GenSpec().cells_float().seq_bias(bias); }
+test::GenSpec GS(double bias) { return test::GenSpec(bias).cells_float(); }
//-----------------------------------------------------------------------------
@@ -566,7 +566,7 @@ void benchmark_tensor_create(const vespalib::string &desc, const TensorSpec &pro
ASSERT_FALSE(proto_type.is_error());
std::vector<CREF<TensorSpec>> stack_spec;
for (const auto &cell: proto.cells()) {
- stack_spec.emplace_back(stash.create<TensorSpec>(GS(cell.second).gen()));
+ stack_spec.emplace_back(stash.create<TensorSpec>(GS(cell.second)));
}
std::vector<EvalOp::UP> list;
for (const Impl &impl: impl_list) {
@@ -602,7 +602,7 @@ void benchmark_tensor_peek(const vespalib::string &desc, const TensorSpec &lhs,
stack_spec.emplace_back(lhs);
if (peek_spec.is_dynamic) {
for (const auto &entry: peek_spec.spec) {
- stack_spec.emplace_back(stash.create<TensorSpec>(GS(double(entry.second)).gen()));
+ stack_spec.emplace_back(stash.create<TensorSpec>(GS(double(entry.second))));
}
}
std::vector<EvalOp::UP> list;
@@ -617,15 +617,15 @@ void benchmark_tensor_peek(const vespalib::string &desc, const TensorSpec &lhs,
//-----------------------------------------------------------------------------
TEST(MakeInputTest, print_some_test_input) {
- auto number = GS(5.0).gen();
- auto sparse = GS(1.0).map("x", 5, 3).gen();
- auto dense = GS(10.0).idx("x", 5).gen();
- auto mixed = GS(100.0).map("x", 3, 7).idx("y", 2).idx("z", 2).gen();
+ auto number = GS(5.0);
+ auto sparse = GS(1.0).map("x", 5, 3);
+ auto dense = GS(10.0).idx("x", 5);
+ auto mixed = GS(100.0).map("x", 3, 7).idx("y", 2).idx("z", 2);
fprintf(stderr, "--------------------------------------------------------\n");
- fprintf(stderr, "simple number: %s\n", number.to_string().c_str());
- fprintf(stderr, "sparse vector: %s\n", sparse.to_string().c_str());
- fprintf(stderr, "dense vector: %s\n", dense.to_string().c_str());
- fprintf(stderr, "mixed cube: %s\n", mixed.to_string().c_str());
+ fprintf(stderr, "simple number: %s\n", number.gen().to_string().c_str());
+ fprintf(stderr, "sparse vector: %s\n", sparse.gen().to_string().c_str());
+ fprintf(stderr, "dense vector: %s\n", dense.gen().to_string().c_str());
+ fprintf(stderr, "mixed cube: %s\n", mixed.gen().to_string().c_str());
fprintf(stderr, "--------------------------------------------------------\n");
}
@@ -685,197 +685,197 @@ void benchmark_encode_decode(const vespalib::string &desc, const TensorSpec &pro
// relevant for the overall performance of the tensor implementation.
TEST(EncodeDecodeBench, encode_decode_dense) {
- auto proto = GS(1.0).idx("a", 64).idx("b", 64).gen();
+ auto proto = GS(1.0).idx("a", 64).idx("b", 64);
benchmark_encode_decode("dense tensor", proto);
}
TEST(EncodeDecodeBench, encode_decode_sparse) {
- auto proto = GS(1.0).map("a", 64, 1).map("b", 64, 1).gen();
+ auto proto = GS(1.0).map("a", 64, 1).map("b", 64, 1);
benchmark_encode_decode("sparse tensor", proto);
}
TEST(EncodeDecodeBench, encode_decode_mixed) {
- auto proto = GS(1.0).map("a", 64, 1).idx("b", 64).gen();
+ auto proto = GS(1.0).map("a", 64, 1).idx("b", 64);
benchmark_encode_decode("mixed tensor", proto);
}
//-----------------------------------------------------------------------------
TEST(DenseConcat, small_vectors) {
- auto lhs = GS(1.0).idx("x", 10).gen();
- auto rhs = GS(2.0).idx("x", 10).gen();
+ auto lhs = GS(1.0).idx("x", 10);
+ auto rhs = GS(2.0).idx("x", 10);
benchmark_concat("small dense vector append concat", lhs, rhs, "x");
}
TEST(DenseConcat, cross_vectors) {
- auto lhs = GS(1.0).idx("x", 10).gen();
- auto rhs = GS(2.0).idx("x", 10).gen();
+ auto lhs = GS(1.0).idx("x", 10);
+ auto rhs = GS(2.0).idx("x", 10);
benchmark_concat("small dense vector cross concat", lhs, rhs, "y");
}
TEST(DenseConcat, cube_and_vector) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
- auto rhs = GS(42.0).idx("a", 16).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16);
+ auto rhs = GS(42.0).idx("a", 16);
benchmark_concat("cube vs vector concat", lhs, rhs, "a");
}
TEST(SparseConcat, small_vectors) {
- auto lhs = GS(1.0).map("x", 10, 1).gen();
- auto rhs = GS(2.0).map("x", 10, 2).gen();
+ auto lhs = GS(1.0).map("x", 10, 1);
+ auto rhs = GS(2.0).map("x", 10, 2);
benchmark_concat("small sparse concat", lhs, rhs, "y");
}
TEST(MixedConcat, mixed_vs_dense) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1).gen();
- auto rhs = GS(2.0).idx("a", 16).idx("b", 16).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1);
+ auto rhs = GS(2.0).idx("a", 16).idx("b", 16);
benchmark_concat("mixed dense concat a", lhs, rhs, "a");
}
TEST(MixedConcat, large_mixed_a) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1).gen();
- auto rhs = GS(2.0).idx("a", 16).idx("b", 16).map("c", 16, 2).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1);
+ auto rhs = GS(2.0).idx("a", 16).idx("b", 16).map("c", 16, 2);
benchmark_concat("mixed append concat a", lhs, rhs, "a");
}
TEST(MixedConcat, large_mixed_b) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1).gen();
- auto rhs = GS(2.0).idx("a", 16).idx("b", 16).map("c", 16, 2).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).map("c", 16, 1);
+ auto rhs = GS(2.0).idx("a", 16).idx("b", 16).map("c", 16, 2);
benchmark_concat("mixed append concat b", lhs, rhs, "b");
}
//-----------------------------------------------------------------------------
TEST(NumberJoin, plain_op2) {
- auto lhs = GS(2.0).gen();
- auto rhs = GS(3.0).gen();
+ auto lhs = GS(2.0);
+ auto rhs = GS(3.0);
benchmark_join("simple numbers multiply", lhs, rhs, operation::Mul::f);
}
//-----------------------------------------------------------------------------
TEST(DenseJoin, small_vectors) {
- auto lhs = GS(1.0).idx("x", 10).gen();
- auto rhs = GS(2.0).idx("x", 10).gen();
+ auto lhs = GS(1.0).idx("x", 10);
+ auto rhs = GS(2.0).idx("x", 10);
benchmark_join("small dense vector multiply", lhs, rhs, operation::Mul::f);
}
TEST(DenseJoin, full_overlap) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
- auto rhs = GS(2.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16);
+ auto rhs = GS(2.0).idx("a", 16).idx("b", 16).idx("c", 16);
benchmark_join("dense full overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(DenseJoin, partial_overlap) {
- auto lhs = GS(1.0).idx("a", 8).idx("c", 8).idx("d", 8).gen();
- auto rhs = GS(2.0).idx("b", 8).idx("c", 8).idx("d", 8).gen();
+ auto lhs = GS(1.0).idx("a", 8).idx("c", 8).idx("d", 8);
+ auto rhs = GS(2.0).idx("b", 8).idx("c", 8).idx("d", 8);
benchmark_join("dense partial overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(DenseJoin, subset_overlap) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
- auto rhs_inner = GS(2.0).idx("b", 16).idx("c", 16).gen();
- auto rhs_outer = GS(3.0).idx("a", 16).idx("b", 16).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16);
+ auto rhs_inner = GS(2.0).idx("b", 16).idx("c", 16);
+ auto rhs_outer = GS(3.0).idx("a", 16).idx("b", 16);
benchmark_join("dense subset overlap inner multiply", lhs, rhs_inner, operation::Mul::f);
benchmark_join("dense subset overlap outer multiply", lhs, rhs_outer, operation::Mul::f);
}
TEST(DenseJoin, no_overlap) {
- auto lhs = GS(1.0).idx("a", 4).idx("e", 4).idx("f", 4).gen();
- auto rhs = GS(2.0).idx("b", 4).idx("c", 4).idx("d", 4).gen();
+ auto lhs = GS(1.0).idx("a", 4).idx("e", 4).idx("f", 4);
+ auto rhs = GS(2.0).idx("b", 4).idx("c", 4).idx("d", 4);
benchmark_join("dense no overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(DenseJoin, simple_expand) {
- auto lhs = GS(1.0).idx("a", 5).idx("b", 4).idx("c", 4).gen();
- auto rhs = GS(2.0).idx("d", 4).idx("e", 4).idx("f", 5).gen();
+ auto lhs = GS(1.0).idx("a", 5).idx("b", 4).idx("c", 4);
+ auto rhs = GS(2.0).idx("d", 4).idx("e", 4).idx("f", 5);
benchmark_join("dense simple expand multiply", lhs, rhs, operation::Mul::f);
}
TEST(DenseJoin, multiply_by_number) {
- auto lhs = GS(3.0).gen();
- auto rhs = GS(2.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
+ auto lhs = GS(3.0);
+ auto rhs = GS(2.0).idx("a", 16).idx("b", 16).idx("c", 16);
benchmark_join("dense cube multiply by number", lhs, rhs, operation::Mul::f);
}
//-----------------------------------------------------------------------------
TEST(SparseJoin, small_vectors) {
- auto lhs = GS(1.0).map("x", 10, 1).gen();
- auto rhs = GS(2.0).map("x", 10, 2).gen();
+ auto lhs = GS(1.0).map("x", 10, 1);
+ auto rhs = GS(2.0).map("x", 10, 2);
benchmark_join("small sparse vector multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, large_vectors) {
- auto lhs = GS(1.0).map("x", 1800, 1).gen();
- auto rhs = GS(2.0).map("x", 1000, 2).gen();
+ auto lhs = GS(1.0).map("x", 1800, 1);
+ auto rhs = GS(2.0).map("x", 1000, 2);
benchmark_join("large sparse vector multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, full_overlap) {
- auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1).gen();
- auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).map("c", 16, 2).gen();
+ auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1);
+ auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).map("c", 16, 2);
benchmark_join("sparse full overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, full_overlap_big_vs_small) {
- auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1).gen();
- auto rhs = GS(2.0).map("a", 2, 1).map("b", 2, 1).map("c", 2, 1).gen();
+ auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1);
+ auto rhs = GS(2.0).map("a", 2, 1).map("b", 2, 1).map("c", 2, 1);
benchmark_join("sparse full overlap big vs small multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, partial_overlap) {
- auto lhs = GS(1.0).map("a", 8, 1).map("c", 8, 1).map("d", 8, 1).gen();
- auto rhs = GS(2.0).map("b", 8, 2).map("c", 8, 2).map("d", 8, 2).gen();
+ auto lhs = GS(1.0).map("a", 8, 1).map("c", 8, 1).map("d", 8, 1);
+ auto rhs = GS(2.0).map("b", 8, 2).map("c", 8, 2).map("d", 8, 2);
benchmark_join("sparse partial overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, no_overlap) {
- auto lhs = GS(1.0).map("a", 4, 1).map("e", 4, 1).map("f", 4, 1).gen();
- auto rhs = GS(2.0).map("b", 4, 1).map("c", 4, 1).map("d", 4, 1).gen();
+ auto lhs = GS(1.0).map("a", 4, 1).map("e", 4, 1).map("f", 4, 1);
+ auto rhs = GS(2.0).map("b", 4, 1).map("c", 4, 1).map("d", 4, 1);
benchmark_join("sparse no overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(SparseJoin, multiply_by_number) {
- auto lhs = GS(3.0).gen();
- auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).map("c", 16, 2).gen();
+ auto lhs = GS(3.0);
+ auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).map("c", 16, 2);
benchmark_join("sparse multiply by number", lhs, rhs, operation::Mul::f);
}
//-----------------------------------------------------------------------------
TEST(MixedJoin, full_overlap) {
- auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).idx("c", 16).gen();
- auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).idx("c", 16).gen();
+ auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).idx("c", 16);
+ auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).idx("c", 16);
benchmark_join("mixed full overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(MixedJoin, partial_sparse_overlap) {
- auto lhs = GS(1.0).map("a", 8, 1).map("c", 8, 1).idx("d", 8).gen();
- auto rhs = GS(2.0).map("b", 8, 2).map("c", 8, 2).idx("d", 8).gen();
+ auto lhs = GS(1.0).map("a", 8, 1).map("c", 8, 1).idx("d", 8);
+ auto rhs = GS(2.0).map("b", 8, 2).map("c", 8, 2).idx("d", 8);
benchmark_join("mixed partial sparse overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(MixedJoin, no_overlap) {
- auto lhs = GS(1.0).map("a", 4, 1).map("e", 4, 1).idx("f", 4).gen();
- auto rhs = GS(2.0).map("b", 4, 1).map("c", 4, 1).idx("d", 4).gen();
+ auto lhs = GS(1.0).map("a", 4, 1).map("e", 4, 1).idx("f", 4);
+ auto rhs = GS(2.0).map("b", 4, 1).map("c", 4, 1).idx("d", 4);
benchmark_join("mixed no overlap multiply", lhs, rhs, operation::Mul::f);
}
TEST(MixedJoin, multiply_by_number) {
- auto lhs = GS(3.0).gen();
- auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).idx("c", 16).gen();
+ auto lhs = GS(3.0);
+ auto rhs = GS(2.0).map("a", 16, 2).map("b", 16, 2).idx("c", 16);
benchmark_join("mixed multiply by number", lhs, rhs, operation::Mul::f);
}
//-----------------------------------------------------------------------------
TEST(ReduceBench, number_reduce) {
- auto lhs = GS(1.0).gen();
+ auto lhs = GS(1.0);
benchmark_reduce("number reduce", lhs, Aggr::SUM, {});
}
TEST(ReduceBench, dense_reduce) {
- auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16).gen();
+ auto lhs = GS(1.0).idx("a", 16).idx("b", 16).idx("c", 16);
benchmark_reduce("dense reduce inner", lhs, Aggr::SUM, {"c"});
benchmark_reduce("dense reduce middle", lhs, Aggr::SUM, {"b"});
benchmark_reduce("dense reduce outer", lhs, Aggr::SUM, {"a"});
@@ -886,7 +886,7 @@ TEST(ReduceBench, dense_reduce) {
}
TEST(ReduceBench, sparse_reduce) {
- auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1).gen();
+ auto lhs = GS(1.0).map("a", 16, 1).map("b", 16, 1).map("c", 16, 1);
benchmark_reduce("sparse reduce inner", lhs, Aggr::SUM, {"c"});
benchmark_reduce("sparse reduce middle", lhs, Aggr::SUM, {"b"});
benchmark_reduce("sparse reduce outer", lhs, Aggr::SUM, {"a"});
@@ -898,7 +898,7 @@ TEST(ReduceBench, sparse_reduce) {
TEST(ReduceBench, mixed_reduce) {
auto lhs = GS(1.0).map("a", 4, 1).map("b", 4, 1).map("c", 4, 1)
- .idx("d", 4).idx("e", 4).idx("f", 4).gen();
+ .idx("d", 4).idx("e", 4).idx("f", 4);
benchmark_reduce("mixed reduce middle dense", lhs, Aggr::SUM, {"e"});
benchmark_reduce("mixed reduce middle sparse", lhs, Aggr::SUM, {"b"});
benchmark_reduce("mixed reduce middle sparse/dense", lhs, Aggr::SUM, {"b", "e"});
@@ -910,87 +910,87 @@ TEST(ReduceBench, mixed_reduce) {
//-----------------------------------------------------------------------------
TEST(RenameBench, dense_rename) {
- auto lhs = GS(1.0).idx("a", 64).idx("b", 64).gen();
+ auto lhs = GS(1.0).idx("a", 64).idx("b", 64);
benchmark_rename("dense transpose", lhs, {"a", "b"}, {"b", "a"});
}
TEST(RenameBench, sparse_rename) {
- auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1).gen();
+ auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1);
benchmark_rename("sparse transpose", lhs, {"a", "b"}, {"b", "a"});
}
TEST(RenameBench, mixed_rename) {
- auto lhs = GS(1.0).map("a", 8, 1).map("b", 8, 1).idx("c", 8).idx("d", 8).gen();
+ auto lhs = GS(1.0).map("a", 8, 1).map("b", 8, 1).idx("c", 8).idx("d", 8);
benchmark_rename("mixed multi-transpose", lhs, {"a", "b", "c", "d"}, {"b", "a", "d", "c"});
}
//-----------------------------------------------------------------------------
TEST(MergeBench, dense_merge) {
- auto lhs = GS(1.0).idx("a", 64).idx("b", 64).gen();
- auto rhs = GS(2.0).idx("a", 64).idx("b", 64).gen();
+ auto lhs = GS(1.0).idx("a", 64).idx("b", 64);
+ auto rhs = GS(2.0).idx("a", 64).idx("b", 64);
benchmark_merge("dense merge", lhs, rhs, operation::Max::f);
}
TEST(MergeBench, sparse_merge_big_small) {
- auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1).gen();
- auto rhs = GS(2.0).map("a", 8, 1).map("b", 8, 1).gen();
+ auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1);
+ auto rhs = GS(2.0).map("a", 8, 1).map("b", 8, 1);
benchmark_merge("sparse merge big vs small", lhs, rhs, operation::Max::f);
}
TEST(MergeBench, sparse_merge_minimal_overlap) {
- auto lhs = GS(1.0).map("a", 64, 11).map("b", 32, 11).gen();
- auto rhs = GS(2.0).map("a", 32, 13).map("b", 64, 13).gen();
+ auto lhs = GS(1.0).map("a", 64, 11).map("b", 32, 11);
+ auto rhs = GS(2.0).map("a", 32, 13).map("b", 64, 13);
benchmark_merge("sparse merge minimal overlap", lhs, rhs, operation::Max::f);
}
TEST(MergeBench, mixed_merge) {
- auto lhs = GS(1.0).map("a", 64, 1).idx("b", 64).gen();
- auto rhs = GS(2.0).map("a", 64, 2).idx("b", 64).gen();
+ auto lhs = GS(1.0).map("a", 64, 1).idx("b", 64);
+ auto rhs = GS(2.0).map("a", 64, 2).idx("b", 64);
benchmark_merge("mixed merge", lhs, rhs, operation::Max::f);
}
//-----------------------------------------------------------------------------
TEST(MapBench, number_map) {
- auto lhs = GS(1.75).gen();
+ auto lhs = GS(1.75);
benchmark_map("number map", lhs, operation::Floor::f);
}
TEST(MapBench, dense_map) {
- auto lhs = GS(1.75).idx("a", 64).idx("b", 64).gen();
+ auto lhs = GS(1.75).idx("a", 64).idx("b", 64);
benchmark_map("dense map", lhs, operation::Floor::f);
}
TEST(MapBench, sparse_map_small) {
- auto lhs = GS(1.75).map("a", 4, 1).map("b", 4, 1).gen();
+ auto lhs = GS(1.75).map("a", 4, 1).map("b", 4, 1);
benchmark_map("sparse map small", lhs, operation::Floor::f);
}
TEST(MapBench, sparse_map_big) {
- auto lhs = GS(1.75).map("a", 64, 1).map("b", 64, 1).gen();
+ auto lhs = GS(1.75).map("a", 64, 1).map("b", 64, 1);
benchmark_map("sparse map big", lhs, operation::Floor::f);
}
TEST(MapBench, mixed_map) {
- auto lhs = GS(1.75).map("a", 64, 1).idx("b", 64).gen();
+ auto lhs = GS(1.75).map("a", 64, 1).idx("b", 64);
benchmark_map("mixed map", lhs, operation::Floor::f);
}
//-----------------------------------------------------------------------------
TEST(TensorCreateBench, create_dense) {
- auto proto = GS(1.0).idx("a", 32).idx("b", 32).gen();
+ auto proto = GS(1.0).idx("a", 32).idx("b", 32);
benchmark_tensor_create("dense tensor create", proto);
}
TEST(TensorCreateBench, create_sparse) {
- auto proto = GS(1.0).map("a", 32, 1).map("b", 32, 1).gen();
+ auto proto = GS(1.0).map("a", 32, 1).map("b", 32, 1);
benchmark_tensor_create("sparse tensor create", proto);
}
TEST(TensorCreateBench, create_mixed) {
- auto proto = GS(1.0).map("a", 32, 1).idx("b", 32).gen();
+ auto proto = GS(1.0).map("a", 32, 1).idx("b", 32);
benchmark_tensor_create("mixed tensor create", proto);
}
@@ -998,7 +998,7 @@ TEST(TensorCreateBench, create_mixed) {
TEST(TensorLambdaBench, simple_lambda) {
auto type = ValueType::from_spec("tensor<float>(a[64],b[64])");
- auto p0 = GS(3.5).gen();
+ auto p0 = GS(3.5);
auto function = Function::parse({"a", "b", "p0"}, "(a*64+b)*p0");
ASSERT_FALSE(function->has_error());
benchmark_tensor_lambda("simple tensor lambda", type, p0, *function);
@@ -1006,7 +1006,7 @@ TEST(TensorLambdaBench, simple_lambda) {
TEST(TensorLambdaBench, complex_lambda) {
auto type = ValueType::from_spec("tensor<float>(a[64],b[64])");
- auto p0 = GS(1.0).idx("x", 3).gen();
+ auto p0 = GS(1.0).idx("x", 3);
auto function = Function::parse({"a", "b", "p0"}, "(a*64+b)*reduce(p0,sum)");
ASSERT_FALSE(function->has_error());
benchmark_tensor_lambda("complex tensor lambda", type, p0, *function);
@@ -1015,7 +1015,7 @@ TEST(TensorLambdaBench, complex_lambda) {
//-----------------------------------------------------------------------------
TEST(TensorPeekBench, dense_peek) {
- auto lhs = GS(1.0).idx("a", 64).idx("b", 64).gen();
+ auto lhs = GS(1.0).idx("a", 64).idx("b", 64);
benchmark_tensor_peek("dense peek cell verbatim", lhs, verbatim_peek().add("a", 1).add("b", 2));
benchmark_tensor_peek("dense peek cell dynamic", lhs, dynamic_peek().add("a", 1).add("b", 2));
benchmark_tensor_peek("dense peek vector verbatim", lhs, verbatim_peek().add("a", 1));
@@ -1023,7 +1023,7 @@ TEST(TensorPeekBench, dense_peek) {
}
TEST(TensorPeekBench, sparse_peek) {
- auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1).gen();
+ auto lhs = GS(1.0).map("a", 64, 1).map("b", 64, 1);
benchmark_tensor_peek("sparse peek cell verbatim", lhs, verbatim_peek().add("a", 1).add("b", 2));
benchmark_tensor_peek("sparse peek cell dynamic", lhs, dynamic_peek().add("a", 1).add("b", 2));
benchmark_tensor_peek("sparse peek vector verbatim", lhs, verbatim_peek().add("a", 1));
@@ -1031,7 +1031,7 @@ TEST(TensorPeekBench, sparse_peek) {
}
TEST(TensorPeekBench, mixed_peek) {
- auto lhs = GS(1.0).map("a", 8, 1).map("b", 8, 1).idx("c", 8).idx("d", 8).gen();
+ auto lhs = GS(1.0).map("a", 8, 1).map("b", 8, 1).idx("c", 8).idx("d", 8);
benchmark_tensor_peek("mixed peek cell verbatim", lhs, verbatim_peek().add("a", 1).add("b", 2).add("c", 3).add("d", 4));
benchmark_tensor_peek("mixed peek cell dynamic", lhs, dynamic_peek().add("a", 1).add("b", 2).add("c", 3).add("d", 4));
benchmark_tensor_peek("mixed peek dense verbatim", lhs, verbatim_peek().add("a", 1).add("b", 2));
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.cpp b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
index 966954b9026..1c1d1aef18d 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.cpp
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
@@ -105,82 +105,21 @@ std::vector<Value::CREF> get_refs(const std::vector<Value::UP> &values) {
return result;
}
-void add_cell_values(TensorSpec &spec, TensorSpec::Address &addr,
- const std::vector<std::pair<vespalib::string, size_t> > &dims,
- size_t idx, size_t &seq, std::function<double(size_t)> gen)
-{
- if (idx < dims.size()) {
- for (size_t i = 0; i < dims[idx].second; ++i) {
- addr.emplace(dims[idx].first, TensorSpec::Label(i)).first->second = TensorSpec::Label(i);
- add_cell_values(spec, addr, dims, idx + 1, seq, gen);
- }
- } else {
- spec.add(addr, gen(seq++));
- }
-}
-
-TensorSpec make_dense(const vespalib::string &type,
- const std::vector<std::pair<vespalib::string, size_t> > &dims,
- std::function<double(size_t)> gen)
-{
- TensorSpec spec(type);
- TensorSpec::Address addr;
- size_t seq = 0;
- add_cell_values(spec, addr, dims, 0, seq, gen);
- return spec;
-}
-
} // namespace vespalib::eval::test
ParamRepo &
-ParamRepo::add(const vespalib::string &name, TensorSpec value_in, bool is_mutable_in) {
+EvalFixture::ParamRepo::add(const vespalib::string &name, TensorSpec value)
+{
ASSERT_TRUE(map.find(name) == map.end());
- map.insert_or_assign(name, Param(std::move(value_in), is_mutable_in));
+ map.insert_or_assign(name, Param(std::move(value), false));
return *this;
}
ParamRepo &
-EvalFixture::ParamRepo::add_vector(const char *d1, size_t s1, gen_fun_t gen)
-{
- return add_dense({{d1, s1}}, gen);
-}
-
-ParamRepo &
-EvalFixture::ParamRepo::add_matrix(const char *d1, size_t s1, const char *d2, size_t s2, gen_fun_t gen)
+EvalFixture::ParamRepo::add_mutable(const vespalib::string &name, TensorSpec value)
{
- return add_dense({{d1, s1}, {d2, s2}}, gen);
-}
-
-ParamRepo &
-EvalFixture::ParamRepo::add_cube(const char *d1, size_t s1, const char *d2, size_t s2, const char *d3, size_t s3, gen_fun_t gen)
-{
- return add_dense({{d1, s1}, {d2, s2}, {d3, s3}}, gen);
-}
-
-ParamRepo &
-EvalFixture::ParamRepo::add_dense(const std::vector<std::pair<vespalib::string, size_t> > &dims, gen_fun_t gen)
-{
- vespalib::string prev;
- vespalib::string name;
- vespalib::string type;
- for (const auto &dim: dims) {
- if (!prev.empty()) {
- ASSERT_LESS(prev, dim.first);
- type += ",";
- }
- name += fmt("%s%zu", dim.first.c_str(), dim.second);
- type += fmt("%s[%zu]", dim.first.c_str(), dim.second);
- prev = dim.first;
- }
- int cpy = 1;
- vespalib::string suffix = "";
- while (map.find(name + suffix) != map.end()) {
- suffix = fmt("$%d", ++cpy);
- }
- add(name + suffix, make_dense(fmt("tensor(%s)", type.c_str()), dims, gen));
- add(name + "f" + suffix, make_dense(fmt("tensor<float>(%s)", type.c_str()), dims, gen));
- add_mutable("@" + name + suffix, make_dense(fmt("tensor(%s)", type.c_str()), dims, gen));
- add_mutable("@" + name + "f" + suffix, make_dense(fmt("tensor<float>(%s)", type.c_str()), dims, gen));
+ ASSERT_TRUE(map.find(name) == map.end());
+ map.insert_or_assign(name, Param(std::move(value), true));
return *this;
}
@@ -192,12 +131,12 @@ EvalFixture::ParamRepo::add_variants(const vespalib::string &name_base,
auto name_f = name_base + "_f";
auto name_m = "@" + name_base;
auto name_m_f = "@" + name_base + "_f";
- auto dbl_ts = spec.cpy().cells_double().gen();
- auto flt_ts = spec.cpy().cells_float().gen();
- add(name_base, dbl_ts);
- add(name_f, flt_ts);
- add_mutable(name_m, dbl_ts);
- add_mutable(name_m_f, flt_ts);
+ auto dbl_gs = spec.cpy().cells_double();
+ auto flt_gs = spec.cpy().cells_float();
+ add(name_base, dbl_gs);
+ add(name_f, flt_gs);
+ add_mutable(name_m, dbl_gs);
+ add_mutable(name_m_f, flt_gs);
return *this;
}
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.h b/eval/src/vespa/eval/eval/test/eval_fixture.h
index 44adaca3298..71198a160a9 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.h
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.h
@@ -30,21 +30,12 @@ public:
using gen_fun_t = std::function<double(size_t)>;
static double gen_N(size_t seq) { return (seq + 1); }
ParamRepo() : map() {}
- ParamRepo &add(const vespalib::string &name, TensorSpec value_in, bool is_mutable_in);
- ParamRepo &add(const vespalib::string &name, const TensorSpec &value) {
- return add(name, value, false);
- }
- ParamRepo &add_mutable(const vespalib::string &name, const TensorSpec &value) {
- return add(name, value, true);
- }
- ParamRepo &add_vector(const char *d1, size_t s1, gen_fun_t = gen_N);
- ParamRepo &add_matrix(const char *d1, size_t s1, const char *d2, size_t s2, gen_fun_t gen = gen_N);
- ParamRepo &add_cube(const char *d1, size_t s1, const char *d2, size_t s2, const char *d3, size_t s3, gen_fun_t gen = gen_N);
- ParamRepo &add_dense(const std::vector<std::pair<vespalib::string, size_t> > &dims, gen_fun_t gen = gen_N);
+
+ ParamRepo &add(const vespalib::string &name, TensorSpec value);
+ ParamRepo &add_mutable(const vespalib::string &name, TensorSpec spec);
// produce 4 variants: float/double * mutable/const
- ParamRepo &add_variants(const vespalib::string &name_base,
- const GenSpec &spec);
+ ParamRepo &add_variants(const vespalib::string &name_base, const GenSpec &spec);
~ParamRepo() {}
};
diff --git a/eval/src/vespa/eval/eval/test/gen_spec.h b/eval/src/vespa/eval/eval/test/gen_spec.h
index 280f6c1d8db..b3a3916967b 100644
--- a/eval/src/vespa/eval/eval/test/gen_spec.h
+++ b/eval/src/vespa/eval/eval/test/gen_spec.h
@@ -128,10 +128,9 @@ public:
_seq = seq_in;
return *this;
}
- // TODO: stop using and remove
- GenSpec &seq_bias(double bias) { return seq(N(bias)); }
ValueType type() const;
TensorSpec gen() const;
+ operator TensorSpec() const { return gen(); }
};
} // namespace
diff --git a/eval/src/vespa/eval/eval/test/tensor_model.cpp b/eval/src/vespa/eval/eval/test/tensor_model.cpp
index 3d30a7a6734..b7ad4d0071f 100644
--- a/eval/src/vespa/eval/eval/test/tensor_model.cpp
+++ b/eval/src/vespa/eval/eval/test/tensor_model.cpp
@@ -26,13 +26,13 @@ vespalib::string infer_type(const Layout &layout) {
}
TensorSpec spec(const Layout &layout, const Sequence &seq) {
- return GenSpec(layout.domains).cells(layout.cell_type).seq(seq).gen();
+ return GenSpec(layout.domains).cells(layout.cell_type).seq(seq);
}
TensorSpec spec(const Domain &domain, const Sequence &seq) {
return spec(Layout({domain}), seq);
}
TensorSpec spec(double value) {
- return GenSpec(value).gen();
+ return GenSpec(value);
}
TensorSpec spec(const vespalib::string &type,