[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