OpenmMP 并行区域嵌套
Fortran OpenMP设计过程中,我们可能经常遇到这类需求:在并行区域内的不同地方需要调用一个函数,该函数定义在当前模块或者其它模块中,并且函数中包含并行块。Fortran OpenMP 是支持这种并行区域嵌套的,示例代码如下。
PROGRAM Main_Calibration
use omp_lib ! zhankunlin openmp parallel 2012-6-6
integer I_LOOP
integer i
CHARACTER(LEN=50) :: FMTT
CHARACTER(LEN=50) :: CHAR_NC_DYRSIM
character(len=3), PARAMETER :: FILE_END='EOF'
open(88,file='./run_log.txt', POSITION='APPEND', ACTION='WRITE')
!$omp parallel do
do I_LOOP = 1, 100
call parameter_input
end do
!$omp end parallel do
end program Main_Calibration
subroutine parameter_input
!$omp critical (calibration_phy_biochm_readfile_1)
write(88,'(a,2x,i3,a)') "[ LOOP ", I_LOOP, " skip]"
*************
!$omp end critical (calibration_phy_biochm_readfile_1)
end subroutine parameter_input