SciNet Education Site
High performance computing
Courses tagged with "High performance computing"
Learn how to fully utilize the power of HPC. Discover proven strategies and tools to efficiently scale up from serial jobs to parallel runs across many compute nodes on Niagara.
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this session, we will discuss the debugging of frequently encountered bugs in serial code and debugging of parallel (MPI and threaded) codes using DDT.
Learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP execution and memory model, performance, reductions and load balancing.
Format: Virtual
An overview of GPUs and their use in supercomputers. This workshop will explain what GPUs are, and cover the basic ideas of GPU use in scientific computing. We will introduce several GPU programming frameworks, and demonstrate how to accelerate a solution of a science problem using a GPU. Python or C++ could be used for the assignment.
Format: Virtual

Parallel programming in Python. We will cover subprocess, numexpr, multiprocessing, MPI, and other parallel-enabling python packages.
Format: Virtual
Parallel programming in Python. We will cover subprocess, numexpr, multiprocessing, MPI, and other parallel-enabling python packages.
Format: Virtual
Learn the basics of Message Passing Interface (MPI) programming. Examples and exercises will be based on parallelization of common scientific computing problems.
Format: Virtual
In this workshop, you will learn advanced MPI techniques such as MPI Datatypes, application topology and MPI-IO in the context of a scientific MPI example.
Parallel programming in Python. We will cover subprocess, numexpr, multiprocessing, MPI, and other parallel-enabling python packages.
Format: In person, but also broadcast and recorded.
An overview of GPUs and their use in supercomputers. This workshop will explain what GPUs are, and cover the basic ideas of GPU use in scientific computing. We will introduce several GPU programming frameworks, and demonstrate how to accelerate a solution of a science problem using a GPU. Python or C++ could be used for the assignment.
Format: In person, but also broadcast.

Learn the basics of Message Passing Interface (MPI) programming. Examples and exercises will be based on parallelization of common scientific computing problems.
Format: Online (Zoom)


In this workshop, spread out over three days within one week, you will learn advanced MPI techniques such as MPI Datatypes, MPI-IO and one-sided communications.

Learn the basics of Message Passing Interface (MPI) programming. Examples and exercises will be based on parallelization of common scientific computing problems.
Parallel programming in Python. We will cover subprocess, numexpr, multiprocessing, MPI, and other parallel-enabling python packages.
Learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP execution and memory model, performance, reductions and load balancing.
Learn parallel programming in R, with a focus on parallel data analysis.
Debugging and profiling are important steps in developing a new code, or porting an old one to a new machine. In this session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes.
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this session, we will discuss the debugging of frequently encountered bugs in serial code and debugging of parallel (MPI, threaded, and CUDA) codes using DDT on Trillium.
Format: Virtual
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this session, we will discuss the debugging of frequently encountered bugs in serial code and debugging of parallel (MPI and threaded) codes using DDT.
This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).

This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).
This is a graduate course that can be taken for graduate credit by UofT PhD and MSc students. Students that wish to do so, should enrol using ACORN/ROSI.
This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).
This is a graduate course that can be taken for graduate credit by UofT PhD and MSc students. Students that wish to do so, should enrol using ACORN/ROSI.
This is an in-person course.
This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).
This is a graduate course that can be taken for graduate credit by UofT PhD and MSc students. Students that wish to do so, should enrol using ACORN/ROSI.
This is an in-person course.
This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).
There are three ways to follow this course:
- As a graduate course for UofT PhD and MSc students. Students that wish to do so, should not self-enrol here, but enrol using ACORN/ROSI.
- As a SciNet or Alliance user taking the course for SciNet certificate credits; for that, enrol on this site (note: limited spots).
- As an auditor following along with recordings but not submitting assignments; for this no enrollment is needed.
This is a hybrid in-person/virtual course.