2019-2020 / INFO0939-1

High performance scientific computing

Duration

30h Th, 15h Pr, 20h Proj.

Number of credits

 Master of Science (MSc) in Aerospace Engineering5 crédits 
 Master of Science (MSc) in Biomedical Engineering5 crédits 
 Master of Science (MSc) in Data Science5 crédits 
 Master of Science (MSc) in Electrical Engineering5 crédits 
 Master of Science (MSc) in Computer Science and Engineering5 crédits 
 Master of Science (MSc) in Computer Science and Engineering (double diplômation avec HEC)5 crédits 
 Master of Science (MSc) in Data Science and Engineering5 crédits 
 Master of Science (MSc) in Computer Science5 crédits 
 Master of Science (MSc) in Computer Science (double diplômation avec HEC)5 crédits 
 Master of Science (MSc) in Engineering Physics4 crédits 

Lecturer

Christophe Geuzaine

Language(s) of instruction

English language

Organisation and examination

Teaching in the first semester, review in January

Schedule

Schedule online

Units courses prerequisite and corequisite

Prerequisite or corequisite units are presented within each program

Learning unit contents

Description of the course:
This course tackles advanced scientific calculation methods, both from a theoretical point of view and from the point of view of the implementation of high-performance applications.
Table of Contents:
Introduction to high performance scientific computing, parallel computer architectures, latency and bandwidth, spatial and temporal locality, Amdahl's law, distributed memory programming with MPI, shared memory programming with OpenMP, algorithms for ordinary differential equations, algorothms for partial differential equations, direct and iterative linear solvers.
The course uses the C programming language for the  implementation of algorithms, both serial and parallel. Practical work covers the use of parallel computers (UNIX system, remote login, command line, job scheduler), programming with BLAS and LAPACK libraries and the parallelisation of algorithms using MPI and OpenMP.

Learning outcomes of the learning unit

By the end of the course the students will have studied various advanced scientific computing algorithms. They will have learned the basics of their efficient implementation on serial and parallel computers, and will be familiar with the muticore (shared memory) programming paradigm using OpenMP, and the distributed memory programming paradigm using MPI.

Prerequisite knowledge and skills

Mathematical analysis course; Numerical analysis course.

Planned learning activities and teaching methods

Theory lectures, practical computer sessions, individual and group projects.
The number of projects varies from year to year, but is typically 2 or 3. The first projet is usually assigned very early in the quadrimester, i.e. during the first or second week. The deadline for the last project usually coincides with the end of the quadrimester.

Mode of delivery (face-to-face ; distance-learning)

Face-to-face.

Recommended or required readings

Cf. course website.

Assessment methods and criteria

Written project reports

Work placement(s)

Organizational remarks

This course is taught in English.

Contacts

Prof. C. Geuzaine (cgeuzaine@uliege.be)