The Modern Age of Computer Systems Simulation

SimGrid is a framework to simulate distributed computer systems. It can be used to either assess abstract algorithms or to debug and profile real MPI applications.

SimGrid is routinely used in studies on (data-)Grids, IaaS Clouds (API, examples), Clusters, High-Performance Computing (🖹), Peer-to-Peer systems, Volunteer Computing (🖹) Fog Computing (🖹), MapReduce (🖹) and much more.

The simulation models are fast (🖹) and highly scalable (🖹) while theoretically sound and experimentally assessed (🖹). Most of the time, SimGrid is used to predict the performance (time and energy) of a given IT infrastructure, and it includes a prototype model checker to formally assess these systems.

Technically speaking, SimGrid is a library. It is neither a graphical interface nor a command-line simulator running user scripts. The interaction with SimGrid is done by writing programs with the exposed functions to build your own simulator. This can be done in C/C++, Python or Java, on Linux, Mac OSX or Windows (using the WSL).

SimGrid is a Free Software distributed under the LGPL-2.1 license. You are welcome to use, study, share and improve it, provided that your version is as free as ours. SimGrid is developed for 20 years by a lively community of users and researchers from several groups, initially in France and the U.S.A. It is steadily funded by several research bodies. We hope that you will come and join us!

SimGrid is a powerful tool, and this documentation will help you to make good use of it. Check its contents on the left. Each tutorial presents a classical use case, in a fast and practical manner. The user manual contains more thorough information. In each part, the important concepts are concisely introduced, before the reference manual. SimGrid is also described in several scientific papers.

Please report any documentation issues, including typos or unclear elements. You can even propose changes by clicking on the “Edit on FramaGit” button at the top of every page. Bugs in the code should be reported on FramaGit