From 26864dc14e7d91bf9fd7b41c4936bd1340a97bf2 Mon Sep 17 00:00:00 2001 From: Hansang Bae Date: Wed, 10 Dec 2025 13:17:30 -0600 Subject: [PATCH 1/2] [Offload] Debug message update part 2 Update debug messages based on the new method from #170425. Added a new debug type `Tool` and updated the following files. - include/OffloadPolicy.h - include/OpenMP/OMPT/Connector.h - include/Shared/Debug.h - include/Shared/EnvironmentVar.h - libomptarget/OpenMP/Mapping.cpp - libomptarget/OpenMP/OMPT/Callback.cpp - libomptarget/PluginManager.cpp --- offload/include/OffloadPolicy.h | 10 +- offload/include/OpenMP/OMPT/Connector.h | 11 ++- offload/include/Shared/Debug.h | 1 + offload/include/Shared/EnvironmentVar.h | 12 ++- offload/libomptarget/OpenMP/Mapping.cpp | 87 +++++++++-------- offload/libomptarget/OpenMP/OMPT/Callback.cpp | 19 ++-- offload/libomptarget/PluginManager.cpp | 97 ++++++++++--------- 7 files changed, 128 insertions(+), 109 deletions(-) diff --git a/offload/include/OffloadPolicy.h b/offload/include/OffloadPolicy.h index 9bbd1fffb3798..9354e45b61af7 100644 --- a/offload/include/OffloadPolicy.h +++ b/offload/include/OffloadPolicy.h @@ -16,6 +16,8 @@ #include "PluginManager.h" +using namespace llvm::omp::target::debug; + enum kmp_target_offload_kind_t { tgt_disabled = 0, tgt_default = 1, @@ -35,12 +37,12 @@ class OffloadPolicy { return; default: if (PM.getNumDevices()) { - DP("Default TARGET OFFLOAD policy is now mandatory " - "(devices were found)\n"); + ODBG(ODT_Init) << "Default TARGET OFFLOAD policy is now mandatory " + << "(devices were found)"; Kind = MANDATORY; } else { - DP("Default TARGET OFFLOAD policy is now disabled " - "(no devices were found)\n"); + ODBG(ODT_Init) << "Default TARGET OFFLOAD policy is now disabled " + << "(no devices were found)"; Kind = DISABLED; } return; diff --git a/offload/include/OpenMP/OMPT/Connector.h b/offload/include/OpenMP/OMPT/Connector.h index c7b37740d5642..add8941cc4905 100644 --- a/offload/include/OpenMP/OMPT/Connector.h +++ b/offload/include/OpenMP/OMPT/Connector.h @@ -27,6 +27,8 @@ #include "Shared/Debug.h" +using namespace llvm::omp::target::debug; + #pragma push_macro("DEBUG_PREFIX") #undef DEBUG_PREFIX #define DEBUG_PREFIX "OMPT" @@ -76,7 +78,7 @@ class OmptLibraryConnectorTy { std::string LibName = LibIdent; LibName += ".so"; - DP("OMPT: Trying to load library %s\n", LibName.c_str()); + ODBG(ODT_Tool) << "OMPT: Trying to load library " << LibName; auto DynLibHandle = std::make_unique( llvm::sys::DynamicLibrary::getPermanentLibrary(LibName.c_str(), &ErrMsg)); @@ -85,12 +87,13 @@ class OmptLibraryConnectorTy { LibConnHandle = nullptr; } else { auto LibConnRtn = "ompt_" + LibIdent + "_connect"; - DP("OMPT: Trying to get address of connection routine %s\n", - LibConnRtn.c_str()); + ODBG(ODT_Tool) << "OMPT: Trying to get address of connection routine " + << LibConnRtn; LibConnHandle = reinterpret_cast( DynLibHandle->getAddressOfSymbol(LibConnRtn.c_str())); } - DP("OMPT: Library connection handle = %p\n", LibConnHandle); + ODBG(ODT_Tool) << "OMPT: Library connection handle = " + << reinterpret_cast(LibConnHandle); IsInitialized = true; } diff --git a/offload/include/Shared/Debug.h b/offload/include/Shared/Debug.h index d5cf719f1ebf3..3a1a00e83a654 100644 --- a/offload/include/Shared/Debug.h +++ b/offload/include/Shared/Debug.h @@ -529,6 +529,7 @@ constexpr const char *ODT_EmptyMapping = "EmptyMapping"; constexpr const char *ODT_Device = "Device"; constexpr const char *ODT_Interface = "Interface"; constexpr const char *ODT_Alloc = "Alloc"; +constexpr const char *ODT_Tool = "Tool"; static inline odbg_ostream reportErrorStream() { #ifdef OMPTARGET_DEBUG diff --git a/offload/include/Shared/EnvironmentVar.h b/offload/include/Shared/EnvironmentVar.h index 82f434e91a85b..5acafa3b175bb 100644 --- a/offload/include/Shared/EnvironmentVar.h +++ b/offload/include/Shared/EnvironmentVar.h @@ -19,6 +19,8 @@ #include #include +using namespace llvm::omp::target::debug; + /// Utility class for parsing strings to other types. struct StringParser { /// Parse a string to another type. @@ -61,7 +63,8 @@ template class Envar { IsPresent = StringParser::parse(EnvStr, Data); if (!IsPresent) { - DP("Ignoring invalid value %s for envar %s\n", EnvStr, Name.data()); + ODBG(ODT_Init) << "Ignoring invalid value " << EnvStr << " for envar " + << Name; Data = Default; } } @@ -180,12 +183,13 @@ inline llvm::Error Envar::init(llvm::StringRef Name, GetterFunctor Getter, // not present and reset to the getter value (default). IsPresent = false; Data = Default; - DP("Setter of envar %s failed, resetting to %s\n", Name.data(), - std::to_string(Data).data()); + ODBG(ODT_Init) << "Setter of envar " << Name << " failed, resetting to " + << std::to_string(Data); consumeError(std::move(Err)); } } else { - DP("Ignoring invalid value %s for envar %s\n", EnvStr, Name.data()); + ODBG(ODT_Init) << "Ignoring invalid value " << EnvStr << " for envar " + << Name; Data = Default; } } else { diff --git a/offload/libomptarget/OpenMP/Mapping.cpp b/offload/libomptarget/OpenMP/Mapping.cpp index 9b3533895f2a6..1ded326f2f6fb 100644 --- a/offload/libomptarget/OpenMP/Mapping.cpp +++ b/offload/libomptarget/OpenMP/Mapping.cpp @@ -15,6 +15,8 @@ #include "Shared/Requirements.h" #include "device.h" +using namespace llvm::omp::target::debug; + /// Dump a table of all the host-target pointer pairs on failure void dumpTargetPointerMappings(const ident_t *Loc, DeviceTy &Device, bool toStdOut) { @@ -59,12 +61,13 @@ int MappingInfoTy::associatePtr(void *HstPtrBegin, void *TgtPtrBegin, bool IsValid = HDTT.HstPtrEnd == (uintptr_t)HstPtrBegin + Size && HDTT.TgtPtrBegin == (uintptr_t)TgtPtrBegin; if (IsValid) { - DP("Attempt to re-associate the same device ptr+offset with the same " - "host ptr, nothing to do\n"); + ODBG(ODT_MappingExists) << "Attempt to re-associate the same device " + << "ptr+offset with the same " + << "host ptr, nothing to do"; return OFFLOAD_SUCCESS; } - REPORT("Not allowed to re-associate a different device ptr+offset with " - "the same host ptr\n"); + REPORT() << "Not allowed to re-associate a different device ptr+offset " + << "with the same host ptr"; return OFFLOAD_FAIL; } @@ -80,12 +83,12 @@ int MappingInfoTy::associatePtr(void *HstPtrBegin, void *TgtPtrBegin, /*UseHoldRefCount=*/false, /*Name=*/nullptr, /*IsRefCountINF=*/true)) .first->HDTT; - DP("Creating new map entry: HstBase=" DPxMOD ", HstBegin=" DPxMOD - ", HstEnd=" DPxMOD ", TgtBegin=" DPxMOD ", DynRefCount=%s, " - "HoldRefCount=%s\n", - DPxPTR(NewEntry.HstPtrBase), DPxPTR(NewEntry.HstPtrBegin), - DPxPTR(NewEntry.HstPtrEnd), DPxPTR(NewEntry.TgtPtrBegin), - NewEntry.dynRefCountToStr().c_str(), NewEntry.holdRefCountToStr().c_str()); + ODBG(ODT_Mapping) << "Creating new map entry: HstBase=" << NewEntry.HstPtrBase + << ", HstBegin=" << NewEntry.HstPtrBegin + << ", HstEnd=" << NewEntry.HstPtrEnd + << ", TgtBegin=" << NewEntry.TgtPtrBegin + << ", DynRefCount=" << NewEntry.dynRefCountToStr() + << ", HoldRefCount=" << NewEntry.holdRefCountToStr(); (void)NewEntry; // Notify the plugin about the new mapping. @@ -97,7 +100,7 @@ int MappingInfoTy::disassociatePtr(void *HstPtrBegin) { auto It = HDTTMap->find(HstPtrBegin); if (It == HDTTMap->end()) { - REPORT("Association not found\n"); + REPORT() << "Association not found"; return OFFLOAD_FAIL; } // Mapping exists @@ -108,13 +111,13 @@ int MappingInfoTy::disassociatePtr(void *HstPtrBegin) { // This is based on OpenACC 3.1, sec 3.2.33 "acc_unmap_data", L3656-3657: // "It is an error to call acc_unmap_data if the structured reference // count for the pointer is not zero." - REPORT("Trying to disassociate a pointer with a non-zero hold reference " - "count\n"); + REPORT() << "Trying to disassociate a pointer with a non-zero " + << "hold reference count"; return OFFLOAD_FAIL; } if (HDTT.isDynRefCountInf()) { - DP("Association found, removing it\n"); + ODBG(ODT_Mapping) << "Association found, removing it"; void *Event = HDTT.getEvent(); delete &HDTT; if (Event) @@ -123,8 +126,8 @@ int MappingInfoTy::disassociatePtr(void *HstPtrBegin) { return Device.notifyDataUnmapped(HstPtrBegin); } - REPORT("Trying to disassociate a pointer which was not mapped via " - "omp_target_associate_ptr\n"); + REPORT() << "Trying to disassociate a pointer which was not mapped via " + << "omp_target_associate_ptr"; return OFFLOAD_FAIL; } @@ -135,8 +138,8 @@ LookupResult MappingInfoTy::lookupMapping(HDTTMapAccessorTy &HDTTMap, uintptr_t HP = (uintptr_t)HstPtrBegin; LookupResult LR; - DP("Looking up mapping(HstPtrBegin=" DPxMOD ", Size=%" PRId64 ")...\n", - DPxPTR(HP), Size); + ODBG(ODT_Mapping) << "Looking up mapping(HstPtrBegin=" << HP + << ", Size=" << Size << ")..."; if (HDTTMap->empty()) return LR; @@ -185,12 +188,12 @@ LookupResult MappingInfoTy::lookupMapping(HDTTMapAccessorTy &HDTTMap, } if (LR.Flags.ExtendsBefore) { - DP("WARNING: Pointer is not mapped but section extends into already " - "mapped data\n"); + ODBG(ODT_Mapping) << "WARNING: Pointer is not mapped but section extends " + << "into already mapped data"; } if (LR.Flags.ExtendsAfter) { - DP("WARNING: Pointer is already mapped but section extends beyond mapped " - "region\n"); + ODBG(ODT_Mapping) << "WARNING: Pointer is already mapped but section " + << "extends beyond mapped region"; } } @@ -269,17 +272,16 @@ TargetPointerResultTy MappingInfoTy::getTargetPointer( "Return HstPtrBegin " DPxMOD " Size=%" PRId64 " for unified shared " "memory\n", DPxPTR((uintptr_t)HstPtrBegin), Size); - DP("Return HstPtrBegin " DPxMOD " Size=%" PRId64 " for unified shared " - "memory\n", - DPxPTR((uintptr_t)HstPtrBegin), Size); + ODBG(ODT_Mapping) << "Return HstPtrBegin " << HstPtrBegin + << " Size=" << Size << " for unified shared memory"; LR.TPR.Flags.IsPresent = false; LR.TPR.Flags.IsHostPointer = true; LR.TPR.TargetPointer = HstPtrBegin; } } else if (HasPresentModifier) { - DP("Mapping required by 'present' map type modifier does not exist for " - "HstPtrBegin=" DPxMOD ", Size=%" PRId64 "\n", - DPxPTR(HstPtrBegin), Size); + ODBG(ODT_Mapping) << "Mapping required by 'present' map type modifier does " + << "not exist for HstPtrBegin=" << HstPtrBegin + << ", Size=" << Size; MESSAGE("device mapping required by 'present' map type modifier does not " "exist for host address " DPxMOD " (%" PRId64 " bytes)", DPxPTR(HstPtrBegin), Size); @@ -342,19 +344,19 @@ TargetPointerResultTy MappingInfoTy::getTargetPointer( }; if (LR.TPR.getEntry()->foreachShadowPointerInfo(FailOnPtrFound) == OFFLOAD_FAIL) { - DP("Multiple new mappings of %" PRId64 " bytes detected (hst:" DPxMOD - ") -> (tgt:" DPxMOD ")\n", - Size, DPxPTR(HstPtrBegin), DPxPTR(LR.TPR.TargetPointer)); + ODBG(ODT_Mapping) << "Multiple new mappings of " << Size + << " bytes detected (hst:" << HstPtrBegin + << ") -> (tgt:" << LR.TPR.TargetPointer; return std::move(LR.TPR); } - DP("Moving %" PRId64 " bytes (hst:" DPxMOD ") -> (tgt:" DPxMOD ")\n", Size, - DPxPTR(HstPtrBegin), DPxPTR(LR.TPR.TargetPointer)); + ODBG(ODT_Mapping) << "Moving " << Size << " bytes (hst:" << HstPtrBegin + << ") -> (tgt:" << LR.TPR.TargetPointer; int Ret = Device.submitData(LR.TPR.TargetPointer, HstPtrBegin, Size, AsyncInfo, LR.TPR.getEntry()); if (Ret != OFFLOAD_SUCCESS) { - REPORT("Copying data to device failed.\n"); + REPORT() << "Copying data to device failed."; // We will also return nullptr if the data movement fails because that // pointer points to a corrupted memory region so it doesn't make any // sense to continue to use it. @@ -374,7 +376,7 @@ TargetPointerResultTy MappingInfoTy::getTargetPointer( if (Ret != OFFLOAD_SUCCESS) { // If it fails to wait for the event, we need to return nullptr in // case of any data race. - REPORT("Failed to wait for event " DPxMOD ".\n", DPxPTR(Event)); + REPORT() << "Failed to wait for event " << Event; return TargetPointerResultTy{}; } } @@ -444,9 +446,8 @@ TargetPointerResultTy MappingInfoTy::getTgtPtrBegin( // If the value isn't found in the mapping and unified shared memory // is on then it means we have stumbled upon a value which we need to // use directly from the host. - DP("Get HstPtrBegin " DPxMOD " Size=%" PRId64 " for unified shared " - "memory\n", - DPxPTR((uintptr_t)HstPtrBegin), Size); + ODBG(ODT_Mapping) << "Get HstPtrBegin " << HstPtrBegin << " Size=" << Size + << " for unified shared memory"; LR.TPR.Flags.IsPresent = false; LR.TPR.Flags.IsHostPointer = true; LR.TPR.TargetPointer = HstPtrBegin; @@ -490,7 +491,7 @@ int MappingInfoTy::eraseMapEntry(HDTTMapAccessorTy &HDTTMap, : "unknown"); if (HDTTMap->erase(Entry) == 0) { - REPORT("Trying to remove a non-existent map entry\n"); + REPORT() << "Trying to remove a non-existent map entry"; return OFFLOAD_FAIL; } @@ -501,13 +502,13 @@ int MappingInfoTy::deallocTgtPtrAndEntry(HostDataToTargetTy *Entry, int64_t Size) { assert(Entry && "Trying to deallocate a null entry."); - DP("Deleting tgt data " DPxMOD " of size %" PRId64 " by freeing allocation " - "starting at " DPxMOD "\n", - DPxPTR(Entry->TgtPtrBegin), Size, DPxPTR(Entry->TgtAllocBegin)); + ODBG(ODT_Mapping) << "Deleting tgt data " << Entry->TgtPtrBegin << " of size " + << Size << " by freeing allocation " + << "starting at " << Entry->TgtAllocBegin; void *Event = Entry->getEvent(); if (Event && Device.destroyEvent(Event) != OFFLOAD_SUCCESS) { - REPORT("Failed to destroy event " DPxMOD "\n", DPxPTR(Event)); + REPORT() << "Failed to destroy event " << Event; return OFFLOAD_FAIL; } diff --git a/offload/libomptarget/OpenMP/OMPT/Callback.cpp b/offload/libomptarget/OpenMP/OMPT/Callback.cpp index ab0942ed4fd3f..99c8a122c81f4 100644 --- a/offload/libomptarget/OpenMP/OMPT/Callback.cpp +++ b/offload/libomptarget/OpenMP/OMPT/Callback.cpp @@ -35,6 +35,7 @@ FOREACH_OMPT_EMI_EVENT(defineOmptCallback) #undef defineOmptCallback using namespace llvm::omp::target::ompt; +using namespace llvm::omp::target::debug; /// Forward declaration class LibomptargetRtlFinalizer; @@ -410,11 +411,13 @@ void Interface::endTarget(int64_t DeviceId, void *Code) { } void Interface::beginTargetDataOperation() { - DP("in ompt_target_region_begin (TargetRegionId = %lu)\n", TargetData.value); + ODBG(ODT_Tool) << "in ompt_target_region_begin (TargetRegionId = " + << TargetData.value << ")"; } void Interface::endTargetDataOperation() { - DP("in ompt_target_region_end (TargetRegionId = %lu)\n", TargetData.value); + ODBG(ODT_Tool) << "in ompt_target_region_end (TargetRegionId = " + << TargetData.value << ")"; } void Interface::beginTargetRegion() { @@ -462,12 +465,12 @@ class LibomptargetRtlFinalizer { int llvm::omp::target::ompt::initializeLibrary(ompt_function_lookup_t lookup, int initial_device_num, ompt_data_t *tool_data) { - DP("Executing initializeLibrary\n"); + ODBG(ODT_Tool) << "Executing initializeLibrary"; #define bindOmptFunctionName(OmptFunction, DestinationFunction) \ if (lookup) \ DestinationFunction = (OmptFunction##_t)lookup(#OmptFunction); \ - DP("initializeLibrary bound %s=%p\n", #DestinationFunction, \ - ((void *)(uint64_t)DestinationFunction)); + ODBG(ODT_Tool) << "initializeLibrary bound " << #DestinationFunction << "=" \ + << ((void *)(uint64_t)DestinationFunction); bindOmptFunctionName(ompt_get_callback, lookupCallbackByCode); bindOmptFunctionName(ompt_get_task_data, ompt_get_task_data_fn); @@ -493,7 +496,7 @@ int llvm::omp::target::ompt::initializeLibrary(ompt_function_lookup_t lookup, } void llvm::omp::target::ompt::finalizeLibrary(ompt_data_t *data) { - DP("Executing finalizeLibrary\n"); + ODBG(ODT_Tool) << "Executing finalizeLibrary"; // Before disabling OMPT, call the (plugin) finalizations that were registered // with this library LibraryFinalizer->finalize(); @@ -502,7 +505,7 @@ void llvm::omp::target::ompt::finalizeLibrary(ompt_data_t *data) { } void llvm::omp::target::ompt::connectLibrary() { - DP("Entering connectLibrary\n"); + ODBG(ODT_Tool) << "Entering connectLibrary"; // Connect with libomp static OmptLibraryConnectorTy LibompConnector("libomp"); static ompt_start_tool_result_t OmptResult; @@ -525,7 +528,7 @@ void llvm::omp::target::ompt::connectLibrary() { FOREACH_OMPT_EMI_EVENT(bindOmptCallback) #undef bindOmptCallback - DP("Exiting connectLibrary\n"); + ODBG(ODT_Tool) << "Exiting connectLibrary"; } #endif // OMPT_SUPPORT diff --git a/offload/libomptarget/PluginManager.cpp b/offload/libomptarget/PluginManager.cpp index cd6d0371e8b50..4152b4087d91f 100644 --- a/offload/libomptarget/PluginManager.cpp +++ b/offload/libomptarget/PluginManager.cpp @@ -22,6 +22,7 @@ using namespace llvm; using namespace llvm::sys; +using namespace llvm::omp::target::debug; PluginManager *PM = nullptr; @@ -32,11 +33,11 @@ PluginManager *PM = nullptr; void PluginManager::init() { TIMESCOPE(); if (OffloadPolicy::isOffloadDisabled()) { - DP("Offload is disabled. Skipping plugin initialization\n"); + ODBG(ODT_Init) << "Offload is disabled. Skipping plugin initialization"; return; } - ODBG("Init") << "Loading RTLs"; + ODBG(ODT_Init) << "Loading RTLs"; // Attempt to create an instance of each supported plugin. #define PLUGIN_TARGET(Name) \ @@ -46,12 +47,12 @@ void PluginManager::init() { } while (false); #include "Shared/Targets.def" - DP("RTLs loaded!\n"); + ODBG(ODT_Init) << "RTLs loaded!"; } void PluginManager::deinit() { TIMESCOPE(); - DP("Unloading RTLs...\n"); + ODBG(ODT_Deinit) << "Unloading RTLs..."; for (auto &Plugin : Plugins) { if (!Plugin->is_initialized()) @@ -59,12 +60,12 @@ void PluginManager::deinit() { if (auto Err = Plugin->deinit()) { [[maybe_unused]] std::string InfoMsg = toString(std::move(Err)); - DP("Failed to deinit plugin: %s\n", InfoMsg.c_str()); + ODBG(ODT_Deinit) << "Failed to deinit plugin: " << InfoMsg; } Plugin.release(); } - DP("RTLs unloaded!\n"); + ODBG(ODT_Deinit) << "RTLs unloaded!"; } bool PluginManager::initializePlugin(GenericPluginTy &Plugin) { @@ -73,12 +74,13 @@ bool PluginManager::initializePlugin(GenericPluginTy &Plugin) { if (auto Err = Plugin.init()) { [[maybe_unused]] std::string InfoMsg = toString(std::move(Err)); - DP("Failed to init plugin: %s\n", InfoMsg.c_str()); + ODBG(ODT_Init) << "Failed to init plugin: " << InfoMsg; return false; } - DP("Registered plugin %s with %d visible device(s)\n", Plugin.getName(), - Plugin.number_of_devices()); + ODBG(ODT_Init) << "Registered plugin " << Plugin.getName() << " with " + << Plugin.number_of_devices() << " visible device(s)"; + return true; } @@ -105,7 +107,7 @@ bool PluginManager::initializeDevice(GenericPluginTy &Plugin, auto Device = std::make_unique(&Plugin, UserId, DeviceId); if (auto Err = Device->init()) { [[maybe_unused]] std::string InfoMsg = toString(std::move(Err)); - DP("Failed to init device %d: %s\n", DeviceId, InfoMsg.c_str()); + ODBG(ODT_Init) << "Failed to init device " << DeviceId << ": " << InfoMsg; return false; } @@ -229,7 +231,8 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { continue; if (!R.number_of_devices()) { - DP("Skipping plugin %s with no visible devices\n", R.getName()); + ODBG(ODT_Init) << "Skipping plugin " << R.getName() + << " with no visible devices"; continue; } @@ -239,17 +242,18 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { // registered for the same device in the case that they are mutually // compatible, such as sm_80 and sm_89. if (UsedDevices[&R].contains(DeviceId)) { - DP("Image " DPxMOD - " is a duplicate, not loaded on RTL %s device %d!\n", - DPxPTR(Img->ImageStart), R.getName(), DeviceId); + ODBG(ODT_Init) << "Image " << Img->ImageStart + << " is a duplicate, not loaded on RTL " << R.getName() + << " device " << DeviceId; continue; } if (!R.isDeviceCompatible(DeviceId, Buffer)) continue; - DP("Image " DPxMOD " is compatible with RTL %s device %d!\n", - DPxPTR(Img->ImageStart), R.getName(), DeviceId); + ODBG(ODT_Init) << "Image " << Img->ImageStart + << " is compatible with RTL " << R.getName() + << " device " << DeviceId; if (!initializeDevice(R, DeviceId)) continue; @@ -269,8 +273,8 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { TranslationTable &TT = (PM->HostEntriesBeginToTransTable)[Desc->HostEntriesBegin]; - DP("Registering image " DPxMOD " with RTL %s!\n", - DPxPTR(Img->ImageStart), R.getName()); + ODBG(ODT_Init) << "Registering image " << Img->ImageStart + << " with RTL " << R.getName(); auto UserId = PM->DeviceIds[std::make_pair(&R, DeviceId)]; if (TT.TargetsTable.size() < static_cast(UserId + 1)) { @@ -292,7 +296,7 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { } } if (!FoundRTL) - DP("No RTL found for image " DPxMOD "!\n", DPxPTR(Img->ImageStart)); + ODBG(ODT_Init) << "No RTL found for image " << Img->ImageStart; } PM->RTLsMtx.unlock(); @@ -309,7 +313,7 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { if (UseAutoZeroCopy) addRequirements(OMPX_REQ_AUTO_ZERO_COPY); - DP("Done registering entries!\n"); + ODBG(ODT_Init) << "Done registering entries!"; } // Temporary forward declaration, old style CTor/DTor handling is going away. @@ -317,7 +321,7 @@ int target(ident_t *Loc, DeviceTy &Device, void *HostPtr, KernelArgsTy &KernelArgs, AsyncInfoTy &AsyncInfo); void PluginManager::unregisterLib(__tgt_bin_desc *Desc) { - DP("Unloading target library!\n"); + ODBG(ODT_Deinit) << "Unloading target library!"; Desc = upgradeLegacyEntries(Desc); @@ -341,19 +345,20 @@ void PluginManager::unregisterLib(__tgt_bin_desc *Desc) { FoundRTL = &R; - DP("Unregistered image " DPxMOD " from RTL\n", DPxPTR(Img->ImageStart)); + ODBG(ODT_Deinit) << "Unregistered image " << Img->ImageStart + << " from RTL"; break; } // if no RTL was found proceed to unregister the next image if (!FoundRTL) { - DP("No RTLs in use support the image " DPxMOD "!\n", - DPxPTR(Img->ImageStart)); + ODBG(ODT_Deinit) << "No RTLs in use support the image " + << Img->ImageStart; } } PM->RTLsMtx.unlock(); - DP("Done unregistering images!\n"); + ODBG(ODT_Deinit) << "Done unregistering images!"; // Remove entries from PM->HostPtrToTableMap PM->TblMapMtx.lock(); @@ -367,18 +372,18 @@ void PluginManager::unregisterLib(__tgt_bin_desc *Desc) { auto TransTable = PM->HostEntriesBeginToTransTable.find(Desc->HostEntriesBegin); if (TransTable != PM->HostEntriesBeginToTransTable.end()) { - DP("Removing translation table for descriptor " DPxMOD "\n", - DPxPTR(Desc->HostEntriesBegin)); + ODBG(ODT_Deinit) << "Removing translation table for descriptor " + << Desc->HostEntriesBegin; PM->HostEntriesBeginToTransTable.erase(TransTable); } else { - DP("Translation table for descriptor " DPxMOD " cannot be found, probably " - "it has been already removed.\n", - DPxPTR(Desc->HostEntriesBegin)); + ODBG(ODT_Deinit) << "Translation table for descriptor " + << Desc->HostEntriesBegin << " cannot be found, probably " + << "it has been already removed."; } PM->TblMapMtx.unlock(); - DP("Done unregistering library!\n"); + ODBG(ODT_Deinit) << "Done unregistering library!"; } /// Map global data and execute pending ctors @@ -393,8 +398,8 @@ static int loadImagesOntoDevice(DeviceTy &Device) { for (auto *HostEntriesBegin : PM->HostEntriesBeginRegistrationOrder) { TranslationTable *TransTable = &PM->HostEntriesBeginToTransTable[HostEntriesBegin]; - DP("Trans table %p : %p\n", TransTable->HostTable.EntriesBegin, - TransTable->HostTable.EntriesEnd); + ODBG(ODT_Init) << "Trans table " << TransTable->HostTable.EntriesBegin + << " : " << TransTable->HostTable.EntriesEnd; if (TransTable->HostTable.EntriesBegin == TransTable->HostTable.EntriesEnd) { // No host entry so no need to proceed @@ -411,7 +416,7 @@ static int loadImagesOntoDevice(DeviceTy &Device) { "Not expecting a device ID outside the table's bounds!"); __tgt_device_image *Img = TransTable->TargetsImages[DeviceId]; if (!Img) { - REPORT("No image loaded for device id %d.\n", DeviceId); + REPORT() << "No image loaded for device id " << DeviceId; Rc = OFFLOAD_FAIL; break; } @@ -419,8 +424,7 @@ static int loadImagesOntoDevice(DeviceTy &Device) { // 2) Load the image onto the given device. auto BinaryOrErr = Device.loadBinary(Img); if (llvm::Error Err = BinaryOrErr.takeError()) { - REPORT("Failed to load image %s\n", - llvm::toString(std::move(Err)).c_str()); + REPORT() << "Failed to load image " << llvm::toString(std::move(Err)); Rc = OFFLOAD_FAIL; break; } @@ -440,7 +444,7 @@ static int loadImagesOntoDevice(DeviceTy &Device) { if (!(Entry.Flags & OMP_DECLARE_TARGET_INDIRECT_VTABLE)) if (Device.RTL->get_global(Binary, Entry.Size, Entry.SymbolName, &DeviceEntry.Address) != OFFLOAD_SUCCESS) - REPORT("Failed to load symbol %s\n", Entry.SymbolName); + REPORT() << "Failed to load symbol " << Entry.SymbolName; // If unified memory is active, the corresponding global is a device // reference to the host global. We need to initialize the pointer on @@ -452,15 +456,16 @@ static int loadImagesOntoDevice(DeviceTy &Device) { if (Device.RTL->data_submit(DeviceId, DeviceEntry.Address, Entry.Address, Entry.Size) != OFFLOAD_SUCCESS) - REPORT("Failed to write symbol for USM %s\n", Entry.SymbolName); + REPORT() << "Failed to write symbol for USM " << Entry.SymbolName; } else if (Entry.Address) { if (Device.RTL->get_function(Binary, Entry.SymbolName, &DeviceEntry.Address) != OFFLOAD_SUCCESS) - REPORT("Failed to load kernel %s\n", Entry.SymbolName); + REPORT() << "Failed to load kernel " << Entry.SymbolName; } - DP("Entry point " DPxMOD " maps to%s %s (" DPxMOD ")\n", - DPxPTR(Entry.Address), (Entry.Size) ? " global" : "", - Entry.SymbolName, DPxPTR(DeviceEntry.Address)); + ODBG(ODT_Mapping) << "Entry point " << Entry.Address << " maps to" + << (Entry.Size ? " global" : "") << " " + << Entry.SymbolName << " (" << DeviceEntry.Address + << ")"; DeviceEntries.emplace_back(DeviceEntry); } @@ -511,10 +516,10 @@ static int loadImagesOntoDevice(DeviceTy &Device) { CurrDeviceEntryAddr = DevPtr; } - DP("Add mapping from host " DPxMOD " to device " DPxMOD " with size %zu" - ", name \"%s\"\n", - DPxPTR(CurrHostEntry->Address), DPxPTR(CurrDeviceEntry->Address), - CurrDeviceEntry->Size, CurrDeviceEntry->SymbolName); + ODBG(ODT_Mapping) << "Add mapping from host " << CurrHostEntry->Address + << " to device " << CurrDeviceEntry->Address + << " with size " << CurrDeviceEntry->Size + << ", name \"" << CurrDeviceEntry->SymbolName << "\""; HDTTMap->emplace(new HostDataToTargetTy( (uintptr_t)CurrHostEntry->Address /*HstPtrBase*/, (uintptr_t)CurrHostEntry->Address /*HstPtrBegin*/, From 2705ba11cc62b0585bb6d6da97876bec707a0a0e Mon Sep 17 00:00:00 2001 From: Hansang Bae Date: Thu, 11 Dec 2025 08:15:38 -0600 Subject: [PATCH 2/2] Address comments --- offload/libomptarget/OpenMP/Mapping.cpp | 2 +- offload/libomptarget/PluginManager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/offload/libomptarget/OpenMP/Mapping.cpp b/offload/libomptarget/OpenMP/Mapping.cpp index 1ded326f2f6fb..4e9125468b468 100644 --- a/offload/libomptarget/OpenMP/Mapping.cpp +++ b/offload/libomptarget/OpenMP/Mapping.cpp @@ -376,7 +376,7 @@ TargetPointerResultTy MappingInfoTy::getTargetPointer( if (Ret != OFFLOAD_SUCCESS) { // If it fails to wait for the event, we need to return nullptr in // case of any data race. - REPORT() << "Failed to wait for event " << Event; + REPORT() << "Failed to wait for event " << Event << "."; return TargetPointerResultTy{}; } } diff --git a/offload/libomptarget/PluginManager.cpp b/offload/libomptarget/PluginManager.cpp index 4152b4087d91f..924a986fbb105 100644 --- a/offload/libomptarget/PluginManager.cpp +++ b/offload/libomptarget/PluginManager.cpp @@ -296,7 +296,7 @@ void PluginManager::registerLib(__tgt_bin_desc *Desc) { } } if (!FoundRTL) - ODBG(ODT_Init) << "No RTL found for image " << Img->ImageStart; + ODBG(ODT_Init) << "No RTL found for image " << Img->ImageStart << "!"; } PM->RTLsMtx.unlock(); @@ -416,7 +416,7 @@ static int loadImagesOntoDevice(DeviceTy &Device) { "Not expecting a device ID outside the table's bounds!"); __tgt_device_image *Img = TransTable->TargetsImages[DeviceId]; if (!Img) { - REPORT() << "No image loaded for device id " << DeviceId; + REPORT() << "No image loaded for device id " << DeviceId << "."; Rc = OFFLOAD_FAIL; break; }