Parallel Coding with Chapel

Course Description

Chapel is a modern programming language designed for both shared and distributed memory systems, offering high-level, easy-to-use abstractions for task and data parallelism. Its intuitive syntax makes it an excellent choice for novice HPC users learning parallel programming. Chapel supports a wide range of parallel hardware – from multicore processors and multi-node clusters to GPUs – using consistent syntax and concepts across all levels of hardware parallelism.

Chapel dramatically reduces the complexity of parallel coding by combining the simplicity of Python-style programming with the performance of compiled languages like C and Fortran. Parallel operations that might require dozens of lines in MPI can often be written in just a few lines of Chapel. As an open-source language, it runs on most Unix-like operating systems and scales from laptops to large HPC systems.

This course begins with Chapel fundamentals, then focuses on data parallelism through two numerical examples: one embarrassingly parallel and one tightly coupled. We’ll also briefly explore task parallelism (a more complex topic, and not the primary focus in this course). Finally, we’ll introduce GPU programming with Chapel.

More information and links available at https://folio.vastcloud.org/chapel-compact.html

Participant preparation: Alex will prepare a training cluster with guest accounts, so all the participants need is a computer with an SSH client to log into the training cluster. Participants who are not familiar with using SSH to access a remote system, can read https://mint.westdri.ca/login before the course begins.

Alex Razoumov
Alex Razoumov
Research Solutions Lead