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 09:00 1. Introduction to Supercomputing What is High-Performance Computing?
What is an HPC cluster or Supercomputer?
How does my computer compare with an HPC cluster?
Which are the main concepts in High-Performance Computing?
10:30 2. Command Line Interface How do I use the Linux terminal?
12:00 3. Adjurn Break
14:00 4. Python Scripting for HPC Why learn Python programming language?
How can I use Python to write small scripts?
15:00 5. Python Scripting for HPC Why learn Python programming language?
How can I use Python to write small scripts?
16:00 6. Adjurn
16:00 Finish
Day 2 09:00 7. Terminal-based Text Editors How do I edit files with the terminal?
10:30 8. Software on HPC Clusters What are the options to enable software packages on an HPC cluster?
What are the differences between environment modules, conda, and apptainer?
What are environment modules and how to use them?
How do I use and create conda environments?
How do I open a shell and execute commands on an Apptainer/Singularity container?
12:00 9. Adjurn Break
14:00 10. Python Scripting for HPC How to use numpy to manipulate multidimensional arrays in Python?
How I split and select portions of a numpy array?
15:00 11. Python Scripting for HPC How to use numpy to manipulate multidimensional arrays in Python?
How I split and select portions of a numpy array?
17:00 12. Final remarks
17:00 Finish
Day 3 09:00 13. Workload Manager: Slurm What is a resource manager, a scheduler, and a workload manager?
How do we submit a job on an HPC cluster?
10:30 14. Terminal Multiplexing: tmux What is a Terminal Multiplexer?
How can I use tmux?
12:00 15. Adjurn Break
14:00 16. Computational Partial Differential Equations What is are differential equations and why are computers used to solve them?
How can I use the HPC cluster to solve PDEs for several scientific use cases?
16:00 17. Adjurn
16:00 Finish
Day 4 09:00 18. Introduction to Machine Learning What is Machine Learning?
How I can use tmux?
10:30 19. Introduction to Deep Learning What is Machine Learning?
How I can use tmux?
12:00 20. Final remarks Break
14:00 21. Computational Partial Differential Equations Day 2: General Relativity and GRMHD
16:00 22. Final remarks
16:00 Finish

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