Ich versuche, einen ziemlich komplizierten Simulationscode zu parallelisieren, der für Ölfeldberechnungen verwendet wird.Private und öffentliche Variablen in einem Modul und eine Unterroutine in OpenMP
Meine Frage ist, wenn ich eine Variable oder einige zuweisbare Arrays und einige Subroutinen in einem Modul deklarieren kann, dann dieses Modul in einem anderen Modul/Subroutine, die die parallele Region enthält, werden diese Variablen und Arrays als privat betrachtet Jeder Thread (dh sie haben separate Kopien dieser Variablen und Änderungen an Variablen in einem Thread werden von anderen Threads nicht gesehen) oder sie werden geteilt?
So:
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
Wird tid
und global
privat oder gemeinsam genutzt werden?
Jede Hilfe wird sehr geschätzt!
Danke für die Antwort, es klärt die Dinge. Aber gilt dies für Variablen, die in verschachtelten Subroutinen definiert sind? Wie definieren Sie eine andere Subroutine innerhalb von 's2' und haben Variablen darin, sind sie auch privat? –
Ja, sie werden auch privat sein. –