Fall Break Training: Introduction to Parallel Programming for High-Performance Computing (3-day Virtual Workshop)

by PICSciE/Research Computing

Training/Workshop

Mon, Oct 18, 2021 10:30 AM –

Wed, Oct 20, 2021 5:00 PM EDT (GMT-4)

Add to Calendar
https://princetonuniversity.github.io/PUparallel_fall2021/agenda/

Private Location (sign in to display)

85
Registered

Registration

Details

The Princeton Institute for Computational Science & Engineering (PICSciE), in collaboration with OIT Research Computing, Program in Applied & Computational Mathematics, Institute for Research and Innovation in Software for High Energy Physics (IRIS-HEP), Princeton Plasma Physics Laboratory, and Intel, is organizing a three-day Introduction to Parallel Programming for High-Performance Computing virtual workshop during fall break from October 18-20.

This three-day workshop will provide an introduction to high-performance computing (HPC) on the Princeton University clusters. Participants will learn about aspects of computer architecture pertinent to programming for HPC, learn how to optimize their codes to take advantage of the vectorized math on modern processors, and learn parallel programming tools and paradigms for CPUs and GPUs.

This workshop is aimed at researchers with a fair amount of programming experience, to help them make the transition from running single serial codes on their laptops or workstations to running parallel jobs on a cluster. After a high-level overview of parallel programming models, of computer architecture, and of the interplay between the two, the workshop will have sessions on more specialized topics: OpenMP, MPI, and GPU programming. Each session builds on the previous ones and focuses on a different aspect of high-performance computing, and each with its own set of hands-on activities. All exercises will be conducted in compiled languages, primarily C and C++.

Open to all members of the Princeton community with an active Princeton NetID. Advance registration is required.

Note that registration is for the whole workshop. Attendees are therefore encouraged to attend all sessions. See full description of each training session.

Requirements: Like all PICSciE virtual events, this training requires participants to log into Zoom with their Princeton credentials. Zoom information will be provided after you register.

Participants who want to do the hands-on exercises for some workshops on their own laptops should ensure they have access to a modern C/C++ compiler that is compatible with OpenMP. Many sessions also require users to have an account on Princeton’s Adroit cluster and to be able to connect to it via SSH (usually, this requires both connecting to a Princeton VPN and having Duo authentication enabled). Details on the above, along with overarching requirements for all PICSciE virtual workshops, are listed on the advance setup guide for PICSciE virtual workshops.

Prerequisites: All participants MUST have a fair amount of experience with (i) the Linux command line, and (ii) programming in C or C++ (or Fortran, but enough that they can quickly pick up C syntax). Beyond that, no prior experience with parallel programming or with other aspects of high-performance computing is assumed.


Other training opportunities can be found at https://researchcomputing.princeton.edu/workshops

Questions? Contact rcinfo@princeton.edu


Important Reminders:

Note: From off-campus, this requires both connecting to a Princeton VPN and having Duo authentication enabled. See the advance setup guide for PICSciE virtual workshops for more details.

 

  • Day 2 is OpenMP with Tim Mattson (Intel). Attached is a lesson on learning C (from Tim).
  • All participants MUST have some experience with (i) the Linux command line, and (ii) programming in C or C++ (or Fortran, but enough that you can quickly pick up C syntax). No prior experience with parallel programming or with other aspects of high-performance computing is assumed.

 


Schedule of Events

 

Day 1: Monday, October 18: Background & Fundamentals

 

 

10:15 - 10:30

Welcome and Setup
 

10:30 - 12:00

What Every Computational Researcher Should Know
About Computer Architecture

Instructor: Stephane Ethier

12:00 - 1:00

Lunch Break

1:00 - 3:00

Performance and Vectorization (Hands-on)
Instructor: Bei Wang

3:00 - 3:15

Break

3:15 - 4:15

A Primer on Parallel Programming
Instructor: Garrett Wright


Day 2: Tuesday, Oct. 19: OpenMP (All Hands-On)

 

 

9:00 - 10:45

Introduction to OpenMP
Instructor: Tim Mattson, Intel

10:45 - 12:00

Early Lunch Break

12:00 - 1:30

Working with Threads
Instructor: Tim Mattson, Intel

1:30 - 1:45

Break

1:45 - 3:15

The OpenMP Data Environment
Instructor: Tim Mattson, Intel

3:15 - 3:30

Break

3:30 - 5:00

Tasks & Advanced Topics
Instructor: Tim Mattson, Intel


Day 3: Wednesday, Oct. 20: MPI & GPUs

 

 

10:00 - 12:30

Introduction to MPI (Hands-on)
Instructor: Ian Cosden

12:30 - 1:00

Lunch Break

1:00 - 1:30

What is a GPU?
Instructor: Stephane Ethier

