More scalable construction of upcxx::local_team

Issue #379 resolved
Paul Hargrove created an issue

The logic in upcxx::init() to construct the local_team is using gex_TM_Split(), which inherently must communicate in order to discover team members with the same "color". It is unfortunate that a global communication is required to construct teams consisting entirely of ranks on the same host.

Currently gex_TM_Split() is the only available GASNet-EX API for constructing new teams. However, work is underway to specify and implement gex_TM_Contruct() which will be semantically free of off-node communication for the case of constructing local_team. It is hoped that the implementation will be entirely free of off-node communication as well, though there is some doubt surrounding allocation of the teamid used by GASNet-EX collectives.

Once the improved GASNet-EX API is available in the stable branch, upcxx::init should be updated to use it.

Comments (1)

  1. Log in to comment