diff --git a/src/core/roctracer.cpp b/src/core/roctracer.cpp index 272bad26e3..000ba7e3c9 100644 --- a/src/core/roctracer.cpp +++ b/src/core/roctracer.cpp @@ -738,7 +738,7 @@ PUBLIC_API roctracer_status_t roctracer_op_code( } case ACTIVITY_DOMAIN_HIP_API: { *op = hipApiIdByName(str); - if (*op == HIP_API_ID_NUMBER) { + if (*op == HIP_API_ID_NONE) { EXC_RAISING(ROCTRACER_STATUS_BAD_PARAMETER, "Invalid API name \"" << str << "\", domain ID(" << domain << ")"); } if (kind != NULL) *kind = 0; @@ -750,13 +750,29 @@ PUBLIC_API roctracer_status_t roctracer_op_code( API_METHOD_SUFFIX } -static inline uint32_t get_op_num(const uint32_t& domain) { +static inline uint32_t get_op_begin(uint32_t domain) { + switch (domain) { + case ACTIVITY_DOMAIN_HSA_OPS: return 0; + case ACTIVITY_DOMAIN_HSA_API: return 0; + case ACTIVITY_DOMAIN_HSA_EVT: return 0; + case ACTIVITY_DOMAIN_HCC_OPS: return 0; + case ACTIVITY_DOMAIN_HIP_API: return HIP_API_ID_FIRST; + case ACTIVITY_DOMAIN_KFD_API: return 0; + case ACTIVITY_DOMAIN_EXT_API: return 0; + case ACTIVITY_DOMAIN_ROCTX: return 0; + default: + EXC_RAISING(ROCTRACER_STATUS_BAD_DOMAIN, "invalid domain ID(" << domain << ")"); + } + return 0; +} + +static inline uint32_t get_op_end(uint32_t domain) { switch (domain) { case ACTIVITY_DOMAIN_HSA_OPS: return HSA_OP_ID_NUMBER; case ACTIVITY_DOMAIN_HSA_API: return HSA_API_ID_NUMBER; case ACTIVITY_DOMAIN_HSA_EVT: return HSA_EVT_ID_NUMBER; case ACTIVITY_DOMAIN_HCC_OPS: return HIP_OP_ID_NUMBER; - case ACTIVITY_DOMAIN_HIP_API: return HIP_API_ID_NUMBER; + case ACTIVITY_DOMAIN_HIP_API: return HIP_API_ID_LAST + 1;; case ACTIVITY_DOMAIN_KFD_API: return KFD_API_ID_NUMBER; case ACTIVITY_DOMAIN_EXT_API: return 0; case ACTIVITY_DOMAIN_ROCTX: return ROCTX_API_ID_NUMBER; @@ -850,8 +866,9 @@ PUBLIC_API roctracer_status_t roctracer_enable_domain_callback( void* user_data) { API_METHOD_PREFIX - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_enable_callback_impl(domain, op, callback, user_data); + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_enable_callback_impl(domain, op, callback, user_data); API_METHOD_SUFFIX } @@ -860,9 +877,10 @@ PUBLIC_API roctracer_status_t roctracer_enable_callback( void* user_data) { API_METHOD_PREFIX - for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; domain++) { - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_enable_callback_impl(domain, op, callback, user_data); + for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; ++domain) { + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_enable_callback_impl(domain, op, callback, user_data); } API_METHOD_SUFFIX } @@ -943,17 +961,19 @@ PUBLIC_API roctracer_status_t roctracer_disable_domain_callback( roctracer_domain_t domain) { API_METHOD_PREFIX - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_disable_callback_impl(domain, op); + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_disable_callback_impl(domain, op); API_METHOD_SUFFIX } PUBLIC_API roctracer_status_t roctracer_disable_callback() { API_METHOD_PREFIX - for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; domain++) { - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_disable_callback_impl(domain, op); + for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; ++domain) { + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_disable_callback_impl(domain, op); } API_METHOD_SUFFIX } @@ -1082,8 +1102,9 @@ PUBLIC_API roctracer_status_t roctracer_enable_domain_activity_expl( roctracer_pool_t* pool) { API_METHOD_PREFIX - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_enable_activity_impl(domain, op, pool); + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_enable_activity_impl(domain, op, pool); API_METHOD_SUFFIX } @@ -1091,9 +1112,10 @@ PUBLIC_API roctracer_status_t roctracer_enable_activity_expl( roctracer_pool_t* pool) { API_METHOD_PREFIX - for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; domain++) { - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_enable_activity_impl(domain, op, pool); + for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; ++domain) { + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_enable_activity_impl(domain, op, pool); } API_METHOD_SUFFIX } @@ -1165,17 +1187,19 @@ PUBLIC_API roctracer_status_t roctracer_disable_domain_activity( roctracer_domain_t domain) { API_METHOD_PREFIX - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_disable_activity_impl(domain, op); + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_disable_activity_impl(domain, op); API_METHOD_SUFFIX } PUBLIC_API roctracer_status_t roctracer_disable_activity() { API_METHOD_PREFIX - for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; domain++) { - const uint32_t op_num = get_op_num(domain); - for (uint32_t op = 0; op < op_num; op++) roctracer_disable_activity_impl(domain, op); + for (uint32_t domain = 0; domain < ACTIVITY_DOMAIN_NUMBER; ++domain) { + const uint32_t op_end = get_op_end(domain); + for (uint32_t op = get_op_begin(domain); op < op_end; ++op) + roctracer_disable_activity_impl(domain, op); } API_METHOD_SUFFIX } diff --git a/test/tool/tracer_tool.cpp b/test/tool/tracer_tool.cpp index 42cb6ce465..608b40cf84 100644 --- a/test/tool/tracer_tool.cpp +++ b/test/tool/tracer_tool.cpp @@ -1094,7 +1094,7 @@ extern "C" PUBLIC_API bool OnLoad(HsaApiTable* table, uint64_t runtime_version, hip_api_file_handle = open_output_file(output_prefix, "hip_api_trace.txt"); if (hip_api_vec.size() != 0) { for (unsigned i = 0; i < hip_api_vec.size(); ++i) { - uint32_t cid = HIP_API_ID_NUMBER; + uint32_t cid = HIP_API_ID_NONE; const char* api = hip_api_vec[i].c_str(); ROCTRACER_CALL(roctracer_op_code(ACTIVITY_DOMAIN_HIP_API, api, &cid, NULL)); ROCTRACER_CALL(roctracer_enable_op_callback(ACTIVITY_DOMAIN_HIP_API, cid, hip_api_callback, NULL)); @@ -1105,13 +1105,13 @@ extern "C" PUBLIC_API bool OnLoad(HsaApiTable* table, uint64_t runtime_version, } if (is_stats_opt) { - const char* path = NULL; - FILE* f = open_output_file(output_prefix, "hip_api_stats.csv", &path); + const char* path = NULL; + FILE* f = open_output_file(output_prefix, "hip_api_stats.csv", &path); hip_api_stats = new EvtStats(f, path); - for (uint32_t id = 0; id < HIP_API_ID_NUMBER; id += 1) { + for (uint32_t id = HIP_API_ID_FIRST; id <= HIP_API_ID_LAST; id += 1) { const char* label = roctracer_op_string(ACTIVITY_DOMAIN_HIP_API, id, 0); hip_api_stats->set_label(id, label); - } + } } } @@ -1120,11 +1120,11 @@ extern "C" PUBLIC_API bool OnLoad(HsaApiTable* table, uint64_t runtime_version, ROCTRACER_CALL(roctracer_enable_domain_activity(ACTIVITY_DOMAIN_HCC_OPS)); if (is_stats_opt) { - FILE* f = NULL; - const char* path = NULL; - f = open_output_file(output_prefix, "hip_kernel_stats.csv", &path); + FILE* f = NULL; + const char* path = NULL; + f = open_output_file(output_prefix, "hip_kernel_stats.csv", &path); hip_kernel_stats = new EvtStatsA(f, path); - f = open_output_file(output_prefix, "hip_memcpy_stats.csv", &path); + f = open_output_file(output_prefix, "hip_memcpy_stats.csv", &path); hip_memcpy_stats = new EvtStatsA(f, path); } }