466c1911ab
* CPU: Add support for FLOOR,CEIL,ROUND and TRUNC unary operators - Added the operators to unary op enum - Implemented API functions - Implemented forward and unary-op logic in CPU backend - Updated ggml_get_n_tasks - Updated operators names array and static_assert - Updated docs and enabled automatic tests * docs: add documentation for ggml_trunc and ggml_trunc_inplace in ggml.h * chore: remove trailing whitespace from ggml.h * Remove unresolved merge markers * Apply review suggestions: cleanup formatting, enum order and leftover artifacts * Regenerate ops.md using create_ops_docs.py
9.6 KiB
9.6 KiB
GGML Operations
List of GGML operations and backend support status.
How to add a backend to this table:
- Run
test-backend-ops support --output csvwith your backend name and redirect output to a csv file indocs/ops/(e.g.,docs/ops/CUDA.csv) - Regenerate
/docs/ops.mdvia./scripts/create_ops_docs.py
Legend:
- ✅ Fully supported by this backend
- 🟡 Partially supported by this backend
- ⌠Not supported by this backend
| Operation | BLAS | CANN | CPU | CUDA | Metal | OpenCL | SYCL | Vulkan | zDNN |
|---|---|---|---|---|---|---|---|---|---|
| ABS | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| ACC | ⌠| ✅ | ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| ADD | ⌠| ✅ | ✅ | ✅ | 🟡 | 🟡 | ✅ | ✅ | ⌠|
| ADD1 | ⌠| ✅ | ✅ | ✅ | ⌠| ⌠| ✅ | ⌠| ⌠|
| ADD_ID | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| ARANGE | ⌠| ✅ | ✅ | ✅ | ✅ | ⌠| ⌠| ⌠| ⌠|
| ARGMAX | ⌠| ✅ | ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| ARGSORT | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| CEIL | ⌠| ⌠| ✅ | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| CLAMP | ⌠| ✅ | ✅ | ✅ | 🟡 | 🟡 | ✅ | 🟡 | ⌠|
| CONCAT | ⌠| ✅ | ✅ | 🟡 | ✅ | 🟡 | 🟡 | ✅ | ⌠|
| CONT | ⌠| 🟡 | ✅ | ✅ | ✅ | 🟡 | 🟡 | 🟡 | ⌠|
| 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 | ⌠| 🟡 | ✅ | 🟡 | 🟡 | ⌠| ⌠| 🟡 | ⌠|
| FLOOR | ⌠| ⌠| ✅ | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| GATED_LINEAR_ATTN | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ✅ | ⌠| ⌠|
| GEGLU | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| GEGLU_ERF | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| GEGLU_QUICK | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| GELU | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| GELU_ERF | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| GELU_QUICK | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| GET_ROWS | ⌠| 🟡 | ✅ | 🟡 | ✅ | 🟡 | 🟡 | 🟡 | ⌠|
| GET_ROWS_BACK | ⌠| ⌠| 🟡 | 🟡 | ⌠| ⌠| ⌠| ⌠| ⌠|
| GROUP_NORM | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| GROUP_NORM_MUL_ADD | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ✅ | ⌠| ⌠|
| HARDSIGMOID | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| HARDSWISH | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| IM2COL | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | ✅ | ⌠|
| IM2COL_3D | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| L2_NORM | ⌠| ⌠| ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| LEAKY_RELU | ⌠| ✅ | ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| LOG | ⌠| ✅ | ✅ | ✅ | ⌠| ⌠| ✅ | ⌠| ⌠|
| MEAN | ⌠| ✅ | ✅ | ✅ | ✅ | ⌠| ⌠| ⌠| ⌠|
| MUL | ⌠| ✅ | ✅ | ✅ | 🟡 | 🟡 | ✅ | ✅ | ⌠|
| MUL_MAT | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ��Ÿ¡ |
| MUL_MAT_ID | ⌠| 🟡 | ✅ | ✅ | ✅ | 🟡 | 🟡 | ✅ | ⌠|
| NEG | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| NORM | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| NORM_MUL_ADD | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ✅ | ⌠| ⌠|
| OPT_STEP_ADAMW | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ⌠| ✅ | ⌠|
| OPT_STEP_SGD | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| OUT_PROD | 🟡 | ⌠| 🟡 | 🟡 | ⌠| ⌠| 🟡 | ⌠| ⌠|
| PAD | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | 🟡 | ✅ | ⌠|
| PAD_REFLECT_1D | ⌠| ✅ | ✅ | ⌠| ✅ | ⌠| ⌠| ⌠| ⌠|
| POOL_2D | ⌠| 🟡 | ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| REGLU | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| RELU | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| REPEAT | ⌠| ✅ | ✅ | 🟡 | ✅ | 🟡 | ✅ | 🟡 | ⌠|
| REPEAT_BACK | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ⌠| ✅ | ⌠|
| RMS_NORM | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | ✅ | ⌠|
| RMS_NORM_BACK | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ⌠| ✅ | ⌠|
| RMS_NORM_MUL_ADD | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| ROLL | ⌠| ⌠| ✅ | ⌠| ⌠| ⌠| ⌠| ✅ | ⌠|
| ROPE | ⌠| 🟡 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| ROPE_BACK | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ⌠| ✅ | ⌠|
| ROUND | ⌠| ⌠| ✅ | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| RWKV_WKV6 | ⌠| ⌠| ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| RWKV_WKV7 | ⌠| ⌠| ✅ | ✅ | ✅ | ⌠| ✅ | ✅ | ⌠|
| SCALE | ⌠| 🟡 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| SET | ⌠| ⌠| ✅ | ⌠| ✅ | ⌠| ⌠| ⌠| ⌠|
| SET_ROWS | ⌠| ⌠| 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| SGN | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| SIGMOID | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| SILU | ⌠| ✅ | ✅ | 🟡 | 🟡 | 🟡 | 🟡 | 🟡 | ⌠|
| SILU_BACK | ⌠| ⌠| ✅ | ✅ | ⌠| ⌠| ⌠| ✅ | ⌠|
| SIN | ⌠| ✅ | ✅ | ✅ | 🟡 | ⌠| ✅ | 🟡 | ⌠|
| SOFTCAP | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ✅ | ⌠| ⌠|
| SOFT_MAX | ⌠| 🟡 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| SOFT_MAX_BACK | ⌠| ⌠| 🟡 | 🟡 | ⌠| ⌠| 🟡 | ✅ | ⌠|
| SQR | ⌠| ✅ | ✅ | ✅ | 🟡 | ⌠| ✅ | 🟡 | ⌠|
| SQRT | ⌠| ✅ | ✅ | ✅ | 🟡 | ⌠| ✅ | ⌠| ⌠|
| SSM_CONV | ⌠| ⌠| ✅ | ✅ | ✅ | ⌠| ⌠| ⌠| ⌠|
| SSM_SCAN | ⌠| ⌠| ✅ | ✅ | ✅ | ⌠| ⌠| ⌠| ⌠|
| STEP | ⌠| ✅ | ✅ | 🟡 | 🟡 | ⌠| 🟡 | ⌠| ⌠|
| SUB | ⌠| ✅ | ✅ | ✅ | 🟡 | 🟡 | ✅ | ✅ | ⌠|
| SUM | ⌠| ✅ | ✅ | ✅ | ⌠| ⌠| ✅ | ✅ | ⌠|
| SUM_ROWS | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | 🟡 | ✅ | ⌠|
| SWIGLU | ⌠| ✅ | ✅ | ✅ | 🟡 | ✅ | ✅ | 🟡 | ⌠|
| SWIGLU_OAI | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| TANH | ⌠| ✅ | ✅ | 🟡 | 🟡 | ✅ | 🟡 | 🟡 | ⌠|
| TIMESTEP_EMBEDDING | ⌠| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⌠|
| TOPK_MOE | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ✅ | ⌠| ⌠|
| TRUNC | ⌠| ⌠| ✅ | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|
| UPSCALE | ⌠| 🟡 | ✅ | ✅ | 🟡 | ✅ | 🟡 | ✅ | ⌠|
| XIELU | ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠| ⌠|