Просмотр исходного кода

disk: turn public the minimum size of a disk

Nathalie Furmento лет назад: 8
Родитель
Сommit
49ace8d184

+ 1 - 1
doc/doxygen/chapters/401_out_of_core.doxy

@@ -51,7 +51,7 @@ export STARPU_DISK_SWAP_SIZE=200
 When the register function is called, StarPU will benchmark the disk. This can
 When the register function is called, StarPU will benchmark the disk. This can
 take some time.
 take some time.
 
 
-<strong>Warning: the size thus has to be at least 1 MB!</strong> 
+<strong>Warning: the size thus has to be at least \ref STARPU_DISK_SIZE_MIN bytes ! </strong> 
 
 
 StarPU will automatically try to evict unused data to this new disk. One can
 StarPU will automatically try to evict unused data to this new disk. One can
 also use the standard StarPU memory node API, see the \ref API_Standard_Memory_Library
 also use the standard StarPU memory node API, see the \ref API_Standard_Memory_Library

+ 5 - 2
doc/doxygen/chapters/api/data_out_of_core.doxy

@@ -7,6 +7,10 @@
 
 
 /*! \defgroup API_Out_Of_Core Out Of Core
 /*! \defgroup API_Out_Of_Core Out Of Core
 
 
+\def STARPU_DISK_SIZE_MIN
+\ingroup API_Out_Of_Core
+Minimum size of a registered disk. The size of a disk is the last parameter of the function starpu_disk_register().
+
 \struct starpu_disk_ops
 \struct starpu_disk_ops
 \ingroup API_Out_Of_Core
 \ingroup API_Out_Of_Core
 This is a set of functions to manipulate datas on disk.
 This is a set of functions to manipulate datas on disk.
@@ -88,8 +92,7 @@ Register a disk memory node with a set of functions to manipulate datas. The \c
 plug member of \p func will be passed \p parameter, and return a \c base which will be passed to all \p func methods. <br />
 plug member of \p func will be passed \p parameter, and return a \c base which will be passed to all \p func methods. <br />
 SUCCESS: return the disk node. <br />
 SUCCESS: return the disk node. <br />
 FAIL: return an error code. <br />
 FAIL: return an error code. <br />
-The \p size must be at least 1 MB !
-\p size being negative means infinite size.
+\p size must be at least \ref STARPU_DISK_SIZE_MIN bytes ! \p size being negative means infinite size.
 
 
 \fn void *starpu_disk_open(unsigned node, void *pos, size_t size)
 \fn void *starpu_disk_open(unsigned node, void *pos, size_t size)
 \ingroup API_Out_Of_Core
 \ingroup API_Out_Of_Core

+ 2 - 0
include/starpu_disk.h

@@ -67,6 +67,8 @@ void *starpu_disk_open(unsigned node, void *pos, size_t size);
 
 
 int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_ssize_t size);
 int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_ssize_t size);
 
 
+#define STARPU_DISK_SIZE_MIN (64*1024*1024)
+
 extern int starpu_disk_swap_node;
 extern int starpu_disk_swap_node;
 
 
 #endif /* __STARPU_DISK_H__ */
 #endif /* __STARPU_DISK_H__ */

+ 2 - 2
src/core/disk.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  *
  * Copyright (C) 2013  Corentin Salingue
  * Copyright (C) 2013  Corentin Salingue
- * Copyright (C) 2015, 2016  CNRS
+ * Copyright (C) 2015, 2016, 2017  CNRS
  *
  *
  * StarPU is free software; you can redistribute it and/or modify
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
  * it under the terms of the GNU Lesser General Public License as published by
