Man Linux: Main Page and Category List

NAME

       Binding -

   Enumerations
       enum hwloc_cpubind_policy_t { HWLOC_CPUBIND_PROCESS,
           HWLOC_CPUBIND_THREAD, HWLOC_CPUBIND_STRICT }
           Process/Thread binding policy.

   Functions
       HWLOC_DECLSPEC int hwloc_set_cpubind (hwloc_topology_t topology,
           hwloc_const_cpuset_t set, int policy)
           Bind current process or thread on cpus given in cpuset set.
       HWLOC_DECLSPEC int hwloc_get_cpubind (hwloc_topology_t topology,
           hwloc_cpuset_t set, int policy)
           Get current process or thread binding.
       HWLOC_DECLSPEC int hwloc_set_proc_cpubind (hwloc_topology_t topology,
           hwloc_pid_t pid, hwloc_const_cpuset_t set, int policy)
           Bind a process pid on cpus given in cpuset set.
       HWLOC_DECLSPEC int hwloc_get_proc_cpubind (hwloc_topology_t topology,
           hwloc_pid_t pid, hwloc_cpuset_t set, int policy)
           Get the current binding of process pid.
       HWLOC_DECLSPEC int hwloc_set_thread_cpubind (hwloc_topology_t topology,
           hwloc_thread_t tid, hwloc_const_cpuset_t set, int policy)
           Bind a thread tid on cpus given in cpuset set.
       HWLOC_DECLSPEC int hwloc_get_thread_cpubind (hwloc_topology_t topology,
           hwloc_thread_t tid, hwloc_cpuset_t set, int policy)
           Get the current binding of thread tid.

Detailed Description

       It is often useful to call hwloc_cpuset_singlify() first so that a
       single CPU remains in the set. This way, the process will not even
       migrate between different CPUs. Some OSes also only support that kind
       of binding.

       Note:
           Some OSes do not provide all ways to bind processes, threads, etc
           and the corresponding binding functions may fail. ENOSYS is
           returned when it is not possible to bind the requested kind of
           object processes/threads). EXDEV is returned when the requested
           cpuset can not be enforced (e.g. some systems only allow one CPU,
           and some other systems only allow one NUMA node)

       The most portable version that should be preferred over the others,
       whenever possible, is

        hwloc_set_cpubind(topology, set, 0),

       as it just binds the current program, assuming it is monothread, or

        hwloc_set_cpubind(topology, set, HWLOC_CPUBIND_THREAD),

       which binds the current thread of the current program (which may be
       multithreaded).

       Note:
           To unbind, just call the binding function with either a full cpuset
           or a cpuset equal to the system cpuset.

Enumeration Type Documentation

   enum hwloc_cpubind_policy_t
       Process/Thread binding policy. These flags can be used to refine the
       binding policy.

       The default (0) is to bind the current process, assumed to be mono-
       thread, in a non-strict way. This is the most portable way to bind as
       all OSes usually provide it.

       Enumerator:

       HWLOC_CPUBIND_PROCESS
              Bind all threads of the current multithreaded process. This may
              not be supported by some OSes (e.g. Linux).

       HWLOC_CPUBIND_THREAD
              Bind current thread of current process.

       HWLOC_CPUBIND_STRICT
              Request for strict binding from the OS. By default, when the
              designated CPUs are all busy while other CPUs are idle, OSes may
              execute the thread/process on those other CPUs instead of the
              designated CPUs, to let them progress anyway. Strict binding
              means that the thread/process will _never_ execute on other cpus
              than the designated CPUs, even when those are busy with other
              tasks and other CPUs are idle.

       Note:
           Depending on OSes and implementations, strict binding may not be
           possible (implementation reason) or not allowed (administrative
           reasons), and the function will fail in that case.

       When retrieving the binding of a process, this flag checks whether all
       its threads actually have the same binding. If the flag is not given,
       the binding of each thread will be accumulated.

       Note:
           This flag is meaningless when retrieving the binding of a thread.

Function Documentation

   HWLOC_DECLSPEC int hwloc_get_cpubind (hwloc_topology_t topology,
       hwloc_cpuset_t set, int policy)
       Get current process or thread binding.

   HWLOC_DECLSPEC int hwloc_get_proc_cpubind (hwloc_topology_t topology,
       hwloc_pid_t pid, hwloc_cpuset_t set, int policy)
       Get the current binding of process pid. Note:
           hwloc_pid_t is pid_t on unix platforms, and HANDLE on native
           Windows platforms

           HWLOC_CPUBIND_THREAD can not be used in policy.

   HWLOC_DECLSPEC int hwloc_get_thread_cpubind (hwloc_topology_t topology,
       hwloc_thread_t tid, hwloc_cpuset_t set, int policy)
       Get the current binding of thread tid. Note:
           hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
           Windows platforms

           HWLOC_CPUBIND_PROCESS can not be used in policy.

   HWLOC_DECLSPEC int hwloc_set_cpubind (hwloc_topology_t topology,
       hwloc_const_cpuset_t set, int policy)
       Bind current process or thread on cpus given in cpuset set. Returns:
           ENOSYS if the action is not supported

           EXDEV if the binding cannot be enforced

   HWLOC_DECLSPEC int hwloc_set_proc_cpubind (hwloc_topology_t topology,
       hwloc_pid_t pid, hwloc_const_cpuset_t set, int policy)
       Bind a process pid on cpus given in cpuset set. Note:
           hwloc_pid_t is pid_t on unix platforms, and HANDLE on native
           Windows platforms

           HWLOC_CPUBIND_THREAD can not be used in policy.

   HWLOC_DECLSPEC int hwloc_set_thread_cpubind (hwloc_topology_t topology,
       hwloc_thread_t tid, hwloc_const_cpuset_t set, int policy)
       Bind a thread tid on cpus given in cpuset set. Note:
           hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
           Windows platforms

           HWLOC_CPUBIND_PROCESS can not be used in policy.

Author

       Generated automatically by Doxygen for Hardware Locality (hwloc) from
       the source code.