目次

OpenMPについて

コンパイル方法

基本的なこと

progaram hoge
  !$ use omp_lib
  !$ use another_module
  implicit none
...
end program hoge

注意点

program hoge
  !$ use omp_lib
  !$OMP parallel default(none) private(j)
  !$ j=omp_get_num_threads()
  !$ write(*,*) j
  !$ j=omp_get_thread_num()
  !$ write(*,*) j
  !$ 
  !$OMP end parallel
end program hoge
program hoge
  !$ use omp_lib
  implicit none
  integer i,j,k
  !$OMP parallel default(none) private(j)
  !$OMP do
  do i=1,4
     !$ j=omp_get_thread_num()
     !$ write(*,*) i,j
  end do
  !$OMP end do
  !$OMP end parallel
end program hoge
program hoge
  !$ use omp_lib
  implicit none
  integer i,j,k
  k=-1
  !$OMP parallel default(none) private(i,j)&
  !$OMP & shared(k)
  !$ i=omp_get_thread_num()
  !$ j=omp_get_num_threads()
  !$ write(*,*) i,j,k
  !$OMP end parallel
end program hoge
!$OMP do 
 do i=1,n
   do j=1,m
     実行文
   end do
 end do
 !$OMP end do

threadprivate

moduleなどで、グローバル変数を定義している場合に、thread間ではその変数を共有しないで欲しいときに。

module common
  implicit none
  real(8) a,b,c
!$OMP threadprivate(a,b,c)
end module common
1) sharedとかprivateとかfirstprivateとか