@@ -58,7 +58,7 @@ int starpu_disk_swap_node = -1;
 
 
 int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_ssize_t size)
 int starpu_disk_register(struct starpu_disk_ops *func, void *parameter, starpu_ssize_t size)
 {
 {
-	STARPU_ASSERT_MSG(size < 0 || size >= SIZE_DISK_MIN,"Minimum disk size is %u Bytes ! (Here %u) \n", (int) SIZE_DISK_MIN, (int) size);
+	STARPU_ASSERT_MSG(size < 0 || size >= STARPU_DISK_SIZE_MIN,"Minimum disk size is %u Bytes ! (Here %u) \n", (int) STARPU_DISK_SIZE_MIN, (int) size);
 	/* register disk */
 	/* register disk */
 	unsigned memory_node = _starpu_memory_node_register(STARPU_DISK_RAM, 0);
 	unsigned memory_node = _starpu_memory_node_register(STARPU_DISK_RAM, 0);
 
 

+ 0 - 2
src/core/disk.h

@@ -18,8 +18,6 @@
 #ifndef __DISK_H__
 #ifndef __DISK_H__
 #define __DISK_H__
 #define __DISK_H__
 
 
-#define SIZE_DISK_MIN (64*1024*1024)
-
 #define STARPU_DISK_ALL 1
 #define STARPU_DISK_ALL 1
 #define STARPU_DISK_NO_RECLAIM 2
 #define STARPU_DISK_NO_RECLAIM 2
 
 

+ 6 - 6
src/core/disk_ops/disk_leveldb.cpp

@@ -270,11 +270,11 @@ static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node)
 	double end;
 	double end;
 
 
 	srand(time (NULL));
 	srand(time (NULL));
-	char *buf = (char *)malloc(SIZE_DISK_MIN*sizeof(char));
+	char *buf = (char *)malloc(STARPU_DISK_SIZE_MIN*sizeof(char));
 	STARPU_ASSERT(buf);
 	STARPU_ASSERT(buf);
 
 
 	/* allocate memory */
 	/* allocate memory */
-	void *mem = _starpu_disk_alloc(node, SIZE_DISK_MIN);
+	void *mem = _starpu_disk_alloc(node, STARPU_DISK_SIZE_MIN);
 	/* fail to alloc */
 	/* fail to alloc */
 	if (mem == NULL)
 	if (mem == NULL)
 	{
 	{
@@ -286,7 +286,7 @@ static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node)
 	start = starpu_timing_now();
 	start = starpu_timing_now();
 	for (iter = 0; iter < NITER; ++iter)
 	for (iter = 0; iter < NITER; ++iter)
 	{
 	{
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, SIZE_DISK_MIN, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, STARPU_DISK_SIZE_MIN, NULL);
 	}
 	}
 	end = starpu_timing_now();
 	end = starpu_timing_now();
 	timing_slowness = end - start;
 	timing_slowness = end - start;
@@ -302,15 +302,15 @@ static int get_leveldb_bandwidth_between_disk_and_main_ram(unsigned node)
 	start = starpu_timing_now();
 	start = starpu_timing_now();
 	for (iter = 0; iter < NITER; ++iter)
 	for (iter = 0; iter < NITER; ++iter)
 	{
 	{
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, rand() % (SIZE_DISK_MIN -1) , 1, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, rand() % (STARPU_DISK_SIZE_MIN -1) , 1, NULL);
 	}
 	}
 	end = starpu_timing_now();
 	end = starpu_timing_now();
 	timing_latency = end - start;
 	timing_latency = end - start;
 
 
-	_starpu_disk_free(node, mem, SIZE_DISK_MIN);
+	_starpu_disk_free(node, mem, STARPU_DISK_SIZE_MIN);
 	free(buf);
 	free(buf);
 
 
-	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*SIZE_DISK_MIN, (NITER/timing_slowness)*SIZE_DISK_MIN,
+	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
 					       timing_latency/NITER, timing_latency/NITER, node);
 					       timing_latency/NITER, timing_latency/NITER, node);
 	return 1;
 	return 1;
 }
 }

+ 9 - 9
src/core/disk_ops/disk_stdio.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  *
  * Copyright (C) 2013 Corentin Salingue
  * Copyright (C) 2013 Corentin Salingue
- * Copyright (C) 2015, 2016 CNRS
+ * Copyright (C) 2015, 2016, 2017 CNRS
  *
  *
  * StarPU is free software; you can redistribute it and/or modify
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
  * it under the terms of the GNU Lesser General Public License as published by
@@ -349,17 +349,17 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	char *buf;
 	char *buf;
 
 
 	srand(time(NULL));
 	srand(time(NULL));
-	starpu_malloc_flags((void **) &buf, SIZE_DISK_MIN, 0);
+	starpu_malloc_flags((void **) &buf, STARPU_DISK_SIZE_MIN, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
 
 
 	/* allocate memory */
 	/* allocate memory */
-	void *mem = _starpu_disk_alloc(node, SIZE_DISK_MIN);
+	void *mem = _starpu_disk_alloc(node, STARPU_DISK_SIZE_MIN);
 	/* fail to alloc */
 	/* fail to alloc */
 	if (mem == NULL)
 	if (mem == NULL)
 		return 0;
 		return 0;
 	struct starpu_stdio_obj *tmp = (struct starpu_stdio_obj *) mem;
 	struct starpu_stdio_obj *tmp = (struct starpu_stdio_obj *) mem;
 
 
-	memset(buf, 0, SIZE_DISK_MIN);
+	memset(buf, 0, STARPU_DISK_SIZE_MIN);
 
 
 	/* Measure upload slowness */
 	/* Measure upload slowness */
 	start = starpu_timing_now();
 	start = starpu_timing_now();
@@ -367,7 +367,7 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	{
 	{
 		FILE *f = tmp->file;
 		FILE *f = tmp->file;
 
 
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, SIZE_DISK_MIN, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, STARPU_DISK_SIZE_MIN, NULL);
 
 
 		if (!f)
 		if (!f)
 			f = _starpu_stdio_reopen(tmp);
 			f = _starpu_stdio_reopen(tmp);
@@ -390,7 +390,7 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	timing_slowness = end - start;
 	timing_slowness = end - start;
 
 
 	/* free memory */
 	/* free memory */
-	starpu_free_flags(buf, SIZE_DISK_MIN, 0);
+	starpu_free_flags(buf, STARPU_DISK_SIZE_MIN, 0);
 
 
 	starpu_malloc_flags((void**) &buf, sizeof(char), 0);
 	starpu_malloc_flags((void**) &buf, sizeof(char), 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
@@ -403,7 +403,7 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	{
 	{
 		FILE *f = tmp->file;
 		FILE *f = tmp->file;
 
 
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, rand() % (SIZE_DISK_MIN -1) , 1, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, rand() % (STARPU_DISK_SIZE_MIN -1) , 1, NULL);
 
 
 		if (!f)
 		if (!f)
 			f = _starpu_stdio_reopen(tmp);
 			f = _starpu_stdio_reopen(tmp);
@@ -424,10 +424,10 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	end = starpu_timing_now();
 	end = starpu_timing_now();
 	timing_latency = end - start;
 	timing_latency = end - start;
 
 
-	_starpu_disk_free(node, mem, SIZE_DISK_MIN);
+	_starpu_disk_free(node, mem, STARPU_DISK_SIZE_MIN);
 	starpu_free_flags(buf, sizeof(char), 0);
 	starpu_free_flags(buf, sizeof(char), 0);
 
 
-	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*SIZE_DISK_MIN, (NITER/timing_slowness)*SIZE_DISK_MIN,
+	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
 					       timing_latency/NITER, timing_latency/NITER, node);
 					       timing_latency/NITER, timing_latency/NITER, node);
 	return 1;
 	return 1;
 }
 }

