supersurf

Supercomputing with EESSI

Seven lessons, one site. Each lesson is a Carpentries Workbench lesson at https://supersurf.rgoswami.me/<slug>/. The workshop is three sessions of four hours. A lesson keeps every episode. The schedule below is what a session teaches, and the rows marked "cut first" are the ones to drop when the clock runs out.

Commands that differ by machine are in tabs: Snellius, the course cluster, and a generic Magic Castle cluster with EESSI. The course cluster is a SURF Research Cloud workspace, and its tab requests --partition=rome. See the setup page.

Part I: four-hour Introduction to HPC

Elapsed times include the break. Start with this route, rather than the complete episode estimates below. The instructor guide names slide pages, commands, answers and stopping points.

ElapsedMinutesBlock
00:00-00:1010Purpose and destination
00:10-00:3525Access and shell
00:35-00:5520Nodes, processes and cores
00:55-01:2530EESSI and modules
01:25-01:5530First batch job
01:55-02:1015Break
02:10-02:4030Resource requests and accounting
02:40-03:2040Python and OpenMP
03:20-03:4020Independent work and arrays
03:40-03:5010Keep the result
03:50-04:0010Exit check and recovery margin

Teacher workbook (PDF) | Matching slide pack

All three sessions

SessionHoursFocusLessons
Part I4Fundamentals and the EESSI stackSoftware from EESSI, Fundamentals of HPC
Part II4File systems, moving data, and many tasksFile systems, Moving data, Many tasks
Part III4Hybrid jobs and performanceHybrid MPI and OpenMP, Performance analysis

Complete lesson episode estimates

These estimates cover each entire lesson. Part I uses the selected route above.

Software from EESSI

EpisodeTeaching (min)Exercises (min)
A shared software stack1510
Finding and loading a module2020
The EESSI client container1515

Fundamentals of HPC

EpisodeTeaching (min)Exercises (min)
Why use a Cluster?155
Connecting Securely to an HPC Cluster350
Working on a remote HPC system2510
Scheduler Fundamentals4530
Environment Variables105
Accessing software via Modules3015
Transferring files with remote computers1515
Running a parallel job3060
Parallelising with Job Arrays155
Using resources effectively1020
Using shared resources responsibly155
Accounting on Snellius2010
Python and OpenMP on a node1025

File systems

EpisodeTeaching (min)Exercises (min)
Why I/O matters150
The file systems2010
Files and directories1025
Permissions and quota1020
Space for a job1525

Moving data

EpisodeTeaching (min)Exercises (min)
Why copying hurts100
Pack, then checksum1015
rsync1015
Several streams cut first1510
From outside the cluster105
Stage in, stage out1020

Many tasks

EpisodeTeaching (min)Exercises (min)
Embarrassingly parallel150
Slurm arrays1525
QCG-PilotJob2520
Averages with a dependency1025
Idle time1020
Other tools cut first2025

Hybrid MPI and OpenMP

EpisodeTeaching (min)Exercises (min)
Nodes, tasks, and threads2020
AXPY1525
Dot product1525
Matrix multiplication1030

Performance analysis

EpisodeTeaching (min)Exercises (min)
How to evaluate a run155
What limits a run2010
Strong and weak scaling1520
The roofline2520
Energy cut first1010
Slurm resources1015

Who the day is for

Three people this day is for. The exercises assume a terminal and a text editor. They do not assume a previous batch job.

Noor

Noor writes Python on a laptop and has just been told the data set is on Snellius. Noor can use a terminal and has not seen a module or a queue. Noor needs the fundamentals lesson and the EESSI lesson before any of the later material makes sense. The win for Noor is one sbatch that runs, and a clear rule about which directory holds the result.

Idris

Idris has logged in before and has a directory of scripts in /home. Jobs sit in the queue, or they die at the start because the module was loaded in a different order last time. Idris needs the scheduler episode, module purge before module load, and the file system table. The array is the part Idris came to see.

Sam

Sam already submits jobs and is now generating thousands of one-second tasks. The queue time is longer than the work. Sam can skim fundamentals, should still do the file system lesson because the outputs are many small files, and should spend the afternoon on QCG-PilotJob and the comparison with HyperQueue, Snakemake, and FireWorks. The performance lesson is there so Sam can say whether more cores helped, with a number.

Source

The course text is sara-nl/introduction-to-supercomputing and Rohit's fork HaoZeke/introduction-to-supercomputing. Deck branches used here: fix/slides-fundamentals-source, fix/slides-fs-source, fix/slides-qcg-source, fix/slides-performance-source, feat/workflow-alternatives, feat/data-movement-deck, and src/eessi-notes.

Fundamentals vendors carpentries-incubator/hpc-intro at 7081080674aceeb0a4bc57b9348da22d876af802. That lesson is CC-BY 4.0, Copyright (c) The Carpentries. Authors are in lessons/fundamentals/AUTHORS.

License

Lesson text is CC-BY 4.0. The hybrid MPI and OpenMP lesson is adapted from Introducción a la Supercomputación by José Luis Bosque, Borja Pérez, Ramón Beivide, and Carmen Martínez, Universidad de Cantabria, by the EuroCC NL team at SURF.