* PHYS 743 - Parallel Programming ** General remarks - QUESTION: Do we have time to visit INJ? ** Tentative agenda *** Admin intro **** Projects *** Basic concepts **** ssh, scp, rsync **** Compilation ***** Modules **** Debugging *** Architecture **** Cluster (MPI) ***** Clusters in general ***** At SCITAS **** Multicore (OpenMP) **** Singlecore (SIMD) *** Optimization **** Data access **** Vectorization **** Basic optimization techniques *** Performance measurement **** Key concepts ***** FLOPS, memory bandwidth ***** timing (speedup, scalings) **** Profiling **** Roofline *** Shared memory (OpenMP) [13/13] **** [X] Task parallelism **** [X] OpenMP terminology / Read spec **** [X] Fork-join / Omp parallel / Implicit barriers **** [X] Exercise Hello World / SLURM **** [X] Omp parallel for **** [X] Exercise **** [X] Omp critical (synchronization), atomic **** [X] Barriers **** [X] Omp private **** [X] Omp reduction **** [X] Collapse **** [X] Work sharing constructs **** [X] Exercise Poisson *** Advanced [3/5] **** [X] Schedule **** [X] NUMA / pinning / first touch **** [X] Race condition, accumulation in array (false sharing) **** [-] OpenMP (new features not covered) **** [-] (GPU) *** Distributed memory (MPI) basic [6/8] **** [X] Introduction / Read spec **** [X] MPI enviroment / Hello world [1/3] ***** [?] Print before init ***** [X] Print rank ***** [?] Print conditionaly rank **** [-] MPI terminology **** [X] Point-to-point [2/2] ***** [X] Synchronous / Deadlock ****** example MPI_Send MPI_Recv ***** [X] Asynchronous / race condition **** [X] Collective [3/3] ***** [X] Bcast ***** [X] Gather/scatter ***** [X] Reduce **** [X] Advanced collective [3/3] ***** [X] All ***** [X] All to all ***** [X] Barrier **** [-] MPI Fortran ***** [-] Bindings ***** [-] Asynchronous arrays **** [X] Exercise Poisson *** Distributed memory (MPI) advanced [7/9] **** [X] Gather/Scatterv **** [X] Derived types **** [X] (un)Pack **** [X] Communicator **** [X] Topologies **** [-] IO **** [-] One-sided **** [X] Persistent **** [X] Non blocking collectives *** Hybrid programming **** Mpi init **** Task/thread Repartition **** MPI_Mprobe *** Recap *** Projects *** Pub pour SCITAS