ggerganov commited on
Commit
c36d8ed
·
unverified ·
1 Parent(s): e670e4f

ggml : multi-thread the ggml_add operator

Browse files
Files changed (1) hide show
  1. ggml.c +5 -2
ggml.c CHANGED
@@ -3150,7 +3150,10 @@ void ggml_compute_forward_add_f32(
3150
  GGML_ASSERT(nb00 == sizeof(float));
3151
 
3152
  if (nb10 == sizeof(float)) {
3153
- for (int j = ith; j < n; j += nth) {
 
 
 
3154
  ggml_vec_add_f32(nc,
3155
  (float *) ((char *) dst->data + j*nb1),
3156
  (float *) ((char *) src0->data + j*nb01),
@@ -6857,7 +6860,7 @@ void ggml_graph_compute(struct ggml_context * ctx, struct ggml_cgraph * cgraph)
6857
  } break;
6858
  case GGML_OP_ADD:
6859
  {
6860
- node->n_tasks = 1;
6861
  } break;
6862
  case GGML_OP_SUB:
6863
  case GGML_OP_MUL:
 
3150
  GGML_ASSERT(nb00 == sizeof(float));
3151
 
3152
  if (nb10 == sizeof(float)) {
3153
+ const int j0 = (n/nth)*ith;
3154
+ const int j1 = ith == nth - 1 ? n : (n/nth)*(ith + 1);
3155
+
3156
+ for (int j = j0; j < j1; j++) {
3157
  ggml_vec_add_f32(nc,
3158
  (float *) ((char *) dst->data + j*nb1),
3159
  (float *) ((char *) src0->data + j*nb01),
 
6860
  } break;
6861
  case GGML_OP_ADD:
6862
  {
6863
+ node->n_tasks = n_threads;
6864
  } break;
6865
  case GGML_OP_SUB:
6866
  case GGML_OP_MUL: