Fortran DO循环使用openmp并行

使用do循环输出整数1-10,
use omp_lib 可以使用函数OMP_get_thread_num()查看线程号,从0开始
使用 !$OMP DO 可以将do循环拆分到不同线程

program main

    use omp_lib
    implicit none

    integer     :: ii

    write(*,*) "parallel"
    !$OMP PARALLEL
    Do ii=1,10
        write(*,*) ii,OMP_get_thread_num()
    end do
    !$OMP END PARALLEL

    write(*,*) " "
    write(*,*) "parallel do"

    !$OMP PARALLEL
    !$OMP DO
    Do ii=1,10
        write(*,*) ii,OMP_get_thread_num()
    end do
    !$OMP END DO
    !$OMP END PARALLEL

end program main

编译命令:

gfortran -fopenmp 1.f90

输出结果:

 parallel
           1           3
           1           0
           1           1
           1           2
           2           3
           2           0
           2           1
           2           2
           3           3
           3           0
           3           1
           3           2
           4           3
           4           0
           4           1
           4           2
           5           3
           5           0
           5           1
           5           2
           6           3
           6           0
           6           1
           6           2
           7           3
           7           0
           7           1
           7           2
           8           3
           8           0
           8           1
           8           2
           9           3
           9           0
           9           1
           9           2
          10           3
          10           0
          10           1
          10           2
  
 parallel do
           9           3
           7           2
           1           0
           4           1
          10           3
           8           2
           2           0
           5           1
           3           0
           6           1

猜你喜欢

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