Course Resources

Lecture Notes

The lecture notes are available here. They are a work in progress and may change.

Changelog

Current Version: v1.2 (23/01/2023)

  • Updated to v1.1: Improved Chapters 5 and 6: Measuring Performance and Optimisation.

  • Updated to v1.2

GitHub Classroom

The assessment and submission will be done via GitHub Classroom, which allows for automated marking and feedback. The assignment for each week will be emailed to everyone enrolled in the class. You will need a GitHub account (it's free!) to sign up.

Git/GitHub Refresher

For this course, you do not need to be an expert with Git, but its use is encouraged. The video below gives an overview of Git for researchers, but any Git video/tutorial should be enough. Basic usage needed for the course will be covered during the first workshop.

Git and GitHub refresher

Assignments

  1. Week 1 - Getting Started with Julia: Workflow and Setup - click here

  2. Week 2 - Profiling and Optimisation - click here

  3. Week 3 - Multithreading - click here

  4. Week 4 - Multiprocessing - click here

  5. Week 5 - GPU Programming - click here

Computing Resources

During this course, you should be able to do everything on your own personal machine. I would advise trying to run some code on your local cluster as well if you have access. However, not everybody has access to a GPU, and specifically during part of the course, you will need access to a modern NVIDIA GPU. If you have access to your local institution's HPC already, but do not have GPU access, you can ask your local admin to give you a small number of GPU hours (around 20 should be more than enough).

Another option is to use Google Colab which has free access to GPU resources for testing. There is also a cheap paid option for better access. The notebook linked here has instructions for how to setup Julia and CUDA. This is the easiest way to get started.

If you are from UoN and are struggling to access GPUs, contact myself to see if we can arrange temporary access to our in-house Physics cluster. Access to this cluster cannot be guaranteed, and we advise students to use this as a last resort.

Lecture Slides & Recordings (2023)

(1/10) Hardware & Software Basics

Lecture Slides HPC in Julia (1/10) Lecture Video

(2/10) SIMD & The Stack and the Heap

Lecture Slides HPC in Julia (2/10) Lecture Video

Errata

  • Final operator in the stack example should evaluate as a - instead of a +.

(3/10) Measuring Performance & Optimisation

Lecture Slides HPC in Julia (3/10) Lecture Video

(4/10) Optimisation & Type Safety

Code Repository:

https://github.com/JamieMair/MPAGS_Slides_Examples

Lecture Slides HPC in Julia (4/10) Lecture Video

(5/10) Introduction to Parallel Programming

Lecture Slides HPC in Julia (5/10) Lecture Video

(6/10) Multithreading

Lecture Slides HPC in Julia (6/10) Lecture Video

(7/10) Multiprocessing & Cluster Computing

Lecture Slides HPC in Julia (7/10) Lecture Video

(8/10) Research Software Engineering

Lecture Slides HPC in Julia (8/10) Lecture Video

(9/10) Introduction to GPU Programming & CUDA.jl

Lecture Slides HPC in Julia (9/10) Lecture Video

(10/10) CUDA.jl Kernel Programming

Lecture Slides HPC in Julia (10/10) Lecture Video

CC BY-SA 4.0 Jamie Mair. Last modified: April 21, 2024. Website built with Franklin.jl and the Julia programming language.