Introduction to High-Performance Computing

Why use High Performance Computing?


Teaching: 20 min
Exercises: 10 min
  • Why would I be interested in High Performance Computing (HPC)?

  • What can I expect to learn from this course?

  • Be able to describe what HPC systems are typically used for

  • Identify how an HPC system could potentially benefit you.

Why Use These Computers?

What do you need?

Talk to your neighbor about your research. How does computing help you do your research? How could more computing help you do more or better research?

Summarise your discussion in 2-3 sentances in the Etherpad.

This discussion should take about 5 minutes

Frequently, research problems that use computing can outgrow the desktop or laptop computer where they started:

In all these cases, what is needed is access to more computers than can be used at the same time. Luckily, large scale computing systems – shared computing resources with lots of computers – are available at many universities, labs, or through national networks. These resources usually have more processors, that operate at higher speeds, more memory, more storage, and faster connections with other computer systems. They are often interchangably called “clusters”, “supercomputers” or resources for “high performance computing” or HPC. In this lesson, we will usually use the terminology HPC but it is useful to define these terms a little bit more in case you come across them in future.

All of the topics covered in this lesson will be useful no matter which type of resource you are planning to use and in which way.

HPC is parallel computing

Although HPC systems often have slightly more powerful processors, more memory and more storage the real additional power comes from using the resources in parallel rather than in serial.

Using an HPC system often has the following advantages for researchers:

Thinking ahead

How do you think using a large-scale computing system will be different from using your laptop? Talk to your neighbor about some differences you may already know about, and some differences/difficulties you imagine you may run into.

Summarise your discussion in 2-3 sentances in the Etherpad.

This discussion should take about 5 minutes

On Command Line

Using HPC systems often involves the use of a shell through a command line interface (CLI) and either specialized software or programming techniques. The shell is a program with the special role of having the job of running other programs rather than doing calculations or similar tasks itself. What the user types goes into the shell, which then figures out what commands to run and orders the computer to execute them. (Note that the shell is called “the shell” because it encloses the operating system in order to hide some of its complexity and make it simpler to interact with.) The most popular Unix shell is Bash, the Bourne Again SHell (so-called because it’s derived from a shell written by Stephen Bourne). Bash is the default shell on most modern implementations of Unix and in most packages that provide Unix-like tools for Windows.

Interacting with the shell is done via a command line interface (CLI) on most HPC systems. In the earliest days of computers, the only way to interact with early computers was to rewire them. From the 1950s to the 1980s most people used line printers. These devices only allowed input and output of the letters, numbers, and punctuation found on a standard keyboard, so programming languages and software interfaces had to be designed around that constraint and text-based interfaces were the way to do this. Typing-based interfaces are often called a command-line interface, or CLI, to distinguish it from a graphical user interface, or GUI, which most people now use. The heart of a CLI is a read-evaluate-print loop, or REPL: when the user types a command and then presses the Enter (or Return) key, the computer reads it, executes it, and prints its output. The user then types another command, and so on until the user logs off.

Learning to use Bash or any other shell sometimes feels more like programming than like using a mouse. Commands are terse (often only a couple of characters long), their names are frequently cryptic, and their output is lines of text rather than something visual like a graph. However, using a command line interface can be extremely powerful, and learning how to use one will allow you to reap the benefits described above.

You interact with HPC systems through a command line interface

Most interaction with HPC systems is through a command line interface, usually the bash shell.

The rest of this lesson

The rest of this lesson will cover the following topics

The skills we learn here have other uses beyond just HPC - Bash and remote connection skills are used everywhere, be it for web development, running software, or operating servers. It’s become so essential that Microsoft now ships it as part of Windows! Knowing how to use Bash and HPC systems will allow you to operate virtually any modern device. With all of this in mind, let’s get started!

Key Points