[OpenMP][libomptarget] Fix AsyncInfoTy object in omp_target_memcpy
authorKevin Sala Penadés <kevin.sala@bsc.es>
Wed, 2 Nov 2022 16:03:34 +0000 (12:03 -0400)
committerShilei Tian <i@tianshilei.me>
Wed, 2 Nov 2022 16:03:49 +0000 (12:03 -0400)
The AsyncInfoTy should be created in the same device as the async operation will be issued. In omp_target_memcpy, the AsyncInfoTy for the host to destination device transfer was created referring to the source device.

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D137225

openmp/libomptarget/src/api.cpp

index d65ca0b..f408449 100644 (file)
@@ -190,7 +190,7 @@ EXTERN int omp_target_memcpy(void *Dst, const void *Src, size_t Length,
       Rc = SrcDev.retrieveData(Buffer, SrcAddr, Length, AsyncInfo);
     }
     if (Rc == OFFLOAD_SUCCESS) {
-      AsyncInfoTy AsyncInfo(SrcDev);
+      AsyncInfoTy AsyncInfo(DstDev);
       Rc = DstDev.submitData(DstAddr, Buffer, Length, AsyncInfo);
     }
     free(Buffer);