この文書の現在のバージョンと選択したバージョンの差分を表示します。
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
openmp [2009/06/24 09:28] 10.249.202.217 |
openmp [2009/12/24 22:29] isakari |
||
---|---|---|---|
ライン 2: | ライン 2: | ||
* 使い方は以下の文献を参考に | * 使い方は以下の文献を参考に | ||
- | * [[インテル® Fortran コンパイラー OpenMP* 活用ガイド|http://download.intel.com/jp/business/japan/pdf/527J-002.pdf]が分かりやすい. | + | * [[http://download.intel.com/jp/business/japan/pdf/527J-002.pdf|インテル® Fortran コンパイラー OpenMP* 活用ガイド]]が分かりやすい. |
- | * OpenMPによる並列プログラミングと数値計算法牛島省(著)を参考に. | + | * OpenMPによる並列プログラミングと数値計算法牛島省(著)も良い. |
+ | |||
+ | ===== コンパイル方法 ===== | ||
+ | * gfortran -openmp file.f90 | ||
+ | * ifort -openmp file.f90 | ||
+ | * frt -KOMP -Am file.f90 (thinの場合) | ||
+ | |||
+ | |||
+ | ===== 基本的なこと ===== | ||
* !$ use omp_lib を最初に宣言.**!$とuseの間にはスペースが必要.** | * !$ use omp_lib を最初に宣言.**!$とuseの間にはスペースが必要.** | ||
<code fortran> | <code fortran> | ||
ライン 64: | ライン 73: | ||
end program hoge | end program hoge | ||
</code> | </code> | ||
+ | |||
+ | * doループが入れ子になっている場合,外側で回すのが一般的らしいFIXME.ただし,MPIとのハイブリッドの場合は外をMPI,内をOpenMPとするのが良いらしいFIXME. | ||
+ | <code fortran> | ||
+ | !$OMP do | ||
+ | do i=1,n | ||
+ | do j=1,m | ||
+ | 実行文 | ||
+ | end do | ||
+ | end do | ||
+ | !$OMP end do | ||
+ | </code> | ||
+ | |||
+ | ===== threadprivate ===== | ||
+ | moduleなどで、グローバル変数を定義している場合に、thread間ではその変数を共有しないで欲しいときに。 | ||
+ | <code fortran> | ||
+ | module common | ||
+ | implicit none | ||
+ | real(8) a,b,c | ||
+ | !$OMP threadprivate(a,b,c) | ||
+ | end module common | ||
+ | </code> | ||
+ |