corgi
is a c++ template library for building massively parallel grids.
It aims to be completely memory local, so every node will only need to work on the data that it currently sees/owns. Underlying communication is done using MPI (Message Passing Interface). Novelty is in the load balancing scheme that applies cellular automata kind of rules to even out load imbalances and tries, at the same time, to minimize the inter-node communication.
This is still work-in-progress
- c++-14 compatible compiler is needed,
MPI
library should be installed, and- it is header only; just include and start using!
examples/game-of-life
implements a cellular automata simulation with a patch-based domain super decomposition parallellization strategy. After defining send_data
and recv_data
corgi can update boundary values of any kind of memory layout.
examples/particles
implements a particle-based parallel simulation on top of corgi (also relying on patch-based domain super decomposition).