Hardware Locality (hwloc): Object attributes

Hardware Locality (hwloc) 2.14.0rc1

Object attributes

# Normal attributes

hwloc objects have many generic attributes in the hwloc_obj structure, for instance their logical_index or os_index (see Should I use logical or physical/OS indexes? and how?), depth or name.

The kind of object is first described by the obj->type generic attribute (an integer). OS devices also have a specific obj->attr->osdev.type integer for distinguishing between NICs, GPUs, etc.

Objects may also have an optional obj->subtype pointing to a better description string (displayed by lstopo either in place or after the main obj->type attribute):

- NUMA nodes: subtype DRAM (for usual main memory), HBM (high-bandwidth memory), SPM (specific-purpose memory, usually reserved for some custom applications), NVM (non-volatile memory when used as main memory), MCDRAM (on KNL), GPUMemory (NVIDIA GPU memory shared over NVLink on POWER, over NVLink-C2C on Grace Hopper, etc.), CXL-DRAM or CXL-NVM for CXL DRAM or non-volatile memory. Note that some of these subtypes are guessed by the library, they might be missing or slightly wrong in some corner cases. See Heterogeneous Memory for details, and HWLOC_MEMTIERS and HWLOC_MEMTIERS_GUESS in Environment variables for tweaking hwloc heuristics for tuning these.
- Groups: subtype Cluster, Module, Tile, Compute Unit, Book or Drawer for different architecture-specific groups of CPUs (see also What are these Group objects in my topology?).
- OS devices (see also OS devices):
  - Co-processor: subtype OpenCL, LevelZero, CUDA, or VectorEngine.
  - GPU: subtype RSMI (AMD GPU) or NVML (NVIDIA GPU).
  - OpenFabrics: subtype BXI (Bull/Atos BXI HCA).
  - Network: subtype Slingshot (HPE Cray Slingshot Cassini HSN).
  - Block: subtype Disk, NVM (non-volatile memory), SPM (specific-purpose memory), CXLMem (CXL volatile ou persistent memory), Tape, or Removable Media Device.
- L3 Caches: subtype MemorySideCache when hwloc is configured to expose the KNL MCDRAM in Cache mode as a L3.
- PCI devices: subtype NVSwitch for NVLink switches (see also NVLinkBandwidth in Distances).
- Misc devices: subtype MemoryModule (see also Misc objects added by hwloc)

Each object also contains an attr field that, if non NULL, points to a union hwloc_obj_attr_u of type-specific attribute structures. For instance, a L2Cache object obj contains cache-specific information in obj->attr->cache, such as its size and associativity, cache type. See hwloc_obj_attr_u for details.

# Custom string infos

Aside of these generic attribute fields, hwloc annotates many objects with info attributes made of name and value strings. Each object contains a list of such pairs that may be consulted manually (looking at the object infos array field) or using the hwloc_obj_get_info_by_name(). The user may additionally add new name-value pairs to any object using hwloc_obj_add_info() or the hwloc-annotate program.

Here is a list of attributes that may be automatically added by hwloc. A description is given for each pair name (or group of related pairs), and examples of values are also provided.

Note that these attributes heavily depend on the ability of the operating system to report them. Many of them will therefore be missing on some OS.

## Operating System Information

These info attributes are attached to the root object (Machine).

OSName=Linux
OSRelease=5.14.0-427.76.1.el9_4.x86_64
OSVersion=#1 SMP PREEMPT_DYNAMIC Fri Jun 27 09:53:45 EDT 2025
HostName=adastra6
Architecture=x86_64
  The operating system name, release, version, the hostname and the architecture name, as reported by the Unix uname command.
LinuxCgroup=/slurm/uid_10102/job_4229632/step_extern
  The name the Linux control group where the calling process is placed.
WindowsBuildEnvironment=Cygwin
  Either MinGW or Cygwin when one of these environments was used during build.

## hwloc Information

These info attributes are attached to the root object (Machine).

MemoryTiersNr=2
  The number of different memory tiers in the topology, if any. See Heterogeneous Memory.
Backend=Linux (topology root, or specific object added by that backend)
  The name of the hwloc backend/component that filled the topology. If several components were combined, multiple Backend pairs may exist, with different values, for instance x86 and Linux in the root object and CUDA in CUDA OS device objects. Topologies build from synthetic strings also get a Synthetic Backend info in the root object.
SyntheticDescription=Pack:1 [NUMA(memory=16GiB)] L2:6(size=1MiB) L1d:1(size=48kiB) Core:1 PU:2
  The description string that was given to hwloc to build this synthetic topology. See Synthetic topologies
