OpenMP® Forum

Discussion on the OpenMP specification run by the OpenMP ARB. OpenMP and the OpenMP logo are registered trademarks of the OpenMP Architecture Review Board in the United States and other countries. All rights reserved.

After the changes to the handling of private (allocatable_var) I think private clauses with allocatable variables should be also mentioned in 2.9.1.1 (p74, l19), because without referencing the variable in the enclosed construct it is not possible to determine its allocation status.

2.9.4.1 (p98, l17-18) says: "An array with the ALLOCATABLE attribute must be in the allocated state. Each thread's copy of that array must be allocated with the same bounds."If this means it is user's responsibility to allocate the threadprivate allocatable arrays in each thread first, then this sounds fragile. In order to use copyin with allocatable, one would need another parallel firstin which it would allocate the threadprivate allocatables, it would need to use the same num_threads and likely also omp_set_dynamic(.false.), otherwise some thread affected by copyin might not haveits threadprivate allocatable array allocated. It would make much more sense to require that either the threadprivate allocatable is allocated with the same bounds as in the master thread, or it is not currentlyallocated, in which case copyin would allocate it with master thread's bounds.

Another thing, the standard doesn't seem to talk about derived types in restrictions. E.g. is allocatable component in the following testcase supposed to behave

To ammend the ALLOCATABLE comment, if the parallel is nested, the standard makes no guarantees that the threadprivate var is preserved, so there wouldn't be a way how to use copyin with allocatable arrays at all in nested parallels.

Regarding allocatable arrays in threadprivate, we agree that this is awkward, and indeed we did fix it for private allocatables, but not for threadprivate. However it is too late in the game to change it for 3.0.

Allocatable components of derived types are not an F95 feature, so we didn't address them in 3.0 at all.