The course of Parallel Programming aims at providing the students with the fundamentals of programming systems with manycore and or multicore processors. Specifically the course foresees a part devoted to OpenMP and MPI programming and a second one focused on GPU programming exploiting the CUDA development environment. The first part is held by prof. Musci while the second one is given by prof. Leporati.

The exam is conceived as a project. To pass the exam, a project must be developed. 

A list of possible projects (by complexity and development time) is offered by the lecturers and students can choose among them. Different projects must be developed for the two parts.

The general requirements for the realization of a good project are: 

Report: preparation of a synthetic report on the problem faced and the adopted implementation strategies

Coding: writing clear and well-documented code

Test: a test phase in which the correctness of the code is shown on significant benchmark instances

Profiling: performance analysis (speedup and profiling in general) obtained from the parallel algorithm compared to the sequential one