42 std::string mlgo_str = R
"_(
50 0, g76 , 8, f32, best-performance, static, gemm-type, [m,n,k,n]
52 1, g71 , 8, f16, best-performance, static, gemm-config-reshaped-only-rhs, [m,n,k,n]
53 2, g76 , 8, f16, best-performance, static, gemm-config-reshaped, [m,n,k,n]
56 b , 0, var, m, ==, num, 10., 1, 2
57 l , 1, gemm-type, reshaped
58 b , 2, var, r_mn, >=, num, 2., 3, 6
60 b , 3, var, n, >=, num, 200., 4, 5
61 l, 4, gemm-type, reshaped-only-rhs
62 l , 5, gemm-type, reshaped
63 l , 6, gemm-type, reshaped-only-rhs
66 b ,0,var, n, >, num, 100., 1, 4
67 b ,1,var, r_mnk, <=, num, 20., 2, 3
70 l ,2,gemm-config-reshaped-only-rhs, [4, 4,4,2,1,0,1]
71 l ,3,gemm-config-reshaped-only-rhs,[ 2, 2,4,2,1,1, 1 ]
72 b ,4,var, n, >=, num, 199.12, 5, 6
73 l ,5,gemm-config-reshaped-only-rhs, [1, 4,3,4,0,0,0]
74 l ,6,gemm-config-reshaped-only-rhs, [5, 4,4,5,1,1,0]
78 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
83 std::stringstream ss(mlgo_str);
92 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped_only_rhs(
Query{
"g71", DataType::F16, 100, 1024, 20, 32 }).second ==
GEMMConfigReshapedOnlyRHS{ 4, 4, 4, 2, true, false, true }),
93 framework::LogLevel::ERRORS);
94 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped_only_rhs(
Query{
"g71", DataType::F16, 100, 1024, 20, 32 }).second ==
GEMMConfigReshapedOnlyRHS{ 4, 4, 4, 2, true, false, true }),
95 framework::LogLevel::ERRORS);
96 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped_only_rhs(
Query{
"g71", DataType::F16, 128, 101, 20, 1 }).second ==
GEMMConfigReshapedOnlyRHS{ 2, 2, 4, 2, true, true, true }),
97 framework::LogLevel::ERRORS);
98 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped_only_rhs(
Query{
"g71", DataType::F16, 400, 100, 512, 1 }).second ==
GEMMConfigReshapedOnlyRHS{ 5, 4, 4, 5, true, true, false }),
99 framework::LogLevel::ERRORS);
100 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped_only_rhs(
Query{
"g71", DataType::F16, 400, 100, 512, 1 }).second ==
GEMMConfigReshapedOnlyRHS{ 5, 4, 4, 5, true, true, false }),
101 framework::LogLevel::ERRORS);
103 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped(
Query{
"g76", DataType::F16, 100, 100, 20, 32 }).second ==
GEMMConfigReshaped{ 4, 2, 4, 2, 8, true, false, true, false }),
104 framework::LogLevel::ERRORS);
105 ARM_COMPUTE_EXPECT((
heuristics.
query_gemm_config_reshaped(
Query{
"g76", DataType::F16, 128, 512, 1024, 1 }).second ==
GEMMConfigReshaped{ 4, 2, 4, 2, 8, true, false, true, false }),
106 framework::LogLevel::ERRORS);
109 TEST_CASE(InvalidDotmlgoSyntaxShouldReturnInvalidStatus, framework::DatasetMode::ALL)
111 std::string mlgo_str = R
"_(
113 gemm-version, [1,2,1]
117 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
121 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
124 std::stringstream ss(mlgo_str);
129 TEST_SUITE(InvalidDotmlgoSemanticsShouldReturnInvalidStatus)
146 std::string mlgo_str = R
"_(
148 gemm-version, [1,2,1]
153 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
157 std::stringstream ss(mlgo_str);
165 std::string mlgo_str = R
"_(
167 gemm-version, [1,2,1]
173 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
176 std::stringstream ss(mlgo_str);
183 std::string mlgo_str = R
"_(
185 gemm-version, [1,2,1]
189 0, g76 , 8, f32, best-performance, static, gemm-type, [m,n,k,n]
192 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
195 std::stringstream ss(mlgo_str);
201 TEST_CASE(RepeatedHeuristicsTableEntriesId, framework::DatasetMode::ALL)
203 std::string mlgo_str = R"_(
205 gemm-version, [1,2,1]
209 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
210 0, g71 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
213 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
216 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
219 std::stringstream ss(mlgo_str);
224 TEST_CASE(RepeatedHeuristicsTableEntriesIndex, framework::DatasetMode::ALL)
226 std::string mlgo_str = R"_(
228 gemm-version, [1,2,1]
232 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
233 1, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
236 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
239 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
242 std::stringstream ss(mlgo_str);
247 TEST_CASE(RepeatedHeuristicTreesId, framework::DatasetMode::ALL)
249 std::string mlgo_str = R"_(
251 gemm-version, [1,2,1]
255 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
256 1, g71 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
259 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
262 l ,0,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
265 std::stringstream ss(mlgo_str);
271 std::string mlgo_str = R"_(
273 gemm-version, [1,2,1]
277 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
282 std::stringstream ss(mlgo_str);
287 TEST_CASE(InvalidTreeMissingRoot, framework::DatasetMode::ALL)
289 std::string mlgo_str = R"_(
291 gemm-version, [1,2,1]
295 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
298 b ,2, var, m, ==, num, 10., 3, 4
299 l ,3,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
300 l ,4,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
303 std::stringstream ss(mlgo_str);
307 TEST_CASE(InvalidTreeMissingNodes, framework::DatasetMode::ALL)
309 std::string mlgo_str = R"_(
311 gemm-version, [1,2,1]
315 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
318 b ,0, var, m, ==, num, 10., 1, 2
319 l ,1,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
322 std::stringstream ss(mlgo_str);
326 TEST_CASE(InvalidTreeRepeatedNodeIds, framework::DatasetMode::ALL)
328 std::string mlgo_str = R"_(
330 gemm-version, [1,2,1]
334 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
337 b ,0, var, m, ==, num, 10., 1, 2
338 l ,1,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
339 l ,1,gemm-config-reshaped,[1,2,4,2,8,1,0,1,0]
340 l ,2,gemm-config-reshaped,[2,2,4,2,8,1,0,1,0]
343 std::stringstream ss(mlgo_str);
347 TEST_CASE(InvalidTreeDisjointNodes, framework::DatasetMode::ALL)
349 std::string mlgo_str = R"_(
351 gemm-version, [1,2,1]
355 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
358 b ,0, var, m, ==, num, 10., 1, 2
359 l ,1,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
360 l ,2,gemm-config-reshaped,[2,2,4,2,8,1,0,1,0]
362 b ,4, var, n, ==, num, 10., 5, 6
363 l ,5,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
364 l ,6,gemm-config-reshaped,[2,2,4,2,8,1,0,1,0]
366 l ,7,gemm-config-reshaped,[2,2,4,2,8,1,0,1,0]
369 std::stringstream ss(mlgo_str);
375 std::string mlgo_str = R"_(
377 gemm-version, [1,2,1]
381 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
384 b ,0, var, m, ==, num, 10., 0, 1
385 l ,1,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
388 std::stringstream ss(mlgo_str);
392 TEST_CASE(InvalidTreeCycle, framework::DatasetMode::ALL)
394 std::string mlgo_str = R"_(
396 gemm-version, [1,2,1]
400 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
403 b ,0, var, m, ==, num, 10., 1, 5
404 b ,1, var, n, ==, num, 10., 2, 3
405 l ,2,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
406 b ,3, var, k, ==, num, 10., 0, 4
407 l ,4,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
408 l ,5,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
411 std::stringstream ss(mlgo_str);
415 TEST_CASE(InvalidTreeInvalidFeatures, framework::DatasetMode::ALL)
417 std::string mlgo_str = R"_(
419 gemm-version, [1,2,1]
423 0, g76 , 8, f32, best-performance, static, gemm-config-reshaped, [m,n,k,n]
426 b ,0, var, magic_feature, ==, num, 10., 1, 2
427 l ,1,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
428 l ,2,gemm-config-reshaped,[4,2,4,2,8,1,0,1,0]
431 std::stringstream ss(mlgo_str);
439 std::string mlgo_str = R
"_(
441 gemm-version, [1,2,1]
445 0, g76 , 8, f32, best-performance, static, gemm-type, [m,n,k,n]
448 b , 0, var, m, ==, num, 10., 1, 2
449 l , 1, gemm-type, reshaped
450 b , 2, var, r_mn, >=, num, 2., 3, 6
451 b , 3, var, n, >=, num, 200., 4, 5
452 l , 4, gemm-type, reshaped-only-rhs
453 l , 5, gemm-type, reshaped
454 l , 6, gemm-type, reshaped-only-rhs
457 std::stringstream ss(mlgo_str);