HPC Curriculum

HPC Boot Camp

Prerequisites: You should be comfortable with using Linux command line for program development and compiling. You should have basic knowledge of development and debugging of sequential programs in C/C++ and/or Fortran.

Monday, June 10: Introduction to thread-based parallelism with hands on lab (one day)
Summary:
Nodes in modern computer systems typically contain one or more multicore processors. Today, nodes based on self-hosted manycore processors such as Intel’s Knight’s Landing Xeon Phi or multicore processors equipped with GPU accelerators are increasingly common. Harnessing the power of such systems requires using a threaded programming model. This session will introduce threaded programming models for shared-memory parallel computing with a focus on OpenMP. Attendees will gain hand-on experience writing and debugging threaded programs.

Instructor:
John Mellor-Crummey, Professor, Computer Science, Rice University

______________________________________________________________

Tuesday, June 11:  Introduction to MPI with hands on lab (one day)
Summary: Message passing is used to create scalable parallel programs for clusters and supercomputers. This session will introduce MPI – the Message Passing Interface, covering blocking and non-blocking point-to-point communication, as well as collective communication. Getting the most out of MPI requires understanding the impact of communication patterns, load imbalance, and serialization on parallel performance. We will discuss monitoring and analysis of MPI performance using open source tools. The hands-on lab will include development and analysis of an MPI code to solve a scientific problem.

Instructor: John Mellor-Crummey, Professor, Computer Science, Rice University

______________________________________________________________

Wednesday, June 12: Performance analysis tools with hands on lab (one day)
Summary:  Obtaining good performance with applications on modern computer systems is difficult. Learn how to use performance tools to collect information to pinpoint scalability bottlenecks within and across nodes, and how to use hardware performance counters to pinpoint and diagnose node performance bottlenecks. A hands-on session will focus on applying performance tools in practice to guide analysis and tuning of parallel code performance.

Instructor: John Mellor-Crummey, Professor, Computer Science, Rice University

______________________________________________________________

Thursday, June 13: GPU Accelerated computing with hands on lab (one day)
Summary:
Graphics Processing Units (GPUs) are powerful engines for data-intensive computing. Learn how to use GPUs to perform large scale numerical computations. We will use the CUDA GPU programming model to gain hands-on experience with accelerator programming, learn fundamental concepts in GPU programming, memory management, and optimization. We will focus on gaining hands on experience writing and optimizing GPU code, using an iterative and profile-driven approach to optimization.

Instructor: Max Grossman,  Research Scientist – Rice University, Co-Founder – 7pod Technologies, and Author of “Professional CUDA C Programming”

______________________________________________________________

Friday, June 14: Productive GPU Programming (1/2 day)
Summary:
Using CUDA to write GPU programs can be painful, and there exist many more productive techniques for programming GPUs using higher level languages and libraries. In this half day, we will take a short dive into a variety of more productive approaches to GPU programming, including Numba, Tensorflow, and domain-specific CUDA libraries.

Instructor: Max Grossman,  Research Scientist – Rice University, Co-Founder – 7pod Technologies, and Author of “Professional CUDA C Programming”

Comments are closed.