In case you are not familiar with Conway's game of life, you could find information on the wikipedia: http://en.wikipedia.org/wiki/Conway's_Game_of_Life
In this project you have to implement two programs, one in C/MPI and one in C/MPI/OpenMP and write a report. The code should be original. It should have no similarities with versions already available on the Internet:
Part A1: Design and implement a parallel program in C/MPI which takes as arguments the number of the generations to be calculated, the dimensions of the grid, and the filename that includes the initial state of each cell (generation 0). The program should output the total execution time.
Part A2: You should modify the previous program so that the program stops if all cells are dead on the grid (using global communication).
Part B1: Extend the program A1, so that it uses OpenMP for local loops
Part B2: Extend the program A2, so that it uses OpenMP for local loops
The report should include the following:
R1: Description of the topology of the processes and the distribution of the data to the processes.
R2: Description of how the processes communicate with each other
R3: For each case (A1, A2, B1, B2), and for the following dimensions of the grid: 1x1, 4x4, 9x9, 16x16, 25x25, 36x36 you should calculate the average (over 3-5 executions) speed up and efficiency of your implementation, where:
1) speedup = Tserial/Tparallel
2) efficiency = speedup/(number of processors)
1. The grid is considered to be periodic.
2. You should use non-blocking communication
3. You should divide the grid vertically and horizontally.
4. You should include a makefile in each case