Fortran でこのシーケンシャル コードを使用しています。私の問題は、Openmp ディレクティブを配置すると、並列化されたコードが順次コードよりも遅くなり、エラーが表示されないことです。
REAL, DIMENSION(:), ALLOCATABLE :: current, next
ALLOCATE ( current(TOTAL_Z), next(TOTAL_Z))
CALL CPU_TIME(t1)
!$OMP PARALLEL SHARED (current, next) PRIVATE (z)
DO t = 1, TOTAL_TIME
!$OMP DO SCHEDULE(STATIC, 2)
DO z = 2, (TOTAL_Z - 1)
next(z) = current (z) + KAPPA*DELTA_T*((current(z - 1) - 2.0*current(z) + current(z + 1)) / DELTA_Z**2)
END DO
!$OMP END DO
current = next
END DO
CALL CPU_TIME(t2)
!$OMP END PARALLEL
TOTAL_Z、TOTAL_TIME、KAPPA、DELTA_T、DELTA_Z は定数です。
並列コードを実行すると、htop に表示され、2 つのコアが 100% で動作してい
ます。シーケンシャル コードでは、CPU_TIME は 79 セグメントで、並列コードでは 132 セグメントです
ありがとう