72778 - High-Performance Computing

Academic Year 2016/2017

  • Teaching Mode: Traditional lectures
  • Campus: Cesena
  • Corso: First cycle degree programme (L) in Computer Science and Engineering (cod. 8615)

Learning outcomes

At the end of the course, students will be acquainted with the fundamental programming techniques for high performance computer architectures. Students will be able to design, implement and benchmark parallel programs on shared-memory and distributed-memory systems.

Course contents

Syllabus

  • Parallel algorithms: synchronous and asynchronous algorithms; parallel programming patterns
  • Introduction to HPC architectures: Flynn taxonomy, shared memory and distributed memory architectures; GPGPU
  • Parallel programming patterns (embarassingly parallel problems; map/reduce; stencil; work farm)
  • SIMD programming
  • Programming shared-memory architectures with C/OpenMP
  • Programming distributed-memory architectures with C/MPI
  • GPU programming with CUDA
  • Performance evaluation of parallel programs

Prerequisites

The course requires good programming skills with the C language in a Unix/Linux environment, and basic knowledge of computer architectures.

Readings/Bibliography

Teaching methods

Lectures; programming exercises in the lab

Assessment methods

Written exam and programming project. The written exam consists of a set of questions on the topics addressed during the lectures. The programming project requires the implementation of a parallel program according to given specifications, and a written report. The project evaluation will consider the clarity, correctness and efficiency of the program submitted for evaluation, and the quality of the accompanying report.

Teaching tools

Lecture slides; programming examples.

Links to further information

http://www.moreno.marzolla.name/teaching/HPC/

Office hours

See the website of Moreno Marzolla