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.