SWDEV-351980 - Use the new hipRegister/RemoveAsyncActivityCallback

Remove the hipInitActivityCallback and use the new hipRegister/
RemoveActivityCallback which allows distinct memory pools to be used
for HIP_OPS activities.

Enable the multi_pool_activities test.

Change-Id: I6f6feaedecc9c36285bea975caf24dbf8f5f624b
This commit is contained in:
Laurent Morichetti
2022-08-30 18:47:00 -07:00
parent f0e082feb1
commit 340c7cb553
8 ha cambiato i file con 70 aggiunte e 35 eliminazioni
+25 -20
Vedi File
@@ -151,9 +151,13 @@ __attribute__((weak)) const char* hipKernelNameRefByPtr(const void* hostFunction
__attribute__((weak)) int hipGetStreamDeviceId(hipStream_t stream) { return 0; }
__attribute__((weak)) const char* hipApiName(uint32_t id) { return NULL; }
__attribute__((weak)) void hipInitActivityCallback(void* id_callback, void* op_callback,
void* arg) {}
__attribute__((weak)) bool hipEnableActivityCallback(unsigned op, bool enable) { return false; }
__attribute__((weak)) hipError_t hipRegisterAsyncActivityCallback_t(uint32_t op, void* fun,
void* arg) {
return hipErrorUnknown;
}
__attribute__((weak)) hipError_t hipRemoveAsyncActivityCallback_t(uint32_t op) {
return hipErrorUnknown;
}
__attribute__((weak)) const char* hipGetCmdName(unsigned op) { return NULL; }
class HipLoaderStatic {
@@ -183,8 +187,12 @@ class HipLoaderStatic {
GetStreamDeviceId_t* GetStreamDeviceId;
ApiName_t* ApiName;
hipInitAsyncActivityCallback_t* InitActivityCallback;
hipEnableAsyncActivityCallback_t* EnableActivityCallback;
typedef hipError_t(hipRegisterAsyncActivityCallback_t)(uint32_t op, void* fun, void* arg);
typedef hipError_t(hipRemoveAsyncActivityCallback_t)(uint32_t op);
typedef const char*(hipGetOpName_t)(unsigned op);
hipRegisterAsyncActivityCallback_t* RegisterActivityCallback;
hipRemoveAsyncActivityCallback_t* RemoveActivityCallback;
hipGetOpName_t* GetOpName;
static inline loader_t& Instance() {
@@ -200,7 +208,6 @@ class HipLoaderStatic {
}
bool Enabled() const { return true; }
bool& InitActivityDone() { return init_activity_done_; }
private:
HipLoaderStatic() {
@@ -213,14 +220,13 @@ class HipLoaderStatic {
GetStreamDeviceId = hipGetStreamDeviceId;
ApiName = hipApiName;
InitActivityCallback = hipInitActivityCallback;
EnableActivityCallback = hipEnableActivityCallback;
RegisterAsyncActivityCallback = hipRegisterAsyncActivityCallback;
RemoveAsyncActivityCallback = hipRemoveAsyncActivityCallback;
GetOpName = hipGetCmdName;
}
static mutex_t mutex_;
static instance_t instance_;
bool init_activity_done_ = false;
};
#else
class HipApi {
@@ -248,11 +254,13 @@ class HipApi {
GetStreamDeviceId_t* GetStreamDeviceId;
ApiName_t* ApiName;
hipInitAsyncActivityCallback_t* InitActivityCallback;
hipEnableAsyncActivityCallback_t* EnableActivityCallback;
hipGetOpName_t* GetOpName;
typedef hipError_t(hipRegisterAsyncActivityCallback_t)(uint32_t op, void* fun, void* arg);
typedef hipError_t(hipRemoveAsyncActivityCallback_t)(uint32_t op);
typedef const char*(hipGetOpName_t)(unsigned op);
bool& InitActivityDone() { return init_activity_done_; }
hipRegisterAsyncActivityCallback_t* RegisterAsyncActivityCallback;
hipRemoveAsyncActivityCallback_t* RemoveAsyncActivityCallback;
hipGetOpName_t* GetOpName;
protected:
void init(Loader* loader) {
@@ -266,15 +274,12 @@ class HipApi {
GetStreamDeviceId = loader->GetFun<GetStreamDeviceId_t>("hipGetStreamDeviceId");
ApiName = loader->GetFun<ApiName_t>("hipApiName");
InitActivityCallback =
loader->GetFun<hipInitAsyncActivityCallback_t>("hipInitActivityCallback");
EnableActivityCallback =
loader->GetFun<hipEnableAsyncActivityCallback_t>("hipEnableActivityCallback");
RegisterAsyncActivityCallback =
loader->GetFun<hipRegisterAsyncActivityCallback_t>("hipRegisterAsyncActivityCallback");
RemoveAsyncActivityCallback =
loader->GetFun<hipRemoveAsyncActivityCallback_t>("hipRemoveAsyncActivityCallback");
GetOpName = loader->GetFun<hipGetOpName_t>("hipGetCmdName");
}
private:
bool init_activity_done_ = false;
};
#endif
+4 -9
Vedi File
@@ -698,14 +698,9 @@ static void roctracer_enable_activity_fun(roctracer_domain_t domain, uint32_t op
RocpLoader::Instance();
break;
case ACTIVITY_DOMAIN_HIP_OPS: {
if (!HipLoader::Instance().Enabled()) break;
std::lock_guard lock(hip_activity_mutex);
if (!HipLoader::Instance().InitActivityDone()) {
HipLoader::Instance().InitActivityCallback((void*)HIP_AsyncActivityCallback, pool);
HipLoader::Instance().InitActivityDone() = true;
}
if (!HipLoader::Instance().EnableActivityCallback(op, true))
if (HipLoader::Instance().Enabled() &&
HipLoader::Instance().RegisterAsyncActivityCallback(op, (void*)HIP_AsyncActivityCallback,
pool) != hipSuccess)
FATAL_LOGGING("HIP::EnableActivityCallback error");
break;
}
@@ -800,7 +795,7 @@ static void roctracer_disable_activity_fun(roctracer_domain_t domain, uint32_t o
break;
case ACTIVITY_DOMAIN_HIP_OPS: {
if (HipLoader::Instance().Enabled() &&
!HipLoader::Instance().EnableActivityCallback(op, false))
HipLoader::Instance().RemoveAsyncActivityCallback(op) != hipSuccess)
FATAL_LOGGING("HIP::EnableActivityCallback(nullptr) error, op(" << op << ")");
break;
}