Hardware Locality (hwloc): hwloc.h Source File

Hardware Locality (hwloc) 2.14.0rc1

hwloc.h
1/*
2 * SPDX-License-Identifier: BSD-3-Clause
3 * Copyright © 2009 CNRS
4 * Copyright © 2009-2025 Inria. All rights reserved.
5 * Copyright © 2009-2012 Université Bordeaux
6 * Copyright © 2009-2020 Cisco Systems, Inc. All rights reserved.
7 * See COPYING in top-level directory.
8 */
9
10/*=====================================================================
11 * PLEASE GO READ THE DOCUMENTATION!
12 * ------------------------------------------------
13 * $tarball_directory/doc/doxygen-doc/
14 * or
15 * https://www.open-mpi.org/projects/hwloc/doc/
16 *=====================================================================
17 *
18 * FAIR WARNING: Do NOT expect to be able to figure out all the
19 * subtleties of hwloc by simply reading function prototypes and
20 * constant descrptions here in this file.
21 *
22 * Hwloc has wonderful documentation in both PDF and HTML formats for
23 * your reading pleasure. The formal documentation explains a LOT of
24 * hwloc-specific concepts, provides definitions, and discusses the
25 * "big picture" for many of the things that you'll find here in this
26 * header file.
27 *
28 * The PDF/HTML documentation was generated via Doxygen; much of what
29 * you'll see in there is also here in this file. BUT THERE IS A LOT
30 * THAT IS IN THE PDF/HTML THAT IS ***NOT*** IN hwloc.h!
31 *
32 * There are entire paragraph-length descriptions, discussions, and
33 * pretty pictures to explain subtle corner cases, provide concrete
34 * examples, etc.
35 *
36 * Please, go read the documentation. :-)
37 *
38 * Moreover there are several examples of hwloc use under doc/examples
39 * in the source tree.
40 *
41 *=====================================================================*/
42
55
56#ifndef HWLOC_H
57#define HWLOC_H
58
59#include "hwloc/autogen/config.h"
60
61#include <sys/types.h>
62#include <stdio.h>
63#include <string.h>
64#include <limits.h>
65
66/*
67 * Symbol transforms
68 */
69#include "hwloc/rename.h"
70
71/*
72 * Bitmap definitions
73 */
74
75#include "hwloc/bitmap.h"
76
77
78#ifdef __cplusplus
79extern "C" {
80#endif
81
82
100
101
105
118#define HWLOC_API_VERSION 0x00020c00
119
126HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
127
129#define HWLOC_COMPONENT_ABI 7
130
132
133
134
154
165 typedef hwloc_bitmap_t hwloc_cpuset_t;
167 typedef hwloc_const_bitmap_t hwloc_const_cpuset_t;
168
183 typedef hwloc_bitmap_t hwloc_nodeset_t;
186 typedef hwloc_const_bitmap_t hwloc_const_nodeset_t;
187
189
190
191
195
202 typedef enum {
203
205#define HWLOC_OBJ_TYPE_MIN HWLOC_OBJ_MACHINE /* Sentinel value */
207
208 HWLOC_OBJ_MACHINE,
216
217 HWLOC_OBJ_PACKAGE,
223 HWLOC_OBJ_CORE,
227 HWLOC_OBJ_PU,
238
239 HWLOC_OBJ_L1CACHE,
240 HWLOC_OBJ_L2CACHE,
241 HWLOC_OBJ_L3CACHE,
242 HWLOC_OBJ_L4CACHE,
243 HWLOC_OBJ_L5CACHE,
244
245 HWLOC_OBJ_L1ICACHE,
246 HWLOC_OBJ_L2ICACHE,
247 HWLOC_OBJ_L3ICACHE,
248
249 HWLOC_OBJ_GROUP,
261
262 HWLOC_OBJ_NUMANODE,
287
288 HWLOC_OBJ_BRIDGE,
300 HWLOC_OBJ_PCI_DEVICE,
310 HWLOC_OBJ_OS_DEVICE,
320
321 HWLOC_OBJ_MISC,
335
336 HWLOC_OBJ_MEMCACHE,
348
349 HWLOC_OBJ_DIE,
359
360 HWLOC_OBJ_TYPE_MAX
361} hwloc_obj_type_t;
362
364 typedef enum hwloc_obj_cache_type_e {
365 HWLOC_OBJ_CACHE_UNIFIED,
366 HWLOC_OBJ_CACHE_DATA,
367 HWLOC_OBJ_CACHE_INSTRUCTION
368} hwloc_obj_cache_type_t;
369
371 typedef enum hwloc_obj_bridge_type_e {
372 HWLOC_OBJ_BRIDGE_HOST,
373 HWLOC_OBJ_BRIDGE_PCI
374} hwloc_obj_bridge_type_t;
375
377 typedef enum hwloc_obj_osdev_type_e {
378 HWLOC_OBJ_OSDEV_BLOCK,
380 HWLOC_OBJ_OSDEV_GPU,
383 HWLOC_OBJ_OSDEV_NETWORK,
385 HWLOC_OBJ_OSDEV_OPENFABRICS,
389 HWLOC_OBJ_OSDEV_DMA,
391 HWLOC_OBJ_OSDEV_COPROC
394} hwloc_obj_osdev_type_t;
395
418HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
419
421#define HWLOC_TYPE_UNORDERED INT_MAX
422
424
425
426
430
431union hwloc_obj_attr_u;
432
437 struct hwloc_obj {
438 /* physical information */
439 hwloc_obj_type_t type;
440 char *subtype;
441
442 unsigned os_index;
447#define HWLOC_UNKNOWN_INDEX (unsigned)-1
448
449 char *name;
453
454 hwloc_uint64_t total_memory;
455
456 union hwloc_obj_attr_u *attr;
458
459 /* global position */
460 int depth;
475 unsigned logical_index;
481
482 /* cousins are all objects of the same type (and depth) across the entire topology */
483 struct hwloc_obj *next_cousin;
484 struct hwloc_obj *prev_cousin;
485
486 /* children of the same parent are siblings, even if they may have different type and depth */
487 struct hwloc_obj *parent;
488 unsigned sibling_rank;
489 struct hwloc_obj *next_sibling;
490 struct hwloc_obj *prev_sibling;
493 unsigned arity;
497 struct hwloc_obj **children;
498 struct hwloc_obj *first_child;
499 struct hwloc_obj *last_child;
501
502 int symmetric_subtree;
510
513 unsigned memory_arity;
516 struct hwloc_obj *memory_first_child;
528
531 unsigned io_arity;
534 struct hwloc_obj *io_first_child;
540
543 unsigned misc_arity;
546 struct hwloc_obj *misc_first_child;
551
552 /* cpusets and nodesets */
553 hwloc_cpuset_t cpuset;
568 hwloc_cpuset_t complete_cpuset;
580
581 hwloc_nodeset_t nodeset;
603 hwloc_nodeset_t complete_nodeset;
618
619 struct hwloc_info_s *infos;
620 unsigned infos_count;
621
622 /* misc */
623 void *userdata;
627
628 hwloc_uint64_t gp_index;
633};
634
637 typedef struct hwloc_obj * hwloc_obj_t;
638
640 union hwloc_obj_attr_u {
642 struct hwloc_numanode_attr_s {
643 hwloc_uint64_t local_memory;
644 unsigned page_types_len;
650 struct hwloc_memory_page_type_s {
651 hwloc_uint64_t size;
652 hwloc_uint64_t count;
653 } * page_types;
654 } numanode;
655
657 struct hwloc_cache_attr_s {
658 hwloc_uint64_t size;
659 unsigned depth;
660 unsigned linesize;
661 int associativity;
663 hwloc_obj_cache_type_t type;
664 } cache;
665
666 struct hwloc_group_attr_s {
667 unsigned depth;
669 unsigned kind;
670 unsigned subkind;
671 unsigned char dont_merge;
672 } group;
673
674 struct hwloc_pcidev_attr_s {
675#ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
676 unsigned short domain;
678#else
679 unsigned int domain;
681#endif
682 unsigned char bus;
683 unsigned char dev;
684 unsigned char func;
685 unsigned short class_id;
686 unsigned short vendor_id;
687 unsigned short device_id;
688 unsigned short subvendor_id;
689 unsigned short subdevice_id;
690 unsigned char revision;
691 float linkspeed;
697 } pcidev;
698
699 struct hwloc_bridge_attr_s {
700 union {
701 struct hwloc_pcidev_attr_s pci;
702 } upstream;
703 hwloc_obj_bridge_type_t upstream_type;
704 union {
705 struct {
706#ifndef HWLOC_HAVE_32BITS_PCI_DOMAIN
707 unsigned short domain;
709#else
710 unsigned int domain;
712#endif
713 unsigned char secondary_bus;
714 unsigned char subordinate_bus;
715 } pci;
716 } downstream;
717 hwloc_obj_bridge_type_t downstream_type;
718 unsigned depth;
719 } bridge;
720
721 struct hwloc_osdev_attr_s {
722 hwloc_obj_osdev_type_t type;
723 } osdev;
724};
725
730 struct hwloc_info_s {
731 char *name;
732 char *value;
733};
734
736
737
738
742
743struct hwloc_topology;
748 typedef struct hwloc_topology * hwloc_topology_t;
749
756HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
757
778HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
779
784HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
785
798HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
799
817HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
818
830HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
831
833
834
835
844
854HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
855
882HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
883
884 enum hwloc_get_type_depth_e {
885 HWLOC_TYPE_DEPTH_UNKNOWN = -1,
886 HWLOC_TYPE_DEPTH_MULTIPLE = -2,
887 HWLOC_TYPE_DEPTH_NUMANODE = -3,
888 HWLOC_TYPE_DEPTH_BRIDGE = -4,
889 HWLOC_TYPE_DEPTH_PCI_DEVICE = -5,
890 HWLOC_TYPE_DEPTH_OS_DEVICE = -6,
891 HWLOC_TYPE_DEPTH_MISC = -7,
892 HWLOC_TYPE_DEPTH_MEMCACHE = -8
893};
894
914HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
915
929static __hwloc_inline int
930hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
931
945static __hwloc_inline int
946hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
947
956HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
957
963HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
964
971static __hwloc_inline int
972hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
973
980static __hwloc_inline hwloc_obj_t
981hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
982
988HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
989
997static __hwloc_inline hwloc_obj_t
998hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
999
1006static __hwloc_inline hwloc_obj_t
1007hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev);
1008
1017static __hwloc_inline hwloc_obj_t
1018hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type,
1019 hwloc_obj_t prev);
1020
1022
1023
1024
1028
1039HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
1040
1058HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
1059 hwloc_obj_t obj,
1060 int verbose);
1061
1073HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
1074 hwloc_obj_t obj, const char * __hwloc_restrict separator,
1075 int verbose);
1076
1100HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
1101 hwloc_obj_type_t *typep,
1102 union hwloc_obj_attr_u *attrp, size_t attrsize);
1103
1125HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
1126 hwloc_obj_type_t *typep,
1127 hwloc_topology_t topology, int *depthp);
1128
1130
1131
1132
1137
1147static __hwloc_inline const char *
1148hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
1149
1166HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
1167
1182HWLOC_DECLSPEC int hwloc_obj_set_subtype(hwloc_topology_t topology, hwloc_obj_t obj, const char *subtype);
1183
1185
1186
1187
1242
1255 typedef enum {
1258 HWLOC_CPUBIND_PROCESS = (1<<0),
1259
1262 HWLOC_CPUBIND_THREAD = (1<<1),
1263
1287 HWLOC_CPUBIND_STRICT = (1<<2),
1288
1304 HWLOC_CPUBIND_NOMEMBIND = (1<<3)
1305} hwloc_cpubind_flags_t;
1306
1313HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
1314
1323HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1324
1338HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
1339
1357HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1358
1359#ifdef hwloc_thread_t
1369HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
1370#endif
1371
1372#ifdef hwloc_thread_t
1386HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
1387#endif
1388
1408HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1409
1432HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1433
1435
1436
1437
1501
1513 typedef enum {
1521 HWLOC_MEMBIND_DEFAULT = 0,
1522
1532 HWLOC_MEMBIND_FIRSTTOUCH = 1,
1533
1542 HWLOC_MEMBIND_BIND = 2,
1543
1551 HWLOC_MEMBIND_INTERLEAVE = 3,
1552
1561 HWLOC_MEMBIND_WEIGHTED_INTERLEAVE = 5,
1562
1568 HWLOC_MEMBIND_NEXTTOUCH = 4,
1569
1576 HWLOC_MEMBIND_MIXED = -1
1577} hwloc_membind_policy_t;
1578
1592 typedef enum {
1597 HWLOC_MEMBIND_PROCESS = (1<<0),
1598
1602 HWLOC_MEMBIND_THREAD = (1<<1),
1603
1610 HWLOC_MEMBIND_STRICT = (1<<2),
1611
1616 HWLOC_MEMBIND_MIGRATE = (1<<3),
1617
1629 HWLOC_MEMBIND_NOCPUBIND = (1<<4),
1630
1640 HWLOC_MEMBIND_BYNODESET = (1<<5)
1641} hwloc_membind_flags_t;
1642
1659HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1660
1710HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1711
1725HWLOC_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);
1726
1771HWLOC_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);
1772
1783HWLOC_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);
1784
1816HWLOC_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);
1817
1840HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
1841
1851HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
1852
1868HWLOC_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;
1869
1884static __hwloc_inline void *
1885hwloc_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;
1886
1892HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
1893
1895
1896
1897
1918
1939HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
1940
1972HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
1973
2005HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
2006
2039HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
2040
2043 enum hwloc_topology_components_flag_e {
2047 HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST = (1UL<<0)
2048};
2049
2067HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
2068
2070
2071
2072
2081
2087 enum hwloc_topology_flags_e {
2109 HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED = (1UL<<0),
2110
2129 HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM = (1UL<<1),
2130
2150 HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES = (1UL<<2),
2151
2174 HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT = (1UL<<3),
2175
2199 HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING = (1UL<<4),
2200
2221 HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING = (1UL<<5),
2222
2236 HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING = (1UL<<6),
2237
2243 HWLOC_TOPOLOGY_FLAG_NO_DISTANCES = (1UL<<7),
2244
2250 HWLOC_TOPOLOGY_FLAG_NO_MEMATTRS = (1UL<<8),
2251
2256 HWLOC_TOPOLOGY_FLAG_NO_CPUKINDS = (1UL<<9)
2257};
2258
2273HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
2274
2286HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
2287
2297HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
2298
2300 struct hwloc_topology_discovery_support {
2302 unsigned char pu;
2304 unsigned char numa;
2306 unsigned char numa_memory;
2308 unsigned char disallowed_pu;
2310 unsigned char disallowed_numa;
2312 unsigned char cpukind_efficiency;
2313};
2314
2320 struct hwloc_topology_cpubind_support {
2322 unsigned char set_thisproc_cpubind;
2324 unsigned char get_thisproc_cpubind;
2326 unsigned char set_proc_cpubind;
2328 unsigned char get_proc_cpubind;
2330 unsigned char set_thisthread_cpubind;
2332 unsigned char get_thisthread_cpubind;
2334 unsigned char set_thread_cpubind;
2336 unsigned char get_thread_cpubind;
2338 unsigned char get_thisproc_last_cpu_location;
2340 unsigned char get_proc_last_cpu_location;
2342 unsigned char get_thisthread_last_cpu_location;
2343};
2344
2350 struct hwloc_topology_membind_support {
2352 unsigned char set_thisproc_membind;
2354 unsigned char get_thisproc_membind;
2356 unsigned char set_proc_membind;
2358 unsigned char get_proc_membind;
2360 unsigned char set_thisthread_membind;
2362 unsigned char get_thisthread_membind;
2364 unsigned char set_area_membind;
2366 unsigned char get_area_membind;
2368 unsigned char alloc_membind;
2370 unsigned char firsttouch_membind;
2372 unsigned char bind_membind;
2374 unsigned char interleave_membind;
2376 unsigned char nexttouch_membind;
2378 unsigned char migrate_membind;
2380 unsigned char get_area_memlocation;
2382 unsigned char weighted_interleave_membind;
2383};
2384
2387 struct hwloc_topology_misc_support {
2389 unsigned char imported_support;
2390};
2391
2398 struct hwloc_topology_support {
2399 struct hwloc_topology_discovery_support *discovery;
2400 struct hwloc_topology_cpubind_support *cpubind;
2401 struct hwloc_topology_membind_support *membind;
2402 struct hwloc_topology_misc_support *misc;
2403};
2404
2434HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
2435
2445 enum hwloc_type_filter_e {
2451 HWLOC_TYPE_FILTER_KEEP_ALL = 0,
2452
2459 HWLOC_TYPE_FILTER_KEEP_NONE = 1,
2460
2475 HWLOC_TYPE_FILTER_KEEP_STRUCTURE = 2,
2476
2490 HWLOC_TYPE_FILTER_KEEP_IMPORTANT = 3
2491};
2492
2497HWLOC_DECLSPEC int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter);
2498
2503HWLOC_DECLSPEC int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter);
2504
2511HWLOC_DECLSPEC int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2512
2519HWLOC_DECLSPEC int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2520
2527HWLOC_DECLSPEC int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2528
2533HWLOC_DECLSPEC int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2534
2545HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
2546
2555HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
2556
2558
2559
2560
2564
2566 enum hwloc_restrict_flags_e {
2572 HWLOC_RESTRICT_FLAG_REMOVE_CPULESS = (1UL<<0),
2573
2578 HWLOC_RESTRICT_FLAG_BYNODESET = (1UL<<3),
2579
2585 HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS = (1UL<<4),
2586
2591 HWLOC_RESTRICT_FLAG_ADAPT_MISC = (1UL<<1),
2592
2597 HWLOC_RESTRICT_FLAG_ADAPT_IO = (1UL<<2)
2598};
2599
2635HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
2636
2638 enum hwloc_allow_flags_e {
2643 HWLOC_ALLOW_FLAG_ALL = (1UL<<0),
2644
2652 HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS = (1UL<<1),
2653
2656 HWLOC_ALLOW_FLAG_CUSTOM = (1UL<<2)
2657};
2658
2676HWLOC_DECLSPEC int hwloc_topology_allow(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags);
2677
2702HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
2703
2721HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_alloc_group_object(hwloc_topology_t topology);
2722
2734HWLOC_DECLSPEC int hwloc_topology_free_group_object(hwloc_topology_t topology, hwloc_obj_t group);
2735
2812HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_group_object(hwloc_topology_t topology, hwloc_obj_t group);
2813
2826HWLOC_DECLSPEC int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src);
2827
2845HWLOC_DECLSPEC int hwloc_topology_refresh(hwloc_topology_t topology);
2846
2848
2849
2850
2851#ifdef __cplusplus
2852} /* extern "C" */
2853#endif
2854
2855
2856/* high-level helpers */
2857#include "hwloc/helper.h"
2858
2859/* inline code of some functions above */
2860#include "hwloc/inlines.h"
2861
2862/* memory attributes */
2863#include "hwloc/memattrs.h"
2864
2865/* kinds of CPU cores */
2866#include "hwloc/cpukinds.h"
2867
2868/* exporting to XML or synthetic */
2869#include "hwloc/export.h"
2870
2871/* distances */
2872#include "hwloc/distances.h"
2873
2874/* topology diffs */
2875#include "hwloc/diff.h"
2876
2877/* deprecated headers */
2878#include "hwloc/deprecated.h"
2879
2880#endif /* HWLOC_H */
hwloc_get_api_version
unsigned hwloc_get_api_version(void)
Indicate at runtime which hwloc API version was used at build time.
hwloc_const_cpuset_t
hwloc_const_bitmap_t hwloc_const_cpuset_t
A non-modifiable hwloc_cpuset_t.
Definition hwloc.h:167
hwloc_const_nodeset_t
hwloc_const_bitmap_t hwloc_const_nodeset_t
A non-modifiable hwloc_nodeset_t.
Definition hwloc.h:186
hwloc_nodeset_t
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:183
hwloc_cpuset_t
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:165
hwloc_compare_types
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
hwloc_obj_bridge_type_e
Type of one side (upstream or downstream) of an I/O bridge.
Definition hwloc.h:371
hwloc_obj_cache_type_t
enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
Cache type.
hwloc_obj_osdev_type_e
hwloc_obj_osdev_type_e
Type of a OS device.
Definition hwloc.h:377
hwloc_obj_cache_type_e
hwloc_obj_cache_type_e
Cache type.
Definition hwloc.h:364
hwloc_obj_osdev_type_t
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
Type of a OS device.
hwloc_obj_bridge_type_t
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
hwloc_obj_type_t
Type of topology object.
Definition hwloc.h:202
HWLOC_OBJ_BRIDGE_HOST
@ HWLOC_OBJ_BRIDGE_HOST
Host-side of a bridge, only possible upstream.
Definition hwloc.h:372
HWLOC_OBJ_BRIDGE_PCI
@ HWLOC_OBJ_BRIDGE_PCI
PCI-side of a bridge.
Definition hwloc.h:373
HWLOC_OBJ_OSDEV_COPROC
@ HWLOC_OBJ_OSDEV_COPROC
Operating system co-processor device. For instance "opencl0d0" for a OpenCL device,...
Definition hwloc.h:391
HWLOC_OBJ_OSDEV_OPENFABRICS
@ HWLOC_OBJ_OSDEV_OPENFABRICS
Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, "hfi1_0" Omni-Path int...
Definition hwloc.h:385
HWLOC_OBJ_OSDEV_BLOCK
@ HWLOC_OBJ_OSDEV_BLOCK
Operating system block device, or non-volatile memory device. For instance "sda" or "dax2....
Definition hwloc.h:378
HWLOC_OBJ_OSDEV_DMA
@ HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
Definition hwloc.h:389
HWLOC_OBJ_OSDEV_GPU
@ 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:380
HWLOC_OBJ_OSDEV_NETWORK
@ HWLOC_OBJ_OSDEV_NETWORK
Operating system network device. For instance the "eth0" interface on Linux.
Definition hwloc.h:383
HWLOC_OBJ_CACHE_UNIFIED
@ HWLOC_OBJ_CACHE_UNIFIED
Unified cache.
Definition hwloc.h:365
HWLOC_OBJ_CACHE_INSTRUCTION
@ HWLOC_OBJ_CACHE_INSTRUCTION
Instruction cache (filtered out by default).
Definition hwloc.h:367
HWLOC_OBJ_CACHE_DATA
@ HWLOC_OBJ_CACHE_DATA
Data cache.
Definition hwloc.h:366
HWLOC_OBJ_MEMCACHE
@ HWLOC_OBJ_MEMCACHE
Memory-side cache (filtered out by default). A cache in front of a specific NUMA node.
Definition hwloc.h:336
HWLOC_OBJ_L2ICACHE
@ HWLOC_OBJ_L2ICACHE
Level 2 instruction Cache (filtered out by default).
Definition hwloc.h:246
HWLOC_OBJ_L2CACHE
@ HWLOC_OBJ_L2CACHE
Level 2 Data (or Unified) Cache.
Definition hwloc.h:240
HWLOC_OBJ_MISC
@ HWLOC_OBJ_MISC
Miscellaneous objects (filtered out by default). Objects without particular meaning,...
Definition hwloc.h:321
HWLOC_OBJ_L3CACHE
@ HWLOC_OBJ_L3CACHE
Level 3 Data (or Unified) Cache.
Definition hwloc.h:241
HWLOC_OBJ_MACHINE
@ HWLOC_OBJ_MACHINE
Machine. A set of processors and memory with cache coherency.
Definition hwloc.h:208
HWLOC_OBJ_OS_DEVICE
@ HWLOC_OBJ_OS_DEVICE
Operating system device (filtered out by default).
Definition hwloc.h:310
HWLOC_OBJ_GROUP
@ 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:249
HWLOC_OBJ_L4CACHE
@ HWLOC_OBJ_L4CACHE
Level 4 Data (or Unified) Cache.
Definition hwloc.h:242
HWLOC_OBJ_L1CACHE
@ HWLOC_OBJ_L1CACHE
Level 1 Data (or Unified) Cache.
Definition hwloc.h:239
HWLOC_OBJ_PCI_DEVICE
@ HWLOC_OBJ_PCI_DEVICE
PCI device (filtered out by default).
Definition hwloc.h:300
HWLOC_OBJ_L5CACHE
@ HWLOC_OBJ_L5CACHE
Level 5 Data (or Unified) Cache.
Definition hwloc.h:243
HWLOC_OBJ_BRIDGE
@ 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:288
HWLOC_OBJ_NUMANODE
@ HWLOC_OBJ_NUMANODE
NUMA node. An object that contains memory that is directly and byte-accessible to the host processors...
Definition hwloc.h:262
HWLOC_OBJ_PACKAGE
@ HWLOC_OBJ_PACKAGE
Physical package. The physical package that usually gets inserted into a socket on the motherboard....
Definition hwloc.h:217
HWLOC_OBJ_PU
@ HWLOC_OBJ_PU
Processing Unit, or (Logical) Processor. An execution unit (may share a core with some other logical ...
Definition hwloc.h:227
HWLOC_OBJ_L3ICACHE
@ HWLOC_OBJ_L3ICACHE
Level 3 instruction Cache (filtered out by default).
Definition hwloc.h:247
HWLOC_OBJ_CORE
@ HWLOC_OBJ_CORE
Core. A computation unit (may be shared by several PUs, aka logical processors).
Definition hwloc.h:223
HWLOC_OBJ_DIE
@ HWLOC_OBJ_DIE
Die within a physical package. A subpart of the physical package, that contains multiple cores.
Definition hwloc.h:349
HWLOC_OBJ_L1ICACHE
@ HWLOC_OBJ_L1ICACHE
Level 1 instruction Cache (filtered out by default).
Definition hwloc.h:245
hwloc_obj_t
struct hwloc_obj * hwloc_obj_t
Convenience typedef; a pointer to a struct hwloc_obj.
Definition hwloc.h:637
hwloc_topology_init
int hwloc_topology_init(hwloc_topology_t *topologyp)
Allocate a topology context.
hwloc_topology_abi_check
int hwloc_topology_abi_check(hwloc_topology_t topology)
Verify that the topology is compatible with the current hwloc library.
hwloc_topology_dup
int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
Duplicate a topology.
hwloc_topology_t
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition hwloc.h:748
hwloc_topology_destroy
void hwloc_topology_destroy(hwloc_topology_t topology)
Terminate and free a topology context.
hwloc_topology_load
int hwloc_topology_load(hwloc_topology_t topology)
Build the actual topology.
hwloc_topology_check
void hwloc_topology_check(hwloc_topology_t topology)
Run internal checks on a topology structure.
hwloc_get_type_or_above_depth
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.
hwloc_get_obj_by_type
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.
hwloc_get_nbobjs_by_depth
unsigned hwloc_get_nbobjs_by_depth(hwloc_topology_t topology, int depth)
Returns the width of level at depth depth.
hwloc_get_obj_by_depth
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_get_depth_type
hwloc_obj_type_t hwloc_get_depth_type(hwloc_topology_t topology, int depth)
Returns the type of objects at depth depth.
hwloc_get_nbobjs_by_type
int hwloc_get_nbobjs_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the width of level type type.
hwloc_get_next_obj_by_depth
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.
hwloc_get_next_obj_by_type
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.
hwloc_get_type_depth
int hwloc_get_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the depth of objects of type type.
hwloc_get_type_or_below_depth
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.
hwloc_topology_get_depth
int hwloc_topology_get_depth(hwloc_topology_t restrict topology)
Get the depth of the hierarchical tree of objects.
hwloc_get_root_obj
hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
Returns the top-object of the topology-tree.
hwloc_get_memory_parents_depth
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
hwloc_get_type_depth_e
Definition hwloc.h:884
HWLOC_TYPE_DEPTH_UNKNOWN
@ HWLOC_TYPE_DEPTH_UNKNOWN
No object of given type exists in the topology.
Definition hwloc.h:885
HWLOC_TYPE_DEPTH_NUMANODE
@ HWLOC_TYPE_DEPTH_NUMANODE
Virtual depth for NUMA nodes.
Definition hwloc.h:887
HWLOC_TYPE_DEPTH_MEMCACHE
@ HWLOC_TYPE_DEPTH_MEMCACHE
Virtual depth for MemCache object.
Definition hwloc.h:892
HWLOC_TYPE_DEPTH_MISC
@ HWLOC_TYPE_DEPTH_MISC
Virtual depth for Misc object.
Definition hwloc.h:891
HWLOC_TYPE_DEPTH_PCI_DEVICE
@ HWLOC_TYPE_DEPTH_PCI_DEVICE
Virtual depth for PCI device object level.
Definition hwloc.h:889
HWLOC_TYPE_DEPTH_MULTIPLE
@ HWLOC_TYPE_DEPTH_MULTIPLE
Objects of given type exist at different depth in the topology (only for Groups).
Definition hwloc.h:886
HWLOC_TYPE_DEPTH_BRIDGE
@ HWLOC_TYPE_DEPTH_BRIDGE
Virtual depth for bridge object level.
Definition hwloc.h:888
HWLOC_TYPE_DEPTH_OS_DEVICE
@ HWLOC_TYPE_DEPTH_OS_DEVICE
Virtual depth for software device object level.
Definition hwloc.h:890
hwloc_type_sscanf
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.
hwloc_type_sscanf_as_depth
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.
hwloc_obj_type_string
const char * hwloc_obj_type_string(hwloc_obj_type_t type)
Return a constant stringified object type.
hwloc_obj_attr_snprintf
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.
hwloc_obj_type_snprintf
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.
hwloc_obj_set_subtype
int hwloc_obj_set_subtype(hwloc_topology_t topology, hwloc_obj_t obj, const char *subtype)
Set (or replace) the subtype of an object.
hwloc_obj_get_info_by_name
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.
hwloc_obj_add_info
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
hwloc_cpubind_flags_t
Process/Thread binding flags.
Definition hwloc.h:1255
hwloc_set_proc_cpubind
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.
hwloc_set_cpubind
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.
hwloc_get_proc_last_cpu_location
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.
hwloc_get_proc_cpubind
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.
hwloc_get_cpubind
int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
Get current process or thread binding.
hwloc_set_thread_cpubind
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.
hwloc_get_thread_cpubind
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.
hwloc_get_last_cpu_location
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
@ HWLOC_CPUBIND_PROCESS
Bind all threads of the current (possibly) multithreaded process.
Definition hwloc.h:1258
HWLOC_CPUBIND_NOMEMBIND
@ HWLOC_CPUBIND_NOMEMBIND
Avoid any effect on memory binding.
Definition hwloc.h:1304
HWLOC_CPUBIND_STRICT
@ HWLOC_CPUBIND_STRICT
Request for strict binding from the OS.
Definition hwloc.h:1287
HWLOC_CPUBIND_THREAD
@ HWLOC_CPUBIND_THREAD
Bind current thread of current process.
Definition hwloc.h:1262
hwloc_set_membind
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...
hwloc_get_proc_membind
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.
hwloc_free
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().
hwloc_get_area_memlocation
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.
hwloc_alloc
void * hwloc_alloc(hwloc_topology_t topology, size_t len)
Allocate some memory.
hwloc_get_area_membind
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
hwloc_membind_flags_t
Memory binding flags.
Definition hwloc.h:1592
hwloc_set_proc_membind
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
hwloc_membind_policy_t
Memory binding policy.
Definition hwloc.h:1513
hwloc_alloc_membind_policy
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.
hwloc_alloc_membind
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.
hwloc_get_membind
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.
hwloc_set_area_membind
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
@ HWLOC_MEMBIND_STRICT
Definition hwloc.h:1610
HWLOC_MEMBIND_PROCESS
@ HWLOC_MEMBIND_PROCESS
Set policy for all threads of the specified (possibly multithreaded) process. This flag is mutually e...
Definition hwloc.h:1597
HWLOC_MEMBIND_THREAD
@ HWLOC_MEMBIND_THREAD
Set policy for a specific thread of the current process. This flag is mutually exclusive with HWLOC_M...
Definition hwloc.h:1602
HWLOC_MEMBIND_BYNODESET
@ HWLOC_MEMBIND_BYNODESET
Consider the bitmap argument as a nodeset.
Definition hwloc.h:1640
HWLOC_MEMBIND_MIGRATE
@ HWLOC_MEMBIND_MIGRATE
Migrate existing allocated memory. If the memory cannot be migrated and the HWLOC_MEMBIND_STRICT flag...
Definition hwloc.h:1616
HWLOC_MEMBIND_NOCPUBIND
@ HWLOC_MEMBIND_NOCPUBIND
Avoid any effect on CPU binding.
Definition hwloc.h:1629
HWLOC_MEMBIND_DEFAULT
@ HWLOC_MEMBIND_DEFAULT
Reset the memory allocation policy to the system default. Depending on the operating system,...
Definition hwloc.h:1521
HWLOC_MEMBIND_MIXED
@ HWLOC_MEMBIND_MIXED
Returned by get_membind() functions when multiple threads or parts of a memory area have differing me...
Definition hwloc.h:1576
HWLOC_MEMBIND_FIRSTTOUCH
@ HWLOC_MEMBIND_FIRSTTOUCH
Allocate each memory page individually on the local NUMA node of the thread that touches it.
Definition hwloc.h:1532
HWLOC_MEMBIND_WEIGHTED_INTERLEAVE
@ HWLOC_MEMBIND_WEIGHTED_INTERLEAVE
Allocate memory on the given nodes in an interleaved / weighted manner. The precise layout of the mem...
Definition hwloc.h:1561
HWLOC_MEMBIND_BIND
@ HWLOC_MEMBIND_BIND
Allocate memory on the specified nodes.
Definition hwloc.h:1542
HWLOC_MEMBIND_INTERLEAVE
@ HWLOC_MEMBIND_INTERLEAVE
Allocate memory on the given nodes in an interleaved / round-robin manner. The precise layout of the ...
Definition hwloc.h:1551
HWLOC_MEMBIND_NEXTTOUCH
@ HWLOC_MEMBIND_NEXTTOUCH
For each page bound with this policy, by next time it is touched (and next time only),...
Definition hwloc.h:1568
hwloc_topology_set_xmlbuffer
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())...
hwloc_topology_set_pid
int hwloc_topology_set_pid(hwloc_topology_t restrict topology, hwloc_pid_t pid)
Change which process the topology is viewed from.
hwloc_topology_set_synthetic
int hwloc_topology_set_synthetic(hwloc_topology_t restrict topology, const char *restrict description)
Enable synthetic topology.
hwloc_topology_set_xml
int hwloc_topology_set_xml(hwloc_topology_t restrict topology, const char *restrict xmlpath)
Enable XML-file based topology.
hwloc_topology_components_flag_e
hwloc_topology_components_flag_e
Flags to be passed to hwloc_topology_set_components().
Definition hwloc.h:2043
hwloc_topology_set_components
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
@ HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST
Blacklist the target component from being used.
Definition hwloc.h:2047
hwloc_topology_get_flags
unsigned long hwloc_topology_get_flags(hwloc_topology_t topology)
Get OR'ed flags of a topology.
hwloc_topology_set_io_types_filter
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.
hwloc_topology_get_type_filter
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.
hwloc_topology_set_userdata
void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata)
Set the topology-specific userdata pointer.
hwloc_topology_set_cache_types_filter
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.
hwloc_topology_set_icache_types_filter
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.
hwloc_topology_is_thissystem
int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
Does the topology context come from this system?
hwloc_type_filter_e
hwloc_type_filter_e
Type filtering flags.
Definition hwloc.h:2445
hwloc_topology_set_all_types_filter
int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter)
Set the filtering for all object types.
hwloc_topology_set_flags
int hwloc_topology_set_flags(hwloc_topology_t topology, unsigned long flags)
Set OR'ed flags to non-yet-loaded topology.
hwloc_topology_get_support
const struct hwloc_topology_support * hwloc_topology_get_support(hwloc_topology_t restrict topology)
Retrieve the topology support.
hwloc_topology_get_userdata
void * hwloc_topology_get_userdata(hwloc_topology_t topology)
Retrieve the topology-specific userdata pointer.
hwloc_topology_set_type_filter
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
hwloc_topology_flags_e
Flags to be set onto a topology context before load.
Definition hwloc.h:2087
HWLOC_TYPE_FILTER_KEEP_NONE
@ HWLOC_TYPE_FILTER_KEEP_NONE
Ignore all objects of this type.
Definition hwloc.h:2459
HWLOC_TYPE_FILTER_KEEP_IMPORTANT
@ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
Only keep likely-important objects of the given type.
Definition hwloc.h:2490
HWLOC_TYPE_FILTER_KEEP_STRUCTURE
@ HWLOC_TYPE_FILTER_KEEP_STRUCTURE
Only ignore objects if their entire level does not bring any structure.
Definition hwloc.h:2475
HWLOC_TYPE_FILTER_KEEP_ALL
@ HWLOC_TYPE_FILTER_KEEP_ALL
Keep all objects of this type.
Definition hwloc.h:2451
HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
@ HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
Detect the whole system, ignore reservations, include disallowed objects.
Definition hwloc.h:2109
HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES
@ 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:2150
HWLOC_TOPOLOGY_FLAG_NO_CPUKINDS
@ HWLOC_TOPOLOGY_FLAG_NO_CPUKINDS
Ignore CPU Kinds.
Definition hwloc.h:2256
HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING
@ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_MEMBINDING
Do not consider resources outside of the process memory binding.
Definition hwloc.h:2221
HWLOC_TOPOLOGY_FLAG_NO_DISTANCES
@ HWLOC_TOPOLOGY_FLAG_NO_DISTANCES
Ignore distances.
Definition hwloc.h:2243
HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
@ HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM
Assume that the selected backend provides the topology for the system on which we are running.
Definition hwloc.h:2129
HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING
@ HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING
Do not consider resources outside of the process CPU binding.
Definition hwloc.h:2199
HWLOC_TOPOLOGY_FLAG_NO_MEMATTRS
@ HWLOC_TOPOLOGY_FLAG_NO_MEMATTRS
Ignore memory attributes and tiers.
Definition hwloc.h:2250
HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT
@ HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT
Import support from the imported topology.
Definition hwloc.h:2174
HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING
@ HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING
Do not ever modify the process or thread binding during discovery.
Definition hwloc.h:2236
hwloc_topology_insert_group_object
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
hwloc_allow_flags_e
Flags to be given to hwloc_topology_allow().
Definition hwloc.h:2638
hwloc_topology_alloc_group_object
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().
hwloc_topology_refresh
int hwloc_topology_refresh(hwloc_topology_t topology)
Refresh internal structures after topology modification.
hwloc_topology_restrict
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
hwloc_restrict_flags_e
Flags to be given to hwloc_topology_restrict().
Definition hwloc.h:2566
hwloc_topology_free_group_object
int hwloc_topology_free_group_object(hwloc_topology_t topology, hwloc_obj_t group)
Free a group object allocated with hwloc_topology_alloc_group_object().
hwloc_obj_add_other_obj_sets
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_topology_insert_misc_object
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.
hwloc_topology_allow
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
@ HWLOC_ALLOW_FLAG_CUSTOM
Allow a custom set of objects, given to hwloc_topology_allow() as cpuset and/or nodeset parameters.
Definition hwloc.h:2656
HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
@ HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
Only allow objects that are available to the current process.
Definition hwloc.h:2652
HWLOC_ALLOW_FLAG_ALL
@ HWLOC_ALLOW_FLAG_ALL
Mark all objects as allowed in the topology.
Definition hwloc.h:2643
HWLOC_RESTRICT_FLAG_ADAPT_MISC
@ 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:2591
HWLOC_RESTRICT_FLAG_REMOVE_CPULESS
@ 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:2572
HWLOC_RESTRICT_FLAG_ADAPT_IO
@ 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:2597
HWLOC_RESTRICT_FLAG_BYNODESET
@ HWLOC_RESTRICT_FLAG_BYNODESET
Restrict by nodeset instead of CPU set. Only keep objects whose nodeset is included or partially incl...
Definition hwloc.h:2578
HWLOC_RESTRICT_FLAG_REMOVE_MEMLESS
@ 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:2585
hwloc_bitmap_t
struct hwloc_bitmap_s * hwloc_bitmap_t
Set of bits represented as an opaque pointer to an internal bitmap.
Definition bitmap.h:70
hwloc_const_bitmap_t
const struct hwloc_bitmap_s * hwloc_const_bitmap_t
a non-modifiable hwloc_bitmap_t
Definition bitmap.h:72
hwloc_obj
Structure of a topology object.
Definition hwloc.h:437
hwloc_obj::children
struct hwloc_obj ** children
Normal children, children[0 .. arity -1].
Definition hwloc.h:497
hwloc_obj::nodeset
hwloc_nodeset_t nodeset
NUMA nodes covered by this object or containing this object.
Definition hwloc.h:581
hwloc_obj::logical_index
unsigned logical_index
Horizontal index in the whole list of similar objects, hence guaranteed unique across the entire mach...
Definition hwloc.h:475
hwloc_obj::symmetric_subtree
int symmetric_subtree
Set if the subtree of normal objects below this object is symmetric, which means all normal children ...
Definition hwloc.h:502
hwloc_obj::misc_arity
unsigned misc_arity
Number of Misc children. These children are listed in misc_first_child.
Definition hwloc.h:543
hwloc_obj::depth
int depth
Vertical index in the hierarchy.
Definition hwloc.h:460
hwloc_obj::misc_first_child
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:546
hwloc_obj::subtype
char * subtype
Subtype string to better describe the type field.
Definition hwloc.h:440
hwloc_obj::os_index
unsigned os_index
OS-provided physical index number. It is not guaranteed unique across the entire machine,...
Definition hwloc.h:442
hwloc_obj::cpuset
hwloc_cpuset_t cpuset
CPUs covered by this object.
Definition hwloc.h:553
hwloc_obj::memory_arity
unsigned memory_arity
Number of Memory children. These children are listed in memory_first_child.
Definition hwloc.h:513
hwloc_obj::total_memory
hwloc_uint64_t total_memory
Total memory (in bytes) in NUMA nodes below this object.
Definition hwloc.h:454
hwloc_obj::userdata
void * userdata
Application-given private data pointer, initialized to NULL, use it as you wish. See hwloc_topology_s...
Definition hwloc.h:623
hwloc_obj::io_arity
unsigned io_arity
Number of I/O children. These children are listed in io_first_child.
Definition hwloc.h:531
hwloc_obj::prev_sibling
struct hwloc_obj * prev_sibling
Previous object below the same parent (inside the same list of children).
Definition hwloc.h:490
hwloc_obj::next_sibling
struct hwloc_obj * next_sibling
Next object below the same parent (inside the same list of children).
Definition hwloc.h:489
hwloc_obj::last_child
struct hwloc_obj * last_child
Last normal child.
Definition hwloc.h:499
hwloc_obj::next_cousin
struct hwloc_obj * next_cousin
Next object of same type and depth.
Definition hwloc.h:483
hwloc_obj::infos
struct hwloc_info_s * infos
Array of info attributes (name and value strings).
Definition hwloc.h:619
hwloc_obj::io_first_child
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:534
hwloc_obj::complete_cpuset
hwloc_cpuset_t complete_cpuset
The complete CPU set of processors of this object,.
Definition hwloc.h:568
hwloc_obj::gp_index
hwloc_uint64_t gp_index
Global persistent index. Generated by hwloc, unique across the topology (contrary to os_index) and pe...
Definition hwloc.h:628
hwloc_obj::infos_count
unsigned infos_count
Size of infos array.
Definition hwloc.h:620
hwloc_obj::sibling_rank
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:488
hwloc_obj::arity
unsigned arity
Number of normal children. Memory, Misc and I/O children are not listed here but rather in their dedi...
Definition hwloc.h:493
hwloc_obj::name
char * name
Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
Definition hwloc.h:449
hwloc_obj::memory_first_child
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:516
hwloc_obj::complete_nodeset
hwloc_nodeset_t complete_nodeset
The complete NUMA node set of this object,.
Definition hwloc.h:603
hwloc_obj::prev_cousin
struct hwloc_obj * prev_cousin
Previous object of same type and depth.
Definition hwloc.h:484
hwloc_obj::type
hwloc_obj_type_t type
Type of object.
Definition hwloc.h:439
hwloc_obj::attr
union hwloc_obj_attr_u * attr
Object type-specific Attributes, may be NULL if no attribute value was found.
Definition hwloc.h:456
hwloc_obj::parent
struct hwloc_obj * parent
Parent, NULL if root (Machine object).
Definition hwloc.h:487
hwloc_obj::first_child
struct hwloc_obj * first_child
First normal child.
Definition hwloc.h:498
hwloc_obj_attr_u
Object type-specific Attributes.
Definition hwloc.h:640
hwloc_obj_attr_u::pcidev
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
hwloc_obj_attr_u::bridge
struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
hwloc_obj_attr_u::cache
struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
hwloc_obj_attr_u::group
struct hwloc_obj_attr_u::hwloc_group_attr_s group
hwloc_obj_attr_u::osdev
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
hwloc_obj_attr_u::numanode
struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
hwloc_obj_attr_u::hwloc_numanode_attr_s
NUMA node-specific Object Attributes.
Definition hwloc.h:642
hwloc_obj_attr_u::hwloc_numanode_attr_s::page_types_len
unsigned page_types_len
Size of array page_types.
Definition hwloc.h:644
hwloc_obj_attr_u::hwloc_numanode_attr_s::local_memory
hwloc_uint64_t local_memory
Local memory (in bytes).
Definition hwloc.h:643
hwloc_obj_attr_u::hwloc_numanode_attr_s::page_types
struct hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s * page_types
hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s
Array of local memory page types, NULL if no local memory and page_types is 0.
Definition hwloc.h:650
hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s::size
hwloc_uint64_t size
Size of pages.
Definition hwloc.h:651
hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s::count
hwloc_uint64_t count
Number of pages of this size.
Definition hwloc.h:652
hwloc_obj_attr_u::hwloc_cache_attr_s
Cache-specific Object Attributes.
Definition hwloc.h:657
hwloc_obj_attr_u::hwloc_cache_attr_s::depth
unsigned depth
Depth of cache (e.g., L1, L2, ...etc.).
Definition hwloc.h:659
hwloc_obj_attr_u::hwloc_cache_attr_s::linesize
unsigned linesize
Cache-line size in bytes. 0 if unknown.
Definition hwloc.h:660
hwloc_obj_attr_u::hwloc_cache_attr_s::size
hwloc_uint64_t size
Size of cache in bytes.
Definition hwloc.h:658
hwloc_obj_attr_u::hwloc_cache_attr_s::associativity
int associativity
Ways of associativity, -1 if fully associative, 0 if unknown.
Definition hwloc.h:661
hwloc_obj_attr_u::hwloc_cache_attr_s::type
hwloc_obj_cache_type_t type
Cache type.
Definition hwloc.h:663
hwloc_obj_attr_u::hwloc_group_attr_s
Group-specific Object Attributes.
Definition hwloc.h:666
hwloc_obj_attr_u::hwloc_group_attr_s::kind
unsigned kind
Internally-used kind of group.
Definition hwloc.h:669
hwloc_obj_attr_u::hwloc_group_attr_s::subkind
unsigned subkind
Internally-used subkind to distinguish different levels of groups with same kind.
Definition hwloc.h:670
hwloc_obj_attr_u::hwloc_group_attr_s::depth
unsigned depth
Depth of group object. It may change if intermediate Group objects are added.
Definition hwloc.h:667
hwloc_obj_attr_u::hwloc_group_attr_s::dont_merge
unsigned char dont_merge
Flag preventing groups from being automatically merged with identical parent or children.
Definition hwloc.h:671
hwloc_obj_attr_u::hwloc_pcidev_attr_s
PCI Device specific Object Attributes.
Definition hwloc.h:674
hwloc_obj_attr_u::hwloc_pcidev_attr_s::revision
unsigned char revision
Revision number.
Definition hwloc.h:690
hwloc_obj_attr_u::hwloc_pcidev_attr_s::device_id
unsigned short device_id
Device ID (yyyy in [xxxx:yyyy]).
Definition hwloc.h:687
hwloc_obj_attr_u::hwloc_pcidev_attr_s::dev
unsigned char dev
Device number (zz in the PCI BDF notation xxxx:yy:zz.t).
Definition hwloc.h:683
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subvendor_id
unsigned short subvendor_id
Sub-Vendor ID.
Definition hwloc.h:688
hwloc_obj_attr_u::hwloc_pcidev_attr_s::linkspeed
float linkspeed
Link speed in GB/s. This datarate is the currently configured speed of the entire PCI link (sum of th...
Definition hwloc.h:691
hwloc_obj_attr_u::hwloc_pcidev_attr_s::func
unsigned char func
Function number (t in the PCI BDF notation xxxx:yy:zz.t).
Definition hwloc.h:684
hwloc_obj_attr_u::hwloc_pcidev_attr_s::domain
unsigned short domain
Domain number (xxxx in the PCI BDF notation xxxx:yy:zz.t). Only 16bits PCI domains are supported by d...
Definition hwloc.h:676
hwloc_obj_attr_u::hwloc_pcidev_attr_s::vendor_id
unsigned short vendor_id
Vendor ID (xxxx in [xxxx:yyyy]).
Definition hwloc.h:686
hwloc_obj_attr_u::hwloc_pcidev_attr_s::bus
unsigned char bus
Bus number (yy in the PCI BDF notation xxxx:yy:zz.t).
Definition hwloc.h:682
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subdevice_id
unsigned short subdevice_id
Sub-Device ID.
Definition hwloc.h:689
hwloc_obj_attr_u::hwloc_pcidev_attr_s::class_id
unsigned short class_id
The class number (first two bytes, without the prog_if).
Definition hwloc.h:685
hwloc_obj_attr_u::hwloc_bridge_attr_s
Bridge specific Object Attributes.
Definition hwloc.h:699
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@034043365317304346165231377370230330013215031037 upstream
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream_type
hwloc_obj_bridge_type_t upstream_type
Upstream Bridge type.
Definition hwloc.h:703
hwloc_obj_attr_u::hwloc_bridge_attr_s::domain
unsigned short domain
Domain number the downstream PCI buses. Only 16bits PCI domains are supported by default.
Definition hwloc.h:707
hwloc_obj_attr_u::hwloc_bridge_attr_s::depth
unsigned depth
Definition hwloc.h:718
hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@255166366313070227124320376131062113240135013336 downstream
hwloc_obj_attr_u::hwloc_bridge_attr_s::pci
struct hwloc_pcidev_attr_s pci
PCI attribute of the upstream part as a PCI device.
Definition hwloc.h:701
hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream_type
hwloc_obj_bridge_type_t downstream_type
Downstream Bridge type.
Definition hwloc.h:717
hwloc_obj_attr_u::hwloc_bridge_attr_s::secondary_bus
unsigned char secondary_bus
First PCI bus number below the bridge.
Definition hwloc.h:713
hwloc_obj_attr_u::hwloc_bridge_attr_s::subordinate_bus
unsigned char subordinate_bus
Highest PCI bus number below the bridge.
Definition hwloc.h:714
hwloc_obj_attr_u::hwloc_osdev_attr_s
OS Device specific Object Attributes.
Definition hwloc.h:721
hwloc_obj_attr_u::hwloc_osdev_attr_s::type
hwloc_obj_osdev_type_t type
Definition hwloc.h:722
hwloc_info_s
Object info attribute (name and value strings).
Definition hwloc.h:730
hwloc_info_s::name
char * name
Info name.
Definition hwloc.h:731
hwloc_info_s::value
char * value
Info value.
Definition hwloc.h:732
hwloc_topology_discovery_support
Flags describing actual discovery support for this topology.
Definition hwloc.h:2300
hwloc_topology_discovery_support::numa
unsigned char numa
Detecting the number of NUMA nodes is supported.
Definition hwloc.h:2304
hwloc_topology_discovery_support::disallowed_numa
unsigned char disallowed_numa
Detecting and identifying NUMA nodes that are not available to the current process is supported.
Definition hwloc.h:2310
hwloc_topology_discovery_support::cpukind_efficiency
unsigned char cpukind_efficiency
Detecting the efficiency of CPU kinds is supported, see Kinds of CPU cores.
Definition hwloc.h:2312
hwloc_topology_discovery_support::pu
unsigned char pu
Detecting the number of PU objects is supported.
Definition hwloc.h:2302
hwloc_topology_discovery_support::numa_memory
unsigned char numa_memory
Detecting the amount of memory in NUMA nodes is supported.
Definition hwloc.h:2306
hwloc_topology_discovery_support::disallowed_pu
unsigned char disallowed_pu
Detecting and identifying PU objects that are not available to the current process is supported.
Definition hwloc.h:2308
hwloc_topology_cpubind_support
Flags describing actual PU binding support for this topology.
Definition hwloc.h:2320
hwloc_topology_cpubind_support::get_proc_last_cpu_location
unsigned char get_proc_last_cpu_location
Definition hwloc.h:2340
hwloc_topology_cpubind_support::set_thread_cpubind
unsigned char set_thread_cpubind
Definition hwloc.h:2334
hwloc_topology_cpubind_support::set_thisthread_cpubind
unsigned char set_thisthread_cpubind
Definition hwloc.h:2330
hwloc_topology_cpubind_support::get_thisthread_last_cpu_location
unsigned char get_thisthread_last_cpu_location
Definition hwloc.h:2342
hwloc_topology_cpubind_support::get_thisproc_cpubind
unsigned char get_thisproc_cpubind
Definition hwloc.h:2324
hwloc_topology_cpubind_support::get_thisthread_cpubind
unsigned char get_thisthread_cpubind
Definition hwloc.h:2332
hwloc_topology_cpubind_support::get_thread_cpubind
unsigned char get_thread_cpubind
Definition hwloc.h:2336
hwloc_topology_cpubind_support::set_thisproc_cpubind
unsigned char set_thisproc_cpubind
Definition hwloc.h:2322
hwloc_topology_cpubind_support::set_proc_cpubind
unsigned char set_proc_cpubind
Definition hwloc.h:2326
hwloc_topology_cpubind_support::get_proc_cpubind
unsigned char get_proc_cpubind
Definition hwloc.h:2328
hwloc_topology_cpubind_support::get_thisproc_last_cpu_location
unsigned char get_thisproc_last_cpu_location
Definition hwloc.h:2338
hwloc_topology_membind_support
Flags describing actual memory binding support for this topology.
Definition hwloc.h:2350
hwloc_topology_membind_support::set_thisthread_membind
unsigned char set_thisthread_membind
Definition hwloc.h:2360
hwloc_topology_membind_support::get_area_membind
unsigned char get_area_membind
Definition hwloc.h:2366
hwloc_topology_membind_support::firsttouch_membind
unsigned char firsttouch_membind
Definition hwloc.h:2370
hwloc_topology_membind_support::get_area_memlocation
unsigned char get_area_memlocation
Definition hwloc.h:2380
hwloc_topology_membind_support::set_thisproc_membind
unsigned char set_thisproc_membind
Definition hwloc.h:2352
hwloc_topology_membind_support::interleave_membind
unsigned char interleave_membind
Definition hwloc.h:2374
hwloc_topology_membind_support::get_thisproc_membind
unsigned char get_thisproc_membind
Definition hwloc.h:2354
hwloc_topology_membind_support::set_area_membind
unsigned char set_area_membind
Definition hwloc.h:2364
hwloc_topology_membind_support::weighted_interleave_membind
unsigned char weighted_interleave_membind
Definition hwloc.h:2382
hwloc_topology_membind_support::get_thisthread_membind
unsigned char get_thisthread_membind
Definition hwloc.h:2362
hwloc_topology_membind_support::set_proc_membind
unsigned char set_proc_membind
Definition hwloc.h:2356
hwloc_topology_membind_support::get_proc_membind
unsigned char get_proc_membind
Definition hwloc.h:2358
hwloc_topology_membind_support::migrate_membind
unsigned char migrate_membind
Definition hwloc.h:2378
hwloc_topology_membind_support::nexttouch_membind
unsigned char nexttouch_membind
Definition hwloc.h:2376
hwloc_topology_membind_support::alloc_membind
unsigned char alloc_membind
Definition hwloc.h:2368
hwloc_topology_membind_support::bind_membind
unsigned char bind_membind
Definition hwloc.h:2372
hwloc_topology_misc_support
Flags describing miscellaneous features.
Definition hwloc.h:2387
hwloc_topology_misc_support::imported_support
unsigned char imported_support
Definition hwloc.h:2389
hwloc_topology_support
Set of flags describing actual support for this topology.
Definition hwloc.h:2398
hwloc_topology_support::misc
struct hwloc_topology_misc_support * misc
Definition hwloc.h:2402
hwloc_topology_support::membind
struct hwloc_topology_membind_support * membind
Definition hwloc.h:2401
hwloc_topology_support::cpubind
struct hwloc_topology_cpubind_support * cpubind
Definition hwloc.h:2400
hwloc_topology_support::discovery
struct hwloc_topology_discovery_support * discovery
Definition hwloc.h:2399