Package org.lwjgl.util.hwloc
It also gathers various system attributes such as cache and memory information as well as the locality of I/O devices such as network interfaces, InfiniBand HCAs or GPUs.
hwloc primarily aims at helping applications with gathering information about increasingly complex parallel computing platforms so as to exploit them accordingly and efficiently. For instance, two tasks that tightly cooperate should probably be placed onto cores sharing a cache. However, two independent memory-intensive tasks should better be spread out onto different sockets so as to maximize their memory throughput.
hwloc may also help many applications just by providing a portable CPU and memory binding API and a reliable way to find out how many cores and/or hardware threads are available.
Resources
-
ClassDescription
struct hwloc_bridge_attr_s { union { {@link hwloc_pcidev_attr_s hwloc_pcidev_attr_s} pci; } upstream; hwloc_obj_bridge_type_t upstream_type; union { struct { unsigned int domain; unsigned char secondary_bus; unsigned char subordinate_bus; } pci; } downstream; hwloc_obj_bridge_type_t downstream_type; unsigned depth; }
An array ofhwloc_bridge_attr_s
structs.struct hwloc_cache_attr_s { hwloc_uint64_t size; unsigned depth; unsigned linesize; int associativity; hwloc_obj_cache_type_t type; }
An array ofhwloc_cache_attr_s
structs.struct hwloc_distances_s { unsigned int nbobjs; hwloc_obj_t * objs; unsigned long kind; hwloc_uint64_t * values; }
An array ofhwloc_distances_s
structs.struct hwloc_group_attr_s { unsigned depth; unsigned kind; unsigned subkind; unsigned char dont_merge; }
An array ofhwloc_group_attr_s
structs.struct hwloc_info_s { char * name; char * value; }
An array ofhwloc_info_s
structs.struct hwloc_infos_s { {@link hwloc_info_s struct hwloc_info_s} * array; unsigned count; unsigned allocated; }
An array ofhwloc_infos_s
structs.struct hwloc_location { enum hwloc_location_type_e type; {@link hwloc_location_u hwloc_location_u} location; }
union hwloc_location_u { hwloc_cpuset_t cpuset; hwloc_obj_t object; }
An array ofhwloc_location_u
structs.An array ofhwloc_location
structs.struct hwloc_memory_page_type_s { hwloc_uint64_t size; hwloc_uint64_t count; }
An array ofhwloc_memory_page_type_s
structs.struct hwloc_numanode_attr_s { hwloc_uint64_t local_memory; unsigned page_types_len; {@link hwloc_memory_page_type_s hwloc_memory_page_type_s} * page_types; }
An array ofhwloc_numanode_attr_s
structs.struct hwloc_obj { hwloc_obj_type_t type; char * subtype; unsigned os_index; char * name; hwloc_uint64_t total_memory; {@link hwloc_obj_attr_u struct hwloc_obj_attr_u} * attr; int depth; unsigned logical_index; {@link hwloc_obj struct hwloc_obj} * next_cousin; {@link hwloc_obj struct hwloc_obj} * prev_cousin; {@link hwloc_obj struct hwloc_obj} * parent; unsigned sibling_rank; {@link hwloc_obj struct hwloc_obj} * next_sibling; {@link hwloc_obj struct hwloc_obj} * prev_sibling; unsigned arity; {@link hwloc_obj struct hwloc_obj} ** children; {@link hwloc_obj struct hwloc_obj} * first_child; {@link hwloc_obj struct hwloc_obj} * last_child; int symmetric_subtree; unsigned memory_arity; {@link hwloc_obj struct hwloc_obj} * memory_first_child; unsigned io_arity; {@link hwloc_obj struct hwloc_obj} * io_first_child; unsigned misc_arity; {@link hwloc_obj struct hwloc_obj} * misc_first_child; hwloc_cpuset_t cpuset; hwloc_cpuset_t complete_cpuset; hwloc_nodeset_t nodeset; hwloc_nodeset_t complete_nodeset; {@link hwloc_infos_s struct hwloc_infos_s} infos; void * userdata; hwloc_uint64_t gp_index; }
union struct hwloc_obj_attr_u { {@link hwloc_numanode_attr_s hwloc_numanode_attr_s} numanode; {@link hwloc_cache_attr_s hwloc_cache_attr_s} cache; {@link hwloc_group_attr_s hwloc_group_attr_s} group; {@link hwloc_pcidev_attr_s hwloc_pcidev_attr_s} pcidev; {@link hwloc_bridge_attr_s hwloc_bridge_attr_s} bridge; {@link hwloc_osdev_attr_s hwloc_osdev_attr_s} osdev; }
An array ofhwloc_obj_attr_u
structs.An array ofhwloc_obj
structs.struct hwloc_osdev_attr_s { hwloc_obj_osdev_types_t types; }
An array ofhwloc_osdev_attr_s
structs.struct hwloc_pcidev_attr_s { unsigned int domain; unsigned char bus; unsigned char dev; unsigned char func; unsigned char prog_if; unsigned short class_id; unsigned short vendor_id; unsigned short device_id; unsigned short subvendor_id; unsigned short subdevice_id; unsigned char revision; float linkspeed; }
An array ofhwloc_pcidev_attr_s
structs.struct hwloc_topology_cpubind_support { unsigned char set_thisproc_cpubind; unsigned char get_thisproc_cpubind; unsigned char set_proc_cpubind; unsigned char get_proc_cpubind; unsigned char set_thisthread_cpubind; unsigned char get_thisthread_cpubind; unsigned char set_thread_cpubind; unsigned char get_thread_cpubind; unsigned char get_thisproc_last_cpu_location; unsigned char get_proc_last_cpu_location; unsigned char get_thisthread_last_cpu_location; }
An array ofhwloc_topology_cpubind_support
structs.struct hwloc_topology_diff_generic_s { hwloc_topology_diff_type_t type; {@link hwloc_topology_diff_u hwloc_topology_diff_u} * next; }
An array ofhwloc_topology_diff_generic_s
structs.struct hwloc_topology_diff_obj_attr_generic_s { hwloc_topology_diff_obj_attr_type_t type; }
An array ofhwloc_topology_diff_obj_attr_generic_s
structs.struct hwloc_topology_diff_obj_attr_s { hwloc_topology_diff_type_t type; {@link hwloc_topology_diff_u struct hwloc_topology_diff_u} * next; int obj_depth; unsigned int obj_index; {@link hwloc_topology_diff_obj_attr_u struct hwloc_topology_diff_obj_attr_u} diff; }
An array ofhwloc_topology_diff_obj_attr_s
structs.struct hwloc_topology_diff_obj_attr_string_s { hwloc_topology_diff_obj_attr_type_t type; char * name; char * oldvalue; char * newvalue; }
An array ofhwloc_topology_diff_obj_attr_string_s
structs.union struct hwloc_topology_diff_obj_attr_u { {@link hwloc_topology_diff_obj_attr_generic_s hwloc_topology_diff_obj_attr_generic_s} generic; {@link hwloc_topology_diff_obj_attr_uint64_s hwloc_topology_diff_obj_attr_uint64_s} uint64; {@link hwloc_topology_diff_obj_attr_string_s hwloc_topology_diff_obj_attr_string_s} string; }
An array ofhwloc_topology_diff_obj_attr_u
structs.struct hwloc_topology_diff_obj_attr_uint64_s { hwloc_topology_diff_obj_attr_type_t type; hwloc_uint64_t index; hwloc_uint64_t oldvalue; hwloc_uint64_t newvalue; }
An array ofhwloc_topology_diff_obj_attr_uint64_s
structs.struct hwloc_topology_diff_too_complex_s { hwloc_topology_diff_type_t type; {@link hwloc_topology_diff_u struct hwloc_topology_diff_u} * next; int obj_depth; unsigned int obj_index; }
An array ofhwloc_topology_diff_too_complex_s
structs.union struct hwloc_topology_diff_u { {@link hwloc_topology_diff_generic_s hwloc_topology_diff_generic_s} generic; {@link hwloc_topology_diff_obj_attr_s hwloc_topology_diff_obj_attr_s} obj_attr; {@link hwloc_topology_diff_too_complex_s hwloc_topology_diff_too_complex_s} too_complex; }
An array ofhwloc_topology_diff_u
structs.struct hwloc_topology_discovery_support { unsigned char pu; unsigned char numa; unsigned char numa_memory; unsigned char disallowed_pu; unsigned char disallowed_numa; unsigned char cpukind_efficiency; }
An array ofhwloc_topology_discovery_support
structs.struct hwloc_topology_membind_support { unsigned char set_thisproc_membind; unsigned char get_thisproc_membind; unsigned char set_proc_membind; unsigned char get_proc_membind; unsigned char set_thisthread_membind; unsigned char get_thisthread_membind; unsigned char alloc_membind; unsigned char set_area_membind; unsigned char get_area_membind; unsigned char get_area_memlocation; unsigned char firsttouch_membind; unsigned char bind_membind; unsigned char interleave_membind; unsigned char weighted_interleave_membind; unsigned char nexttouch_membind; unsigned char migrate_membind; }
An array ofhwloc_topology_membind_support
structs.struct hwloc_topology_misc_support { unsigned char imported_support; }
An array ofhwloc_topology_misc_support
structs.struct hwloc_topology_support { {@link hwloc_topology_discovery_support struct hwloc_topology_discovery_support} * discovery; {@link hwloc_topology_cpubind_support struct hwloc_topology_cpubind_support} * cpubind; {@link hwloc_topology_membind_support struct hwloc_topology_membind_support} * membind; {@link hwloc_topology_misc_support struct hwloc_topology_misc_support} * misc; }
An array ofhwloc_topology_support
structs.Contains the function pointers loaded from the HWLOCSharedLibrary
.Contains the function pointers loaded fromHWLoc.getLibrary()
.Contains the function pointers loaded fromHWLoc.getLibrary()
.Contains the function pointers loaded fromHWLoc.getLibrary()
.Callback function:(* anonymous)
Callback function:(* anonymous)
Callback function:(* anonymous)
Callback function:(* anonymous)