SWDEV-281658 - Preserve the callback IDs enum ordering
Use HIP_API_ID_NONE to detect unsupported API instead of HIP_API_ID_NUMBER which can grow with a new version of the API. This HIP_API_ID_NONE enum has a fixed value of 0 so the HIP_API_IDs really start at FIRST. Change-Id: I760aa50ddf6fa6d46bf20555ad7d429335a53f97
Šī revīzija ir iekļauta:
revīziju iesūtīja
Christophe Paquot
vecāks
1cc934204f
revīzija
b04dfd5fdf
+47
-23
@@ -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
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Atsaukties uz šo jaunā problēmā
Block a user