17 #ifndef __MEMORY_NODES_H__
18 #define __MEMORY_NODES_H__
23 #include <common/config.h>
28 #include <core/workers.h>
34 extern char _starpu_worker_drives_memory[STARPU_NMAXWORKERS][STARPU_MAXNODES];
38 starpu_pthread_cond_t *cond;
45 enum starpu_node_kind nodes[STARPU_MAXNODES];
51 unsigned nworkers[STARPU_MAXNODES];
54 starpu_sg_host_t host[STARPU_MAXNODES];
68 unsigned condition_count[STARPU_MAXNODES];
73 void _starpu_memory_nodes_init(
void);
74 void _starpu_memory_nodes_deinit(
void);
76 static inline void _starpu_memory_node_add_nworkers(
unsigned node)
78 _starpu_descr.nworkers[node]++;
84 static inline struct _starpu_node_ops *_starpu_memory_node_get_node_ops(
unsigned node)
86 return _starpu_descr.node_ops[node];
89 static inline unsigned _starpu_memory_node_get_nworkers(
unsigned node)
91 return _starpu_descr.nworkers[node];
95 static inline void _starpu_simgrid_memory_node_set_host(
unsigned node, starpu_sg_host_t host)
97 _starpu_descr.host[node] = host;
100 static inline starpu_sg_host_t _starpu_simgrid_memory_node_get_host(
unsigned node)
102 return _starpu_descr.host[node];
105 unsigned _starpu_memory_node_register(
enum starpu_node_kind kind,
int devid,
struct _starpu_node_ops *node_ops);
107 void _starpu_memory_node_register_condition(
struct _starpu_worker *worker, starpu_pthread_cond_t *cond,
unsigned nodeid);
111 return &_starpu_descr;
114 static inline enum starpu_node_kind _starpu_node_get_kind(
unsigned node)
116 return _starpu_descr.nodes[node];
118 #define starpu_node_get_kind _starpu_node_get_kind
120 #if STARPU_MAXNODES == 1
121 #define _starpu_memory_nodes_get_count() 1
123 static inline unsigned _starpu_memory_nodes_get_count(
void)
125 return _starpu_descr.nnodes;
128 #define starpu_memory_nodes_get_count _starpu_memory_nodes_get_count
130 #if STARPU_MAXNODES == 1
131 #define _starpu_worker_get_memory_node(workerid) 0
138 unsigned nworkers = config->topology.
nworkers;
140 if (workerid < config->topology.nworkers)
144 unsigned ncombinedworkers STARPU_ATTRIBUTE_UNUSED = config->topology.
ncombinedworkers;
145 STARPU_ASSERT_MSG(workerid < ncombinedworkers + nworkers,
"Bad workerid %u, maximum %u", workerid, ncombinedworkers + nworkers);
150 #define starpu_worker_get_memory_node _starpu_worker_get_memory_node
152 #if STARPU_MAXNODES == 1
153 #define _starpu_worker_get_local_memory_node() 0
155 static inline unsigned _starpu_worker_get_local_memory_node(
void)
159 return STARPU_MAIN_RAM;
163 #define starpu_worker_get_local_memory_node _starpu_worker_get_local_memory_node
void _starpu_worker_drives_memory_node(struct _starpu_worker *worker, unsigned memnode)
starpu_pthread_rwlock_t conditions_rwlock
Definition: memory_nodes.h:63
int devid[STARPU_MAXNODES]
Definition: memory_nodes.h:49
unsigned total_condition_count
Definition: memory_nodes.h:67
static unsigned _starpu_worker_get_memory_node(unsigned workerid)
Definition: memory_nodes.h:133
Definition: memory_nodes.h:37
Definition: memory_nodes.h:43
unsigned memory_node
Definition: workers.h:208
Definition: workers.h:359
struct _starpu_combined_worker combined_workers[STARPU_NMAX_COMBINEDWORKERS]
Definition: workers.h:404
struct _starpu_worker workers[STARPU_NMAXWORKERS]
Definition: workers.h:400
unsigned nworkers
Definition: workers.h:250
unsigned ncombinedworkers
Definition: workers.h:253
Definition: node_ops.h:48
unsigned memory_node
Definition: workers.h:86