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.

Target audience

This course is suitable for people with some experience with either Julia or GPU computing in another language (such as C).

Teachers

The teacher will be James Schloss, OIST PhD Graduate of YouTube and Twitch fame. 

If you have experience with Julia or GPU computing and would like to help, feel free to sign up as a tutor.

Program

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:

Date Time Topic
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

You can find the material of the course here.

The first session was recorded here, and the second here (apologies for the different format due to technical difficulties).

More information

  • 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.

 
1 Start 2 Complete
This is required to give you access to GPU partitions on Deigo
Have you used Julia before? How proficient are you with it? Have you used GPU Computing before?
Why are you interested in this topic? Is there a particular thing you would like to learn?