fixing rocprofiler activity enabling
This commit is contained in:
@@ -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 << ")");
|
||||
}
|
||||
|
||||
@@ -312,9 +312,9 @@ void activity_callback(const char* begin, const char* end, void* arg) {
|
||||
if (record->op == HIP_OP_ID_COPY) fprintf(stdout, " bytes(0x%zx)", record->bytes);
|
||||
} else if (record->domain == ACTIVITY_DOMAIN_HSA_OPS) {
|
||||
fprintf(stdout, " se(%u) cycle(%lu) pc(%lx)",
|
||||
record->ps_sample.se,
|
||||
record->ps_sample.cycle,
|
||||
record->ps_sample.pc
|
||||
record->pc_sample.se,
|
||||
record->pc_sample.cycle,
|
||||
record->pc_sample.pc
|
||||
);
|
||||
} else if (record->domain == ACTIVITY_DOMAIN_EXT_API) {
|
||||
fprintf(stdout, " external_id(%lu)",
|
||||
@@ -350,7 +350,6 @@ void init_tracing() {
|
||||
ROCTRACER_CALL(roctracer_enable_op_activity(ACTIVITY_DOMAIN_HSA_OPS, HSA_OP_ID_PCSAMPLE));
|
||||
// Enable KFD API tracing
|
||||
ROCTRACER_CALL(roctracer_enable_domain_callback(ACTIVITY_DOMAIN_KFD_API, api_callback, NULL));
|
||||
ROCTRACER_CALL(roctracer_enable_domain_activity(ACTIVITY_DOMAIN_KFD_API));
|
||||
// Enable rocTX
|
||||
ROCTRACER_CALL(roctracer_enable_domain_callback(ACTIVITY_DOMAIN_ROCTX, api_callback, NULL));
|
||||
}
|
||||
@@ -368,7 +367,9 @@ void stop_tracing() {
|
||||
ROCTRACER_CALL(roctracer_disable_domain_callback(ACTIVITY_DOMAIN_HIP_API));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_activity(ACTIVITY_DOMAIN_HIP_API));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_activity(ACTIVITY_DOMAIN_HCC_OPS));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_activity(ACTIVITY_DOMAIN_KFD_API));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_activity(ACTIVITY_DOMAIN_HSA_OPS));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_callback(ACTIVITY_DOMAIN_KFD_API));
|
||||
ROCTRACER_CALL(roctracer_disable_domain_callback(ACTIVITY_DOMAIN_ROCTX));
|
||||
ROCTRACER_CALL(roctracer_flush_activity());
|
||||
printf("# STOP #############################\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user