diff --git a/hipamd/include/hip/hcc_detail/hip_runtime_api.h b/hipamd/include/hip/hcc_detail/hip_runtime_api.h index cb50d47dce..df5c4e5b60 100644 --- a/hipamd/include/hip/hcc_detail/hip_runtime_api.h +++ b/hipamd/include/hip/hcc_detail/hip_runtime_api.h @@ -3656,6 +3656,7 @@ hipError_t hipRegisterActivityCallback(uint32_t id, void* fun, void* arg); hipError_t hipRemoveActivityCallback(uint32_t id); const char* hipApiName(uint32_t id); const char* hipKernelNameRef(const hipFunction_t f); +const char* hipKernelNameRefByPtr(const void* hostFunction, hipStream_t stream); #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/hipamd/rocclr/hip_hcc.map.in b/hipamd/rocclr/hip_hcc.map.in index 02a704bf88..394a5f5dd3 100755 --- a/hipamd/rocclr/hip_hcc.map.in +++ b/hipamd/rocclr/hip_hcc.map.in @@ -181,6 +181,7 @@ global: hipRemoveActivityCallback; hipApiName; hipKernelNameRef; + hipKernelNameRefByPtr; hipProfilerStart; hipProfilerStop; hiprtcCompileProgram; diff --git a/hipamd/rocclr/hip_intercept.cpp b/hipamd/rocclr/hip_intercept.cpp index f2e58b856b..aa61d6bc38 100644 --- a/hipamd/rocclr/hip_intercept.cpp +++ b/hipamd/rocclr/hip_intercept.cpp @@ -19,6 +19,7 @@ THE SOFTWARE. */ #include "hip/hip_runtime.h" +#include "hip_internal.hpp" #include "hip_prof_api.h" // HIP API callback/activity @@ -27,6 +28,19 @@ api_callbacks_table_t callbacks_table; extern const std::string& FunctionName(const hipFunction_t f); const char* hipKernelNameRef(const hipFunction_t f) { return FunctionName(f).c_str(); } +const char* hipKernelNameRefByPtr(const void *hostFunction, hipStream_t stream) { + hip::Stream* s = reinterpret_cast(stream); + int deviceId = (s != nullptr)? s->DeviceId() : ihipGetDevice(); + if (deviceId == -1) { + DevLogPrintfError("Wrong Device Id: %d \n", deviceId); + return NULL; + } + hipFunction_t func = PlatformState::instance().getFunc(hostFunction, deviceId); + if (func == nullptr) { + return NULL; + } + return hipKernelNameRef(func); +} hipError_t hipRegisterApiCallback(uint32_t id, void* fun, void* arg) { return callbacks_table.set_callback(id, reinterpret_cast(fun), arg) ?