NUMA
NUMA is a memory design where each CPU socket or node reaches its own local memory faster than memory attached to other nodes.
NUMA, or non-uniform memory access, is a memory design in which each processor reaches its own local memory faster than memory attached to another processor. A group of cores with its local memory and PCIe devices is a NUMA node. Linux allocates from the local node by default once the system is running. Firmware can split one socket into several nodes. AMD does it with the NUMA nodes per socket setting, NPS, on EPYC. Intel does it with Sub-NUMA Clustering, SNC, on Xeon. A PCIe device, a GPU included, is local to one node.
On EPYC 9004, NPS1, NPS2 and NPS4 give one, two or four nodes per socket. AMD recommends the default, NPS1, for most workloads, NPS4 for HPC. NPS0 spans both sockets and is not recommended. Intel's Xeon 6 documentation uses SNC2 and SNC3, which split a socket into two or three clusters. In nvidia-smi topo -m, NODE means a path that crosses PCIe host bridges inside one node. SYS means it crosses the interconnect between NUMA nodes, such as UPI. The same output lists each GPU's CPU and NUMA affinity.
Bind each GPU job and its memory to the node its GPU reports. Leave NPS at 1 unless the software is NUMA-aware.
Sources
Source | Publisher |
|---|---|
TUNING GUIDE AMD EPYC 9004 BIOS and Workload, Publication 58011 | AMD |
Intel Xeon 6 Processor BIOS NUMA Tuning Guide for Microsoft SQL Server, Document 845720 | Intel |
NVIDIA | |
Linux kernel documentation |
- Publisher
Intel
- Publisher
NVIDIA
- Publisher
Linux kernel documentation
Last verified October 30, 2026.
- NUMA
- non-uniform memory access
- NUMA node
- NUMA affinity
- NPS
- NUMA nodes per socket
- NPS1 NPS4
- sub-NUMA clustering
- SNC
- nvidia-smi topo