Explorar el Código

Optimize a bit more for the one-memory-node case

Samuel Thibault hace 4 años
padre
commit
9393925a8f
Se han modificado 2 ficheros con 24 adiciones y 4 borrados
  1. 3 4
      src/datawizard/memory_nodes.c
  2. 21 0
      src/datawizard/memory_nodes.h

+ 3 - 4
src/datawizard/memory_nodes.c

@@ -151,6 +151,7 @@ void _starpu_memory_node_register_condition(struct _starpu_worker *worker, starp
 #undef starpu_worker_get_memory_node
 unsigned starpu_worker_get_memory_node(unsigned workerid)
 {
+	(void) workerid;
 	return _starpu_worker_get_memory_node(workerid);
 }
 
@@ -167,12 +168,10 @@ void _starpu_worker_drives_memory_node(struct _starpu_worker *worker, unsigned m
 	}
 }
 
+#undef starpu_worker_get_local_memory_node
 unsigned starpu_worker_get_local_memory_node(void)
 {
-	struct _starpu_worker *worker = _starpu_get_local_worker_key();
-	if (!worker)
-		return STARPU_MAIN_RAM;
-	return worker->memory_node;
+	return _starpu_worker_get_local_memory_node();
 }
 
 int starpu_memory_node_get_devid(unsigned node)

+ 21 - 0
src/datawizard/memory_nodes.h

@@ -117,12 +117,19 @@ static inline enum starpu_node_kind _starpu_node_get_kind(unsigned node)
 }
 #define starpu_node_get_kind _starpu_node_get_kind
 
+#if STARPU_MAXNODES == 1
+#define _starpu_memory_nodes_get_count() 1
+#else
 static inline unsigned _starpu_memory_nodes_get_count(void)
 {
 	return _starpu_descr.nnodes;
 }
+#endif
 #define starpu_memory_nodes_get_count _starpu_memory_nodes_get_count
 
+#if STARPU_MAXNODES == 1
+#define _starpu_worker_get_memory_node(workerid) 0
+#else
 static inline unsigned _starpu_worker_get_memory_node(unsigned workerid)
 {
 	struct _starpu_machine_config *config = _starpu_get_machine_config();
@@ -139,6 +146,20 @@ static inline unsigned _starpu_worker_get_memory_node(unsigned workerid)
 	return config->combined_workers[workerid - nworkers].memory_node;
 
 }
+#endif
 #define starpu_worker_get_memory_node _starpu_worker_get_memory_node
 
+#if STARPU_MAXNODES == 1
+#define _starpu_worker_get_local_memory_node() 0
+#else
+static inline unsigned _starpu_worker_get_local_memory_node(void)
+{
+	struct _starpu_worker *worker = _starpu_get_local_worker_key();
+	if (!worker)
+		return STARPU_MAIN_RAM;
+	return worker->memory_node;
+}
+#endif
+#define starpu_worker_get_local_memory_node _starpu_worker_get_local_memory_node
+
 #endif // __MEMORY_NODES_H__