Browse Source

Data interfaces: Synchronous and asynchronous methods for OpenCL are similar, avoid to duplicate code.

Nathalie Furmento 15 years ago
parent
commit
eebab19c11

+ 2 - 30
src/datawizard/interfaces/block_interface.c

@@ -751,41 +751,13 @@ static int copy_opencl_to_ram_async(void *src_interface, unsigned src_node __att
 
 static int copy_ram_to_opencl(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_block_interface_t *src_block = src_interface;
-	starpu_block_interface_t *dst_block = dst_interface;
-
-	/* XXX non contiguous buffers are not properly supported yet. (TODO) */
-	STARPU_ASSERT((src_block->nx == src_block->ldy) && (src_block->ldy == dst_block->ldy));
-
-	int err = _starpu_opencl_copy_to_opencl((void*)src_block->ptr, (cl_mem)dst_block->dev_handle,
-                                                src_block->nx*src_block->ny*src_block->nz*src_block->elemsize,
-                                                dst_block->offset, NULL);
-
-	if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_block->nx*src_block->ny*src_block->nz*src_block->elemsize);
-
+        copy_ram_to_opencl_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 
 static int copy_opencl_to_ram(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_block_interface_t *src_block = src_interface;
-	starpu_block_interface_t *dst_block = dst_interface;
-
-	/* XXX non contiguous buffers are not properly supported yet. (TODO) */
-	STARPU_ASSERT((src_block->nx == src_block->ldy) && (src_block->ldy == dst_block->ldy));
-
-	int err = _starpu_opencl_copy_from_opencl((cl_mem)src_block->dev_handle, (void*)dst_block->ptr,
-                                                  src_block->nx*src_block->ny*src_block->nz*src_block->elemsize,
-                                                  src_block->offset, NULL);
-
-        if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_block->nx*src_block->ny*src_block->nz*src_block->elemsize);
-
+        copy_opencl_to_ram_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 

+ 2 - 29
src/datawizard/interfaces/matrix_interface.c

@@ -511,40 +511,13 @@ static int copy_opencl_to_ram_async(void *src_interface, unsigned src_node __att
 
 static int copy_ram_to_opencl(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_matrix_interface_t *src_matrix = src_interface;
-	starpu_matrix_interface_t *dst_matrix = dst_interface;
-
-	/* XXX non contiguous matrices are not supported with OpenCL yet ! (TODO) */
-	STARPU_ASSERT((src_matrix->ld == src_matrix->nx) && (dst_matrix->ld == dst_matrix->nx));
-
-	int err = _starpu_opencl_copy_to_opencl((void*)src_matrix->ptr, (cl_mem)dst_matrix->dev_handle, src_matrix->nx*src_matrix->ny*src_matrix->elemsize,
-                                                dst_matrix->offset, NULL);
-
-	if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_matrix->nx*src_matrix->ny*src_matrix->elemsize);
-
+        copy_ram_to_opencl_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 
 static int copy_opencl_to_ram(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_matrix_interface_t *src_matrix = src_interface;
-	starpu_matrix_interface_t *dst_matrix = dst_interface;
-
-	/* XXX non contiguous matrices are not supported with OpenCL yet ! (TODO) */
-	STARPU_ASSERT((src_matrix->ld == src_matrix->nx) && (dst_matrix->ld == dst_matrix->nx));
-
-	int err = _starpu_opencl_copy_from_opencl((cl_mem)src_matrix->dev_handle, (void*)dst_matrix->ptr,
-                                                  src_matrix->nx*src_matrix->ny*src_matrix->elemsize,
-                                                  src_matrix->offset, NULL);
-
-        if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_matrix->nx*src_matrix->ny*src_matrix->elemsize);
-
+        copy_opencl_to_ram_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 

+ 2 - 22
src/datawizard/interfaces/variable_interface.c

@@ -395,33 +395,13 @@ static int copy_opencl_to_ram_async(void *src_interface, unsigned src_node __att
 
 static int copy_ram_to_opencl(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_variable_interface_t *src_variable = src_interface;
-	starpu_variable_interface_t *dst_variable = dst_interface;
-
-	int err = _starpu_opencl_copy_to_opencl((void*)src_variable->ptr, (cl_mem)dst_variable->ptr, src_variable->elemsize,
-                                                0, NULL);
-
-	if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_variable->elemsize);
-
+        copy_ram_to_opencl_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 
 static int copy_opencl_to_ram(void *src_interface, unsigned src_node __attribute__((unused)), void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_variable_interface_t *src_variable = src_interface;
-	starpu_variable_interface_t *dst_variable = dst_interface;
-
-	int err = _starpu_opencl_copy_from_opencl((cl_mem)src_variable->ptr, (void*)dst_variable->ptr, src_variable->elemsize,
-                                                  0, NULL);
-
-        if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_variable->elemsize);
-
+        copy_opencl_to_ram_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 

+ 4 - 24
src/datawizard/interfaces/vector_interface.c

@@ -396,7 +396,7 @@ static int copy_ram_to_cuda_async(void *src_interface, unsigned src_node __attri
 #endif // STARPU_USE_CUDA
 #ifdef STARPU_USE_OPENCL
 static int copy_ram_to_opencl_async(void *src_interface, unsigned src_node __attribute__((unused)),
-					void *dst_interface, unsigned dst_node __attribute__((unused)), void *_event)
+                                    void *dst_interface, unsigned dst_node __attribute__((unused)), void *_event)
 {
 	starpu_vector_interface_t *src_vector = src_interface;
 	starpu_vector_interface_t *dst_vector = dst_interface;
@@ -434,36 +434,16 @@ static int copy_opencl_to_ram_async(void *src_interface, unsigned src_node __att
 }
 
 static int copy_ram_to_opencl(void *src_interface, unsigned src_node __attribute__((unused)),
-				void *dst_interface, unsigned dst_node __attribute__((unused)))
+                              void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_vector_interface_t *src_vector = src_interface;
-	starpu_vector_interface_t *dst_vector = dst_interface;
-
-	int err = _starpu_opencl_copy_to_opencl((void*)src_vector->ptr, (cl_mem)dst_vector->dev_handle, src_vector->nx*src_vector->elemsize,
-                                                dst_vector->offset, NULL);
-
-	if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_vector->nx*src_vector->elemsize);
-
+        copy_ram_to_opencl_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }
 
 static int copy_opencl_to_ram(void *src_interface, unsigned src_node __attribute__((unused)),
 				void *dst_interface, unsigned dst_node __attribute__((unused)))
 {
-	starpu_vector_interface_t *src_vector = src_interface;
-	starpu_vector_interface_t *dst_vector = dst_interface;
-
-	int err = _starpu_opencl_copy_from_opencl((cl_mem)src_vector->dev_handle, (void*)dst_vector->ptr, src_vector->nx*src_vector->elemsize,
-                                                  src_vector->offset, NULL);
-
-        if (STARPU_UNLIKELY(err))
-                STARPU_OPENCL_REPORT_ERROR(err);
-
-	STARPU_TRACE_DATA_COPY(src_node, dst_node, src_vector->nx*src_vector->elemsize);
-
+        copy_opencl_to_ram_async(src_interface, src_node, dst_interface, dst_node, NULL);
 	return 0;
 }