+ 8 - 8
src/core/disk_ops/unistd/disk_unistd_global.c

@@ -399,12 +399,12 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 
 
 	srand(time(NULL));
 	srand(time(NULL));
 	char *buf;
 	char *buf;
-	starpu_malloc_flags((void *) &buf, SIZE_DISK_MIN, 0);
+	starpu_malloc_flags((void *) &buf, STARPU_DISK_SIZE_MIN, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
-	memset(buf, 0, SIZE_DISK_MIN);
+	memset(buf, 0, STARPU_DISK_SIZE_MIN);
 
 
 	/* allocate memory */
 	/* allocate memory */
-	void *mem = _starpu_disk_alloc(node, SIZE_DISK_MIN);
+	void *mem = _starpu_disk_alloc(node, STARPU_DISK_SIZE_MIN);
 	/* fail to alloc */
 	/* fail to alloc */
 	if (mem == NULL)
 	if (mem == NULL)
 		return 0;
 		return 0;
@@ -417,7 +417,7 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	{
 	{
 		int fd = tmp->descriptor;
 		int fd = tmp->descriptor;
 
 
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, SIZE_DISK_MIN, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, 0, STARPU_DISK_SIZE_MIN, NULL);
 
 
 		if (fd < 0)
 		if (fd < 0)
 			fd = _starpu_unistd_reopen(tmp);
 			fd = _starpu_unistd_reopen(tmp);
@@ -435,7 +435,7 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	timing_slowness = end - start;
 	timing_slowness = end - start;
 
 
 	/* free memory */
 	/* free memory */
-	starpu_free_flags(buf, SIZE_DISK_MIN, 0);
+	starpu_free_flags(buf, STARPU_DISK_SIZE_MIN, 0);
 
 
 	starpu_malloc_flags((void *) &buf, MEM_SIZE, 0);
 	starpu_malloc_flags((void *) &buf, MEM_SIZE, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
@@ -448,7 +448,7 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	{
 	{
 		int fd = tmp->descriptor;
 		int fd = tmp->descriptor;
 
 
-		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, (rand() % (SIZE_DISK_MIN/MEM_SIZE)) * MEM_SIZE, MEM_SIZE, NULL);
+		_starpu_disk_write(STARPU_MAIN_RAM, node, mem, buf, (rand() % (STARPU_DISK_SIZE_MIN/MEM_SIZE)) * MEM_SIZE, MEM_SIZE, NULL);
 
 
 		if (fd < 0)
 		if (fd < 0)
 			fd = _starpu_unistd_reopen(tmp);
 			fd = _starpu_unistd_reopen(tmp);
@@ -465,10 +465,10 @@ int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	end = starpu_timing_now();
 	end = starpu_timing_now();
 	timing_latency = end - start;
 	timing_latency = end - start;
 
 
-	_starpu_disk_free(node, mem, SIZE_DISK_MIN);
+	_starpu_disk_free(node, mem, STARPU_DISK_SIZE_MIN);
 	starpu_free_flags(buf, MEM_SIZE, 0);
 	starpu_free_flags(buf, MEM_SIZE, 0);
 
 
-	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*SIZE_DISK_MIN, (NITER/timing_slowness)*SIZE_DISK_MIN,
+	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*STARPU_DISK_SIZE_MIN, (NITER/timing_slowness)*STARPU_DISK_SIZE_MIN,
 					       timing_latency/NITER, timing_latency/NITER, node);
 					       timing_latency/NITER, timing_latency/NITER, node);
 	return 1;
 	return 1;
 }
 }