The following means that one can't just initialize everything during MPI initialization. One needs load these on demand.
This requires modest changes to libinit.c but is not going to be implemented until more important things are working.
I implemented the first two correctly and the next two in a half-arsed way.
11.4.1 MPI Functionality that is Always Available
Some MPI functions may be invoked at any time, including prior to calling MPI_INIT or MPI_SESSION_INIT, and following MPI finalization, independent of whether the World Model, Sessions Model, or both are used. These functions can be called concurrently by multiple threads within an MPI Process. Table 11.1 lists the applicable MPI functions.
MPI_INITIALIZED
MPI_FINALIZED
MPI_GET_VERSION
MPI_GET_LIBRARY_VERSION
MPI_INFO_CREATE
MPI_INFO_CREATE_ENV
MPI_INFO_SET
MPI_INFO_DELETE
MPI_INFO_GET_STRING
MPI_INFO_GET_NKEYS
MPI_INFO_GET_NTHKEY
MPI_INFO_DUP
MPI_INFO_FREE
MPI_INFO_F2C
MPI_INFO_C2F
MPI_SESSION_CREATE_ERRHANDLER
MPI_SESSION_CALL_ERRHANDLER
MPI_ERRHANDLER_FREE
MPI_ERRHANDLER_F2C
MPI_ERRHANDLER_C2F
MPI_ERROR_STRING
MPI_ERROR_CLASS
The following means that one can't just initialize everything during MPI initialization. One needs load these on demand.
This requires modest changes to libinit.c but is not going to be implemented until more important things are working.
I implemented the first two correctly and the next two in a half-arsed way.