The seminar will present the following problems:
- Task scheduling on multicore CPUs and NUMA systems
- Synchronization on multi-core CPUs and multiprocessor systems
- Efficiency of the data transfers between additional devices and host memory
- Load balancing between CPU and additional accelerators
- Transforming problems into data parallel tasks and their mapping to GPUs
- Shared memory access, cache-aware programming, and atomic operations on GPU
- Solving irregular workloads on GPUs (persistent threads, dynamic parallelism)
- Xeon Phi devices and the most important differences between Intel MIC and GPU architectures
A practical seminar, which is a continuation of Programming in Parallel Environment lectures, focuses on more advanced aspects of parallel programming.
The main objective is to practically introduce more complicated problems to the students regarding programming of multiprocessor NUMA servers and employing additional parallel devices, especially the GPGPUs (CUDA) and Xeon Phi devices.
The students will be given several problems, which will be analyzed during lectures and implemented by the students in their home assignments. The results will be verified and subjected to collective discussion