From a001bef39a619273dd1afdee2a125bd265f18565 Mon Sep 17 00:00:00 2001 From: youwuyou <82619264+youwuyou@users.noreply.github.com> Date: Mon, 18 Nov 2024 15:52:58 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20b05d5?= =?UTF-8?q?ad2665f16947c27e4bbf53602f8009c6c12=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 2 +- extras/index.html | 2 +- final_proj/index.html | 2 +- homework/index.html | 2 +- index.html | 2 +- lecture1/index.html | 2 +- lecture10/index.html | 2 +- lecture2/index.html | 2 +- lecture3/index.html | 2 +- lecture4/index.html | 2 +- lecture5/index.html | 2 +- lecture6/index.html | 2 +- lecture7/index.html | 2 +- lecture8/index.html | 2 +- lecture9/index.html | 2 +- logistics/index.html | 2 +- package-lock.json | 6 +++--- search/index.html | 2 +- sitemap.xml | 34 +++++++++++++++++----------------- software_install/index.html | 2 +- 20 files changed, 38 insertions(+), 38 deletions(-) diff --git a/404.html b/404.html index e5176049..5a703d59 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.
Project's due date is December 20, 2024 – 23h59 CET (enforced by a "release tag v1.0.0").
Note that a single GitHub repository is sufficient per project.
Final projects should to be handed-in on a single GitHub repository, including scripts, documentation (and code documentation), unit and reference testing, Continuous Integration (CI - using e.g. GitHub Actions), instructions to run the software and reproduce the results, references.
Selecting a project of your choice among 3 possible directions (A/, B/ or C/):
Multi-GPU Navier-Stokes in 3D
Implement simple Navier-Stokes solver using Chorin's projection method and advection based on the method of characteristics. For the projection step, you'll implement a Poisson solver for the pressure. You could use the pseudo-transient solver from class or write your own. Examples would be the multigrid solvers or Fourier-transform-based spectral solvers. The only requirement is that your solver has to work on GPU and scale (reasonably) well. Feel free to take inspiration in the 2D reference implementation developed last year.
Free convection simulation
Use the ParallelStencil.jl
miniapp as a starting point to implement your own 3D multi-GPU thermo-mechanical convection solver (lava-lamp).
Water circulation in saline aquifers.
This project share many similarities with the the thermal porous convection. The main difference is that density variations are not due to temperature, but to variable concentration of salt dissolved in the water.
Hydro-mechanical flow localisation
Use the ParallelStencil.jl
miniapp as a starting point to implement your own 3D multi-GPU hydro-mechanical "two-phase flow" solver to capture the formation and propagation of solitary waves of porosity.
Wave physics
Elastic wave propagation is central in computational seismology as it allows to "image" the subsurface. It has also application far beyond geosciences. Implement your 3D elastic wave solver using, e.g., as starting point the acoustic wave solver from the ParallelStencil.jl
miniapp miniapp.
If you are interested in GPU code optimisation, you can go through the advanced optimisation material (Lecture 10) and, e.g., add shared memory support and manual register queuing to accelerate the 3D thermal porous convection solver from the class or select among the ParallelStencil.jl
miniapp miniapps.
Show your creativity by coming up with your own problem that could be modelled using PDEs (e.g. related to another project or future study/research direction of yours). We’ll do our best to help you implementing it. Relativistic MHD? Phase separation in alloys? Electromagnetic waves propagation? Spectral methods for PDEs? Name your own! Ideally, come with papers and equations related to it.
Head to Logistics in order to find infos on getting started and submission.
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.
Project's due date is December 20, 2024 – 23h59 CET (enforced by a "release tag v1.0.0").
Note that a single GitHub repository is sufficient per project.
Final projects should to be handed-in on a single GitHub repository, including scripts, documentation (and code documentation), unit and reference testing, Continuous Integration (CI - using e.g. GitHub Actions), instructions to run the software and reproduce the results, references.
Selecting a project of your choice among 3 possible directions (A/, B/ or C/):
Multi-GPU Navier-Stokes in 3D
Implement simple Navier-Stokes solver using Chorin's projection method and advection based on the method of characteristics. For the projection step, you'll implement a Poisson solver for the pressure. You could use the pseudo-transient solver from class or write your own. Examples would be the multigrid solvers or Fourier-transform-based spectral solvers. The only requirement is that your solver has to work on GPU and scale (reasonably) well. Feel free to take inspiration in the 2D reference implementation developed last year.
Free convection simulation
Use the ParallelStencil.jl
miniapp as a starting point to implement your own 3D multi-GPU thermo-mechanical convection solver (lava-lamp).
Water circulation in saline aquifers.
This project share many similarities with the the thermal porous convection. The main difference is that density variations are not due to temperature, but to variable concentration of salt dissolved in the water.
Hydro-mechanical flow localisation
Use the ParallelStencil.jl
miniapp as a starting point to implement your own 3D multi-GPU hydro-mechanical "two-phase flow" solver to capture the formation and propagation of solitary waves of porosity.
Wave physics
Elastic wave propagation is central in computational seismology as it allows to "image" the subsurface. It has also application far beyond geosciences. Implement your 3D elastic wave solver using, e.g., as starting point the acoustic wave solver from the ParallelStencil.jl
miniapp miniapp.
If you are interested in GPU code optimisation, you can go through the advanced optimisation material (Lecture 10) and, e.g., add shared memory support and manual register queuing to accelerate the 3D thermal porous convection solver from the class or select among the ParallelStencil.jl
miniapp miniapps.
Show your creativity by coming up with your own problem that could be modelled using PDEs (e.g. related to another project or future study/research direction of yours). We’ll do our best to help you implementing it. Relativistic MHD? Phase separation in alloys? Electromagnetic waves propagation? Spectral methods for PDEs? Name your own! Ideally, come with papers and equations related to it.
Head to Logistics in order to find infos on getting started and submission.
Assignment | Due date | Submission | Notes |
---|---|---|---|
Lect. 1 | 25.09.2024 - 23h59 CET | Moodle | Submit a folder containing all exercise notebooks from JupyterHub. |
Lect. 2 | 02.10.2024 - 23h59 CET | Moodle (notebooks), Moodle (commit hash + PR) | For the notebooks submission, submit a folder containing all exercise notebooks from JupyterHub. For the commit hash + PR submission, copy the git commit hash (SHA) of the final push on the branch homework-2 and open a pull request on the main branch. Paste both the commit hash and the PR link on Moodle (check Logistics for more details on how to set up the GitHub repository). |
Lect. 3 | 09.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-3 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 4 | 16.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-4 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 5 | 23.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-5 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 6 | 29.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-6 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. IMPORTANT: submit Exercise 3 from Lecture 6 and Exercise 3 from Lecture 7 as this week's homework due to changes in schedule. |
Lect. 7 | 08.11.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-7 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. IMPORTANT: submit Exercise 1 & 2 from Lecture 6 and Exercise 1 & 2 from Lecture 7 as this week's homework due to changes in schedule. |
Lect. 8 | 13.11.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-8 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Assignment | Due date | Submission | Notes |
---|---|---|---|
Lect. 1 | 25.09.2024 - 23h59 CET | Moodle | Submit a folder containing all exercise notebooks from JupyterHub. |
Lect. 2 | 02.10.2024 - 23h59 CET | Moodle (notebooks), Moodle (commit hash + PR) | For the notebooks submission, submit a folder containing all exercise notebooks from JupyterHub. For the commit hash + PR submission, copy the git commit hash (SHA) of the final push on the branch homework-2 and open a pull request on the main branch. Paste both the commit hash and the PR link on Moodle (check Logistics for more details on how to set up the GitHub repository). |
Lect. 3 | 09.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-3 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 4 | 16.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-4 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 5 | 23.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-5 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 6 | 29.10.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-6 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. IMPORTANT: submit Exercise 3 from Lecture 6 and Exercise 3 from Lecture 7 as this week's homework due to changes in schedule. |
Lect. 7 | 08.11.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-7 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. IMPORTANT: submit Exercise 1 & 2 from Lecture 6 and Exercise 1 & 2 from Lecture 7 as this week's homework due to changes in schedule. |
Lect. 8 | 13.11.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-8 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. |
Lect. 9 (first project hand in) | 28.11.2024 - 23h59 CET | Moodle (commit hash + PR) | For the submission, copy the git commit hash (SHA) of the final push on the branch homework-9 and open a pull request on the main branch. Paste both the SHA and the PR link on Moodle. Make sure that the project is contained inside the PorousConvection folder. |
🎉 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.
This course aims to cover state-of-the-art methods in modern parallel GPU computing, supercomputing and scientific software development with applications to natural sciences and engineering. The course is open source and is available on GitHub.
The goal of this course is to offer a practical approach to solve systems of partial differential equations in parallel on GPUs using the Julia programming language. Julia combines high-level language expressiveness and low-level language performance which enables efficient code development. The Julia GPU applications will be hosted on GitHub 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:
dynamic elasticity — seismic wave propagation
Maxwell's equations — electromagnetic fields propagation
shallow-water equations — rivers, lakes, or oceans
shallow ice approximation — ice sheet evolution
Navier–Stokes equations — fluid or smoke
thermo-mechanically coupled Stokes flow — mantle convection
hydro-mechanically coupled Stokes flow — subsurface CO2 flow
your own idea
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.
This course aims to cover state-of-the-art methods in modern parallel GPU computing, supercomputing and scientific software development with applications to natural sciences and engineering. The course is open source and is available on GitHub.
The goal of this course is to offer a practical approach to solve systems of partial differential equations in parallel on GPUs using the Julia programming language. Julia combines high-level language expressiveness and low-level language performance which enables efficient code development. The Julia GPU applications will be hosted on GitHub 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:
dynamic elasticity — seismic wave propagation
Maxwell's equations — electromagnetic fields propagation
shallow-water equations — rivers, lakes, or oceans
shallow ice approximation — ice sheet evolution
Navier–Stokes equations — fluid or smoke
thermo-mechanically coupled Stokes flow — mantle convection
hydro-mechanically coupled Stokes flow — subsurface CO2 flow
your own idea
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 for ETH students only
No online support will be provided during the exercise session, please follow the lectures
Schedule will be defined and communicated on the last lecture.
We use Element as the main channel for communication between the teachers and the students, and hopefully also between students. We encourage ETH students to ask and answer questions related to the course, exercises and projects there.
Head to the Element chat 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 the General and Helpdesk rooms
Download the desktop or mobile client for more convenient access or in case of 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.
All homework assignments can be carried out by groups of two. 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 JupyterHub notebooks after weeks 1 and 2, then GitHub commit hash (SHA) after 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 (SHA) on Moodle in the related git commit hash (SHA) submission activity.
on the Hub place all notebooks of an assignment into one folder called assignments/lectureX_homework
note: maybe this folder magically already exists on your Hub with the notebooks added. If not, create it and download the notebooks yourself.
in Moodle during submission, select that folder as JupyterHub submission
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:
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.
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 (SHA) after 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 repository lightweight.Project.toml
file. The Manifest.toml
file should be excluded from version control. To do so, add it as entry to a .gitignore
file in the root of your repo. Mac users may also add .DS_Store
to their global .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, and until lecture 9, homework assigments contribute to the course's first project. The goal of this project is to have a multi-xPU thermal porous convection solver in 3D.
The exercises in lecture 7 will serve as starting point for the first project:
Within your pde-on-gpu-<moodleprofilename>
folder, copy over the PorousConvection
you can find in the l7_project_template
folder within the scripts folder. Make sure to copy the entire folder as not to loose the hidden files.
Follow the specific instructions given in Lecture 7 - infos about projects.
During lectures 7 and 9 you will be asked to add material to the PorousConvection
folder as part of regular homework hand-in which will serve as evaluation for the Part 2 (35% of the final grade) (see Evaluation section).
The project submission deadline is set to 29.11.2024 - 23h59 CET (see also Homework). The final GitHub SHA has to be added to Moodle in the Lecture 9 section.
Make sure to have following items in your private GitHub repository:
a PorousConvection
folder containing the structure proposed in Lecture 7
the 2D and 3D scripts from Lecture 7
the CI set-up to test the 2D and 3D porous convection scripts
a lecture_8
folder (different from the PorousConvection folder) containing the codes, README.md
and material listed in Exercises - Lecture 8
the 3D multi-xPU thermal porous convection script and output as per directions from Exercises - Lecture 9.
In addition enhance the README.md
within the PorousConvection
folder to include:
a short motivation/introduction
concise information about the equations you are solving
concise information about the numerical method and implementation
the results, incl. figures with labels, captions, etc...
a short discussion/conclusion section about the performed work, results, and outlook
Note that for evaluation will be considered the following (non-exhaustive) items: code correctness, style, and conciseness; implementation of demanded tasks; final layout and rendering, ...
For information about topics for the final project, head to Information about final projects page.
The following steps will get you started with the final projects:
Find a classmate to work with (being your own mate is fine too)
Select a topic of your choice
Initiate a private GitHub repository for your project (CamelCaps, including .jl
at the end - e.g.: MyProject.jl
)
Share the final project private repository on GitHub with the teaching-bot (https://github.com/teaching-bot)
Send and email to Ivan (iutkin@ethz.ch) and Ludovic (luraess@ethz.ch) by Tuesday December 3, 2024, with subject Final projects including
your project partner
a brief description of your choice
a link to your final project GitHub repository
anything else missing in this list
Work on your final project, asking for help
in the Element Helpdesk channel for general question
as GitHub "issue" for project specific questions
during class hours serving as helpdesk
Submission deadline for the project is December 20, 2024 – 23h59 CET.
Final submission timestamp is enforced upon tagging the v1.0.0 version release of your repository. See GitHub docs for infos.
Also, add the last commit SHA to Moodle - Final project submission as for the exercises.
Grading of the final project will contribute 35% of the final grade.
For a successful outcome, final projects are expected to be handed-in as single GitHub repository featuring the following items:
documented and polished scripts (using e.g. docstrings, in-line comments)
documentation including:
an enhanced README.md
following to proposed structure with equations, cross-references, figures, figure captions
instructions to run the software and reproduce the results
references
unit and reference testing
Continuous Integration (CI - using e.g. GitHub Actions)
additional features if needed
All homework assignments can be done alone or in groups of two.
Enrolled ETHZ students will have to hand in on Moodle and GitHub:
Six weekly assignments during the course's Part 1 and Part 2 constitute 30% of the final grade. The best five out of six homework will be counted.
A project developed during Part 3 of the course constitutes 35% of the final grade
A final project constitutes 35% of the final grade
Project submission includes code in a Github repository and an automatically 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 for ETH students only
No online support will be provided during the exercise session, please follow the lectures
Schedule will be defined and communicated on the last lecture.
We use Element as the main channel for communication between the teachers and the students, and hopefully also between students. We encourage ETH students to ask and answer questions related to the course, exercises and projects there.
Head to the Element chat 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 the General and Helpdesk rooms
Download the desktop or mobile client for more convenient access or in case of 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.
All homework assignments can be carried out by groups of two. 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 JupyterHub notebooks after weeks 1 and 2, then GitHub commit hash (SHA) after 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 (SHA) on Moodle in the related git commit hash (SHA) submission activity.
on the Hub place all notebooks of an assignment into one folder called assignments/lectureX_homework
note: maybe this folder magically already exists on your Hub with the notebooks added. If not, create it and download the notebooks yourself.
in Moodle during submission, select that folder as JupyterHub submission
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:
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.
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 (SHA) after 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 repository lightweight.Project.toml
file. The Manifest.toml
file should be excluded from version control. To do so, add it as entry to a .gitignore
file in the root of your repo. Mac users may also add .DS_Store
to their global .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, and until lecture 9, homework assigments contribute to the course's first project. The goal of this project is to have a multi-xPU thermal porous convection solver in 3D.
The exercises in lecture 7 will serve as starting point for the first project:
Within your pde-on-gpu-<moodleprofilename>
folder, copy over the PorousConvection
you can find in the l7_project_template
folder within the scripts folder. Make sure to copy the entire folder as not to loose the hidden files.
Follow the specific instructions given in Lecture 7 - infos about projects.
During lectures 7 and 9 you will be asked to add material to the PorousConvection
folder as part of regular homework hand-in which will serve as evaluation for the Part 2 (35% of the final grade) (see Evaluation section).
The project submission deadline is set to 29.11.2024 - 23h59 CET (see also Homework). The final GitHub SHA has to be added to Moodle in the Lecture 9 section.
Make sure to have following items in your private GitHub repository:
a PorousConvection
folder containing the structure proposed in Lecture 7
the 2D and 3D scripts from Lecture 7
the CI set-up to test the 2D and 3D porous convection scripts
a lecture_8
folder (different from the PorousConvection folder) containing the codes, README.md
and material listed in Exercises - Lecture 8
the 3D multi-xPU thermal porous convection script and output as per directions from Exercises - Lecture 9.
In addition enhance the README.md
within the PorousConvection
folder to include:
a short motivation/introduction
concise information about the equations you are solving
concise information about the numerical method and implementation
the results, incl. figures with labels, captions, etc...
a short discussion/conclusion section about the performed work, results, and outlook
Note that for evaluation will be considered the following (non-exhaustive) items: code correctness, style, and conciseness; implementation of demanded tasks; final layout and rendering, ...
For information about topics for the final project, head to Information about final projects page.
The following steps will get you started with the final projects:
Find a classmate to work with (being your own mate is fine too)
Select a topic of your choice
Initiate a private GitHub repository for your project (CamelCaps, including .jl
at the end - e.g.: MyProject.jl
)
Share the final project private repository on GitHub with the teaching-bot (https://github.com/teaching-bot)
Send and email to Ivan (iutkin@ethz.ch) and Ludovic (luraess@ethz.ch) by Tuesday December 3, 2024, with subject Final projects including
your project partner
a brief description of your choice
a link to your final project GitHub repository
anything else missing in this list
Work on your final project, asking for help
in the Element Helpdesk channel for general question
as GitHub "issue" for project specific questions
during class hours serving as helpdesk
Submission deadline for the project is December 20, 2024 – 23h59 CET.
Final submission timestamp is enforced upon tagging the v1.0.0 version release of your repository. See GitHub docs for infos.
Also, add the last commit SHA to Moodle - Final project submission as for the exercises.
Grading of the final project will contribute 35% of the final grade.
For a successful outcome, final projects are expected to be handed-in as single GitHub repository featuring the following items:
documented and polished scripts (using e.g. docstrings, in-line comments)
documentation including:
an enhanced README.md
following to proposed structure with equations, cross-references, figures, figure captions
instructions to run the software and reproduce the results
references
unit and reference testing
Continuous Integration (CI - using e.g. GitHub Actions)
additional features if needed
All homework assignments can be done alone or in groups of two.
Enrolled ETHZ students will have to hand in on Moodle and GitHub:
Six weekly assignments during the course's Part 1 and Part 2 constitute 30% of the final grade. The best five out of six homework will be counted.
A project developed during Part 3 of the course constitutes 35% of the final grade
A final project constitutes 35% of the final grade
Project submission includes code in a Github repository and an automatically generated documentation.
Number of results found:
Number of results found: