私はOpenMPを初めて使用しますが、現時点では、詳細を確認できるワークステーションにアクセスできません。ハンズオンパートに進む直前に、基本を設定するための簡単な質問がありました。
反復を使用してマップを展開し、展開後の変数の最終値を提供するFORTRAN90で記述されたシリアルプログラムがあるとすると、コードは次のようになります。
call random_number(xi) !! RANDOM INITIALIZATION OF THE VARIABLE
do i=1,50000 !! ITERATION OF THE SYSTEM
xf=4.d0*xi*(1.d0-xi) !! EVOLUTION OF THE SYSTEM
xi=xf
enddo !! END OF SYSTEM ITERATION
print*, xf
100の異なるランダムな初期条件に対して、クラスター上で独立したプロセスと同じコードを実行し、初期条件によって出力がどのように変化するかを確認したいと思います。この目的のシリアルプログラムは次のようになります。
do iter=1,100 !! THE INITIAL CONDITION LOOP
call random_number(xi) !! RANDOM INITIALIZATION OF THE VARIABLE
do i=1,50000 !! ITERATION OF THE SYSTEM
xf=4.d0*xi*(1.d0-xi) !! EVOLUTION OF THE SYSTEM
xi=xf
enddo !! END OF SYSTEM ITERATION
print*, xf
私が考えることができるOpenMPの実装は機能しますか?私が思いついたコードは次のとおりです。
!$ OMP PARALLEL PRIVATE(xi,xf,i)
!$ OMP DO
do iter=1,100 !! THE INITIAL CONDITION LOOP
call random_number(xi) !! RANDOM INITIALIZATION OF THE VARIABLE
do i=1,50000 !! ITERATION OF THE SYSTEM
xf=4.d0*xi*(1.d0-xi) !! EVOLUTION OF THE SYSTEM
xi=xf
enddo !! END OF SYSTEM ITERATION
print*, xf
!$ OMP ENDDO
!$ OMP END PARALLEL
提案や助けを事前に感謝します。