Explorar o código

- address a Helgrind complaint about some early cpu workers reading global_size[0] while some late cpu workers are still writing its value

Olivier Aumage %!s(int64=10) %!d(string=hai) anos
pai
achega
3832fd72cf
Modificáronse 1 ficheiros con 8 adicións e 2 borrados
  1. 8 2
      src/datawizard/memory_manager.c

+ 8 - 2
src/datawizard/memory_manager.c

@@ -54,8 +54,14 @@ int _starpu_memory_manager_init()
 
 void _starpu_memory_manager_set_global_memory_size(unsigned node, size_t size)
 {
-	global_size[node] = size;
-	_STARPU_DEBUG("Global size for node %d is %ld\n", node, (long)global_size[node]);
+	STARPU_PTHREAD_MUTEX_LOCK(&lock_nodes[node]);
+	if (!global_size[node]) {
+		global_size[node] = size;
+		_STARPU_DEBUG("Global size for node %d is %ld\n", node, (long)global_size[node]);
+	} else {
+		STARPU_ASSERT(global_size[node] == size);
+	}
+	STARPU_PTHREAD_MUTEX_UNLOCK(&lock_nodes[node]);
 }
 
 size_t _starpu_memory_manager_get_global_memory_size(unsigned node)