Fall Break Training: Introduction to Parallel Programming for High-Performance Computing (3-day Virtual Workshop)
Mon, Oct 18, 2021 10:30 AM –
Wed, Oct 20, 2021 5:00 PM EDT (GMT-4)
Add to CalendarPrivate Location (sign in to display)
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:
- Attendees are encouraged to attend all sessions. See full description of each training session.
- All participants should have an account on the Adroit cluster before the workshop. Use this form if you don’t have an account and make sure you can connect via SSH before the workshop. Email cses@princeton.edu if you encounter issues with Adroit.
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 |
|
10:30 - 12:00 |
What Every Computational Researcher Should Know |
12:00 - 1:00 |
Lunch Break |
1:00 - 3:00 |
Performance and Vectorization (Hands-on) |
3:00 - 3:15 |
Break |
3:15 - 4:15 |
A Primer on Parallel Programming |
Day 2: Tuesday, Oct. 19: OpenMP (All Hands-On)
|
|
9:00 - 10:45 |
Introduction to OpenMP |
10:45 - 12:00 |
Early Lunch Break |
12:00 - 1:30 |
Working with Threads |
1:30 - 1:45 |
Break |
1:45 - 3:15 |
The OpenMP Data Environment |
3:15 - 3:30 |
Break |
3:30 - 5:00 |
Tasks & Advanced Topics |
Day 3: Wednesday, Oct. 20: MPI & GPUs
|
|
10:00 - 12:30 |
Introduction to MPI (Hands-on) |
12:30 - 1:00 |
Lunch Break |
1:00 - 1:30 |
What is a GPU? |
1:30 - 2:15 |
Introduction to CuPy and Numba |
2:15 - 2:45 |
GPU Libraries (Hands-on) |
2:45 - 3:00 |
Break |
3:00 - 4:30 |
Introduction to OpenACC (Hands-on) |
4:30 - 5:00 |
A Primer on CUDA |
Speakers
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
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
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
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
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
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
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.