This lesson is still being designed and assembled (Pre-Alpha version)

Introduction to High Performance Computing for astronomical software development

Welcome to the Introduction to High Performance Computing for astronomical software development Workshop, aka HPC InterPython. This workshop is part of the series of training events organised by the TVS SC Software Task Force, and its aim is to provide intermediate-level software training to the LSST community, regardless of the country, affiliation, science collaboration and career level. All the materials are free to copy, distribute or modify for your own workshops.

This workshop’s purpose is to give an introduction to High-Performance Computing techniques and practices and to give the participants some practical experience with executing code on a supercomputer. The prerequisites include basic knowledge of the command line interface and Python programming language.

Learning Objectives for the Workshop

  • Introduce the participants to the ideas behind HPC
  • Explain the difference between software development for PC and HPC
  • Teach the participants the basics of resource and job management using Slurm
  • Familiarize the participants with the supercomputer Bura

Setup

Please make sure that you have all the necessary software and accounts setup ahead of the workshop as described in the Setup section. Also check the list of common issues, fixes & tips if you experience any problems running any of the tools you installed - your issue may be solved there.

Schedule

Setup Download and setup software required for the course
00:00 Setting the Scene What are we teaching in this course?
To whom will this course be useful?
00:10 Section 1: HPC basics What are the topics covered in Section 1?
00:15 HPC Intro What is sequential and parallel code execution?
How do computer and network architecture define computational performance for personal and supercomputers?
What types of parallelization exist?
How data storage works in HPC?
00:35 LSST HPC facilities and opportunities Which HPC facilities are available for the members of the LSST community?
00:45 Bura access How to access the Bura High Performance Computing Cluster
01:10 Command line basics How can I change directories from the command line?
How can I create directories and files from the command line?
How can I view my identity?
How can I create and move files?
How can I who is doing what on a computer or HPC?
How can I print to the shell?
02:10 Bura Setup How do I find and use software on a shared supercomputer?
Why can’t I just use sudo apt-get install like on my own machine?
How do I manage different versions of the same software?
How can I install Python packages for my project without affecting other users?
02:55 Introduction to Slurm workload manager What is Slurm?
How do I run computing tasks using Slurm?
04:00 Section 2: Running code on Bura What are the topics covered in this section?
04:05 Intro code examples What are our options to speed up our code?
04:20 Parallelising our code for CPU What is the difference between serial and parallel code?
How do CPU and GPU programs differ?
What tools and programming models are used for HPC development?
05:10 Implementing code examples for running on GPU How do CPU and GPU programs differ?
What tools and programming models are used for HPC development?
06:00 Resource requirements What is the difference between requesting for CPU and GPU resources using Slurm?
How can I optimize my slurm script to avail the best resources for my specific task?
06:40 Resource optimization and monitoring for Serial Jobs How do we optimize and monitor resource usage for sequential jobs on an HPC system?
What tools can we use to profile CPU and memory usage for single-core jobs?
What are the best practices and common pitfalls when submitting sequential scripts?
07:20 Resource optimization and monitoring for Parallel Jobs How do we optimize resource requests for parallel jobs on an HPC system?
What are common pitfalls when requesting CPUs, memory, or nodes?
How can we monitor parallel job performance to adjust allocations?
08:00 Wrap-up Looking back at what was covered and how different pieces fit together
Where are some advanced topics and further reading available?
08:15 Finish

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