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 {hwloc_pcidev_attr_spci; } 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_sstructs.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_sstructs.struct hwloc_distances_s { unsigned int nbobjs; hwloc_obj_t * objs; unsigned long kind; hwloc_uint64_t * values; }An array ofhwloc_distances_sstructs.struct hwloc_group_attr_s { unsigned depth; unsigned kind; unsigned subkind; unsigned char dont_merge; }An array ofhwloc_group_attr_sstructs.struct hwloc_info_s { char * name; char * value; }An array ofhwloc_info_sstructs.struct hwloc_infos_s {struct hwloc_info_s* array; unsigned count; unsigned allocated; }An array ofhwloc_infos_sstructs.struct hwloc_location { enum hwloc_location_type_e type;hwloc_location_ulocation; }union hwloc_location_u { hwloc_cpuset_t cpuset; hwloc_obj_t object; }An array ofhwloc_location_ustructs.An array ofhwloc_locationstructs.struct hwloc_memory_page_type_s { hwloc_uint64_t size; hwloc_uint64_t count; }An array ofhwloc_memory_page_type_sstructs.struct hwloc_numanode_attr_s { hwloc_uint64_t local_memory; unsigned page_types_len;hwloc_memory_page_type_s* page_types; }An array ofhwloc_numanode_attr_sstructs.struct hwloc_obj { hwloc_obj_type_t type; char * subtype; unsigned os_index; char * name; hwloc_uint64_t total_memory;struct hwloc_obj_attr_u* attr; int depth; unsigned logical_index;struct hwloc_obj* next_cousin;struct hwloc_obj* prev_cousin;struct hwloc_obj* parent; unsigned sibling_rank;struct hwloc_obj* next_sibling;struct hwloc_obj* prev_sibling; unsigned arity;struct hwloc_obj** children;struct hwloc_obj* first_child;struct hwloc_obj* last_child; int symmetric_subtree; unsigned memory_arity;struct hwloc_obj* memory_first_child; unsigned io_arity;struct hwloc_obj* io_first_child; unsigned misc_arity;struct hwloc_obj* misc_first_child; hwloc_cpuset_t cpuset; hwloc_cpuset_t complete_cpuset; hwloc_nodeset_t nodeset; hwloc_nodeset_t complete_nodeset;struct hwloc_infos_sinfos; void * userdata; hwloc_uint64_t gp_index; }union struct hwloc_obj_attr_u {hwloc_numanode_attr_snumanode;hwloc_cache_attr_scache;hwloc_group_attr_sgroup;hwloc_pcidev_attr_spcidev;hwloc_bridge_attr_sbridge;hwloc_osdev_attr_sosdev; }An array ofhwloc_obj_attr_ustructs.An array ofhwloc_objstructs.struct hwloc_osdev_attr_s { hwloc_obj_osdev_types_t types; }An array ofhwloc_osdev_attr_sstructs.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_sstructs.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_supportstructs.struct hwloc_topology_diff_generic_s { hwloc_topology_diff_type_t type;hwloc_topology_diff_u* next; }An array ofhwloc_topology_diff_generic_sstructs.struct hwloc_topology_diff_obj_attr_generic_s { hwloc_topology_diff_obj_attr_type_t type; }An array ofhwloc_topology_diff_obj_attr_generic_sstructs.struct hwloc_topology_diff_obj_attr_s { hwloc_topology_diff_type_t type;struct hwloc_topology_diff_u* next; int obj_depth; unsigned int obj_index;struct hwloc_topology_diff_obj_attr_udiff; }An array ofhwloc_topology_diff_obj_attr_sstructs.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_sstructs.union struct hwloc_topology_diff_obj_attr_u {hwloc_topology_diff_obj_attr_generic_sgeneric;hwloc_topology_diff_obj_attr_uint64_suint64;hwloc_topology_diff_obj_attr_string_sstring; }An array ofhwloc_topology_diff_obj_attr_ustructs.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_sstructs.struct hwloc_topology_diff_too_complex_s { hwloc_topology_diff_type_t type;struct hwloc_topology_diff_u* next; int obj_depth; unsigned int obj_index; }An array ofhwloc_topology_diff_too_complex_sstructs.union struct hwloc_topology_diff_u {hwloc_topology_diff_generic_sgeneric;hwloc_topology_diff_obj_attr_sobj_attr;hwloc_topology_diff_too_complex_stoo_complex; }An array ofhwloc_topology_diff_ustructs.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_supportstructs.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_supportstructs.struct hwloc_topology_misc_support { unsigned char imported_support; }An array ofhwloc_topology_misc_supportstructs.struct hwloc_topology_support {struct hwloc_topology_discovery_support* discovery;struct hwloc_topology_cpubind_support* cpubind;struct hwloc_topology_membind_support* membind;struct hwloc_topology_misc_support* misc; }An array ofhwloc_topology_supportstructs.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)