タイトルにあるように、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)もちろん、新しい配列(並列化)を計算して、これを最終的に合計することもできます...
それを最もよく行う方法のヒント?