fixing rocprofiler activity enabling
This commit is contained in:
1 parent
c1455827b7
commit
7965a02680
3 files changed
+29
-14
No files matched your search
+10
-9
@@ -21,11 +21,10 @@ class BaseLoader : public T {
|
||||
if (handle_ == NULL) return NULL;
|
||||
|
||||
fun_t *f = (fun_t*) dlsym(handle_, fun_name);
|
||||
if (f == NULL) {
|
||||
if ((to_check_symb_ == true) && (f == NULL)) {
|
||||
fprintf(stderr, "roctracer: symbol lookup '%s' failed: \"%s\"\n", fun_name, dlerror());
|
||||
abort();
|
||||
}
|
||||
dlerror();
|
||||
return f;
|
||||
}
|
||||
|
||||
@@ -48,11 +47,10 @@ class BaseLoader : public T {
|
||||
BaseLoader() {
|
||||
const int flags = (to_load_ == true) ? RTLD_LAZY : RTLD_LAZY|RTLD_NOLOAD;
|
||||
handle_ = dlopen(lib_name_, flags);
|
||||
if ((to_check_ == true) && (handle_ == NULL)) {
|
||||
if ((to_check_open_ == true) && (handle_ == NULL)) {
|
||||
fprintf(stderr, "roctracer: Loading '%s' failed, %s\n", lib_name_, dlerror());
|
||||
abort();
|
||||
}
|
||||
dlerror();
|
||||
|
||||
T::init(this);
|
||||
}
|
||||
@@ -62,7 +60,8 @@ class BaseLoader : public T {
|
||||
}
|
||||
|
||||
static bool to_load_;
|
||||
static bool to_check_;
|
||||
static bool to_check_open_;
|
||||
static bool to_check_symb_;
|
||||
|
||||
static mutex_t mutex_;
|
||||
static const char* lib_name_;
|
||||
@@ -203,13 +202,15 @@ typedef BaseLoader<RocTxApi> RocTxLoader;
|
||||
template<class T> typename roctracer::BaseLoader<T>::mutex_t roctracer::BaseLoader<T>::mutex_; \
|
||||
template<class T> std::atomic<roctracer::BaseLoader<T>*> roctracer::BaseLoader<T>::instance_{}; \
|
||||
template<class T> bool roctracer::BaseLoader<T>::to_load_ = false; \
|
||||
template<class T> bool roctracer::BaseLoader<T>::to_check_ = true; \
|
||||
template<class T> bool roctracer::BaseLoader<T>::to_check_open_ = true; \
|
||||
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<> bool roctracer::RocpLoader::to_check_open_ = false; \
|
||||
template<> bool roctracer::RocpLoader::to_check_symb_ = false; \
|
||||
template<> const char* roctracer::HipLoader::lib_name_ = "libhip_hcc.so"; \
|
||||
template<> bool roctracer::HipLoader::to_check_ = false; \
|
||||
template<> bool roctracer::HipLoader::to_check_open_ = false; \
|
||||
template<> const char* roctracer::HccLoader::lib_name_ = "libmcwamp.so"; \
|
||||
template<> bool roctracer::HccLoader::to_check_ = false; \
|
||||
template<> bool roctracer::HccLoader::to_check_open_ = false; \
|
||||
template<> const char* roctracer::KfdLoader::lib_name_ = "libkfdwrapper64.so"; \
|
||||
template<> const char* roctracer::RocTxLoader::lib_name_ = "libroctx64.so"; \
|
||||
template<> bool roctracer::RocTxLoader::to_load_ = true;
|
||||
|
||||
@@ -649,11 +649,13 @@ static roctracer_status_t roctracer_enable_callback_fun(
|
||||
}
|
||||
case ACTIVITY_DOMAIN_HSA_OPS: break;
|
||||
case ACTIVITY_DOMAIN_HSA_API: {
|
||||
#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::EnableActivityCallback error(" << op << ") failed");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
roctracer::hsa_support::cb_table.set(op, callback, user_data);
|
||||
break;
|
||||
}
|
||||
@@ -735,11 +737,14 @@ static roctracer_status_t roctracer_disable_callback_fun(
|
||||
}
|
||||
case ACTIVITY_DOMAIN_HSA_OPS: break;
|
||||
case ACTIVITY_DOMAIN_HSA_API: {
|
||||
#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");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
roctracer::hsa_support::cb_table.set(op, NULL, NULL);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_DOMAIN_HCC_OPS: break;
|
||||
@@ -848,10 +853,14 @@ static roctracer_status_t roctracer_enable_activity_fun(
|
||||
roctracer::hsa_support::async_copy_callback_enabled = true;
|
||||
} else {
|
||||
const bool init_phase = (roctracer::RocpLoader::GetRef() == NULL);
|
||||
if (roctracer::RocpLoader::Instance().InitActivityCallback == NULL) break;
|
||||
if (init_phase == true) {
|
||||
roctracer::RocpLoader::Instance().InitActivityCallback((void*)roctracer::HSA_AsyncActivityCallback,
|
||||
(void*)pool);
|
||||
}
|
||||
if (roctracer::RocpLoader::Instance().EnableActivityCallback == NULL) {
|
||||
EXC_RAISING(ROCTRACER_STATUS_ERROR, "EnableActivityCallback not found");
|
||||
}
|
||||
const bool succ = roctracer::RocpLoader::Instance().EnableActivityCallback(op, true);
|
||||
if (succ == false) HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::EnableActivityCallback error");
|
||||
}
|
||||
@@ -944,6 +953,10 @@ static roctracer_status_t roctracer_disable_activity_fun(
|
||||
if (op == HSA_OP_ID_COPY) {
|
||||
roctracer::hsa_support::async_copy_callback_enabled = true;
|
||||
} else {
|
||||
if (roctracer::RocpLoader::Instance().InitActivityCallback == NULL) break;
|
||||
if (roctracer::RocpLoader::Instance().EnableActivityCallback == NULL) {
|
||||
EXC_RAISING(ROCTRACER_STATUS_ERROR, "EnableActivityCallback not found");
|
||||
}
|
||||
const bool succ = roctracer::RocpLoader::Instance().EnableActivityCallback(op, false);
|
||||
if (succ == false) HCC_EXC_RAISING(ROCTRACER_STATUS_HSA_ERR, "HSA::EnableActivityCallback(false) error, op(" << op << ")");
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user