|
|
@@ -107,35 +107,6 @@ static struct _starpu_worker_set mic_worker_set[STARPU_MAXMICDEVS];
|
|
|
struct _starpu_worker_set mpi_worker_set[STARPU_MAXMPIDEVS];
|
|
|
#endif
|
|
|
|
|
|
-/* Avoid using this one, prefer _starpu_task_data_get_node_on_worker */
|
|
|
-int _starpu_task_data_get_node_on_node(struct starpu_task *task, unsigned index, unsigned local_node)
|
|
|
-{
|
|
|
- int node = STARPU_SPECIFIC_NODE_LOCAL;
|
|
|
- if (task->cl->specific_nodes)
|
|
|
- node = STARPU_CODELET_GET_NODE(task->cl, index);
|
|
|
- switch (node) {
|
|
|
- case STARPU_SPECIFIC_NODE_LOCAL:
|
|
|
- node = local_node;
|
|
|
- break;
|
|
|
- case STARPU_SPECIFIC_NODE_CPU:
|
|
|
- // TODO: rather take close NUMA node
|
|
|
- node = STARPU_MAIN_RAM;
|
|
|
- break;
|
|
|
- case STARPU_SPECIFIC_NODE_SLOW:
|
|
|
- // TODO: rather leave in DDR
|
|
|
- node = local_node;
|
|
|
- break;
|
|
|
- }
|
|
|
- return node;
|
|
|
-}
|
|
|
-
|
|
|
-int _starpu_task_data_get_node_on_worker(struct starpu_task *task, unsigned index, unsigned worker)
|
|
|
-{
|
|
|
- /* TODO: choose memory node according to proximity to worker rather than memory node */
|
|
|
- unsigned target_node = starpu_worker_get_memory_node(worker);
|
|
|
- return _starpu_task_data_get_node_on_node(task, index, target_node);
|
|
|
-}
|
|
|
-
|
|
|
int starpu_memory_nodes_get_numa_count(void)
|
|
|
{
|
|
|
return nb_numa_nodes;
|
|
|
@@ -243,6 +214,67 @@ static int _starpu_get_physical_numa_node_worker(unsigned workerid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//TODO change this in an array
|
|
|
+int starpu_memory_nodes_numa_hwloclogid_to_id(int logid)
|
|
|
+{
|
|
|
+ unsigned n;
|
|
|
+ for (n = 0; n < nb_numa_nodes; n++)
|
|
|
+ if (numa_memory_nodes_to_hwloclogid[n] == logid)
|
|
|
+ return n;
|
|
|
+ return -1;
|
|
|
+}
|
|
|
+
|
|
|
+int starpu_memory_nodes_numa_id_to_hwloclogid(unsigned id)
|
|
|
+{
|
|
|
+ STARPU_ASSERT(id < STARPU_MAXNUMANODES);
|
|
|
+ return numa_memory_nodes_to_hwloclogid[id];
|
|
|
+}
|
|
|
+
|
|
|
+int starpu_memory_nodes_numa_devid_to_id(unsigned id)
|
|
|
+{
|
|
|
+ STARPU_ASSERT(id < STARPU_MAXNUMANODES);
|
|
|
+ return numa_memory_nodes_to_physicalid[id];
|
|
|
+}
|
|
|
+
|
|
|
+//TODO change this in an array
|
|
|
+int starpu_memory_nodes_numa_id_to_devid(int osid)
|
|
|
+{
|
|
|
+ unsigned n;
|
|
|
+ for (n = 0; n < nb_numa_nodes; n++)
|
|
|
+ if (numa_memory_nodes_to_physicalid[n] == osid)
|
|
|
+ return n;
|
|
|
+ return -1;
|
|
|
+}
|
|
|
+
|
|
|
+/* Avoid using this one, prefer _starpu_task_data_get_node_on_worker */
|
|
|
+int _starpu_task_data_get_node_on_node(struct starpu_task *task, unsigned index, unsigned local_node)
|
|
|
+{
|
|
|
+ int node = STARPU_SPECIFIC_NODE_LOCAL;
|
|
|
+ if (task->cl->specific_nodes)
|
|
|
+ node = STARPU_CODELET_GET_NODE(task->cl, index);
|
|
|
+ switch (node) {
|
|
|
+ case STARPU_SPECIFIC_NODE_LOCAL:
|
|
|
+ node = local_node;
|
|
|
+ break;
|
|
|
+ case STARPU_SPECIFIC_NODE_CPU:
|
|
|
+ // TODO: rather take close NUMA node
|
|
|
+ node = STARPU_MAIN_RAM;
|
|
|
+ break;
|
|
|
+ case STARPU_SPECIFIC_NODE_SLOW:
|
|
|
+ // TODO: rather leave in DDR
|
|
|
+ node = local_node;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return node;
|
|
|
+}
|
|
|
+
|
|
|
+int _starpu_task_data_get_node_on_worker(struct starpu_task *task, unsigned index, unsigned worker)
|
|
|
+{
|
|
|
+ /* TODO: choose memory node according to proximity to worker rather than memory node */
|
|
|
+ unsigned target_node = starpu_worker_get_memory_node(worker);
|
|
|
+ return _starpu_task_data_get_node_on_node(task, index, target_node);
|
|
|
+}
|
|
|
+
|
|
|
struct _starpu_worker *_starpu_get_worker_from_driver(struct starpu_driver *d)
|
|
|
{
|
|
|
unsigned nworkers = starpu_worker_get_count();
|
|
|
@@ -1043,38 +1075,6 @@ unsigned _starpu_topology_get_nnumanodes(struct _starpu_machine_config *config S
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
-//TODO change this in an array
|
|
|
-int starpu_memory_nodes_numa_hwloclogid_to_id(int logid)
|
|
|
-{
|
|
|
- unsigned n;
|
|
|
- for (n = 0; n < nb_numa_nodes; n++)
|
|
|
- if (numa_memory_nodes_to_hwloclogid[n] == logid)
|
|
|
- return n;
|
|
|
- return -1;
|
|
|
-}
|
|
|
-
|
|
|
-int starpu_memory_nodes_numa_id_to_hwloclogid(unsigned id)
|
|
|
-{
|
|
|
- STARPU_ASSERT(id < STARPU_MAXNUMANODES);
|
|
|
- return numa_memory_nodes_to_hwloclogid[id];
|
|
|
-}
|
|
|
-
|
|
|
-int starpu_memory_nodes_numa_devid_to_id(unsigned id)
|
|
|
-{
|
|
|
- STARPU_ASSERT(id < STARPU_MAXNUMANODES);
|
|
|
- return numa_memory_nodes_to_physicalid[id];
|
|
|
-}
|
|
|
-
|
|
|
-//TODO change this in an array
|
|
|
-int starpu_memory_nodes_numa_id_to_devid(int osid)
|
|
|
-{
|
|
|
- unsigned n;
|
|
|
- for (n = 0; n < nb_numa_nodes; n++)
|
|
|
- if (numa_memory_nodes_to_physicalid[n] == osid)
|
|
|
- return n;
|
|
|
- return -1;
|
|
|
-}
|
|
|
-
|
|
|
#ifdef STARPU_HAVE_HWLOC
|
|
|
void _starpu_topology_filter(hwloc_topology_t topology)
|
|
|
{
|