使用 !$OMP SECTIONS 来分配不同到线程执行不同的任务
代码如下:
program main
use omp_lib
implicit none
integer :: ii,jj,kk
!$OMP PARALLEL
!$OMP SECTIONS
!$OMP SECTION
do ii=1,10
write(*,*) 'ii=',ii,OMP_get_thread_num()
end do
!$OMP SECTION
do jj=1,10
write(*,*) 'jj=',jj,OMP_get_thread_num()
end do
!$OMP SECTION
do kk=1,10
write(*,*) 'kk=',kk,OMP_get_thread_num()
end do
!$OMP END SECTIONS
!$OMP END PARALLEL
end program main
结果:
jj= 1 2
ii= 1 1
kk= 1 0
jj= 2 2
ii= 2 1
kk= 2 0
jj= 3 2
ii= 3 1
kk= 3 0
jj= 4 2
ii= 4 1
kk= 4 0
jj= 5 2
ii= 5 1
kk= 5 0
jj= 6 2
ii= 6 1
kk= 6 0
jj= 7 2
ii= 7 1
kk= 7 0
jj= 8 2
ii= 8 1
kk= 8 0
jj= 9 2
ii= 9 1
kk= 9 0
jj= 10 2
ii= 10 1
kk= 10 0