[gcc/devel/omp/gcc-15] Fix strided `target update`
Sandra Loosemore
sandra@gcc.gnu.org
Thu May 15 20:37:47 GMT 2025
https://gcc.gnu.org/g:2ab0f672c29b875f4c5cb73b3770598981d9dba5
commit 2ab0f672c29b875f4c5cb73b3770598981d9dba5
Author: Paul-Antoine Arras <parras@baylibre.com>
Date: Fri Jun 7 20:29:40 2024 +0200
Fix strided `target update`
OG14 fixup for mainline commit 25072a477a5
"OpenMP: Call cuMemcpy2D/cuMemcpy3D for nvptx for omp_target_memcpy_rect"
libgomp/ChangeLog
* target.c (omp_target_memcpy_rect_worker): Require unit strides
and matching element size.
Diff:
---
libgomp/target.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/libgomp/target.c b/libgomp/target.c
index 66bc5c1b7a20..ae1a31d7505e 100644
--- a/libgomp/target.c
+++ b/libgomp/target.c
@@ -5266,6 +5266,9 @@ omp_target_memcpy_rect_worker (void *dst, const void *src, size_t element_size,
/* host->device, device->host and intra device. */
if (num_dims == 2
+ && (!strides || (strides[0] == 1
+ && strides[1] == 1
+ && element_size == span))
&& ((src_devicep
&& src_devicep == dst_devicep
&& src_devicep->memcpy2d_func)
@@ -5292,6 +5295,10 @@ omp_target_memcpy_rect_worker (void *dst, const void *src, size_t element_size,
return ret ? 0 : EINVAL;
}
else if (num_dims == 3
+ && (!strides || (strides[0] == 1
+ && strides[1] == 1
+ && strides[2] == 1
+ && element_size == span))
&& ((src_devicep
&& src_devicep == dst_devicep
&& src_devicep->memcpy3d_func)
More information about the Gcc-cvs
mailing list