WRENCH 101
Internal Documentation

WRENCH 101 is a page and a set of documents that provide detailed information for each WRENCH's classes of users, and higher-level content than the API Reference. For instructions on how to install, run a first example, or create a basic WRENCH-based simulator, please refer to their respective sections in the documentation.

This Internal 101 guide is intended for users who want to contribute code to WRENCH to extend its capabilities.


Make sure to read the User 101 Guide and the Developer 101 Guide to understand how WRENCH works from those perspectives. The largest portion of the WRENCH code base is the "Internal" code base, and for now, the way to go is to look at the API Reference. Do not hesitate to contact the WRENCH team with questions about the internals of WRENCH if you want to contribute. Of course, forking The WRENCH repository and creating pull requests is the preferred way to contribute to WRENCH as an Internal developer.

Here is a in-progress misc item list of interest:

  • Most (soon to be all) interaction with SimGrid is done by the classes in the src/simgrid_S4U_util directory
  • A WRENCH simulation, like any SimGrid simulation, is comprised of simulated processes that communicate via messages with put/get-like operations into mailboxes. These processes are essentially implemented as threads, but they are not scheduled by the OS. Instead, they are scheduled by SimGrid in round-robin fashion. Each thread runs without interruption in between two SimGrid API calls. Therefore, although in principle WRENCH is massively multi-threaded, there are almost no need for locks when sharing data among threads.