使用 OPENMP 编写并行代码
Writing parallel code using OPENMP
考虑以下代码段
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;
我是并行计算的新手。你觉得对吗?
非常感谢您的帮助!
sum 变量将成为争论的焦点,因为每次迭代都会涉及到它。由于您正在进行缩减,因此您应该使用缩减子句让 OpenMP 知道您希望该变量在所有线程中累积:
sum = 0;
#pragma omp parallel for reduction(+ : sum)
for (i=0; i<n; i++)
sum = myfunc(a[i])+ sum;
考虑以下代码段
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;
我是并行计算的新手。你觉得对吗?
非常感谢您的帮助!
sum 变量将成为争论的焦点,因为每次迭代都会涉及到它。由于您正在进行缩减,因此您应该使用缩减子句让 OpenMP 知道您希望该变量在所有线程中累积:
sum = 0;
#pragma omp parallel for reduction(+ : sum)
for (i=0; i<n; i++)
sum = myfunc(a[i])+ sum;