This day-long workshop will teach participants the basics of GPU programming through extensive hands-on collaboration based on real-life codes using the OpenACC programming model.
After a general overview of GPU programming, attendees will use different programming models to accelerate the same code: an example application that simulates heat distribution across a 2-dimensional metal plate. Participants will then take a deeper dive into the OpenACC programming model and apply incremental parallelization strategies in order to accelerate this same mini-application.
Finally, participants will be introduced to NVIDIA’s Nsight profiling tools and see how profiling can help uncover opportunities to further accelerate scientific codes.
Participants will leave with a thorough overview of available libraries, programming models, and platforms for writing portable parallel programs that can run on multicore CPUs and accelerators like GPUs. They will also gain firsthand experience in profiling and accelerating an HPC code using OpenACC.
No previous experience with OpenACC directives or GPU programming in general is required. However, programming experience with C, C++, or Fortran is expected. Prior exposure to parallel programming methodologies, though not strictly required, is also helpful.
Participants only need a desktop or laptop computer capable of running the latest version of Chrome or Firefox. There are no other hardware requirements, as each participant will be provided with dedicated access to a fully configured, GPU-accelerated workstation in the cloud.
Some communication during the workshop may happen over Slack. Participants should either have a Slack client installed or their laptops or be prepared to use Slack within a browser.
Lecture, demonstration, and hands-on labs and exercises
Access to presentation materials is described in the Zoom recording.
A recording of the session is here (requires active Princeton NetID to view).