差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
openmp [2009/05/11 12:18]
10.249.202.199
openmp [2009/12/24 22:29]
isakari
ライン 1: ライン 1:
 ====== OpenMPについて ====== ====== OpenMPについて ======
  
- OpenMPによる並列プログラミングと数値計算法 +  * 使い方は以下の文献を参考に 
-牛島省(著)を参考に.+    * [[http://​download.intel.com/​jp/​business/​japan/​pdf/​527J-002.pdf|インテル® Fortran コンパイラー OpenMP* 活用ガイド]]が分かりやすい. 
 +    * OpenMPによる並列プログラミングと数値計算法牛島省(著)も良い. 
 + 
 +===== コンパイル方法 ===== 
 +  * gfortran -openmp file.f90 
 +  * ifort -openmp file.f90 
 +  * frt -KOMP -Am file.f90 ​ (thinの場合) 
 + 
 + 
 +===== 基本的なこと ===== 
 + 
 +  * !$ use omp_lib ​最初宣言.**!$とuseの間にはスペースが必要.** 
 +<code fortran>​ 
 +progaram hoge 
 +  !$ use omp_lib 
 +  !$ use another_module 
 +  implicit none 
 +... 
 +end program hoge 
 +</​code>​ 
 +  * 並列化したいところを!$OMP parallelと!$OMP end parallelではさむ.はさまれたところは複数のCPUで計算される. 
 +  * !$OMP doと!$OMP singleが分かれば大体のことはできる. 
 +  * 「!$につづけてスペース+命令文」とすると,openmpとしてコンパイルしたときだけその命令が実行される. 
 +  * コンパイルの仕方は gfortran -openmp, ifort -opemmp, frt -KOMP
  
  ===== 注意点 =====  ===== 注意点 =====
ライン 50: ライン 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>​
 +
openmp.txt · 最終更新: 2011/02/21 15:58 by saito
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0