Parallel programming and HPC
Learning outcomes of the course unit
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 contents summary
Parallel programming of clusters of processors, GPUs and many cores.
- 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
- 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.
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.