From 00102800425e4b1e8338b1be9363c884631f122b Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Mon, 15 Apr 2024 22:51:42 +0300 Subject: [PATCH] metal : require contiguousness for float4 unary kernels (cont) --- ggml-metal.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ggml-metal.m b/ggml-metal.m index 63a7a4ef6..ae6ddeacd 100644 --- a/ggml-metal.m +++ b/ggml-metal.m @@ -1149,7 +1149,7 @@ static enum ggml_status ggml_metal_graph_compute( id pipeline = nil; - if (n % 4 == 0 && ggml_is_contiguous(src0)) { + if (n % 4 == 0) { n /= 4; pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_SCALE_4].pipeline; } else { @@ -1184,6 +1184,9 @@ static enum ggml_status ggml_metal_graph_compute( } break; case GGML_OP_UNARY: switch (ggml_get_unary_op(gf->nodes[i])) { + // we are not taking into account the strides, so for now require contiguous tensors + GGML_ASSERT(ggml_is_contiguous(src0)); + case GGML_UNARY_OP_TANH: { id pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_TANH].pipeline; @@ -1214,7 +1217,7 @@ static enum ggml_status ggml_metal_graph_compute( id pipeline = nil; - if (n % 4 == 0 && ggml_is_contiguous(src0)) { + if (n % 4 == 0) { pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_GELU_4].pipeline; n /= 4; } else { @@ -1233,7 +1236,7 @@ static enum ggml_status ggml_metal_graph_compute( id pipeline = nil; - if (n % 4 == 0 && ggml_is_contiguous(src0)) { + if (n % 4 == 0) { pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_GELU_QUICK_4].pipeline; n /= 4; } else { @@ -1252,7 +1255,7 @@ static enum ggml_status ggml_metal_graph_compute( id pipeline = nil; - if (n % 4 == 0 && ggml_is_contiguous(src0)) { + if (n % 4 == 0) { pipeline = ctx->kernels[GGML_METAL_KERNEL_TYPE_SILU_4].pipeline; n /= 4; } else {