Skip to content

Latest commit

 

History

History
43 lines (27 loc) · 1.91 KB

README.md

File metadata and controls

43 lines (27 loc) · 1.91 KB

Game of Life One-sided MPI

About

This is an excerpt from my BSc thesis in the Engineering Physics programme at the dept. of Computational Science, Uppsala universitet. From this repository, the One-sided implementation as well as a two-sided MPI_Sendrecv (for comparison) can be compiled to run on a system with an installation of OpenMPI. The data passing between the nearest neighbors is done through halo exchange by using derived datatypes of boundary rows and columns

Halo exchange

Compiling and running

Clone the repository and run Make in the root directory.

Running the program

mpirun -np <NPROCS> <ONESIDED_GOL> <SIZE> <ITERS> <VISUALIZE (1 or 0)>

Where the visualization shows one arbitrary rank for debugging purposes. If the grid dimensions are incorrect

Either <NPROCS> not a perfect square or \n<PROBLEM SIZE> not divisible by sqrt<NPROCS>

will be written to the console.

Results

This is results from running the code on the UPPMAX Rackham cluster using the modules GCC 9.2.0 and OpenMPI 4.0.2.

Runtime

Runtime

Strong scaling

Strong scaling

Weak scaling

Weak scaling

Efficiency

Efficiency

Acknowledgements

The computations was enabled by resources in project snic2021-22-633 provided by the Swedish National Infrastructure for Computing (SNIC) at UPPMAX, partially funded by the Swedish Research Council through grant agreement no. 2018-05973.