Programming Large-scale Parallel Systems

2023-2024

Algemene informatie

Vakcode XM_40017
Studiepunten 6 EC
Periode P1
Vakniveau 400
Onderwijstaal Engels
Faculteit Faculteit der Bètawetenschappen
Vakcoördinator dr. F. Verdugo Rojano
Examinator dr. F. Verdugo Rojano
Docenten dr. F. Verdugo Rojano
prof. dr. ir. H.E. Bal
Onderdeel van opleiding(en)

Praktische informatie

Voor dit vak moet je zelf intekenen. De inteken- en afmeldtermijnen staan op VU.nl

Onderwijsvorm Hoorcollege

Doelgroepen

Dit vak is ook toegankelijk als:

Dit vak wordt in het Engels aangeboden. Omschrijvingen kunnen daardoor mogelijk alleen in het Engels worden weergegeven.

Doel vak

At the end of the course, students will be able to

  • Understand the main principles of High Performance Computing (Knowledge and understanding)
  • Design and implement efficient parallel algorithms on distributed-memory parallel computers (Applying knowledge and understanding)
  • Recognize and compare different parallel computer architectures (Knowledge and understanding, Making judgements)
  • Make use of different parallel programming models and environments such as MPI and Julia’s task-based distributed-computing model (Applying knowledge and understanding).
  • Analyze the performance of parallel applications and network topologies (Making judgements)
  • Identify the main computational challenges in selected parallel computing applications (Knowledge and understanding)
  • Design parallel algorithms using the Julia Programming Language (Applying knowledge and understanding)


Inhoud vak

This course discusses how to write computer programs that can run in parallel on a large number of processors with the main goal of reducing execution time and solving large problems that cannot fit in a single compute node. You will learn how to design such parallel algorithms in order to minimize communication overhead and load imbalance, how to implement them using different parallel computing models, and how to analyze the performance of the resulting codes and the underlying hardware. Among all parallel programming models and environments available for High Performance Computing, this course focuses on distributed-memory parallelization. You will learn established techniques such as message-passing with MPI, but also more modern approaches like the task-based distributed-computing model provided by the Julia programming language. Several parallel applications are discussed in the course, including partial differential equations, deep learning, N-body simulation, and search algorithms.

Aanvullende informatie onderwijsvormen

  • There are 2 class sessions per week. Part of the course follows the flipped classroom method. Pre-recordings, lecture notes, and exercises are made available in advance for self study, and follow up discussions take place in class meetings to deepen understanding.
  • The course also includes the opportunity to run experiments on the DAS computer cluster.
  • Computer codes used in the course are implemented in the Julia programming language. Previous knowledge of Julia is not required as it will be learned as part of the course.

Toetsvorm

Written exam.

Literatuur

Course material will be made available on Canvas.

Aanvullende informatie doelgroep

Master Business Analytics

Master Computational Science

Master Computer Science

Master Computer Security

Overige informatie

There is also a separate Parallel Programming Practical (6 EC) in Period

3 whose aim is to complement the contents of this course with further practical

skills and experience.