1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Hardware Locality (hwloc): Object attributes</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Hardware Locality (hwloc)<span id="projectnumber"> 2.12.2</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div><div class="header">
<div class="headertitle"><div class="title">Object attributes</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="attributes_normal"></a>
Normal attributes</h1>
<p>hwloc objects have many generic attributes in the <a class="el" href="a00220.html" title="Structure of a topology object.">hwloc_obj</a> structure, for instance their <code>logical_index</code> or <code>os_index</code> (see <a class="el" href="a00382.html#faq_indexes">Should I use logical or physical/OS indexes? and how?</a>), <code>depth</code> or <code>name</code>.</p>
<p>The kind of object is first described by the <code>obj->type</code> generic attribute (an integer). OS devices also have a specific <code>obj->attr->osdev.type</code> integer for distinguishing between NICs, GPUs, etc.</p>
<p>Objects may also have an optional <code>obj->subtype</code> pointing to a better description string (displayed by lstopo either in place or after the main <code>obj->type</code> attribute): </p><ul>
<li>
NUMA nodes: subtype <code>DRAM</code> (for usual main memory), <code>HBM</code> (high-bandwidth memory), <code>SPM</code> (specific-purpose memory, usually reserved for some custom applications), <code>NVM</code> (non-volatile memory when used as main memory), <code>MCDRAM</code> (on KNL), <code>GPUMemory</code> (NVIDIA GPU memory shared over NVLink on POWER, over NVLink-C2C on Grace Hopper, etc.), <code>CXL-DRAM</code> or <code>CXL-NVM</code> 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 <a class="el" href="a00375.html">Heterogeneous Memory</a> for details, and HWLOC_MEMTIERS and HWLOC_MEMTIERS_GUESS in <a class="el" href="a00369.html">Environment Variables</a> for tuning these. </li>
<li>
Groups: subtype <code>Cluster</code>, <code>Module</code>, <code>Tile</code>, <code>Compute Unit</code>, <code>Book</code> or <code>Drawer</code> for different architecture-specific groups of CPUs (see also <a class="el" href="a00382.html#faq_groups">What are these Group objects in my topology?</a>). </li>
<li>
OS devices (see also <a class="el" href="a00371.html#iodevices_osdev">OS devices</a>): <ul>
<li>
Co-processor: subtype <code>OpenCL</code>, <code>LevelZero</code>, <code>CUDA</code>, or <code>VectorEngine</code>. </li>
<li>
GPU: subtype <code>RSMI</code> (AMD GPU) or <code>NVML</code> (NVIDIA GPU). </li>
<li>
OpenFabrics: subtype <code>BXI</code> (Bull/Atos BXI HCA). </li>
<li>
Network: subtype <code>Slingshot</code> (HPE Cray Slingshot Cassini HSN). </li>
<li>
Block: subtype <code>Disk</code>, <code>NVM</code> (non-volatile memory), <code>SPM</code> (specific-purpose memory), <code>CXLMem</code> (CXL volatile ou persistent memory), <code>Tape</code>, or <code>Removable Media Device</code>. </li>
</ul>
</li>
<li>
L3 Caches: subtype <code>MemorySideCache</code> when hwloc is configured to expose the KNL MCDRAM in Cache mode as a L3. </li>
<li>
PCI devices: subtype <code>NVSwitch</code> for NVLink switches (see also NVLinkBandwidth in <a class="el" href="a00374.html#topoattrs_distances">Distances</a>). </li>
<li>
Misc devices: subtype <code>MemoryModule</code> (see also <a class="el" href="a00372.html#miscobjs_auto">Misc objects added by hwloc</a>) </li>
</ul>
<p>Each object also contains an <code>attr</code> field that, if non NULL, points to a union <a class="el" href="a00224.html" title="Object type-specific Attributes.">hwloc_obj_attr_u</a> of type-specific attribute structures. For instance, a L2Cache object <code>obj</code> contains cache-specific information in <code>obj->attr->cache</code>, such as its size and associativity, cache type. See <a class="el" href="a00224.html" title="Object type-specific Attributes.">hwloc_obj_attr_u</a> for details.</p>
<h1><a class="anchor" id="attributes_info"></a>
Custom string infos</h1>
<p>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 <code>infos</code> array field) or using the <a class="el" href="a00169.html#ga840c03c835d41cd6f4d91625c25a238d" title="Search the given name in object infos and return the corresponding value.">hwloc_obj_get_info_by_name()</a>. The user may additionally add new name-value pairs to any object using <a class="el" href="a00169.html#gace7654bb8a9002caae1a4b8a59e7452e" title="Add the given name and value pair to the given object info attributes.">hwloc_obj_add_info()</a> or the <a class="el" href="a00368.html#cli_hwloc_annotate">hwloc-annotate</a> program.</p>
<p>Here is a non-exhaustive list of attributes that may be automatically added by hwloc. 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.</p>
<h2><a class="anchor" id="attributes_info_platform"></a>
Hardware Platform Information</h2>
<p>These info attributes are attached to the root object (Machine).</p>
<dl>
<dt>PlatformName, PlatformModel, PlatformVendor, PlatformBoardID, PlatformRevision, </dt>
<dd></dd>
<dt>SystemVersionRegister, ProcessorVersionRegister (Machine) </dt>
<dd>Some POWER/PowerPC-specific attributes describing the platform and processor. Currently only available on Linux. Usually added to Package objects, but can be in Machine instead if hwloc failed to discover any package. </dd>
<dt>DMIBoardVendor, DMIBoardName, etc. </dt>
<dd>DMI hardware information such as the motherboard and chassis models and vendors, the BIOS revision, etc., as reported by Linux under <code>/sys/class/dmi/id/</code>. </dd>
<dt>SoC0ID, SoC0Family, SoC1Revision, etc. </dt>
<dd>The ID, family and revision of the first system-on-chip (<code>SoC0</code>), second (<code>SoC1</code>), etc. </dd>
<dt>MemoryMode, ClusterMode </dt>
<dd><p class="startdd">Intel Xeon Phi processor configuration modes. Available if hwloc-dump-hwdata was used (see <a class="el" href="a00382.html#faq_knl_dump">Why do I need hwloc-dump-hwdata for memory on Intel Xeon Phi processor?</a>) or if hwloc managed to guess them from the NUMA configuration.</p>
<p class="enddd">The memory mode may be <em>Cache</em>, <em>Flat</em>, <em>Hybrid50</em> (half the MCDRAM is used as a cache) or <em>Hybrid25</em> (25% of MCDRAM as cache). The cluster mode may be <em>Quadrant</em>, <em>Hemisphere</em>, <em>All2All</em>, <em>SNC2</em> or <em>SNC4</em>. See doc/examples/get-knl-modes.c in the source directory for an example of retrieving these attributes. </p>
</dd>
</dl>
<h2><a class="anchor" id="attributes_info_os"></a>
Operating System Information</h2>
<p>These info attributes are attached to the root object (Machine).</p>
<dl>
<dt>OSName, OSRelease, OSVersion, HostName, Architecture </dt>
<dd>The operating system name, release, version, the hostname and the architecture name, as reported by the Unix <code>uname</code> command. </dd>
<dt>LinuxCgroup </dt>
<dd>The name the Linux control group where the calling process is placed. </dd>
<dt>WindowsBuildEnvironment </dt>
<dd>Either MinGW or Cygwin when one of these environments was used during build. </dd>
</dl>
<h2><a class="anchor" id="attributes_info_hwloc"></a>
hwloc Information</h2>
<p>Unless specified, these info attributes are attached to the root object (Machine).</p>
<dl>
<dt>Backend (topology root, or specific object added by that backend) </dt>
<dd>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 <code>x86</code> and <code>Linux</code> in the root object and <code>CUDA</code> in CUDA OS device objects. </dd>
<dt>MemoryTiersNr </dt>
<dd>The number of different memory tiers in the topology, if any. See <a class="el" href="a00375.html">Heterogeneous Memory</a>. </dd>
<dt>SyntheticDescription </dt>
<dd>The description string that was given to hwloc to build this synthetic topology. </dd>
<dt>hwlocVersion </dt>
<dd>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. </dd>
<dt>ProcessName </dt>
<dd>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. </dd>
</dl>
<h2><a class="anchor" id="attributes_info_cpu"></a>
CPU Information</h2>
<p>These info attributes are attached to Package objects, or to the root object (Machine) if package locality information is missing.</p>
<dl>
<dt>CPUModel </dt>
<dd>The processor model name. </dd>
<dt>CPUVendor, CPUModelNumber, CPUFamilyNumber, CPUStepping </dt>
<dd>The processor vendor name, model number, family number, and stepping number. Currently available for x86 and Xeon Phi processors on most systems, and for ia64 processors on Linux (except CPUStepping). </dd>
<dt>CPUFamily </dt>
<dd>The family of the CPU, currently only available on Linux on LoongArch platforms. </dd>
<dt>CPURevision </dt>
<dd>A POWER/PowerPC-specific general processor revision number, currently only available on Linux. </dd>
<dt>CPUType </dt>
<dd>A Solaris-specific general processor type name, such as "i86pc". </dd>
</dl>
<h2><a class="anchor" id="attributes_info_osdev"></a>
OS Device Information</h2>
<p>These info attributes are attached to OS device objects specified in parentheses.</p>
<dl>
<dt>Vendor, Model, Revision, Size, SectorSize (Block OS devices) </dt>
<dd>The vendor and model names, revision, size (in KiB = 1024 bytes) and SectorSize (in bytes). </dd>
<dt>LinuxDeviceID (Block OS devices) </dt>
<dd>The major/minor device number such as 8:0 of Linux device. </dd>
<dt>SerialNumber (Block and CXL Memory OS devices) </dt>
<dd>The serial number of the device. </dd>
<dt>CXLRAMSize, CXLPMEMSize (CXL Memory Block OS devices) </dt>
<dd>The size of the volatile (RAM) or persistent (PMEM) memory in a CXL Type-3 device. Sizes are in KiB (1024 bytes). </dd>
<dt>GPUVendor, GPUModel (GPU or Co-Processor OS devices) </dt>
<dd>The vendor and model names of the GPU device. </dd>
<dt>OpenCLDeviceType, OpenCLPlatformIndex, </dt>
<dd></dd>
<dt>OpenCLPlatformName, OpenCLPlatformDeviceIndex (OpenCL OS devices) </dt>
<dd>The type of OpenCL device, the OpenCL platform index and name, and the index of the device within the platform. </dd>
<dt>OpenCLComputeUnits, OpenCLGlobalMemorySize (OpenCL OS devices) </dt>
<dd>The number of compute units and global memory size of an OpenCL device. Sizes are in KiB (1024 bytes). </dd>
<dt>LevelZeroVendor, LevelZeroModel, LevelZeroBrand, </dt>
<dd></dd>
<dt>LevelZeroSerialNumber, LevelZeroBoardNumber (LevelZero OS devices) </dt>
<dd>The name of the vendor, device model, brand of a Level Zero device, and its serial and board numbers. </dd>
<dt>LevelZeroDriverIndex, LevelZeroDriverDeviceIndex (LevelZero OS devices) </dt>
<dd>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. </dd>
<dt>LevelZeroUUID (LevelZero OS devices or subdevices) </dt>
<dd>The UUID of the device or subdevice. </dd>
<dt>LevelZeroSubdevices (LevelZero OS devices) </dt>
<dd>The number of subdevices below this OS device. </dd>
<dt>LevelZeroSubdeviceID (LevelZero OS subdevices) </dt>
<dd>The index of this subdevice within its parent. </dd>
<dt>LevelZeroDeviceType (LevelZero OS devices or subdevices) </dt>
<dd>A string describing the type of device, for instance "GPU", "CPU", "FPGA", etc. </dd>
<dt>LevelZeroNumSlices, LevelZeroNumSubslicesPerSlice, </dt>
<dd></dd>
<dt>LevelZeroNumEUsPerSubslice, LevelZeroNumThreadsPerEU (LevelZero OS devices or subdevices) </dt>
<dd>The number of slices in the device, of subslices per slice, of execution units (EU) per subslice, and of threads per EU. </dd>
<dt>LevelZeroHBMSize, LevelZeroDDRSize, LevelZeroMemorySize (LevelZero OS devices or subdevices) </dt>
<dd>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. </dd>
<dt>LevelZeroCQGroups, LevelZeroCQGroup2 (LevelZero OS devices or subdevices) </dt>
<dd>The number of completion queue groups, and the description of the third group (as <code>N*0xX</code> where <code>N</code> is the number of queues in the group, and <code>0xX</code> is the hexadecimal bitmask of <code>ze_command_queue_group_property_flag_t</code> listing properties of those queues). </dd>
<dt>AMDUUID, AMDSerial (RSMI GPU OS devices) </dt>
<dd>The UUID and serial number of AMD GPUs. </dd>
<dt>RSMIVRAMSize, RSMIVisibleVRAMSize, RSMIGTTSize (RSMI GPU OS devices) </dt>
<dd>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). </dd>
<dt>XGMIHiveID (RSMI GPU OS devices) </dt>
<dd>The ID of the group of GPUs (Hive) interconnected by XGMI links </dd>
<dt>XGMIPeers (RSMI GPU OS devices) </dt>
<dd>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 <em>rsmi2 rsmi3</em>. </dd>
<dt>NVIDIAUUID, NVIDIASerial (NVML GPU OS devices) </dt>
<dd>The UUID and serial number of NVIDIA GPUs. </dd>
<dt>CUDAMultiProcessors, CUDACoresPerMP, </dt>
<dd></dd>
<dt>CUDAGlobalMemorySize, CUDAL2CacheSize, CUDASharedMemorySizePerMP (CUDA OS devices) </dt>
<dd>The number of shared multiprocessors, the number of 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). </dd>
<dt>VectorEngineModel, VectorEngineSerialNumber (VectorEngine OS devices) </dt>
<dd>The model and serial number of a VectorEngine device. </dd>
<dt>VectorEngineCores, VectorEngineMemorySize, VectorEngineLLCSize, </dt>
<dd></dd>
<dt>VectorEngineL2Size, VectorEngineL1dSize, VectorEngineL1iSize (VectorEngine OS devices) </dt>
<dd>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). </dd>
<dt>VectorEngineNUMAPartitioned (VectorEngine OS devices) </dt>
<dd>If this attribute exists, the VectorEngine device is configured in partitioned mode with multiple NUMA nodes. </dd>
<dt>Address, Port (Network interface OS devices) </dt>
<dd>The MAC address and the port number of a software network interface, such as <code>eth4</code> on Linux. </dd>
<dt>NodeGUID, SysImageGUID, Port1State, Port2LID, Port2LMC, Port3GID1 (OpenFabrics OS devices) </dt>
<dd>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. </dd>
<dt>BXIUUID (OpenFabrics BXI OS devices) </dt>
<dd>The UUID of an Atos/Bull BXI HCA. </dd>
</dl>
<h2><a class="anchor" id="attributes_info_otherobjs"></a>
Other Object-specific Information</h2>
<p>These info attributes are attached to objects specified in parentheses.</p>
<dl>
<dt>MemoryTier (NUMA Nodes) </dt>
<dd>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 <a class="el" href="a00375.html">Heterogeneous Memory</a>. </dd>
<dt>CXLDevice (NUMA Nodes or DAX Memory OS devices) </dt>
<dd>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 in reported in CXLDeviceInterleaveWays. </dd>
<dt>CXLDeviceInterleaveWays (NUMA Nodes or DAX Memory OS devices) </dt>
<dd>If multiple CXL devices are interleaved, this attribute shows the number of devices (and the number of bus IDs in the CXLDevice attributes). </dd>
<dt>DAXDevice (NUMA Nodes) </dt>
<dd>The name of the Linux DAX device that was used to expose a non-volatile memory region as a volatile NUMA node. </dd>
<dt>DAXType (NUMA Nodes or DAX OS devices) </dt>
<dd>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). </dd>
<dt>DAXParent (NUMA Nodes or DAX OS devices) </dt>
<dd>A string describing the Linux sysfs hierarchy that exposes the DAX device, for instance containing "hmem1" for specific-purpose memory or "ndbus0" for NVDIMMs. </dd>
<dt></dt>
<dd></dd>
<dt>PCIBusID (GPUMemory NUMA Nodes) </dt>
<dd>The PCI bus ID of the GPU whose memory is exposed in this NUMA node. </dd>
<dt>Inclusive (Caches) </dt>
<dd>The inclusiveness of a cache (1 if inclusive, 0 otherwise). Currently only available on x86 processors. </dd>
<dt>SolarisProcessorGroup (Group) </dt>
<dd>The Solaris kstat processor group name that was used to build this Group object. </dd>
<dt>PCIVendor, PCIDevice (PCI devices and bridges) </dt>
<dd>The vendor and device names of the PCI device. </dd>
<dt>PCISlot (PCI devices or Bridges) </dt>
<dd>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). </dd>
<dt>Vendor, AssetTag, PartNumber, DeviceLocation, BankLocation, FormFactor, Type, Size, Rank (MemoryModule Misc objects) </dt>
<dd>Information about memory modules (DIMMs) extracted from SMBIOS. Size is in KiB. </dd>
</dl>
<h2><a class="anchor" id="attributes_info_user"></a>
User-Given Information</h2>
<p>Here is a non-exhaustive list of user-provided info attributes that have a special meaning: </p><dl>
<dt>lstopoStyle </dt>
<dd>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. </dd>
</dl>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
|