cod. 1007846

Academic year 2019/20
3° year of course - Second semester
Academic discipline
Informatica (INF/01)
Discipline informatiche
Type of training activity
56 hours
of face-to-face activities
6 credits
course unit

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 and many cores)


Systems architecture, Operating systems

Course unit content

Parallel programming of clusters of processors, GPUs and many cores.

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


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 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. In case of missing exercises, a practical test will be given (e.g. an implementation of a parallel program). There are no intermediate exams.

Other information

- - -