Move the HccLoader activities into the HipLoader
The HCC runtime is no longer used, so move all the remaining activities in the HipApi loader and remove the HccLoader. Change-Id: I845c04ca275a474526840315bae0ad1a4ce02257
This commit is contained in:
+2
-1
@@ -64,7 +64,8 @@ typedef enum {
|
||||
ROCTRACER_STATUS_BAD_DOMAIN = 4,
|
||||
ROCTRACER_STATUS_BAD_PARAMETER = 5,
|
||||
ROCTRACER_STATUS_HIP_API_ERR = 6,
|
||||
ROCTRACER_STATUS_HCC_OPS_ERR = 7,
|
||||
ROCTRACER_STATUS_HIP_OPS_ERR = 7,
|
||||
ROCTRACER_STATUS_HCC_OPS_ERR = ROCTRACER_STATUS_HIP_OPS_ERR,
|
||||
ROCTRACER_STATUS_HSA_ERR = 7,
|
||||
ROCTRACER_STATUS_ROCTX_ERR = 8,
|
||||
} roctracer_status_t;
|
||||
|
||||
+21
-17
@@ -133,6 +133,7 @@ class RocpApi {
|
||||
};
|
||||
|
||||
// HIP runtime library loader class
|
||||
#include "inc/roctracer_hip.h"
|
||||
#if STATIC_BUILD
|
||||
__attribute__((weak)) hipError_t hipRegisterApiCallback(uint32_t id, void* fun, void* arg) {
|
||||
return hipErrorUnknown;
|
||||
@@ -174,6 +175,10 @@ class HipLoaderStatic {
|
||||
GetStreamDeviceId_t* GetStreamDeviceId;
|
||||
ApiName_t* ApiName;
|
||||
|
||||
hipInitAsyncActivityCallback_t* InitActivityCallback;
|
||||
hipEnableAsyncActivityCallback_t* EnableActivityCallback;
|
||||
hipGetOpName_t* GetOpName;
|
||||
|
||||
static inline loader_t& Instance() {
|
||||
loader_t* obj = instance_.load(std::memory_order_acquire);
|
||||
if (obj == NULL) {
|
||||
@@ -187,6 +192,7 @@ class HipLoaderStatic {
|
||||
}
|
||||
|
||||
bool Enabled() const { return true; }
|
||||
bool& InitActivityDone() { return init_activity_done_; }
|
||||
|
||||
private:
|
||||
HipLoaderStatic() {
|
||||
@@ -198,10 +204,15 @@ class HipLoaderStatic {
|
||||
KernelNameRefByPtr = hipKernelNameRefByPtr;
|
||||
GetStreamDeviceId = hipGetStreamDeviceId;
|
||||
ApiName = hipApiName;
|
||||
|
||||
InitActivityCallback = hipInitActivityCallback;
|
||||
EnableActivityCallback = hipEnableActivityCallback;
|
||||
GetOpName = hipGetCmdName;
|
||||
}
|
||||
|
||||
static mutex_t mutex_;
|
||||
static instance_t instance_;
|
||||
bool init_activity_done_ = false;
|
||||
};
|
||||
#else
|
||||
class HipApi {
|
||||
@@ -226,6 +237,12 @@ class HipApi {
|
||||
GetStreamDeviceId_t* GetStreamDeviceId;
|
||||
ApiName_t* ApiName;
|
||||
|
||||
hipInitAsyncActivityCallback_t* InitActivityCallback;
|
||||
hipEnableAsyncActivityCallback_t* EnableActivityCallback;
|
||||
hipGetOpName_t* GetOpName;
|
||||
|
||||
bool& InitActivityDone() { return init_activity_done_; }
|
||||
|
||||
protected:
|
||||
void init(Loader* loader) {
|
||||
RegisterApiCallback = loader->GetFun<RegisterApiCallback_t>("hipRegisterApiCallback");
|
||||
@@ -237,29 +254,18 @@ class HipApi {
|
||||
KernelNameRefByPtr = loader->GetFun<KernelNameRefByPtr_t>("hipKernelNameRefByPtr");
|
||||
GetStreamDeviceId = loader->GetFun<GetStreamDeviceId_t>("hipGetStreamDeviceId");
|
||||
ApiName = loader->GetFun<ApiName_t>("hipApiName");
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
// HCC runtime library loader class
|
||||
#include "inc/roctracer_hip.h"
|
||||
class HccApi {
|
||||
public:
|
||||
typedef BaseLoader<HccApi> Loader;
|
||||
|
||||
hipInitAsyncActivityCallback_t* InitActivityCallback;
|
||||
hipEnableAsyncActivityCallback_t* EnableActivityCallback;
|
||||
hipGetOpName_t* GetOpName;
|
||||
|
||||
protected:
|
||||
void init(Loader* loader) {
|
||||
InitActivityCallback =
|
||||
loader->GetFun<hipInitAsyncActivityCallback_t>("hipInitActivityCallback");
|
||||
EnableActivityCallback =
|
||||
loader->GetFun<hipEnableAsyncActivityCallback_t>("hipEnableActivityCallback");
|
||||
GetOpName = loader->GetFun<hipGetOpName_t>("hipGetCmdName");
|
||||
}
|
||||
|
||||
private:
|
||||
bool init_activity_done_ = false;
|
||||
};
|
||||
#endif
|
||||
|
||||
// rocTX runtime library loader class
|
||||
#include "inc/roctracer_roctx.h"
|
||||
@@ -284,7 +290,6 @@ class RocTxApi {
|
||||
};
|
||||
|
||||
typedef BaseLoader<RocpApi> RocpLoader;
|
||||
typedef BaseLoader<HccApi> HccLoader;
|
||||
typedef BaseLoader<RocTxApi> RocTxLoader;
|
||||
|
||||
#if STATIC_BUILD
|
||||
@@ -304,7 +309,6 @@ typedef HipLoaderShared HipLoader;
|
||||
template <class T> bool roctracer::BaseLoader<T>::to_check_symb_ = true; \
|
||||
template <> const char* roctracer::RocpLoader::lib_name_ = "librocprofiler64.so"; \
|
||||
template <> bool roctracer::RocpLoader::to_load_ = true; \
|
||||
template <> const char* roctracer::HccLoader::lib_name_ = "libamdhip64.so"; \
|
||||
template <> const char* roctracer::RocTxLoader::lib_name_ = "libroctx64.so"; \
|
||||
template <> bool roctracer::RocTxLoader::to_load_ = true;
|
||||
|
||||
|
||||
+24
-23
@@ -308,7 +308,7 @@ static inline void CorrelationIdRegistr(const activity_correlation_id_t& correla
|
||||
std::lock_guard<correlation_id_mutex_t> lck(correlation_id_mutex);
|
||||
const auto ret = correlation_id_map.insert({correlation_id, correlation_id_tls});
|
||||
if (ret.second == false)
|
||||
EXC_ABORT(ROCTRACER_STATUS_ERROR, "HCC activity id is not unique(" << correlation_id << ")");
|
||||
EXC_ABORT(ROCTRACER_STATUS_ERROR, "HIP activity id is not unique(" << correlation_id << ")");
|
||||
|
||||
DEBUG_TRACE("CorrelationIdRegistr id(%lu) id_tls(%lu)\n", correlation_id, correlation_id_tls);
|
||||
}
|
||||
@@ -318,7 +318,7 @@ static inline activity_correlation_id_t CorrelationIdLookup(
|
||||
std::lock_guard<correlation_id_mutex_t> lck(correlation_id_mutex);
|
||||
auto it = correlation_id_map.find(correlation_id);
|
||||
if (it == correlation_id_map.end())
|
||||
EXC_ABORT(ROCTRACER_STATUS_ERROR, "HCC activity id lookup failed(" << correlation_id << ")");
|
||||
EXC_ABORT(ROCTRACER_STATUS_ERROR, "HIP activity id lookup failed(" << correlation_id << ")");
|
||||
const activity_correlation_id_t ret_val = it->second;
|
||||
correlation_id_map.erase(it);
|
||||
|
||||
@@ -512,11 +512,11 @@ void* HIP_SyncActivityCallback(uint32_t op_id, roctracer_record_t* record,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void HCC_ActivityIdCallback(activity_correlation_id_t correlation_id) {
|
||||
void HIP_ActivityIdCallback(activity_correlation_id_t correlation_id) {
|
||||
CorrelationIdRegistr(correlation_id);
|
||||
}
|
||||
|
||||
void HCC_AsyncActivityCallback(uint32_t op_id, void* record, void* arg) {
|
||||
void HIP_AsyncActivityCallback(uint32_t op_id, void* record, void* arg) {
|
||||
MemoryPool* pool = reinterpret_cast<MemoryPool*>(arg);
|
||||
roctracer_record_t* record_ptr = reinterpret_cast<roctracer_record_t*>(record);
|
||||
record_ptr->domain = ACTIVITY_DOMAIN_HIP_OPS;
|
||||
@@ -526,7 +526,7 @@ void HCC_AsyncActivityCallback(uint32_t op_id, void* record, void* arg) {
|
||||
|
||||
const char* name = roctracer_op_string(ACTIVITY_DOMAIN_HIP_OPS, record_ptr->op, record_ptr->kind);
|
||||
DEBUG_TRACE(
|
||||
"HCC_AsyncActivityCallback(\"%s\"): op(%u) kind(%u) record(%p) pool(%p) correlation_id(%d) "
|
||||
"HIP_AsyncActivityCallback(\"%s\"): op(%u) kind(%u) record(%p) pool(%p) correlation_id(%d) "
|
||||
"beg_ns(%lu) end_ns(%lu)\n",
|
||||
name, record_ptr->op, record_ptr->kind, record, pool, record_ptr->correlation_id,
|
||||
record_ptr->begin_ns, record_ptr->end_ns);
|
||||
@@ -699,7 +699,7 @@ PUBLIC_API const char* roctracer_op_string(uint32_t domain, uint32_t op, uint32_
|
||||
case ACTIVITY_DOMAIN_HSA_OPS:
|
||||
return roctracer::RocpLoader::Instance().GetOpName(op);
|
||||
case ACTIVITY_DOMAIN_HIP_OPS:
|
||||
return roctracer::HccLoader::Instance().GetOpName(kind);
|
||||
return roctracer::HipLoader::Instance().GetOpName(kind);
|
||||
case ACTIVITY_DOMAIN_HIP_API:
|
||||
return roctracer::HipLoader::Instance().ApiName(op);
|
||||
case ACTIVITY_DOMAIN_EXT_API:
|
||||
@@ -794,7 +794,7 @@ static roctracer_status_t roctracer_enable_callback_fun(roctracer_domain_t domai
|
||||
#if 0
|
||||
if (op == HSA_API_ID_DISPATCH) {
|
||||
const bool succ = roctracer::RocpLoader::Instance().RegisterApiCallback(op, (void*)callback, user_data);
|
||||
if (succ == false) HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::RegisterApiCallback error(" << op << ") failed");
|
||||
if (succ == false) HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::RegisterApiCallback error(" << op << ") failed");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@@ -806,7 +806,7 @@ static roctracer_status_t roctracer_enable_callback_fun(roctracer_domain_t domai
|
||||
const bool succ =
|
||||
roctracer::RocpLoader::Instance().RegisterEvtCallback(op, (void*)callback, user_data);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
"HSA::RegisterEvtCallback error(" << op << ") failed");
|
||||
break;
|
||||
}
|
||||
@@ -892,7 +892,7 @@ static roctracer_status_t roctracer_disable_callback_fun(roctracer_domain_t doma
|
||||
#if 0
|
||||
if (op == HSA_API_ID_DISPATCH) {
|
||||
const bool succ = roctracer::RocpLoader::Instance().RemoveApiCallback(op);
|
||||
if (succ == false) HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::RemoveActivityCallback error(" << op << ") failed");
|
||||
if (succ == false) HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::RemoveActivityCallback error(" << op << ") failed");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@@ -923,7 +923,7 @@ static roctracer_status_t roctracer_disable_callback_fun(roctracer_domain_t doma
|
||||
case ACTIVITY_DOMAIN_HSA_EVT: {
|
||||
const bool succ = roctracer::RocpLoader::Instance().RemoveEvtCallback(op);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
"HSA::RemoveEvtCallback error(" << op << ") failed");
|
||||
break;
|
||||
}
|
||||
@@ -1024,7 +1024,7 @@ static roctracer_status_t roctracer_enable_activity_fun(roctracer_domain_t domai
|
||||
}
|
||||
const bool succ = roctracer::RocpLoader::Instance().EnableActivityCallback(op, true);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::EnableActivityCallback error");
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::EnableActivityCallback error");
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1033,17 +1033,18 @@ static roctracer_status_t roctracer_enable_activity_fun(roctracer_domain_t domai
|
||||
case ACTIVITY_DOMAIN_HSA_EVT:
|
||||
break;
|
||||
case ACTIVITY_DOMAIN_HIP_OPS: {
|
||||
const bool init_phase = (roctracer::HccLoader::GetRef() == NULL);
|
||||
if (roctracer::HccLoader::Instance().Enabled() == false) break;
|
||||
if (roctracer::HipLoader::Instance().Enabled() == false) break;
|
||||
std::lock_guard<roctracer::hip_activity_mutex_t> lock(roctracer::hip_activity_mutex);
|
||||
|
||||
if (init_phase == true) {
|
||||
roctracer::HccLoader::Instance().InitActivityCallback(
|
||||
(void*)roctracer::HCC_ActivityIdCallback, (void*)roctracer::HCC_AsyncActivityCallback,
|
||||
if (!roctracer::HipLoader::Instance().InitActivityDone()) {
|
||||
roctracer::HipLoader::Instance().InitActivityCallback(
|
||||
(void*)roctracer::HIP_ActivityIdCallback, (void*)roctracer::HIP_AsyncActivityCallback,
|
||||
(void*)pool);
|
||||
roctracer::HipLoader::Instance().InitActivityDone() = true;
|
||||
}
|
||||
const bool succ = roctracer::HccLoader::Instance().EnableActivityCallback(op, true);
|
||||
const bool succ = roctracer::HipLoader::Instance().EnableActivityCallback(op, true);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HCC_OPS_ERR, "HCC::EnableActivityCallback error");
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HIP_OPS_ERR, "HIP::EnableActivityCallback error");
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_DOMAIN_HIP_API: {
|
||||
@@ -1110,7 +1111,7 @@ static roctracer_status_t roctracer_disable_activity_fun(roctracer_domain_t doma
|
||||
if (roctracer::RocpLoader::GetRef() == NULL) break;
|
||||
const bool succ = roctracer::RocpLoader::Instance().EnableActivityCallback(op, false);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR,
|
||||
"HSA::EnableActivityCallback(false) error, op(" << op << ")");
|
||||
}
|
||||
break;
|
||||
@@ -1120,12 +1121,12 @@ static roctracer_status_t roctracer_disable_activity_fun(roctracer_domain_t doma
|
||||
case ACTIVITY_DOMAIN_HSA_EVT:
|
||||
break;
|
||||
case ACTIVITY_DOMAIN_HIP_OPS: {
|
||||
if (roctracer::HccLoader::Instance().Enabled() == false) break;
|
||||
if (roctracer::HipLoader::Instance().Enabled() == false) break;
|
||||
|
||||
const bool succ = roctracer::HccLoader::Instance().EnableActivityCallback(op, false);
|
||||
const bool succ = roctracer::HipLoader::Instance().EnableActivityCallback(op, false);
|
||||
if (succ == false)
|
||||
HCC_EXC_RAISING(ROCTRACER_STATUS_HCC_OPS_ERR,
|
||||
"HCC::EnableActivityCallback(NULL) error, op(" << op << ")");
|
||||
HIP_EXC_RAISING(ROCTRACER_STATUS_HIP_OPS_ERR,
|
||||
"HIP::EnableActivityCallback(NULL) error, op(" << op << ")");
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_DOMAIN_HIP_API: {
|
||||
|
||||
Reference in New Issue
Block a user