[Omp] A question about threadprivate
Marina Kraeva
kraeva at iastate.edu
Wed Apr 11 09:15:33 PDT 2007
Hello,
Could you please share your opinion on what will happen in the following
two small examples.
In the OpenMP API 2.5 (and in the earlier versions) it is said:
"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..."
According to API, is it guaranteed that in the following example the
values of 'i' will persist, so array will have values (0,1,2,3)?
int i,array(0:3)
threadprivate(i)
!$omp parallel num_threads(4)
i=omp_get_thread_num()
!$omp parallel num_threads(2)
... ('i' is not referenced)
!$omp end parallel
!$omp end parallel
!$omp parallel num_threads(4) shared(array)
array(omp_get_thread_num())=i
!$omp end parallel
What if inside the nested parallel region 'i' was modified:
int i,array(0:3)
threadprivate(i)
!$omp parallel num_threads(4)
i=omp_get_thread_num()
!$omp parallel num_threads(2)
i=-omp_get_thread_num()
!$omp end parallel
!$omp end parallel
!$omp parallel num_threads(4) shared(array)
array(omp_get_thread_num())=i
!$omp end parallel
Is it guaranteed, that array still will have values (0,1,2,3)?
Thank you!
Marina Kraeva.
More information about the Omp
mailing list