油田計算に使用されるかなり複雑なシミュレーションコードを並列化しようとしています。モジュール内のプライベートとパブリック変数とOpenMPのサブルーチン
私は、モジュール内に変数または割り当て可能な配列といくつかのサブルーチンを宣言でき、このモジュールを並列領域を含む別のモジュール/サブルーチンで使用すると、それらの変数と配列は各スレッド(つまり、これらの変数のコピーが別々にあり、スレッド内の変数に加えられた変更は他のスレッドには見られません)、または共有されますか?このよう
:
module m2
implicit none
integer :: global
contains
subroutine s2()
implicit none
integer :: tid
tid = ! Some calculation
end subroutine s2
end module m2
module m1
use m2
implicit none
contains
subroutine s1
!$omp parallel do
do i=1, 9
call s2()
end do
!$omp end parallel do
end subroutine s1
end module m1
tid
とglobal
は専用または共用になりますか?
ご協力いただきありがとうございます。
おかげで、それは物事をクリアします。しかし、これは入れ子になったサブルーチンの中で定義された変数に当てはまりますか? 's2'の中に別のサブルーチンを定義し、その中に変数を持つように、それらもプライベートになりますか? –
はい、それらもプライベートになります。 –