]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
Fix too relaxed check on CUDA "fast copy" (can_be_transposed) condition (llama/17332)
authorPiotr Wilkin (ilintar) <redacted>
Wed, 19 Nov 2025 09:36:33 +0000 (10:36 +0100)
committerGeorgi Gerganov <redacted>
Fri, 12 Dec 2025 15:53:03 +0000 (17:53 +0200)
* Fix too relaxed check on CUDA "fast copy" (can_be_transposed) condition

* Argh.

* Making CISC happy ;)

* Integrate CONT tests

* Use loopy loop

* Skip new tests for (B)F16 for now.

ggml/src/ggml-cuda/cpy.cu

index 50612237c8a23b9dee2d71203832da384a54e065..c1afde9627f09b8b7680281439e8a21ddd8412a3 100644 (file)
@@ -384,7 +384,8 @@ void ggml_cuda_cpy(ggml_backend_cuda_context & ctx, const ggml_tensor * src0, gg
     char * src1_ddc = (char *) src1->data;
 
     const bool contiguous_srcs = ggml_is_contiguous(src0) && ggml_is_contiguous(src1);
-    const bool can_be_transposed = nb01 == (int64_t)ggml_element_size(src0) && src0->ne[3] == 1;
+    const bool can_be_transposed = nb01 == (int64_t)ggml_element_size(src0) &&
+        src0->ne[3] == 1 && nb02 == ne00 * ne01 * (int64_t)ggml_element_size(src0);
 
     if (src0->type == src1->type && contiguous_srcs) {
         GGML_ASSERT(ggml_nbytes(src0) == ggml_nbytes(src1));