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:
Laurent Morichetti
2022-04-20 21:58:52 -07:00
rodzic abf1b90017
commit 85552ea3a0
3 zmienionych plików z 47 dodań i 41 usunięć
+2 -1
Wyświetl plik
@@ -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
Wyświetl plik
@@ -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
Wyświetl plik
@@ -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: {