SimGrid: SimGrid internals

SimGrid 3.10 Versatile Simulation of Distributed Systems

- Home page
- Online documentation
- Dev's Corner

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
SimGrid internals

This page does not exist yet, sorry. We are currently refurbishing the user documentation – the internal documentation will follow (FIXME).

There is two main things you want to know about the internals of SimGrid. First, you need to understand the component organization, as SimGrid is heavily layered, with each level being rather highly specialized and optimized toward a task. For that, please keep reading this page. If you work actively on the SimGrid project, the second point you need to understand is about the infrastructure of the SimGrid project, ie how to extend the framework in any way, how the automatic tests are run, and so on. These informations are split on several pages, as follows:

- Documenting SimGrid
- Extending SimGrid
- Modifying the cmake files
- SimGrid Developer Guide - Releasing
- Automatic Testing Infrastructure

SimGrid Components (click to jump to API)

# Overview of the toolkit components

## Programmation environments layer

SimGrid provides several programmation environments built on top of a unique simulation kernel. Each environment targets a specific audiance and constitutes a different paradigm. To choose which of them you want to use, you have to think about what you want to do and what would be the result of your work.

- If you want to study a theoritical problem and compare several heuristics, you probably want to try MSG (yet another historical name). It was designed exactly to that extend and should allow you to build easily rather realistic multi-agents simulation. Yet, realism is not the main goal of this environment and the most annoying technical issues of real platforms are masked here. Check the MSG section for more information.

- If you want to study the behaviour of a MPI application using emulation technics, you should have a look at the SMPI (Simulated MPI) programming environment. Unfortunately, this work is still underway. Check the SMPI section for more information.

If your favorite programming environment/model is not there (BSP, components, OpenMP, etc.) is not represented in the SimGrid toolkit yet, you may consider adding it. You should contact us first on the SimGrid developers mailing list, though.

## Simulation kernel layer

The core functionnalities to simulate a virtual platform are provided by a module called SURF. It is very low-level and is not intended to be used as such by end-users. Instead, it serve as a basis for the higher level layer.

SURF main features are a fast max-min linear solver and the ability to change transparently the model used to describe the platform. This greatly eases the comparison of the several models existing in the litterature.

See the SURF section for more details.

## Base layer

The base of the whole toolkit is constituted by the XBT (eXtended Bundle of Tools).

It is a portable library providing some grounding features such as Logging support, Exception support and Configuration support. XBT also encompass the following convenient datastructures: Dynar: generic dynamic array, Fifo: generic workqueue, Dict: generic dictionnary, Heap: generic heap data structure, Set: generic set datatype and Swag: O(1) set datatype.

See the XBT section for more details.

## Tracing simulation

Finally, a transversal module allows you to trace your simulation. More documentation in the section TRACE documentation