Wiki

Clone wiki

upcxx / events / CUF23

Virtual Tutorial: Introduction to High-Performance Parallel Distributed Computing using Chapel, UPC++ and Coarray Fortran

When: Wed/Thu July 26-27, 2023 | noon - 3:15pm Eastern time
Where: An interactive virtual tutorial held online On-demand video now available below!

Speakers

  • Dr. Michelle Mills Strout
    • Senior Engineering Manager at Hewlett Packard Enterprise
    • Affiliate Faculty of Computer Science at University of Arizona
  • Dr. Damian Rouson
    • Computer Languages and Systems Software Group Lead at Lawrence Berkeley National Laboratory
    • President of Archaeologic Inc. and Sourcery Institute
  • Dr. Amir Kamil
    • Lecturer at University of Michigan
    • Visiting Faculty at Lawrence Berkeley National Laboratory

Abstract

A majority of HPC system users utilize scripting languages such as Python to prototype their computations, coordinate their large executions, and analyze the data resulting from their computations. Python is great for these many uses, but it frequently falls short when significantly scaling up the amount of data and computation, as required to fully leverage HPC system resources. In this tutorial, we show how example computations such as heat diffusion, k-mer counting, file processing, and distributed maps can be written to efficiently leverage distributed computing resources in the Chapel, UPC++, and Fortran parallel programming models. This tutorial should be accessible to users with little-to-no parallel programming experience, and everyone is welcome. A partial differential equation example will be demonstrated in all three programming models along with performance and scaling results on big machines. That example and others will be provided in a cloud instance and Docker container. Attendees will be shown how to compile and run these programming examples, and provided opportunities to experiment with different parameters and code alternatives while being able to ask questions and share their own observations. Come join us to learn about some productive and performant parallel programming models!

Tutorial Videos

CUF23 Tutorial Videos


Hands-on tutorial activities

Hands-on code examples

The example code used in this tutorial is available from multiple sources.
Recommended download instructions appear later in this page ("Step 2.").

Platforms

You have a choice of which system you will use for the hands-on activities:

  • AWS: An HPC Linux cloud instance
    Open to all participants
  • Perlmutter: An HPE Cray EX supercomputer at the National Energy Research Scientific Computing Center (NERSC)
    Open to participants who requested training accounts at registration time, as well as those with pre-existing access to Perlmutter.
  • Frontier: An HPE Cray EX supercomputer at the Oak Ridge Leadership Computing Facility (OLCF)
    Open to participants with pre-existing access to Frontier
  • Other: Such as docker containers or your own system
    Participants have the option to use other systems if they have pre-installed all the necessary software. However, we do not have the ability to provide any installation support during the event. Additionally, the examples and the commands to compile and run them have only been well tested on the three systems listed above. Our ability to help with system-specific issues will be very limited.

Step 1. Connecting

The first step is to connect to the platform you are using. Instructions for each platform follow.

AWS

Visit the sign-up page [no longer available] and follow the instructions there to allocate an instance and login using ssh or your browser.

You must visit the link above (not simply reload in your browser) on day 2, because there is a new sign-up sheet for a new set of instances.

Perlmutter training accounts

You should ssh to perlmutter.nersc.gov using the credentials provided to you in advance by email from nersc.gov.

Perlmutter pre-existing users

You should ssh to perlmutter.nersc.gov using your normal credentials.
We strongly advise starting with a fresh login session and as few environment customizations as possible, to avoid issues loading the environment modules needed for this tutorial.

Frontier pre-existing users

You should ssh to frontier.olcf.ornl.gov using your normal credentials.
We strongly advise starting with a fresh login session and as few environment customizations as possible, to avoid issues loading the environment modules needed for this tutorial.

Step 2. Download the hands-on materials

The following two commands should be run on all platforms to obtain the materials required for the hands-on activities:

curl -LO https://go.lbl.gov/cuf23.tar.gz
tar xzf cuf23.tar.gz

Step 3. Prepare your environment

We have provided a script to automate the environment setup needed to ensure all the necessary tools are in your shell's $PATH. This will also configure the Slurm resource manager on Frontier and Perlmutter to use the node reservations specific to this training event.

cd cuf23
source ./SOURCE_ME.sh

Note to Perlmutter users:
There are distinct compute node reservations for the two days of this event. Therefore, it is important that you follow this step each day, even if you remain logged in continuously.

Note to csh/tcsh users:
There is also a SOURCE_ME.csh available for your use. However, we strongly recommend use of bash for this training event.


Resources

Chapel Resources

UPC++ Resources

  • UPC++ training page for several training-related resources including links to documentation and to videos of prior tutorials.
  • UPC++ home page for UPC++ downloads, publications, etc.

Fortran resources


This tutorial is co-sponsored by the Oak Ridge Leadership Computing Facility (OLCF), the National Energy Research Scientific Computing Center (NERSC) and the Exascale Computing Project (ECP).

Updated