From cf26680d3cd41885995d80427dc268cd19febfaf Mon Sep 17 00:00:00 2001 From: notV3NOM <123deeznuts456789@gmail.com> Date: Sun, 2 Nov 2025 17:58:32 +0530 Subject: [PATCH 1/4] tests: fix segfault in moe-expert-reduce test in support mode and --show-coverage --- tests/test-backend-ops.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test-backend-ops.cpp b/tests/test-backend-ops.cpp index 04fa1b62d3b4d..d01b03f057b3a 100644 --- a/tests/test-backend-ops.cpp +++ b/tests/test-backend-ops.cpp @@ -4844,7 +4844,9 @@ struct test_moe_expert_reduce : public test_case { std::string name = "expert_view_" + std::to_string(i); ggml_set_name(expert_views[i], name.c_str()); - ggml_build_forward_expand(gf, expert_views[i]); + if (gf) { + ggml_build_forward_expand(gf, expert_views[i]); + } } ggml_tensor * moe_out = expert_views[0]; From e78ca2e978564a838fda87aedc204e4c2373b027 Mon Sep 17 00:00:00 2001 From: notV3NOM <123deeznuts456789@gmail.com> Date: Sun, 2 Nov 2025 19:52:08 +0530 Subject: [PATCH 2/4] tests: init gf and filter out fusion tests for support mode --- tests/test-backend-ops.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/test-backend-ops.cpp b/tests/test-backend-ops.cpp index d01b03f057b3a..4ac356d9be56b 100644 --- a/tests/test-backend-ops.cpp +++ b/tests/test-backend-ops.cpp @@ -1454,6 +1454,8 @@ struct test_case { ggml_context_ptr ctx(ggml_init(params)); // smart ptr GGML_ASSERT(ctx); + gf = ggml_new_graph_custom(ctx.get(), graph_nodes, false); + ggml_tensor * out = build_graph(ctx.get()); current_op_name = op_desc(out); @@ -1461,6 +1463,11 @@ struct test_case { return true; } + // Filter out fusion tests in support mode + if (run_whole_graph()) { + return true; + } + bool supported = ggml_backend_supports_op(backend, out); std::string device_desc = ggml_backend_dev_description(ggml_backend_get_device(backend)); From c3cb20ba65153c87faa427db4d8fa8e92225a7d8 Mon Sep 17 00:00:00 2001 From: notV3NOM <123deeznuts456789@gmail.com> Date: Sun, 2 Nov 2025 21:02:34 +0530 Subject: [PATCH 3/4] tests: filter out fusion cases before calling eval_support --- tests/test-backend-ops.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/test-backend-ops.cpp b/tests/test-backend-ops.cpp index 4ac356d9be56b..4179ea7dd9535 100644 --- a/tests/test-backend-ops.cpp +++ b/tests/test-backend-ops.cpp @@ -1463,11 +1463,6 @@ struct test_case { return true; } - // Filter out fusion tests in support mode - if (run_whole_graph()) { - return true; - } - bool supported = ggml_backend_supports_op(backend, out); std::string device_desc = ggml_backend_dev_description(ggml_backend_get_device(backend)); @@ -7578,6 +7573,15 @@ static bool test_backend(ggml_backend_t backend, test_mode mode, const char * op if (mode == MODE_SUPPORT) { auto test_cases = make_test_cases_eval(); filter_test_cases(test_cases, params_filter); + + // Filter out fusion cases + test_cases.erase( + std::remove_if(test_cases.begin(), test_cases.end(), [](const std::unique_ptr& tc) { + return tc->run_whole_graph(); + }), + test_cases.end() + ); + for (auto & test : test_cases) { test->eval_support(backend, op_names_filter, output_printer); } From 2eeb1c12d1f77d4e1b05d6e72213fa7650896102 Mon Sep 17 00:00:00 2001 From: notV3NOM <123deeznuts456789@gmail.com> Date: Sun, 2 Nov 2025 22:13:27 +0530 Subject: [PATCH 4/4] tests: filter out fusion cases from show_test_coverage as well, fix lint --- tests/test-backend-ops.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/test-backend-ops.cpp b/tests/test-backend-ops.cpp index 4179ea7dd9535..5870658079997 100644 --- a/tests/test-backend-ops.cpp +++ b/tests/test-backend-ops.cpp @@ -4846,9 +4846,7 @@ struct test_moe_expert_reduce : public test_case { std::string name = "expert_view_" + std::to_string(i); ggml_set_name(expert_views[i], name.c_str()); - if (gf) { - ggml_build_forward_expand(gf, expert_views[i]); - } + ggml_build_forward_expand(gf, expert_views[i]); } ggml_tensor * moe_out = expert_views[0]; @@ -7576,7 +7574,7 @@ static bool test_backend(ggml_backend_t backend, test_mode mode, const char * op // Filter out fusion cases test_cases.erase( - std::remove_if(test_cases.begin(), test_cases.end(), [](const std::unique_ptr& tc) { + std::remove_if(test_cases.begin(), test_cases.end(), [](const std::unique_ptr & tc) { return tc->run_whole_graph(); }), test_cases.end() @@ -7632,6 +7630,14 @@ static void show_test_coverage() { all_ops.insert(ggml_glu_op_name((enum ggml_glu_op)i)); } auto test_cases = make_test_cases_eval(); + // Filter out fusion cases + test_cases.erase( + std::remove_if(test_cases.begin(), test_cases.end(), [](const std::unique_ptr & tc) { + return tc->run_whole_graph(); + }), + test_cases.end() + ); + std::set tested_ops; ggml_init_params params = {