Harokopio University
School: School of Digital Technology
Department: Informatics and Telematics
Program: Undergraduate Programme

Modern Parallel Architectures and High-Performance Programming

Semester: 8 ECTS: 5.0 Elective Erasmus

General

Code: ΥΠ26

Language: Greek with translation in English

Delivery: Face-to-face

Prerequisites: Programming Ι (ΥΠ02)
Programming II (ΥΠ05)
Discrete Mathematics (ΥΠ09)
Computational Mathematics (ΜΥ01)
Numerical Analysis (MY03)

Workload

  • Lectures: 39.0 hours
  • Lab: 0.0 hours
  • Study: 61.0 hours
  • Project: 12.5 hours

Course Content

Introduction to Parallel Computing – Models and Concepts
Amdahl’s and Gustafson’s Laws
Flynn’s Taxonomy – SISD, SIMD, MISD, MIMD
Network Topologies and Interconnection Architectures – Mesh, Torus, Fat Tree
Shared and Distributed Memory Architectures
Message-Passing and Heterogeneous Architectures
Cache Coherence and Memory Models
Non-determinism, Race Conditions, Critical Sections
Parallel Programming with:
- MPI (Message Passing Interface)
- OpenMP and POSIX Threads
- CUDA, OpenACC, GPU Kernels
Instruction-Level Parallelism (ILP), Pipelining, SMT
Introduction to Roofline Model and Performance Benchmarking (e.g., LINPACK)
Hybrid Systems (e.g., MPI + OpenMP / CUDA)
HPC Applications: Scientific Computing, Climate Modeling, Big Data

Learning Outcomes

The aim of the course is to introduce students to modern parallel processing architectures and high-performance programming techniques. Students study key models and principles of parallel execution, such as Amdahl’s Law, Flynn’s taxonomy, and performance modeling (e.g., Roofline model), while examining computing architectures such as multicore CPUs, GPUs, and heterogeneous systems.

During the course, students understand concepts like non-determinism, race conditions, critical sections, synchronization, and mutual exclusion. Parallel programming environments such as MPI, OpenMP, POSIX Threads, CUDA, and OpenACC are introduced and applied, including hybrid techniques (e.g., MPI+CUDA).

The lab component includes real-world application scenarios, such as parallel solutions of linear systems, processing of large datasets, and performance optimization on GPU systems.

Skills

Independent work
Team work
Search, analysis and synthesis of data and information with the use of the assorted technologies
Decision Making
Adaptation in new conditions