Hardware Locality (hwloc)  v2.1-20201119.0330.gita2339908
hwloc.h
1 /*
2  * Copyright © 2009 CNRS
3  * Copyright © 2009-2020 Inria. All rights reserved.
4  * Copyright © 2009-2012 Université Bordeaux
5  * Copyright © 2009-2011 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  * http://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 prictures 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
76 extern "C" {
77 #endif
78 
79 
96 #define HWLOC_API_VERSION 0x00020100
97 
102 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
103 
105 #define HWLOC_COMPONENT_ABI 6
106 
143 
161 
176 typedef enum {
177 
179 #define HWLOC_OBJ_TYPE_MIN HWLOC_OBJ_MACHINE /* Sentinel value */
180 
310  HWLOC_OBJ_TYPE_MAX
312 
319 
325 
345 
365 HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
366 
369 };
370 
379 union hwloc_obj_attr_u;
380 
385 struct hwloc_obj {
386  /* physical information */
388  char *subtype;
390  unsigned os_index;
395 #define HWLOC_UNKNOWN_INDEX (unsigned)-1
396 
397  char *name;
402  hwloc_uint64_t total_memory;
407  /* global position */
408  int depth;
423  unsigned logical_index;
430  /* cousins are all objects of the same type (and depth) across the entire topology */
434  /* children of the same parent are siblings, even if they may have different type and depth */
435  struct hwloc_obj *parent;
436  unsigned sibling_rank;
441  unsigned arity;
445  struct hwloc_obj **children;
461  unsigned memory_arity;
479  unsigned io_arity;
491  unsigned misc_arity;
500  /* cpusets and nodesets */
565  struct hwloc_info_s *infos;
566  unsigned infos_count;
568  /* misc */
569  void *userdata;
574  hwloc_uint64_t gp_index;
579 };
583 typedef struct hwloc_obj * hwloc_obj_t;
584 
589  hwloc_uint64_t local_memory;
590  unsigned page_types_len;
597  hwloc_uint64_t size;
598  hwloc_uint64_t count;
599  } * page_types;
600  } numanode;
601 
604  hwloc_uint64_t size;
605  unsigned depth;
606  unsigned linesize;
610  } cache;
613  unsigned depth;
615  unsigned kind;
616  unsigned subkind;
617  unsigned char dont_merge;
618  } group;
621  unsigned short domain;
622  unsigned char bus, dev, func;
623  unsigned short class_id;
625  unsigned char revision;
626  float linkspeed; /* in GB/s */
627  } pcidev;
630  union {
632  } upstream;
634  union {
635  struct {
636  unsigned short domain;
638  } pci;
639  } downstream;
641  unsigned depth;
642  } bridge;
646  } osdev;
647 };
648 
653 struct hwloc_info_s {
654  char *name;
655  char *value;
656 };
657 
666 struct hwloc_topology;
671 typedef struct hwloc_topology * hwloc_topology_t;
672 
679 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
680 
701 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
702 
707 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
708 
719 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
720 
738 HWLOC_DECLSPEC int hwloc_topology_abi_check(hwloc_topology_t topology);
739 
751 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
752 
773 HWLOC_DECLSPEC int hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
774 
798 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
799 
809 };
810 
830 HWLOC_DECLSPEC int hwloc_get_memory_parents_depth (hwloc_topology_t topology);
831 
845 static __hwloc_inline int
846 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
847 
861 static __hwloc_inline int
862 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
863 
871 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
872 
875 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, int depth) __hwloc_attribute_pure;
876 
882 static __hwloc_inline int
883 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
884 
889 static __hwloc_inline hwloc_obj_t
890 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
891 
893 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, int depth, unsigned idx) __hwloc_attribute_pure;
894 
901 static __hwloc_inline hwloc_obj_t
902 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
903 
908 static __hwloc_inline hwloc_obj_t
909 hwloc_get_next_obj_by_depth (hwloc_topology_t topology, int depth, hwloc_obj_t prev);
910 
917 static __hwloc_inline hwloc_obj_t
919  hwloc_obj_t prev);
920 
937 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
938 
956 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size,
957  hwloc_obj_t obj,
958  int verbose);
959 
971 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size,
972  hwloc_obj_t obj, const char * __hwloc_restrict separator,
973  int verbose);
974 
998 HWLOC_DECLSPEC int hwloc_type_sscanf(const char *string,
999  hwloc_obj_type_t *typep,
1000  union hwloc_obj_attr_u *attrp, size_t attrsize);
1001 
1023 HWLOC_DECLSPEC int hwloc_type_sscanf_as_depth(const char *string,
1024  hwloc_obj_type_t *typep,
1025  hwloc_topology_t topology, int *depthp);
1026 
1042 static __hwloc_inline const char *
1043 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
1044 
1061 HWLOC_DECLSPEC int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
1062 
1134 typedef enum {
1138 
1142 
1167 
1185 
1191 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
1192 
1198 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1199 
1211 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
1212 
1224 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1225 
1226 #ifdef hwloc_thread_t
1227 
1234 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
1235 #endif
1236 
1237 #ifdef hwloc_thread_t
1238 
1245 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
1246 #endif
1247 
1261 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1262 
1279 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1280 
1360 typedef enum {
1369 
1380 
1384 
1393 
1400 
1409 
1423 typedef enum {
1429 
1434 
1442 
1448 
1461 
1473 
1489 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1490 
1535 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1536 
1549 HWLOC_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);
1550 
1590 HWLOC_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);
1591 
1602 HWLOC_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);
1603 
1631 HWLOC_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);
1632 
1652 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
1653 
1661 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
1662 
1677 HWLOC_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;
1678 
1688 static __hwloc_inline void *
1689 hwloc_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;
1690 
1694 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
1695 
1732 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
1733 
1762 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
1763 
1790 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
1791 
1818 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
1819 
1827 };
1828 
1843 HWLOC_DECLSPEC int hwloc_topology_set_components(hwloc_topology_t __hwloc_restrict topology, unsigned long flags, const char * __hwloc_restrict name);
1844 
1885 
1905 
1926 };
1927 
1937 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
1938 
1945 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
1946 
1954 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
1955 
1959  unsigned char pu;
1961  unsigned char numa;
1963  unsigned char numa_memory;
1965  unsigned char disallowed_pu;
1967  unsigned char disallowed_numa;
1968 };
1969 
1977  unsigned char set_thisproc_cpubind;
1979  unsigned char get_thisproc_cpubind;
1981  unsigned char set_proc_cpubind;
1983  unsigned char get_proc_cpubind;
1985  unsigned char set_thisthread_cpubind;
1987  unsigned char get_thisthread_cpubind;
1989  unsigned char set_thread_cpubind;
1991  unsigned char get_thread_cpubind;
1998 };
1999 
2007  unsigned char set_thisproc_membind;
2009  unsigned char get_thisproc_membind;
2011  unsigned char set_proc_membind;
2013  unsigned char get_proc_membind;
2015  unsigned char set_thisthread_membind;
2017  unsigned char get_thisthread_membind;
2019  unsigned char set_area_membind;
2021  unsigned char get_area_membind;
2023  unsigned char alloc_membind;
2025  unsigned char firsttouch_membind;
2027  unsigned char bind_membind;
2029  unsigned char interleave_membind;
2031  unsigned char nexttouch_membind;
2033  unsigned char migrate_membind;
2035  unsigned char get_area_memlocation;
2036 };
2037 
2048 };
2049 
2059 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
2060 
2077 
2085 
2099 
2114 };
2115 
2118 HWLOC_DECLSPEC int hwloc_topology_set_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e filter);
2119 
2122 HWLOC_DECLSPEC int hwloc_topology_get_type_filter(hwloc_topology_t topology, hwloc_obj_type_t type, enum hwloc_type_filter_e *filter);
2123 
2128 HWLOC_DECLSPEC int hwloc_topology_set_all_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2129 
2134 HWLOC_DECLSPEC int hwloc_topology_set_cache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2135 
2140 HWLOC_DECLSPEC int hwloc_topology_set_icache_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2141 
2144 HWLOC_DECLSPEC int hwloc_topology_set_io_types_filter(hwloc_topology_t topology, enum hwloc_type_filter_e filter);
2145 
2156 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
2157 
2163 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
2164 
2181 
2187 
2194 
2200 
2206 };
2207 
2232 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_bitmap_t set, unsigned long flags);
2233 
2241 
2250 
2254 };
2255 
2271 HWLOC_DECLSPEC int hwloc_topology_allow(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, hwloc_const_nodeset_t nodeset, unsigned long flags);
2272 
2294 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
2295 
2317 
2355 
2365 HWLOC_DECLSPEC int hwloc_obj_add_other_obj_sets(hwloc_obj_t dst, hwloc_obj_t src);
2366 
2371 #ifdef __cplusplus
2372 } /* extern "C" */
2373 #endif
2374 
2375 
2376 /* high-level helpers */
2377 #include "hwloc/helper.h"
2378 
2379 /* inline code of some functions above */
2380 #include "hwloc/inlines.h"
2381 
2382 /* exporting to XML or synthetic */
2383 #include "hwloc/export.h"
2384 
2385 /* distances */
2386 #include "hwloc/distances.h"
2387 
2388 /* topology diffs */
2389 #include "hwloc/diff.h"
2390 
2391 /* deprecated headers */
2392 #include "hwloc/deprecated.h"
2393 
2394 #endif /* HWLOC_H */
hwloc_obj_attr_u::hwloc_pcidev_attr_s::func
unsigned char func
Definition: hwloc.h:622
hwloc_obj_attr_u::hwloc_cache_attr_s::size
hwloc_uint64_t size
Size of cache in bytes.
Definition: hwloc.h:604
hwloc_topology_set_userdata
void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata)
Set the topology-specific userdata pointer.
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_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_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_MEMBIND_NOCPUBIND
@ HWLOC_MEMBIND_NOCPUBIND
Avoid any effect on CPU binding.
Definition: hwloc.h:1460
hwloc_topology_components_flag_e
hwloc_topology_components_flag_e
Flags to be passed to hwloc_topology_set_components()
Definition: hwloc.h:1822
hwloc_topology_get_userdata
void * hwloc_topology_get_userdata(hwloc_topology_t topology)
Retrieve the topology-specific userdata pointer.
hwloc_obj::prev_sibling
struct hwloc_obj * prev_sibling
Previous object below the same parent (inside the same list of children).
Definition: hwloc.h:438
hwloc_membind_policy_t
hwloc_membind_policy_t
Memory binding policy.
Definition: hwloc.h:1360
hwloc_obj_attr_u::cache
struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
hwloc_obj_attr_u::hwloc_pcidev_attr_s::bus
unsigned char bus
Definition: hwloc.h:622
HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST
@ HWLOC_TOPOLOGY_COMPONENTS_FLAG_BLACKLIST
Blacklist the target component from being used.
Definition: hwloc.h:1826
hwloc_obj::children
struct hwloc_obj ** children
Normal children, children[0 .. arity -1].
Definition: hwloc.h:445
HWLOC_OBJ_MACHINE
@ HWLOC_OBJ_MACHINE
Machine. A set of processors and memory with cache coherency.
Definition: hwloc.h:182
HWLOC_OBJ_OSDEV_OPENFABRICS
@ HWLOC_OBJ_OSDEV_OPENFABRICS
Operating system openfabrics device. For instance the "mlx4_0" InfiniBand HCA, or "hfi1_0" Omni-Path ...
Definition: hwloc.h:335
hwloc_topology_membind_support::set_thisthread_membind
unsigned char set_thisthread_membind
Definition: hwloc.h:2015
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:617
HWLOC_OBJ_CACHE_UNIFIED
@ HWLOC_OBJ_CACHE_UNIFIED
Unified cache.
Definition: hwloc.h:315
HWLOC_MEMBIND_BIND
@ HWLOC_MEMBIND_BIND
Allocate memory on the specified nodes.
Definition: hwloc.h:1383
hwloc_topology_get_flags
unsigned long hwloc_topology_get_flags(hwloc_topology_t topology)
Get OR'ed flags of a 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:2253
HWLOC_OBJ_DIE
@ HWLOC_OBJ_DIE
Die within a physical package. A subpart of the physical package, that contains multiple cores.
Definition: hwloc.h:305
hwloc_topology_membind_support::get_area_membind
unsigned char get_area_membind
Definition: hwloc.h:2021
hwloc_obj::prev_cousin
struct hwloc_obj * prev_cousin
Previous object of same type and depth.
Definition: hwloc.h:432
hwloc_obj_attr_u::hwloc_pcidev_attr_s::vendor_id
unsigned short vendor_id
Definition: hwloc.h:624
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream_type
hwloc_obj_bridge_type_t upstream_type
Definition: hwloc.h:633
HWLOC_OBJ_CORE
@ HWLOC_OBJ_CORE
Core. A computation unit (may be shared by several logical processors).
Definition: hwloc.h:197
HWLOC_MEMBIND_STRICT
@ HWLOC_MEMBIND_STRICT
Definition: hwloc.h:1441
hwloc_get_next_obj_by_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.
hwloc_topology_set_synthetic
int hwloc_topology_set_synthetic(hwloc_topology_t restrict topology, const char *restrict description)
Enable synthetic topology.
hwloc_topology_cpubind_support::set_thread_cpubind
unsigned char set_thread_cpubind
Definition: hwloc.h:1989
hwloc_obj_attr_u::hwloc_group_attr_s
Group-specific Object Attributes.
Definition: hwloc.h:612
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:157
hwloc_obj::total_memory
hwloc_uint64_t total_memory
Total memory (in bytes) in NUMA nodes below this object.
Definition: hwloc.h:402
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_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:441
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:482
hwloc_obj_attr_u::hwloc_numanode_attr_s
NUMA node-specific Object Attributes.
Definition: hwloc.h:588
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_obj::misc_arity
unsigned misc_arity
Number of Misc children. These children are listed in misc_first_child.
Definition: hwloc.h:491
HWLOC_OBJ_L1CACHE
@ HWLOC_OBJ_L1CACHE
Level 1 Data (or Unified) Cache.
Definition: hwloc.h:213
hwloc_get_type_or_above_depth
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.
hwloc_obj_t
struct hwloc_obj * hwloc_obj_t
Convenience typedef; a pointer to a struct hwloc_obj.
Definition: hwloc.h:583
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:464
HWLOC_TYPE_DEPTH_PCI_DEVICE
@ HWLOC_TYPE_DEPTH_PCI_DEVICE
Virtual depth for PCI device object level.
Definition: hwloc.h:805
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subdevice_id
unsigned short subdevice_id
Definition: hwloc.h:624
hwloc_obj_type_t
hwloc_obj_type_t
Type of topology object.
Definition: hwloc.h:176
hwloc_topology_membind_support::set_proc_membind
unsigned char set_proc_membind
Definition: hwloc.h:2011
hwloc_alloc
void * hwloc_alloc(hwloc_topology_t topology, size_t len)
Allocate some memory.
hwloc_obj::parent
struct hwloc_obj * parent
Parent, NULL if root (Machine object)
Definition: hwloc.h:435
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_obj_attr_u::hwloc_osdev_attr_s::type
hwloc_obj_osdev_type_t type
Definition: hwloc.h:645
hwloc_topology_support::membind
struct hwloc_topology_membind_support * membind
Definition: hwloc.h:2047
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:2098
hwloc_topology_discovery_support::numa
unsigned char numa
Detecting the number of NUMA nodes is supported.
Definition: hwloc.h:1961
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:236
HWLOC_OBJ_L3CACHE
@ HWLOC_OBJ_L3CACHE
Level 3 Data (or Unified) Cache.
Definition: hwloc.h:215
hwloc_obj_attr_u::hwloc_numanode_attr_s::local_memory
hwloc_uint64_t local_memory
Local memory (in bytes)
Definition: hwloc.h:589
hwloc_obj
Structure of a topology object.
Definition: hwloc.h:385
hwloc_obj::last_child
struct hwloc_obj * last_child
Last normal child.
Definition: hwloc.h:447
hwloc_obj_add_info
int hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value)
Add the given info name and value pair to the given object.
hwloc_topology_support::cpubind
struct hwloc_topology_cpubind_support * cpubind
Definition: hwloc.h:2046
HWLOC_CPUBIND_NOMEMBIND
@ HWLOC_CPUBIND_NOMEMBIND
Avoid any effect on memory binding.
Definition: hwloc.h:1183
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_topology_cpubind_support::get_thisthread_cpubind
unsigned char get_thisthread_cpubind
Definition: hwloc.h:1987
hwloc_obj::depth
int depth
Vertical index in the hierarchy.
Definition: hwloc.h:408
hwloc_topology_discovery_support::numa_memory
unsigned char numa_memory
Detecting the amount of memory in NUMA nodes is supported.
Definition: hwloc.h:1963
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:2186
hwloc_obj_attr_u::hwloc_cache_attr_s
Cache-specific Object Attributes.
Definition: hwloc.h:603
hwloc_obj_attr_u::hwloc_pcidev_attr_s::domain
unsigned short domain
Definition: hwloc.h:621
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_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_obj_attr_u::hwloc_bridge_attr_s::secondary_bus
unsigned char secondary_bus
Definition: hwloc.h:637
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_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:2180
hwloc_obj_attr_u
Object type-specific Attributes.
Definition: hwloc.h:586
HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
@ HWLOC_TOPOLOGY_FLAG_INCLUDE_DISALLOWED
Detect the whole system, ignore reservations, include disallowed objects.
Definition: hwloc.h:1884
hwloc_obj_attr_u::hwloc_group_attr_s::kind
unsigned kind
Internally-used kind of group.
Definition: hwloc.h:615
hwloc_membind_flags_t
hwloc_membind_flags_t
Memory binding flags.
Definition: hwloc.h:1423
HWLOC_OBJ_L2ICACHE
@ HWLOC_OBJ_L2ICACHE
Level 2 instruction Cache (filtered out by default).
Definition: hwloc.h:220
hwloc_topology_cpubind_support::get_thisthread_last_cpu_location
unsigned char get_thisthread_last_cpu_location
Definition: hwloc.h:1997
hwloc_obj::os_index
unsigned os_index
OS-provided physical index number. It is not guaranteed unique across the entire machine,...
Definition: hwloc.h:390
hwloc_type_filter_e
hwloc_type_filter_e
Type filtering flags.
Definition: hwloc.h:2070
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_topology_set_xml
int hwloc_topology_set_xml(hwloc_topology_t restrict topology, const char *restrict xmlpath)
Enable XML-file based topology.
HWLOC_OBJ_OSDEV_NETWORK
@ HWLOC_OBJ_OSDEV_NETWORK
Operating system network device. For instance the "eth0" interface on Linux.
Definition: hwloc.h:333
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_cpubind_flags_t
hwloc_cpubind_flags_t
Process/Thread binding flags.
Definition: hwloc.h:1134
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_topology_check
void hwloc_topology_check(hwloc_topology_t topology)
Run internal checks on a topology structure.
hwloc_topology_membind_support::get_thisthread_membind
unsigned char get_thisthread_membind
Definition: hwloc.h:2017
hwloc_topology_membind_support::set_area_membind
unsigned char set_area_membind
Definition: hwloc.h:2019
hwloc_topology_cpubind_support::get_thisproc_last_cpu_location
unsigned char get_thisproc_last_cpu_location
Definition: hwloc.h:1993
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_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_obj_attr_u::hwloc_numanode_attr_s::page_types_len
unsigned page_types_len
Size of array page_types.
Definition: hwloc.h:590
HWLOC_TYPE_FILTER_KEEP_ALL
@ HWLOC_TYPE_FILTER_KEEP_ALL
Keep all objects of this type.
Definition: hwloc.h:2076
hwloc_topology_cpubind_support::get_proc_last_cpu_location
unsigned char get_proc_last_cpu_location
Definition: hwloc.h:1995
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_topology_flags_e
hwloc_topology_flags_e
Flags to be set onto a topology context before load.
Definition: hwloc.h:1863
hwloc_get_type_depth_e
hwloc_get_type_depth_e
Definition: hwloc.h:800
hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream
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:404
HWLOC_TYPE_UNORDERED
@ HWLOC_TYPE_UNORDERED
Value returned by hwloc_compare_types() when types can not be compared.
Definition: hwloc.h:368
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_alloc_membind_policy
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.
hwloc_topology_membind_support::get_area_memlocation
unsigned char get_area_memlocation
Definition: hwloc.h:2035
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_MEMBIND_FIRSTTOUCH
@ HWLOC_MEMBIND_FIRSTTOUCH
Allocate each memory page individually on the local NUMA node of the thread that touches it.
Definition: hwloc.h:1379
hwloc_topology_cpubind_support::set_proc_cpubind
unsigned char set_proc_cpubind
Definition: hwloc.h:1981
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_cache_type_t
enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
Cache type.
hwloc_topology_discovery_support
Flags describing actual discovery support for this topology.
Definition: hwloc.h:1957
hwloc_obj_attr_u::pcidev
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
hwloc_topology_init
int hwloc_topology_init(hwloc_topology_t *topologyp)
Allocate a topology context.
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:1967
hwloc_topology_membind_support::nexttouch_membind
unsigned char nexttouch_membind
Definition: hwloc.h:2031
HWLOC_OBJ_PACKAGE
@ HWLOC_OBJ_PACKAGE
Physical package. The physical package that usually gets inserted into a socket on the motherboard....
Definition: hwloc.h:191
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_obj_attr_u::hwloc_cache_attr_s::type
hwloc_obj_cache_type_t type
Cache type.
Definition: hwloc.h:609
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_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:1965
hwloc_get_next_obj_by_depth
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.
hwloc_obj_get_info_by_name
static const char * hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
Search the given key name in object infos and return the corresponding value.
hwloc_obj_attr_u::hwloc_cache_attr_s::linesize
unsigned linesize
Cache-line size in bytes. 0 if unknown.
Definition: hwloc.h:606
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_obj_attr_u::hwloc_bridge_attr_s::depth
unsigned depth
Definition: hwloc.h:641
HWLOC_OBJ_CACHE_INSTRUCTION
@ HWLOC_OBJ_CACHE_INSTRUCTION
Instruction cache (filtered out by default).
Definition: hwloc.h:317
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_MEMBIND_PROCESS
@ HWLOC_MEMBIND_PROCESS
Set policy for all threads of the specified (possibly multithreaded) process. This flag is mutually e...
Definition: hwloc.h:1428
hwloc_topology_membind_support::get_thisproc_membind
unsigned char get_thisproc_membind
Definition: hwloc.h:2009
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_obj_attr_u::hwloc_pcidev_attr_s::class_id
unsigned short class_id
Definition: hwloc.h:623
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_KEEP_IMPORTANT
@ HWLOC_TYPE_FILTER_KEEP_IMPORTANT
Only keep likely-important objects of the given type.
Definition: hwloc.h:2113
hwloc_restrict_flags_e
hwloc_restrict_flags_e
Flags to be given to hwloc_topology_restrict().
Definition: hwloc.h:2174
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_TYPE_DEPTH_NUMANODE
@ HWLOC_TYPE_DEPTH_NUMANODE
Virtual depth for NUMA nodes.
Definition: hwloc.h:803
hwloc_obj_cache_type_e
hwloc_obj_cache_type_e
Cache type.
Definition: hwloc.h:314
HWLOC_OBJ_BRIDGE_HOST
@ HWLOC_OBJ_BRIDGE_HOST
Host-side of a bridge, only possible upstream.
Definition: hwloc.h:322
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_OBJ_L1ICACHE
@ HWLOC_OBJ_L1ICACHE
Level 1 instruction Cache (filtered out by default).
Definition: hwloc.h:219
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:201
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_obj_bridge_type_e
hwloc_obj_bridge_type_e
Type of one side (upstream or downstream) of an I/O bridge.
Definition: hwloc.h:321
hwloc_obj_attr_u::hwloc_numanode_attr_s::hwloc_memory_page_type_s::size
hwloc_uint64_t size
Size of pages.
Definition: hwloc.h:597
hwloc_compare_types_e
hwloc_compare_types_e
Definition: hwloc.h:367
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:397
HWLOC_MEMBIND_DEFAULT
@ HWLOC_MEMBIND_DEFAULT
Reset the memory allocation policy to the system default. Depending on the operating system,...
Definition: hwloc.h:1368
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:569
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:223
hwloc_obj_attr_u::group
struct hwloc_obj_attr_u::hwloc_group_attr_s group
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:423
HWLOC_OBJ_OSDEV_DMA
@ HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
Definition: hwloc.h:338
hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream_type
hwloc_obj_bridge_type_t downstream_type
Definition: hwloc.h:640
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_obj_osdev_type_t
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
Type of a OS device.
hwloc_topology_cpubind_support::set_thisproc_cpubind
unsigned char set_thisproc_cpubind
Definition: hwloc.h:1977
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_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_topology_t
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition: hwloc.h:671
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:328
hwloc_get_nbobjs_by_type
static int hwloc_get_nbobjs_by_type(hwloc_topology_t topology, hwloc_obj_type_t type)
Returns the width of level type type.
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:574
hwloc_obj_type_string
const char * hwloc_obj_type_string(hwloc_obj_type_t type)
Return a constant stringified object type.
hwloc_obj::io_arity
unsigned io_arity
Number of I/O children. These children are listed in io_first_child.
Definition: hwloc.h:479
hwloc_topology_cpubind_support::set_thisthread_cpubind
unsigned char set_thisthread_cpubind
Definition: hwloc.h:1985
hwloc_obj_attr_u::hwloc_pcidev_attr_s::linkspeed
float linkspeed
Definition: hwloc.h:626
hwloc_topology_get_support
const struct hwloc_topology_support * hwloc_topology_get_support(hwloc_topology_t restrict topology)
Retrieve the topology support.
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:330
HWLOC_OBJ_PCI_DEVICE
@ HWLOC_OBJ_PCI_DEVICE
PCI device (filtered out by default). They are not added to the topology unless I/O discovery is enab...
Definition: hwloc.h:266
HWLOC_OBJ_OS_DEVICE
@ HWLOC_OBJ_OS_DEVICE
Operating system device (filtered out by default). They are not added to the topology unless I/O disc...
Definition: hwloc.h:273
HWLOC_OBJ_L3ICACHE
@ HWLOC_OBJ_L3ICACHE
Level 3 instruction Cache (filtered out by default).
Definition: hwloc.h:221
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:292
hwloc_obj::nodeset
hwloc_nodeset_t nodeset
NUMA nodes covered by this object or containing this object.
Definition: hwloc.h:529
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_topology_load
int hwloc_topology_load(hwloc_topology_t topology)
Build the actual topology.
hwloc_obj::complete_cpuset
hwloc_cpuset_t complete_cpuset
The complete CPU set of logical processors of this object,.
Definition: hwloc.h:516
hwloc_topology_cpubind_support::get_thisproc_cpubind
unsigned char get_thisproc_cpubind
Definition: hwloc.h:1979
hwloc_obj::complete_nodeset
hwloc_nodeset_t complete_nodeset
The complete NUMA node set of this object,.
Definition: hwloc.h:549
hwloc_obj_attr_u::hwloc_cache_attr_s::depth
unsigned depth
Depth of cache (e.g., L1, L2, ...etc.)
Definition: hwloc.h:605
hwloc_obj::infos
struct hwloc_info_s * infos
Array of stringified info type=name.
Definition: hwloc.h:565
hwloc_topology_dup
int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
Duplicate a topology.
hwloc_get_cpubind
int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
Get current process or thread binding.
HWLOC_TYPE_DEPTH_UNKNOWN
@ HWLOC_TYPE_DEPTH_UNKNOWN
No object of given type exists in the topology.
Definition: hwloc.h:801
hwloc_obj::first_child
struct hwloc_obj * first_child
First normal child.
Definition: hwloc.h:446
hwloc_get_type_or_below_depth
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.
hwloc_obj_attr_u::hwloc_pcidev_attr_s::dev
unsigned char dev
Definition: hwloc.h:622
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@0 upstream
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_topology_membind_support
Flags describing actual memory binding support for this topology.
Definition: hwloc.h:2005
hwloc_obj::cpuset
hwloc_cpuset_t cpuset
CPUs covered by this object.
Definition: hwloc.h:501
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_info_s
Object info.
Definition: hwloc.h:653
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_CPUBIND_THREAD
@ HWLOC_CPUBIND_THREAD
Bind current thread of current process.
Definition: hwloc.h:1141
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:142
HWLOC_TYPE_DEPTH_MEMCACHE
@ HWLOC_TYPE_DEPTH_MEMCACHE
Virtual depth for MemCache object.
Definition: hwloc.h:808
HWLOC_TYPE_FILTER_KEEP_NONE
@ HWLOC_TYPE_FILTER_KEEP_NONE
Ignore all objects of this type.
Definition: hwloc.h:2084
hwloc_topology_support
Set of flags describing actual support for this topology.
Definition: hwloc.h:2044
hwloc_const_bitmap_t
const struct hwloc_bitmap_s * hwloc_const_bitmap_t
a non-modifiable hwloc_bitmap_t
Definition: bitmap.h:70
hwloc_topology_membind_support::bind_membind
unsigned char bind_membind
Definition: hwloc.h:2027
HWLOC_CPUBIND_PROCESS
@ HWLOC_CPUBIND_PROCESS
Bind all threads of the current (possibly) multithreaded process.
Definition: hwloc.h:1137
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_compare_types
int hwloc_compare_types(hwloc_obj_type_t type1, hwloc_obj_type_t type2)
Compare the depth of two object types.
HWLOC_CPUBIND_STRICT
@ HWLOC_CPUBIND_STRICT
Request for strict binding from the OS.
Definition: hwloc.h:1166
hwloc_obj::memory_arity
unsigned memory_arity
Number of Memory children. These children are listed in memory_first_child.
Definition: hwloc.h:461
HWLOC_TYPE_DEPTH_BRIDGE
@ HWLOC_TYPE_DEPTH_BRIDGE
Virtual depth for bridge object level.
Definition: hwloc.h:804
hwloc_obj_attr_u::osdev
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
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:1399
hwloc_obj_attr_u::bridge
struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
hwloc_obj_attr_u::hwloc_pcidev_attr_s::device_id
unsigned short device_id
Definition: hwloc.h:624
hwloc_info_s::name
char * name
Info name.
Definition: hwloc.h:654
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_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:1392
hwloc_topology_membind_support::set_thisproc_membind
unsigned char set_thisproc_membind
Definition: hwloc.h:2007
hwloc_obj_attr_u::hwloc_bridge_attr_s
Bridge specific Object Attribues.
Definition: hwloc.h:629
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_discovery_support::pu
unsigned char pu
Detecting the number of PU objects is supported.
Definition: hwloc.h:1959
hwloc_const_nodeset_t
hwloc_const_bitmap_t hwloc_const_nodeset_t
A non-modifiable hwloc_nodeset_t.
Definition: hwloc.h:160
HWLOC_OBJ_BRIDGE_PCI
@ HWLOC_OBJ_BRIDGE_PCI
PCI-side of a bridge.
Definition: hwloc.h:323
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:436
hwloc_topology_membind_support::alloc_membind
unsigned char alloc_membind
Definition: hwloc.h:2023
hwloc_obj::next_sibling
struct hwloc_obj * next_sibling
Next object below the same parent (inside the same list of children).
Definition: hwloc.h:437
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_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:1904
hwloc_topology_cpubind_support
Flags describing actual PU binding support for this topology.
Definition: hwloc.h:1975
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subvendor_id
unsigned short subvendor_id
Definition: hwloc.h:624
hwloc_obj_attr_u::hwloc_cache_attr_s::associativity
int associativity
Ways of associativity, -1 if fully associative, 0 if unknown.
Definition: hwloc.h:607
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_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:140
HWLOC_OBJ_L2CACHE
@ HWLOC_OBJ_L2CACHE
Level 2 Data (or Unified) Cache.
Definition: hwloc.h:214
hwloc_obj_attr_u::hwloc_bridge_attr_s::domain
unsigned short domain
Definition: hwloc.h:636
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:1925
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:616
hwloc_topology_destroy
void hwloc_topology_destroy(hwloc_topology_t topology)
Terminate and free a topology context.
hwloc_info_s::value
char * value
Info value.
Definition: hwloc.h:655
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:596
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:2199
HWLOC_TYPE_DEPTH_OS_DEVICE
@ HWLOC_TYPE_DEPTH_OS_DEVICE
Virtual depth for software device object level.
Definition: hwloc.h:806
hwloc_obj_attr_u::hwloc_osdev_attr_s
OS Device specific Object Attributes.
Definition: hwloc.h:644
hwloc_obj::subtype
char * subtype
Subtype string to better describe the type field.
Definition: hwloc.h:388
hwloc_topology_get_depth
int hwloc_topology_get_depth(hwloc_topology_t restrict topology)
Get the depth of the hierarchical tree of objects.
HWLOC_OBJ_L5CACHE
@ HWLOC_OBJ_L5CACHE
Level 5 Data (or Unified) Cache.
Definition: hwloc.h:217
hwloc_get_root_obj
static hwloc_obj_t hwloc_get_root_obj(hwloc_topology_t topology)
Returns the top-object of the topology-tree.
hwloc_obj_attr_u::hwloc_bridge_attr_s::pci
struct hwloc_pcidev_attr_s pci
Definition: hwloc.h:631
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:598
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:1407
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_obj::type
hwloc_obj_type_t type
Type of object.
Definition: hwloc.h:387
HWLOC_OBJ_BRIDGE
@ HWLOC_OBJ_BRIDGE
Bridge (filtered out by default). Any bridge that connects the host or an I/O bus,...
Definition: hwloc.h:257
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_membind_support::firsttouch_membind
unsigned char firsttouch_membind
Definition: hwloc.h:2025
hwloc_topology_membind_support::get_proc_membind
unsigned char get_proc_membind
Definition: hwloc.h:2013
hwloc_obj_attr_u::hwloc_bridge_attr_s::subordinate_bus
unsigned char subordinate_bus
Definition: hwloc.h:637
HWLOC_OBJ_L4CACHE
@ HWLOC_OBJ_L4CACHE
Level 4 Data (or Unified) Cache.
Definition: hwloc.h:216
hwloc_obj_osdev_type_e
hwloc_obj_osdev_type_e
Type of a OS device.
Definition: hwloc.h:327
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:2193
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:1447
hwloc_topology_cpubind_support::get_proc_cpubind
unsigned char get_proc_cpubind
Definition: hwloc.h:1983
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:450
HWLOC_TYPE_DEPTH_MISC
@ HWLOC_TYPE_DEPTH_MISC
Virtual depth for Misc object.
Definition: hwloc.h:807
hwloc_topology_cpubind_support::get_thread_cpubind
unsigned char get_thread_cpubind
Definition: hwloc.h:1991
hwloc_get_obj_by_type
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.
hwloc_obj::infos_count
unsigned infos_count
Size of infos array.
Definition: hwloc.h:566
hwloc_obj_attr_u::hwloc_pcidev_attr_s
PCI Device specific Object Attributes.
Definition: hwloc.h:620
hwloc_topology_membind_support::migrate_membind
unsigned char migrate_membind
Definition: hwloc.h:2033
hwloc_obj_attr_u::hwloc_pcidev_attr_s::revision
unsigned char revision
Definition: hwloc.h:625
HWLOC_OBJ_MISC
@ HWLOC_OBJ_MISC
Miscellaneous objects (filtered out by default). Objects without particular meaning,...
Definition: hwloc.h:281
HWLOC_OBJ_OSDEV_COPROC
@ HWLOC_OBJ_OSDEV_COPROC
Operating system co-processor device. For instance "mic0" for a Xeon Phi (MIC) on Linux,...
Definition: hwloc.h:340
hwloc_topology_membind_support::interleave_membind
unsigned char interleave_membind
Definition: hwloc.h:2029
HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
@ HWLOC_ALLOW_FLAG_LOCAL_RESTRICTIONS
Only allow objects that are available to the current process.
Definition: hwloc.h:2249
HWLOC_MEMBIND_BYNODESET
@ HWLOC_MEMBIND_BYNODESET
Consider the bitmap argument as a nodeset.
Definition: hwloc.h:1471
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_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:494
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_allow_flags_e
hwloc_allow_flags_e
Flags to be given to hwloc_topology_allow().
Definition: hwloc.h:2235
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:68
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:1433
hwloc_obj_attr_u::numanode
struct hwloc_obj_attr_u::hwloc_numanode_attr_s numanode
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:802
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:613
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:2205
HWLOC_OBJ_CACHE_DATA
@ HWLOC_OBJ_CACHE_DATA
Data cache.
Definition: hwloc.h:316
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_support::discovery
struct hwloc_topology_discovery_support * discovery
Definition: hwloc.h:2045
hwloc_obj::next_cousin
struct hwloc_obj * next_cousin
Next object of same type and depth.
Definition: hwloc.h:431
HWLOC_ALLOW_FLAG_ALL
@ HWLOC_ALLOW_FLAG_ALL
Mark all objects as allowed in the topology.
Definition: hwloc.h:2240