OpenMP 入門

ナビゲーション:前へ   上へ   次へ

3 並列領域の開始と終了

OpenMPで複数のスレッドにより並列に実行される領域を指定するために parallel指示構文 を用います。 この指示構文が指定する構造化ブロックは並列実行され、それ以外は逐次実行されます。

構造化ブロックとは実行文のブロックで以下の特徴を持つものを言います。

  • 構造化ブロックは一つの入り口と一つの出口を持ちます。
  • 構造化ブロック内から構造化ブロック外への分岐及び構造化ブロック外から構造化ブロック内への分岐は許されていません。
parallel指示構文は以下の書式を持ちます。
!$omp parallel [指示節[[,] 指示節]...]
  構造化ブロック
!$omp end parallel
  • parallelとそれに対応するend parallelは同じルーチンの実行部に記述される必要があります。
  • 一つのparallelとそれに対応するend parallel間でスレッド数は一定です。
  • 異なるparallel/end parallelペア間でスレッド数が異なる事は許されています。
例)
 ...  ! ここは逐次実行される
!$omp parallel
  print *, "Hi"  ! この部分は並列実行される
!$omp end parallel
 ...  ! ここも逐次実行される

3.1 ☆演習課題:並列領域の開始と終了

OpenMPの指示構文を用いて、下記に示すプログラムの
  print *, "Hello"
の部分のみが複数のスレッドで実行されるように変更して下さい。
[課題のコード]

program paraRegion
  implicit none
  print *, "Start Here!"
  print *, "Hello!"
  print *, "End Here!"
end program
[4スレッドで実行した場合の出力例]
 Start Here!
 Hello!
 Hello!
 Hello!
 Hello!
 End Here!
[ヒント]
paralell~end parallelで複数のスレッドで実行したい部分を囲みます。
解答例:kadaiParallelRegion.f90


ナビゲーション:前へ   上へ   次へ
関連情報
ご案内
© 譌・譛ャ繝九Η繝シ繝。繝ェ繧ォ繝ォ繧「繝ォ繧エ繝ェ繧コ繝�繧コ繧ー繝ォ繝シ繝玲�ェ蠑丈シ夂、セ 2025
Privacy Policy  /  Trademarks