hwlocVersion=2.13.0
  The version number of the hwloc library that was used to generate the topology. If the topology was loaded from XML, this is not the hwloc version that loaded it, but rather the first hwloc instance that exported the topology to XML earlier.
ProcessName=myprogram
  The name of the process that contains the hwloc library that was used to generate the topology. If the topology was from XML, this is not the hwloc process that loaded it, but rather the first process that exported the topology to XML earlier.

## Hardware Platform Information

These info attributes are attached to the root object (Machine).

DMIBIOSVersion=V70 Ver. 01.08.00
DMIBoardVendor=HP
DMIChassisType=10
DMIProductName=HP EliteBook 840 14 inch G10 Notebook PC
  These keys (and several others) provide the name, serial number, version, etc. of the hardware product, chassis, motherboard and BIOS, as reported by DMI when supported on Linux (under /sys/class/dmi/id/).
HardwareName=Marvell Armada-370
HardwareRevision=0001
HardwareSerial=000abc123
  The name, revision and serial number of the platform, currently available only on some Linux/ARM platforms.
PlatformName=PowerNV
PlatformModel=C1P9S01 REV 1.01
PlatformVendor=Eyetech Ltd.
PlatformBoardID=0x22c
PlatformRevision=3
SystemVersionRegister=0x3456
  All these keys describe POWER/PowerPC platforms. Currently only available on some Linux platforms.
SoC0ID=25
SoC2Family=Tegra
SoC1Revision=0x00000102
  These keys provide the ID, family and revision of the first system-on-chip (SoC0), second (SoC1), etc. Currently only available on Linux on some platforms.
MemoryMode, ClusterMode

  Intel Xeon Phi processor configuration modes. Available if hwloc-dump-hwdata was used (see Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?) or if hwloc managed to guess them from the NUMA configuration.

  The memory mode may be Cache, Flat, Hybrid50 (half the MCDRAM is used as a cache) or Hybrid25 (25% of MCDRAM as cache). The cluster mode may be Quadrant, Hemisphere, All2All, SNC2 or SNC4. See doc/examples/get-knl-modes.c in the source directory for an example of retrieving these attributes.

## CPU Information

These info attributes are attached to Package objects, or to the root object (Machine) if package locality information is missing.

CPUModel=AMD EPYC 7A53 64-Core Processor
  The processor model name, available on most platforms and operating systems.
CPUVendor=AuthenticAMD
  The processor vendor name, usually available when running on x86 hardware and/or Linux platforms.
CPUModelNumber=48
CPUFamilyNumber=25
CPUStepping=1
  x86-specific processor model, family, and stepping numbers.
CPUImplementer=0x48
CPUArchitecture=8
CPUVariant=0x1
CPUPart=0xd01

  ARM-specific CPU information about the implementer, the sub-architecture, the variant and the part number, currently only available on Linux on most ARM platforms.

  Some attributes such as CPUPart may rather appear in cpukind infos if the CPU is hybrid, see CPU Kinds.

CPUFamily=Loongson-64bit
  The family of the CPU, currently only available on Linux on LoongArch platforms.
CPURevision=0x11
  Processor revision number, currently only available on Linux on ARM, LoongArch and on some POWER/PowerPC platforms.
ProcessorVersionRegister=0x123
  POWER/PowerPC-specific processor version register (PVR), currently only available on Linux on some platforms.
CPUType=sparcv9
  A Solaris-specific general processor type name, such as i86pc or sparcv9, as reported by PICL.

## OS Device Information

### GPU and Coprocessor OS Device Information

These info attributes are attached to OS device objects specified in parentheses.

GPUVendor=NVIDIA Corporation
  GPUModel=Tesla V100-SXM3-32GB-H (GPU or Co-Processor OS devices)
  The vendor and model names of the GPU device.
OpenCLDeviceType=GPU
OpenCLPlatformIndex=0
OpenCLPlatformName=AMD Accelerated Parallel Processing
OpenCLPlatformDeviceIndex=1 (OpenCL OS devices)
  The type of OpenCL device, the OpenCL platform index and name, and the index of the device within the platform.
OpenCLComputeUnits=110
OpenCLGlobalMemorySize=67092480 (OpenCL OS devices)
  The number of compute units and global memory size of an OpenCL device. Sizes are in KiB (1024 bytes).
LevelZeroVendor=Intel(R) Corporation
LevelZeroModel=Intel(R) Data Center GPU Max 1550
LevelZeroBrand=Intel(R) Corporation
LevelZeroSerialNumber=0x180e7227b70f4a0d
LevelZeroBoardNumber=0 (LevelZero OS devices)
  The name of the vendor, device model, brand of a Level Zero device, and its serial and board numbers.
