ChronoEngine:Unit MPI

From ChronoWiki

Jump to: navigation, search




Build depends:


Run depends:


Main developers:

Toby Heyn
Hammad Mazhar
Alessandro Tasora

This is an optional unit that allows the use of Chrono::Engine on computing clusters. Read the introduction to units for a technical background on the modularity of the Chrono::Engine project.



The MPI unit is used to perform parallel computation on clusters of computing nodes (supercomputers, etc.), using MPI as a communication layer.

This part of the project is still in experimental stage and it is NOT licensed as GPL so it can be accessed only to a part of the developer team. It can be provided on request - contact us if you are interested.

Here are the main features:

  • domain decomposition on multiple computing nodes
  • overlapping Schwarz solver
  • serialization/deserialization of items between domain boundaries


  • To run applications based on this unit:
    • you must have a cluster of computing nodes. For experiments, evena single computer could suffice; for high performance we suggest N nodes connected by high-speed network, ex. Infiniband.
    • you must have MPICH2 installed on all computing nodes (see instructions at the official MPICH2 page [1])
  • To build applications based on this unit:
    • you must have MPICH2 installed on your computer (see instructions at the official MPICH2 page [2])

Building instructions

This unit corresponds to an additional DLL library, called ChronoEngine_MPI.dll, that can be linked to your application if you want to use it. On Linux systems, the .dll suffix is .so.

That library is not available in the SVN or in the easy installer, so you have to build it. The building process requires the following steps.

  • Repeat the instructions for the full installation, but when you see the CMake window, you must add the following steps:
  • Set the ENABLE_UNIT_MPI as 'on', then press 'Configure' (to refresh the variable list)
  • Set the CH_CUDA_MPIDIR to the path where you have your MPICH2 subdirectory. This changes depending on where you installed MPICH2. For example, it could be C:/MPICH
  • Press 'Configure' again, then 'Generate', and proceed as usual in the installation instructions.

When you will rebuild the project, you could find some MPI-based demos in the binary directory, among other default demos.

Look at the C++ source of these demos (in chronoengine/source/demos/mpi/ ) to learn how to use the functions of this unit.


The MPI programs should not be launched by just clicking on them: in fact you must use the process manager of MPICH2. For instance, in Windows:

  • start wmpiexec.exe,
  • set the application filename, for instance demo_mpibasic.exe,
  • set the number of processes, ex. 2,
  • press 'Execute'.

Some applications require additional parameters, or a precise number of processes, so there is also a better way to run them:

  • start wmpiexec.exe,
  • press 'Load job' and set a MPI job filename (ex: we propared ChronoEngine/bin/data/mpi/demo_mpibasic_config.mpi for demonstrating demo_mpibasic.exe), this will automatically set the program filename, number of processes, etc.
  • press 'Execute'.
Personal tools