codes-org / codes

The Co-Design of Exascale Storage Architectures (CODES) simulation framework builds upon the ROSS parallel discrete event simulation engine to provide high-performance simulation utilities and models for building scalable distributed systems simulations
Other
40 stars 16 forks source link

make LPs (MPI) usable in more contexts (Imported #72) #72

Open nmcglo opened 8 years ago

nmcglo commented 8 years ago

Original Issue Author: Jonathan Jenkins Original Issue ID: 72 Original Issue URL: https://xgitlab.cels.anl.gov/codes/codes/issues/72


Currently it's not really possible to use the MPI client in any other context than within its own standalone program. Same with the IO clients we've developed. For example, we may want the MPI client to handle communication operations and an IO client to perform IO operations, under the same "process".

One way of getting around this is to recast the LP(s) as "libraries" that allow some arbitrary LP to drive it's execution, similar to how the model-net LP drives the individual network LPs. Under this change, the user would drive the workload parsing loop and call into the library LP to perform actions (such as MPI ops) on behalf of her. Changing this requires reworking the interface in such a way that:

If we have this in place, we can use the MPI client basically anywhere, with the user needing to provide a shim to call into and out of the client.