Scheda insegnamento

Anno Accademico 2021/2022

Conoscenze e abilità da conseguire

The students will acquire the basic concepts of algorithm parallelisation and the practical skills to implement a parallel code using different parallelisation strategies. The methods to test the computational efficiency of a parallel algorithm and to assess its performance in terms of scaling, work load, and memory consumption will be presented. Furthermore, the students will learn the basic techniques for handling, monitoring, and exploiting the use of shared computational architectures ranging from small computer clusters to large supercomputing facilities. The laboratory part of the course will focus on some selected applications of these methods to standard astrophysical and cosmological problems


1. Introduction to Parallel Computing
1.1 General overview and scientific applications
1.2 Concepts and terminology
1.3 Memory Architectures
1.4 Parallel Programming Models
1.5 Design of parallel algorithms
1.6 Laboratory exercises on basic parallelisation strategies

2. Practical tools to work in a shared computing environme
2.1 Introduction to bash scripting
2.2 Bash basic commands
2.3 Shell Configuration
2.4 Regular Expressions
2.5 Remote connection and data handling/transfer/archiving
2.6 Laboratory exercises on bash scripting and data handling

3. Introduction to MPI parallel programming
3.1 Introduction to Message Passing
3.2 Environment Management
3.3 Point-to-Point communications
3.4 Collective communications
3.5 Group and Communicator Management
3.6 Laboratory exercises on MPI parallelisation

4. Applications to astrophysical and cosmological problems
4.1 General overview of N-body gravity solvers
4.1 Parallelisation strategies of N-body algorithms
4.2 Domain decomposition and load balancing
4.3 The TreePM N-body code Gadget2
4.4 Laboratory: Practical examples of N-body simulations
4.4.1 Galaxy collisions
4.4.2 The formation of a massive galaxy cluster
4.4.3 Cosmic Large-Scale Structure formation



  • Lecture notes prepared by the teacher (main reference)
  • Blaise Barney: Introduction to Parallel Computing (Lawrence Livermore National Laboratory online tutorial) - Blaise Barney: Message Passing Interface (Lawrence Livermore National Laboratory online tutorial)
  • Volker Springel: High-Performance Computing and numerical modelling (arXiv:1412.5187)


Grama, Gupta, Karypis, Kumar: Introduction to Parallel Computing (Addison Wesley)

Metodi didattici

Part of the lectures (4 CFU) will be standard frontal lectures aimed at illustrating the main theoretical concepts of HPC. These lectures will be held in a standard teaching room and will be delivered using projected slides.

Part of the lectures (2 CFU) will be “hands-on” sessions carried out in the computing lab, exploiting a direct access to the DIFA HPC computing cluster, in order to apply the theoretical concepts acquired during the frontal lectures. The students will have to solve problems and exercises under the supervision of the teacher.

As concerns the teaching methods of this course unit, all students must attend Module 1, 2 [https://www.unibo.it/en/services-and-opportunities/health-and-assistance/health-and-safety/online-course-on-health-and-safety-in-study-and-internship-areas] on Health and Safety online”

Modalità di verifica e valutazione dell'apprendimento

The final exam and its evaluation will be based on 1) implementation on the shared computing environment provided by the DIFA HPC cluster of two numerical codes, one related to parallel programming, and one related to shell scripting; 2) a written report on the two exercises describing their implementation strategies, their computational performance, and possible alternative approaches; and 3) an oral exam in which the numerical codes and the written report will be discussed, and where the general knowledge about the topics of the course will be verified.

The registration for the oral exam and the receipt of the numerical codes and the associated reports will be closed 7 days before the exam date.

Strumenti a supporto della didattica

The main teaching tool of the course will be provided by the DIFA HPC computing cluster, a distributed memory cluster with about 1000 virtual cores. During the laboratory sessions, the access to a fraction of the cluster computing nodes will be reserved to the students of this course in order to allow for “hands-on” practicing on the parallel computing methods described in the frontal lectures.

Orario di ricevimento

Consulta il sito web di Marco Baldi