i trying parallelize complicated simulation code used oil field calculations.
my question is, if can declare variable or allocatable arrays , few subroutines in module, use module in module/subroutine contains parallel region, variables , arrays considered private each thread (i.e. have separate copies of variables , changes made variables in thread won't seen other threads) or they'll shared?
like this:
module m2 implicit none integer :: global contains subroutine s2() implicit none integer :: tid tid = ! calculation end subroutine s2 end module m2 module m1 use m2 implicit none contains subroutine s1 !$omp parallel i=1, 9 call s2() end !$omp end parallel end subroutine s1 end module m1
will tid
, global
private or shared?
any appreciated!
module variables shared
in openmp unless use threadprivate
directive. see difference between openmp threadprivate , private detailed description of threadprivate
. global
shared.
the local variable tid
declared in subroutine , called parallel region. therefore private
unless has save
attribute.
(note initialization integer :: tid = 0
adds save
implicitly, careful.)
Comments
Post a Comment