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
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:
event type integers of the library LPs (the MPI LP) are offset so as to prevent conflicts (the user would specify this)
specify an interface for driving the actual operations. This could be as simple as switching on the workload operation type and forwarding to the library LP.
instead of the MPI/IO LPs driving the workload generation,
have a callback-style interface that informs the user of events of interest (ie an MPI_Send has completed).
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.
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:
switch
ing on the workload operation type and forwarding to the library LP.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.