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.
- Teacher: Γεώργιος Γκούμας
- Teacher: Διονύσιος Πνευματικάτος
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