diff --git a/projects/clr/hipamd/include/hip/hcc_detail/hip_runtime_api.h b/projects/clr/hipamd/include/hip/hcc_detail/hip_runtime_api.h index e374707cb3..67866a8d4b 100644 --- a/projects/clr/hipamd/include/hip/hcc_detail/hip_runtime_api.h +++ b/projects/clr/hipamd/include/hip/hcc_detail/hip_runtime_api.h @@ -3662,6 +3662,7 @@ 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); +int hipGetStreamDeviceId(hipStream_t stream); #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/projects/clr/hipamd/rocclr/hip_hcc.map.in b/projects/clr/hipamd/rocclr/hip_hcc.map.in index 42c5335f35..5bc2d018f2 100755 --- a/projects/clr/hipamd/rocclr/hip_hcc.map.in +++ b/projects/clr/hipamd/rocclr/hip_hcc.map.in @@ -183,6 +183,7 @@ global: hipApiName; hipKernelNameRef; hipKernelNameRefByPtr; + hipGetStreamDeviceId; hipProfilerStart; hipProfilerStop; hiprtcCompileProgram; diff --git a/projects/clr/hipamd/rocclr/hip_intercept.cpp b/projects/clr/hipamd/rocclr/hip_intercept.cpp index aa61d6bc38..c1b7f53534 100644 --- a/projects/clr/hipamd/rocclr/hip_intercept.cpp +++ b/projects/clr/hipamd/rocclr/hip_intercept.cpp @@ -27,10 +27,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) { + +int hipGetStreamDeviceId(hipStream_t stream) { hip::Stream* s = reinterpret_cast(stream); - int deviceId = (s != nullptr)? s->DeviceId() : ihipGetDevice(); + return (s != nullptr)? s->DeviceId() : ihipGetDevice(); +} + +const char* hipKernelNameRefByPtr(const void* hostFunction, hipStream_t stream) { + if (hostFunction == NULL) { + return NULL; + } + int deviceId = hipGetStreamDeviceId(stream); if (deviceId == -1) { DevLogPrintfError("Wrong Device Id: %d \n", deviceId); return NULL;