Thread Trace Service

Thread Trace Service#

Rocprofiler SDK Developer API: Thread Trace Service
Rocprofiler SDK Developer API 0.6.0
ROCm Profiling API and tools
Thread Trace Service

Provides API calls to enable and handle thread trace data. More...

Data Structures

struct  rocprofiler_att_parameter_t
 
union  rocprofiler_att_parameter_t.__unnamed1__
 
struct  rocprofiler_att_parameter_t.__unnamed1__.__unnamed3__
 

Typedefs

typedef void(* rocprofiler_att_shader_data_callback_t) (rocprofiler_agent_id_t agent, int64_t shader_engine_id, void *data, unsigned long data_size, rocprofiler_user_data_t userdata)
 Callback to be triggered every time some ATT data is generated by the device.
 
typedef rocprofiler_att_control_flags_t(* rocprofiler_att_dispatch_callback_t) (rocprofiler_agent_id_t agent_id, rocprofiler_queue_id_t queue_id, rocprofiler_correlation_id_t correlation_id, rocprofiler_kernel_id_t kernel_id, rocprofiler_dispatch_id_t dispatch_id, void *userdata_config, rocprofiler_user_data_t *userdata_shader)
 Callback to be triggered every kernel dispatch, indicating to start and/or stop ATT.
 

Enumerations

enum  rocprofiler_att_parameter_type_t {
  ROCPROFILER_ATT_PARAMETER_TARGET_CU = 0 ,
  ROCPROFILER_ATT_PARAMETER_SHADER_ENGINE_MASK ,
  ROCPROFILER_ATT_PARAMETER_BUFFER_SIZE ,
  ROCPROFILER_ATT_PARAMETER_SIMD_SELECT ,
  ROCPROFILER_ATT_PARAMETER_PERFCOUNTERS_CTRL ,
  ROCPROFILER_ATT_PARAMETER_PERFCOUNTER ,
  ROCPROFILER_ATT_PARAMETER_SERIALIZE_ALL ,
  ROCPROFILER_ATT_PARAMETER_LAST
}
 
enum  rocprofiler_att_control_flags_t {
  ROCPROFILER_ATT_CONTROL_NONE = 0 ,
  ROCPROFILER_ATT_CONTROL_START_AND_STOP = 3
}
 

Functions

rocprofiler_status_t rocprofiler_configure_agent_thread_trace_service (rocprofiler_context_id_t context_id, rocprofiler_att_parameter_t *parameters, unsigned long num_parameters, rocprofiler_agent_id_t agent_id, rocprofiler_att_shader_data_callback_t shader_callback, rocprofiler_user_data_t callback_userdata)
 Configure Thread Trace Service for agent. There may only be one agent profile configured per context and can be only one active context that is profiling a single agent at a time. Multiple agent contexts can be started at the same time if they are profiling different agents.
 
rocprofiler_status_t rocprofiler_configure_dispatch_thread_trace_service (rocprofiler_context_id_t context_id, rocprofiler_att_parameter_t *parameters, unsigned long num_parameters, rocprofiler_att_dispatch_callback_t dispatch_callback, rocprofiler_att_shader_data_callback_t shader_callback, void *callback_userdata)
 Enables the advanced thread trace service for dispatch-based tracing. The tool has an option to enable/disable thread trace on every dispatch callback. This service enables kernel serialization.
 

Detailed Description

Provides API calls to enable and handle thread trace data.


Data Structure Documentation

◆ rocprofiler_att_parameter_t

struct rocprofiler_att_parameter_t

Definition at line 51 of file thread_trace_core.h.

+ Collaboration diagram for rocprofiler_att_parameter_t:
Data Fields
union rocprofiler_att_parameter_t.__unnamed1__ __unnamed__
rocprofiler_att_parameter_type_t type

◆ rocprofiler_att_parameter_t.__unnamed1__

union rocprofiler_att_parameter_t.__unnamed1__

Definition at line 54 of file thread_trace_core.h.

+ Collaboration diagram for rocprofiler_att_parameter_t.__unnamed1__:
Data Fields
struct rocprofiler_att_parameter_t.__unnamed1__.__unnamed3__ __unnamed__
uint64_t value

