Compute Nodes

This page lists hardware specifications for the compute nodes currently used in the MOGON clusters, as well as our partitioning.

Available Resources

The following table displays all generally available nodes of MOGON KI. They are interconnected via Infiniband HDR and have $3.2\thinspace\text{TB}$ disk space. All nodes run on the same AMD EPYC 7713 CPU architecture.

Nodes S / C / T RAM Accelerator
cpu0xxx $2/64/1$ $33\times~256\thinspace\text{GB}$
$14\times~512\thinspace\text{GB}$
$\space2\times1024\thinspace\text{GB}$
$1\times2048\thinspace\text{GB}$
gpu0101 -
gpu0102
$2/64/1$ $1024\thinspace\text{GB}$ $4\times$ AMD MI250
gpu0201-
gpu0204
$2/64/1$ $2048\thinspace\text{GB}$ $8\times$ Nvidia A100-SXM4 $80\thinspace\text{GB}$
gpu0301-
gpu0307
$2/64/1$ $1024\thinspace\text{GB}$ $8\times$ Nvidia A40 $48\thinspace\text{GB}$

S stands for sockets per node, C - cores per socket, and T - threads per core.

What are Nodes, Sockets, Cores and Threads?

Explanations can be found at the bottom of the page.

The following table displays all generally available nodes of MOGON NHR. They are interconnected via Infiniband HDR and have $3.2\thinspace\text{TB}$ disk space. All nodes run on the same AMD EPYC 7713 CPU architecture.

Nodes S / C / T RAM Accelerator
cpu0xxx $2/64/1$ $400\times~256\thinspace\text{GB}$
$159\times~512\thinspace\text{GB}$
$\space27\times1024\thinspace\text{GB}$
$4\times2048\thinspace\text{GB}$
gpu0001-
gpu0010
$2/64/1$ $1024\thinspace\text{GB}$ $4\times$ Nvidia A100-SXM4 $40\thinspace\text{GB}$

S stands for sockets per node, C - cores per socket, and T - threads per core.

What are Nodes, Sockets, Cores and Threads?

Explanations can be found at the bottom of the page.

The memory specified above is not to be confused with RAM available at runtime, as all nodes reserve some memory for basic services.

If you reserve memory with Slurm, please use the RAM values in the partitioning table below.

Partitioning

Individual compute nodes are grouped together into larger subsets of the cluster to form so-called partitions. A partition groups nodes based on characteristics or policies to ensure fairness and responsiveness.

Nodes: CPU-Nodes

Partition Limit RAM Designated Use
ki-smallcpu 6 days $1\thinspace930\thinspace\text{MiB}$
$\space\text{per CPU}$
for jobs using CPUs $\ll 128$
max. run. jobs per user: $3\text{k}$
ki-parallel 6 days $\space248\thinspace000\thinspace\text{MiB}$
$\space504\thinspace000\thinspace\text{MiB}$
jobs using $\text{n}$ exclusive nodes,
$\text{CPUs}=128\times\text{n}$ for $\text{n}\in[1,2,\ldots]$
ki-longtime 12 days $\space248\thinspace000\thinspace\text{MiB}$
$\space504\thinspace000\thinspace\text{MiB}$
long running jobs $\ge \text{6 days}$
ki-largemem 6 days $1\thinspace016\thinspace000\thinspace\text{MiB}$ higher memory needs
ki-hugemem 6 days $1\thinspace992\thinspace000\thinspace\text{MiB}$ higher memory needs
Partition Limit RAM Designated Use
smallcpu 6 days $1\thinspace930\thinspace\text{MiB}$
$\space\text{per CPU}$
for jobs using $\text{CPUs} \ll 128$
max. run. jobs per user: $3\text{k}$
parallel 6 days $\space248\thinspace000\thinspace\text{MiB}$
$\space504\thinspace000\thinspace\text{MiB}$
jobs using $\text{n}$ exclusive nodes,
$\text{CPUs}=128\times\text{n}$ for $\text{n}\in[1,2,\ldots]$
longtime 12 days $\space248\thinspace000\thinspace\text{MiB}$
$\space504\thinspace000\thinspace\text{MiB}$
long running jobs $\ge \text{6 days}$
largemem 6 days $1\thinspace016\thinspace000\thinspace\text{MiB}$ higher memory needs
hugemem 6 days $1\thinspace992\thinspace000\thinspace\text{MiB}$ higher memory needs

Did you know?

The parallel partition allocates nodes exclusively — meaning even a 2-CPU job reserves a full node. To avoid waste, submit small jobs to the smallcpu partition.

Partitions supporting Accelerators

Partition Nodes Limit RAM Designated Use
mi250 gpu010x 6 days $1\thinspace016\thinspace000\thinspace\text{MiB}$ GPU requirement
a100ai gpu020x 6 days $1\thinspace992\thinspace000\thinspace\text{MiB}$ GPU requirement
a40 gpu030x 6 days $1\thinspace016\thinspace000\thinspace\text{MiB}$ GPU requirement
ki-gpu-devel - 2 hours - GPU testing

