Top Description Interfaces Classes
module lwjgl.hwloc

Package org.lwjgl.util.hwloc

Annotations
@NonnullDefault

Contains bindings to the hwloc, a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading.

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.

Interface Summary

Modifier and TypeInterface and Description
public interface
topology_set_userdata_export_callbackI

Instances of this interface may be passed to the topology_set_userdata_export_callback method.

public interface
topology_set_userdata_import_callbackI

Instances of this interface may be passed to the topology_set_userdata_import_callback method.

Class Summary

Modifier and TypeClass and Description
public class
HWLoc

Native bindings to hwloc, a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading.

public class
hwloc_bridge_attr_s

Layout


struct hwloc_bridge_attr_s {
    union {
        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;
}
public class
hwloc_cache_attr_s

Layout


struct hwloc_cache_attr_s {
    hwloc_uint64_t size;
    unsigned depth;
    unsigned linesize;
    int associativity;
    hwloc_obj_cache_type_t type;
}
public class
hwloc_distances_s

Layout


struct hwloc_distances_s {
    unsigned int nbobjs;
    hwloc_obj_t * objs;
    unsigned long kind;
    hwloc_uint64_t * values;
}
public class
hwloc_group_attr_s

Layout


struct hwloc_group_attr_s {
    unsigned depth;
    unsigned kind;
    unsigned subkind;
    unsigned char dont_merge;
}
public class
hwloc_info_s

Layout


struct hwloc_info_s {
    char * name;
    char * value;
}
public class
hwloc_infos_s

Layout


struct hwloc_infos_s {
    struct hwloc_info_s * array;
    unsigned count;
    unsigned allocated;
}
public class
hwloc_location

Layout


struct hwloc_location {
    enum hwloc_location_type_e type;
    hwloc_location_u location;
}
public class
hwloc_location_u

Layout


union hwloc_location_u {
    hwloc_cpuset_t cpuset;
    hwloc_obj_t object;
}
public class
hwloc_memory_page_type_s

Layout


struct hwloc_memory_page_type_s {
    hwloc_uint64_t size;
    hwloc_uint64_t count;
}
public class
hwloc_numanode_attr_s

Layout


struct hwloc_numanode_attr_s {
    hwloc_uint64_t local_memory;
    unsigned page_types_len;
    hwloc_memory_page_type_s * page_types;
}
public class
hwloc_obj

Layout


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_s infos;
    void * userdata;
    hwloc_uint64_t gp_index;
}
public class
hwloc_obj_attr_u

Layout


union struct hwloc_obj_attr_u {
    hwloc_numanode_attr_s numanode;
    hwloc_cache_attr_s cache;
    hwloc_group_attr_s group;
    hwloc_pcidev_attr_s pcidev;
    hwloc_bridge_attr_s bridge;
    hwloc_osdev_attr_s osdev;
}
public class
hwloc_osdev_attr_s

Layout


struct hwloc_osdev_attr_s {
    hwloc_obj_osdev_type_t type;
}
public class
hwloc_pcidev_attr_s

Layout


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;
}
public class
hwloc_topology_cpubind_support

Layout


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;
}
public class
hwloc_topology_diff_generic_s

Layout


struct hwloc_topology_diff_generic_s {
    hwloc_topology_diff_type_t type;
    hwloc_topology_diff_u * next;
}
public class
hwloc_topology_diff_obj_attr_generic_s

Layout


struct hwloc_topology_diff_obj_attr_generic_s {
    hwloc_topology_diff_obj_attr_type_t type;
}
public class
hwloc_topology_diff_obj_attr_s

Layout


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_u diff;
}
public class
hwloc_topology_diff_obj_attr_string_s

Layout


struct hwloc_topology_diff_obj_attr_string_s {
    hwloc_topology_diff_obj_attr_type_t type;
    char * name;
    char * oldvalue;
    char * newvalue;
}
public class
public class
hwloc_topology_diff_obj_attr_uint64_s

Layout


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;
}
public class
hwloc_topology_diff_too_complex_s

Layout


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;
}
public class
hwloc_topology_diff_u

Layout


union struct hwloc_topology_diff_u {
    hwloc_topology_diff_generic_s generic;
    hwloc_topology_diff_obj_attr_s obj_attr;
    hwloc_topology_diff_too_complex_s too_complex;
}
public class
hwloc_topology_discovery_support

Layout


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;
}
public class
hwloc_topology_membind_support

Layout


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 set_area_membind;
    unsigned char get_area_membind;
    unsigned char alloc_membind;
    unsigned char firsttouch_membind;
    unsigned char bind_membind;
    unsigned char interleave_membind;
    unsigned char nexttouch_membind;
    unsigned char migrate_membind;
    unsigned char get_area_memlocation;
}
public class
hwloc_topology_misc_support

Layout


struct hwloc_topology_misc_support {
    unsigned char imported_support;
}
public class
public class
HWLocLinux

Linux-specific helpers.

public class
HWLocShMem

Sharing topologies between processes.

public class
HWLocWindows

Windows-specific helpers.

public abstract class
topology_set_userdata_export_callback

Instances of this class may be passed to the topology_set_userdata_export_callback method.

public abstract class
topology_set_userdata_import_callback

Instances of this class may be passed to the topology_set_userdata_import_callback method.