17#ifndef __MEMORY_NODES_H__
18#define __MEMORY_NODES_H__
23#include <common/config.h>
28#include <core/workers.h>
34#pragma GCC visibility push(hidden)
36extern char _starpu_worker_drives_memory[STARPU_NMAXWORKERS][STARPU_MAXNODES];
40 starpu_pthread_cond_t *cond;
54 unsigned nworkers[STARPU_MAXNODES];
57 starpu_sg_host_t host[STARPU_MAXNODES];
71 unsigned condition_count[STARPU_MAXNODES];
72 unsigned mapped[STARPU_MAXNODES];
77void _starpu_memory_nodes_init(
void);
78void _starpu_memory_nodes_deinit(
void);
83 _starpu_descr.nworkers[node]++;
89static inline const struct _starpu_node_ops *_starpu_memory_node_get_node_ops(
unsigned node)
91 return _starpu_descr.node_ops[node];
97 return _starpu_descr.nworkers[node];
101static inline void _starpu_simgrid_memory_node_set_host(
unsigned node, starpu_sg_host_t host)
103 _starpu_descr.host[node] = host;
106static inline starpu_sg_host_t _starpu_simgrid_memory_node_get_host(
unsigned node)
108 return _starpu_descr.host[node];
128 return &_starpu_descr;
131#define _starpu_node_needs_map_update(node) \
132 (starpu_node_get_kind(node) == STARPU_OPENCL_RAM)
137 return _starpu_descr.nodes[node];
139#define starpu_node_get_kind _starpu_node_get_kind
141#if STARPU_MAXNODES == 1
142#define _starpu_memory_nodes_get_count() 1
147 return _starpu_descr.nnodes;
150#define starpu_memory_nodes_get_count _starpu_memory_nodes_get_count
152#if STARPU_MAXNODES == 1
153#define _starpu_worker_get_memory_node(workerid) 0
161 unsigned nworkers = config->topology.
nworkers;
163 if (workerid < config->topology.nworkers)
167 unsigned ncombinedworkers STARPU_ATTRIBUTE_UNUSED = config->topology.
ncombinedworkers;
168 STARPU_ASSERT_MSG(workerid < ncombinedworkers + nworkers,
"Bad workerid %u, maximum %u", workerid, ncombinedworkers + nworkers);
173#define starpu_worker_get_memory_node _starpu_worker_get_memory_node
175#if STARPU_MAXNODES == 1
176#define _starpu_worker_get_local_memory_node() 0
187#define starpu_worker_get_local_memory_node _starpu_worker_get_local_memory_node
189#pragma GCC visibility pop
starpu_node_kind
Definition starpu_worker.h:44
static struct _starpu_memory_node_descr * _starpu_memory_node_get_description(void)
Definition memory_nodes.h:126
unsigned _starpu_memory_node_register(enum starpu_node_kind kind, int devid)
static enum starpu_node_kind _starpu_node_get_kind(unsigned node)
Definition memory_nodes.h:135
void _starpu_memory_node_set_mapped(unsigned node)
void _starpu_worker_drives_memory_node(struct _starpu_worker *worker, unsigned memnode)
starpu_pthread_rwlock_t conditions_rwlock
Definition memory_nodes.h:66
static unsigned _starpu_memory_node_get_nworkers(unsigned node)
Definition memory_nodes.h:95
static unsigned _starpu_worker_get_local_memory_node(void)
Definition memory_nodes.h:179
void _starpu_memory_node_register_condition(struct _starpu_worker *worker, starpu_pthread_cond_t *cond, unsigned nodeid)
int devid[STARPU_MAXNODES]
Definition memory_nodes.h:52
unsigned _starpu_memory_node_get_mapped(unsigned node)
static unsigned _starpu_memory_nodes_get_count(void)
Definition memory_nodes.h:145
unsigned total_condition_count
Definition memory_nodes.h:70
static void _starpu_memory_node_add_nworkers(unsigned node)
Definition memory_nodes.h:81
static unsigned _starpu_worker_get_memory_node(unsigned workerid)
Definition memory_nodes.h:156
Definition memory_nodes.h:39
Definition memory_nodes.h:46
unsigned memory_node
Definition workers.h:315
struct _starpu_combined_worker combined_workers[STARPU_NMAX_COMBINEDWORKERS]
Definition workers.h:475
struct _starpu_worker workers[STARPU_NMAXWORKERS]
Definition workers.h:468
unsigned nworkers
Definition workers.h:354
unsigned ncombinedworkers
Definition workers.h:357
unsigned memory_node
Definition workers.h:172
int workerid
Definition workers.h:166