我有如下使用OpenMP問題描述:編程問題使用OpenMP
我有這樣
subroutine ...
...
do i=1,N
....
end do
end subroutine ...
和OpenMP代碼的串行代碼是
subroutine ...
use omp_lib
...
call omp_set_num_threads(omp_get_num_procs())
!$omp parallel do
do i=1,N
....
end do
!$omp end parallel do
end subroutine ...
沒有問題與編譯,但是當我運行該程序時,有兩個主要問題與串行代碼的結果相比:
- 該程序的運行速度比串行代碼還要慢(假設在do循環中執行矩陣乘法(matmul))
- 與串行代碼相比,數字精度似乎有所下降(我對它進行了檢查)
任何想法可能會發生什麼?
謝謝,
小玉
[Fortran的並行程序設計(可能重複http://stackoverflow.com/questions/25465101/fortran-parallel-programming) – 2014-08-29 20:09:51
或者甚至更好:https://stackoverflow.com/questions/6878246/fortran-intrinsic-timing-routines-which-is-better-cpu-time-or-system-clock – 2014-08-29 20:11:10