0
我想並行化一個用於油田計算的相當複雜的模擬代碼。我的問題是,如果我可以在一個模塊中聲明一個變量或一些可分配數組和一些子例程,然後在另一個包含並行區域的模塊/子例程中使用這個模塊,這些變量和數組是否會被認爲是私有的每個線程(即它們將具有這些變量的單獨副本,並且對線程中的變量所做的更改不會被其他線程看到),或者它們將被共享?模塊內部的私有和公共變量以及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'中定義另一個子例程並且有變量一樣,它們也會是私有的? –
是的,他們也會是私人的。 –