Training Resources
There are 11 self-paced online tutorials that can help you to enhance your high-performance computing skills and knowledge before you arrive at the Scaling to Petascale summer school and provide you with additional learning opportunities after the summer school. They are freely available through the CI-Tutor system.
- Introduction to MPI: An introduction to the Message Passing Interface, or MPI. MPI is a standard library of subroutines (Fortran) or function calls (C) that can be used to implement a message passing program.
- Intermediate MPI: This tutorial covers intermediate-level topics in MPI. Since the meaning of "intermediate" varies from person to person, we initially found it difficult to determine which topics to include. So what we did was select topics that cover questions we had been asked by actual MPI programmers!
- Introduction to OpenMP: This tutorial provides an introduction to OpenMP, a standardized API for parallelizing Fortran, C, and C++ programs on shared-memory architectures. Upon finishing this tutorial you should be able to apply OpenMP to your codes in a minimum amount of time. Examples are presented in both Fortran and C.
- Introduction to Multi-core Performance: This tutorial will help current and prospective users of multi-core systems understand the technology and how to leverage it to accelerate their science and engineering research.
- Parallel Computing Explained: This course covers a variety of introductory topics on parallel computing.
- Debugging Serial and Parallel Codes: This course introduces you to techniques for debugging serial and parallel codes using debugger software. After completing the course you will be able to recognize a variety of bugs you might make and how to debug them using debugger software.
- Multilevel Parallel Programming: This tutorial describes how to develop multilevel parallel programs (MLP) using MPI and OpenMP. A problem set is included so you can write your own MLP programs and compare your code with the solution given.
- Parallel Numerical Libraries: This course is an introduction to using parallel numerical library routines. Each lesson covers a specific mathematical area and describes which routines in which libraries you should use.
- Performance Tuning for Clusters: This course introduces techniques for optimizing code performance on a cluster. You will learn how to measure the performance of your program, what bottlenecks to look for, and techniques to eliminate or reduce these bottlenecks.
- Tuning Applications for High-Performance Networks: This tutorial focuses on applications that use the TCP and UDP protocols for development and covers the basics of getting them to work well on high-performance networks. Also covered is a small set of system tools available to test network domain parameters.
- Introduction to Visualization: This tutorial covers the evolution of scientific visualization, its uses in computational science, and the creative process involved. Also included are descriptions of various software tools currently available and examples of work illustrating various visualization techniques.
You can search for other HPC training courses and workshops offered by TeraGrid and other HPC Centers via the HPC University portal.
The Supercomputing in Plain English seminar series of recorded weekly discussions can help introduce people to high-performance computing and the terminology used by the community. These sessions were offered by Henry Neeman at the University of Oklahoma's Supercomputing Center for Education & Research (OSCER). See https://oscer.ou.edu/education.php to view the recorded sessions.