Private Partitions

Partition Nodes Limit RAM Accelerators
topml gpu0601 6 days $1\thinspace547\thinspace259\thinspace\text{MiB}$ NVIDIA H100 80GB HBM3
komet floating Partition 6 days $ \thinspace248\thinspace000\thinspace\text{MiB}$ -
czlab gpu0602 6 days $1\thinspace031\thinspace580\thinspace\text{MiB}$ NVIDIA L40
Partition Nodes Limit RAM Designated Use
a100dl gpu00xx 6 days $1\thinspace016\thinspace000\thinspace\text{MiB}$ GPU requirement

Hidden Partitions

Information on hidden partitions can be viewed by anyone. These partitions are set to be hidden to avoid cluttering the output for every poll - these partitions are “private” to certain projects/groups and only of interest to respective groups.

To visualize all jobs for a user in all partitions supply the -a flag:

squeue -u $USER -a

Likewise sinfo can be supplemented with -a to gather informations. All other commands work without this flag as expected.

Slurm Query

The tables on this page list key attributes of MOGON’s compute nodes grouped by partition. For a more comprehensive listing, you can also query this information with the following Slurm command:

scontrol show partition <name-of-partition> --clusters=<cluster>

For example:

scontrol show partition ki-parallel --clusters=mogonki
scontrol show partition parallel --clusters=mogonnhr

Slurm will display defaults as well as minimal and maximal settings for reservation time, memory capacity, etc. of the partition.

Memory Limits

You can also list all of our partitions with relevant limits using the sinfo command:

sinfo -e -o "%20P %16F %8z %.8m %.11l %G" -S "+P+m" --clusters=all

What are Nodes, Sockets, Cores and Threads?

To explain the performance and structure the available Mogon clusters, their performance is indicated by stating facts about the number of machines (nodes) within the cluster and their specifications - sockets (S), physical cores (C) and threads/logical cores (T). The following illustrations give a rough overview of what these specifications mean:

1Nodes

A node is one complete computer of the cluster – comparable to a very powerful PC without screen or keyboard. Many nodes are stacked in racks (metal cabinets) in the data center and connected by a fast network.

When you start a job, it gets assigned to one or more nodes, or a part of one.

2 SocketsS and CPUs

The mainboard is the circuit board that connects all components of a node, also including memory and GPUs.

The components performing the actual calculations are the processors (CPUs). Each CPU sits in its own socket, a slot that holds exactly one CPU. Most MOGON nodes have 2 sockets, so each node contains two CPUs that share the memory of the node.

One physical processor

8 cores × 2 threads = 16 threads per socket

3 Cores C and threads T

A CPU contains several independent calculation units called cores. Each core can work on its own task, so a CPU with many cores can do many things at the same time.

A core can additionally appear as two threads (“virtual cores”) that take turns on the same physical core.

The picture is simplified: real CPUs have more cores, e.g. 64 per CPU on MOGON NHR.

Rack → Node → Socket (S) → Core (C) → Thread (T)

On MOGON NHR and MOGON KI: 2 sockets × 64 cores per socket = 128 physical cores. With 1 hardware thread per core, the node exposes 128 hardware threads.

While this already explains how the MOGON cluster manages to work on very large data sets and perform multiple tasks simultaneously, there are still some optimizations to be had. For this, we need to look more closely at how individual cores conduct their work. Looking at it from a simplified angle, every core starts working on a task, finishes this task, and then moves on to the next one. However, this process does not always work in such an idealized way. In many cases, the core will need to wait for other work to be finished before it can start calculating – like when data needs to be loaded or processed by another component on the node before the core can continue to calculate with it. Because of this, the core cannot be used as efficiently as theoretically possible.

To solve this problem, the task that needs to wait for additional input is usually simply paused, and another task is performed in the time that would usually be taken up by waiting. However, since this approach involves moving all the data for the relevant task in and out of the processors registers, it has a noticeable performance overhead.

Without hyperthreading

The core handles one task at a time. Whenever it has to switch to the next task, the data of the old task has to be moved out and the data of the new task moved in. During this overhead the core does no useful calculation.

With hyperthreading

The core offers two threads, so the next task can already be waiting on the second thread. The core switches over without moving data in and out, overhead is reduced and the same tasks are finished earlier.

Both diagrams show the same four tasks on the same time axis. The schematic is simplified: how much time hyperthreading actually saves depends on the workload.

To improve on this, each physical core of the CPU can be split into two logical cores (threads), which significantly reduces the amount of times this operation has to be performed. In this case, the operating system and software on the node only see the logical cores, not the physical ones. Despite this, the logical cores are no actual component within the processor – rather they can be imagined as virtual implementations of the workings of the traditional physical components.

The process of splitting physical cores into multiple threads is often called hyperthreading.