Hardware Locality (hwloc)  v1.11-20220406.0500.git093316a8
hwloc.h
1 /*
2  * Copyright © 2009 CNRS
3  * Copyright © 2009-2019 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 
50 #ifndef HWLOC_H
51 #define HWLOC_H
52 
53 #include <hwloc/autogen/config.h>
54 #include <sys/types.h>
55 #include <stdio.h>
56 #include <string.h>
57 #include <limits.h>
58 
59 /*
60  * Symbol transforms
61  */
62 #include <hwloc/rename.h>
63 
64 /*
65  * Bitmap definitions
66  */
67 
68 #include <hwloc/bitmap.h>
69 
70 
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 
75 
88 #define HWLOC_API_VERSION 0x00010b06
89 
94 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
95 
97 #define HWLOC_COMPONENT_ABI 4
98 
135 
155 
170 typedef enum {
171  /* ***************************************************************
172  WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
173 
174  If new enum values are added here, you MUST also go update the
175  obj_type_order[] and obj_order_type[] arrays in src/topology.c.
176 
177  WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
178  *************************************************************** */
179 
257  HWLOC_OBJ_TYPE_MAX
259  /* ***************************************************************
260  WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
261 
262  If new enum values are added here, you MUST also go update the
263  obj_type_order[] and obj_order_type[] arrays in src/topology.c.
264 
265  WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
266  *************************************************************** */
268 
276 
282 
302 
320 HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const;
321 
324 };
325 
334 union hwloc_obj_attr_u;
335 
338  hwloc_uint64_t total_memory;
339  hwloc_uint64_t local_memory;
342  unsigned page_types_len;
349  hwloc_uint64_t size;
350  hwloc_uint64_t count;
351  } * page_types;
352 };
353 
358 struct hwloc_obj {
359  /* physical information */
362  unsigned os_index;
366  char *name;
376  /* global position */
377  unsigned depth;
392  unsigned logical_index;
396  signed os_level;
398  /* cousins are all objects of the same type (and depth) across the entire topology */
402  /* children of the same parent are siblings, even if they may have different type and depth */
403  struct hwloc_obj *parent;
404  unsigned sibling_rank;
408  /* children array below this object */
409  unsigned arity;
410  struct hwloc_obj **children;
414  /* misc */
415  void *userdata;
420  /* cpusets and nodesets */
509  unsigned distances_count;
510 
512  unsigned infos_count;
519 };
523 typedef struct hwloc_obj * hwloc_obj_t;
524 
529  hwloc_uint64_t size;
530  unsigned depth;
531  unsigned linesize;
535  } cache;
538  unsigned depth;
539  unsigned char dont_merge;
540  } group;
543  unsigned short domain;
544  unsigned char bus, dev, func;
545  unsigned short class_id;
547  unsigned char revision;
548  float linkspeed; /* in GB/s */
549  } pcidev;
552  union {
554  } upstream;
556  union {
557  struct {
558  unsigned short domain;
560  } pci;
561  } downstream;
563  unsigned depth;
564  } bridge;
568  } osdev;
569 };
570 
585  unsigned relative_depth;
587  unsigned nbobjs;
592  float *latency;
604  float latency_max;
605  float latency_base;
609 };
610 
616  char *name;
617  char *value;
618 };
619 
628 struct hwloc_topology;
633 typedef struct hwloc_topology * hwloc_topology_t;
634 
641 HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp);
642 
663 HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology);
664 
669 HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology);
670 
681 HWLOC_DECLSPEC int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology);
682 
694 HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology);
695 
732 HWLOC_DECLSPEC int hwloc_topology_ignore_type(hwloc_topology_t topology, hwloc_obj_type_t type);
733 
743 
751 
774 
794 
807 
816 
826 
834 
855 };
856 
866 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
867 
874 HWLOC_DECLSPEC unsigned long hwloc_topology_get_flags (hwloc_topology_t topology);
875 
890 HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
891 
918 HWLOC_DECLSPEC int hwloc_topology_set_fsroot(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict fsroot_path);
919 
947 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
948 
975 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
976 
1003 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
1004 
1024 HWLOC_DECLSPEC int hwloc_topology_set_custom(hwloc_topology_t topology);
1025 
1044 HWLOC_DECLSPEC int hwloc_topology_set_distance_matrix(hwloc_topology_t __hwloc_restrict topology,
1045  hwloc_obj_type_t type, unsigned nbobjs,
1046  unsigned *os_index, float *distances);
1047 
1055 HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
1056 
1060  unsigned char pu;
1061 };
1062 
1070  unsigned char set_thisproc_cpubind;
1072  unsigned char get_thisproc_cpubind;
1074  unsigned char set_proc_cpubind;
1076  unsigned char get_proc_cpubind;
1078  unsigned char set_thisthread_cpubind;
1080  unsigned char get_thisthread_cpubind;
1082  unsigned char set_thread_cpubind;
1084  unsigned char get_thread_cpubind;
1091 };
1092 
1100  unsigned char set_thisproc_membind;
1102  unsigned char get_thisproc_membind;
1104  unsigned char set_proc_membind;
1106  unsigned char get_proc_membind;
1108  unsigned char set_thisthread_membind;
1110  unsigned char get_thisthread_membind;
1112  unsigned char set_area_membind;
1114  unsigned char get_area_membind;
1116  unsigned char alloc_membind;
1118  unsigned char firsttouch_membind;
1120  unsigned char bind_membind;
1122  unsigned char interleave_membind;
1124  unsigned char replicate_membind;
1126  unsigned char nexttouch_membind;
1128  unsigned char migrate_membind;
1130  unsigned char get_area_memlocation;
1131 };
1132 
1143 };
1144 
1154 HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology);
1155 
1166 HWLOC_DECLSPEC void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata);
1167 
1173 HWLOC_DECLSPEC void * hwloc_topology_get_userdata(hwloc_topology_t topology);
1174 
1195 HWLOC_DECLSPEC unsigned hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure;
1196 
1221 HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type);
1222 
1229 };
1230 
1245 static __hwloc_inline int
1246 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
1247 
1262 static __hwloc_inline int
1263 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
1264 
1272 HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, unsigned depth) __hwloc_attribute_pure;
1273 
1276 HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, unsigned depth) __hwloc_attribute_pure;
1277 
1283 static __hwloc_inline int
1284 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
1285 
1291 static __hwloc_inline hwloc_obj_t
1292 hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
1293 
1295 HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, unsigned depth, unsigned idx) __hwloc_attribute_pure;
1296 
1303 static __hwloc_inline hwloc_obj_t
1304 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
1305 
1310 static __hwloc_inline hwloc_obj_t
1311 hwloc_get_next_obj_by_depth (hwloc_topology_t topology, unsigned depth, hwloc_obj_t prev);
1312 
1319 static __hwloc_inline hwloc_obj_t
1321  hwloc_obj_t prev);
1322 
1338 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
1339 
1353 HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj,
1354  int verbose);
1355 
1367 HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj, const char * __hwloc_restrict separator,
1368  int verbose);
1369 
1377 HWLOC_DECLSPEC int hwloc_obj_cpuset_snprintf(char * __hwloc_restrict str, size_t size, size_t nobj, const hwloc_obj_t * __hwloc_restrict objs);
1378 
1408 HWLOC_DECLSPEC int hwloc_obj_type_sscanf(const char *string,
1409  hwloc_obj_type_t *typep,
1410  int *depthattrp,
1411  void *typeattrp, size_t typeattrsize);
1412 
1428 static __hwloc_inline const char *
1429 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
1430 
1445 HWLOC_DECLSPEC void hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value);
1446 
1518 typedef enum {
1522 
1526 
1551 
1569 
1575 HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
1576 
1582 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1583 
1595 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
1596 
1608 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1609 
1610 #ifdef hwloc_thread_t
1611 
1618 HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags);
1619 #endif
1620 
1621 #ifdef hwloc_thread_t
1622 
1629 HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
1630 #endif
1631 
1645 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
1646 
1663 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
1664 
1746 typedef enum {
1757 
1767 
1771 
1780 
1793 
1800 
1807 
1821 typedef enum {
1827 
1832 
1840 
1846 
1859 
1872 
1885 HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
1886 
1902 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_bitmap_t set, hwloc_membind_policy_t policy, int flags);
1903 
1945 HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
1946 
1991 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags);
1992 
2002 HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
2003 
2016 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);
2017 
2054 HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
2055 
2095 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);
2096 
2104 HWLOC_DECLSPEC int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
2105 
2116 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);
2117 
2142 HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
2143 
2171 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);
2172 
2192 HWLOC_DECLSPEC int hwloc_get_area_memlocation(hwloc_topology_t topology, const void *addr, size_t len, hwloc_bitmap_t set, int flags);
2193 
2201 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
2202 
2214 HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
2215 
2230 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;
2231 
2238 static __hwloc_inline void *
2239 hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
2240 
2250 static __hwloc_inline void *
2251 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;
2252 
2256 HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len);
2257 
2280 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object_by_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, const char *name);
2281 
2297 HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, const char *name);
2298 
2306 
2312 
2318 };
2319 
2341 HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, unsigned long flags);
2342 
2376 HWLOC_DECLSPEC int hwloc_custom_insert_topology(hwloc_topology_t newtopology, hwloc_obj_t newparent, hwloc_topology_t oldtopology, hwloc_obj_t oldroot);
2377 
2399 HWLOC_DECLSPEC hwloc_obj_t hwloc_custom_insert_group_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, int groupdepth);
2400 
2426 HWLOC_DECLSPEC int hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath);
2427 
2449 HWLOC_DECLSPEC int hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen);
2450 
2452 HWLOC_DECLSPEC void hwloc_free_xmlbuffer(hwloc_topology_t topology, char *xmlbuffer);
2453 
2473  void (*export_cb)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj));
2474 
2500 HWLOC_DECLSPEC int hwloc_export_obj_userdata(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length);
2501 
2515 HWLOC_DECLSPEC int hwloc_export_obj_userdata_base64(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length);
2516 
2540  void (*import_cb)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length));
2541 
2560 
2568 };
2569 
2588  HWLOC_DECLSPEC int hwloc_topology_export_synthetic(hwloc_topology_t topology, char *buffer, size_t buflen, unsigned long flags);
2589 
2594 #ifdef __cplusplus
2595 } /* extern "C" */
2596 #endif
2597 
2598 
2599 /* high-level helpers */
2600 #include <hwloc/helper.h>
2601 
2602 /* inline code of some functions above */
2603 #include <hwloc/inlines.h>
2604 
2605 /* topology diffs */
2606 #include <hwloc/diff.h>
2607 
2608 /* deprecated headers */
2609 #include <hwloc/deprecated.h>
2610 
2611 #endif /* HWLOC_H */
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_compare_types_e
hwloc_compare_types_e
Definition: hwloc.h:322
hwloc_const_cpuset_t
hwloc_const_bitmap_t hwloc_const_cpuset_t
A non-modifiable hwloc_cpuset_t.
Definition: hwloc.h:134
hwloc_topology_export_synthetic_flags_e
hwloc_topology_export_synthetic_flags_e
Flags for exporting synthetic topologies.
Definition: hwloc.h:2553
hwloc_distances_s::latency_base
float latency_base
The multiplier that should be applied to latency matrix to retrieve the original OS-provided latencie...
Definition: hwloc.h:605
hwloc_obj_attr_u::hwloc_bridge_attr_s::secondary_bus
unsigned char secondary_bus
Definition: hwloc.h:559
hwloc_topology_export_synthetic
int hwloc_topology_export_synthetic(hwloc_topology_t topology, char *buffer, size_t buflen, unsigned long flags)
Export the topology as a synthetic string.
hwloc_free_xmlbuffer
void hwloc_free_xmlbuffer(hwloc_topology_t topology, char *xmlbuffer)
Free a buffer allocated by hwloc_topology_export_xmlbuffer()
hwloc_topology_insert_misc_object_by_cpuset
hwloc_obj_t hwloc_topology_insert_misc_object_by_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, const char *name)
Add a MISC object to the topology.
hwloc_get_api_version
unsigned hwloc_get_api_version(void)
Indicate at runtime which hwloc API version was used at build time.
hwloc_topology_support
Set of flags describing actual support for this topology.
Definition: hwloc.h:1139
HWLOC_OBJ_PACKAGE
@ HWLOC_OBJ_PACKAGE
Physical package. The physical package that usually gets inserted into a socket on the motherboard....
Definition: hwloc.h:199
hwloc_export_obj_userdata
int hwloc_export_obj_userdata(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
Export some object userdata to XML.
hwloc_topology_membind_support::alloc_membind
unsigned char alloc_membind
Definition: hwloc.h:1116
hwloc_obj_t
struct hwloc_obj * hwloc_obj_t
Convenience typedef; a pointer to a struct hwloc_obj.
Definition: hwloc.h:523
hwloc_obj_memory_s::page_types_len
unsigned page_types_len
Size of array page_types.
Definition: hwloc.h:342
hwloc_obj_attr_u::hwloc_bridge_attr_s::pci
struct hwloc_pcidev_attr_s pci
Definition: hwloc.h:553
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream_type
hwloc_obj_bridge_type_t upstream_type
Definition: hwloc.h:555
hwloc_obj_attr_u::hwloc_cache_attr_s::associativity
int associativity
Ways of associativity, -1 if fully associative, 0 if unknown.
Definition: hwloc.h:532
hwloc_obj::children
struct hwloc_obj ** children
Children, children[0 .. arity -1].
Definition: hwloc.h:410
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_get_proc_membind_nodeset
int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
Query the default memory binding policy and physical locality of the specified process.
HWLOC_OBJ_CACHE_UNIFIED
@ HWLOC_OBJ_CACHE_UNIFIED
Unified cache.
Definition: hwloc.h:271
HWLOC_OBJ_BRIDGE
@ HWLOC_OBJ_BRIDGE
Bridge. Any bridge that connects the host or an I/O bus, to another I/O bus. Bridge objects have neit...
Definition: hwloc.h:239
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:1831
hwloc_obj_info_s
Object info.
Definition: hwloc.h:615
hwloc_topology_set_userdata_export_callback
void hwloc_topology_set_userdata_export_callback(hwloc_topology_t topology, void(*export_cb)(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj))
Set the application-specific callback for exporting object userdata.
hwloc_topology_membind_support::get_thisproc_membind
unsigned char get_thisproc_membind
Definition: hwloc.h:1102
hwloc_topology_ignore_type
int hwloc_topology_ignore_type(hwloc_topology_t topology, hwloc_obj_type_t type)
Ignore an object type.
hwloc_topology_membind_support::firsttouch_membind
unsigned char firsttouch_membind
Definition: hwloc.h:1118
hwloc_topology_membind_support::set_proc_membind
unsigned char set_proc_membind
Definition: hwloc.h:1104
hwloc_obj_type_string
const char * hwloc_obj_type_string(hwloc_obj_type_t type)
Return a constant stringified object type.
hwloc_topology_get_userdata
void * hwloc_topology_get_userdata(hwloc_topology_t topology)
Retrieve the topology-specific userdata pointer.
hwloc_topology_discovery_support::pu
unsigned char pu
Detecting the number of PU objects is supported.
Definition: hwloc.h:1060
hwloc_obj_attr_u::hwloc_osdev_attr_s::type
hwloc_obj_osdev_type_t type
Definition: hwloc.h:567
hwloc_obj_cpuset_snprintf
int hwloc_obj_cpuset_snprintf(char *restrict str, size_t size, size_t nobj, const hwloc_obj_t *restrict objs)
Stringify the cpuset containing a set of objects.
hwloc_distances_s::relative_depth
unsigned relative_depth
Relative depth of the considered objects below the object containing this distance information.
Definition: hwloc.h:585
hwloc_obj_attr_u::hwloc_bridge_attr_s::upstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@0 upstream
HWLOC_TYPE_DEPTH_MULTIPLE
@ HWLOC_TYPE_DEPTH_MULTIPLE
Objects of given type exist at different depth in the topology.
Definition: hwloc.h:1225
HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM
@ HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM
Detect the whole system, ignore reservations and offline settings.
Definition: hwloc.h:773
HWLOC_CPUBIND_NOMEMBIND
@ HWLOC_CPUBIND_NOMEMBIND
Avoid any effect on memory binding.
Definition: hwloc.h:1567
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_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:392
hwloc_topology_membind_support::interleave_membind
unsigned char interleave_membind
Definition: hwloc.h:1122
HWLOC_CPUBIND_STRICT
@ HWLOC_CPUBIND_STRICT
Request for strict binding from the OS.
Definition: hwloc.h:1550
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:220
hwloc_obj::infos_count
unsigned infos_count
Size of infos array.
Definition: hwloc.h:512
HWLOC_TYPE_UNORDERED
@ HWLOC_TYPE_UNORDERED
Value returned by hwloc_compare_types() when types can not be compared.
Definition: hwloc.h:323
hwloc_obj::parent
struct hwloc_obj * parent
Parent, NULL if root (system object)
Definition: hwloc.h:403
hwloc_obj_attr_u::hwloc_pcidev_attr_s::revision
unsigned char revision
Definition: hwloc.h:547
hwloc_obj::complete_nodeset
hwloc_nodeset_t complete_nodeset
The complete NUMA node set of this object,.
Definition: hwloc.h:481
hwloc_topology_set_userdata
void hwloc_topology_set_userdata(hwloc_topology_t topology, const void *userdata)
Set the topology-specific userdata pointer.
hwloc_topology_flags_e
hwloc_topology_flags_e
Flags to be set onto a topology context before load.
Definition: hwloc.h:757
hwloc_topology_support::cpubind
struct hwloc_topology_cpubind_support * cpubind
Definition: hwloc.h:1141
hwloc_distances_s::latency_max
float latency_max
The maximal value in the latency matrix.
Definition: hwloc.h:604
hwloc_topology_membind_support
Flags describing actual memory binding support for this topology.
Definition: hwloc.h:1098
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:211
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_attr_u::hwloc_group_attr_s
Group-specific Object Attributes.
Definition: hwloc.h:537
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:297
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:854
HWLOC_OBJ_CACHE_DATA
@ HWLOC_OBJ_CACHE_DATA
Data cache.
Definition: hwloc.h:272
hwloc_distances_s::nbobjs
unsigned nbobjs
Number of objects considered in the matrix. It is the number of descendant objects at relative_depth ...
Definition: hwloc.h:587
HWLOC_OBJ_SYSTEM
@ HWLOC_OBJ_SYSTEM
Whole system (may be a cluster of machines). The whole system that is accessible to hwloc....
Definition: hwloc.h:180
hwloc_topology_set_fsroot
int hwloc_topology_set_fsroot(hwloc_topology_t restrict topology, const char *restrict fsroot_path)
Change the file-system root path when building the topology from sysfs/procfs.
hwloc_obj_attr_u::hwloc_bridge_attr_s::downstream
union hwloc_obj_attr_u::hwloc_bridge_attr_s::@1 downstream
hwloc_obj_cache_type_e
hwloc_obj_cache_type_e
Cache type.
Definition: hwloc.h:270
hwloc_obj_attr_u::bridge
struct hwloc_obj_attr_u::hwloc_bridge_attr_s bridge
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:287
hwloc_membind_flags_t
hwloc_membind_flags_t
Memory binding flags.
Definition: hwloc.h:1821
hwloc_obj_attr_u::hwloc_pcidev_attr_s::class_id
unsigned short class_id
Definition: hwloc.h:545
hwloc_get_nbobjs_by_depth
unsigned hwloc_get_nbobjs_by_depth(hwloc_topology_t topology, unsigned depth)
Returns the width of level at depth depth.
hwloc_obj_attr_u::pcidev
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
hwloc_obj::infos
struct hwloc_obj_info_s * infos
Array of stringified info type=name.
Definition: hwloc.h:511
HWLOC_MEMBIND_REPLICATE
@ HWLOC_MEMBIND_REPLICATE
Replicate memory on the given nodes; reads from this memory will attempt to be serviced from the NUMA...
Definition: hwloc.h:1792
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:1799
hwloc_topology_support::discovery
struct hwloc_topology_discovery_support * discovery
Definition: hwloc.h:1140
hwloc_obj_attr_u::hwloc_pcidev_attr_s::bus
unsigned char bus
Definition: hwloc.h:544
hwloc_set_membind_nodeset
int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, 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_obj_attr_u
Object type-specific Attributes.
Definition: hwloc.h:526
hwloc_topology_cpubind_support::set_thisproc_cpubind
unsigned char set_thisproc_cpubind
Definition: hwloc.h:1070
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_obj_attr_u::cache
struct hwloc_obj_attr_u::hwloc_cache_attr_s cache
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_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_topology_set_xml
int hwloc_topology_set_xml(hwloc_topology_t restrict topology, const char *restrict xmlpath)
Enable XML-file based topology.
hwloc_topology_init
int hwloc_topology_init(hwloc_topology_t *topologyp)
Allocate a topology context.
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:366
hwloc_topology_set_custom
int hwloc_topology_set_custom(hwloc_topology_t topology)
Prepare the topology for custom assembly.
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subdevice_id
unsigned short subdevice_id
Definition: hwloc.h:546
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_export_xml
int hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath)
Export the topology into an XML file.
HWLOC_TYPE_DEPTH_PCI_DEVICE
@ HWLOC_TYPE_DEPTH_PCI_DEVICE
Virtual depth for PCI device object level.
Definition: hwloc.h:1227
hwloc_get_obj_by_depth
hwloc_obj_t hwloc_get_obj_by_depth(hwloc_topology_t topology, unsigned depth, unsigned idx)
Returns the topology object at logical index idx from depth depth.
hwloc_obj_add_info
void 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_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_alloc
void * hwloc_alloc(hwloc_topology_t topology, size_t len)
Allocate some memory.
hwloc_obj::type
hwloc_obj_type_t type
Type of object.
Definition: hwloc.h:360
hwloc_obj_memory_s::total_memory
hwloc_uint64_t total_memory
Total memory (in bytes) in this object and its children.
Definition: hwloc.h:338
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_obj::allowed_cpuset
hwloc_cpuset_t allowed_cpuset
The CPU set of allowed logical processors.
Definition: hwloc.h:453
HWLOC_OBJ_CACHE_INSTRUCTION
@ HWLOC_OBJ_CACHE_INSTRUCTION
Instruction cache. Only used when the HWLOC_TOPOLOGY_FLAG_ICACHES topology flag is set.
Definition: hwloc.h:273
hwloc_topology_restrict
int hwloc_topology_restrict(hwloc_topology_t restrict topology, hwloc_const_cpuset_t cpuset, unsigned long flags)
Restrict the topology to the given CPU set.
HWLOC_OBJ_BRIDGE_HOST
@ HWLOC_OBJ_BRIDGE_HOST
Host-side of a bridge, only possible upstream.
Definition: hwloc.h:279
hwloc_topology_membind_support::nexttouch_membind
unsigned char nexttouch_membind
Definition: hwloc.h:1126
hwloc_obj_osdev_type_t
enum hwloc_obj_osdev_type_e hwloc_obj_osdev_type_t
Type of a OS device.
hwloc_topology_export_xmlbuffer
int hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen)
Export the topology into a newly-allocated XML memory buffer.
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:1826
hwloc_topology_membind_support::migrate_membind
unsigned char migrate_membind
Definition: hwloc.h:1128
hwloc_distances_s
Distances between objects.
Definition: hwloc.h:584
hwloc_topology_membind_support::get_area_memlocation
unsigned char get_area_memlocation
Definition: hwloc.h:1130
hwloc_obj_attr_u::group
struct hwloc_obj_attr_u::hwloc_group_attr_s group
hwloc_obj_attr_u::hwloc_pcidev_attr_s::vendor_id
unsigned short vendor_id
Definition: hwloc.h:546
hwloc_topology_get_flags
unsigned long hwloc_topology_get_flags(hwloc_topology_t topology)
Get OR'ed flags of a topology.
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_topology_t
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition: hwloc.h:633
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:1845
hwloc_topology_cpubind_support::get_proc_cpubind
unsigned char get_proc_cpubind
Definition: hwloc.h:1076
hwloc_obj_type_sscanf
int hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthattrp, void *typeattrp, size_t typeattrsize)
Return an object type and attributes from a type string.
hwloc_topology_check
void hwloc_topology_check(hwloc_topology_t topology)
Run internal checks on a topology structure.
hwloc_topology_is_thissystem
int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
Does the topology context come from this system?
hwloc_topology_membind_support::replicate_membind
unsigned char replicate_membind
Definition: hwloc.h:1124
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:190
hwloc_export_obj_userdata_base64
int hwloc_export_obj_userdata_base64(void *reserved, hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length)
Encode and export some object userdata to XML.
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_topology_cpubind_support::get_thisproc_last_cpu_location
unsigned char get_thisproc_last_cpu_location
Definition: hwloc.h:1086
hwloc_topology_membind_support::set_thisthread_membind
unsigned char set_thisthread_membind
Definition: hwloc.h:1108
hwloc_topology_get_support
const struct hwloc_topology_support * hwloc_topology_get_support(hwloc_topology_t restrict topology)
Retrieve the topology support.
HWLOC_TOPOLOGY_FLAG_WHOLE_IO
@ HWLOC_TOPOLOGY_FLAG_WHOLE_IO
Detect the whole PCI hierarchy.
Definition: hwloc.h:825
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_topology_membind_support::get_thisthread_membind
unsigned char get_thisthread_membind
Definition: hwloc.h:1110
hwloc_obj_memory_s::local_memory
hwloc_uint64_t local_memory
Local memory (in bytes)
Definition: hwloc.h:339
HWLOC_OBJ_CACHE
@ HWLOC_OBJ_CACHE
Cache. Can be L1i, L1d, L2, L3, ...
Definition: hwloc.h:204
hwloc_topology_dup
int hwloc_topology_dup(hwloc_topology_t *newtopology, hwloc_topology_t oldtopology)
Duplicate a topology.
HWLOC_MEMBIND_BYNODESET
@ HWLOC_MEMBIND_BYNODESET
Consider the bitmap argument as a nodeset.
Definition: hwloc.h:1870
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_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_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:1805
hwloc_alloc_membind_policy_nodeset
static void * hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
Allocate some memory on NUMA memory nodes specified by nodeset.
HWLOC_OBJ_OSDEV_NETWORK
@ HWLOC_OBJ_OSDEV_NETWORK
Operating system network device. For instance the "eth0" interface on Linux.
Definition: hwloc.h:290
hwloc_obj::arity
unsigned arity
Number of children.
Definition: hwloc.h:409
hwloc_topology_cpubind_support::get_thisthread_last_cpu_location
unsigned char get_thisthread_last_cpu_location
Definition: hwloc.h:1090
hwloc_obj_attr_u::hwloc_bridge_attr_s
Bridge specific Object Attribues.
Definition: hwloc.h:551
hwloc_obj::online_cpuset
hwloc_cpuset_t online_cpuset
The CPU set of online logical processors.
Definition: hwloc.h:445
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_get_depth_type
hwloc_obj_type_t hwloc_get_depth_type(hwloc_topology_t topology, unsigned depth)
Returns the type of objects at depth depth.
hwloc_topology_discovery_support
Flags describing actual discovery support for this topology.
Definition: hwloc.h:1058
hwloc_topology_ignore_type_keep_structure
int hwloc_topology_ignore_type_keep_structure(hwloc_topology_t topology, hwloc_obj_type_t type)
Ignore an object type if it does not bring any structure.
hwloc_topology_load
int hwloc_topology_load(hwloc_topology_t topology)
Build the actual topology.
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_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_cpubind
int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags)
Get current process or thread binding.
hwloc_const_nodeset_t
hwloc_const_bitmap_t hwloc_const_nodeset_t
A non-modifiable hwloc_nodeset_t.
Definition: hwloc.h:154
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_topology_cpubind_support::set_thisthread_cpubind
unsigned char set_thisthread_cpubind
Definition: hwloc.h:1078
hwloc_restrict_flags_e
hwloc_restrict_flags_e
Flags to be given to hwloc_topology_restrict().
Definition: hwloc.h:2300
hwloc_topology_cpubind_support::get_thisthread_cpubind
unsigned char get_thisthread_cpubind
Definition: hwloc.h:1080
hwloc_obj_attr_u::hwloc_osdev_attr_s
OS Device specific Object Attributes.
Definition: hwloc.h:566
hwloc_obj::next_cousin
struct hwloc_obj * next_cousin
Next object of same type and depth.
Definition: hwloc.h:399
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_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_obj_attr_u::hwloc_bridge_attr_s::depth
unsigned depth
Definition: hwloc.h:563
hwloc_obj::next_sibling
struct hwloc_obj * next_sibling
Next object below the same parent.
Definition: hwloc.h:405
HWLOC_OBJ_BRIDGE_PCI
@ HWLOC_OBJ_BRIDGE_PCI
PCI-side of a bridge.
Definition: hwloc.h:280
hwloc_alloc_membind_nodeset
void * hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
Allocate some memory on NUMA memory nodes specified by nodeset.
hwloc_obj_attr_u::hwloc_pcidev_attr_s::subvendor_id
unsigned short subvendor_id
Definition: hwloc.h:546
hwloc_topology_support::membind
struct hwloc_topology_membind_support * membind
Definition: hwloc.h:1142
hwloc_topology_membind_support::bind_membind
unsigned char bind_membind
Definition: hwloc.h:1120
hwloc_set_proc_membind_nodeset
int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, 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_TYPE_DEPTH_UNKNOWN
@ HWLOC_TYPE_DEPTH_UNKNOWN
No object of given type exists in the topology.
Definition: hwloc.h:1224
hwloc_obj_memory_s
Object memory.
Definition: hwloc.h:337
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_get_type_depth_e
hwloc_get_type_depth_e
Definition: hwloc.h:1223
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_topology_membind_support::get_area_membind
unsigned char get_area_membind
Definition: hwloc.h:1114
hwloc_obj_attr_u::hwloc_cache_attr_s::size
hwloc_uint64_t size
Size of cache in bytes.
Definition: hwloc.h:529
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:415
hwloc_obj::memory
struct hwloc_obj_memory_s memory
Memory attributes.
Definition: hwloc.h:371
hwloc_obj_attr_u::osdev
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
hwloc_obj_attr_u::hwloc_pcidev_attr_s
PCI Device specific Object Attributes.
Definition: hwloc.h:542
hwloc_obj::nodeset
hwloc_nodeset_t nodeset
NUMA nodes covered by this object or containing this object.
Definition: hwloc.h:464
HWLOC_OBJ_MISC
@ HWLOC_OBJ_MISC
Miscellaneous objects. Objects without particular meaning, that can e.g. be added by the application ...
Definition: hwloc.h:233
HWLOC_OBJ_OSDEV_DMA
@ HWLOC_OBJ_OSDEV_DMA
Operating system dma engine device. For instance the "dma0chan0" DMA channel on Linux.
Definition: hwloc.h:295
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_topology_membind_support::get_proc_membind
unsigned char get_proc_membind
Definition: hwloc.h:1106
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:292
hwloc_topology_cpubind_support::get_thread_cpubind
unsigned char get_thread_cpubind
Definition: hwloc.h:1084
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_topology_cpubind_support::get_proc_last_cpu_location
unsigned char get_proc_last_cpu_location
Definition: hwloc.h:1088
hwloc_topology_destroy
void hwloc_topology_destroy(hwloc_topology_t topology)
Terminate and free a topology context.
hwloc_obj_attr_u::hwloc_cache_attr_s::depth
unsigned depth
Depth of cache (e.g., L1, L2, ...etc.)
Definition: hwloc.h:530
hwloc_obj_attr_u::hwloc_bridge_attr_s::subordinate_bus
unsigned char subordinate_bus
Definition: hwloc.h:559
hwloc_topology_cpubind_support::get_thisproc_cpubind
unsigned char get_thisproc_cpubind
Definition: hwloc.h:1072
hwloc_custom_insert_group_object_by_parent
hwloc_obj_t hwloc_custom_insert_group_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, int groupdepth)
Insert a new group object inside a custom topology.
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_obj_attr_u::hwloc_bridge_attr_s::downstream_type
hwloc_obj_bridge_type_t downstream_type
Definition: hwloc.h:562
hwloc_const_bitmap_t
const struct hwloc_bitmap_s * hwloc_const_bitmap_t
a non-modifiable hwloc_bitmap_t
Definition: bitmap.h:65
hwloc_obj_attr_u::hwloc_cache_attr_s
Cache-specific Object Attributes.
Definition: hwloc.h:528
hwloc_obj::complete_cpuset
hwloc_cpuset_t complete_cpuset
The complete CPU set of logical processors of this object,.
Definition: hwloc.h:434
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:539
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_TOPOLOGY_FLAG_IO_BRIDGES
@ HWLOC_TOPOLOGY_FLAG_IO_BRIDGES
Detect PCI bridges.
Definition: hwloc.h:815
hwloc_obj_memory_s::hwloc_obj_memory_page_type_s::size
hwloc_uint64_t size
Size of pages.
Definition: hwloc.h:349
hwloc_obj::prev_cousin
struct hwloc_obj * prev_cousin
Previous object of same type and depth.
Definition: hwloc.h:400
HWLOC_OBJ_OS_DEVICE
@ HWLOC_OBJ_OS_DEVICE
Operating system device. These objects have neither CPU sets nor node sets. They are not added to the...
Definition: hwloc.h:251
hwloc_topology_membind_support::set_area_membind
unsigned char set_area_membind
Definition: hwloc.h:1112
hwloc_obj::os_level
signed os_level
OS-provided physical level, -1 if unknown or meaningless.
Definition: hwloc.h:396
HWLOC_OBJ_PCI_DEVICE
@ HWLOC_OBJ_PCI_DEVICE
PCI device. These objects have neither CPU sets nor node sets. They are not added to the topology unl...
Definition: hwloc.h:246
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:373
HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES
@ HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES
Adapt distance matrices according to objects being removed during restriction. If this flag is not se...
Definition: hwloc.h:2305
hwloc_obj_info_s::value
char * value
Info value.
Definition: hwloc.h:617
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_next_obj_by_depth
static hwloc_obj_t hwloc_get_next_obj_by_depth(hwloc_topology_t topology, unsigned depth, hwloc_obj_t prev)
Returns the next object at depth depth.
hwloc_get_membind_nodeset
int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
Query the default memory binding policy and physical locality of the current process or thread.
HWLOC_MEMBIND_BIND
@ HWLOC_MEMBIND_BIND
Allocate memory on the specified nodes.
Definition: hwloc.h:1770
hwloc_topology_membind_support::set_thisproc_membind
unsigned char set_thisproc_membind
Definition: hwloc.h:1100
hwloc_cpubind_flags_t
hwloc_cpubind_flags_t
Process/Thread binding flags.
Definition: hwloc.h:1518
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:278
hwloc_topology_cpubind_support::set_thread_cpubind
unsigned char set_thread_cpubind
Definition: hwloc.h:1082
HWLOC_CPUBIND_THREAD
@ HWLOC_CPUBIND_THREAD
Bind current thread of current process.
Definition: hwloc.h:1525
hwloc_topology_insert_misc_object_by_parent
hwloc_obj_t hwloc_topology_insert_misc_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, const char *name)
Add a MISC object as a leaf of the topology.
hwloc_topology_ignore_all_keep_structure
int hwloc_topology_ignore_all_keep_structure(hwloc_topology_t topology)
Ignore all objects that do not bring any structure.
hwloc_topology_cpubind_support
Flags describing actual PU binding support for this topology.
Definition: hwloc.h:1068
HWLOC_OBJ_CORE
@ HWLOC_OBJ_CORE
Core. A computation unit (may be shared by several logical processors).
Definition: hwloc.h:207
hwloc_obj::distances
struct hwloc_distances_s ** distances
Distances between all objects at same depth below this object.
Definition: hwloc.h:508
hwloc_obj::distances_count
unsigned distances_count
Definition: hwloc.h:509
hwloc_obj_attr_u::hwloc_pcidev_attr_s::func
unsigned char func
Definition: hwloc.h:544
hwloc_obj_memory_s::hwloc_obj_memory_page_type_s::count
hwloc_uint64_t count
Number of pages of this size.
Definition: hwloc.h:350
hwloc_obj_attr_u::hwloc_group_attr_s::depth
unsigned depth
Depth of group object.
Definition: hwloc.h:538
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:151
hwloc_set_area_membind_nodeset
int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
Bind the already-allocated memory identified by (addr, len) to the NUMA node(s) specified by nodeset.
hwloc_topology_set_distance_matrix
int hwloc_topology_set_distance_matrix(hwloc_topology_t restrict topology, hwloc_obj_type_t type, unsigned nbobjs, unsigned *os_index, float *distances)
Provide a distance matrix.
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:63
hwloc_obj_memory_s::page_types
struct hwloc_obj_memory_s::hwloc_obj_memory_page_type_s * page_types
hwloc_topology_cpubind_support::set_proc_cpubind
unsigned char set_proc_cpubind
Definition: hwloc.h:1074
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:132
hwloc_obj::first_child
struct hwloc_obj * first_child
First child.
Definition: hwloc.h:411
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_distances_s::latency
float * latency
Matrix of latencies between objects, stored as a one-dimension array. May be NULL if the distances co...
Definition: hwloc.h:592
hwloc_obj_info_s::name
char * name
Info name.
Definition: hwloc.h:616
hwloc_obj::cpuset
hwloc_cpuset_t cpuset
CPUs covered by this object.
Definition: hwloc.h:421
hwloc_obj_attr_u::hwloc_pcidev_attr_s::domain
unsigned short domain
Definition: hwloc.h:543
hwloc_obj::allowed_nodeset
hwloc_nodeset_t allowed_nodeset
The set of allowed NUMA memory nodes.
Definition: hwloc.h:495
hwloc_custom_insert_topology
int hwloc_custom_insert_topology(hwloc_topology_t newtopology, hwloc_obj_t newparent, hwloc_topology_t oldtopology, hwloc_obj_t oldroot)
Insert an existing topology inside a custom topology.
hwloc_obj
Structure of a topology object.
Definition: hwloc.h:358
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:793
hwloc_obj_attr_u::hwloc_pcidev_attr_s::dev
unsigned char dev
Definition: hwloc.h:544
HWLOC_MEMBIND_NOCPUBIND
@ HWLOC_MEMBIND_NOCPUBIND
Avoid any effect on CPU binding.
Definition: hwloc.h:1858
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_FLAG_ICACHES
@ HWLOC_TOPOLOGY_FLAG_ICACHES
Detect instruction caches.
Definition: hwloc.h:833
hwloc_obj_cache_type_t
enum hwloc_obj_cache_type_e hwloc_obj_cache_type_t
Cache type.
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:2311
HWLOC_MEMBIND_FIRSTTOUCH
@ HWLOC_MEMBIND_FIRSTTOUCH
Allocate memory but do not immediately bind it to a specific locality. Instead, each page in the allo...
Definition: hwloc.h:1766
hwloc_obj_attr_u::hwloc_cache_attr_s::type
hwloc_obj_cache_type_t type
Cache type.
Definition: hwloc.h:534
hwloc_obj_type_t
hwloc_obj_type_t
Type of topology object.
Definition: hwloc.h:170
hwloc_obj_attr_u::hwloc_cache_attr_s::linesize
unsigned linesize
Cache-line size in bytes. 0 if unknown.
Definition: hwloc.h:531
HWLOC_MEMBIND_DEFAULT
@ HWLOC_MEMBIND_DEFAULT
Reset the memory allocation policy to the system default. Depending on the operating system,...
Definition: hwloc.h:1756
hwloc_obj_osdev_type_e
hwloc_obj_osdev_type_e
Type of a OS device.
Definition: hwloc.h:284
hwloc_obj::depth
unsigned depth
Vertical index in the hierarchy.
Definition: hwloc.h:377
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_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS
@ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_ATTRS
Do not export level attributes.
Definition: hwloc.h:2567
HWLOC_TYPE_DEPTH_BRIDGE
@ HWLOC_TYPE_DEPTH_BRIDGE
Virtual depth for bridge object level.
Definition: hwloc.h:1226
hwloc_obj::last_child
struct hwloc_obj * last_child
Last child.
Definition: hwloc.h:412
HWLOC_TOPOLOGY_FLAG_IO_DEVICES
@ HWLOC_TOPOLOGY_FLAG_IO_DEVICES
Detect PCI devices.
Definition: hwloc.h:806
hwloc_topology_set_userdata_import_callback
void hwloc_topology_set_userdata_import_callback(hwloc_topology_t topology, void(*import_cb)(hwloc_topology_t topology, hwloc_obj_t obj, const char *name, const void *buffer, size_t length))
Set the application-specific callback for importing userdata.
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:1779
hwloc_obj_attr_u::hwloc_bridge_attr_s::domain
unsigned short domain
Definition: hwloc.h:558
HWLOC_OBJ_OSDEV_BLOCK
@ HWLOC_OBJ_OSDEV_BLOCK
Operating system block device. For instance "sda" on Linux.
Definition: hwloc.h:285
hwloc_obj::symmetric_subtree
int symmetric_subtree
Set if the subtree of objects below this object is symmetric, which means all children and their chil...
Definition: hwloc.h:514
hwloc_get_area_membind_nodeset
int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags)
Query the physical NUMA node(s) and binding policy of the memory identified by (addr,...
hwloc_topology_get_depth
unsigned hwloc_topology_get_depth(hwloc_topology_t restrict topology)
Get the depth of the hierarchical tree of objects.
hwloc_obj_attr_u::hwloc_pcidev_attr_s::device_id
unsigned short device_id
Definition: hwloc.h:546
HWLOC_OBJ_MACHINE
@ HWLOC_OBJ_MACHINE
Machine. The typical root object type. A set of processors and memory with cache coherency.
Definition: hwloc.h:185
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::sibling_rank
unsigned sibling_rank
Index in parent's children[] array.
Definition: hwloc.h:404
HWLOC_MEMBIND_STRICT
@ HWLOC_MEMBIND_STRICT
Definition: hwloc.h:1839
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:2317
HWLOC_CPUBIND_PROCESS
@ HWLOC_CPUBIND_PROCESS
Bind all threads of the current (possibly) multithreaded process.
Definition: hwloc.h:1521
HWLOC_TYPE_DEPTH_OS_DEVICE
@ HWLOC_TYPE_DEPTH_OS_DEVICE
Virtual depth for software device object level.
Definition: hwloc.h:1228
hwloc_obj::os_index
unsigned os_index
OS-provided physical index number. It is not guaranteed unique across the entire machine,...
Definition: hwloc.h:362
hwloc_obj_memory_s::hwloc_obj_memory_page_type_s
Array of local memory page types, NULL if no local memory and page_types is 0.
Definition: hwloc.h:348
hwloc_membind_policy_t
hwloc_membind_policy_t
Memory binding policy.
Definition: hwloc.h:1746
HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES
@ HWLOC_TOPOLOGY_EXPORT_SYNTHETIC_FLAG_NO_EXTENDED_TYPES
Export extended types such as L2dcache as basic types such as Cache.
Definition: hwloc.h:2559
hwloc_topology_set_synthetic
int hwloc_topology_set_synthetic(hwloc_topology_t restrict topology, const char *restrict description)
Enable synthetic topology.
hwloc_obj_attr_u::hwloc_pcidev_attr_s::linkspeed
float linkspeed
Definition: hwloc.h:548
hwloc_obj::prev_sibling
struct hwloc_obj * prev_sibling
Previous object below the same parent.
Definition: hwloc.h:406