diff --git a/404.html b/404.html index a39286e0..b6e3946c 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -
The requested file was not found.
Please click here to go to the home page.
The requested file was not found.
Please click here to go to the home page.
Fastrack to Julia cheatsheet
MATLAB-Julia-Python comparative cheatsheet (by QuantEcon group)
Plots.jl cheatsheet
Numerical Recipes. Useful reference that also contains a lot of references to "classical" literature on numerics.
Numerical Partial Differential Equations: Finite Difference Methods, by J. W. Thomas. Mostly about FDM (parabolic/hyperbolic equations, stability analysis, matrix methods).
Numerical heat transfer and fluid flow, by Patankar. Covers more advanced CFD (Navier-Stokes, pressure-velocity coupling etc.) topics and has intuitive explanations of the finite volume method.
Numerical Computation of Internal and External Flows: The Fundamentals of Computational Fluid Dynamics, by Hirsh. A comprehensive resource (700-pages) about CFD in particular, not PDE's in general.
Computational Science and Engineering, by G. Strang (MIT). It develops a framework for the equations and numerical methods of applied mathematics.
Computational methods for Geodynamics, by P. Tackley (ETHZ). CFD, Stokes equations and finite-difference method (with application to convection - Geodynamics).
Introduction to Numerical Geodynamic Modelling, by T. Gerya (ETHZ). Diffusion (heat) and Stokes equations derivation and implementation, finite-differences (with application to thermo-mechanical models - Geodynamics).
any further relevant suggestions are welcome - open a PR
Solving differential equations in parallel on GPUs @JuliaCon2021:
Advanced GPU Programming with Julia by Sam Omlin (CSCS) and Tim Besard (JuliaComputing) material
Solving differential equations in parallel with Julia @EGU2021
Solving Nonlinear Multi-Physics on GPU Supercomputers with Julia @JuliaCon2021:
Julia for High-Performance Computing by Carsten Bauer at High Performance Computing Center Stuttgart (HLRS)
Julia language main website
Julia Discourse (Q&A - help)
Fastrack to Julia cheatsheet
MATLAB-Julia-Python comparative cheatsheet (by QuantEcon group)
Plots.jl cheatsheet
Numerical Recipes. Useful reference that also contains a lot of references to "classical" literature on numerics.
Numerical Partial Differential Equations: Finite Difference Methods, by J. W. Thomas. Mostly about FDM (parabolic/hyperbolic equations, stability analysis, matrix methods).
Numerical heat transfer and fluid flow, by Patankar. Covers more advanced CFD (Navier-Stokes, pressure-velocity coupling etc.) topics and has intuitive explanations of the finite volume method.
Numerical Computation of Internal and External Flows: The Fundamentals of Computational Fluid Dynamics, by Hirsh. A comprehensive resource (700-pages) about CFD in particular, not PDE's in general.
Computational Science and Engineering, by G. Strang (MIT). It develops a framework for the equations and numerical methods of applied mathematics.
Computational methods for Geodynamics, by P. Tackley (ETHZ). CFD, Stokes equations and finite-difference method (with application to convection - Geodynamics).
Introduction to Numerical Geodynamic Modelling, by T. Gerya (ETHZ). Diffusion (heat) and Stokes equations derivation and implementation, finite-differences (with application to thermo-mechanical models - Geodynamics).
any further relevant suggestions are welcome - open a PR
Solving differential equations in parallel on GPUs @JuliaCon2021:
Advanced GPU Programming with Julia by Sam Omlin (CSCS) and Tim Besard (JuliaComputing) material
Solving differential equations in parallel with Julia @EGU2021
Solving Nonlinear Multi-Physics on GPU Supercomputers with Julia @JuliaCon2021:
Julia for High-Performance Computing by Carsten Bauer at High Performance Computing Center Stuttgart (HLRS)
Julia language main website
Julia Discourse (Q&A - help)
Final projects will provide 35% of the course grade. We recommend you work in teams of two, but being your own teammate is fine too.
🚧 More infos to come in due time.
Final projects will provide 35% of the course grade. We recommend you work in teams of two, but being your own teammate is fine too.
🚧 More infos to come in due time.
Assignment | Due date | Submission | Notes |
---|---|---|---|
Lect. 1 | 25.09.2024 - 23h59 CET | Moodle | Submit a folder containing all exercise notebooks from JupyterHub. |
Assignment | Due date | Submission | Notes |
---|---|---|---|
Lect. 1 | 25.09.2024 - 23h59 CET | Moodle | Submit a folder containing all exercise notebooks from JupyterHub. |
🎉 Welcome to ETH's course 101-0250-00L on solving partial differential equations (PDEs) in parallel on graphical processing units (GPUs) with the Julia programming language.
Announce: 2024 edition starts Tuesday Sept. 17, 12h45. Welcome!
This course aims to cover state-of-the-art methods in modern parallel GPU computing, supercomputing and code development with applications to natural sciences and engineering.
The goal of this course is to offer a practical approach to solve systems of differential equations in parallel on GPUs using the Julia programming language. Julia combines high-level language conciseness to low-level language performance which enables efficient code development. The Julia GPU applications will be hosted on a git-platform and implement modern software development practices.
Part 1 Introducing Julia & PDEs
The Julia language: hands-on
Solving physical processes: advection, reaction, diffusion & wave propagation
Spatial and temporal discretisation: finite-differences and explicit time-stepping
Software development tools: Git, Continuous Integration
Part 2 Solving PDEs on GPUs
Steady-state, implicit & nonlinear solutions
Efficient iterative algorithms
Parallel and GPU computing
Simulation performance limiters
Part 3 Projects
Multi-GPU computing and optimisations
xPU computing
Distributed computing
Advanced optimisations
Final projects
Solve a solid mechanics or fluid dynamics problem of your interest, such as:
the shallow water / ice equation
acoustic wave propagation, nonlinear diffusion
viscous flow or elastic deformation
viscous or elastic poromechanics
frictional heating
Navier-Stokes equations
Detailed content is available on ETHZ course catalogue
Course GitHub repository: https://github.com/eth-vaw-glaciology/course-101-0250-00
Ivan Utkin - ETHZ / WSL
Ludovic Räss - Unil / ETHZ
Mauro Werder - WSL / ETHZ
Samuel Omlin - CSCS, ETHZ
Teaching Assistant: You Wu - ETHZ
🎉 Welcome to ETH's course 101-0250-00L on solving partial differential equations (PDEs) in parallel on graphical processing units (GPUs) with the Julia programming language.
Announce: 2024 edition starts Tuesday Sept. 17, 12h45. Welcome!
This course aims to cover state-of-the-art methods in modern parallel GPU computing, supercomputing and code development with applications to natural sciences and engineering.
The goal of this course is to offer a practical approach to solve systems of differential equations in parallel on GPUs using the Julia programming language. Julia combines high-level language conciseness to low-level language performance which enables efficient code development. The Julia GPU applications will be hosted on a git-platform and implement modern software development practices.
Part 1 Introducing Julia & PDEs
The Julia language: hands-on
Solving physical processes: advection, reaction, diffusion & wave propagation
Spatial and temporal discretisation: finite-differences and explicit time-stepping
Software development tools: Git, Continuous Integration
Part 2 Solving PDEs on GPUs
Steady-state, implicit & nonlinear solutions
Efficient iterative algorithms
Parallel and GPU computing
Simulation performance limiters
Part 3 Projects
Multi-GPU computing and optimisations
xPU computing
Distributed computing
Advanced optimisations
Final projects
Solve a solid mechanics or fluid dynamics problem of your interest, such as:
the shallow water / ice equation
acoustic wave propagation, nonlinear diffusion
viscous flow or elastic deformation
viscous or elastic poromechanics
frictional heating
Navier-Stokes equations
Detailed content is available on ETHZ course catalogue
Course GitHub repository: https://github.com/eth-vaw-glaciology/course-101-0250-00
Ivan Utkin - ETHZ / WSL
Ludovic Räss - Unil / ETHZ
Mauro Werder - WSL / ETHZ
Samuel Omlin - CSCS, ETHZ
Teaching Assistant: You Wu - ETHZ
Suggestion: Bookmark this page for easy access to all infos you need for the course.
Each lecture contains material on physics, numerics, technical concepts, as well as exercises. The lecture content is outlined in its introduction using the following items for each type of content:
📚 Physics: equations, discretisation, implementation, solver, visualisation
💻 Code: technical, Julia, GitHub
🚧 Exercises
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.
Online attendance will be possible on Zoom (ETH Students only - Password and password-less login available on Moodle).
Exercise session follow the lectures; they will not be broadcasted (no online support will be provided during the exercise session).
Schedule to be defined (on Element/Zoom or in-person)
We plan to use the Element-chat (https://chat.ethz.ch/) as the main communication channel for the course, both between the teachers and the students, and hopefully also between students. We encourage ETH students to ask course, exercises and technical questions there.
Head to the Course chat space (Element) link on Moodle to get started with Element:
Select Start Student-Chat.
Login using your NETHZ credentials to start using the browser-based client.
Join "manually" the General and Helpdesk rooms.
Download the Element Desktop/Mobile client for more comfortable access (less encryption-related issues).
Homework tasks will be announced after each week's lecture. The exercise session following the lecture will get you started.
Homework due date will be Wednesday 23h59 CET every following week (8 days) to allow for Q&A during the following in-class exercise session.
Homework assignments can be carried-out by groups of 2. However, note that every student has to hand in a personal version of the homework.
➡ Check out the Homework page for an overview on expected hand-in and deadlines.
Submission of notebooks (weeks 1 & 2), GitHub commit hash (or SHA) (week 3 and onwards) or other documents happens on the course's Moodle.
Actions and tasks related to GitHub will happen on your private course-related GitHub repository.
Starting from lecture 3 and onwards, the development of homework scripts happens on GitHub and you will have to submit the git commit hash (or SHA) on Moodle in the related git commit hash (SHA) submission activity.
Once you have your GitHub account ready (see lecture 2 how-to), create a private repository you will share with the teaching staff only to upload your weekly assignments (scripts):
Create a private GitHub repository named pde-on-gpu-<moodleprofilename>
, where <moodleprofilename>
has to be replaced by your name as displayed on Moodle, lowercase, diacritics removed, spacing replaced with hyphens (-). For example, if your Moodle profile name is "Joël Désirée van der Linde" your repository should be named pde-on-gpu-joel-desiree-van-der-linde
.
Select an MIT License
and add a README.md
file.
Share this private repository on GitHub with the teaching-bot (https://github.com/teaching-bot).
For each homework submission, you will:
create a git branch named homework-X
(X ) and switch to that branch (git switch -c homework-X
);
create a new folder named homework-X
to put the exercise codes into;
(don't forget to git add
the code-files and git commit
them);
push to GitHub and open a pull request (PR) on the main
branch on GitHub;
copy the single git commit hash (or SHA) of the final push and the link to the PR and submit both on Moodle as the assignment hand-in (it will serve to control the material was pushed on time);
(do not merge the PR yet).
homework-X
folders and README.md
in the GitHub repo you share with the exercise bot in order to keep the syncing as lightweight as possible.Project.toml
file. The Manifest.toml
file should be kept local. An automated way of doing so is to add it as entry to a .gitignore
file in the root of your repo. Mac users may also add .DS_Store
to their .gitignore
. Codes could be placed in a scripts/
folder. Output material to be displayed in the README.md
could be placed in a docs/
folder.After the submission deadline, we will correct and grade your assignments. You will get personal feedback directly on the PR as well as on Moodle. Once you got feedback, please merge the PR.
We will try to correct your assignments before the lecture following the homework's deadline. This should allow you to get rapid feedback in order to clarify the points you may struggle on as soon as possible.
Starting from lecture 7 (until lecture 9), homework contribute to the course's first project. The goal of this project is to have a multi-xPU thermal porous convection solver in 3D.
🚧 More infos to come in due time.
Enrolled ETHZ students will have to hand in on Moodle (& GitHub):
5 (out of 6) weekly assignments (30% of the final grade) during the course's Part 1. Weekly coding exercises can be done alone or in groups of two.
A project during Part 2 (35% of the final grade). Projects submission includes codes in a git repository and an automatic generated documentation.
A final project during Part 3 (35% of the final grade). Final projects submission includes codes in a git repository and an automatic generated documentation.
Suggestion: Bookmark this page for easy access to all infos you need for the course.
Each lecture contains material on physics, numerics, technical concepts, as well as exercises. The lecture content is outlined in its introduction using the following items for each type of content:
📚 Physics: equations, discretisation, implementation, solver, visualisation
💻 Code: technical, Julia, GitHub
🚧 Exercises
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.
Online attendance will be possible on Zoom (ETH Students only - Password and password-less login available on Moodle).
Exercise session follow the lectures; they will not be broadcasted (no online support will be provided during the exercise session).
Schedule to be defined (on Element/Zoom or in-person)
We plan to use the Element-chat (https://chat.ethz.ch/) as the main communication channel for the course, both between the teachers and the students, and hopefully also between students. We encourage ETH students to ask course, exercises and technical questions there.
Head to the Course chat space (Element) link on Moodle to get started with Element:
Select Start Student-Chat.
Login using your NETHZ credentials to start using the browser-based client.
Join "manually" the General and Helpdesk rooms.
Download the Element Desktop/Mobile client for more comfortable access (less encryption-related issues).
Homework tasks will be announced after each week's lecture. The exercise session following the lecture will get you started.
Homework due date will be Wednesday 23h59 CET every following week (8 days) to allow for Q&A during the following in-class exercise session.
Homework assignments can be carried-out by groups of 2. However, note that every student has to hand in a personal version of the homework.
➡ Check out the Homework page for an overview on expected hand-in and deadlines.
Submission of notebooks (weeks 1 & 2), GitHub commit hash (or SHA) (week 3 and onwards) or other documents happens on the course's Moodle.
Actions and tasks related to GitHub will happen on your private course-related GitHub repository.
Starting from lecture 3 and onwards, the development of homework scripts happens on GitHub and you will have to submit the git commit hash (or SHA) on Moodle in the related git commit hash (SHA) submission activity.
Once you have your GitHub account ready (see lecture 2 how-to), create a private repository you will share with the teaching staff only to upload your weekly assignments (scripts):
Create a private GitHub repository named pde-on-gpu-<moodleprofilename>
, where <moodleprofilename>
has to be replaced by your name as displayed on Moodle, lowercase, diacritics removed, spacing replaced with hyphens (-). For example, if your Moodle profile name is "Joël Désirée van der Linde" your repository should be named pde-on-gpu-joel-desiree-van-der-linde
.
Select an MIT License
and add a README.md
file.
Share this private repository on GitHub with the teaching-bot (https://github.com/teaching-bot).
For each homework submission, you will:
create a git branch named homework-X
(X ) and switch to that branch (git switch -c homework-X
);
create a new folder named homework-X
to put the exercise codes into;
(don't forget to git add
the code-files and git commit
them);
push to GitHub and open a pull request (PR) on the main
branch on GitHub;
copy the single git commit hash (or SHA) of the final push and the link to the PR and submit both on Moodle as the assignment hand-in (it will serve to control the material was pushed on time);
(do not merge the PR yet).
homework-X
folders and README.md
in the GitHub repo you share with the exercise bot in order to keep the syncing as lightweight as possible.Project.toml
file. The Manifest.toml
file should be kept local. An automated way of doing so is to add it as entry to a .gitignore
file in the root of your repo. Mac users may also add .DS_Store
to their .gitignore
. Codes could be placed in a scripts/
folder. Output material to be displayed in the README.md
could be placed in a docs/
folder.After the submission deadline, we will correct and grade your assignments. You will get personal feedback directly on the PR as well as on Moodle. Once you got feedback, please merge the PR.
We will try to correct your assignments before the lecture following the homework's deadline. This should allow you to get rapid feedback in order to clarify the points you may struggle on as soon as possible.
Starting from lecture 7 (until lecture 9), homework contribute to the course's first project. The goal of this project is to have a multi-xPU thermal porous convection solver in 3D.
🚧 More infos to come in due time.
Enrolled ETHZ students will have to hand in on Moodle (& GitHub):
5 (out of 6) weekly assignments (30% of the final grade) during the course's Part 1. Weekly coding exercises can be done alone or in groups of two.
A project during Part 2 (35% of the final grade). Projects submission includes codes in a git repository and an automatic generated documentation.
A final project during Part 3 (35% of the final grade). Final projects submission includes codes in a git repository and an automatic generated documentation.
Number of results found:
Number of results found:
All the course slides are Jupyter notebooks; browser-based computational notebooks.
Code cells are executed by putting the cursor into the cell and hitting shift + enter
. For more info see the documentation.
The first two lecture's homework assignments will be Jupyter notebooks. You can import the notebooks from Moodle into your JupyterHub space. You can execute them on the JupyterHub or download them and run them them locally if you're already set-up.
For submission, you can directly submit the folder containing all notebooks of a lecture from within the JupyterHub/Moodle integration. From the homework task on Moodle, you should be able to launch the notebooks in your JupyterHub. Once the homework completed, you should be able to see the folders you have worked on from your JupyterHub within the submission steps on Moodle. See Logistics and Homework for details.
Starting from lecture 3, exercise scripts will be mostly standalone regular Julia scripts that have to be uploaded to your private GitHub repo (shared with the teaching staff only). Details in Logistics.
You can access the JupyterHub from the General section in Moodle, clicking on
Upon login to the server, you should see the following launcher environment, including a notebook (file) browser, ability to create a notebook, launch a Julia console (REPL), or a regular terminal.
Follow the instructions from the Julia Download page to install Julia v1.10 (which is using the Juliaup Julia installer under the hood).
;
that natively works on Unix-based systems. On Windows, you can access the Windows shell by typing Powershell
within the shell mode, and exit it typing exit
, as described here.Ensure you have a text editor with syntax highlighting support for Julia. Sublime Text and Atom can be recommended.
From within the terminal, type
julia
+ All the course slides are Jupyter notebooks; browser-based computational notebooks.
Code cells are executed by putting the cursor into the cell and hitting shift + enter
. For more info see the documentation.
The first two lecture's homework assignments will be Jupyter notebooks. You can import the notebooks from Moodle into your JupyterHub space. You can execute them on the JupyterHub or download them and run them them locally if you're already set-up.
For submission, you can directly submit the folder containing all notebooks of a lecture from within the JupyterHub/Moodle integration. From the homework task on Moodle, you should be able to launch the notebooks in your JupyterHub. Once the homework completed, you should be able to see the folders you have worked on from your JupyterHub within the submission steps on Moodle. See Logistics and Homework for details.
Starting from lecture 3, exercise scripts will be mostly standalone regular Julia scripts that have to be uploaded to your private GitHub repo (shared with the teaching staff only). Details in Logistics.
You can access the JupyterHub from the General section in Moodle, clicking on
Upon login to the server, you should see the following launcher environment, including a notebook (file) browser, ability to create a notebook, launch a Julia console (REPL), or a regular terminal.
Follow the instructions from the Julia Download page to install Julia v1.10 (which is using the Juliaup Julia installer under the hood).
;
that natively works on Unix-based systems. On Windows, you can access the Windows shell by typing Powershell
within the shell mode, and exit it typing exit
, as described here.Ensure you have a text editor with syntax highlighting support for Julia. Sublime Text and Atom can be recommended.
From within the terminal, type
julia
to make sure that the Julia REPL (aka terminal) starts. Then you should be able to add 1+1
and verify you get the expected result. Exit with Ctrl-d
.