LevelZeroDriverIndex=0
LevelZeroDriverDeviceIndex=0 (LevelZero OS devices)
  The index of the Level Zero driver within the list of drivers, and the index of the device within the list of devices managed by this driver.
LevelZeroUUID=27a77ad2b8419be80000000000000000 (LevelZero OS devices or subdevices)
  The UUID of the device or subdevice.
LevelZeroSubdevices=2 (LevelZero OS devices)
  The number of subdevices below this OS device.
LevelZeroSubdeviceID=1 (LevelZero OS subdevices)
  The index of this subdevice within its parent.
LevelZeroDeviceType=GPU (LevelZero OS devices or subdevices)
  A string describing the type of device, for instance "GPU", "CPU", "FPGA", etc.
LevelZeroNumSlices=2
LevelZeroNumSubslicesPerSlice=56
LevelZeroNumEUsPerSubslice=8
LevelZeroNumThreadsPerEU=8 (LevelZero OS devices or subdevices)
  The number of slices in the device, of subslices per slice, of execution units (EU) per subslice, and of threads per EU.
LevelZeroHBMSize=134217728
LevelZeroDDRSize=16777216
LevelZeroMemorySize=16777216 (LevelZero OS devices or subdevices)
  The amount of HBM or DDR memory of a LevelZero device or subdevice. Sizes are in KiB (1024 bytes). If the type of memory could not be determined, the generic name LevelZeroMemorySize is used. For devices that contain subdevices, the amount reported in the root device includes the memories of all its subdevices.
LevelZeroCQGroup=3s
LevelZeroCQGroup2=7*0x2 (LevelZero OS devices or subdevices)
  The number of completion queue groups, and the description of the third group (as N*0xX where N is the number of queues in the group, and 0xX is the hexadecimal bitmask of ze_command_queue_group_property_flag_t listing properties of those queues).
AMDUUID=e36ac86da8af0f71
AMDSerial=692224001590 (RSMI GPU OS devices)
  The UUID and serial number of AMD GPUs.
RSMIVRAMSize=67092480
RSMIVisibleVRAMSize=67092480
RSMIGTTSize=262899364 (RSMI GPU OS devices)
  The amount of GPU memory (VRAM), of GPU memory that is visible from the host (Visible VRAM), and of system memory that is usable by the GPU (Graphics Translation Table). Sizes are in KiB (1024 bytes).
XGMIHiveID=bac53b896800dc20 (RSMI GPU OS devices)
  The ID of the group of GPUs (Hive) interconnected by XGMI links
XGMIPeers="rsmi0 rsmi1" (RSMI GPU OS devices)
  The list of RSMI OS devices that are directly connected to the current device through XGMI links. They are given as a space-separated list of object names, for instance rsmi2 rsmi3.
NVIDIAUUID=GPU-06162e6e-80e9-16e9-357e-ac30a929731c
NVIDIASerial=0322716102756 (NVML GPU OS devices)
  The UUID and serial number of NVIDIA GPUs.
CUDAMultiProcessors=56
CUDACoresPerMP=64
CUDAGlobalMemorySize=16671616
CUDAL2CacheSize=4096
CUDASharedMemorySizePerMP=48 (CUDA OS devices)
  The number of shared multiprocessors, the number of (FP32) cores per multiprocessor, the global memory size, the (global) L2 cache size, and size of the shared memory in each multiprocessor of a CUDA device. Sizes are in KiB (1024 bytes).
VectorEngineModel=1
VectorEngineSerialNumber=32424a3233303034390000000000000 (VectorEngine OS devices)
  The model and serial number of a VectorEngine device.
VectorEngineCores=8
VectorEngineMemorySize=50331648
VectorEngineLLCSize=16384
VectorEngineL2Size=256
VectorEngineL1dSize=32
VectorEngineL1iSize=32 (VectorEngine OS devices)
  The number of cores, memory size, and the sizes of the (global) last level cache and of L2, L1d and L1i caches of a VectorEngine device. Sizes are in KiB (1024 bytes).
VectorEngineNUMAPartitioned=1 (VectorEngine OS devices)
  If this attribute exists, the VectorEngine device is configured in partitioned mode with multiple NUMA nodes.

### Other OS Device Information

These info attributes are attached to OS device objects specified in parentheses.

Vendor=SK hynix
Model=PC801 HFS001TEJ9X101N
Revision=HPS1
Size=1000204632
SectorSize=512 (Block OS devices)
  The vendor and model names, revision, size (in KiB = 1024 bytes) and SectorSize (in bytes).
