The aim of this course is to provide basic knowledge on the architecture of parallel processing systems, along with a minimum of programming skills essential to using such systems. As far as the programming part is concerned, the emphasis is on parallel message-passing programming using MPI, but the OpenMP shared memory paradigm is also practiced. GPU architecture is presented, and GPU programming with OpenCL is practiced. Architectural aspects of large-scale computing platforms are presented.
Students will be provided with knowledge in the basic aspects of modern high-performance computing systems (pipeline/superscalar processors, shared-memory/message-passing multiprocessors, vector processors, GPUs, cloud-based platforms) and basic programming skills for high-performance computing (cache optimization, OpenMP, MPI, OpenCL, map-reduce/dataflow). Students will be involved in project activities.
Basic knowledge of computer architecture, fair programming skills.
Lessons, practicals, individual study with textbooks
John Hennessy, David Patterson: Computer architecture: a quantitative approach (fifth edition), Morgan Kaufmann. Here is the online version of Jan Foster's book: Designing and Building Parallel Programs, Addison Wesley. Slides, tutorials, and code samples, that can be found on Aulaweb, integrate but do not replace the textbooks.
Ricevimento: Appointment by email
DANIELE D'AGOSTINO (President)
GIORGIO DELZANNO (President)
ANNALISA BARLA
NICOLETTA NOCETI
The exam consists of a written essay on topics of the course suggested by the instructor. The evaluation takes into account the work done during the practicals. Those who do not participate in the practicals shall take an additional practical test on parallel programming.
More info at http://www.disi.unige.it/person/CiaccioG/hpc.html