Course: Parallel Programming

» List of faculties » PRF » KI
Course title Parallel Programming
Course code KI/EPAR
Organizational form of instruction Lecture + Lesson
Level of course Master
Year of study not specified
Semester Summer
Number of ECTS credits 7
Language of instruction English
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Course availability The course is available to visiting students
Lecturer(s)
  • Fišer Jiří, Mgr. Ph.D.
  • Posel Zbyšek, doc. RNDr. Ph.D.
Course content
1. - 2. Parallel hardware (Flynn taxonomy, loosely and tightly coupled systems, NUMA, SIMD support on AMD/Intel x86_64 platform, AMD, compute clusters, massive parallelism via GPGU) 3. Parallelism limitations (Amdahl's and Gustafson's law, memory organization, cache impact), parallelism from software perspective (asynchronous and concurrent programming, computational threads, data and task-oriented parallelism, memory sharing vs. message passing, synchronization usable for HPC tasks) 4. Module `multiprocessing`, parallel maps, explicit use of communication queues 5. - 6. MPI in Python (point-to-point communication, collective communication) 7. - 8. Parallelism over shared memory, OpenMP and its use in Python (Numba, Cython, C code integration) 9 - 11. Using the CUDA platform in Python (Numba Cuda, Python CUDA) 12 - 14. Modern approaches to HPC parallelism (e.g. parallelism in Julia, Intel oneAPI, content will be adapted to current trends)

Learning activities and teaching methods
unspecified
Learning outcomes
The course covers the use of parallelism including high performance computing. In addition to the necessary theoretical background, it focuses on the use of existing tools and libraries on the Python platform. The course includes both basic approaches to parallelism: systems with message passing (the multiprocessing module, classical MPI) and systems over shared memory (based on OpenMPI and CUDA). A key part of the course are exercises in which students can experience parallel programming not only on desktop computers and laptops with multiple cores, but also on the faculty computing cluster and on specialized hardware (currently Nvidia Jetson Nano).

Prerequisites
programming (Python)

Assessment methods and criteria
unspecified
preparation and oral defense of a seminar work aimed at implementation of a parallel version of a non-trivial algorithm using CPU and GPU, verification of general factual knowledge
Recommended literature


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester