From fac404509cf3a015305e1e256ca284de036109d3 Mon Sep 17 00:00:00 2001 From: Kawrakow Date: Wed, 8 Apr 2026 12:04:38 +0200 Subject: [PATCH] Enable Hadamard tranform for head size of 512 (#1598) --- ggml/src/ggml-cuda.cu | 4 ++-- ggml/src/ggml-cuda/hadamard.cu | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ggml/src/ggml-cuda.cu b/ggml/src/ggml-cuda.cu index 3cba2628..4d1ebd5c 100644 --- a/ggml/src/ggml-cuda.cu +++ b/ggml/src/ggml-cuda.cu @@ -4616,8 +4616,8 @@ GGML_CALL static bool ggml_backend_cuda_supports_op(ggml_backend_t backend, cons case GGML_OP_ARGMAX: return true; case GGML_OP_HADAMARD: - return (op->op_params[0] == 64 || op->op_params[0] == 128 || op->op_params[0] == 256) && op->ne[0] % op->op_params[0] == 0 && - op->type == GGML_TYPE_F32 && op->src[0]->type == GGML_TYPE_F32; + return (op->op_params[0] == 64 || op->op_params[0] == 128 || op->op_params[0] == 256 || op->op_params[0] == 512) + && op->ne[0] % op->op_params[0] == 0 && op->type == GGML_TYPE_F32 && op->src[0]->type == GGML_TYPE_F32; case GGML_OP_DUP: case GGML_OP_REPEAT: case GGML_OP_CONCAT: diff --git a/ggml/src/ggml-cuda/hadamard.cu b/ggml/src/ggml-cuda/hadamard.cu index e999417f..e1d8dc13 100644 --- a/ggml/src/ggml-cuda/hadamard.cu +++ b/ggml/src/ggml-cuda/hadamard.cu @@ -50,6 +50,7 @@ static void hadamard_f32_cuda(int nh, const char * x, char * y, int ne0, int ne1 case 64: hadamard_f32< 64><<>>(x, y, ne0, nb01, nb02, nb03, nb1, nb2, nb3); break; case 128: hadamard_f32<128><<>>(x, y, ne0, nb01, nb02, nb03, nb1, nb2, nb3); break; case 256: hadamard_f32<256><<>>(x, y, ne0, nb01, nb02, nb03, nb1, nb2, nb3); break; + case 512: hadamard_f32<512><<>>(x, y, ne0, nb01, nb02, nb03, nb1, nb2, nb3); break; default: GGML_ABORT("Unsupported Hadamard block size"); } }