この文書の現在のバージョンと選択したバージョンの差分を表示します。
Both sides previous revision Previous revision Next revision | Previous revision | ||
openmp [2009/05/11 12:18] 10.249.202.199 |
openmp [2011/02/21 15:58] (現在) saito |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== OpenMPについて ====== | + | [[fortran:openmp]]へ移動しました. |
- | + | ||
- | OpenMPによる並列プログラミングと数値計算法 | + | |
- | 牛島省(著)を参考に. | + | |
- | + | ||
- | ===== 注意点 ===== | + | |
- | * !$の後にOMPが続く場合は!$OMPと続けて書く.!$の後にOMPが続かない場合はスペースを入れる. | + | |
- | <code fortran> | + | |
- | 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 | + | |
- | </code> | + | |
- | * defaultの後は(none)が無難?FIXME | + | |
- | * doループの制御変数はいわゆる定義済み変数になるので共有属性節((sharedとかprivateとかfirstprivateとか))に記述する必要はない.書くとすればprivateかfirstprivateのいずれか. | + | |
- | <code fortran> | + | |
- | 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 | + | |
- | </code> | + | |
- | * !$OMPのついた文を改行するときは改行した文にも!$OMPが必要 | + | |
- | <code fortran> | + | |
- | 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 | + | |
- | </code> | + |