Skip to content
Snippets Groups Projects
Milan Jaros's avatar
Milan Jaros authored
35456c58
History
Name Last commit Last update
src
tests
README.md

John Conway's Game of Life

About

Description of Game of Life (CZ)

  • by the British mathematician John Horton Conway
  • published in October 1970
  • a two-state, two-dimensional cellular automaton which, by its behaviour
  • resembles the evolution of a community of living organisms
  • an example of a system where simple rules give rise to complex
  • behaviour - emergent structures emerge

Game description

  • The playing area is a 2D square grid
  • the grid squares are called cells, each cell is either alive (shown in red) or dead (shown in black), cells outside the grid are dead
  • each cell is adjacent to other cells it touches with an edge (orthogonally) or vertex (diagonally) - Moore's neighborhood
  • a colony of cells in the lattice survives from generation to generation
  • the state of the cell in the new generation depends on its current state and number of living neighbours

Usage of the application: gameoflife use_case
 gameoflife tests/life0.bmp (tiny)
 gameoflife tests/life1.bmp (small)
 gameoflife tests/life2.bmp (large)

STEP 0: Create git repository (10%)

Your code should be forked from this repository and hosted on code.it4i.cz as a private project with access for all teachers.

STEP 1: Building the library (10%)

Provide compilation script for your application (the script should run independently on a current path). Script should load all necessary modules and call cmake.

STEP 2: Analysis of the application (10%)

Use Arm map (module Forge) to analyze a sequential run of your application with given use case (tests/large). Identify the most time consuming regions that can be parallelized by OpenMP.

STEP 3: Use OpenMP to run the application in parallel (10%)

Put OpenMP pragmas to a correct positions with appropriate variables visibility in order to utilize more threads effectively.

STEP 4: Test the correctness of the code (10%)

Create script that automatically check correctness of your application for at least 3 different test cases. Comparison can be implemented as comparison of outputs of sequential and parallel runs.

STEP 5: Test the behavior of the code on the Karolina cluster (40%)

  1. Implement time measurement for all parallel regions using omp_get_wtime().
  2. Create script for run strong scalability measurement (PBS script).
  3. Evaluate strong scalability of measured regions up to 128 threads and different thread affinity (compact, scatter, balanced, none).
  4. Prepare charts for all measurements.

STEP 6: Presentation of your project (10%)

Prepare presentation in form of slides (pptx, pdf). The slides should address all topics requested above.