Browse Source

change example to support copy on disk + change param of drivers disk functions

Corentin Salingue 12 years ago
parent
commit
c7b0a5cd69

+ 8 - 2
examples/basic_examples/vector_scal.c

@@ -126,6 +126,10 @@ int main(int argc, char **argv)
 
 	unsigned dd = starpu_disk_register(&write_on_file, (void *) "/tmp/", 1024*1024*15);
 
+	uintptr_t fileDD = starpu_disk_alloc(dd, sizeof(vector));
+	starpu_disk_write(dd, fileDD, (void *) vector, 0, sizeof(vector));
+
+
 
 
 	if (ret == -ENODEV) goto enodev;
@@ -153,7 +157,7 @@ int main(int argc, char **argv)
 	 *  - the fifth argument is the size of each element.
 	 */
 	starpu_data_handle_t vector_handle;
-	starpu_vector_data_register(&vector_handle, dd, (uintptr_t)vector, NX, sizeof(vector[0]));
+	starpu_vector_data_register(&vector_handle, dd, fileDD, NX, sizeof(vector[0]));
 
 	float factor = 3.14;
 
@@ -176,7 +180,7 @@ int main(int argc, char **argv)
 	/* execute the task on any eligible computational ressource */
 	ret = starpu_task_submit(task);
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
-	printf("done \n");
+
 	/* StarPU does not need to manipulate the array anymore so we can stop
  	 * monitoring it */
 	starpu_data_unregister(vector_handle);
@@ -185,7 +189,9 @@ int main(int argc, char **argv)
         ret = starpu_opencl_unload_opencl(&opencl_program);
         STARPU_CHECK_RETURN_VALUE(ret, "starpu_opencl_unload_opencl");
 #endif
+	starpu_disk_read(dd, fileDD, (void *) vector, 0, sizeof(vector));
 
+	starpu_disk_free(dd, fileDD, sizeof(vector));
 	starpu_disk_unregister(dd);
 
 	/* terminate StarPU, no task can be submitted after */

+ 3 - 3
src/datawizard/copy_driver.c

@@ -415,7 +415,7 @@ static int copy_data_1_to_1_generic(starpu_data_handle_t handle,
 		STARPU_ABORT();
 		break;
 	}
-
+	
 	return ret;
 #endif /* !SIMGRID */
 }
@@ -577,14 +577,14 @@ int starpu_interface_copy(uintptr_t src, size_t src_offset, unsigned src_node, u
 	case _STARPU_MEMORY_NODE_TUPLE(STARPU_CPU_RAM, STARPU_DISK_RAM):
 	{
 		return _starpu_disk_copy_src_to_disk(
-			(void*) src, src_offset, src_node,
+			(void*) src + src_offset, src_node,
 			(void*) dst, dst_offset, dst_node,
 			size);
 	}
 	case _STARPU_MEMORY_NODE_TUPLE(STARPU_DISK_RAM, STARPU_CPU_RAM):
 		return _starpu_disk_copy_disk_to_src(
 			(void*) src, src_offset, src_node,
-			(void*) dst, dst_offset, dst_node,
+			(void*) dst + dst_offset, dst_node,
 			size);
 
 	case _STARPU_MEMORY_NODE_TUPLE(STARPU_DISK_RAM, STARPU_DISK_RAM):

+ 4 - 4
src/drivers/disk/driver_disk.c

@@ -17,20 +17,20 @@
 #include <starpu.h>
 #include <starpu_profiling.h>
 
-int _starpu_disk_copy_src_to_disk(void * src, size_t src_offset, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size)
+int _starpu_disk_copy_src_to_disk(void * src, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size)
 {
 	STARPU_ASSERT(starpu_node_get_kind(src_node) == STARPU_CPU_RAM);
 
-	starpu_disk_write(dst_node, dst, src+src_offset, dst_offset, size);
+	starpu_disk_write(dst_node, dst, src, dst_offset, size);
 	return 0;
 }
 
 
-int _starpu_disk_copy_disk_to_src(void * src, size_t src_offset, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size)
+int _starpu_disk_copy_disk_to_src(void * src, size_t src_offset, unsigned src_node, void * dst, unsigned dst_node, size_t size)
 {
 	STARPU_ASSERT(starpu_node_get_kind(dst_node) == STARPU_CPU_RAM);
 
-	starpu_disk_read(src_node, src, dst+dst_offset, src_offset, size);
+	starpu_disk_read(src_node, src, dst, src_offset, size);
 	return 0;
 }
 

+ 2 - 2
src/drivers/disk/driver_disk.h

@@ -17,9 +17,9 @@
 #ifndef __DRIVER_DISK_H__
 #define __DRIVER_DISK_H__
 
-int _starpu_disk_copy_src_to_disk(void * src, size_t src_offset, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size);
+int _starpu_disk_copy_src_to_disk(void * src, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size);
 
-int _starpu_disk_copy_disk_to_src(void * src, size_t src_offset, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size);
+int _starpu_disk_copy_disk_to_src(void * src, size_t src_offset, unsigned src_node, void * dst, unsigned dst_node, size_t size);
 
 int _starpu_disk_copy_disk_to_disk(void * src, size_t src_offset, unsigned src_node, void * dst, size_t dst_offset, unsigned dst_node, size_t size);