Modules | Area | Type | Hours | Teacher(s) | |
HIGH PERFORMANCE COMPUTING | INF/01 | LEZIONI | 72 |
|
Parallel Processing Methodologies
Shared-memory Parallel Architectures
Distributed-memory Architectures
Interconnection networks (basics)
Cost models and methodologies for performance evaluation
Homeworks during the course (optional), written and oral exam.
Methods:
Further information:
Two midterms are provided: if taken with sufficient rating, they replace the written part of the exam.
Ability to model, analyze and implement parallel processing systems at any level, both processes and their run-time support implementations, and firmware (knowledge about the behavior of HPC-enabling platforms).
Homeworks during the course (optional), written and oral exam.
The needed background in Computer Architecture includes basic concepts in system level structuring, modularity and parallelism design principles, hardware and firmware machine level, assembler machine level, processes and their run-time support, communication, operating systems functionalities, input-output, memory hierarchies and caching, instruction level parallelism, optimizing compilers. In the University of Pisa such concepts and techniques are studied according to a Structured Computer Architecture approach and stressing the issues of performance evaluation, cost model and design techniques. This required background is contained in the following recommended reading:
M. Vanneschi, Structured Computer Architecture Background: Appendix of the High Performance Computing course textbook High Performance Computing –Parallel Processing Models and Architectures, by M. Vanneschi. This Appendix has been ad-hoc written for Computer Science and Networking students, and are based on the Italian book “Architettura degli Elaboratori”, Pisa University Press.
Delivery: face to face
Learning activities:
Attendance: Advised
Teaching methods:
This course deals with two interrelated issues in high-performance computing:
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.
Both issues are studied in terms of structural model, static and dynamic support to computation and programming models, performance evaluation, capability for building complex and heterogeneous applications and/or enabling platforms, also through examples of application cases. Technological features and trends are studied, in particular multi-/many-core technology and high-performance networks.
Attending and studying this course requires proper background knowledge in Structured Computer Architecture. Appendix of the text book contains a detailed review of basic concepts and techniques in Structured Computer Architecture according to the approach and treatment at the Computer Science Department of the University of Pisa.
Course outline: the course is structured into two parts:
1. Structuring and Design Methodology for Parallel Applications: structured parallelism at applications and process levels, cost models, impact of communications, parallel computations as queueing systems / queueing networks, parallel paradigms (Pipeline, Data-flow, Farm, Function partitioning, Data parallel), parallel systems at the firmware level, instruction level parallelism (Pipeline, Superscalar, Multithreaded CPUs), SIMD architectures and GPUs;
2. Parallel Architectures: shared memory multiprocessors (SMP and NUMA architectures), distributed memory multicomputers (Clusters and MPP architectures), run-time support to interprocess communication, interconnection networks, performance evaluation and multicore architectures.
Text book: M. Vanneschi, High Performance Computing: Parallel Processing Models and Architectures. Pisa University Press, 2014.
Written and oral exam