Этот коммит содержится в:
Evgeny
2019-06-07 12:44:06 -05:00
родитель 0d7f600c7a
Коммит feda4468b7
2 изменённых файлов: 37 добавлений и 0 удалений
+30
Просмотреть файл
@@ -118,6 +118,36 @@ class HccLoader : protected Loader {
static std::atomic<HccLoader*> instance_;
};
// KFD runtime library loader class
class KfdLoader : protected Loader {
public:
typedef void (*RegisterApiCallback_t)(roctracer_rtapi_callback_t);
typedef void (*RemoveApiCallback_t)();
static KfdLoader& Instance() {
KfdLoader* obj = instance_.load(std::memory_order_acquire);
if (obj == NULL) {
std::lock_guard<mutex_t> lck(mutex_);
if (instance_.load(std::memory_order_relaxed) == NULL) {
obj = new KfdLoader();
instance_.store(obj, std::memory_order_release);
}
}
return *instance_;
}
KfdLoader() : Loader("libkfd_wrapper.so") {
RegisterApiCallback = GetFun<RegisterApiCallback_t>("RegisterApiCallback");
RemoveApiCallback = GetFun<RemoveApiCallback_t>("RemoveApiCallback");
}
RegisterApiCallback_t* RegisterApiCallback;
RemoveApiCallback_t* RemoveApiCallback;
private:
static std::atomic<KfdLoader*> instance_;
};
} // namespace roctracer
#endif // SRC_CORE_LOADER_H_
+7
Просмотреть файл
@@ -528,6 +528,13 @@ static void roctracer_enable_callback_impl(
void* user_data)
{
switch (domain) {
#if 0
case ACTIVITY_DOMAIN_KFD_API: {
bool succ = roctracer::HipLoader::Instance().RegisterApiCallback(op, (void*)callback, user_data);
if (succ == false) EXC_RAISING(ROCTRACER_STATUS_ERROR, "KFD RegisterApiCallback error");
break;
}
#endif
case ACTIVITY_DOMAIN_HSA_OPS: break;
case ACTIVITY_DOMAIN_HSA_API: {
roctracer::hsa_support::cb_table.set(op, callback, user_data);