-
Notifications
You must be signed in to change notification settings - Fork 7
Description
In sec. 11.3 there is the following sentence:
Starting a reduction operation for the same group in a separate thread before previously invoked operation is finished on all processes of the group is not allowed and yields undedined behavior.
- "in a separate thread" is not needed here, since it also undefined to do it like this:
gaspi_allreduce(..., myGroup, GASPI_TEST);
gaspi_allreduce(..., myGroup, GASPI_BLOCK);
Here both reduction operations are started in the same thread and potentially overlap.
- I don't think, that "is finished on all processes of the group" is intended, since then you cannot write
gaspi_allreduce(..., myGroup, GASPI_BLOCK);
gaspi_allreduce(..., myGroup, GASPI_BLOCK);
since the local process doesn't know, whether all other processes have already left the first gaspi_allreduce. You would have to place a barrier inbetween the two calls.
Another issue: it should be guaranteed, that the results of the reduction are bitwise equal across all ranks of the group.