MSE Master of Science in Engineering

The Swiss engineering master's degree


Ogni modulo equivale a 3 crediti ECTS. È possibile scegliere un totale di 10 moduli/30 ECTS nelle seguenti categorie: 

  • 12-15 crediti ECTS in moduli tecnico-scientifici (TSM)
    I moduli TSM trasmettono competenze tecniche specifiche del profilo e si integrano ai moduli di approfondimento decentralizzati.
  • 9-12 crediti ECTS in basi teoriche ampliate (FTP)
    I moduli FTP trattano principalmente basi teoriche come la matematica, la fisica, la teoria dell’informazione, la chimica ecc. I moduli ampliano la competenza scientifica dello studente e contribuiscono a creare un importante sinergia tra i concetti astratti e l’applicazione fondamentale per l’innovazione 
  • 6-9 crediti ECTS in moduli di contesto (CM)
    I moduli CM trasmettono competenze supplementari in settori quali gestione delle tecnologie, economia aziendale, comunicazione, gestione dei progetti, diritto dei brevetti, diritto contrattuale ecc.

La descrizione del modulo (scarica il pdf) riporta le informazioni linguistiche per ogni modulo, suddivise nelle seguenti categorie:

  • Insegnamento
  • Documentazione
  • Esame
Parallel and distributed computing (TSM_ProgAlg)

 

The objective of this module is to provide the student with an introduction to parallel computing and algorithms. Students learn to parallelize systems at three different levels: Shared memory systems, distributed memory systems, and heterogeneous shared memory systems. For all three systems, which can be part of a high-performance cluster, students learn the necessary parallelization techniques and a few classical parallel algorithms.

This course includes hands-on work to train students in the application of parallel programming techniques and the programming and analysis of parallel algorithms.

 

Requisiti

  • Procedural programming (C/C++ knowledge is helpful
  • Algorithms and data structures
  • Basic notion of complexity analysis and big-O notation
  • Basic notions of concurrent programming (Threads)

Obiettivi di apprendimento

 

By the end of the course, students will know:

  • the most common heterogeneous parallel hardware infrastructures
  • different ways to model and efficiently program these architectures
  • how to assess the performance of parallel algorithms
  • how to efficiently implement parallel algorithms
  • how to choose the right parallel algorithm to solve a specific problem on a specific parallel architecture

 

Contenuti del modulo

 

Introduction (30%)

 

  • Motivation and high-performance cluster model
  • Basic concepts in parallel programming in C++
  • Asymptotic analysis of parallel programs
  • Performance metrics for parallel systems
  • Decomposition and mapping techniques for load balancing
  • Scalability of parallel systems

 

Shared memory systems (20%)

 

  • Architectures of widely used multi-core systems
  • Cache coherence in multiprocessor systems
  • Parallel programming models (OpenMP)
  • Parallel algorithms (numerical, sorting, graphs)

Distributed memory systems (30%)

 

  • Architectures of distributed memory systems
  • Communications models and communication costs
  • Message passing paradigm (MPI)
  • Collective operations and their costs
  • Distributed algorithms (numerical, sorting)

Heterogeneous shared memory systems (20%)

 

  • GPU architectures
  • SIMD programming models (vectorization, SYCL)
  • Matrix-vector and matrix-matrix multiplication
  • GPU algorithms (numerical, image processing)

 

Metodologie di insegnamento e apprendimento

The most important basics are taught in theory lessons in face-to-face classes. In between, students work on the practical exercises at home and exchange information via online channels.

Bibliografia

A. Introduction to Parallel Computing, Zbigniew J. Czech, Cambridge University Press, 2017
B. An Introduction to Parallel Programming, 1st edition, Peter Pacheco , Morgan Kaufmann Publishers Inc, 2011

Scarica il descrittivo completo del modulo

Indietro