我有如下使用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