Closed davidozog closed 4 years ago
The clarification makes sense to me :+1:
Besides, I think the option that relies on shmem_pe_accessible
might not work, because shmem_pe_accessible
checks whether the PE can be accessed by using SHMEM operations (e.g., the PE can be on a remote node).
This ticket reverts the proposed change from #307 (to relax the correspondence of
SHMEM_TEAM_SHARED
withshmem_ptr
) and instead specifies that all symmetric heap objects on the PEs must be accessible for those PEs to be included inSHMEM_TEAM_SHARED
.Some more background information: We learned from #307 that we generally prefer
SHMEM_TEAM_SHARED
andshmem_ptr
to have a direct correspondence. We also realized that theshmem_ptr
interface allows implementations to freely limit accessibility, which resolves any problems with representing non-triplet teams (thanks @minsii!). We also became aware thatshmem_ptr
may lack "symmetry" with regard to other PE's, and may lack "coverage" with regard to the whole symmetric heap/data segments (discussed here). This PR (#325) addresses the symmetry/coverage issues ofshmem_ptr
by proposing that the entire symmetric heap be accessible forSHMEM_TEAM_SHARED
membership. (It does not prohibit membership if objects on the data segment are also accessible).Side note: Another option may be for
SHMEM_TEAM_SHARED
membership to require PE accessibility across both the symmetric heap and data segments (but apparently some implementations may not supportshmem_ptr
on the data segment).In that case, it may be cleaner to rely on theshmem_pe_accessible
routine rather than "shmem_ptr
with caveats" to defineSHMEM_TEAM_SHARED
...