LogGOPSim - A LogGOPS (LogP, LogGP, LogGPS)
Simulator and Simulation Framework

LogGOPSim [1] is a simulator for parallel applications and algorithms that uses the LogGOPS (or LogP, LogGP, or LogGPS) network model to simulate the execution of parallel algorithms and full applications. The simulator is intended to work at large scale and can simulate a single collective operation with up to 10 million processes on a single CPU. The simulator input format is a dialect of the Group Operation Assembly Language (GOAL [2]) which can easily be generated. We also supply a tool-chain that can convert MPI traces into simulator input.

LogGOPSim comes with an MPI (Message Passing Interface) tracing module and can be seen as a fully-functional MPI simulator. Its main advantage is its flexibility, modularity and very simple adaptability. Its main simulation loop is in a single C++ file with less than 500 lines of code.

Download LogGPSim and Tools

The simulator itself and optional helper tools can be downloaded below:

Building the Simulator and Tools

See README in distribution for details!
  1. tar xzf LogGOPSim-1.0.tgz && cd LogGOPSim-1.0 && make
  2. tar xzf Schedgen-1.0.tgz && cd Schedgen-1.0 && make

Using the Simulator (Mini Tutorial)

  1. generate GOAL schedule for dissemination algorithm among 1024 hosts with 15 bytes:
    Schedgen-1.0/schedgen -p dissemination -s 1024 -d 15 -o schedule.goal
  2. transform GOAL schedule into binary representation:
    LogGOPSim-1.0/txt2bin -i schedule.goal -o schedule.bin
  3. execute simulation:
    LogGOPSim-1.0/LogGOPSim -f schedule.bin

Using the MPI Schedule Generator (Mini Tutorial)

  1. link liballprof to an MPI application, execute the application and collect the traces from /tmp in a single directory
  2. we use the included Sweep3D example trace:
    Schedgen-1.0/schedgen -p trace --traces Schedgen-1.0/liballprof-samples/sweep3d-2x2/pmpi-trace-rank-0.txt -o sweep-sched.goal
  3. transform schedule into binary representation:
    LogGOPSim-1.0/txt2bin -i ./sweep-sched.goal -o ./sweep-sched.bin -p
  4. execute simulation:
    LogGOPSim-1.0/LogGOPSim -f sweep-sched.bin --progress

Simulations with OS Noise Injection

The simulator is also able to simulate the execution under the influence of OS noise measured on real machines [3]. It can read noise-traces created with the Netgauge selfish detour and inject them in the execution (parameter: --noise-trace). By default, the noise is scheduled randomly. The option --noise-cosched enables co-scheduling of the noise traces.


All published work using the simulator should cite [1] (T. Hoefler, T. Schneider and A. Lumsdaine: "LogGOPSim - Simulating Large-Scale Applications in the LogGOPS Model").


[1] T. Hoefler, T. Schneider, A. Lumsdaine:
 LogGOPSim - Simulating Large-Scale Applications in the LogGOPS Model In Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing, presented in Chicago, Illinois, pages 597--604, ACM, ISBN: 978-1-60558-942-8, Jun. 2010, LSAP'10 Best Paper Award
[2] T. Hoefler, C. Siebert, A. Lumsdaine:
 Group Operation Assembly Language - A Flexible Way to Express Collective Communication In ICPP-2009 - The 38th International Conference on Parallel Processing, presented in Vienna, Austria, IEEE, ISBN: 978-0-7695-3802-0, Sep. 2009, (acceptance rate 32%, 71/220)
[3] T. Hoefler, T. Schneider, A. Lumsdaine:
 Characterizing the Influence of System Noise on Large-Scale Applications by Simulation In International Conference for High Performance Computing, Networking, Storage and Analysis (SC'10), Nov. 2010, (acceptance rate 19.8%, 50/253) SC10 Best Paper Award