考虑以下代码段
sum = 0;
for (i=0; i<n; i++)
sum = myfunc(a[i])+ sum;
使用OPENMP编写相应的并行代码段。
我这样做了,
sum = 0;
#pragma omp parallel for
for (i=0; i<n; i++)
sum = myfunc(a[i])+ sum;
我是并行计算的新手。你认为这是对的吗?
非常感谢你的帮助!
答案 0 :(得分:0)
sum变量将成为争用点,因为每次迭代都会触及它。由于您正在进行减少,因此您应该使用reduction子句让OpenMP知道您希望在所有线程中累积该变量:
sum = 0;
#pragma omp parallel for reduction(+ : sum)
for (i=0; i<n; i++)
sum = myfunc(a[i])+ sum;