High Performance Computing
Overview of UMS ACG HPC systems:
The main High Performance Computing resource that the UMS Advanced Computing Group provides is a growing set of computers (nodes) and storage systems linked together with a high speed, low latency Infiniband network. The general term used for this type of system is a "Compute Cluster" made up of:
Head node: main cluster controller that provisions the nodes and runs the Resource Manager
Login nodes: the computers that researchers login to and generally interact with to manage jobs
Compute nodes: computers with high CPU core count and large amounts of memory for jobs to run on
GPU nodes: computers with both CPUs and GPGPUs for computation (not visualization)
Storage System: a cluster unto itself (Ceph) that provides scalable storage for all of the ACG resources
Programs can be run on individual cores on a single node or they can run on multiple nodes using hundreds of cores at the same time. The General Purpose GPU nodes have multiple GPUs in them and they can be used individually or together or on individual programs.
All of the compute nodes are managed by a central Resource Manager and Scheduler called SLURM. SLURM keeps track of all of the resources of the cluster and the jobs that are run on the cluster. In order to run a program on the cluster, a "job" needs to be submitted. A "job" is a request for resources (for instance what type of nodes to use, how many nodes, CPUS, amount of Memory, and how much time these are needed), along with a command to run a program that will use those resources. The different types of nodes are grouped in SLURM entities called "partitions".
Penobscot HPC system:
The Penobscot HPC system is our newest cluster setup. While traditional terminal-based SSH connections are still possible, Penobscot also runs Open OnDemand that allows you to do everything from within a web browser. This makes it much easier to get started. This system also has our three newest GPU nodes with 9 new GPUs. We will continue to transition nodes from the Katahdin cluster to Penobscot. In general, both clusters have the same SLURM partition names to help make it easier to transition jobs.
The basic software is installed, still using the same "module" program to manage environments. We will be adding software regularly.
Katahdin Legacy Cluster:
We envision that there will be some cases where people will want to continue using the Katahdin environment for a while. The main reason for this is that there might be certain packages/modules that do not work on Penobscot. For instance we have identified one package that requires Python 2.7, which is not supported on Penobscot. For this reason, we will be keeping a subset of nodes on Katahdin. Please contact us (acg@maine.edu) if you need help moving your workload over to Penobscot, or if you think you need to keep running on Katahdin for a while.
Types of nodes and their SLURM partitions:
There are a few types of nodes/partitions available:
CPU Nodes:
AMD EPYC 3 Milan CPUs with partition name: epyc
Thanks to a NSF CC* grant (NSF ID: 2018851) 14 nodes, each with 512 GB of RAM and 96 cores running at 2.3 Ghz have been acquired and are currently available for use. They are connected by Infiniband HDR100 at 100 Gbps
Total of 1344 cores and 7 TB of RAM
AMD EPYC 3 Milan CPUs with High Memory with partition name: epyc-hm
Again, as part of the NSF CC* grant noted above, these four nodes, each with 1 TB of RAM and 32 cores running at 3.0 Ghz. Connected by Infiniband HDR100 at 100 Gbps
Total of 128 cores and 4 TB of RAM
Intel Skylake nodes: partition name: skylake
8 nodes, each with 36 cores and 256 GB of RAM
Total of 288 cores and 2 TB of RAM
Intel Haswell nodes: partition name (both Katahdin and Penobscot): haswell
88 nodes, each with either 24 or 28 cores and either 64 GB or 128 GB of RAM
GPU Nodes: total of 25 GPUs in 5 systems
Nvidia DGX A100 node: partition name: dgx (currently only on Katahdin)
This is a Nvidia A100 node with 8 A100 GPUs (40 GB GPU RAM each), 128 cores/256 threads using AMD EPYC 2 Rome CPUs and 1 TB of RAM
Gigabyte node with nVidia RTX 2080 Ti GPUs: partition name: grtx (currently only on Katahdin)
This machine has 8 Nvidia RTX 2080 Ti GPUs with a single 32 core AMD EPYC 1 Naples CPU and 768 GB of RAM
Penobscot GPUs: Three Dell nodes with three different types of GPUs:
node-g101: Penobscot partition gpu, type a100
2 Nvidia A100 GPUs, each with 80 GB of GPU RAM
AMD Epyc Milan CPUs with 32 cores running at 3.0 Ghz
512 GB RAM
node-g102: Penobscot partition gpu, type l40
3 Nvidia L40 GPUs, each with 48 GB of GPU RAM
AMD Epyc Milan CPUs with 32 cores running at 3.0 Ghz
512 GB RAM
node-g103: Penobscot partition gpu, type a30
4 Nvidia A30 GPUs, each with 24 GB of GPU RAM
Intel Xeon Gold CPUs with 32 cores running at 2.9 Ghz
512 GB RAM
How to use the HPC resources:
Open OnDemand:
Open OnDemand makes all cluster interaction possible through a web browser. Login to the login node at https://login.acg.maine.edu, manage files, submit jobs, run interactive programs like RStudio, Jupyter, Matlab and a terminal directly on nodes (including GPU nodes). Even bring up a graphical Desktop to help with the development and debug process. All of this from within a web browser. No need to install software or set up tunnels.
SLURM Job Scheduler:
Programs can be run on the nodes by running a command to submit a "job script" to the SLURM scheduler. SLURM keeps track of all of the resources (e.g. CPU, GPU, Memory) on all of the nodes as well as all of the programs being run on the nodes. When new jobs are submitted, it is up to the SLURM scheduler to figure out what nodes should run the program and to start the requested program when the requested resources are available.
Software:
A wide range of software has been compiled or installed on the HPC system, including scientific packages, libraries and compilers. In fact, some packages have multiple versions installed. In order to make it easy to manage what packages should be used either interactively on the Login node, or in a job submitted to SLURM, the software is managed by the LMod Environment Module system. The "module" program can be run in a terminal manage what software is currently active in the terminal/shell environment. Since compilers are provided, people can also compile and install programs and packages into their own account. Similarly, since the Anaconda Python system is provides in a module, people can create their own Anaconda Virtual Environment and install Python packages into them. This puts full control into each users hands.
Containers:
Containers offer a way to install and run non-standard, complex or hard to install programs on a wide range of hardware and Operating Systems. A container encapsulates everything that is needed for the program to run into a single file. Then that file can be copied to a system that can run containers, even if that other system is running a completely different Operating System or Linux distribution.
The ACG HPC systems use Apptainer (also called Singularity) to run containers. Apptainer is compatible with Docker, so a huge range of pre-packaged software is available for use. For instance, Nvidia provides a large catalog of Docker containers providing a wide range of software that is optimized to run on their GPU systems. We have converted some of these containers into Singularity and made them available as a software module to be used on our systems.