From: Georgi Gerganov Date: Thu, 3 Nov 2022 18:53:44 +0000 (+0200) Subject: ggml : multi-thread the ggml_add operator X-Git-Tag: upstream/1.7.4~1851 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=75171c2b79ec2543456ad672615d60839d3a93fa;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp ggml : multi-thread the ggml_add operator --- diff --git a/ggml.c b/ggml.c index a451a3e4..79b910bb 100644 --- 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: