Open MPI logo

Portable Hardware Locality (hwloc) Documentation: v2.9.3

  |   Home   |   Support   |   FAQ   |  
hwloc.h
1/*
2 * Copyright © 2009 CNRS
3 * Copyright © 2009-2022 Inria. All rights reserved.
4 * Copyright © 2009-2012 Université Bordeaux
5 * Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved.
6 * See COPYING in top-level directory.
7 */
8
9/*=====================================================================
10 * PLEASE GO READ THE DOCUMENTATION!
11 * ------------------------------------------------
12 * $tarball_directory/doc/doxygen-doc/
13 * or
14 * https://www.open-mpi.org/projects/hwloc/doc/
15 *=====================================================================
16 *
17 * FAIR WARNING: Do NOT expect to be able to figure out all the
18 * subtleties of hwloc by simply reading function prototypes and
19 * constant descrptions here in this file.
20 *
21 * Hwloc has wonderful documentation in both PDF and HTML formats for
22 * your reading pleasure. The formal documentation explains a LOT of
23 * hwloc-specific concepts, provides definitions, and discusses the
24 * "big picture" for many of the things that you'll find here in this
25 * header file.
26 *
27 * The PDF/HTML documentation was generated via Doxygen; much of what
28 * you'll see in there is also here in this file. BUT THERE IS A LOT
29 * THAT IS IN THE PDF/HTML THAT IS ***NOT*** IN hwloc.h!
30 *
31 * There are entire paragraph-length descriptions, discussions, and
32 * pretty pictures to explain subtle corner cases, provide concrete
33 * examples, etc.
34 *
35 * Please, go read the documentation. :-)
36 *
37 * Moreover there are several examples of hwloc use under doc/examples
38 * in the source tree.
39 *
40 *=====================================================================*/
41
53#ifndef HWLOC_H
54#define HWLOC_H
55
56#include "hwloc/autogen/config.h"
57
58#include <sys/types.h>
59#include <stdio.h>
60#include <string.h>
61#include <limits.h>
62
63/*
64 * Symbol transforms
65 */
66#include "hwloc/rename.h"
67
68/*
69 * Bitmap definitions
70 */
71
72#include "hwloc/bitmap.h"
73
74
75#ifdef __cplusplus
76extern "C" {
77#endif
78
79
115#define HWLOC_API_VERSION 0x00020800
116
123HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
124
126#define HWLOC_COMPONENT_ABI 7
127
164
182
197typedef enum {
198
200#define HWLOC_OBJ_TYPE_MIN HWLOC_OBJ_MACHINE /* Sentinel value */
343 HWLOC_OBJ_TYPE_MAX
345
352
358
378
401HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
402
404#define HWLOC_TYPE_UNORDERED INT_MAX
405
414union hwloc_obj_attr_u;
415
420struct hwloc_obj {
421 /* physical information */
423 char *subtype;
425 unsigned os_index;
430#define HWLOC_UNKNOWN_INDEX (unsigned)-1
431
432 char *name;
437 hwloc_uint64_t total_memory;
442 /* global position */
443 int depth;
458 unsigned logical_index;
465 /* cousins are all objects of the same type (and depth) across the entire topology */
469 /* children of the same parent are siblings, even if they may have different type and depth */
471 unsigned sibling_rank;
476 unsigned arity;
496 unsigned memory_arity;
514 unsigned io_arity;
526 unsigned misc_arity;
535 /* cpusets and nodesets */
603 unsigned infos_count;
605 /* misc */
606 void *userdata;
611 hwloc_uint64_t gp_index;
616};
620typedef struct hwloc_obj * hwloc_obj_t;
621
626 hwloc_uint64_t local_memory;
627 unsigned page_types_len;
634 hwloc_uint64_t size;
635 hwloc_uint64_t count;
638
641 hwloc_uint64_t size;
642 unsigned depth;
643 unsigned linesize;
650 unsigned depth;
652 unsigned kind;
653 unsigned subkind;
654 unsigned char dont_merge;
658#ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
659 unsigned short domain; /* Only 16bits PCI domains are supported by default */
660#else
661 unsigned int domain; /* 32bits PCI domain support break the library ABI, hence it's disabled by default */
662#endif
663 unsigned char bus, dev, func;
664 unsigned short class_id;
666 unsigned char revision;
667 float linkspeed; /* in GB/s */
671 union {
675 union {
676 struct {
677#ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
678 unsigned short domain; /* Only 16bits PCI domains are supported by default */
679#else
680 unsigned int domain; /* 32bits PCI domain support break the library ABI, hence it's disabled by default */
681#endif
686 unsigned depth;
692};
693
699 char *name;
700 char *value;
701};
702
711struct hwloc_topology;
716typedef struct hwloc_topology * hwloc_topology_t;
717
724HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
725
746HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
747
752HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
753
766HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
767
785HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
786
798HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
799
822HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
823
850HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
851
862
883
897static __hwloc_inline int
899
913static __hwloc_inline int
915
924HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
925
931HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
932
939static __hwloc_inline int
940hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
941
948static __hwloc_inline hwloc_obj_t
949hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
950
956HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
957
965static __hwloc_inline hwloc_obj_t
966hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
967
974static __hwloc_inline hwloc_obj_t
976
985static __hwloc_inline hwloc_obj_t
987 hwloc_obj_t prev);
988
1007HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
1008
1026HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
1027 hwloc_obj_t obj,
1028 int verbose);
1029
1041HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
1042 hwloc_obj_t obj, const char * __hwloc_restrict separator,
1043 int verbose);
1044
1068HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
1069 hwloc_obj_type_t *typep,
1070 union hwloc_obj_attr_u *attrp, size_t attrsize);
1071
1093HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
1094 hwloc_obj_type_t *typep,
1095 hwloc_topology_t topology, int *depthp);
1096
1115static __hwloc_inline const char *
1116hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
1117
1134HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
1135
1207typedef enum {
1211
1215
1240
1258
1265HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
1266
1275HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1276
1290HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
1291
1309HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1310
1311#ifdef hwloc_thread_t
1321HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
1322#endif
1323
1324#ifdef hwloc_thread_t
1338HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
1339#endif
1340
1360HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1361
1384HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1385
1465typedef enum {
1474
1485
1495
1504
1511
1520
1534typedef enum {
1540
1545
1553
1559
1572
1584
1601HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1602
1652HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1653
1667HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1668
1713HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1714
1725HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1726
1758HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1759
1782HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
1783
1793HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
1794
1810HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
1811
1826static __hwloc_inline void *
1827hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
1828
1834HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
1835
1877HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
1878
1910HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
1911
1939HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
1940
1968HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
1969
1978
1996HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
1997
2039
2059
2080
2104
2129
2151
2166
2173
2179
2186
2201HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
2202
2214HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
2215
2225HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
2226
2230 unsigned char pu;
2232 unsigned char numa;
2234 unsigned char numa_memory;
2236 unsigned char disallowed_pu;
2238 unsigned char disallowed_numa;
2240 unsigned char cpukind_efficiency;
2241};
2242
2254 unsigned char set_proc_cpubind;
2256 unsigned char get_proc_cpubind;
2262 unsigned char set_thread_cpubind;
2264 unsigned char get_thread_cpubind;
2271};
2272
2284 unsigned char set_proc_membind;
2286 unsigned char get_proc_membind;
2292 unsigned char set_area_membind;
2294 unsigned char get_area_membind;
2296 unsigned char alloc_membind;
2298 unsigned char firsttouch_membind;
2300 unsigned char bind_membind;
2302 unsigned char interleave_membind;
2304 unsigned char nexttouch_membind;
2306 unsigned char migrate_membind;
2309};
2310
2315 unsigned char imported_support;
2316};
2317
2329};
2330
2360HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
2361
2378
2386
2400
2416
2422
2428
2436
2444
2452
2458
2469HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
2470
2479HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
2480
2497
2503
2510
2516
2523
2559HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
2560
2568
2577
2580 HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
2582
2600HWLOC_DECLSPEC int hwloc_topology_allow(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags);
2601
2623HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
2624
2636
2688
2702
2720HWLOC_DECLSPEC int hwloc_topology_refresh(hwloc_topology_t topology);
2721
2726#ifdef __cplusplus
2727} /* extern "C" */
2728#endif
2729
2730
2731/* high-level helpers */
2732#include "hwloc/helper.h"
2733
2734/* inline code of some functions above */
2735#include "hwloc/inlines.h"
2736
2737/* memory attributes */
2738#include "hwloc/memattrs.h"
2739
2740/* kinds of CPU cores */
2741#include "hwloc/cpukinds.h"
2742
2743/* exporting to XML or synthetic */
2744#include "hwloc/export.h"
2745
2746/* distances */
2747#include "hwloc/distances.h"
2748
2749/* topology diffs */
2750#include "hwloc/diff.h"
2751
2752/* deprecated headers */
2753#include "hwloc/deprecated.h"
2754
2755#endif /* HWLOC_H */
unsigned hwloc_get_api_version(void)
Indicate at runtime which hwloc API version was used at build time.
hwloc_const_bitmap_t hwloc_const_cpuset_t
A non-modifiable hwloc_cpuset_t.
Definition: hwloc.h:163
hwloc_const_bitmap_t hwloc_const_nodeset_t
A non-modifiable hwloc_nodeset_t.
Definition: hwloc.h:181
hwloc_bitmap_t hwloc_nodeset_t
A node set is a bitmap whose bits are set according to NUMA memory node physical OS indexes.
Definition: hwloc.h:178
hwloc_bitmap_t hwloc_cpuset_t
A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
Definition: hwloc.h:161
int hwloc_compare_types(hwloc_obj_type_t type1, hwloc_obj_type_t type2)
Compare the depth of two object types.
hwloc_obj_bridge_type_e
Type of one side (upstream or downstream) of an I/O bridge.
Definition: hwloc.h:354
enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
Cache type.
hwloc_obj_osdev_type_e
Type of a OS device.
Definition: hwloc.h:360
hwloc_obj_cache_type_e
Cache type.
Definition: hwloc.h:347
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
Type of a OS device.
enum hwloc_obj_bridge_type_e hwloc_obj_bridge_type_t
Type of one side (upstream or downstream) of an I/O bridge.
hwloc_obj_type_t
Type of topology object.
Definition: hwloc.h:197
@ HWLOC_OBJ_BRIDGE_HOST
Host-side of a bridge, only possible upstream.
Definition: hwloc.h:355
@ HWLOC_OBJ_BRIDGE_PCI
PCI-side of a bridge.
Definition: hwloc.h:356
@ HWLOC_OBJ_OSDEV_COPROC
Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
Definition: hwloc.h:374
@ HWLOC_OBJ_OSDEV_OPENFABRICS
Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, "hfi1_0" Omni-Path int...
Definition: hwloc.h:368
@ HWLOC_OBJ_OSDEV_BLOCK
Operating system block device, or non-volatile memory device. For instance "sda" or "dax2....
Definition: hwloc.h:361
@ HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
Definition: hwloc.h:372
@ HWLOC_OBJ_OSDEV_GPU
Operating system GPU device. For instance ":0.0" for a GL display, "card0" for a Linux DRM device.
Definition: hwloc.h:363
@ HWLOC_OBJ_OSDEV_NETWORK
Operating system network device. For instance the "eth0" interface on Linux.
Definition: hwloc.h:366
@ HWLOC_OBJ_CACHE_UNIFIED
Unified cache.
Definition: hwloc.h:348
@ HWLOC_OBJ_CACHE_INSTRUCTION
Instruction cache (filtered out by default).
Definition: hwloc.h:350
@ HWLOC_OBJ_CACHE_DATA
Data cache.
Definition: hwloc.h:349
@ HWLOC_OBJ_MEMCACHE
Memory-side cache (filtered out by default). A cache in front of a specific NUMA node.
Definition: hwloc.h:326
@ HWLOC_OBJ_L2ICACHE
Level 2 instruction Cache (filtered out by default).
Definition: hwloc.h:241
@ HWLOC_OBJ_L2CACHE
Level 2 Data (or Unified) Cache.
Definition: hwloc.h:235
@ HWLOC_OBJ_MISC
Miscellaneous objects (filtered out by default). Objects without particular meaning,...
Definition: hwloc.h:311
@ HWLOC_OBJ_L3CACHE
Level 3 Data (or Unified) Cache.
Definition: hwloc.h:236
@ HWLOC_OBJ_MACHINE
Machine. A set of processors and memory with cache coherency.
Definition: hwloc.h:203
@ HWLOC_OBJ_OS_DEVICE
Operating system device (filtered out by default).
Definition: hwloc.h:300
@ HWLOC_OBJ_GROUP
Group objects. Objects which do not fit in the above but are detected by hwloc and are useful to take...
Definition: hwloc.h:244
@ HWLOC_OBJ_L4CACHE
Level 4 Data (or Unified) Cache.
Definition: hwloc.h:237
@ HWLOC_OBJ_L1CACHE
Level 1 Data (or Unified) Cache.
Definition: hwloc.h:234
@ HWLOC_OBJ_PCI_DEVICE
PCI device (filtered out by default).
Definition: hwloc.h:290
@ HWLOC_OBJ_L5CACHE
Level 5 Data (or Unified) Cache.
Definition: hwloc.h:238
@ HWLOC_OBJ_BRIDGE
Bridge (filtered out by default). Any bridge (or PCI switch) that connects the host or an I/O bus,...
Definition: hwloc.h:278
@ HWLOC_OBJ_NUMANODE
NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
Definition: hwloc.h:257
@ HWLOC_OBJ_PACKAGE
Physical package. The physical package that usually gets inserted into a socket on the motherboard....
Definition: hwloc.h:212
@ HWLOC_OBJ_PU
Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ...
Definition: hwloc.h:222
@ HWLOC_OBJ_L3ICACHE
Level 3 instruction Cache (filtered out by default).
Definition: hwloc.h:242
@ HWLOC_OBJ_CORE
Core. A computation unit (may be shared by several PUs, aka logical processors).
Definition: hwloc.h:218
@ HWLOC_OBJ_DIE
Die within a physical package. A subpart of the physical package, that contains multiple cores.
Definition: hwloc.h:339
@ HWLOC_OBJ_L1ICACHE
Level 1 instruction Cache (filtered out by default).
Definition: hwloc.h:240
struct hwloc_obj * hwloc_obj_t
Convenience typedef; a pointer to a struct hwloc_obj.
Definition: hwloc.h:620
int hwloc_topology_init(hwloc_topology_t *topologyp)
Allocate a topology context.
int hwloc_topology_abi_check(hwloc_topology_t topology)
Verify that the topology is compatible with the current hwloc library.
int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
Duplicate a topology.
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition: hwloc.h:716
void hwloc_topology_destroy(hwloc_topology_t topology)
Terminate and free a topology context.
int hwloc_topology_load(hwloc_topology_t topology)
Build the actual topology.
void hwloc_topology_check(hwloc_topology_t topology)
Run internal checks on a topology structure.
unsigned hwloc_get_nbobjs_by_depth(hwloc_topology_t topology, int depth)
Returns the width of level at depth depth.
static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
Returns the top-object of the topology-tree.
hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, int depth, unsigned idx)
Returns the topology object at logical index idx from depth depth.
hwloc_obj_type_t hwloc_get_depth_type(hwloc_topology_t topology, int depth)
Returns the type of objects at depth depth.
static hwloc_obj_t hwloc_get_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
Returns the topology object at logical index idx with type type.
static hwloc_obj_t hwloc_get_next_obj_by_type(hwloc_topology_t topology, hwloc_obj_type_t type, hwloc_obj_t prev)
Returns the next object of type type.
static int hwloc_get_nbobjs_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the width of level type type.
static int hwloc_get_type_or_below_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the depth of objects of type type or below.
static int hwloc_get_type_or_above_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the depth of objects of type type or above.
int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the depth of objects of type type.
static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, int depth, hwloc_obj_t prev)
Returns the next object at depth depth.
int hwloc_topology_get_depth(hwloc_topology_t restrict topology)
Get the depth of the hierarchical tree of objects.
int hwloc_get_memory_parents_depth(hwloc_topology_t topology)
Return the depth of parents where memory objects are attached.
hwloc_get_type_depth_e
Definition: hwloc.h:852
@ HWLOC_TYPE_DEPTH_UNKNOWN
No object of given type exists in the topology.
Definition: hwloc.h:853
@ HWLOC_TYPE_DEPTH_NUMANODE
Virtual depth for NUMA nodes.
Definition: hwloc.h:855
@ HWLOC_TYPE_DEPTH_MEMCACHE
Virtual depth for MemCache object.
Definition: hwloc.h:860
@ HWLOC_TYPE_DEPTH_MISC
Virtual depth for Misc object.
Definition: hwloc.h:859
@ HWLOC_TYPE_DEPTH_PCI_DEVICE
Virtual depth for PCI device object level.
Definition: hwloc.h:857
@ HWLOC_TYPE_DEPTH_MULTIPLE
Objects of given type exist at different depth in the topology (only for Groups).
Definition: hwloc.h:854
@ HWLOC_TYPE_DEPTH_BRIDGE
Virtual depth for bridge object level.
Definition: hwloc.h:856
@ HWLOC_TYPE_DEPTH_OS_DEVICE
Virtual depth for software device object level.
Definition: hwloc.h:858
int hwloc_type_sscanf(const char *string, hwloc_obj_type_t *typep, union hwloc_obj_attr_u *attrp, size_t attrsize)
Return an object type and attributes from a type string.
int hwloc_type_sscanf_as_depth(const char *string, hwloc_obj_type_t *typep, hwloc_topology_t topology, int *depthp)
Return an object type and its level depth from a type string.
const char * hwloc_obj_type_string(hwloc_obj_type_t type)
Return a constant stringified object type.
int hwloc_obj_attr_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, const char *restrict separator, int verbose)
Stringify the attributes of a given topology object into a human-readable form.
int hwloc_obj_type_snprintf(char *restrict string, size_t size, hwloc_obj_t obj, int verbose)
Stringify the type of a given topology object into a human-readable form.
static const char * hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
Search the given name in object infos and return the corresponding value.
int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value)
Add the given name and value pair to the given object info attributes.
hwloc_cpubind_flags_t
Process/Thread binding flags.
Definition: hwloc.h:1207
int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags)
Bind a process pid on CPUs given in physical bitmap set.
int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags)
Bind current process or thread on CPUs given in physical bitmap set.
int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
Get the last physical CPU where a process ran.
int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags)
Get the current physical binding of process pid.
int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
Get current process or thread binding.
int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags)
Bind a thread thread on CPUs given in physical bitmap set.
int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags)
Get the current physical binding of thread tid.
int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
Get the last physical CPU where the current process or thread ran.
@ HWLOC_CPUBIND_PROCESS
Bind all threads of the current (possibly) multithreaded process.
Definition: hwloc.h:1210
@ HWLOC_CPUBIND_NOMEMBIND
Avoid any effect on memory binding.
Definition: hwloc.h:1256
@ HWLOC_CPUBIND_STRICT
Request for strict binding from the OS.
Definition: hwloc.h:1239
@ HWLOC_CPUBIND_THREAD
Bind current thread of current process.
Definition: hwloc.h:1214
int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
Set the default memory binding policy of the current process or thread to prefer the NUMA node(s) spe...
int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
Query the default memory binding policy and physical locality of the specified process.
int hwloc_free(hwloc_topology_t topology, void *addr, size_t len)
Free memory that was previously allocated by hwloc_alloc() or hwloc_alloc_membind().
int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags)
Get the NUMA nodes where memory identified by (addr, len ) is physically allocated.
static void * hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
Allocate some memory on NUMA memory nodes specified by set.
void * hwloc_alloc(hwloc_topology_t topology, size_t len)
Allocate some memory.
int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
Query the CPUs near the physical NUMA node(s) and binding policy of the memory identified by (addr,...
hwloc_membind_flags_t
Memory binding flags.
Definition: hwloc.h:1534
int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
Set the default memory binding policy of the specified process to prefer the NUMA node(s) specified b...
hwloc_membind_policy_t
Memory binding policy.
Definition: hwloc.h:1465
void * hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
Allocate some memory on NUMA memory nodes specified by set.
int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t *policy, int flags)
Query the default memory binding policy and physical locality of the current process or thread.
int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags)
Bind the already-allocated memory identified by (addr, len) to the NUMA node(s) specified by set.
@ HWLOC_MEMBIND_STRICT
Definition: hwloc.h:1552
@ HWLOC_MEMBIND_PROCESS
Set policy for all threads of the specified (possibly multithreaded) process. This flag is mutually e...
Definition: hwloc.h:1539
@ HWLOC_MEMBIND_THREAD
Set policy for a specific thread of the current process. This flag is mutually exclusive with HWLOC_M...
Definition: hwloc.h:1544
@ HWLOC_MEMBIND_BYNODESET
Consider the bitmap argument as a nodeset.
Definition: hwloc.h:1582
@ HWLOC_MEMBIND_MIGRATE
Migrate existing allocated memory. If the memory cannot be migrated and the HWLOC_MEMBIND_STRICT flag...
Definition: hwloc.h:1558
@ HWLOC_MEMBIND_NOCPUBIND
Avoid any effect on CPU binding.
Definition: hwloc.h:1571
@ HWLOC_MEMBIND_DEFAULT
Reset the memory allocation policy to the system default. Depending on the operating system,...
Definition: hwloc.h:1473
@ HWLOC_MEMBIND_MIXED
Returned by get_membind() functions when multiple threads or parts of a memory area have differing me...
Definition: hwloc.h:1518
@ HWLOC_MEMBIND_FIRSTTOUCH
Allocate each memory page individually on the local NUMA node of the thread that touches it.
Definition: hwloc.h:1484
@ HWLOC_MEMBIND_BIND
Allocate memory on the specified nodes.
Definition: hwloc.h:1494
@ HWLOC_MEMBIND_INTERLEAVE
Allocate memory on the given nodes in an interleaved / round-robin manner. The precise layout of the ...
Definition: hwloc.h:1503
@ HWLOC_MEMBIND_NEXTTOUCH
For each page bound with this policy, by next time it is touched (and next time only),...
Definition: hwloc.h:1510
int hwloc_topology_set_xmlbuffer(hwloc_topology_t restrict topology, const char *restrict buffer, int size)
Enable XML based topology using a memory buffer (instead of a file, as with hwloc_topology_set_xml())...
int hwloc_topology_set_pid(hwloc_topology_t restrict topology, hwloc_pid_t pid)
Change which process the topology is viewed from.
int hwloc_topology_set_synthetic(hwloc_topology_t restrict topology, const char *restrict description)
Enable synthetic topology.
int hwloc_topology_set_xml(hwloc_topology_t restrict topology, const char *restrict xmlpath)
Enable XML-file based topology.
hwloc_topology_components_flag_e
Flags to be passed to hwloc_topology_set_components()
Definition: hwloc.h:1972
int hwloc_topology_set_components(hwloc_topology_t restrict topology, unsigned long flags, const char *restrict name)
Prevent a discovery component from being used for a topology.
@ HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST
Blacklist the target component from being used.
Definition: hwloc.h:1976
unsigned long hwloc_topology_get_flags(hwloc_topology_t topology)
Get OR'ed flags of a topology.
int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
Set the filtering for all I/O object types.
int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter)
Get the current filtering for the given object type.
void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata)
Set the topology-specific userdata pointer.
int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
Set the filtering for all CPU cache object types.
int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
Set the filtering for all CPU instruction cache object types.
int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
Does the topology context come from this system?
hwloc_type_filter_e
Type filtering flags.
Definition: hwloc.h:2371
int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
Set the filtering for all object types.
int hwloc_topology_set_flags(hwloc_topology_t topology, unsigned long flags)
Set OR'ed flags to non-yet-loaded topology.
const struct hwloc_topology_support * hwloc_topology_get_support(hwloc_topology_t restrict topology)
Retrieve the topology support.
void * hwloc_topology_get_userdata(hwloc_topology_t topology)
Retrieve the topology-specific userdata pointer.
int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter)
Set the filtering for the given object type.
hwloc_topology_flags_e
Flags to be set onto a topology context before load.
Definition: hwloc.h:2016
@ HWLOC_TYPE_FILTER_KEEP_NONE
Ignore all objects of this type.
Definition: hwloc.h:2385
@ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
Only keep likely-important objects of the given type.
Definition: hwloc.h:2414
@ HWLOC_TYPE_FILTER_KEEP_STRUCTURE
Only ignore objects if their entire level does not bring any structure.
Definition: hwloc.h:2399
@ HWLOC_TYPE_FILTER_KEEP_ALL
Keep all objects of this type.
Definition: hwloc.h:2377
@ HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
Detect the whole system, ignore reservations, include disallowed objects.
Definition: hwloc.h:2038
@ HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES
Get the set of allowed resources from the local operating system even if the topology was loaded from...
Definition: hwloc.h:2079
@ HWLOC_TOPOLOGY_FLAG_NO_CPUKINDS
Ignore CPU Kinds.
Definition: hwloc.h:2184
@ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING
Do not consider resources outside of the process memory binding.
Definition: hwloc.h:2150
@ HWLOC_TOPOLOGY_FLAG_NO_DISTANCES
Ignore distances.
Definition: hwloc.h:2172
@ HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
Assume that the selected backend provides the topology for the system on which we are running.
Definition: hwloc.h:2058
@ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING
Do not consider resources outside of the process CPU binding.
Definition: hwloc.h:2128
@ HWLOC_TOPOLOGY_FLAG_NO_MEMATTRS
Ignore memory attributes.
Definition: hwloc.h:2178
@ HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT
Import support from the imported topology.
Definition: hwloc.h:2103
@ HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING
Do not ever modify the process or thread binding during discovery.
Definition: hwloc.h:2165
hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group)
Add more structure to the topology by adding an intermediate Group.
hwloc_allow_flags_e
Flags to be given to hwloc_topology_allow().
Definition: hwloc.h:2562
hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology)
Allocate a Group object to insert later with hwloc_topology_insert_group_object().
int hwloc_topology_refresh(hwloc_topology_t topology)
Refresh internal structures after topology modification.
int hwloc_topology_restrict(hwloc_topology_t restrict topology, hwloc_const_bitmap_t set, unsigned long flags)
Restrict the topology to the given CPU set or nodeset.
hwloc_restrict_flags_e
Flags to be given to hwloc_topology_restrict().
Definition: hwloc.h:2490
int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src)
Setup object cpusets/nodesets by OR'ing another object's sets.
hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name)
Add a MISC object as a leaf of the topology.
int hwloc_topology_allow(hwloc_topology_t restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags)
Change the sets of allowed PUs and NUMA nodes in the topology.
@ HWLOC_ALLOW_FLAG_CUSTOM
Allow a custom set of objects, given to hwloc_topology_allow() as cpuset and/or nodeset parameters.
Definition: hwloc.h:2580
@ HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
Only allow objects that are available to the current process.
Definition: hwloc.h:2576
@ HWLOC_ALLOW_FLAG_ALL
Mark all objects as allowed in the topology.
Definition: hwloc.h:2567
@ HWLOC_RESTRICT_FLAG_ADAPT_MISC
Move Misc objects to ancestors if their parents are removed during restriction. If this flag is not s...
Definition: hwloc.h:2515
@ HWLOC_RESTRICT_FLAG_REMOVE_CPULESS
Remove all objects that became CPU-less. By default, only objects that contain no PU and no memory ar...
Definition: hwloc.h:2496
@ HWLOC_RESTRICT_FLAG_ADAPT_IO
Move I/O objects to ancestors if their parents are removed during restriction. If this flag is not se...
Definition: hwloc.h:2521
@ HWLOC_RESTRICT_FLAG_BYNODESET
Restrict by nodeset instead of CPU set. Only keep objects whose nodeset is included or partially incl...
Definition: hwloc.h:2502
@ HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS
Remove all objects that became Memory-less. By default, only objects that contain no PU and no memory...
Definition: hwloc.h:2509
struct hwloc_bitmap_s * hwloc_bitmap_t
Set of bits represented as an opaque pointer to an internal bitmap.
Definition: bitmap.h:69
const struct hwloc_bitmap_s * hwloc_const_bitmap_t
a non-modifiable hwloc_bitmap_t
Definition: bitmap.h:71
Structure of a topology object.
Definition: hwloc.h:420
struct hwloc_obj ** children
Normal children, children[0 .. arity -1].
Definition: hwloc.h:480
hwloc_nodeset_t nodeset
NUMA nodes covered by this object or containing this object.
Definition: hwloc.h:564
unsigned logical_index
Horizontal index in the whole list of similar objects, hence guaranteed unique across the entire mach...
Definition: hwloc.h:458
int symmetric_subtree
Set if the subtree of normal objects below this object is symmetric, which means all normal children ...
Definition: hwloc.h:485
unsigned misc_arity
Number of Misc children. These children are listed in misc_first_child.
Definition: hwloc.h:526
int depth
Vertical index in the hierarchy.
Definition: hwloc.h:443
struct hwloc_obj * misc_first_child
First Misc child. Misc objects are listed here (misc_arity and misc_first_child) instead of in the no...
Definition: hwloc.h:529
char * subtype
Subtype string to better describe the type field.
Definition: hwloc.h:423
unsigned os_index
OS-provided physical index number. It is not guaranteed unique across the entire machine,...
Definition: hwloc.h:425
hwloc_cpuset_t cpuset
CPUs covered by this object.
Definition: hwloc.h:536
unsigned memory_arity
Number of Memory children. These children are listed in memory_first_child.
Definition: hwloc.h:496
hwloc_uint64_t total_memory
Total memory (in bytes) in NUMA nodes below this object.
Definition: hwloc.h:437
void * userdata
Application-given private data pointer, initialized to NULL, use it as you wish. See hwloc_topology_s...
Definition: hwloc.h:606
unsigned io_arity
Number of I/O children. These children are listed in io_first_child.
Definition: hwloc.h:514
struct hwloc_obj * prev_sibling
Previous object below the same parent (inside the same list of children).
Definition: hwloc.h:473
struct hwloc_obj * next_sibling
Next object below the same parent (inside the same list of children).
Definition: hwloc.h:472
struct hwloc_obj * last_child
Last normal child.
Definition: hwloc.h:482
struct hwloc_obj * next_cousin
Next object of same type and depth.
Definition: hwloc.h:466
struct hwloc_info_s * infos
Array of info attributes (name and value strings).
Definition: hwloc.h:602
struct hwloc_obj * io_first_child
First I/O child. Bridges, PCI and OS devices are listed here (io_arity and io_first_child) instead of...
Definition: hwloc.h:517
hwloc_cpuset_t complete_cpuset
The complete CPU set of processors of this object,.
Definition: hwloc.h:551
hwloc_uint64_t gp_index
Global persistent index. Generated by hwloc, unique across the topology (contrary to os_index) and pe...
Definition: hwloc.h:611
unsigned infos_count
Size of infos array.
Definition: hwloc.h:603
unsigned sibling_rank
Index in parent's children[] array. Or the index in parent's Memory, I/O or Misc children list.
Definition: hwloc.h:471
unsigned arity
Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi...
Definition: hwloc.h:476
char * name
Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
Definition: hwloc.h:432
struct hwloc_obj * memory_first_child
First Memory child. NUMA nodes and Memory-side caches are listed here (memory_arity and memory_first_...
Definition: hwloc.h:499
hwloc_nodeset_t complete_nodeset
The complete NUMA node set of this object,.
Definition: hwloc.h:586
struct hwloc_obj * prev_cousin
Previous object of same type and depth.
Definition: hwloc.h:467
hwloc_obj_type_t type
Type of object.
Definition: hwloc.h:422
union hwloc_obj_attr_u * attr
Object type-specific Attributes, may be NULL if no attribute value was found.
Definition: hwloc.h:439
struct hwloc_obj * parent
Parent, NULL if root (Machine object)
Definition: hwloc.h:470
struct hwloc_obj * first_child
First normal child.
Definition: hwloc.h:481
Object type-specific Attributes.
Definition: hwloc.h:623
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
struct hwloc_obj_attr_u::hwloc_group_attr_s group
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
NUMA node-specific Object Attributes.
Definition: hwloc.h:625
unsigned page_types_len
Size of array page_types.
Definition: hwloc.h:627
hwloc_uint64_t local_memory
Local memory (in bytes)
Definition: hwloc.h:626
struct hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s * page_types
Array of local memory page types, NULL if no local memory and page_types is 0.
Definition: hwloc.h:633
hwloc_uint64_t size
Size of pages.
Definition: hwloc.h:634
hwloc_uint64_t count
Number of pages of this size.
Definition: hwloc.h:635
Cache-specific Object Attributes.
Definition: hwloc.h:640
unsigned depth
Depth of cache (e.g., L1, L2, ...etc.)
Definition: hwloc.h:642
unsigned linesize
Cache-line size in bytes. 0 if unknown.
Definition: hwloc.h:643
hwloc_uint64_t size
Size of cache in bytes.
Definition: hwloc.h:641
int associativity
Ways of associativity, -1 if fully associative, 0 if unknown.
Definition: hwloc.h:644
hwloc_obj_cache_type_t type
Cache type.
Definition: hwloc.h:646
Group-specific Object Attributes.
Definition: hwloc.h:649
unsigned kind
Internally-used kind of group.
Definition: hwloc.h:652
unsigned subkind
Internally-used subkind to distinguish different levels of groups with same kind.
Definition: hwloc.h:653
unsigned depth
Depth of group object. It may change if intermediate Group objects are added.
Definition: hwloc.h:650
unsigned char dont_merge
Flag preventing groups from being automatically merged with identical parent or children.
Definition: hwloc.h:654
PCI Device specific Object Attributes.
Definition: hwloc.h:657
unsigned char revision
Definition: hwloc.h:666
unsigned short device_id
Definition: hwloc.h:665
unsigned char dev
Definition: hwloc.h:663
unsigned short subvendor_id
Definition: hwloc.h:665
float linkspeed
Definition: hwloc.h:667
unsigned char func
Definition: hwloc.h:663
unsigned short domain
Definition: hwloc.h:659
unsigned short vendor_id
Definition: hwloc.h:665
unsigned char bus
Definition: hwloc.h:663
unsigned short subdevice_id
Definition: hwloc.h:665
unsigned short class_id
Definition: hwloc.h:664
Bridge specific Object Attributes.
Definition: hwloc.h:670
hwloc_obj_bridge_type_t upstream_type
Definition: hwloc.h:674
unsigned short domain
Definition: hwloc.h:678
unsigned depth
Definition: hwloc.h:686
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream
struct hwloc_pcidev_attr_s pci
Definition: hwloc.h:672
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@0 upstream
hwloc_obj_bridge_type_t downstream_type
Definition: hwloc.h:685
unsigned char secondary_bus
Definition: hwloc.h:682
unsigned char subordinate_bus
Definition: hwloc.h:682
OS Device specific Object Attributes.
Definition: hwloc.h:689
hwloc_obj_osdev_type_t type
Definition: hwloc.h:690
Object info attribute (name and value strings)
Definition: hwloc.h:698
char * name
Info name.
Definition: hwloc.h:699
char * value
Info value.
Definition: hwloc.h:700
Flags describing actual discovery support for this topology.
Definition: hwloc.h:2228
unsigned char numa
Detecting the number of NUMA nodes is supported.
Definition: hwloc.h:2232
unsigned char disallowed_numa
Detecting and identifying NUMA nodes that are not available to the current process is supported.
Definition: hwloc.h:2238
unsigned char cpukind_efficiency
Detecting the efficiency of CPU kinds is supported, see Kinds of CPU cores.
Definition: hwloc.h:2240
unsigned char pu
Detecting the number of PU objects is supported.
Definition: hwloc.h:2230
unsigned char numa_memory
Detecting the amount of memory in NUMA nodes is supported.
Definition: hwloc.h:2234
unsigned char disallowed_pu
Detecting and identifying PU objects that are not available to the current process is supported.
Definition: hwloc.h:2236
Flags describing actual PU binding support for this topology.
Definition: hwloc.h:2248
unsigned char get_proc_last_cpu_location
Definition: hwloc.h:2268
unsigned char set_thread_cpubind
Definition: hwloc.h:2262
unsigned char set_thisthread_cpubind
Definition: hwloc.h:2258
unsigned char get_thisthread_last_cpu_location
Definition: hwloc.h:2270
unsigned char get_thisproc_cpubind
Definition: hwloc.h:2252
unsigned char get_thisthread_cpubind
Definition: hwloc.h:2260
unsigned char get_thread_cpubind
Definition: hwloc.h:2264
unsigned char set_thisproc_cpubind
Definition: hwloc.h:2250
unsigned char set_proc_cpubind
Definition: hwloc.h:2254
unsigned char get_proc_cpubind
Definition: hwloc.h:2256
unsigned char get_thisproc_last_cpu_location
Definition: hwloc.h:2266
Flags describing actual memory binding support for this topology.
Definition: hwloc.h:2278
unsigned char set_thisthread_membind
Definition: hwloc.h:2288
unsigned char get_area_membind
Definition: hwloc.h:2294
unsigned char firsttouch_membind
Definition: hwloc.h:2298
unsigned char get_area_memlocation
Definition: hwloc.h:2308
unsigned char set_thisproc_membind
Definition: hwloc.h:2280
unsigned char interleave_membind
Definition: hwloc.h:2302
unsigned char get_thisproc_membind
Definition: hwloc.h:2282
unsigned char set_area_membind
Definition: hwloc.h:2292
unsigned char get_thisthread_membind
Definition: hwloc.h:2290
unsigned char set_proc_membind
Definition: hwloc.h:2284
unsigned char get_proc_membind
Definition: hwloc.h:2286
unsigned char migrate_membind
Definition: hwloc.h:2306
unsigned char nexttouch_membind
Definition: hwloc.h:2304
unsigned char alloc_membind
Definition: hwloc.h:2296
unsigned char bind_membind
Definition: hwloc.h:2300
Flags describing miscellaneous features.
Definition: hwloc.h:2313
unsigned char imported_support
Definition: hwloc.h:2315
Set of flags describing actual support for this topology.
Definition: hwloc.h:2324
struct hwloc_topology_misc_support * misc
Definition: hwloc.h:2328
struct hwloc_topology_membind_support * membind
Definition: hwloc.h:2327
struct hwloc_topology_cpubind_support * cpubind
Definition: hwloc.h:2326
struct hwloc_topology_discovery_support * discovery
Definition: hwloc.h:2325