Mini Course: GPU computing with Julia
A graphics processing unit (GPU) is a computer part originally designed to speed up the creation, rendering and treatment of images. It has since then been extended to a wider range of applications including scientific ones. In some cases, general purpose computing on a GPU can be vastly more efficient than a CPU, and we want to help you harness that power.
In this course, we will use the Julia programming language that provides many useful abstractions that make GPU computing easier than writing programs in native GPU languages, such as Nvidia's CUDA.
We have a tentative program, but we would like to tailor it to the level of participants, so please make sure to share your background experience with us.
This course is suitable for people with some experience with either Julia or GPU computing in another language (such as C).
If you have experience with Julia or GPU computing and would like to help, feel free to sign up as a tutor.
The current tentative progran will take place over 3 sessions described below. However, we can adapt it to the participants (make it more basic if participants have no prior experience, or more in-depth for experienced people) so please share your background and expectations on sign up. In particular, let us know if you are interested in any of the following topics:
- Shared memory usage
- Memory access patterns (memory coalescence)
- Profiling tools
- Heterogeneous computing (writing code that also executes on the CPU)
The program is as follows:
|Friday, August 13||1PM - 3PM||Introduction to GPU computing with basic vector addition with broadcasting and then CUDA.jl.
Discussion of kernel performance with nvprof / nvvp
|Tuesday, August 24||1PM - 3PM||Discussion of problems that are ill-suited for GPU hardware, including summations (reductions), iterative problems, and graph / tree traversal.
Optimizations to kernel performance with memory coalescence and shared memory
|Thursday, August 26||1PM - 3PM||Specific problems requested by students|
- Location: B701, Computer Lab, Lab 3.
- What to bring:
- A laptop with Julia installed
- Zoom link: if you prefer joining remotely, or if B701 exceeds 50% capacity, you can join using this link. Unfortunately, we won't be able to provide much help with the hands-on part via Zoom.
- Video Recording: this course might be recorded and uploaded online, only the teacher will be recorded. Contact Jeremie Gillet if you have reservations about this.
- Drinks: There will be free coffee and tea, bring your cup!
If you are interested in the course but cannot participate to this particular event, let us know and we will contact you for any later occurrence of this course.
Thank you very much for your interest.