瀏覽代碼

- 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 10 年之前
父節點
當前提交
3832fd72cf
共有 1 個文件被更改,包括 8 次插入2 次删除
  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)