High Performance Computing in Julia, from the ground up.
This module is designed for teaching programming to new Masters/PhD students, starting from the basics and working up to writing high performance code for any scale. This module will primarily be delivered via the Midlands Physics Alliance Graduate School (MPAGS). The module is open to anyone else who is interested in the material. All of the resources (including the lecture notes) will be available publicly. Get in touch with me via email if you would like to enroll, and receive updates about the course.
Prerequisites
Students taking this course should match following description:
Have at least some limited experience with programming in any language, e.g. Python, MATLAB, C/C++ etc.
Basic mathematics skills, including elementary algebra and calculus.
Willingness to learn something new!
No prior knowledge about the Julia programming language is required as this course will provide a crash course to get everyone up to speed at the start of the module. Topics learnt during this course are not based solely around Julia, but can be transferred to other languages.
Topics
This module will focus on teaching students how to write high performance code, taking advantage of modern hardware, to be able to execute code at any scale, from your own machine with multiple cores, to using a GPU, all the way to executing code across an entire High Performance Cluster. We will also touch on Research Software Engineering techniques throughout the module.
See the Topics page for a detailed overview of the topics covered.
Module Convenor
This course is taught by me, Jamie Mair, a Research & Teaching Fellow at the University of Nottingham. You can contact me about the course via email.
Timetable and format
This course will run in the spring term (January 2023), starting on Tuesday 17th January. The format of this course will be a 2 1-hour sessions each week on Tuesday and Thursday, being taught at the University of Nottingham in the Physics building, and livestreamed on Teams (link will be sent round via email). Rooms for each session will be posted on the Timetable page.
The Tuesday session will be a lecture covering the theoretical material. The Thursday session will be a hybrid lecture/workshop to give you the opportunity to practice what is taught in the lectures through the assignments.
The bulk of the reference material will be provided in the format of a book/lecture notes which is complementary to the course and gives more depth. These notes should also be suitable for students who would like to follow along and do the assignments but cannot attend the timetabled sessions (either online or in-person).
Assessment
Each week of teaching will have a corresponding assessment delivered via GitHub classroom, with automatic feedback/marking. These problems are usually short and will be started in the workshop and hopefully finished during the workshop on Thursdays. Some assignments may take more time outside the workshop.
More details can be found on the Resources page.
Citation
If this course is useful for your research, please consider citing this work:
@misc{Mair2023MPAGS,
author = {Jamie Mair},
title = {High Performance Computing in Julia, Graduate Course and Book},
month = {January},
year = {2023},
howpublished = "\url{https://jamiemair.github.io/mpags-high-performance-computing}",
url = "\url{https://jamiemair.github.io/mpags-high-performance-computing}",
version = {1.2}
}