|
@@ -652,22 +652,15 @@ static int copy_opencl_common(void *src_interface, unsigned src_node, void *dst_
|
|
|
|
|
|
/* We may have a contiguous buffer for the entire block, or contiguous
|
|
|
* plans within the block, we can avoid many small transfers that way */
|
|
|
- if ((nx == src_block->ldy) && (src_block->ldy == dst_block->ldy))
|
|
|
- {
|
|
|
+ if ((nx == src_block->ldy) && (src_block->ldy == dst_block->ldy) &&
|
|
|
/* Is that a single contiguous buffer ? */
|
|
|
- if (((nx*ny) == src_block->ldz) && (src_block->ldz == dst_block->ldz))
|
|
|
- {
|
|
|
- ret = starpu_opencl_copy_async_sync(src_block->dev_handle, src_block->offset, src_node,
|
|
|
- dst_block->dev_handle, dst_block->offset, dst_node,
|
|
|
- src_block->nx*src_block->ny*src_block->nz*src_block->elemsize,
|
|
|
- event);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- /* Are all plans contiguous */
|
|
|
- STARPU_ASSERT_MSG(0, "XXX non contiguous buffers are not properly supported in OpenCL yet. (TODO)");
|
|
|
- }
|
|
|
- }
|
|
|
+ ((nx*ny) == src_block->ldz) && (src_block->ldz == dst_block->ldz))
|
|
|
+ {
|
|
|
+ ret = starpu_opencl_copy_async_sync(src_block->dev_handle, src_block->offset, src_node,
|
|
|
+ dst_block->dev_handle, dst_block->offset, dst_node,
|
|
|
+ src_block->nx*src_block->ny*src_block->nz*src_block->elemsize,
|
|
|
+ event);
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
/* Default case: we transfer all lines one by one: ny*nz transfers */
|