Parallel Programming 7.5 credits
About the course
The course gives an introduction to the subject of parallel programming. The focus is on shared-memory and distributed-memory architectures. Such architectures appear in everything from laptops and mobile devices to the world's largest supercomputers. The course teaches both theory and practical skills necessary to construct and reason about efficient parallel programs. The course covers theoretical and practical tools used to assess the quality of parallel programs, as well as the two most used parallel programming models, namely OpenMP and MPI. Other topics include: parallel computer architectures, parallel programming patterns, synchronization, dependencies, debugging and profiling of parallel code.