https://gcc.gnu.org/g:2ab0f672c29b875f4c5cb73b3770598981d9dba5

commit 2ab0f672c29b875f4c5cb73b3770598981d9dba5
Author: Paul-Antoine Arras <[email protected]>
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)

Reply via email to