High performance computing

Course objectives

General goals The course aims to introduce HPC (High Performance Computing) systems, their architecture, and their principles of operation. Additionally, the course aims to introduce parallel and distributed programming, with the goal of reducing resolution times for particularly complex problems through the coordinated use of a large number of computing units. Knowledge and comprehension Students will understand the principles underlying HPC systems and how to organize a resolution strategy for an algorithm that can benefit from the presence of multiple computing units. Applying knowledge and comprehension Upon completion of the course, students will be able to create simple parallel and distributed applications that leverage the increased computing capacity of an HPC system. Students will also be able to execute the developed algorithms using an existing computing infrastructure. Judgement skills Students will develop the ability to identify particular types of problems for which the use of a parallel or distributed approach is significantly helpful. Communication skills The students will acquire the technical-scientific language commonly used in this discipline, also thanks to the study and to the practice. Learning skills Students who pass the exam will have learned the paradigms to apply parallel and distributed computing techniques to solve complex problems, utilizing the computing capabilities of an HPC system.

Channel 1
UMBERTO FERRARO PETRILLO Lecturers' profile

Program - Frequency - Exams

Course program
1.Introduction to HPC Systems Introductory definition of an HPC system Architectures of an HPC system Scalability, performance, and load balancing in HPC systems 2. Introduction to the Linux shell The Linux operating system Basic commands shell scripting 3. Parallel Programming Principles of parallel programming Multithreading and multiprocessing Parallel programming in Python Examples of parallel Python applications 4.Distributed Programming Principles of distributed programming OpenMPI Distributed programming in Python Examples of distributed Python applications • Performance optimization • Profiling, debugging, and testing tools for HPC applications • Case studies
Prerequisites
A prerequisite for access to the course is advanced knowledge of a programming language. Knowledge of the Python and/or R language is particularly recommended.
Books
Lecture notes, scientific papers and other learning materials provided by the teacher during the course.
Exam mode
The final exam consists of a laboratory test in which students will be asked to design and develop a distributed or parallel algorithm for solving a given problem, using the HPC infrastructure available at the Department of Statistical Sciences.
Bibliography
Lecture notes, scientific papers and other learning materials provided by the teacher during the course.
  • Lesson codeAAF2350
  • Academic year2025/2026
  • CourseStatistical Sciences
  • CurriculumData analytics
  • Year1st year
  • Semester2nd semester
  • CFU3