[Openmp-commits] [openmp] 786a140 - [OpenMP] Use IsHostPtr where needed in rest of omptarget.cpp
Joel E. Denny via Openmp-commits
openmp-commits at lists.llvm.org
Wed Sep 1 14:38:14 PDT 2021
Author: Joel E. Denny
Date: 2021-09-01T17:31:42-04:00
New Revision: 786a140650990ce9f760da5ffeb5fad0b93687d9
URL: https://github.com/llvm/llvm-project/commit/786a140650990ce9f760da5ffeb5fad0b93687d9
DIFF: https://github.com/llvm/llvm-project/commit/786a140650990ce9f760da5ffeb5fad0b93687d9.diff
LOG: [OpenMP] Use IsHostPtr where needed in rest of omptarget.cpp
As started in D107925, this patch replaces the remaining occurrences
of `UNIFIED_SHARED_MEMORY && TgtPtrBegin == HstPtrBegin` in
`omptarget.cpp` with `IsHostPtr`. The former condition is broken in
the rare case that the device and host happen to use the same address
for their mapped allocations. I don't know how to write a test that's
likely to reveal this case.
Reviewed By: grokos
Differential Revision: https://reviews.llvm.org/D107928
Added:
Modified:
openmp/libomptarget/src/omptarget.cpp
Removed:
################################################################################
diff --git a/openmp/libomptarget/src/omptarget.cpp b/openmp/libomptarget/src/omptarget.cpp
index 55b840a611fe..846c4d5d5e3c 100644
--- a/openmp/libomptarget/src/omptarget.cpp
+++ b/openmp/libomptarget/src/omptarget.cpp
@@ -833,8 +833,7 @@ static int targetDataContiguous(ident_t *loc, DeviceTy &Device, void *ArgsBase,
return OFFLOAD_SUCCESS;
}
- if (PM->RTLs.RequiresFlags & OMP_REQ_UNIFIED_SHARED_MEMORY &&
- TgtPtrBegin == HstPtrBegin) {
+ if (IsHostPtr) {
DP("hst data:" DPxMOD " unified and shared, becomes a noop\n",
DPxPTR(HstPtrBegin));
return OFFLOAD_SUCCESS;
@@ -1273,7 +1272,7 @@ static int processDataBefore(ident_t *loc, int64_t DeviceId, void *HostPtr,
void *HstPtrVal = Args[I];
void *HstPtrBegin = ArgBases[I];
void *HstPtrBase = Args[Idx];
- bool IsLast, IsHostPtr; // unused.
+ bool IsLast, IsHostPtr; // IsLast is unused.
void *TgtPtrBase =
(void *)((intptr_t)TgtArgs[TgtIdx] + TgtOffsets[TgtIdx]);
DP("Parent lambda base " DPxMOD "\n", DPxPTR(TgtPtrBase));
@@ -1288,8 +1287,7 @@ static int processDataBefore(ident_t *loc, int64_t DeviceId, void *HostPtr,
DPxPTR(HstPtrVal));
continue;
}
- if (PM->RTLs.RequiresFlags & OMP_REQ_UNIFIED_SHARED_MEMORY &&
- TgtPtrBegin == HstPtrBegin) {
+ if (IsHostPtr) {
DP("Unified memory is active, no need to map lambda captured"
"variable (" DPxMOD ")\n",
DPxPTR(HstPtrVal));
More information about the Openmp-commits
mailing list