Introduction to High-Performance Computing in Chapel

This workshop is an introduction to parallel programming in Chapel. This material is designed for Day 2 of HPC Carpentry.

By the end of this workshop, students will know:

NOTE: This is the draft HPC Carpentry release. Comments and feedback are welcome.

Prerequisites

There are no real prerequisites for this lesson, but prior programming and/or command line experience will be helpful. This lesson assumes no previous knowledge of parallel programming.

Schedule

Setup Download files required for the lesson
00:00 1. Introduction to Chapel What is Chapel and why is it useful?
00:30 2. Basic syntax and variables How do I write basic Chapel code?
01:00 3. Ranges and arrays What is Chapel and why is it useful?
02:30 4. Conditional statements How do I add conditional logic to my code?
04:00 5. Getting started with loops How do I get run the same piece of code repeatedly?
05:30 6. Procedures for functional programming How do I write functions?
05:45 7. Using command-line arguments How do I use the same program for multiple use-cases?
07:15 8. Measuring code performance How do I know how fast my code is?
08:45 9. Intro to parallel computing How does parallel processing work?
10:15 10. Fire-and-forget tasks How do execute work in parallel?
11:45 11. Synchronising tasks How should I access my data in parallel?
13:15 12. Task parallelism with Chapel How do I write parallel code for a real use case?
14:45 13. Running code on multiple machines What is a locale?
17:45 14. Domains and data parallelism How do I store and manipulate data across multiple locales?
20:45 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.