正如标题所述,我想使用 OpenMP 并行化总和。我搜索了不同的方法,但我要么不明白他们做了什么,要么他们没有工作。这是我发现的:
1)
!$OMP PARALLEL WORKSHARE
P_pump_t = 0.5d0 * dcv / pi**2 * sum( k * p_pump_k * dk )
!$OMP END PARALLEL WORKSHARE
有效,但我不明白会发生什么以及我得到什么好处。
2)
!$OMP PARALLEL DO REDUCTION(+:P_pump_t)
do l = 1, n
P_pump_t = P_pump_t + 0.5d0 * dcv / pi**2 * k(l) * p_pump_k(l) * dk(l)
end do
!$OMP END PARALLEL DO
给出错误(不同于 1)或 3))结果。
3)当然,我可以计算一个新数组(并行化)并让这个数组最终总结出来......
关于如何做到最好的提示?