Fix rocprofiler_iterate_callback_tracing_kind_operation_args for HIP compiler callbacks (#532)

* Fix HIP compiler iterate args

- `include/rocprofiler-sdk/hip/api_args.h`
  - replace struct fields named "f" with "func"
  - replace hip stream fields named "hStream" with "stream"
- `lib/rocprofiler-sdk/callback_tracing.cpp`
  - iterate_args for HIP compiler table
- `lib/rocprofiler-sdk/registration.cpp`
  - fix warning about roctx num_tables
- `lib/rocprofiler-sdk/hip/hip.def.cpp`
  - replace struct fields named "f" with "func"
  - replace hip stream fields named "hStream" with "stream"
- `lib/rocprofiler-sdk/{hip,hsa,marker}/utils.hpp`
  - improve `stringize_impl`
- `lib/rocprofiler-sdk/hsa/code_object.cpp`
  - remove stale commented out code
- `lib/rocprofiler-sdk/hsa/queue_controller.*`
  - destory_queue -> destroy_queue
- `tests/tools/json-tool.cpp`
  - improve parallelism in tool_tracing_callback
  - serialize the marker api args
  - only invoke rocprofiler_iterate_callback_tracing_kind_operation_args in exit phase
- `samples/counter_collection/CMakeLists.txt`
  - reduce timeout on tests to 120 seconds

* Update lib/rocprofiler-sdk/hsa/utils.hpp

- disable dereference of double pointer in stringize_impl

* Update lib/common

- indirection_level in mpl.hpp
- stringize_arg.hpp

* Rework rocprofiler_iterate_callback_tracing_kind_operation_args

- provide more information in rocprofiler_callback_tracing_operation_args_cb_t
- support specifying the dereference level to account for output paramters

[ROCm/rocprofiler-sdk commit: 1bb94add11]
This commit is contained in:
Jonathan R. Madsen
2024-03-01 01:46:07 -06:00
committed by GitHub
parent 15302ff11d
commit cb6b79c323
27 changed files with 419 additions and 200 deletions
@@ -123,20 +123,27 @@ tool_tracing_callback(rocprofiler_callback_tracing_record_t record,
auto info_data_cb = [](rocprofiler_callback_tracing_kind_t,
uint32_t,
uint32_t arg_num,
const void* const arg_value_addr,
int32_t indirection_count,
const char* arg_type,
const char* arg_name,
const char* arg_value_str,
const void* const arg_value_addr,
int32_t dereference_count,
void* cb_data) -> int {
auto& dss = *static_cast<std::stringstream*>(cb_data);
dss << ((arg_num == 0) ? "(" : ", ");
dss << arg_num << ": " << arg_name << "=" << arg_value_str;
(void) arg_value_addr;
(void) arg_type;
(void) indirection_count;
(void) dereference_count;
return 0;
};
auto info_data = std::stringstream{};
int32_t max_deref = (record.phase == ROCPROFILER_CALLBACK_PHASE_ENTER) ? 1 : 2;
auto info_data = std::stringstream{};
ROCPROFILER_CALL(rocprofiler_iterate_callback_tracing_kind_operation_args(
record, info_data_cb, static_cast<void*>(&info_data)),
record, info_data_cb, max_deref, static_cast<void*>(&info_data)),
"Failure iterating trace operation args");
auto info_data_str = info_data.str();