MSE Master of Science in Engineering

The Swiss engineering master's degree


Jedes Modul umfasst 3 ECTS. Sie wählen insgesamt 10 Module/30 ECTS in den folgenden Modulkategorien:

  • ​​​​12-15 ECTS in Technisch-wissenschaftlichen Modulen (TSM)
    TSM-Module vermitteln Ihnen profilspezifische Fachkompetenz und ergänzen die dezentralen Vertiefungsmodule.
  • 9-12 ECTS in Erweiterten theoretischen Grundlagen (FTP)
    FTP-Module behandeln theoretische Grundlagen wie die höhere Mathematik, Physik, Informationstheorie, Chemie usw. Sie erweitern Ihre abstrakte, wissenschaftliche Tiefe und tragen dazu bei, den für die Innovation wichtigen Bogen zwischen Abstraktion und Anwendung spannen zu können.
  • 6-9 ECTS in Kontextmodulen (CM)
    CM-Module vermitteln Ihnen Zusatzkompetenzen aus Bereichen wie Technologiemanagement, Betriebswirtschaft, Kommunikation, Projektmanagement, Patentrecht, Vertragsrecht usw.

In der Modulbeschreibung (siehe: Herunterladen der vollständigen Modulbeschreibung) finden Sie die kompletten Sprachangaben je Modul, unterteilt in die folgenden Kategorien:

  • Unterricht
  • Dokumentation
  • Prüfung
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.

 

Eintrittskompetenzen

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

Lernziele

 

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

 

Modulinhalt

 

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)

 

Lehr- und Lernmethoden

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.

Bibliografie

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

Vollständige Modulbeschreibung herunterladen

Zurück