in libkineto/src/RoctracerActivityApi.cpp [447:512]
void RoctracerActivityApi::enableActivities(
const std::set<ActivityType>& selected_activities) {
#ifdef HAS_ROCTRACER
if (!registered_) {
roctracer_set_properties(ACTIVITY_DOMAIN_HIP_API, nullptr); // Magic encantation
// Set some api calls to ignore
loggedIds_.setInvertMode(true); // Omit the specified api
loggedIds_.add("hipGetDevice");
loggedIds_.add("hipSetDevice");
loggedIds_.add("hipGetLastError");
loggedIds_.add("__hipPushCallConfiguration");
loggedIds_.add("__hipPopCallConfiguration");
loggedIds_.add("hipCtxSetCurrent");
loggedIds_.add("hipEventRecord");
loggedIds_.add("hipEventQuery");
loggedIds_.add("hipGetDeviceProperties");
loggedIds_.add("hipPeekAtLastError");
loggedIds_.add("hipModuleGetFunction");
loggedIds_.add("hipEventCreateWithFlags");
// Enable API callbacks
if (loggedIds_.invertMode() == true) {
// exclusion list - enable entire domain and turn off things in list
roctracer_enable_domain_callback(ACTIVITY_DOMAIN_HIP_API, api_callback, nullptr);
const std::unordered_map<uint32_t, uint32_t> &filter = loggedIds_.filterList();
for (auto it = filter.begin(); it != filter.end(); ++it) {
roctracer_disable_op_callback(ACTIVITY_DOMAIN_HIP_API, it->first);
}
}
else {
// inclusion list - only enable things in the list
const std::unordered_map<uint32_t, uint32_t> &filter = loggedIds_.filterList();
roctracer_disable_domain_callback(ACTIVITY_DOMAIN_HIP_API);
for (auto it = filter.begin(); it != filter.end(); ++it) {
roctracer_enable_op_callback(ACTIVITY_DOMAIN_HIP_API, it->first, api_callback, nullptr);
}
}
//roctracer_enable_domain_callback(ACTIVITY_DOMAIN_ROCTX, api_callback, nullptr);
// Allocate default tracing pool
roctracer_properties_t properties;
memset(&properties, 0, sizeof(roctracer_properties_t));
properties.buffer_size = 0x1000;
roctracer_open_pool(&properties);
// Enable async op collection
roctracer_properties_t hcc_cb_properties;
memset(&hcc_cb_properties, 0, sizeof(roctracer_properties_t));
hcc_cb_properties.buffer_size = 0x4000;
hcc_cb_properties.buffer_callback_fun = activity_callback;
roctracer_open_pool_expl(&hcc_cb_properties, &hccPool_);
roctracer_enable_domain_activity_expl(ACTIVITY_DOMAIN_HCC_OPS, hccPool_);
registered_ = true;
}
for (const auto& activity : selected_activities) {
if (activity == ActivityType::EXTERNAL_CORRELATION) {
externalCorrelationEnabled_ = true;
}
}
roctracer_start();
#endif
}