| Catalog Content |
Properly using the fundamental terminology of parallel programming; working with modern CPU architecture (cores, hardware threads, cache/memory hierarchy, coherence) and programming models (C/C++ threads, Pthreads, OpenMP, SIMD/vectorization); Managing synchronization (mutexes, semaphores, atomic operations, barriers), race conditions, and memory models; parallel patterns (map, reduce, scan, stencil), task parallelism and load balancing; profiling/optimization; NUMA awareness; scalability analysis and, when necessary, hybrid (OpenMP+MPI) application development on CPU clusters. |