Most new computer architectures are parallel, requiring programmers to know the basic issues and techniques for writing this software. This course is an introductory undergraduate course on parallel computing, organized around various parallel computing models:

  • shared memory (OpenMP)
  • distributed memory (MPI) 
  • GPU accelerators (OpenCL). 

Within each model, we develop and analyze sample algorithms, study practical issues such as programming language and hardware support, and undertake performance prediction and experimental performance analysis. You will be provided with a foundation in various programming models and varieties of parallelism in current hardware.

Upon completion, you should:

  • be able to design and analyze parallel algorithms for a variety of problems and computational models
  • be familiar with the hardware and software organization of high-performance parallel computing systems, and
  • have experience with the implementation of parallel applications on high-performance computing systems, and be able to measure, tune, and report on their performance.


A major component of this course is a group project where students will implement parallel program of their choice. As part of the learning experience, students will discuss ideas, devise a plan, and divide up the work as a team consisting of 2-3 members. Toward the end of class (the 2nd week in January), project presentations will be delivered by each team.

Prerequisites:

  • Undergraduate-level familiarity with the design and analysis of sequential algorithms, elementary operating systems concepts, and knowledge of essential computer organization are required.
  • Throughout the course, I will make certain assumptions about your knowledge. In particular, I will assume that You can program proficiently in the C programming language.


TextbookIntroduction to Parallel Computing: From Algorithms to Programming on State-of-the-Art Platforms by Trobec, R., Slivnik, B., Bulić, P., Robič, B.

The lectures in Parallel and Distributed Systems and Algorithms begins on Tuesday, October 8, at 5PM in the room P22.
Zadnja sprememba: ponedeljek, 7. oktober 2019, 11.10