File: a00378.html

package info (click to toggle)
hwloc 2.12.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 23,496 kB
  • sloc: ansic: 61,022; xml: 13,559; sh: 7,352; makefile: 2,150; javascript: 879; cpp: 93; sed: 5
file content (106 lines) | stat: -rw-r--r-- 9,121 bytes parent folder | download | duplicates (4)
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
<!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): Interoperability With Other Software</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">&#160;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&amp;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">Interoperability With Other Software</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Although hwloc offers its own portable interface, it still may have to interoperate with specific or non-portable libraries that manipulate similar kinds of objects. hwloc therefore offers several specific "helpers" to assist converting between those specific interfaces and hwloc.</p>
<p>Some external libraries may be specific to a particular OS; others may not always be available. The hwloc core therefore generally does not explicitly depend on these types of libraries. However, when a custom application uses or otherwise depends on such a library, it may optionally include the corresponding hwloc helper to extend the hwloc interface with dedicated helpers.</p>
<p>Most of these helpers use structures that are specific to these external libraries and only meaningful on the local machine. If so, the helper requires the input topology to match the current machine. Some helpers also require I/O device discovery to be supported and enabled for the current topology.</p>
<dl>
<dt>Linux specific features </dt>
<dd><p class="startdd"><a class="el" href="a00116_source.html">hwloc/linux.h</a> offers Linux-specific helpers that utilize some non-portable features of the Linux system, such as binding threads through their thread ID ("tid") or parsing kernel CPU mask files. See <a class="el" href="a00195.html">Linux-specific helpers</a>. </p>
<p class="enddd"></p>
</dd>
<dt>Windows specific features </dt>
<dd><p class="startdd"><a class="el" href="a00122_source.html">hwloc/windows.h</a> offers Windows-specific helpers to query information about Windows processor groups. See <a class="el" href="a00198.html">Windows-specific helpers</a>. </p>
<p class="enddd"></p>
</dd>
<dt>Linux libnuma </dt>
<dd><p class="startdd"><a class="el" href="a00119_source.html">hwloc/linux-libnuma.h</a> provides conversion helpers between hwloc CPU sets and libnuma-specific types, such as bitmasks. It helps you use libnuma memory-binding functions with hwloc CPU sets. See <a class="el" href="a00197.html">Interoperability with Linux libnuma bitmask</a> and <a class="el" href="a00196.html">Interoperability with Linux libnuma unsigned long masks</a>. </p>
<p class="enddd"></p>
</dd>
<dt>Glibc </dt>
<dd><p class="startdd"><a class="el" href="a00125_source.html">hwloc/glibc-sched.h</a> offers conversion routines between Glibc and hwloc CPU sets in order to use hwloc with functions such as sched_getaffinity() or pthread_attr_setaffinity_np(). See <a class="el" href="a00199.html">Interoperability with glibc sched affinity</a>. </p>
<p class="enddd"></p>
</dd>
<dt>OpenFabrics Verbs </dt>
<dd><p class="startdd"><a class="el" href="a00149_source.html">hwloc/openfabrics-verbs.h</a> helps interoperability with the OpenFabrics Verbs interface. For example, it can return a list of processors near an OpenFabrics device. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00207.html">Interoperability with OpenFabrics</a>. </p>
<p class="enddd"></p>
</dd>
<dt>OpenCL </dt>
<dd><p class="startdd"><a class="el" href="a00128_source.html">hwloc/opencl.h</a> enables interoperability with the OpenCL interface. Only the AMD and NVIDIA implementations currently offer locality information. It may return the list of processors near a GPU given as a <code>cl_device_id</code>. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00200.html">Interoperability with OpenCL</a>. </p>
<p class="enddd"></p>
</dd>
<dt>oneAPI Level Zero </dt>
<dd><p class="startdd"><a class="el" href="a00143_source.html">hwloc/levelzero.h</a> enables interoperability with the oneAPI Level Zero interface. It may return the list of processors near an accelerator or GPU. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00205.html">Interoperability with the oneAPI Level Zero interface.</a>. </p>
<p class="enddd"></p>
</dd>
<dt>AMD ROCm SMI Library (RSMI) </dt>
<dd><p class="startdd"><a class="el" href="a00140_source.html">hwloc/rsmi.h</a> enables interoperability with the AMD ROCm SMI interface. It may return the list of processors near an AMD GPU. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00204.html">Interoperability with the ROCm SMI Management Library</a>. </p>
<p class="enddd"></p>
</dd>
<dt>NVIDIA CUDA </dt>
<dd><p class="startdd"><a class="el" href="a00131_source.html">hwloc/cuda.h</a> and <a class="el" href="a00134_source.html">hwloc/cudart.h</a> enable interoperability with NVIDIA CUDA Driver and Runtime interfaces. For instance, it may return the list of processors near NVIDIA GPUs. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00201.html">Interoperability with the CUDA Driver API</a> and <a class="el" href="a00202.html">Interoperability with the CUDA Runtime API</a>. </p>
<p class="enddd"></p>
</dd>
<dt>NVIDIA Management Library (NVML) </dt>
<dd><p class="startdd"><a class="el" href="a00137_source.html">hwloc/nvml.h</a> enables interoperability with the NVIDIA NVML interface. It may return the list of processors near a NVIDIA GPU given as a <code>nvmlDevice_t</code>. It may also return the corresponding OS device hwloc object for further information (if I/O device discovery is enabled). See <a class="el" href="a00203.html">Interoperability with the NVIDIA Management Library</a>. </p>
<p class="enddd"></p>
</dd>
<dt>NVIDIA displays </dt>
<dd><p class="startdd"><a class="el" href="a00146_source.html">hwloc/gl.h</a> enables interoperability with NVIDIA displays using the NV-CONTROL X extension (NVCtrl library). If I/O device discovery is enabled, it may return the OS device hwloc object that corresponds to a display given as a name such as <em>:0.0</em> or given as a port/device pair (server/screen). See <a class="el" href="a00206.html">Interoperability with OpenGL displays</a>. </p>
<p class="enddd"></p>
</dd>
<dt>Taskset command-line tool </dt>
<dd><p class="startdd">The taskset command-line tool is widely used for binding processes. It manipulates CPU set strings in a format that is slightly different from hwloc's one (it does not divide the string in fixed-size subsets and separates them with commas). To ease interoperability, hwloc offers routines to convert hwloc CPU sets from/to taskset-specific string format. See for instance <a class="el" href="a00185.html#ga5beb68a987fe48e5c5edef06ab260e14" title="Stringify a bitmap in the taskset-specific format.">hwloc_bitmap_taskset_snprintf()</a> in <a class="el" href="a00185.html">The bitmap API</a>.</p>
<p class="interdd">Most hwloc command-line tools also support the option <code>--cpuset-output-format taskset</code> to manipulate taskset-specific strings. </p>
<p class="enddd"></p>
</dd>
</dl>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<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>