1:30 - 2:15

Introduction to CuPy and Numba
Instructor: Henry Schreiner

2:15 - 2:45

GPU Libraries (Hands-on)
Instructor: Jon Halverson

2:45 - 3:00

Break

3:00 - 4:30

Introduction to OpenACC (Hands-on)
Instructor: Stephane Ethier

4:30 - 5:00

A Primer on CUDA
Instructor: Stephane Ethier

Speakers

Jonathan Halverson's profile photo

Jonathan Halverson

Research Software and Computing Training Lead

Princeton University

Jonathan Halverson is the Research Software and Computing Training Lead with PICSciE and Research Computing. He has an expertise in data science and he is a founding organizer of the TensorFlow & PyTorch User Group at Princeton. Prior to his current position, Jonathan performed polymer physics research at the Max Planck Institute for Polymer Research and nanoscience research at Brookhaven National Laboratory. He holds a Ph.D. in Chemical Engineering from CUNY.

Bei Wang's profile photo

Bei Wang

Princeton University

Bei Wang is a Senior Research Software Engineer in the Research Computing Department at Princeton University. She is currently working on projects to speed up the process of particle tracking on modern CPUs, GPUs and FPGAs in the IRIS-HEP program. She is also a co-PI of the Intel Parallel Computing Center (IPCC) of Princeton University. She received a Ph.D. in applied science with designed emphasis on computational science and engineering from the University of California at Davis.

Henry Schreiner's profile photo

Henry Schreiner

Princeton University

Henry Schreiner is a Computational Physicist / Research Software Engineer in High Energy Physics. He received his Ph.D. in experimental high-energy physics from the University of Texas at Austin. Henry is working on a three year project to develop simpler compiled packages for Python using Scikit-build. He is also an admin of Scikit-HEP, and also the lead web developer for IRIS-HEP and Scikit-HEP. Henry is also a maintainer/core developer for pypa/build, scikit-build, cibuildwheel, pybind11, and Plumbum for Python, and primary author of CLI11 for C++. He is also the author of a variety of CMake, GPU, and Python training courses and classes. He is also currently co-teaching APC 524.

Stephane Ethier's profile photo

Stephane Ethier

Princeton Plasma Physics Laboratory (PPPL)

Dr. Stephane Ethier is a Computational Physicist in the Computational Plasma Physics Group at the Princeton Plasma Physics Laboratory (PPPL). He received a Ph.D. from the Department of Energy and Materials of the Institut National de la Recherche Scientifique (INRS) in Montreal, Canada.

Tim Mattson's profile photo

Tim Mattson

Intel Corporation

Tim Mattson is a parallel programmer obsessed with every variety of science (Ph.D. Chemistry, UCSC, 1985). He is a senior principal engineer in Intel’s parallel computing lab.



Tim has been with Intel since 1993 and has worked with brilliant people on great projects including: (1) the first TFLOP computer (ASCI Red), (2) MPI, OpenMP and OpenCL, (3) two different research processors (Intel’s TFLOP chip and the 48 core SCC), (4) Data management systems (Polystore systems and Array-based storage engines), and (5) the GraphBLAS API for expressing graph algorithms as sparse linear algebra. Tim is passionate with teaching. He’s been teaching OpenMP longer than anyone on the planet with OpenMP tutorials at every SC’XY conference but one since 1998. He has published five books on different aspects of parallel computing, the latest (Published November 2019) titled “The OpenMP Common Core: making OpenMP Simple Again”.


Garrett Wright's profile photo

Garrett Wright

Research Computing and PACM

Garrett studied experimental mathematics at Temple University, where he focused on novel GPU computations, particularly eigensystems of certain random graph families. Garrett then worked in industry developing peta-scale distributed systems for production use in telecom and quantitative finance. Over the years he has worked in HPC roles supporting the Princeton scientific community at GFDL and PPPL. Currently Garrett is working with the Program in Applied and Computational Mathematics developing the ASPIRE-Python package for CryoEM image reconstruction.

Ian Cosden's profile photo

Ian Cosden

Ian Cosden is the Director of Research Software Engineering for Computational & Data Science within the Research Computing Department at Princeton University. He leads a team of Research Software Engineers (RSEs) who collectively complement traditional academic research groups by offering embedded, long-term software development expertise. Ian is the PI for “INovative Training Enabled by a Research Software Engineering Community of Trainers (INTERSECT),” an NSF-supported project to develop and deliver research software engineering training. Additionally, he was one of the founding members and is the current chair of the US Research Software Engineer (US-RSE) Association. Ian received his B.S. from the University of Delaware, M.S. from Syracuse University, and Ph.D. from the University of Pennsylvania.

Hosted By

PICSciE/Research Computing | View More Events

Contact the organizers