LinuxDeviceID=259:0 (Block OS devices)
  The major/minor device number such as 8:0 of Linux device.
CXLRAMSize=16777216
CXLPMEMSize=1073741824 (CXL Memory Block OS devices)
  The size of the volatile (RAM) or persistent (PMEM) memory in a CXL Type-3 device. Sizes are in KiB (1024 bytes).
Address=40:5b:7f:97:a0:b8
Port=1 (Network interface OS devices)
  The MAC address and the port number of a software network interface, such as eth4 on Linux.
NodeGUID=9c63:c003:00fb:7458
SysImageGUID=9c63:c003:00fb:7458
Port1State=4
Port2LID=0x2
Port2LMC=0
Port3GID1=fe80:0000:0000:0009:9c63:c003:00fb:7458 (OpenFabrics OS devices)
  The node GUID and GUID mask, the state of a port #1 (value is 4 when active), the LID and LID mask count of port #2, and GID #1 of port #3.
CassiniVersion=1.1
NID=0x6913 (Network Slingshot OS devices)
  The version of the Cassini NIC and the node ID for a Slingshot CXI interface.
BXIUUID=0x720109782dfd (OpenFabrics BXI OS devices)
  The UUID of an Atos/Bull BXI HCA.

## Other Object-specific Information

These info attributes are attached to objects specified in parentheses.

MemoryTier=1 (NUMA Nodes)
  The rank of the memory tier of this node. Ranks start from 0 for highest bandwidth nodes. The attribute is only set if multiple tiers are found. See Heterogeneous Memory.
CXLDevice=0003:02:01.0 (NUMA Nodes or DAX Memory OS devices)
  The PCI/CXL bus ID of a device whose CXL Type-3 memory is exposed here. If multiple devices are interleaved, their bus IDs are separated by commas, and the number of devices is reported in CXLDeviceInterleaveWays.
CXLDeviceInterleaveWays=2 (NUMA Nodes or DAX Memory OS devices)
  If multiple CXL devices are interleaved, this attribute shows the number of devices (and the number of bus IDs in the CXLDevice attributes).
DAXDevice=dax1.0 (NUMA Nodes)
  The name of the Linux DAX device that was used to expose a non-volatile memory region as a volatile NUMA node.
DAXType=SPM (NUMA Nodes or DAX OS devices)
  The type of memory exposed in a Linux DAX device or in the corresponding NUMA node, either "NVM" (non-volatile memory) or "SPM" (specific-purpose memory).
DAXParent=ACPI0017:00/root0/decoder0.1/region1/dax_region1 (NUMA Nodes or DAX OS devices)
  A string describing the Linux sysfs hierarchy that exposes the DAX device, for instance containing "hmem1" for specific-purpose memory or "ndbus0" for NVDIMMs.
PCIBusID=0006:00:00.0 (GPUMemory NUMA Nodes)
  The PCI bus ID of the GPU whose memory is exposed in this NUMA node.
Inclusive=1 (Caches)
  The inclusiveness of a cache (1 if inclusive, 0 otherwise). Currently only available on x86 processors.
SolarisProcessorGroup=CPU_PM_Active_Power_Domain (Group)
  The Solaris kstat processor group name that was used to build this Group object.
PCIVendor=Bull HN Information Systems
PCIDevice=BXI Host Channel Adapter v1.3 (PCI devices and bridges)
  The vendor and device names of the PCI device.
PCISlot=2 (PCI devices or Bridges)
  The name/number of the physical slot where the device is plugged. If the physical device contains PCI bridges above the actual PCI device, the attribute may be attached to the highest bridge (i.e. the first object that actually appears below the physical slot).
Vendor=Hynix
FormFactor=DIMM
Type=DDR5
Size=16777216
DeviceLocation=B6
BankLocation=Controller0ChannelADimm0
Rank=1
AssetTag=011736A0
PartNumber=HMCG78AGBRA191N (MemoryModule Misc objects)
  Information about memory modules (DIMMs) extracted from SMBIOS. Size is in KiB.
SerialNumber=AMCAN00091340A83M (Block and CXL Block Memory OS devices, MemoryModule Misc objects)
  The serial number of the device.
  Note that some OS devices such as Co-Processors may have specific info names such as LevelZeroSerialNumber when formatted by dedicated APIs, see other subsections above.

## User-Given Information

Here is a non-exhaustive list of user-provided info attributes that have a special meaning:

lstopoStyle=Background=#0000ff;Text=#ffffff
  Enforces the style of an object (background and text colors) in the graphical output of lstopo. See CUSTOM COLORS in the lstopo(1) manpage for details.