Skip to content

Exam assignments of the Foundations of High Performance Computing course.

License

Notifications You must be signed in to change notification settings

leonardomusini/FHPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FHPC - Exam Assignments

This repository contains the solutions of the exam assignments of the course "Foundations of High Performance Computing" offered by Master's Degree in Data Science and Scientific Computing at the University of Trieste.

Each folder contains its respective assignment and FHPC_report.pdfincludes the reports for both exercises.

Some scripts in this repository are slightly modified versions of code from the official course GitHub repository.

Exercise 1: Parallel Programming on Game of Life

This exercise involves the implementation of the famous Conway's Game of Life using a hybrid parallel computing approach with MPI (Message Passing Interface), to split the grid and assign a block to each MPI process, and OpenMP (Open Multi-Processing), to utilize multi-core advantages on each MPI task.

The game is implemented in two types of evolutional strategies:

  • Ordered Evolution: cells are upgraded sequentially in a row-major order.
  • Static Evolution: cells in the grid are evaluated simultaneously, and their updates are applied collectively at the end of each timestep.

To assess the performance of the algorithm, three types of scalability studies are conducted:

  • OpenMP Scalability: the number of MPI tasks is fixed, while the number of threads per task is increased up to the number of cores present in the socket.
  • Strong MPI Scalability: the size of the matrix is kept fixed, while the number of MPI tasks is increased on multiple nodes.
  • Weak MPI Scalability: the size of the matrix increase proportionally with the number of MPI tasks.

Exercise 2: Comparing MKL, OpenBLAS and BLIS on matrix-matrix multiplication

In this exercise, we compare the performance of three BLAS libraries (Intel MKL, OpenBLAS and BLIS) on matrix multiplication, computed using level 3 BLAS function called gemm. In the study the computations are performed using single and double precision, exploring different thread allocation policies on two ORFEO nodes: THIN and EPYC.

To analyze the performance, two scalability tests are conducted:

  • Size Scalability: increasing the size of the matrices while keeping the number of cores fixed.
  • Core Scalability: increasing the number of cores while keeping the matrix size constant.

About

Exam assignments of the Foundations of High Performance Computing course.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published