The semiconductor technology has reached physical limitations that prevent greater miniaturization of chips and with it more energy efficient and more powerful processors. Current research focuses on devices with multi-core processors and general purpose graphics processing units on one side and a wide variety of computer clusters and cloud services on the other.
To take full advantage of these devices, it is necessary to know the architecture of these systems and appropriate software interfaces. During the semester we will learn how to make multithreaded programs, Open MP programs for multicore processors, how to exploit general purpose graphics processing units with Open CL library, MPI library for working with clusters, grid systems and computing clouds.
We will learn about the traps of parallel and distributed systems, try to understand them and find the ways to avoid them. At the end of the course you will be able to select the most appropriate hardware platform and write an efficient parallel program for a problem at hand.
Homework assignments for the course are required and are being assessed. Every week students get a short assignment, which is linked to the lectures. To get a positive grade from the homework assignments you need to successfully complete at least 80% of short assignments. Short assignments represent one-third of the final grade. Second-third is obtained from parallelization of more comprehensive algorithm on two different parallel platforms. The last third of the grade is obtained on the oral exam.