CdSINFORMATICA E NETWORKING
|HIGH PERFORMANCE COMPUTING||INF/01||LEZIONI||72|
Students are expected to demonstrate a solid knowledge of:
1. fundamental concepts and techniques in parallel computation structuring and design, including parallelization methodologies and paradigms, parallel programming models, their implementation, and related cost models;
2. architectures of high-performance computing systems, including shared-memory multiprocessors, distributed memory multicomputers, clusters, and others. To this goal, the student will be aware of structural models, static and dynamic support to computation and programming models, performance evaluation, capability for building complex and heterogeneous applications and/or enabling platforms, technological features and trends (particular multi-/many-core technology and high-performance networks).
The student must demonstrate the ability to properly correlating the various issues studied in the course in order to deal with problem solving tasks in the definition and design of parallel programs and their run-time support on parallel architectures. The written part will also assess the ability to present a clear report of the solved problem.
- Final oral exam
- Final written exam
- Periodic written exercises (not part of the official exam)
At the end of the course the students will be able to:
1- evaluate different architectural designs of parallel and distributed systems through the application of performance modeling techniques;
2- design parallel applications using a structured methodology supported by cost models and to evaluate the performance achieved on different target execution environments.
During the course some optional homeworks will be assigned to the students (typically on a per-week basis) in order to check the understanding of the presented contents during the lectures.
The course does not have specific objectives in terms of expected behaviors.
The course does not have specific tests to assess the expected behaviors.
The prerequisites of the course are the following:
-Computer Architectures (a basic course of a Bachelor Degree program);
-Algorithms and basic data structures.
Delivery: blended teaching with face-to-face lectures as the basis. Offline recordings of the lectures or, if possible, a simultaneous online streaming in parallel to the face-to-face lectures, as indicated by the recent guidelines of the University of Pisa to face the Covid-19 pandemic.
- attending lectures
- preparation of oral/written report
- participation in discussions
- individual study
Attendance: Advised (in person or remotely)
- Task-based learning/problem-based learning/inquiry-based learning
1. Review of level structuring, processing modules, firmware architecture, assembler machine, memory hierarchies and caching, process level and interprocess communication;
2. Methodology for structuring and programming high-performance parallel applications, basic cost models: metrics, elements of queueing theory and queueing networks, load balancing, static and dynamic optimizations;
3. Parallel paradigms: stream-parallel , data-parallel and their compositions;
4. Run-time supports of parallel programs and their optimization;
5. Shared memory multiprocessors: SMP and NUMA, cost models; interconnection networks and their evaluation, cache coherence;
6. Basic concepts of SIMD and GPUs;
6. Basic concepts of Distributed-Memory Architectures: multicomputers, clusters, distributed heterogeneous platforms.
Marco Vanneschi, "High Performance Computing: Parallel Processing Models and Architectures". Pisa University Press, 2014 (integrated with the errata corrige).
Offline recordings of the lectures are made available or, if possible, a simultaneous online streaming in parallel to the face-to-face lectures is provided, as indicated by the recent guidelines of the University of Pisa to face the Covid-19 pandemic.
The exam consists in a written and in an oral part.