[Omp] Threadprivate variables and nested parallelism
Haab, Grant
grant.haab at intel.com
Wed Dec 13 10:39:58 PST 2006
Federico,
Think of this shared clause as overriding a threadprivate variable's
privateness for the duration of the parallel region and using the master
thread's version of the variable for all threads in the corresponding
team. It would be useful on nested parallel regions, but could also
work on outer parallel regions to make the variable shared for the
duration of that region only.
In OpenMP 2.5, there is no notion of threadprivate persistence except
for the outermost parallel regions in the program. If we extend
threadprivate persistence rules to include nested parallel regions
(which is a 3.0 issue currently under strong consideration), this shared
clause could interact in nasty ways with notions of persistence. I
think would need to understand the semantics of these interactions
pretty clearly before we could add a shared clause for threadprivate
variables.
- Grant
-----Original Message-----
From: omp-bounces at openmp.org [mailto:omp-bounces at openmp.org] On Behalf
Of Federico Massaioli
Sent: Wednesday, December 13, 2006 12:17 PM
To: James Beyer
Cc: omp at openmp.org
Subject: Re: [Omp] Threadprivate variables and nested parallelism
I'm confused too.
Shared and private attributes are local to a parallel region. Thus, a
variable which is private on a parallel region can be made shared on a
nested one.
OTOH, "threadprivateness" is a global attribute. How could a
threadprivate
variable made shared if is globally known to be threadprivate?
Federico
On Wed, 13 Dec 2006, James Beyer wrote:
> Ok, I am confused. If you want all of the threads to share the same
data why
> is it in the threadprivate list? Or are you talking about nested
parallelism
> where the outer parallel region has the data in threadprivate and the
inner
> parallel region has the data shared? If this is the case I don't see
why
> there would be a problem with this. Of course I may change my opinion
as I
> begin bringing full support for nested parallelism on line in our
compiler.
>
> james
>
> Dieter an Mey wrote:
>> Well, you now, Larry, that we are happily profiting from nested
>> parallelism, where tasks would not be the right solution.
>>
>> And providing copies of large chunks of data for all threads of the
inner
>> teams can be a waste of memory...
>>
>> But I understand that implementing the feature to share threadprivate
data
>> may be painful - but I am just a stupid user ...
>>
>> Dieter
>>
>>
>> Marina Kraeva schrieb:
>>> Dieter and Lawrence,
>>>
>>> Thank you for the clarification.
>>>
>>> Lawrence, I feel your pain :)
>>>
>>> Marina.
>>>
>>> Meadows, Lawrence F wrote:
>>>
>>>> Dieter, I'm sure that your interpretation is correct. Every
>>>> thread gets its own copy.
>>>>
>>>> So if it is "unfortunate" then you would want to be able to
>>>> make a threadprivate variable shared in an inner team (using
>>>> an explicit shared clause on the parallel directive, I
>>>> assume). I have no idea how hard this would be to implement
>>>> and I don't like it.
>>>>
>>>> I wish we could just drop nested parallelism... and threads...
>>>>
>>>> -----Original Message-----
>>>> From: omp-bounces at openmp.org [mailto:omp-bounces at openmp.org] On
Behalf
>>>> Of Dieter an Mey
>>>> Sent: Tuesday, December 12, 2006 9:31 AM
>>>> To: Marina Kraeva
>>>> Cc: omp at openmp.org
>>>> Subject: Re: [Omp] Threadprivate variables and nested parallelism
>>>>
>>>> My understanding is that all threads will get there own copy - even
>>>> threads of the inner team (unfortunately).
>>>>
>>>> Dieter
>>>>
>>>> Marina Kraeva schrieb:
>>>>
>>>>> Hello,
>>>>>
>>>>> I could not find in API 2.5 what will happen if a threadprivate
>>>>
>>>> variable
>>>>> is referenced within a nested parallel region, other than this:
>>>>>
>>>>> The values of data in the threadprivate objects of threads other
than
>>>>> the initial thread are guaranteed to persist between two
consecutive
>>>>> active parallel regions only if all the following conditions hold:
>>>>> * Neither parallel region is nested inside another parallel
region.
>>>>>
>>>>>
>>>>> I would think that each thread of the initial team (created for
the
>>>>> nesting parallel region) will create a new team, and the
threadprivate
>>>>
>>>>
>>>>> copy of this thread will become shared among threads in the new
team
>>>>
>>>> in
>>>>> the nested parallel region (so there will be NT shared variables,
>>>>
>>>> where
>>>>> NT is the number of threads in the nesting parallel region).
>>>>>
>>>>> Am I correct assuming this? Can I count on this behavior or it's
>>>>
>>>> undefined?
>>>>
>>>>> Thank you,
>>>>> Marina Kraeva.
>>>>> _______________________________________________
>>>>> Omp mailing list
>>>>> Omp at openmp.org
>>>>> http://openmp.org/mailman/listinfo/omp
>>>>>
>>>>
>>>>
>>>
>>
> _______________________________________________
> Omp mailing list
> Omp at openmp.org
> http://openmp.org/mailman/listinfo/omp
>
-----------------------------------------------------------------------
"Even if you don't always actually 'need' the highest precision, you
can still delight in the joy of fully understanding what's going on."
Paul Horowitz & Winfield Hill - The Art of Electronics
-----------------------------------------------------------------------
Federico Massaioli CASPUR
email: federico.massaioli at caspur.it V. dei Tizii 6/b
Ph.: +39-06-44486710 I-00185 Roma Italy
Fax: +39-06-4957083 www.caspur.it
_______________________________________________
Omp mailing list
Omp at openmp.org
http://openmp.org/mailman/listinfo/omp
More information about the Omp
mailing list