Links for Learning HPC
See the following links for learning HPC concepts and skills, from beginner to advanced.
Linux
If you have an account on Hazel, log in and type the commands into the terminal. If not, set up your environment using Learn Linux without Linux.
- Just the bare minimum
Go to Essential Linux, try the 8 basic commands, and create a text file using nano.
- Some background first please!
Go through the minimal set of the LinkedIn Learning video tutorial. Most of the video content is explaining basic concepts, such as why we would want a command line instead of a GUI, how directories and files are structured, and how commands are formed. It explains Linux in terms of what you already know from using Windows or a Mac. After that, it goes over clearly and in depth - with great examples - all of the 'bare minimum' commands.
- Background, essentials, and a bit more
Go through the entire LinkedIn Learning video course. If some sections seem boring to you, still go through them but at higher playback speed so you don't miss any background from skipped sections.
- Less background, more commands, faster pace
Going through the text based Full Linux Tutorial is the most efficient way to learn the most commands as quickly as possible.
- Going to be around for a while?
Go through the Software Carpentry Tutorial. They start from zero, but go into further depth and introduce shell scripting. After that, do the Full Linux Tutorial. You will skim through the first few sections, pick up some new concepts in the next few, and learn some extras in the last couple sections.
Also, take advantage of the NC State subscription to LinkedIn Learning. There are several advanced courses on Linux.
Linux/Unix commands and scripting
Text based tutorialsCommand line text editors
High Performance Computing
For Hazel specific instruction, see the web-based Quick Start Tutorial or the HPC video tutorials.Basic concepts
General hardware
This webinar discusses how to find CPU specs, memory quantity, cache configuration, file systems, OS version, GPU properties, and instruction sets (ISA). It also discusses why one should understand them, and it includes a short discussion of profiling, monitoring, and optimizing. The target audience is developers - users who write parallel programs but are not necessarily familiar with all of the hardware and performance terms. It is also helpful for users who are familiar with general hardware information but do not know how to find that information on Hazel.
Parallel processing
This video is the fourth installation of the Basic HPC Workshop. It covers concepts and definitions of parallel computing, how to find hardware specs of nodes on the cluster, and it shows examples of how to run both shared and distributed memory jobs.
This introductory video explains why parallel programming is necessary, showcases typical exascale computing problems, and gives a demonstration of the basic theory of parallelizing a calculation. It also covers key terminology including the definition of cores, processors, nodes, and PEs (processing elements), the difference between CPU and GPU in terms of proper use cases, and discusses performance and the limitations of parallelization. The video explains which parallel programming platforms are used for each type of parallelism (MPI, OpenMP, OpenACC, CUDA, etc.).
This is the material used for the first 2.5 hours of the HPC Training Workshops given by LLNL for their HPC users. Skimming over it will give a great overview of HPC concepts, and reading it carefully will give a comprehensive overview while defining most or all of the HPC terms and definitions a user is likely to ever come across. For HPC users wanting to begin learning and developing parallel applications, go through this tutorial. For an HPC user who only needs to understand parallel architecture enough to run code (i.e. submit HPC jobs) efficiently but does not plan to develop code, check out the diagrams in the Parallel Memory Architectures and Parallel Programming Models sections.