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) |
---|
|
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 semester |
---|