Introduction to HPC

High performance computing (HPC) refers to the use of powerful, interconnected computers to solve large, complex problems that are impractical for a single machine. Rather than relying on one system, HPC environments distribute computational tasks across many processors working in parallel.
This parallelism allows for problems to be broken down into smaller pieces that can be solved simultaneously, significantly reducing the time required to arrive at a solution.

UCHC HPC Data Center

HPC System Architecture

A typical HPC system is organized into specialized components that separate user access, data movement, storage, and computation.

UCHC HPC Architecture

Login Nodes and Access

Users generally begin by connecting to a login node, which serves as the entry point to the system. Login nodes are designed for lightweight tasks such as editing code, compiling programs, and submitting jobs, rather than running heavy computations. On the UCHC HPC system, a load balancer sits in front of multiple login nodes to distribute incoming connections evenly, ensuring responsiveness and preventing any single node from becoming overloaded.

Login nodes are the gateway to the HPC system, providing users with a command-line interface to interact with the cluster. They are not intended for running computationally intensive tasks, as this can degrade performance for all users. Instead, users should use login nodes to prepare their work, such as editing scripts, compiling code, and submitting jobs to the scheduler. Access to the login nodes is typically secured through

Data and Storage

Data is stored on dedicated storage nodes that are separate from compute nodes. The storage nodes are connected to compute nodes with high-speed interconnects, allowing for fast data transfer between storage and computation. This separation ensures that data-intensive operations do not interfere with the performance of compute nodes, which are optimized for processing rather than storage.

Movement onto and off of the HPC system is handled through transfer nodes, which are optimized for high-throughput input and output operations. These nodes provide a controlled pathway for moving large datasets in and out of the cluster without interfering with compute performance. Behind the scenes, storage nodes provide access to shared file systems, allowing all parts of the cluster to read and write data efficiently. These storage systems are typically distributed and parallelized, enabling high bandwidth and redundancy for reliability.

Compute Nodes and Job Scheduling

Computational work takes place on compute nodes, which are the primary engines of the HPC system. These nodes are managed by Slurm, a job scheduling software tool that allocates resources based on user requests and system availability. Users submit jobs specifying the number of CPUs, memory, GPUs, runtime required, and potentially other specifications, and the scheduler places those jobs onto appropriate compute nodes.

HPC Job Scheduler