PARALLEL PROGRAMMING AND HPC
cod. 1007846

Academic year 2022/23
3° year of course - Second semester
Professor
- Roberto ALFIERI
Academic discipline
Informatica (INF/01)
Field
Discipline informatiche
Type of training activity
Characterising
48 hours
of face-to-face activities
6 credits
hub:
course unit
in ITALIAN

Learning objectives

The course introduces the principles and basic notions of parallel systems. It presents modern parallel architectures, paralell algorithms and programming methodologies applied to popular architectures (clusters of processors, GPUs)

Prerequisites

Operating systems

Course unit content

Parallel programming of clusters of processors, CPUs and GPUs.

Full programme

- hardware: parallel machines, storage, network (infiniband e omnipath), top500, use case: cluster hpc at unipr

- software: parallel algorithms, problem modeling, efficiency, speedup

- MPI parallelism

- GPU programming

- openMP

- code vectorization

- applications: big data, HPC simulations


Laboratorio: prove sul cluster HPC unipr: gestore code, ambiente software del cluster, profiling, codice parallelo

Bibliography

The website Elly contains references to slides used in the classes and further links to additional material.

Teaching methods

The classes present the classical parallel architectures. It also offers practical experimentation of parallel programming on our HPC cluster.

In summary, parallel programming and algorithms are presented. Teaching is provided in italian and during classes english technical terminology is used as base for international literature reading.

The theory presented during classes is applied to specific problems. Practical exercices are experimented through the analysis of the underlying algorithms. They are expected to be solved individually and/or in group. The team work favours specific skills (critical thinking, argumentation, planning, etc). Discussions are aimed at improving communication skills of students.

The search of solutions for proposed problems allows students to deeply learn concepts and to adapt to different contexts and perspectives.

Assessment methods and criteria

The exam evaluates the student's capability to understand and use the parallel programming techniques. The design of a parallel algorithm and its implementation on a parallel machine is assessed. It is also requires to know the typical architecture of parallel machines.

The exam is structured in a oral or written examination, upon the completion of some exercices assigned during the classes. During the exam, programs are discussed as well as theoretical concepts presented during classes. There are no intermediate exams.

Other information