[Openmp-commits] [PATCH] D60884: [OpenMP][libomptarget] Enable usage of unified memory for declare target link variables
Gheorghe-Teodor Bercea via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Thu Apr 18 12:08:49 PDT 2019
gtbercea created this revision.
gtbercea added reviewers: ABataev, caomhin.
Herald added subscribers: openmp-commits, jdoerfert, guansong.
Herald added a project: OpenMP.
gtbercea added a parent revision: D60223: [OpenMP][libomptarget] Enable requires flags for target libraries. Support for target link variables when unified memory is enabled.
This patch enables the usage of a host variable on the device for declare target link variables when unified memory is available.
Repository:
rOMP OpenMP
https://reviews.llvm.org/D60884
Files:
libomptarget/plugins/cuda/src/rtl.cpp
Index: libomptarget/plugins/cuda/src/rtl.cpp
===================================================================
--- libomptarget/plugins/cuda/src/rtl.cpp
+++ libomptarget/plugins/cuda/src/rtl.cpp
@@ -446,6 +446,16 @@
DP("Entry point " DPxMOD " maps to global %s (" DPxMOD ")\n",
DPxPTR(e - HostBegin), e->name, DPxPTR(cuptr));
entry.addr = (void *)cuptr;
+ if (DeviceInfo.RequiresFlags & OMP_REQ_UNIFIED_SHARED_MEMORY &&
+ e->flags & OMP_DECLARE_TARGET_LINK) {
+ // If unified memory is present any target link variables
+ // can access host addresses directly. There is no longer a
+ // need for device copies.
+ cuMemcpyHtoD(cuptr, e->addr, sizeof(void *));
+ DP("Copy linked variable host address (" DPxMOD ")"
+ "to device address (" DPxMOD ")\n",
+ DPxPTR(*((void**)e->addr)), DPxPTR(cuptr));
+ }
DeviceInfo.addOffloadEntry(device_id, entry);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60884.195799.patch
Type: text/x-patch
Size: 958 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20190418/210cdd65/attachment.bin>
More information about the Openmp-commits
mailing list