| 9205 | } |
| 9206 | |
| 9207 | static void show_test_coverage() { |
| 9208 | std::set<std::string> all_ops; |
| 9209 | for (int i = 1; i < GGML_OP_COUNT; i++) { |
| 9210 | auto op = (enum ggml_op)i; |
| 9211 | if (op == GGML_OP_VIEW || |
| 9212 | op == GGML_OP_RESHAPE || |
| 9213 | op == GGML_OP_PERMUTE || |
| 9214 | op == GGML_OP_TRANSPOSE || |
| 9215 | op == GGML_OP_CONT || |
| 9216 | op == GGML_OP_GLU || |
| 9217 | op == GGML_OP_UNARY) { |
| 9218 | continue; |
| 9219 | } |
| 9220 | all_ops.insert(ggml_op_name(op)); |
| 9221 | } |
| 9222 | for (int i = 0; i < GGML_UNARY_OP_COUNT; i++) { |
| 9223 | all_ops.insert(ggml_unary_op_name((enum ggml_unary_op)i)); |
| 9224 | } |
| 9225 | for (int i = 0; i < GGML_GLU_OP_COUNT; i++) { |
| 9226 | all_ops.insert(ggml_glu_op_name((enum ggml_glu_op)i)); |
| 9227 | } |
| 9228 | auto test_cases = make_test_cases_eval(); |
| 9229 | // Filter out fusion cases |
| 9230 | test_cases.erase( |
| 9231 | std::remove_if(test_cases.begin(), test_cases.end(), [](const std::unique_ptr<test_case> & tc) { |
| 9232 | return tc->run_whole_graph(); |
| 9233 | }), |
| 9234 | test_cases.end() |
| 9235 | ); |
| 9236 | |
| 9237 | std::set<std::string> tested_ops; |
| 9238 | |
| 9239 | ggml_init_params params = { |
| 9240 | /* .mem_size = */ ggml_tensor_overhead()*128 + ggml_graph_overhead(), |
| 9241 | /* .mem_base = */ NULL, |
| 9242 | /* .no_alloc = */ true, |
| 9243 | }; |
| 9244 | |
| 9245 | for (auto & test_case : test_cases) { |
| 9246 | ggml_context * ctx = ggml_init(params); |
| 9247 | if (ctx) { |
| 9248 | test_case->mode = MODE_TEST; |
| 9249 | ggml_tensor * out = test_case->build_graph(ctx); |
| 9250 | if (out && out->op != GGML_OP_NONE) { |
| 9251 | if (out->op == GGML_OP_UNARY) { |
| 9252 | tested_ops.insert(ggml_unary_op_name(ggml_get_unary_op(out))); |
| 9253 | } else if (out->op == GGML_OP_GLU) { |
| 9254 | tested_ops.insert(ggml_glu_op_name(ggml_get_glu_op(out))); |
| 9255 | } else { |
| 9256 | tested_ops.insert(ggml_op_name(out->op)); |
| 9257 | } |
| 9258 | } |
| 9259 | ggml_free(ctx); |
| 9260 | } |
| 9261 | } |
| 9262 | std::set<std::string> covered_ops; |
| 9263 | std::set<std::string> uncovered_ops; |
| 9264 | for (const auto & op : all_ops) { |
no test coverage detected