44 long long **val,
int flags);
79 .description =
"GPU events and metrics via AMD ROCm-PL API",
87 .fast_virtual_timer = 0,
89 .attach_must_ptrace = 0,
134 SUBDBG(
"ENTER: cid: %d\n", cid);
140 const char *err_string;
145 SUBDBG(
"disabled_reason truncated");
151 "Not initialized. Access component events to initialize it.");
166 memset(rocm_ctx, 0,
sizeof(*rocm_ctx));
181 uint64_t event_code = 0;
209 const char *err_string;
214 SUBDBG(
"disabled_reason truncated");
279 SUBDBG(
"Cannot cleanup an eventset that is running.");
306 SUBDBG(
"Counter sampling is not compatible with intercept mode");
316 SUBDBG(
"thread == NULL in user_signal_handler!");
324 SUBDBG(
"ESI == NULL in user_signal_handler!");
328 hw_context.
si = info;
349 SUBDBG(
"ENTER: ctl: %p, ntv_info: %p, ntv_count: %d, ctx: %p\n", ctl, ntv_info, ntv_count, ctx);
358 SUBDBG(
"Cannot update events in an eventset that has been already "
410 for (
i = 0;
i < ntv_count; ++
i) {
417 for (
i = 0;
i < ntv_count; ++
i) {
475 SUBDBG(
"ENTER: ctx: %p, ctl: %p\n", ctx, ctl);
478 SUBDBG(
"Error! Cannot PAPI_start more than one eventset at a time for every component.");
515 SUBDBG(
"ENTER: ctx: %p, ctl: %p, val: %p, flags: %d\n", ctx, ctl, val, flags);
518 SUBDBG(
"Error! Cannot PAPI_read counters for an eventset that has not been PAPI_start'ed.");
538 SUBDBG(
"ENTER: ctx: %p, ctl: %p\n", ctx, ctl);
541 SUBDBG(
"Error! Cannot PAPI_stop counters for an eventset that has not been PAPI_start'ed.");
551 rocm_ctx->
state &= ~ROCM_EVENTS_RUNNING;
574 SUBDBG(
"Cannot reset counters for an eventset that has not been started.");
584 SUBDBG(
"ENTER: event_code: %u, modifier: %d\n", *event_code, modifier);
590 uint64_t code = *(uint64_t *) event_code;
592 *event_code = (
unsigned int) code;
604 SUBDBG(
"ENTER: event_code: %u, name: %p, len: %d\n", event_code,
name, len);
622 SUBDBG(
"ENTER: name: %s, code: %p\n",
name, code);
630 *code = (
unsigned int) event_code;
642 SUBDBG(
"ENTER: event_code: %u, descr: %p, len: %d\n", event_code,
descr, len);
660 SUBDBG(
"ENTER: event_code: %u, info: %p\n", event_code, info);
#define GET_OVERFLOW_ADDRESS(ctx)
Returns a string describing the PAPI error code.
static double a[MATRIX_SIZE][MATRIX_SIZE]
static double b[MATRIX_SIZE][MATRIX_SIZE]
unsigned long AO_t __attribute__((__aligned__(4)))
Return codes and api definitions.
#define SUBDBG(format, args...)
#define papi_realloc(a, b)
int rocd_evt_code_to_info(uint64_t event_code, PAPI_event_info_t *info)
int rocd_ctx_reset(rocd_ctx_t ctx)
int rocd_err_get_last(const char **error_str)
int rocd_ctx_open(uint64_t *events_id, int num_events, rocd_ctx_t *ctx)
int rocd_evt_code_to_name(uint64_t event_code, char *name, int len)
int rocd_ctx_read(rocd_ctx_t ctx, long long **counters)
int rocd_init_environment(void)
int rocd_ctx_start(rocd_ctx_t ctx)
int rocd_ctx_stop(rocd_ctx_t ctx)
int rocd_evt_name_to_code(const char *name, uint64_t *event_code)
int rocd_ctx_close(rocd_ctx_t ctx)
int rocd_evt_enum(uint64_t *event_code, int modifier)
int rocd_evt_code_to_descr(uint64_t event_code, char *descr, int len)
rocm component dispatch layer. Dispatches profiling to the appropriate backend interface (e....
unsigned int rocm_prof_mode
#define ROCM_PROFILE_SAMPLING_MODE
#define ROCM_EVENTS_RUNNING
#define PAPI_ROCM_MAX_COUNTERS
#define ROCM_EVENTS_OPENED
static int counter_sampling_compatible_with_prof_mode(void)
papi_vector_t _rocm_vector
static int rocm_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
static int rocm_shutdown_thread(hwd_context_t *ctx)
static int update_native_events(rocm_control_t *, NativeInfo_t *, int)
static int rocm_init_component(int cid)
static int rocm_ntv_code_to_info(unsigned int event_code, PAPI_event_info_t *info)
static int rocm_init_thread(hwd_context_t *ctx)
static int rocm_init_control_state(hwd_control_state_t *ctl)
static int rocm_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
static void rocm_dispatch_timer(int n, hwd_siginfo_t *info, void *uc)
static int compare(const void *a, const void *b)
static int rocm_ntv_code_to_name(unsigned int event_code, char *name, int len)
static int evt_get_count(int *count)
static int try_open_events(rocm_control_t *)
static int rocm_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int rocm_ntv_name_to_code(const char *name, unsigned int *event_code)
static int rocm_ntv_enum_events(unsigned int *event_code, int modifier)
static int rocm_set_domain(hwd_control_state_t *ctl, int domain)
static int rocm_shutdown_component(void)
static int rocm_cleanup_eventset(hwd_control_state_t *ctl)
static int check_n_initialize(void)
static int rocm_init_private(void)
static int rocm_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int rocm_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *ntv_info, int ntv_count, hwd_context_t *ctx)
static int rocm_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long long **val, int flags)
static int rocm_ntv_code_to_descr(unsigned int event_code, char *descr, int len)
hwd_control_state_t * ctl_state
char name[PAPI_MAX_STR_LEN]
char disabled_reason[PAPI_HUGE_STR_LEN]
hwd_ucontext_t * ucontext
PAPI_component_info_t cmp_info
unsigned int overflow_signal
inline_static ThreadInfo_t * _papi_hwi_lookup_thread(int custom_tid)
inline_static int _papi_hwi_lock(int lck)
inline_static int _papi_hwi_unlock(int lck)