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