Spaces:
Running
Running
ggml : multi-thread the ggml_add operator
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
| 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 =
|
| 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:
|