Fundamental HPC Skills (Alpha)

Self-learning course

Some registration link

General Information

The DiRAC Essentials Level Training is a basic introduction to the principles of HPC and the tools needed to work on an HPC system. Once you have completed the course you will be able to do more science of higher impact (and we hope you will have more fun as well!). And if we have a well-trained cohort we can invest in much more powerful equipment that is much closer to the bleeding edge and so allow you to generate the new high impact results that will let you and your group to be seen as leaders in your field. It will also make you much more employable. Real programming and IT skills are making a big comeback both in Academia and Industry. We need to equip you with these skills to improve your career progression. In short, we are trying to create a virtuous circle that will benefit both you, your science and your group’s scientific reputation.

Course Aims: Introduce the student to Unix environment and its computing tools, including file management systems and editors.

Learning Outcomes: The learner will be able to:

Requirements: Participants must have access to a computer with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) that they have administrative privileges on, and have successfully completed the DiRAC account registration process with an SSH key able to access DiRAC resources. They should have a few specific software packages installed (listed below).

Accessibility

We are dedicated to providing a positive and accessible learning environment for all. Please notify the instructors in advance of the workshop if you require any accommodations or if there is anything we can do to make this workshop more accessible to you.

Contact: Please email or richard.regan@durham.ac.uk for more information.


Course Syllabus

Bash Shell: Using the Command Line

  • The benefits to using HPC resources like DiRAC and the means by which you access them.
  • How to connect to DiRAC resources using properly managed security credentials.
  • Navigating and inspecting files on DiRAC using the Bash shell.
  • Creating and managing files using the Bash shell, and how to transfer files to/from DiRAC resources.
  • How to use Bash shell commands efficiently over many files and to capture program output.
  • How to write and run a Bash script that executes commands over many input files.
  • Combining Bash scripts with other commands using pipes.

Testing, Documenting, and Reviewing Code

  • Why software testing is important, how to plan for it, and what types of testing can help.
  • How code editors, Integrated Development Environments and debuggers can help development.
  • Reviewing code for improvement and final acceptance.
  • Why and how to document your code efficiently, and the types of documentation to consider.

Version Control with Git

  • Benefits to using version control to manage code and how they work.
  • How to configure Git and get help using the commands.
  • Using a Git source code repository, reviewing changes to files and committing them back to a repository.
  • Exploring repository change history and how to roll back to a previous version of a repository's contents.

Principles of Codes Scaling

  • The importance of code scalability on HPC systems and how we can characterise a code's scaling profile.
  • Introduce and apply Amdahl's Law to understand the scalability of pre-existing code.

Principles of Software Engineering

  • The software development lifecycle, and why it's important to approach writing code as a process.
  • A brief introduction to the Python programming language, as a background to understand the code examples in this lesson.
  • An introduction to object-oriented and functional programming, and how and when to use them.
  • How to write code that is readable and understandable to yourselves and others, now and in the future.
  • Some general principles of software maintainability and the benefits that writing maintainable code can give you.

Setup

To participate in this online self-learning you will need access to software as described below. In addition, you will need an up-to-date web browser.

We maintain a list of common issues that occur during installation as a reference for instructors that may be useful on the Configuration Problems and Solutions wiki page.

The instructions for all the software can be found on the setup page.