StarPU Internal Handbook
topology.h File Reference
#include <starpu.h>
#include <common/config.h>
#include <common/list.h>
#include <common/fxt.h>

Go to the source code of this file.

Macros

#define STARPU_NOWORKERID
 
#define STARPU_ACTIVETHREAD
 
#define STARPU_NONACTIVETHREAD
 

Functions

int _starpu_build_topology (struct _starpu_machine_config *config, int no_mp_config)
 
void _starpu_destroy_machine_config (struct _starpu_machine_config *config)
 
void _starpu_destroy_topology (struct _starpu_machine_config *config)
 
unsigned _starpu_topology_get_nhwcpu (struct _starpu_machine_config *config)
 
unsigned _starpu_topology_get_nhwpu (struct _starpu_machine_config *config)
 
unsigned _starpu_topology_get_nnumanodes (struct _starpu_machine_config *config)
 
unsigned _starpu_get_nhyperthreads ()
 
void _starpu_topology_filter (hwloc_topology_t topology)
 
int _starpu_bind_thread_on_cpu (int cpuid, int workerid, const char *name)
 
void _starpu_bind_thread_on_cpus (struct _starpu_combined_worker *combined_worker)
 
struct _starpu_worker_starpu_get_worker_from_driver (struct starpu_driver *d)
 
int starpu_memory_nodes_get_numa_count (void)
 
int starpu_memory_nodes_numa_id_to_hwloclogid (unsigned id)
 
int _starpu_task_data_get_node_on_node (struct starpu_task *task, unsigned index, unsigned target_node)
 
int _starpu_task_data_get_node_on_worker (struct starpu_task *task, unsigned index, unsigned worker)
 

Function Documentation

◆ _starpu_build_topology()

int _starpu_build_topology ( struct _starpu_machine_config config,
int  no_mp_config 
)

Detect the number of memory nodes and where to bind the different workers.

◆ _starpu_destroy_machine_config()

void _starpu_destroy_machine_config ( struct _starpu_machine_config config)

Should be called instead of _starpu_destroy_topology when _starpu_build_topology returns a non zero value.

◆ _starpu_destroy_topology()

void _starpu_destroy_topology ( struct _starpu_machine_config config)

Destroy all resources used to store the topology of the machine.

◆ _starpu_topology_get_nhwcpu()

unsigned _starpu_topology_get_nhwcpu ( struct _starpu_machine_config config)

returns the number of physical cpus

◆ _starpu_topology_get_nhwpu()

unsigned _starpu_topology_get_nhwpu ( struct _starpu_machine_config config)

returns the number of logical cpus

◆ _starpu_topology_get_nnumanodes()

unsigned _starpu_topology_get_nnumanodes ( struct _starpu_machine_config config)

returns the number of NUMA nodes

◆ _starpu_get_nhyperthreads()

unsigned _starpu_get_nhyperthreads ( )

returns the number of hyperthreads per core

◆ _starpu_topology_filter()

void _starpu_topology_filter ( hwloc_topology_t  topology)

Small convenient function to filter hwloc topology depending on HWLOC API version

◆ _starpu_bind_thread_on_cpu()

int _starpu_bind_thread_on_cpu ( int  cpuid,
int  workerid,
const char *  name 
)

Bind the current thread on the CPU logically identified by "cpuid". The logical ordering of the processors is either that of hwloc (if available), or the ordering exposed by the OS.

◆ _starpu_bind_thread_on_cpus()

void _starpu_bind_thread_on_cpus ( struct _starpu_combined_worker combined_worker)

Bind the current thread on the set of CPUs for the given combined worker.

◆ _starpu_task_data_get_node_on_node()

int _starpu_task_data_get_node_on_node ( struct starpu_task *  task,
unsigned  index,
unsigned  target_node 
)

Get the memory node for data number i when task is to be executed on memory node target_node