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.
- Teacher: Tyson Whitehead
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.
- Teacher: Sergey Mashchenko
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.
- Teacher: Nastaran Shahparian
- Teacher: Collin Wilson
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.
- Teacher: Jinhui Qin
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.
- Teacher: Paul Preney
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.
- Teacher: Weiguang Guan
- Teacher: Nastaran Shahparian
- Teacher: Collin Wilson
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.
- Teacher: Armin Sobhani
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.
- Teacher: Tyson Whitehead
This is an introductory mini course for MATLAB on Alliance clusters, with the focus on Parallel Computing Toolbox (PCT) and MATLAB Compiler and Runtime libraries (MCR).
We will talk about the current status of MATLAB, license issues, and job files on the clusters, followed by the approach of parallel computing with PCT including parfor for parallel for loop, and spmd for parallel tasks, etc., and the procedure to use MCR with examples. Some screenshots will be used in the slides to show the step-by-step approaches. The second session will be a lab type with demos, self practice, Q&A, etc..
The goal of this course is to run MATLAB more efficiently on the clusters.
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.
- Teacher: Jemmy Hu
This course's sessions will present and discuss how to use containers on Digital Research Alliance of Canada's compute clusters with Apptainer and how to build Apptainer container images.
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.
- Teacher: Paul Preney
In our digitally-driven world, databases are the cornerstone of virtually every online service and application. They help store your favourite songs on music platforms, track orders on shopping sites, and keep your personal information safe and sound. These incredible systems are the backbone of our digital universe, silently and efficiently managing the vast oceans of data that flow through our daily lives. From the social media sites we share with our friends to the online transactions that make our lives easier, databases are the unsung heroes, diligently organizing, storing, and retrieving information with remarkable precision. Whether you're a technical professional or just beginning to explore data management, the journey into the realm of databases is both enlightening and rewarding, offering endless opportunities for discovery and innovation. Together, we will explore the secrets that make our connected world tick.
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.
- Teacher: Ed Armstrong
This course is three one-hour lectures designed to get Engineering Students to the spot where they can run engineering software on the Canadian supercomputers. The first lecture will cover the basics of supercomputing: what supercomputers are, what they can and cannot do, how to get acess to, and how to use the supercomputers.
The second lecture will cover the basics of the open source OpenFOAM program: how to access it, setting up and running a simple simulation, how to run it in parallel, and how to use ParaView to visualize the results. The final lecture will be the same (running a basic simulation on the cluster), but this time using the proprietary Ansys program.
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.
- Teacher: Doug Roberts
- Teacher: Tyson Whitehead
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.
- Teacher: Armin Sobhani