* tests : filter out no-ops from coverage report
This commit is a follow-up commit for #15745 to address the feedback on
how no-op operations should be filtered out from the coverage report.
The feedback regarding the UNARY and GLU sub-operations not being
handled I not exactly sure what should be done. They are included in the
coverage, for example ABS, ELU, EXP, GELU, GEGLU, GEGLU_ERF etc are in
the list of covered operations:
```console
$ ./build/bin/test-backend-ops --show-coverage
Operations covered by tests (89):
✓ ABS
✓ ACC
✓ ADD
✓ ADD1
✓ ADD_ID
✓ ARANGE
✓ ARGMAX
✓ ARGSORT
✓ CLAMP
✓ CONCAT
✓ CONV_2D
✓ CONV_2D_DW
✓ CONV_3D
✓ CONV_TRANSPOSE_1D
✓ CONV_TRANSPOSE_2D
✓ COS
✓ COUNT_EQUAL
✓ CPY
✓ CROSS_ENTROPY_LOSS
✓ CROSS_ENTROPY_LOSS_BACK
✓ DIAG_MASK_INF
✓ DIV
✓ DUP
✓ ELU
✓ EXP
✓ FLASH_ATTN_EXT
✓ GATED_LINEAR_ATTN
✓ GEGLU
✓ GEGLU_ERF
✓ GEGLU_QUICK
✓ GELU
✓ GELU_ERF
✓ GELU_QUICK
✓ GET_ROWS
✓ GET_ROWS_BACK
✓ GROUP_NORM
✓ HARDSIGMOID
✓ HARDSWISH
✓ IM2COL
✓ IM2COL_3D
✓ L2_NORM
✓ LEAKY_RELU
✓ LOG
✓ MEAN
✓ MUL
✓ MUL_MAT
✓ MUL_MAT_ID
✓ NEG
✓ NORM
✓ OPT_STEP_ADAMW
✓ OPT_STEP_SGD
✓ OUT_PROD
✓ PAD
✓ PAD_REFLECT_1D
✓ POOL_2D
✓ REGLU
✓ RELU
✓ REPEAT
✓ REPEAT_BACK
✓ RMS_NORM
✓ RMS_NORM_BACK
✓ ROLL
✓ ROPE
✓ ROPE_BACK
✓ RWKV_WKV6
✓ RWKV_WKV7
✓ SCALE
✓ SET
✓ SET_ROWS
✓ SGN
✓ SIGMOID
✓ SILU
✓ SILU_BACK
✓ SIN
✓ SOFT_MAX
✓ SOFT_MAX_BACK
✓ SQR
✓ SQRT
✓ SSM_CONV
✓ SSM_SCAN
✓ STEP
✓ SUB
✓ SUM
✓ SUM_ROWS
✓ SWIGLU
✓ SWIGLU_OAI
✓ TANH
✓ TIMESTEP_EMBEDDING
✓ UPSCALE
Operations without tests (14):
✗ ADD_REL_POS
✗ CUSTOM
✗ DIAG
✗ DIAG_MASK_ZERO
✗ FLASH_ATTN_BACK
✗ GET_REL_POS
✗ IM2COL_BACK
✗ MAP_CUSTOM1
✗ MAP_CUSTOM2
✗ MAP_CUSTOM3
✗ POOL_1D
✗ POOL_2D_BACK
✗ WIN_PART
✗ WIN_UNPART
Coverage Summary:
Total operations: 103
Tested operations: 89
Untested operations: 14
Coverage: 86.4%
```
Refs: https://github.com/ggml-org/llama.cpp/pull/15745
* use of ggml_op enum values instead of strcmp
static void show_test_coverage() {
std::set<std::string> all_ops;
for (int i = 1; i < GGML_OP_COUNT; i++) {
- all_ops.insert(ggml_op_name((enum ggml_op)i));
+ auto op = (enum ggml_op)i;
+ if (op == GGML_OP_VIEW ||
+ op == GGML_OP_RESHAPE ||
+ op == GGML_OP_PERMUTE ||
+ op == GGML_OP_TRANSPOSE ||
+ op == GGML_OP_CONT ||
+ op == GGML_OP_GLU ||
+ op == GGML_OP_UNARY) {
+ continue;
+ }
+ all_ops.insert(ggml_op_name(op));
}
for (int i = 0; i < GGML_UNARY_OP_COUNT; i++) {
all_ops.insert(ggml_unary_op_name((enum ggml_unary_op)i));