A C++ program to simulate the cellular automaton in three dimensions. Finds the best scalability (between OpenMP and MPI) that can be achieved.
In the standard game, cells that have exactly Fl = Fu = 6 neighbors are born in the next time step.
Cells that have El = 5 or Eu = 7 living neighbors will survive to the next time step.
Cells that only fewer than El = 5 neighbors will die before the next time step from loneliness.
Cells that have more than Eu = 7 neighbors, will die before the next time step from overpopulation (or lack of resources).
The game, if uses the above rule, then (El,Eu,Fl,Fu) = (5,7,6,6)
Non-Periodic Boundary conditions are considered.
The following plots show the scalabilty that can be achieved using MPI and OpenMP.
The communication between grid chunks is handled using MPI and the convolutional operation using OpenMP.