Introduction to High-Performance Computing

This is an introduction to High-Performance Computing (HPC) and Research Computing in general for users of our clusters. You will learn the basic command line interface, editors, job submission, and a few other topics that allow you to make efficient use of a High Performance Computing cluster.

This lesson pretends to go straight to the point. You will learn the most useful tools, commands, and techniques to start using the cluster for your research. As such, no completeness should be assumed. For each episode, there is a lot more to explore on the interest of more advanced users. Some references are left at the end of each section.

Prerequisites

This lesson assumes no previous knowledge of Linux and the command line interface (CLI). If you are only familiar with GUI applications on any OS (Windows, MacOS, or Linux) expect a bit of a rough start but please do not lose your motivation. Learning Linux and command lines is like exploring a new language, expect mistakes and frustrations, but also rewards as you move forward and start grasping the tools that will make your interaction with the cluster more efficient and your research more dynamic.

Schedule

Setup Connect to cluster and download files required for the lesson
Day 1 10:00 1. Introduction What is High-Performance Computing?
What is an HPC cluster or Supercomputer?
How my computer compares with an HPC cluster?
Which are the main concepts in High-Performance Computing
10:40 2. Open On-Demand How to access Thorny for interactive executions from the web browser?
11:20 3. Command Line Interface How do I use the Linux terminal?
12:00 4. Adjurn
12:00 Finish
Day 2 10:00 5. Terminal-based Text Editors How do I edit files with the terminal?
10:40 6. Environment Modules How to load modules to access software that I want to use for my research?
11:20 7. Scheduling jobs What is a scheduler and why are they used?
How do we submit a job on an HPC cluster?
12:00 8. Adjurn
12:00 Finish
Day 3 10:00 9. Terminal Multiplexing: tmux What is a Terminal Multiplexer?
How I can use tmux?
10:40 10. Environment management: Conda What are software containers and how to use them?
11:20 11. Software Containers: Singularity What are software containers and how to use them?
12:00 12. Adjurn
12:00 Finish
Day 4 10:00 13. Version Control: git How to keep track of changes in text files?
10:40 14. Compiling Codes How to compile code on the cluster?
11:20 15. Shell Scripting What is Shell Scripting?
Why Shell Scripting is important in HPC?
How to program jobs with more complex workflows?
12:00 16. Final remarks
12:00 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.