Как я могу распараллелить эту операцию Matrix times Vector, используя OpenMP? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь распараллелить цикл for в приведенном ниже коде, но я не уверен, какой тип директив OpenMP следует добавить перед циклом for, и нужно ли мне сначала объявлять эти переменные в private или public?

 #include <stdio.h>
 #include <time.h>
 #include <omp.h>

 void mxv_row(int m, int n, double *A, double *B, double *C)
 {
 int i, j;
 # pragma omp parallel private(?)shared (?)
 for (i=0; i<m; i++)
 # pragma omp for
 {
 A[i] = 0.0;
 for (j=0; j<n; j++)
 A[i] += B[i*n+j]*C[j];
 }
 }

1 Ответ

0 голосов
/ 27 октября 2018

Как вы объявили j вне цикла, он должен быть закрытым. Если вы объявите это во втором цикле for, тогда все в порядке.

Остальные могут быть общими (кроме i, так как это ваш индекс параллельного цикла), но не обязательно, так как это только размеры и указатели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...