Modules | Area | Type | Hours | Teacher(s) | |
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, GPUs, 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 interconnection 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 runtime support on parallel architectures. The written part will also assess the ability to present a clear report of the solved problem.
Methods:
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.
Learning activities:
Students can find the course material in the Team of the course. Students can subscribe to the Team (using their UNIPI credentials) with code number svutntx.
Attendance: Advised (in person or remotely)
Teaching methods:
1. Review of level structuring, processing modules, firmware architecture, assembler machine, memory hierarchies and caching, processes 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. Runtime 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).
A rich set of slides will be made available to the students during the course on a weekly basis.
Offline recordings of the lectures will be made available. Students can subscribe to the Team of the course (using their UNIPI credentials) with code number svutntx.
The exam consists in a written and in an oral part. In special circumstances (e.g., few students attending the course), the oral and written exam can be merged into a single, longer oral exam.