[Openmp-commits] [PATCH] D87722: [OpenMP] Additional Information for Libomptarget Device Mappings

Joseph Huber via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Tue Sep 15 13:44:05 PDT 2020


jhuber6 created this revision.
jhuber6 added a reviewer: jdoerfert.
jhuber6 added a project: OpenMP.
Herald added subscribers: openmp-commits, guansong, yaxunl.
jhuber6 requested review of this revision.
Herald added a subscriber: sstefan1.

This patch adds additonal support for priting infromation from Libomptarget for already existing maps and printing the final data mapped on the device at device destruction.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D87722

Files:
  openmp/libomptarget/src/device.cpp
  openmp/libomptarget/src/interface.cpp


Index: openmp/libomptarget/src/interface.cpp
===================================================================
--- openmp/libomptarget/src/interface.cpp
+++ openmp/libomptarget/src/interface.cpp
@@ -78,7 +78,8 @@
         if (getInfoLevel() > 1)
           dumpTargetPointerMappings();
         else
-          FAILURE_MESSAGE("run with env LIBOMPTARGET_INFO>1 to dump tables\n");
+          FAILURE_MESSAGE("run with env LIBOMPTARGET_INFO>1 to dump host-target"
+                          "pointer maps\n");
 
         FATAL_MESSAGE0(1, "failure of target construct while offloading is mandatory");
       }
Index: openmp/libomptarget/src/device.cpp
===================================================================
--- openmp/libomptarget/src/device.cpp
+++ openmp/libomptarget/src/device.cpp
@@ -17,6 +17,7 @@
 
 #include <cassert>
 #include <climits>
+#include <cstdio>
 #include <string>
 
 /// Map between Device ID (i.e. openmp device id) and its DeviceTy.
@@ -50,7 +51,19 @@
       ShadowPtrMap(), DataMapMtx(), PendingGlobalsMtx(), ShadowMtx(),
       MemoryManager(nullptr) {}
 
-DeviceTy::~DeviceTy() = default;
+DeviceTy::~DeviceTy() {
+    if (DeviceID != -1 && getInfoLevel() > 1) {
+      fprintf(stderr, "Device %d Destroyed. Final Host-Device Pointer "
+                      "Mapping [LIBOMPTARGET_INFO>1]\n", DeviceID);
+      fprintf(stderr, "%-18s %-18s %s\n", "Host Ptr", "Target Ptr", "Size (B)");
+      for (const auto &HostTargetMap : HostDataToTargetMap) {
+          fprintf(stderr, DPxMOD " " DPxMOD " %lu\n",
+                  DPxPTR(HostTargetMap.HstPtrBegin),
+                  DPxPTR(HostTargetMap.TgtPtrBegin),
+                  HostTargetMap.HstPtrEnd - HostTargetMap.HstPtrBegin);
+      }
+    }
+}
 
 int DeviceTy::associatePtr(void *HstPtrBegin, void *TgtPtrBegin, int64_t Size) {
   DataMapMtx.lock();
@@ -214,7 +227,7 @@
       HT.incRefCount();
 
     uintptr_t tp = HT.TgtPtrBegin + ((uintptr_t)HstPtrBegin - HT.HstPtrBegin);
-    DP("Mapping exists%s with HstPtrBegin=" DPxMOD ", TgtPtrBegin=" DPxMOD ", "
+    INFO(DeviceID, "Mapping exists%s with HstPtrBegin=" DPxMOD ", TgtPtrBegin=" DPxMOD ", "
         "Size=%" PRId64 ",%s RefCount=%s\n", (IsImplicit ? " (implicit)" : ""),
         DPxPTR(HstPtrBegin), DPxPTR(tp), Size,
         (UpdateRefCount ? " updated" : ""),


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D87722.292015.patch
Type: text/x-patch
Size: 2324 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20200915/fc480e0a/attachment.bin>


More information about the Openmp-commits mailing list