Fortran openmp section并行计算

使用 !$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

猜你喜欢

转载自blog.csdn.net/weixin_43880667/article/details/86192913