You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Namely, it runs asynchronous and maps a disjunct array sections/storage of the array.
When run asynchronously, I do see fails here when the unmapping happens for one target region while another is still running.
I believe this violates the following wording of OpenMP 5.1 (= 5.2), "Restrictions to the map clause are as follows:"
If an array appears as a list item in a map clause, multiple parts of the array have corresponding storage in the device data environment prior to a task encountering the construct associated with the map clause, and the corresponding storage for those parts was created by maps from more than one earlier construct, the behavior is unspecified.
Thus:
I belief that "array" refers in this case to the containing array, i.e. to the whole of work_storage – and not to the array item / array sectionwork_storage(1:N, x).
I note that the wording was added for 5.1 and the testcase is for 4.5, but I read the 5.1 wording as clarification/correction and not as a non-backwards compatible change.
For completeness, the 5.1 wording was added for the non-publicly accessible OpenMP Spec Issue 1909
Do you concur that the wording above makes the testcase invalid? If not/if unsure, we could ask the experts.
I wonder whether any compiler will run the target regions concurrently without. → Consider to run in a parallel-do construct.
Secondly, we discussed this internally – result:
pedantically the testcase is invalid (for the reasons/quote above)
practically it should work fine — at least if either the implementation does not use an array descriptor or handles the descriptor itself (and not the pointer in it) as firstprivate.
Thus, you may consider to keep the testcase, despite the pedantic issue. Or you fix it.
@tob2
I don't agree that the test is invalid, unless I am missing something, there is no attempt to map the (whole) array after the portions of the arrays are mapped in the loop. But I do agree to the suggestion posted on May 13th, the do loop needs to be an omp parallel do.
The testcase defines
INTEGER(INT64),DIMENSION(N, N_TASKS):: work_storage
, does not mapwork_storage
and then:https://github.com/SOLLVE/sollve_vv/blob/ea88f50028a5e56709ca1b4467e05c4689a374fb/tests/4.5/target_teams_distribute/test_target_teams_distribute_nowait.F90#L45-L46
Namely, it runs asynchronous and maps a disjunct array sections/storage of the array.
When run asynchronously, I do see fails here when the unmapping happens for one target region while another is still running.
I believe this violates the following wording of OpenMP 5.1 (= 5.2), "Restrictions to the map clause are as follows:"
Thus:
I belief that "array" refers in this case to the containing array, i.e. to the whole of
work_storage
– and not to the array item / array sectionwork_storage(1:N, x)
.I note that the wording was added for 5.1 and the testcase is for 4.5, but I read the 5.1 wording as clarification/correction and not as a non-backwards compatible change.
For completeness, the 5.1 wording was added for the non-publicly accessible OpenMP Spec Issue 1909
Do you concur that the wording above makes the testcase invalid? If not/if unsure, we could ask the experts.
@nolanbaker31 @tmh97 @spophale – thoughts?
The text was updated successfully, but these errors were encountered: