Skip to content

C++14 template library for massively parallel computational grids

Notifications You must be signed in to change notification settings

hel-astro-lab/corgi

Repository files navigation

corgi - C++ Object-oRiented Grid Infrastructure

(...or some other combination of relevant words that spell out another funny word.)


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

In a nutshell:

  • c++-14 compatible compiler is needed,
  • MPI library should be installed, and
  • it is header only; just include and start using!

Examples

Mesh-based simulation

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.

Particle-based simulation

examples/particles implements a particle-based parallel simulation on top of corgi (also relying on patch-based domain super decomposition).

About

C++14 template library for massively parallel computational grids

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published