101-0250-00L  Solving Partial Differential Equations in Parallel on GPUs

SemesterAutumn Semester 2022
LecturersL. Räss, S. Omlin, M. Werder
Periodicityyearly recurring course
Language of instructionEnglish



Courses

NumberTitleHoursLecturers
101-0250-00 GSolving Partial Differential Equations in Parallel on GPUs3 hrs
Tue12:45-15:30HCI E 8 »
L. Räss, S. Omlin, M. Werder

Catalogue data

AbstractThis course aims to cover state-of-the-art methods in modern parallel Graphical Processing Unit (GPU) computing, supercomputing and code development with applications to natural sciences and engineering.
Learning objectiveWhen quantitative assessment of physical processes governing natural and engineered systems relies on numerically solving differential equations, fast and accurate solutions require performant algorithms leveraging parallel hardware. The goal of this course is to offer a practical approach to solve systems of differential equations in parallel on GPUs using the Julia language. Julia combines high-level language conciseness to low-level language performance which enables efficient code development.

The course will be taught in a hands-on fashion, putting emphasis on you writing code and completing exercises; lecturing will be kept at a minimum. In a final project you will solve a solid mechanics or fluid dynamics problem of your interest, such as the shallow water equation, the shallow ice equation, acoustic wave propagation, nonlinear diffusion, viscous flow, elastic deformation, viscous or elastic poromechanics, frictional heating, and more. Your Julia GPU application will be hosted on a git-platform and implement modern software development practices.
ContentPart 1 - Discovering a modern parallel computing ecosystem
- Learn the basics of the Julia language;
- Learn about the diffusion process and how to solve it;
- Understand the practical challenges of parallel and distributed computing: (multi-)GPUs, multi-core CPUs;
- Learn about software development tools: git, version control, continuous integration (CI), unit tests.

Part 2 - Developing your own parallel algorithms
- Implement wave propagation and porous convection;
- Apply spatial and temporal discretisation (finite-differences, various time-stepper);
- Implement efficient iterative algorithms;
- Implement shared (on CPU and GPU) and distributed memory parallelisation (multi-GPUs/CPUs);
- Learn about main simulation performance limiters.

Part 3 - Final project
- Apply your new skills in a final project;
- Implement advanced physical processes (solid and fluid dynamic - elastic and viscous solutions).
Lecture notesDigital lecture notes, interactive Julia notebooks, online material.
LiteratureLinks to relevant literature will be provided during classes.
Prerequisites / NoticeCompleted BSc studies. Interest in and basic knowledge of numerics, applied mathematics, and physics/engineering sciences. Basic programming skills (in e.g. Matlab, Python, Julia); advanced programming skills are a plus.
CompetenciesCompetencies
Subject-specific CompetenciesConcepts and Theoriesassessed
Techniques and Technologiesassessed
Method-specific CompetenciesAnalytical Competenciesassessed
Decision-makingassessed
Media and Digital Technologiesassessed
Problem-solvingassessed
Project Managementassessed
Social CompetenciesCommunicationfostered
Cooperation and Teamworkfostered
Personal CompetenciesCreative Thinkingassessed
Critical Thinkingassessed

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits4 credits
ExaminersL. Räss, S. Omlin, M. Werder
Typegraded semester performance
Language of examinationEnglish
RepetitionRepetition only possible after re-enrolling for the course unit.
Additional information on mode of examinationThe graded semester performance consists of: (1) 5 (out of 6) weekly assignments (30% of the final grade) during the course’s Parts 1; (2) a project during Part 2 (35% of the final grade); (3) a final project during Part 3 (35% of the final grade). (1) Weekly coding exercises can be done alone or in groups of two. (2) Projects and (3) final projects are to be worked on alone or in groups of two and submission includes codes in a git repository and (an automatic generated) documentation as report.

The course being an advanced Master course, students are expected to work independently and manage the workload accordingly.

Learning materials

No public learning materials available.
Only public learning materials are listed.

Groups

No information on groups available.

Restrictions

Places25 at the most
Waiting listuntil 13.09.2022

Offered in

ProgrammeSectionType
Civil Engineering MasterMajor in Hydraulic Engineering and Water Resources ManagementWInformation
Civil Engineering MasterDigitalisation Specific CoursesWInformation
Civil Engineering MasterProject Based CoursesWInformation
Computer Science BachelorMinor CoursesWInformation
Computational Science and Engineering MasterElectivesWInformation