SCIJump:MPIService
From SCIJump
Here is the interface for MPI Service proposed by Ben Allan. It has been successfully converted into a SCIJump implementation.
interface MPIService extends cca.Port {
/** Get an mpi communicator with the same scope as the component instance.
Won't be mpi_comm_null. The communicator returned will be
private to the recipient, which implies an mpicommdup.
@return The comm produced, in FORTRAN form. C callers use comm_f2c
method defined by their mpi implementation, usually MPI_Comm_f2c,
to convert result to MPI_Comm.
@throw CCAException if the service cannot be implemented because MPI is
not present.
*/
long getComm() throws cca.CCAException;
/** Let go the communicator. previously fetched with getComm.
* @throw CCAException if an error is detected.
*/
void releaseComm(in long comm) throws cca.CCAException;
}
Issues
- Creating a sub-framework and initializing it with a proper communicator.
- Ben has an MPIBorrow service as well. This one doesn't dup; it only hands off copies
to the same communicator. Used for large machines where dup takes a long time, but comes with all kinds of potential sync nightmares. Perhaps we can consider including it as a separate interface or as part of the above one.