◆ rocprofiler_att_parameter_t.__unnamed1__.__unnamed3__

struct rocprofiler_att_parameter_t.__unnamed1__.__unnamed3__

Definition at line 57 of file thread_trace_core.h.

+ Collaboration diagram for rocprofiler_att_parameter_t.__unnamed1__.__unnamed3__:
Data Fields
rocprofiler_counter_id_t counter_id
uint64_t simd_mask: 4

Typedef Documentation

◆ rocprofiler_att_dispatch_callback_t

typedef rocprofiler_att_control_flags_t(* rocprofiler_att_dispatch_callback_t) (rocprofiler_agent_id_t agent_id, rocprofiler_queue_id_t queue_id, rocprofiler_correlation_id_t correlation_id, rocprofiler_kernel_id_t kernel_id, rocprofiler_dispatch_id_t dispatch_id, void *userdata_config, rocprofiler_user_data_t *userdata_shader)

Callback to be triggered every kernel dispatch, indicating to start and/or stop ATT.

Parameters
[in]agent_idagent_id.
[in]queue_idqueue_id.
[in]correlation_idinternal correlation id.
[in]kernel_idkernel_id.
[in]dispatch_iddispatch_id.
[in]userdata_configUserdata passed back from rocprofiler_configure_dispatch_thread_trace_service.
[out]userdata_shaderUserdata to be passed in shader_callback

Definition at line 57 of file thread_trace_dispatch.h.

◆ rocprofiler_att_shader_data_callback_t

typedef void(* rocprofiler_att_shader_data_callback_t) (rocprofiler_agent_id_t agent, int64_t shader_engine_id, void *data, unsigned long data_size, rocprofiler_user_data_t userdata)

Callback to be triggered every time some ATT data is generated by the device.

Parameters
[in]shader_engine_idID of shader engine, as enabled by SE_MASK
[in]dataPointer to the buffer containing the ATT data
[in]data_sizeNumber of bytes in "data"
[in]userdataPassed back to user from rocprofiler_att_dispatch_callback_t()

Definition at line 72 of file thread_trace_core.h.

Enumeration Type Documentation

◆ rocprofiler_att_control_flags_t

Enumerator
ROCPROFILER_ATT_CONTROL_NONE 
ROCPROFILER_ATT_CONTROL_START_AND_STOP 

Definition at line 40 of file thread_trace_dispatch.h.

◆ rocprofiler_att_parameter_type_t

Enumerator
ROCPROFILER_ATT_PARAMETER_TARGET_CU 

Select the Target CU or WGP.

ROCPROFILER_ATT_PARAMETER_SHADER_ENGINE_MASK 

Bitmask of shader engines.

ROCPROFILER_ATT_PARAMETER_BUFFER_SIZE 

Size of combined GPU buffer for ATT.

ROCPROFILER_ATT_PARAMETER_SIMD_SELECT 

Bitmask (GFX9) or ID (Navi) of SIMDs.

ROCPROFILER_ATT_PARAMETER_PERFCOUNTERS_CTRL 

Period [1,32] or disable (0) perfmon.

ROCPROFILER_ATT_PARAMETER_PERFCOUNTER 

Perfmon ID and SIMD mask.

ROCPROFILER_ATT_PARAMETER_SERIALIZE_ALL 

Serializes kernels not under thread trace.

ROCPROFILER_ATT_PARAMETER_LAST 

Definition at line 39 of file thread_trace_core.h.

