MSE Master of Science in Engineering

The Swiss engineering master's degree


Chaque module vaut 3 ECTS. Vous sélectionnez 10 modules/30 ECTS parmi les catégories suivantes:

  • 12-15 crédits ECTS en Modules technico-scientifiques (TSM)
    Les modules TSM vous transmettent une compétence technique spécifique à votre orientation et complètent les modules de spécialisation décentralisés.
  • 9-12 crédits ECTS en Bases théoriques élargies (FTP)
    Les modules FTP traitent de bases théoriques telles que les mathématiques élevées, la physique, la théorie de l’information, la chimie, etc., vous permettant d’étendre votre profondeur scientifique abstraite et de contribuer à créer le lien important entre l’abstraction et l’application dans le domaine de l’innovation.
  • 6-9 crédits ECTS en Modules contextuels (CM)
    Les modules CM vous transmettent des compétences supplémentaires dans des domaines tels que la gestion des technologies, la gestion d’entreprise, la communication, la gestion de projets, le droit des brevets et des contrats, etc.

Le descriptif de module (download pdf) contient le détail des langues pour chaque module selon les catégories suivantes:

  • leçons
  • documentation
  • examen 
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.

 

Compétences préalables

  • 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)

Objectifs d'apprentissage

 

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

 

Contenu des modules

 

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)

 

Méthodes d'enseignement et d'apprentissage

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.

Bibliographie

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

Télécharger le descriptif complet

Retour