This is not a course. Enrolment is automatic for everyone enrolled in any 2021-2022 Introduction to Advanced Research Computing (ARC) course.
- Teacher: Tyler Collins
- Teacher: James Desjardins
- Teacher: Baolai Ge
- Teacher: Weiguang Guan
- Teacher: Jose Sergio Hleap
- Teacher: Sergey Mashchenko
- Teacher: Pawel Pomorski
- Teacher: Paul Preney
- Teacher: Jinhui Qin
- Teacher: Armin Sobhani
- Teacher: Tyson Whitehead
- Teacher: Isaac Ye
Shells on Linux, Unix, and other POSIX operating systems are fundamental tools providing access to and control of software. Shells present to the user a command line driven text interface enabling one to interact with a computer using commands typed in. Tasks such as searching files and directories; creating, modifing, renaming, and deleting files and directories; and many other things can be easily achieved. Shells also support a programming language that allows one to execute commands either by manually typing such in or by placing those commands in a file called a shell script so those commands can be run automatically by executing that script.
This course introduces the user to the BASH shell which is the default shell for all account on Compute Canada's compute clusters.
Live Session Dates: Sept. 27, 30; Oct. 4, & 7
NOTE: If enrolling after the live session dates, recordings of such can be watched online.
- Teacher: Baolai Ge
Scheduling software on a compute cluster is how one runs programs/jobs on that compute cluster. When jobs are submitted to the scheduler, the scheduler directs where and when those jobs run within the compute cluster. The order jobs are run is based on each job's priority calculated using that system's fair share policy. Finally, each job that runs has its requested resources tied to their account so it is able to use such when it runs.
This course discusses Compute Canada's compute cluster scheduling software (SLURM) as well as aspects of how jobs are scheduled, using interactive jobs to do (human) interactive (live) work, and how to estimate
job resource requirements.
Live Session Dates: Oct. 12, 14, 18, & 21
NOTE: There is no live session on Mon. Oct. 11 due to the Thanksgiving holiday. Instead, there will be a live session on Tues., Oct. 12.
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Tyler Collins
- Teacher: James Desjardins
Python is an easy-to-read, easy-to-learn, general-purpose, and popular programming language. It is concise and easy to read, and allows the user to do everything from web development to software development including scientific applications. In this introductory Python course, we demonstrate some of the basics of Python programming --enough to get started. This course will be focused on Python usage on Compute Canada clusters.
Live Session Part 1 Fall 2021 Dates: Oct. 25, 28; Nov. 1 & 4
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Tyler Collins
- Teacher: Jose Sergio Hleap
This introductory course will focus on introducing Machine Learning (ML) in order to run ML code on Compute Canada's clusters. There will be some hands-on exercises and some discussion on how to submit ML jobs to the Graham compute cluster, ML frameworks such a PyTorch, Tensorflow, and Scikit-Learn, and a brief introduction to a ML linear regression model.
Live Session Dates: Nov. 8 & 11.
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
Some common libraries for data analytics in Python, such as Numpy, Pandas, Scikit-Learn, etc. usually work well if the dataset fits into the existing RAM on a single machine. However, when dealing with large datasets, it can be a significant challenge to work around such memory constraints. This is where Dask can help. Dask provides a framework and libraries that can handle large datasets on a single multi-core machine or on a cluster.
This course provides an introduction to Dask.
Live Session Dates: Nov. 15 & 18
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Jinhui Qin
Writing a concurrent or parallel program that can run on multiple cores or on multiple nodes/computers in a cluster is not the same as writing a sequential program for a single CPU core. Typically sequential programs are only concerned with some aspects of how information is stored in RAM and the step-by-step (sequential) correctness of its code. A concurrent program is concerned with the non-sequential reasoning of how code executes and how it can see (or not) values in RAM from other streams of execution, how it orders reads and writes on those streams of execution, and the time it takes for data in to be transferred across busses (e.g., CPU to GPU RAM, CPU to machine RAM, etc.).
This course will provide a practical overview of important
concepts and details involved with concurrent programming in order to further understanding of the benefits, costs, and issues involved
with exploiting and writing parallel computing programs.
Live Session Dates: Nov. 22 & 25
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Paul Preney
Many programs claim to be C++ programs turn out, upon
examination, to be programs that mostly/exclusively use C constructs. While this is a
valid way to use C++, it is better to write programs to leverage
the features of the C++ language and the C++ Standard Library.
Writing such code will result in shorter, faster, and more robust code
that is easier to maintain and update.
This course
will (briefly) introduce the C++ language and will discuss modern C++ concurrent programming. (Aspects of this course some will find relevant to other IntroARC courses as well, e.g., CMake (which is commonly used to easily build larger C++ programs), Fortran (which is commonly used to with C++ in mixed language programs), and MPI (which is commonly used to run (parallel) programs across a number of nodes/computers).
Live Session Dates: Nov. 30; Dec. 2, 6, 9, 13, & 16.
NOTE 1: This course starts on Tuesday, November 30. (There is no live session on Mon. Nov. 29.)
NOTE 2: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Paul Preney
Since the introduction of the milestone of Fortran 90 standard, Fortran has become very different from its ancestor with many new modern language features. Inherited from old FORTRAN standards and enhanced by the newer ones, Fortran is still the language of choice for scientific computing for its intrinsic support for real and complex floating point operations. Its array handling, enhanced by index slicing, makes array processing similar or identical to its counterparts, such as MATLAB, hence superior to any other programming languages. The unified interface of intrinsic functions for all data types makes translating mathematical expressions
to computer programmes a lot cleaner and easier. Further, since the
standard 2008, the introduction of co-arrays has made writing parallel
code that can run on multiple core computers and clusters trivial, one
needs not to know the traditional message passing interface (MPI)
library, nor threading. They are built into the syntax of the language
itself.
This course is a companion to the C++ course, where you will find the features missing from Fortran that are more essential to general purpose computing than number crunching. We will show some of the practice of interlanguage programming, through which the shortcomings of Fortran could be complemented by interfacing with C/C++.
Live session dates and time: Monday and Thursday, Jan. 10, 13, 17, 20, 24, 27 at 2pm-3pm EST.
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Baolai Ge
- Teacher: Pawel Pomorski
- Teacher: Tyson Whitehead
Graphics processing units (GPUs) are commonly used for high performance computing (HPC). In this introductory course, we will consider the simplest way to program GPUs, using the OpenACC framework. We will discuss both strengths and weaknesses of this approach, when compared with full-fledged GPU programming using CUDA. The course will have some hands on exercises.
Live Session Dates: Jan. 31, Feb. 3, 7, & 10.
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Sergey Mashchenko
- Teacher: Pawel Pomorski
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 Session Dates: Feb. 14, 17, 22 & 24.
NOTE 1: There is no live session on Mon. Feb. 21 due to the Family Day holiday. Instead, there will be a live session on Tues., Feb. 22.
NOTE 2: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Jinhui Qin
- Teacher: Armin Sobhani
An introduction to using Graham's VDI nodes and using Paraview.
Live Session Dates: Feb. 28 and Mar. 3 (attend both).
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Weiguang Guan
- Teacher: Tyson Whitehead
2022-01 Update: Singularity is now called Apptainer and is managed by The Linux Foundation --other than the name change, everything remains the same, e.g., newer versions on our clusters will be called "apptainer" instead of "singularity".
Singularity is a container solution similar to Docker for secure use on multi-user high performance and advanced computing (HPC and AC) systems. Singularity has evolved significantly since it was first introduced in 2015 supporting features such as overlay files, image encryption, exposing GPGPU devices to the container software, etc. Features aside, using containers is valuable for many: the installed software remains exactly the same and can be used a number of clusters and personal computers running Linux by everyone in a research team.
This course will cover commonly used aspects of Singularity, e.g., building an image from DockerHub, how to build a custom image of your own, how to use an overlay file to have read-write access to an image, and how to build and make use of Conda software installations inside an Singularity image.
NOTE: On Compute Canada's clusters, we recommend that Conda is installed and used completely within a Singularity container and we recommend not using Conda directly in your account, e.g., see this link. If you have a need or are using Conda, enrolling in this course will enable you to learn how you can use Conda inside of Singularity.
Live Session Dates: Mar. 7 & 10
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Paul Preney
Perhaps you have learnt you need to learn how to write some parallel code using Message Passing Interface (MPI) for your research? Don't worry, no prior MPI knowledge or experience is needed. MPI programs can be written in C, C++, or Fortran so (obviously, any one of) prior C, C++, and/or Fortran programming experience is needed.
This introductory MPI course will present an overview of what is MPI; what it enables one to do; demonstrate and discuss various MPI programs starting with a simple "Hello World!" program; demonstrate how to compile and run MPI programs; discuss
some of the MPI communications API calls; and discuss about how to
explore using MPI further beyond this course.
Live Session Dates: Mar. 14, 17, 21, 24, 28, and 31.
NOTE: If enrolling after the live session dates, recordings of such can be viewed online.
- Teacher: Baolai Ge
- Teacher: Paul Preney