|
Week - 1 |
Introduction to parallel programming; CPU architecture, speedup criteria (Amdahl/Gustafson), fundamental concepts |
|
Week - 2 |
Multithreading with C/C++: C++ and Pthreads Fundamentals |
|
Week - 3 |
Introduction to OpenMP: Parallel regions and basic directives |
|
Week - 4 |
Data dependencies & race conditions; critical sections, atomics, memory model |
|
Week - 5 |
Synchronization tools: mutex, semaphore, condition variables, barriers |
|
Week - 6 |
Reductions and scans (prefix sum); basic parallel patterns (map/reduce/stencil) |
|
Week - 7 |
Memory hierarchy: cache locality (temporal/spatial), line alignment, data placement |
|
Week - 8 |
Cache coherence & false sharing; NUMA architectures and memory binding (affinity) |
|
Week - 9 |
SIMD/Vectorization: compiler auto-vectorization, SSE/AVX concepts, overview of basic intrinsics |
|
Week - 10 |
Task parallelism & job queues; OpenMP tasking, granularity, and load balancing |
|
Week - 11 |
Performance measurement: timers, profiling tools (e.g., perf/VTune/LIKWID overview) |
|
Week - 12 |
Scalability analysis: strong/weak scaling, acceleration/efficiency, ceiling analyses |
|
Week - 13 |
Hybrid programming: Multi-node studies on CPU clusters using OpenMP + MPI |
|
Week - 14 |
Current trends and portability: C++, oneTBB, OpenMP advanced topics; course overall evaluation |