Running programs on the supercomputers is done via the Bash shell. This course is three one hour lectures on using bash. No prior familiarity with bash is assumed. In addition to the basics of getting around, globbing, regular expressions, redirection, pipes, and scripting will be covered.

Live online classes will take place on Mon. Oct. 2, Wed. Oct. 4, and Friday, Oct. 6 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

This workshop will introduce the tools for debugging and profiling programs, with the main focus on parallel programs. Through a series of hands-on exercises we will learn to find and fix common bugs in MPI, OpenMP, and CUDA programs, and improve efficiency of parallel codes.

Live online classes will take place on Wed. Oct. 11, Mon. Oct. 16, Wed. Oct. 18, and Mon. Oct. 23 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Python has become one of the most popular programming languages in scientific computing. It is high level enough that learning it is easy, and coding with it is significantly faster than other programming languages. However, the performance of pure Python programs is often sub-optimal, and might hinder your research. In this course, we will show you some ways to identify performance bottlenecks, improve slow blocks of code, and extend Python with compiled code. You'll learn about various ways to optimise and parallelise Python programs, particularly in the context of scientific and high performance computing.

Prerequisite knowledge: know what classes and functions are; familiarity with Jupyter Notebook; basic console use; and comfortable with Python software carpentry material.

Live online classes will take place on Wed. Oct. 25, Mon. Oct. 30, Wed. Nov. 1, and Mon. Nov. 6 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Some common libraries for data science in Python, such as Numpy, Pandas, Scikit-Learn, etc. usually work well if the dataset fits into the RAM on a single machine. When dealing with large datasets, it could be a challenge to work around memory constraints. This course module provides an introduction to scalable and accelerated data science with Dask and RAPIDS. Dask provides a framework and libraries that can handle large datasets on a single multi-core machine or crossing multiple machines on a cluster; while RAPIDS can help to offload analytics workloads to GPUs to accelerate your data science and analytics toolchain with minimal code changes.

Live online classes will take place on Wed. Nov. 8, Mon. Nov. 13, and Wed. Nov. 15 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

This course will cover modern C++ programming including:

  • Topic 1: Compile-Time Computations Using C++20 Ranges
    • This topic will introduce how to use C++20 ranges can be used in code to generate, at compile-time, tables of numbers that are compile-time constants which can be used to help write code that runs faster.
  • Topic 2: Chrono, Benchmarking, and Algorithms
    • This topic will demonstate how to use the C++ standard library's <chrono> header to microbenchmark code and how to easily use the standard library's (sequential and parallel) algorithms (including using parallel algorithms on GPUs when using NVIDIA's NVHPC SDK).
  • Topic 3: Multidimensional Arrays: mdspan and submdspan
    • This topic will demonstrate how to use C++23's multi-dimensional arrays (mdspan) and C++26's ability to "slice" those arrays (submdspan). Traditionally multi-dimensional arrays and slices of them has been a feature of Fortran and some recent languages --but not C++. This has changed.
    • NOTE: While neither C++23 nor C++26 are official standards yet, all of the presented code will work with an open source reference implementation with C++14 code or newer.
  • Topic 4: Parallel Pseudo-random Number Generation
    • This topic will present-discuss how the C++ sequential PRNGs can be used safely concurrent/parallel programs.
    • While the focus of this topic will be on using the parallel PRNGs presented, this topic will include provided code and a very brief introduction to mutexes, locks, atomics, and threads which can be useful in situations that one needs more control over how parallel code runs while also striving to minimize overheads of such.


Live online classes will take place on Mon. Nov. 20, Wed. Nov. 22, Mon. Nov. 27, and Wed. Nov. 29 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

A revolution in AI has made breakthroughs in many applications ranging from image recognition, voice recognition, to natural languages understanding, etc. This course module aims at helping AI practitioners to understand the fundamentals of deep learning through examples, e.g. to visually understand the training processing, what is learned, the bias-variance tradeoff, etc. Examples are given in Tensorflow. Basic Python knowledge is prerequisite to this course.

Live online classes will take place on Mon. Dec. 4, Friday. Dec. 8, and Mon. Dec. 11 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Course description will be posted later.

Live online classes will take place on Wed. Dec. 13 and Mon. Dec. 18 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

ParaView is a very powerful temporal 3D visualization program. The Graham VDI system is a remote desktop interface for doing graphical pre- and post-processing on files stored on graham. This course consists of a general introduction to the Graham VDI system and ParaView via a live demonstration that you can follow along. There will be small exercises where you get a chance to see if you have actually understood the concepts.

Live online classes will take place on Mon. Jan. 8 and Wed. Jan. 10 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Course description will be posted later.

Live online classes will take place on Mon. Jan. 15 and Wed. Jan. 17 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Course description will be posted later.

Live online classes will take place on Mon. Jan. 22 and Wed. Jan. 24 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Course description will be posted later.

Live online classes will take place on Mon. Jan. 29, Wed. Jan. 31, and Mon. Feb. 5 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

Course description will be posted later.

Live online classes will take place on Wed. Feb. 7, Mon. Feb. 12, and Wed. Feb. 14 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes

CMake is a cross-platform, open-source software tool used to automate the building, testing, packaging, and installation of software. It is independent of the programming language and tools used although it is most commonly used to with C, C++, and most recently Fortran code. CMake is particularly nice since it determines for a number of programming languages the dependencies between various files, e.g., header and source files, in order to properly build the software/documentation and to minimize the amount of work required to build such.

This course will introduce CMake as well how to write, run, and test CMake scripts. Especially if you are manually building your programs by hand or are experiencing difficulties using shell scripts, it is worth exploring how to use tools such as CMake to make this much easier and much less error-prone to do.

Live online classes will take place on Wed. Feb. 21 and Mon. Feb. 26 from 1pm to 2pm Eastern Time. Recordings of live sessions will be available afterwards for self-paced learning.

Access is restricted to Digital Research Alliance of Canada (formerly Compute Canada) authenticated users only: Yes