
<p style="text-align: center"><b><font size=5 color=blueyellow>GPU Programming: Why, When, and How - Schedule</font></b></p>
:::success
**Nov. 12 - 14, 09:00 - 16:00 (CET), 2024**
:::
---
**Contributions**: <a><img src="https://img.shields.io/badge/ENCCS-blue?style=plastic"/></a> <a><img src="https://img.shields.io/badge/CSC-purple?style=plastic"/></a> <a><img src="https://img.shields.io/badge/HPC2N-red?style=plastic"/></a> <a><img src="https://img.shields.io/badge/NCC Lithuania-green?style=plastic"/></a> <a><img src="https://img.shields.io/badge/NRIS-orange?style=plastic"/></a> <a><img src="https://img.shields.io/badge/PDC-blueyellow?style=plastic"/></a> <a><img src="https://img.shields.io/badge/SciLifeLab-gold?style=plastic"/></a> <a><img src="https://img.shields.io/badge/UiT-grey?style=plastic"/></a>
**Categories**: <a><img src="https://img.shields.io/badge/Workshop-996300?style=plastic"/></a> <a><img src="https://img.shields.io/badge/GPU Programming-brightgreen?style=plastic"/></a>
**Level**: <a><img src="https://img.shields.io/badge/Introductory-brown?style=plastic"/></a>
---
## General information
:::info
**Links for the workshop**:
- This **Hackmd page**: https://hackmd.io/@yonglei/gpu-programming-schedule-2024
- **Lesson material**: https://enccs.github.io/gpu-programming/
- **Workshop page**: https://enccs.se/events/gpu-programming-why-when-how-2024/
>
**Links for ENCCS**
- **ENCCS:** https://enccs.se/
- **Events**: https://enccs.se/events/
- **Newsletter**: https://enccs.se/newsletter
- Follow us on [**LinkedIn**](https://www.linkedin.com/company/enccs), [**Twitter**](https://twitter.com/EuroCC_Sweden), and [**YouTube**](https://www.youtube.com/@enccs)
>
**Links to organizations**
- [CSC](https://csc.fi/en/)
- [HPC2N](https://www.hpc2n.umu.se/)
- [NCC Lithuania](https://www.eurocc-lithuania.lt/)
- [NRIS](https://documentation.sigma2.no/#)
- [PDC](https://www.pdc.kth.se/)
- [NAISS](https://www.naiss.se/)
- [SciLifeLab](https://www.scilifelab.se/)
- [UiT](https://en.uit.no/om)
:::
---
## Instructors and helpers
:::info
- Binod Baniya, UiT
- Jim-Viktor Paulsen, UiT
- Cristian-Vasile Achim, CSC
- Pedro Ojeda May, HPC2N
- Stepas Toliautas, VU/NCC LT
- Qiang Li, LiU/ENCCS
- Jonathan Vincent, PDC
- Andrey Alekseenko, SciLifeLab
- Hicham Agueny, UiB/NRIS
- Wei Li, LiU/ENCCS
- Thor Wikfeldt, RISE/ENCCS
- Yonglei Wang, LiU/ENCCS
:::
## Ice breaking question
:::danger
**What's your first name, and what's the most recent project you are using GPU for programming?**
- Jukka, using Julia and GPU to solve PDEs (CUDA.jl, CUFFT, Spectral methods ...)
- Vytautas, haven't used GPU yet, but would be interested using GPU for solving systems of nonlinear differential equations, mainly using DifferentialEquations.jl for now.
- Stepas, contributing to this very workshop :) as well as university teaching
- Simeon, training and running convolutional neural network (AnimalSpot) to detect bat vocalisation in recordings from the North Sea
- Frank, working on computational fluid dynamics solver (Navier Stokes solver)
- Sanka, no experience with GPU yet but need to prepare LLM project with it.
- Lilit, work at EuroHPC JU, refreshing my knowledge.
- Leon, so far none --> but soon need to use GPU for deep learning
- Johanne, simulations of relativistic electron dynamics in hydrogenlike atomic systems
- Piotr, without experience
- Christina, haven't used GPU, working with high-precision arithmetic
- Roman, training a semantic segmentation model on CUDA with Python
- Francesca, no previous experience with GPUs
- Martin, CFD simulations on GPUs using Python and CUDA C/C++
- Marcell: data compression
- Alba: only working with CPUs (genomics research) but would want to know more about GPUs to support students that need to use them for their own ML projects
- Saidi Nchimbi: worked on CPU parallel computing with Fortran on elastic deformation of materials with elastodynamics equation. Looking to explore GPU and how it improves such tasks.
- Alessandro, using GPUs to speed up ODE and PDE solvers
- Laura, haven't used gpu yet, but I want to know how to use AMBER+GPU
- Mads: Used GPU/CUDA for reconstructing geometry from RGBD images using truncated signed distance fields.
- Tor: Supporting users on LUMI.
- Katja: only using programs that utilize GPUs but haven't implemented the use of GPUs myself, working with DNA sequencing projects
- Taylor: Training a transformers based model with CUDA and Python. - I am not able to register on the MyAccessID website using my organization credientials. I don't believe I am elgible for the other alternatves. I receive an error message on the page after selecting my university. I contacted support. Thank you.
:::
---
## Schedule
### <font color=red>(Nov. 11) Day 0</font>
| Time | Content | Instructor |
| :---------: | :-----: | :--------: |
| 10:00-12:00 | On-boarding session to help participants login to LUMI cluster | |
### <font color=red>(Nov. 12) Day 1</font>
:::warning
**https://hackmd.io/@ENCCS-Training/gpu-programming-day1-2024**
:::
| Time | Content | Instructor |
| :---------: | :-----: | :--------: |
| 09:00-09:15 | Welcome | Yonglei/Thor |
| 09:15-09:40 | [Why GPUs?](https://enccs.github.io/gpu-programming/1-gpu-history/) | Binod (Jim-Viktor) |
| 09:40-10:20 | [GPU hardware and software ecosystem](https://enccs.github.io/gpu-programming/2-gpu-ecosystem/) | Cristian |
| 10:20-10:30 | Break | |
| 10:30-11:00 | [What problems fit to GPU?](https://enccs.github.io/gpu-programming/3-gpu-problems/) | Pedro |
| 11:00-11:30 | [GPU programming concepts](https://enccs.github.io/gpu-programming/4-gpu-concepts/) | Cristian (Stepas) |
| 11:30-12:00 | [Introduction to GPU programming models](https://enccs.github.io/gpu-programming/5-intro-to-gpu-prog-models/) | Stepas |
| 12:00-13:00 | Lunch break | |
| 13:00-14:20 | [Directive-based models (OpenACC, OpenMP)](https://enccs.github.io/gpu-programming/6-directive-based-models/) | Wei (Stepas) |
| 14:20-14:30 | Break |
| 14:30-16:00 | [Non-portable kernel-based models (CUDA, HIP)](https://enccs.github.io/gpu-programming/7-non-portable-kernel-models/) | Cristian (Jonathan) |
### <font color=red>(Nov. 13) Day 2</font>
:::warning
**https://hackmd.io/@ENCCS-Training/gpu-programming-day2-2024**
:::
| Time | Content | Instructor |
| :---------: | :-----: | :--------: |
| 09:00-10:30 | [Portable kernel-based models (C++ stdpar, OpenCL, SYCL)](https://enccs.github.io/gpu-programming/8-portable-kernel-models/) | Andrey |
| 10:30-10:40 | Break |
| 10:40-12:00 | Exercises (on various models) | |
| 12:00-13:00 | Lunch break |
| 13:00-14:15 | [High-level language support](https://enccs.github.io/gpu-programming/9-language-support/) | Yonglei, Hicham (Stepas) | |
| 14:15-14:30 | Break | |
| 14:30-15:45 | [Multi-GPU programming with MPI](https://enccs.github.io/gpu-programming/10-multiple_gpu/) | Hicham, Andrey |
| 15:45-16:00 | Q/A | |
### <font color=red>(Nov. 14) Day 3</font>
:::warning
**https://hackmd.io/@ENCCS-Training/gpu-programming-day3-2024**
:::
| Time | Content | Instructor |
| :---------: | :-----: | :--------: |
| 09:00-10:00 | [Preparing code for GPU porting](https://enccs.github.io/gpu-programming/11-gpu-porting/) | Cristian (Fortran to GPU), Andrey |
| 10:00-10:30 | [Recommendations and discussions](https://enccs.github.io/gpu-programming/12-recommendations/) | Yonglei |
| 10:30-10:45 | Break | |
| 10:45-11:50 | [Problem examples](https://enccs.github.io/gpu-programming/13-examples/) | Stepas, Andrey |
| 11:50-12:00 | Wrap-up | Yonglei |
| 12:00-13:00 | Lunch break | |
| 13:00-15:50 | [Bring your code session](https://hackmd.io/@yonglei/gpu-programming-byc-2024) | |
| 15:50-16:00 | Summary of this workshop | |
---
## Code of Conduct
We strive to follow the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) to foster an inclusive and welcoming environment for everyone.
[](https://github.com/ENCCS/event-organisation/blob/main/CODE_OF_CONDUCT.md)
**In short**:
- Use welcoming and inclusive language
- Be respectful of different viewpoints and experiences
- Gracefully accept constructive criticism
- Focus on what is best for the community
- Show courtesy and respect towards other community members
Contact details to report CoC violations can be [found here](https://enccs.se/yonglei-wang).
---