Master Program (Laurea Magistrale) in Computer Science and Networking

Academic Year 2012-13


High Performance Computing


Course objectives

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.

An initial part is dedicated to review basic concepts and techniques in structured computer architecture, in order to render the different backgrounds of students as uniform as possible.


Course outline

Part 0: Background - Structured Computer Architecture

Structuring by levels and processing modules, The firmware level, The assembler machine and its basic interpreter, Processes and virtual memory, Memory hierarchies and cache architecture, Interprocess communication mechanisms and their run-time support

Part 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

Part 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, Multicore architectures


Course material and information

  1. Introduction to Master Program in Computer Science and Networking 2012-13

  2. Course Introduction, teaching material and approach, exams

  3. Course Notes - Cover and Outline

  4. Course Notes - Part 0 - Background on Structured Computer Architecture

  5. Errata Corrige of Part 0

  6. Homework 1

  7. Homework 2

  8. Course Notes - Part 1 - Parallel Computing Methodology

  9. Appendix to Part 1: document of Gabriele Mencagli on parallel graphs resolution

  10. Homework 3

  11. Homework 4

  12. Errata-Corrige of Part 1

  13. 1st Midterm: solution

  14. 1st Midterm: results

  15. Homework 5

  16. Course Notes - Part 2 - Parallel Architectures

  17. Homework 6

  18. Homework 7

  19. Errata-Corrige of Part 2

  20. Distributed Memory Architectures. Course conclusion, research topics.

  21. 2nd Midterm: solution

  22. 2nd midterm: results

  23. 1st appello: solution

  24. 1st appello: results

  25. 2nd appello: solution

  26. 2nd appello: results

  27. 4th appello: questions

  28. 5th appello: questions

  29. 5th appello: results