Clone wiki

upcxx / events / SC23

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

The Pagoda project was pleased to present a half-day tutorial at the SC23 conference in November.
This tutorial introduces HPC distributed computing using three alternative parallel programming models: Chapel, UPC++, and Coarray Fortran. The goal is to demonstrate basic concepts of distributed programming, highlight the benefits of each model and provide experience in running examples with each.

When: Sun Nov 12 2023 | 8:30am - 12pm MST
Where: At SC23 in Denver, CO, Room 407


  • 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


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. The tutorial is targeted for users with little-to-no parallel programming experience, but everyone is welcome. A partial differential equation example will be demonstrated in all three programming models. That example and others will be provided to attendees in a virtual environment. Attendees will be shown how to compile and run these programming examples, and the virtual environment will remain available to attendees throughout the conference, along with Slack-based interactive tech support. Come join us to learn about some productive and performant parallel programming models!

Agenda and Slides

Time (MST) Session slides
8:30 - 8:40 Tutorial Introduction and Overview
8:40 - 9:40 Getting Started Using Chapel for Parallel Programming
9:40 - 10:00 Coarray Fortran Tutorial: Parallel Programming in Fortran 2018 (Part 1)
10:00 - 10:30 Coffee Break
10:30 - 11:05 Coarray Fortran Tutorial: Parallel Programming in Fortran 2018 (Part 2)
11:05 - noon UPC++: An Asynchronous RMA/RPC Library for Distributed C++ Applications

Tutorial Resources

  • START HERE Download tutorial code examples, using ONE of the following options:
    • sc23.tar.gz (gzip-compressed tar archive)
      • curl -LO && tar xzf sc23.tar.gz
    • (Zip archive)
    • Clone using command-line git:
      • git clone
    • Browsable online repository
  • NEXT STEP Ensure you have a working install of Docker or another Docker-compatible client
  • FINAL STEP Docker containers for each programming model:
    • See usage instructions below for each model!
  • Slack workspace for discussion and support
    • Feel free to join and ask questions all week!
  • Post-event survey

Chapel Resources

  • Chapel Docker container usage instructions:
    cd chapel/  # cd into chapel dir after unpacking the tutorial materials (see above)
    docker pull  # might take awhile! 
    docker run --rm -it -v "$PWD":/myapp -w /myapp /bin/bash
    make run-hello   # inside container
  • Chapel home page with documentation, downloads, presentations, papers, etc.

UPC++ Resources

  • UPC++ Docker container usage instructions:
    cd upcxx/  # cd into upcxxdir after unpacking the tutorial materials (see above)
    docker pull  # might take awhile! 
    docker run --rm -it -v "$PWD":/myapp -w /myapp -u root /bin/bash
    make run-hello-world   # inside container
  • 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

Back to UPC++ Home