]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
ggml : multi-thread the ggml_add operator
authorGeorgi Gerganov <redacted>
Thu, 3 Nov 2022 18:53:44 +0000 (20:53 +0200)
committerGeorgi Gerganov <redacted>
Thu, 3 Nov 2022 18:53:44 +0000 (20:53 +0200)
ggml.c

diff --git a/ggml.c b/ggml.c
index a451a3e4b8896aba8cfcbb0fd0c79031d0b803bb..79b910bbac66f815e6e8c7e0a0954396e99d228f 100644 (file)
--- a/ggml.c
+++ b/ggml.c
@@ -3150,7 +3150,10 @@ void ggml_compute_forward_add_f32(
     GGML_ASSERT(nb00 == sizeof(float));
 
     if (nb10 == sizeof(float)) {
-        for (int j = ith; j < n; j += nth) {
+        const int j0 = (n/nth)*ith;
+        const int j1 = ith == nth - 1 ? n : (n/nth)*(ith + 1);
+
+        for (int j = j0; j < j1; j++) {
             ggml_vec_add_f32(nc,
                     (float *) ((char *) dst->data  + j*nb1),
                     (float *) ((char *) src0->data + j*nb01),
@@ -6857,7 +6860,7 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph)
                     } break;
                 case GGML_OP_ADD:
                     {
-                        node->n_tasks = 1;
+                        node->n_tasks = n_threads;
                     } break;
                 case GGML_OP_SUB:
                 case GGML_OP_MUL: