This page presents several attempts to lower the barriers between simulation and direct execution for the experimentation of distributed applications and algorithms

The GRAS project

My participation to SimGrid begun when I started a project called GRAS. The issue I was trying to solve was to develop a platform mapper able to get the interconnexion map of any platform. I was very affraid of only being able to test my prototypes on the platforms at hand, and of the resulting risk of coming up with something working perfectly for my settings, but for nobody else. That is why I started developing the GRAS framework. It is now part of SimGrid, and more information can be found from its online documentation, from this publication, or from the associated slides.

GRAS (for Grid Reality And Simulation or even Generally Recognized As Safe) is a framework allowing to develop distributed application possibly suited to complex and changing conditions (such as the ones experienced on the Grid) within the comfort of a simulator.

The code developed this way can then be deployed as a real application with no loss of performances (even with performances gain in most case), compared to classical communication layers. No user source code modification or even recompilation is necessary, you just have to linking it against another library of GRAS.

On top of the GRAS programming environment, I work on several high level tools such as ALNeM, the application-level network mapper I was initially trying to develop. All those tools are grouped under the name AMOK (because we all want to get amok on the grid).

Simulated MPI

GRAS achieves its goal of allowing to run the same code in real life and on top of the simulator, but its fundamental issue is that it forces you to use its API, thus preventing the study of existing applications. SMPI (Simulated MPI) constitutes a partial answer to this by allowing to run (unmodified MPI applications on top of the simulator. The advantage of this approach comes from the large diffusion of the MPI interface in High Performance Computing. SMPI is naturally integrated within SimGrid. It also has its own page right here.

SimTerpose

SMPI make it possible to simulate legacy applications directly on top of SimGrid, but only for the applications using the MPI interface. SimTerpose push this further by allowing the emulation of any distributed application on top of the simulator, regardless of the application internals. Actually, it will do so, since SimTerpose is still at alpha stage and no software is distributed yet. Its design is somehow close to the MicroGrid Project , but building on our experience about simulating distributed applications. Using SimGrid instead of an heavy packet-level simulator + some time dilatation mechanism for computation "emulation" will certainly make the whole framework much more usable in practice.

We already have a prototype of the interception component, described in this publication and the corresponding slides (in French, sorry about that). More to come when time permits.