Introduction to Parallel Processing. Shared memory and distributed memory architectures (SMP, COMA, NUMA, cc-NUMA, SMT, Clusters, MPPs). Methods, techniques and interconnection networks (Bus-oriented, Cube, Switch Network, Mixed systems). Clusters as supercomputers. Principles of parallel programming. Design and implementation of parallel programs. Parallelization and partitioning techniques. Parallel programming models: Message passing and shared address space. Synchronization and concurrent data structures. Laboratory exercises: Application development in clusters, multicore and manycore (accelerator) architectures with OpenMP, MPI, CUDA, Cilk and others. Performance analysis.
ECTS : 4
Study Load : theory 1, lab 2
Language : el
Learning Outcomes : 1. **Architectural issues** * Major architectural classes of parallel systems * Interconnection methods for computing nodes (interconnection networks) 2. **Runtime system issues** 3. **Methodologies for designing parallel programs** 4. **Synchronization issues** 5. **Languages, programming models, and tools for parallel programming** * MPI * OpenMP * CUDA