Tantárgy adatlapja
Students will learn the about parallel hardware and parallel programming methods, including shared memory parallelism and distributed memory parallelism on traditional CPUs, and programming graphical processing units (GPUs).The course covers the following topics: 1. C language recap. Basic notions: parallelism and concurrency, decomposition and scheduling strategies, Amdahl’s Law and Gustafson’s Law; 2. Shared memory parallelism: OpenMP, data parallelism; 3. Shared memory parallelism: hardware, cache, coherency, task parallelism; 4. Distributed memory parallelism: CSP model, MPI, synchronous operations; 5. Distributed memory parallelism: asynchronous operations, collectives; 6. Performance modelling: metrics, bandwidth, computational throughput, latency; 7. Parallel scientific computations: dense and sparse linear algebra, partial differential equations; 8. GPU programming: OpenACC, memory spaces, data movement between CPU-GPU; 9. GPU programming: CUDA, blocks, registers, local (shared) memory, reductions, atomics – resource-constrained environment; 10. Programming heterogeneous architectures with OneAPI and SYCL: comparison to CUDA, utilizing various CPU and GPU architectures