40{
41 ROCPROFILER_ATT_PARAMETER_TARGET_CU = 0, ///< Select the Target CU or WGP
42 ROCPROFILER_ATT_PARAMETER_SHADER_ENGINE_MASK, ///< Bitmask of shader engines.
43 ROCPROFILER_ATT_PARAMETER_BUFFER_SIZE, ///< Size of combined GPU buffer for ATT
44 ROCPROFILER_ATT_PARAMETER_SIMD_SELECT, ///< Bitmask (GFX9) or ID (Navi) of SIMDs
45 ROCPROFILER_ATT_PARAMETER_PERFCOUNTERS_CTRL, ///< Period [1,32] or disable (0) perfmon
46 ROCPROFILER_ATT_PARAMETER_PERFCOUNTER, ///< Perfmon ID and SIMD mask
47 ROCPROFILER_ATT_PARAMETER_SERIALIZE_ALL, ///< Serializes kernels not under thread trace
rocprofiler_att_parameter_type_t
@ ROCPROFILER_ATT_PARAMETER_SHADER_ENGINE_MASK
Bitmask of shader engines.
@ ROCPROFILER_ATT_PARAMETER_SIMD_SELECT
Bitmask (GFX9) or ID (Navi) of SIMDs.
@ ROCPROFILER_ATT_PARAMETER_TARGET_CU
Select the Target CU or WGP.
@ ROCPROFILER_ATT_PARAMETER_LAST
@ ROCPROFILER_ATT_PARAMETER_BUFFER_SIZE
Size of combined GPU buffer for ATT.
@ ROCPROFILER_ATT_PARAMETER_SERIALIZE_ALL
Serializes kernels not under thread trace.
@ ROCPROFILER_ATT_PARAMETER_PERFCOUNTERS_CTRL
Period [1,32] or disable (0) perfmon.
@ ROCPROFILER_ATT_PARAMETER_PERFCOUNTER
Perfmon ID and SIMD mask.

Function Documentation

◆ rocprofiler_configure_agent_thread_trace_service()

rocprofiler_status_t rocprofiler_configure_agent_thread_trace_service ( rocprofiler_context_id_t  context_id,
rocprofiler_att_parameter_t parameters,
unsigned long  num_parameters,
rocprofiler_agent_id_t  agent_id,
rocprofiler_att_shader_data_callback_t  shader_callback,
rocprofiler_user_data_t  callback_userdata 
)

Configure Thread Trace Service for agent. There may only be one agent profile configured per context and can be only one active context that is profiling a single agent at a time. Multiple agent contexts can be started at the same time if they are profiling different agents.

Parameters
[in]context_idcontext id
[in]parametersList of ATT-specific parameters.
[in]num_parametersNumber of parameters. Zero is allowed.
[in]agent_idagent to configure profiling on.
[in]shader_callbackCallback fn where the collected data will be sent to.
[in]callback_userdataPassed back to user in shader_callback.
Returns
rocprofiler_status_t
Return values
ROCPROFILER_STATUS_SUCCESSon success
ROCPROFILER_STATUS_ERROR_CONFIGURATION_LOCKEDfor configuration locked
ROCPROFILER_STATUS_ERROR_CONTEXT_INVALIDfor conflicting configurations in the same ctx
ROCPROFILER_STATUS_ERROR_CONTEXT_NOT_FOUNDfor invalid context id
ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENTfor invalid rocprofiler_att_parameter_t

◆ rocprofiler_configure_dispatch_thread_trace_service()

rocprofiler_status_t rocprofiler_configure_dispatch_thread_trace_service ( rocprofiler_context_id_t  context_id,
rocprofiler_att_parameter_t parameters,
unsigned long  num_parameters,
rocprofiler_att_dispatch_callback_t  dispatch_callback,
rocprofiler_att_shader_data_callback_t  shader_callback,
void *  callback_userdata 
)

Enables the advanced thread trace service for dispatch-based tracing. The tool has an option to enable/disable thread trace on every dispatch callback. This service enables kernel serialization.

Parameters
[in]context_idcontext_id.
[in]parametersList of ATT-specific parameters.
[in]num_parametersNumber of parameters. Zero is allowed.
[in]dispatch_callbackControl fn which decides when ATT starts/stop collecting.
[in]shader_callbackCallback fn where the collected data will be sent to.
[in]callback_userdataPassed back to user in dispatch_callback.
Returns
rocprofiler_status_t
Return values
ROCPROFILER_STATUS_SUCCESSon success
ROCPROFILER_STATUS_ERROR_CONFIGURATION_LOCKEDfor configuration locked
ROCPROFILER_STATUS_ERROR_CONTEXT_INVALIDfor conflicting configurations in the same ctx
ROCPROFILER_STATUS_ERROR_CONTEXT_NOT_FOUNDfor invalid context id
ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENTfor invalid rocprofiler_att_parameter_t
ROCPROFILER_STATUS_ERROR_SERVICE_ALREADY_CONFIGUREDif already configured