- Docente: Moreno Marzolla
- Credits: 6
- SSD: INF/01
- Language: Italian
- 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
- Peter Pacheco, An Introduction to Parallel Programming, Morgan Kaufmann, 2011, ISBN 978-0123742605
- I. Foster. Designing and Building Parallel Programs. Addison-Wesley, 1995, ISBN 978-0201575941; Available online.
- Jason Sanders, Edward Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley, 2010, ISBN 978-0131387683
- Georg Hager, Gerhard Wellein, Introduction to High Performance Computing for Scientists and Engineers, CRC Press; 1 edition (July 2, 2010), ISBN 978-1439811924
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