瀏覽代碼

Add simgrid disk host registration

Samuel Thibault 8 年之前
父節點
當前提交
8d1c9bdb8b
共有 1 個文件被更改,包括 16 次插入4 次删除
  1. 16 4
      src/core/disk.c

+ 16 - 4
src/core/disk.c

@@ -47,7 +47,7 @@ struct disk_register
 	int flag;
 	int flag;
 };
 };
 
 
-static void add_disk_in_list(unsigned node, struct starpu_disk_ops *func, void *base);
+static int add_disk_in_list(unsigned node, struct starpu_disk_ops *func, void *base);
 static int get_location_with_node(unsigned node);
 static int get_location_with_node(unsigned node);
 
 
 static struct disk_register **disk_register_list = NULL;
 static struct disk_register **disk_register_list = NULL;
@@ -69,7 +69,15 @@ int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_s
 	void *base = func->plug(parameter, size);
 	void *base = func->plug(parameter, size);
 
 
 	/* remember it */
 	/* remember it */
-	add_disk_in_list(memory_node,func,base);
+	int n STARPU_ATTRIBUTE_UNUSED = add_disk_in_list(memory_node,func,base);
+
+#ifdef STARPU_SIMGRID
+	char name[16];
+	snprintf(name, sizeof(name), "DISK%d", n);
+	msg_host_t host = _starpu_simgrid_get_host_by_name(name);
+	STARPU_ASSERT(host);
+	_starpu_simgrid_memory_node_set_host(memory_node, host);
+#endif
 
 
 	int ret = func->bandwidth(memory_node);
 	int ret = func->bandwidth(memory_node);
 	/* have a problem with the disk */
 	/* have a problem with the disk */
@@ -273,8 +281,10 @@ void starpu_disk_free_request(struct _starpu_async_channel *async_channel)
 		disk_register_list[position]->functions->free_request(async_channel->event.disk_event.backend_event);
 		disk_register_list[position]->functions->free_request(async_channel->event.disk_event.backend_event);
 }
 }
 
 
-static void add_disk_in_list(unsigned node,  struct starpu_disk_ops *func, void *base)
+static int add_disk_in_list(unsigned node,  struct starpu_disk_ops *func, void *base)
 {
 {
+	int n;
+
 	/* initialization */
 	/* initialization */
 	if (disk_register_list == NULL)
 	if (disk_register_list == NULL)
 	{
 	{
@@ -293,7 +303,9 @@ static void add_disk_in_list(unsigned node,  struct starpu_disk_ops *func, void
 	dr->base = base;
 	dr->base = base;
 	dr->flag = STARPU_DISK_ALL;
 	dr->flag = STARPU_DISK_ALL;
 	dr->functions = func;
 	dr->functions = func;
-	disk_register_list[++disk_number] = dr;
+	n = ++disk_number;
+	disk_register_list[n] = dr;
+	return n;
 }
 }
 
 
 static int get_location_with_node(unsigned node)
 static int get_location_with_node(unsigned node)