Per a conversation with the Unify team (@kathrynmohror, @adammoody, @MichaelBrim, @CamStan, @gonsie), we will need to expand our PMI2 support before we can bootstrap UnifyFS.
PMI2 interfaces used by Unify that we do not support currently:
PMI2_Job_GetRank
PMI2_Info_GetJobAttrIntArray
- "universeSize" (The size of the "universe" (defined for the MPI attribute MPI_UNIVERSE_SIZE))
- "hasNameServ" (The value hasNameServ is true if the PMI environment supports the name service operations (publish, lookup, and unpublish))
@garlick would know best, but I think implementing just those three things should be relatively easy and straightforward. We would return true for hasNameServ, and then lookup rank and size info (that we certainly already know about) for universeSize and Job_GetRank. At minimum, we can get that info by reading FLUX_JOB_SIZE and FLUX_TASK_RANK from the environment, but I assume there are cleaner ways involving the Flux KVS.
Per a conversation with the Unify team (@kathrynmohror, @adammoody, @MichaelBrim, @CamStan, @gonsie), we will need to expand our PMI2 support before we can bootstrap UnifyFS.
PMI2 interfaces used by Unify that we do not support currently:
PMI2 interfaces used by Unify that we do support:
* Need to verify that a "NULL" kvsname works
@garlick would know best, but I think implementing just those three things should be relatively easy and straightforward. We would return true for
hasNameServ
, and then lookup rank and size info (that we certainly already know about) foruniverseSize
andJob_GetRank
. At minimum, we can get that info by readingFLUX_JOB_SIZE
andFLUX_TASK_RANK
from the environment, but I assume there are cleaner ways involving the Flux KVS.Reference to UnifyFS's PMI2 usage: https://github.com/LLNL/UnifyFS/blob/dev/common/src/unifyfs_keyval.c