我尝试在下面的代码中并行化for循环,但是我不确定应该在for循环之前添加哪种类型的OpenMP指令,是否需要先在私有或公共声明这些变量?
#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];
}
}
答案 0 :(得分:0)
正如您在循环外声明j
一样,它应该是私有的。如果您在第二个for
循环中声明它,那就没问题了。
其余部分可以共享(i
除外,因为它是您的并行循环索引),但不必共享,因为它只是大小和指针。