Device counting service#
-
typedef rocprofiler_status_t (*rocprofiler_device_counting_agent_cb_t)(rocprofiler_context_id_t context_id, rocprofiler_counter_config_id_t config_id)#
(experimental) Callback to set the profile config for the agent.
- Param context_id:
[in] context id
- Param config_id:
[in] Profile config detailing the counters to collect for this kernel
- Retval ROCPROFILER_STATUS_ERROR_PROFILE_NOT_FOUND:
Returned if the config_id is not found
- Retval ROCPROFILER_STATUS_ERROR_CONTEXT_INVALID:
Returned if the ctx is not valid
- Retval ROCPROFILER_STATUS_ERROR_CONFIGURATION_LOCKED:
Returned if attempting to make this call outside of context startup.
- Retval ROCPROFILER_STATUS_ERROR_AGENT_MISMATCH:
Agent of profile does not match agent of the context.
- Retval ROCPROFILER_STATUS_SUCCESS:
Returned if succesfully configured
- Return:
-
typedef void (*rocprofiler_device_counting_service_cb_t)(rocprofiler_context_id_t context_id, rocprofiler_agent_id_t agent_id, rocprofiler_device_counting_agent_cb_t set_config, void *user_data)#
(experimental) Configure Profile Counting Service for agent. Called when the context is started. Selects the counters to be used for agent profiling.
- Param context_id:
[in] context id
- Param agent_id:
[in] agent id
- Param set_config:
[in] Function to call to set the profile config (see rocprofiler_device_counting_agent_cb_t)
- Param user_data:
[in] Data supplied to rocprofiler_configure_device_counting_service
-
rocprofiler_status_t rocprofiler_configure_device_counting_service(rocprofiler_context_id_t context_id, rocprofiler_buffer_id_t buffer_id, rocprofiler_agent_id_t agent_id, rocprofiler_device_counting_service_cb_t cb, void *user_data)#
(experimental) Configure Device Counting Service for agent. There may only be one counting service configured per agent in a 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:
context_id – [in] context id
buffer_id – [in] id of the buffer to use for the counting service. When rocprofiler_sample_device_counting_service is called, counter data will be written to this buffer. If the input buffer id is null (i.e.
rocprofiler_buffer_id_t{.handle = 0}
), the counter data will not be written to a buffer and will only be returned in the output_records of rocprofiler_sample_device_counting_serviceagent_id – [in] agent to configure profiling on.
cb – [in] Callback called when the context is started for the tool to specify what counters to collect (rocprofiler_counter_config_id_t).
user_data – [in] User supplied data to be passed to the callback cb when triggered
- Return values:
ROCPROFILER_STATUS_ERROR_CONTEXT_INVALID – Returned if the context does not exist.
ROCPROFILER_STATUS_ERROR_BUFFER_NOT_FOUND – Returned if the buffer is not found.
ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENT – Returned if context already has agent profiling configured for agent_id.
ROCPROFILER_STATUS_SUCCESS – Returned if succesfully configured
- Returns:
-
rocprofiler_status_t rocprofiler_sample_device_counting_service(rocprofiler_context_id_t context_id, rocprofiler_user_data_t user_data, rocprofiler_counter_flag_t flags, rocprofiler_counter_record_t *output_records, unsigned long *rec_count)#
(experimental) Trigger a read of the counter data for the agent profile. The counter data will be written to the buffer specified in rocprofiler_configure_device_counting_service. The data in rocprofiler_user_data_t will be written to the buffer along with the counter data. flags can be used to specify if this call should be performed asynchronously (default is synchronous).
- Parameters:
context_id – [in] context id
user_data – [in] User supplied data, included in records outputted to buffer.
flags – [in] Flags to specify how the counter data should be collected (defaults to sync).
output_records – [in] (Optional) Provides the values immediately instead of outputting to buffer. Must be allocated by caller.
rec_count – [in] (Optional) On entry, this is the maximum number of records rocprof can store in output_records. On exit, contains the number of actual records.
- Return values:
ROCPROFILER_STATUS_ERROR_CONTEXT_INVALID – Returned if the context does not exist or the context is not configured for agent profiling.
ROCPROFILER_STATUS_ERROR_CONTEXT_ERROR – Returned if another operation is in progress ( start/stop ctx or another read).
ROCPROFILER_STATUS_ERROR – Returned if HSA has not been initialized yet.
ROCPROFILER_STATUS_ERROR_OUT_OF_RESOURCES – Returned output_records is set but size is too small to store results
ROCPROFILER_STATUS_SUCCESS – Returned if read request was successful.
ROCPROFILER_STATUS_ERROR_INVALID_ARGUMENT – Returned If ASYNC is being used while output_records is not null.
- Returns: