Simulations with MPI
The package is designed so that the same core functions are used and only a small backend handles the differences between MPI or multithreading. This means, the development goal was:
Code that runs with multithreading should also work with MPI without changes!
However, currently not all features are supported with MPI. A table with an overview is shown below.
Currently supported features:
| Job type | MPI | 
|---|---|
| Job(::Body, ::VelocityVerlet) | ✅ | 
| Job(::Body, ::DynamicRelaxation) | ✅ | 
| Job(::MultibodySetup, ::VelocityVerlet) | ❌ | 
Setting up simulations for MPI
If a script containing a simulation runs with multithreading and the features are supported with MPI, then this same script can be run with:
mpiexecjl -n <number of ranks> julia --project path/to/script.jlPlease refer to the MPI.jl documentation of mpiexecjl for installation and setup instructions.
Furthermore, there are helper functions that improve the setup of MPI simulations, such as enable_mpi_timers!, @mpiroot, @mpitime, or mpi_isroot.