From 2d31848c4432b518ff5d89348c8c5c63cb4531b6 Mon Sep 17 00:00:00 2001 From: Rachida Kebichi Date: Wed, 18 Nov 2020 10:39:33 -0500 Subject: [PATCH] SWDEV-259683 HIP API records filtering Change-Id: I43ca5e022d2c055b6a9bc2c09b4276b490a4b986 --- src/core/roctracer.cpp | 14 ++++++++++++++ test/run.sh | 5 +++++ test/tool/tracer_tool.cpp | 16 ++++++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/core/roctracer.cpp b/src/core/roctracer.cpp index 891b005e2b..8bc5ea295e 100644 --- a/src/core/roctracer.cpp +++ b/src/core/roctracer.cpp @@ -719,11 +719,25 @@ PUBLIC_API roctracer_status_t roctracer_op_code( switch (domain) { case ACTIVITY_DOMAIN_HSA_API: { *op = roctracer::hsa_support::GetApiCode(str); + if (*op == HSA_API_ID_NUMBER) { + EXC_RAISING(ROCTRACER_STATUS_BAD_PARAMETER, "Invalid API name \"" << str << "\", domain ID(" << domain << ")"); + } if (kind != NULL) *kind = 0; break; } case ACTIVITY_DOMAIN_KFD_API: { *op = roctracer::kfd_support::GetApiCode(str); + if (*op == KFD_API_ID_NUMBER) { + EXC_RAISING(ROCTRACER_STATUS_BAD_PARAMETER, "Invalid API name \"" << str << "\", domain ID(" << domain << ")"); + } + if (kind != NULL) *kind = 0; + break; + } + case ACTIVITY_DOMAIN_HIP_API: { + *op = hipApiIdByName(str); + if (*op == HIP_API_ID_NUMBER) { + EXC_RAISING(ROCTRACER_STATUS_BAD_PARAMETER, "Invalid API name \"" << str << "\", domain ID(" << domain << ")"); + } if (kind != NULL) *kind = 0; break; } diff --git a/test/run.sh b/test/run.sh index e8d8909523..9a7ffc7490 100755 --- a/test/run.sh +++ b/test/run.sh @@ -134,6 +134,11 @@ export ROCTRACER_DOMAIN="hip" eval_test "tool period test" "ROCP_CTRL_RATE=10:100000:1000000 ./test/MatrixTranspose" MatrixTranspose_hip_period_trace eval_test "tool flushing test" "ROCP_FLUSH_RATE=100000 ./test/MatrixTranspose" MatrixTranspose_hip_flush_trace +#API records filtering +echo "" > input.xml +export ROCP_INPUT=input.xml +eval_test "tool HIP test input" ./test/MatrixTranspose hip_input_trace + # HSA test export ROCTRACER_DOMAIN="hsa" # test trace diff --git a/test/tool/tracer_tool.cpp b/test/tool/tracer_tool.cpp index 218652e98a..cc5367d1ae 100644 --- a/test/tool/tracer_tool.cpp +++ b/test/tool/tracer_tool.cpp @@ -112,6 +112,7 @@ bool trace_pcs = false; // API trace vector std::vector hsa_api_vec; std::vector kfd_api_vec; +std::vector hip_api_vec; LOADER_INSTANTIATE(); TRACE_BUFFER_INSTANTIATE(); @@ -921,6 +922,7 @@ void tool_load() { found = true; trace_hip_api = true; trace_hip_activity = true; + hip_api_vec = api_vec; } if (name == "KFD") { found = true; @@ -1091,9 +1093,19 @@ extern "C" PUBLIC_API bool OnLoad(HsaApiTable* table, uint64_t runtime_version, // Enable tracing if (trace_hip_api) { hip_api_file_handle = open_output_file(output_prefix, "hip_api_trace.txt"); - ROCTRACER_CALL(roctracer_enable_domain_callback(ACTIVITY_DOMAIN_HIP_API, hip_api_callback, NULL)); + if (hip_api_vec.size() != 0) { + for (unsigned i = 0; i < hip_api_vec.size(); ++i) { + uint32_t cid = HIP_API_ID_NUMBER; + 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)); + printf(" %s", api); + } + } + else { + ROCTRACER_CALL(roctracer_enable_domain_callback(ACTIVITY_DOMAIN_HIP_API, hip_api_callback, NULL)); + } ROCTRACER_CALL(roctracer_disable_op_callback(ACTIVITY_DOMAIN_HIP_API, HIP_API_ID_hipModuleUnload)); - if (is_stats_opt) { const char* path = NULL; FILE* f = open_output_file(output_prefix, "hip_api_stats.csv", &path);