Describing your Application



Every SimGrid simulation entails a distributed application, that virtually executes on the simulated platform. You can express this application using one of the following interfaces. It is even possible to mix several interfaces in the same simulation.

  • Describing Algorithms with the S4U interface (in C++ or Python)

  • Simulating existing MPI programs with the SMPI toolsuite (in C, C++, or Fortran)

  • In some cases, you may want to replay an execution trace in the simulator. This trace lists the events of your application or of your workload, and your application is decomposed as a list of event handlers that are fired according to the trace. SimGrid comes with a built-in support for MPI traces (with solutions to import traces captured by several MPI profilers). You can reuse this mechanism for any kind of trace that you want to replay, for example to study how a P2P DHT overlay reacts to a given workload.

  • A prototypal tool is intended to allow the modification of any existing application so that it can run on top of SimGrid. This project, called Remote-SimGrid, is somewhat experimental but should be already usable.

As you can see, SimGrid is very modular and can be used in many ways. We are working to improve it along two main directions. First, we plan to further increase the modularity of the simulator so that users can invent the specific API or DSL they need for their usage. We call this project BYOS: Build Your Own Simulator.

Executing existing applications within the simulator is another long-term goal. SMPI and Remote-SimGrid already allow you to execute some applications, but our long term goal would be to allow for the execution of any legacy application, with absolutely no modification. We call it SimOS, even if it will not become usable before several years of additional work.