From 4dde756906151a057d8954dd1e2947a3aad8252f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 5 May 2025 21:19:36 -0700 Subject: [PATCH 001/147] initial --- src/components/amd_smi/Rules.amd_smi | 98 ++ src/components/amd_smi/amds.c | 1132 ++++++++++++++++++++++++ src/components/amd_smi/amds.h | 186 ++++ src/components/amd_smi/htable.c | 416 +++++++++ src/components/amd_smi/linux-amd-smi.c | 345 ++++++++ 5 files changed, 2177 insertions(+) create mode 100644 src/components/amd_smi/Rules.amd_smi create mode 100644 src/components/amd_smi/amds.c create mode 100644 src/components/amd_smi/amds.h create mode 100644 src/components/amd_smi/htable.c create mode 100644 src/components/amd_smi/linux-amd-smi.c diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi new file mode 100644 index 000000000..0dbbdff55 --- /dev/null +++ b/src/components/amd_smi/Rules.amd_smi @@ -0,0 +1,98 @@ +# Set default if the root environment variable is not already set. +# Note PAPI_AMDSMI_ROOT is an environment variable that must be set. +# There are four other environment variables that must be exported +# for runtime operation; see the README file. + +PAPI_AMDMSMI_ROOT ?= /opt/rocm + +# There is one library used by the AMD_SMI component: libamd_smi64.so +# By default, the software tries to find this in system paths, including +# those listed in the environment variable LD_LIBRARY_PATH. If not found +# there it looks in $(PAPI_AMDSMI_ROOT)/lib/libamd_smi64.so + +# However, this can be overridden by exporting PAPI_AMD_SMI_LIB as +# something else. It would still need to be a full path and library name. +# If it is exported, it must work or the component will be disabled. e.g. +# export PAPI_AMD_SMI_LIB=$(PAPI_AMD_SMI_LIB)/lib/libamd_smi64.so +# This allows users to overcome non-standard ROCM installs or specify +# specific version of the libamd_smi64.so library. + +# PAPI_AMDMSMI_ROOT is used at both at compile time and run time. + +# There are many ways to cause this path to be known. Spack is a package +# manager used on supercomputers, Linux and MacOS. If Spack is aware of ROCM, +# it encodes the paths to the necessary libraries. + +# The environment variable LD_LIBRARY_PATH encodes a list of paths to +# search for libraries; separated by a colon (:). New paths can be +# added to LD_LIBRARY_PATH. +# +# Warning: LD_LIBRARY_PATH often contains directories that apply to other +# installed packages you may be using. Always add to LD_LIBRARY_PATH +# recursively; for example: + +# >export LD_LIBRARY_PATH=someNewLibraryDirectory:$LD_LIBRARY_PATH which would +# append the existing LD_LIBRARY_PATH to the new directory you wish to add. +# Alternatively, you can prepend it: +# >export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:someNewLibraryDirectory Which will +# search the existing libraries first, then your new directory. + +# You can check on the value of LD_LIBRARY_PATH with +# >echo $LD_LIBRARY_PATH + +# There may be other package managers or utilities, for example on a system +# with modules; the command 'module load rocm' may modify LD_LIBRARY_PATH. + +# A Linux system will also search for libraries by default in the directories +# listed by /etc/ld.so.conf, and /usr/lib64, /lib64, /usr/lib, /lib. + +# Note: If you change the exports, PAPI should be rebuilt from scratch; see +# note below. + +# Note: AMD_SMI is typically provided with the ROCM libraries, but in PAPI +# ROCM and AMD_SMI are treated as separate components, and must be given +# separately on the configure option --with-components. e.g. + +# From within the papi/src/ director: +# make clobber +# ./configure --with-components="amd_smi" +# make + +# An alternative, for both rocm and amd_smi components: +# ./configure --with-components="rocm amd_smi" + +# OPERATION, per library: +# 1) If an override is not empty, we will use it explicitly and fail if it +# does not work. This means disabling the component; a reason for disabling +# is shown using the papi utility, papi/src/utils/papi_component_avail + +# 2) We will attempt to open the library using the normal system library search +# paths; if Spack is present and configured correctly it should deliver the +# proper library. A failure here will be silent; we will proceed to (3). + +# 3) If that fails, we will try to find the library in the standard installed +# locations listed above. If this fails, we disable the component, the reason +# for disabling is shown using the papi utility, +# papi/src/utils/papi_component_avail. + +COMPSRCS += components/amd_smi/linux-amd-smi.c \ + components/amd_smi/amds.c +COMPOBJS += linux-amd-smi.o \ + amds.o + +# CFLAGS specifies compile flags; need include files here, and macro defines. +# Where to find amd_smi.h varied in early ROCM releases. If it changes again, +# for backward compatibility add *more* -I paths, do not just replace this one. + +CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/../include/amd_smi +CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/../include +CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/include/amd_smi +CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/include +CFLAGS += -g +LDFLAGS += $(LDL) -g + +linux-amd-smi.o: components/amd_smi/linux-amd-smi.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o + +amds.o: components/amd_smi/amds.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds.c -o amds.o diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c new file mode 100644 index 000000000..941eb28c5 --- /dev/null +++ b/src/components/amd_smi/amds.c @@ -0,0 +1,1132 @@ +//----------------------------------------------------------------------------- +// @file amdsmi.c +// +// @brief Core implementation of AMD SMI PAPI component. +// Handles dynamic loading of libamd_smi.so and mapping its functions +// to PAPI events (native events enumeration, read/write functions, etc.). +//----------------------------------------------------------------------------- + +#include +#include +#include +#include +#include + +#include "papi.h" +#include "amd_smi/amdsmi.h" +#include "amds.h" + +// AMD SMI library function pointers (dynamically loaded) +static void *amdsmi_dlp = NULL; // handle for dlopen + +// AMD SMI core functions +static amdsmi_status_t (*amdsmi_init_p)(uint64_t init_flags) = NULL; +static amdsmi_status_t (*amdsmi_shut_down_p)(void) = NULL; +static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *count, amdsmi_socket_handle *handles) = NULL; +static amdsmi_status_t (*amdsmi_get_processor_handles_p)(amdsmi_socket_handle socket, uint32_t *count, amdsmi_processor_handle *handles) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_name_p)(amdsmi_processor_handle, char *name, size_t len) = NULL; // optional for descriptions + +// Temperature, power, fan, clock, etc. monitoring functions +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *temperature) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *voltage) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_busy_percent_p)(amdsmi_processor_handle, uint32_t *busy_percent) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_memory_total_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *total) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *used) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t sensor, int64_t *speed) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t sensor, int64_t *speed) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t sensor, uint64_t *max_speed) = NULL; +static amdsmi_status_t (*amdsmi_set_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t sensor, uint64_t speed) = NULL; +static amdsmi_status_t (*amdsmi_reset_gpu_fan_p)(amdsmi_processor_handle, uint32_t sensor) = NULL; +static amdsmi_status_t (*amdsmi_get_gpu_power_info_p)(amdsmi_processor_handle, uint32_t sensor, amdsmi_power_info_t *info) = NULL; +static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *f) = NULL; + +// Performance counter (XGMI, etc.) functions +static amdsmi_status_t (*amdsmi_gpu_create_counter_p)(amdsmi_processor_handle, amdsmi_event_type_t, amdsmi_event_handle_t *) = NULL; +static amdsmi_status_t (*amdsmi_gpu_destroy_counter_p)(amdsmi_event_handle_t) = NULL; +static amdsmi_status_t (*amdsmi_gpu_control_counter_p)(amdsmi_event_handle_t, amdsmi_counter_command_t, void *) = NULL; +static amdsmi_status_t (*amdsmi_gpu_read_counter_p)(amdsmi_event_handle_t, amdsmi_counter_value_t *) = NULL; +static amdsmi_status_t (*amdsmi_dev_counter_group_supported_p)(amdsmi_processor_handle, amdsmi_event_group_t) = NULL; +static amdsmi_status_t (*amdsmi_counter_available_counters_get_p)(amdsmi_processor_handle, amdsmi_event_group_t, uint32_t *) = NULL; + +// Data structures for device and events +typedef struct { + amdsmi_processor_handle handle; + char name[64]; +} device_entry_t; + +static device_entry_t *device_table = NULL; +static int device_count = 0; + +// Structure for a native event +typedef struct { + char name[PAPI_MAX_STR_LEN]; + char descr[PAPI_MAX_STR_LEN]; + int id; // event index in table + int device; // device index associated (if applicable) + int64_t variant; // variant (metric type, etc.) + int64_t subvariant; // sub-variant (e.g., sensor index) + int writable; // 1 if event supports write (control) + // Pointers to per-event operation functions + int (*open_func_p)(void *); + int (*close_func_p)(void *); + int (*start_func_p)(void *); + int (*stop_func_p)(void *); + int (*access_func_p)(amdsmi_access_mode_t mode, void *); + long long value; // cached value or value to write + char scratch[8]; // scratch space (e.g., for storing event handle if needed) +} ntv_event_t; + +typedef struct { + ntv_event_t *events; + int count; +} ntv_event_table_t; + +static ntv_event_table_t ntv_table; +static ntv_event_table_t *ntv_table_p = NULL; // pointer to current table +static char error_string[PAPI_MAX_STR_LEN]; // last error string + +// Internal flags for event state +#define AMDSMI_EVENTS_OPENED 0x1 +#define AMDSMI_EVENTS_RUNNING 0x2 + +// Forward declarations of internal event access functions +static int access_temp_metric(amdsmi_access_mode_t mode, void *event_ptr); +static int access_volt_metric(amdsmi_access_mode_t mode, void *event_ptr); +static int access_busy_percent(amdsmi_access_mode_t mode, void *event_ptr); +static int access_memory_usage(amdsmi_access_mode_t mode, void *event_ptr); +static int access_memory_total(amdsmi_access_mode_t mode, void *event_ptr); +static int access_fan_speed(amdsmi_access_mode_t mode, void *event_ptr); +static int access_fan_speed_max(amdsmi_access_mode_t mode, void *event_ptr); +static int access_fan_rpms(amdsmi_access_mode_t mode, void *event_ptr); +static int access_power_info(amdsmi_access_mode_t mode, void *event_ptr); +static int access_xgmi_counter(amdsmi_access_mode_t mode, void *event_ptr); +static int access_xgmi_bw(amdsmi_access_mode_t mode, void *event_ptr); +// open/close/start/stop handlers for counters +static int open_xgmi_event(void *event_ptr); +static int close_xgmi_event(void *event_ptr); +static int start_xgmi_event(void *event_ptr); +static int stop_xgmi_event(void *event_ptr); +// Simple open/close handlers (no action needed for static metrics) +static int open_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } +static int close_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } +static int start_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } +static int stop_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } + +// Helper macros for memory +#define ALLOC_EVENTS(n) ((ntv_event_t*) papi_calloc((n), sizeof(ntv_event_t))) + +// Error handling: record last error string +static void record_error(const char *msg) { + strncpy(error_string, msg, PAPI_MAX_STR_LEN-1); + error_string[PAPI_MAX_STR_LEN-1] = '\0'; +} + +// Public error retrieval +int amdsmi_err_get_last(const char **err_string) { + *err_string = error_string; + return PAPI_OK; +} + +// Load AMD SMI library and symbols +static int load_amdsmi_lib(void) { + char lib_path[PATH_MAX] = {0}; + const char *root = getenv("PAPI_AMDSMI_ROOT"); + if (root == NULL) { + record_error("Environment variable PAPI_AMDSMI_ROOT not set."); + return PAPI_ENOSUPP; + } + snprintf(lib_path, sizeof(lib_path), "%s/lib/libamd_smi.so", root); + amdsmi_dlp = dlopen(lib_path, RTLD_NOW | RTLD_GLOBAL); + if (!amdsmi_dlp) { + record_error(dlerror()); + return PAPI_ENOSUPP; + } + // Load required symbols (only success if all critical symbols found) + #define LOAD_SYM(sym) do { \ + sym ## _p = dlsym(amdsmi_dlp, #sym); \ + if (!(sym ## _p)) { record_error(dlerror()); return PAPI_ENOSUPP; } } while(0) + + // Core init/shutdown + LOAD_SYM(amdsmi_init); + LOAD_SYM(amdsmi_shut_down); + LOAD_SYM(amdsmi_get_socket_handles); + LOAD_SYM(amdsmi_get_processor_handles); + // Monitoring functions + LOAD_SYM(amdsmi_get_temp_metric); + LOAD_SYM(amdsmi_get_gpu_volt_metric); + LOAD_SYM(amdsmi_get_gpu_busy_percent); + LOAD_SYM(amdsmi_get_gpu_memory_total); + LOAD_SYM(amdsmi_get_gpu_memory_usage); + LOAD_SYM(amdsmi_get_gpu_fan_rpms); + LOAD_SYM(amdsmi_get_gpu_fan_speed); + LOAD_SYM(amdsmi_get_gpu_fan_speed_max); + LOAD_SYM(amdsmi_set_gpu_fan_speed); + LOAD_SYM(amdsmi_reset_gpu_fan); + LOAD_SYM(amdsmi_get_gpu_power_info); + LOAD_SYM(amdsmi_get_clk_freq); + // Performance counter functions + LOAD_SYM(amdsmi_gpu_create_counter); + LOAD_SYM(amdsmi_gpu_destroy_counter); + LOAD_SYM(amdsmi_gpu_control_counter); + LOAD_SYM(amdsmi_gpu_read_counter); + LOAD_SYM(amdsmi_dev_counter_group_supported); + LOAD_SYM(amdsmi_counter_available_counters_get); + // Optional functions (not critical) + amdsmi_get_gpu_name_p = dlsym(amdsmi_dlp, "amdsmi_get_gpu_name"); + + #undef LOAD_SYM + return PAPI_OK; +} + +// Unload AMD SMI library +int unload_amdsmi_lib(void) { + if (amdsmi_dlp) dlclose(amdsmi_dlp); + amdsmi_dlp = NULL; + return PAPI_OK; +} + +// Initialize AMD SMI and enumerate devices and events +int amdsmi_init(void) { + int papi_errno = load_amdsmi_lib(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + // Initialize AMD SMI library for GPUs only + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); + if (status != AMDSMI_STATUS_SUCCESS) { + record_error("amdsmi_init failed"); + return PAPI_ENOSUPP; + } + // Enumerate GPUs in system + uint32_t socket_count = 0; + status = amdsmi_get_socket_handles_p(&socket_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) { + record_error("Failed to get socket count"); + return PAPI_ENOSUPP; + } + if (socket_count == 0) { + record_error("No AMD GPU sockets found"); + return PAPI_ENOEVNT; + } + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) calloc(socket_count, sizeof(*sockets)); + if (!sockets) return PAPI_ENOMEM; + status = amdsmi_get_socket_handles_p(&socket_count, sockets); + if (status != AMDSMI_STATUS_SUCCESS) { + free(sockets); + record_error("Failed to get socket handles"); + return PAPI_ENOSUPP; + } + // Count total GPU processors across sockets + device_count = 0; + for (uint32_t i = 0; i < socket_count; ++i) { + uint32_t proc_count = 0; + status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) continue; + device_count += proc_count; + } + if (device_count == 0) { + free(sockets); + record_error("No AMD GPU devices found"); + return PAPI_ENOEVNT; + } + device_table = (device_entry_t *) calloc(device_count, sizeof(device_entry_t)); + if (!device_table) { + free(sockets); + return PAPI_ENOMEM; + } + // Gather all GPU device handles + int idx = 0; + for (uint32_t i = 0; i < socket_count; ++i) { + uint32_t proc_count = 0; + amdsmi_processor_handle *proc_list = NULL; + status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS || proc_count == 0) { + continue; + } + proc_list = (amdsmi_processor_handle *) calloc(proc_count, sizeof(*proc_list)); + if (!proc_list) { + free(sockets); + return PAPI_ENOMEM; + } + status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, proc_list); + if (status != AMDSMI_STATUS_SUCCESS) { + free(proc_list); + continue; + } + for (uint32_t j = 0; j < proc_count; ++j) { + device_table[idx].handle = proc_list[j]; + // Optionally get device name (if available) + if (amdsmi_get_gpu_name_p) { + char namebuf[64] = ""; + if (amdsmi_get_gpu_name_p(proc_list[j], namebuf, sizeof(namebuf)) == AMDSMI_STATUS_SUCCESS) { + strncpy(device_table[idx].name, namebuf, sizeof(device_table[idx].name)-1); + } else { + snprintf(device_table[idx].name, sizeof(device_table[idx].name), "GPU%u", idx); + } + } else { + snprintf(device_table[idx].name, sizeof(device_table[idx].name), "GPU%u", idx); + } + idx++; + } + free(proc_list); + } + free(sockets); + // Build the native event table + papi_errno = init_event_table(); + if (papi_errno != PAPI_OK) { + // Clean up on failure + shutdown_event_table(); + free(device_table); + device_table = NULL; + device_count = 0; + amdsmi_shut_down_p(); + return papi_errno; + } + ntv_table_p = &ntv_table; + return PAPI_OK; +} + +// Shut down AMD SMI and free resources +int amdsmi_shutdown(void) { + // Free event table and device table + shutdown_event_table(); + if (device_table) free(device_table); + device_table = NULL; + device_count = 0; + // Shutdown AMD SMI library + if (amdsmi_shut_down_p) { + amdsmi_shut_down_p(); + } + unload_amdsmi_lib(); + return PAPI_OK; +} + +// Initialize native event table: enumerate all supported events +int init_event_table(void) { + int event_index = 0; + // Estimate maximum events: + // Temperature: devices * sensors * metrics + // Voltage: devices * metrics + // Fan: devices * (fan sensors * metrics) + // Power: devices * some fields + // Busy: devices * 1 + // Memory: devices * types * 2 (total/used) + // XGMI: devices * number of XGMI counters + // We'll dynamically add events as we find them. + int max_events = 1024; // allocate initial space (will adjust if needed) + ntv_table.events = ALLOC_EVENTS(max_events); + if (!ntv_table.events) return PAPI_ENOMEM; + ntv_table.count = 0; + + // Add temperature events for each GPU and sensor type and metric + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + // Iterate over possible temperature sensor types + for (int ttype = (int)AMDSMI_TEMPERATURE_TYPE_FIRST; + ttype <= (int)AMDSMI_TEMPERATURE_TYPE__MAX; ++ttype) { + // We will attempt only a specific subset if needed: + // e.g., Edge (0), Hotspot (1), VRAM (2), HBM_0-3 (3-6), PLX (7). + amdsmi_temperature_type_t sensor_type = (amdsmi_temperature_type_t) ttype; + // Check if this sensor is supported by trying to read current temperature + int64_t temp_val = 0; + if (amdsmi_get_temp_metric_p(ph, sensor_type, AMDSMI_TEMP_CURRENT, &temp_val) != AMDSMI_STATUS_SUCCESS) { + continue; // skip unsupported sensor + } + // Sensor supported: add events for each metric type + for (int m = (int)AMDSMI_TEMP_FIRST; m <= (int)AMDSMI_TEMP_LAST; ++m) { + amdsmi_temperature_metric_t metric = (amdsmi_temperature_metric_t) m; + // Try to read once to see if this metric is available + int64_t tmp = 0; + amdsmi_status_t st = amdsmi_get_temp_metric_p(ph, sensor_type, metric, &tmp); + if (st != AMDSMI_STATUS_SUCCESS) { + continue; // skip metrics not supported + } + // Add event + ntv_event_t *ev = &ntv_table.events[event_index]; + ev->id = event_index; + ev->device = dev; + ev->variant = metric; + ev->subvariant = sensor_type; + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "temp_%s:device=%d:sensor=%d", + amdsmi_temp_metric_name(metric), dev, sensor_type); + snprintf(ev->descr, sizeof(ev->descr), + "GPU %d temperature %s (sensor type %d)", + dev, amdsmi_temp_metric_desc(metric), sensor_type); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_temp_metric; + event_index++; + if (event_index >= max_events) { + // reallocate larger table if needed + max_events *= 2; + ntv_table.events = (ntv_event_t*) papi_realloc(ntv_table.events, max_events * sizeof(ntv_event_t)); + if (!ntv_table.events) return PAPI_ENOMEM; + } + } + } + } + + // Add voltage metric events for each GPU (only VDDGFX sensor type) + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + for (int vmet = (int)AMDSMI_VOLT_FIRST; vmet <= (int)AMDSMI_VOLT_LAST; ++vmet) { + amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t) vmet; + int64_t val = 0; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(ph, AMDSMI_VOLT_TYPE_VDDGFX, metric, &val); + if (st != AMDSMI_STATUS_SUCCESS) continue; + ntv_event_t *ev = &ntv_table.events[event_index]; + ev->id = event_index; + ev->device = dev; + ev->variant = metric; + ev->subvariant = AMDSMI_VOLT_TYPE_VDDGFX; + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "voltage_%s:device=%d", amdsmi_volt_metric_name(metric), dev); + snprintf(ev->descr, sizeof(ev->descr), + "GPU %d voltage %s (mV)", dev, amdsmi_volt_metric_desc(metric)); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_volt_metric; + event_index++; + if (event_index >= max_events) { + max_events *= 2; + ntv_table.events = (ntv_event_t*) papi_realloc(ntv_table.events, max_events * sizeof(ntv_event_t)); + if (!ntv_table.events) return PAPI_ENOMEM; + } + } + } + + // Add fan speed events (RPM and normalized, plus max, and control if supported) + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + // Assume at least sensor 0 exists for fan + int64_t rpm = 0; + if (amdsmi_get_gpu_fan_rpms_p(ph, 0, &rpm) == AMDSMI_STATUS_SUCCESS) { + // Current fan RPM + ntv_event_t *ev = &ntv_table.events[event_index++]; + ev->id = event_index-1; + ev->device = dev; + ev->variant = 0; // using variant as sensor index + ev->subvariant = 0; // not used further + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "fan_rpm:device=%d", dev); + snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan speed (RPM)", dev); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_fan_rpms; + } + int64_t speed_val = 0; + if (amdsmi_get_gpu_fan_speed_p(ph, 0, &speed_val) == AMDSMI_STATUS_SUCCESS) { + // Current fan speed relative (0-255) + ntv_event_t *ev = &ntv_table.events[event_index++]; + ev->id = event_index-1; + ev->device = dev; + ev->variant = 0; + ev->subvariant = 0; + ev->writable = 1; // this one can be written (set fan speed) + snprintf(ev->name, sizeof(ev->name), "fan_speed:device=%d", dev); + snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan speed (0-255 scale)", dev); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_fan_speed; + } + uint64_t max_speed = 0; + if (amdsmi_get_gpu_fan_speed_max_p(ph, 0, &max_speed) == AMDSMI_STATUS_SUCCESS) { + ntv_event_t *ev = &ntv_table.events[event_index++]; + ev->id = event_index-1; + ev->device = dev; + ev->variant = 0; + ev->subvariant = 0; + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "fan_max_speed:device=%d", dev); + snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan maximum speed", dev); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_fan_speed_max; + } + } + + // Add power and energy-related events (current power, average power, voltage reading) + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + amdsmi_power_info_t pinfo; + if (amdsmi_get_gpu_power_info_p(ph, 0, &pinfo) == AMDSMI_STATUS_SUCCESS) { + // current power + ntv_event_t *ev_cur = &ntv_table.events[event_index++]; + ev_cur->id = event_index-1; + ev_cur->device = dev; + ev_cur->variant = 0; // use variant to identify field (0 = current, 1 = average, 2 = voltage, etc.) + ev_cur->subvariant = 0; + ev_cur->writable = 0; + snprintf(ev_cur->name, sizeof(ev_cur->name), "power_draw:device=%d", dev); + snprintf(ev_cur->descr, sizeof(ev_cur->descr), "GPU %d instantaneous power draw (W)", dev); + ev_cur->open_func_p = open_simple; + ev_cur->close_func_p = close_simple; + ev_cur->start_func_p = start_simple; + ev_cur->stop_func_p = stop_simple; + ev_cur->access_func_p = access_power_info; + // average power + ntv_event_t *ev_avg = &ntv_table.events[event_index++]; + ev_avg->id = event_index-1; + ev_avg->device = dev; + ev_avg->variant = 1; + ev_avg->subvariant = 0; + ev_avg->writable = 0; + snprintf(ev_avg->name, sizeof(ev_avg->name), "power_average:device=%d", dev); + snprintf(ev_avg->descr, sizeof(ev_avg->descr), "GPU %d average power (W)", dev); + ev_avg->open_func_p = open_simple; + ev_avg->close_func_p = close_simple; + ev_avg->start_func_p = start_simple; + ev_avg->stop_func_p = stop_simple; + ev_avg->access_func_p = access_power_info; + // GFX voltage (also available via volt_metric, but include here as part of power info) + ntv_event_t *ev_v = &ntv_table.events[event_index++]; + ev_v->id = event_index-1; + ev_v->device = dev; + ev_v->variant = 2; + ev_v->subvariant = 0; + ev_v->writable = 0; + snprintf(ev_v->name, sizeof(ev_v->name), "voltage_gpu:device=%d", dev); + snprintf(ev_v->descr, sizeof(ev_v->descr), "GPU %d voltage (mV)", dev); + ev_v->open_func_p = open_simple; + ev_v->close_func_p = close_simple; + ev_v->start_func_p = start_simple; + ev_v->stop_func_p = stop_simple; + ev_v->access_func_p = access_power_info; + } + } + + // Add utilization (busy percent) events + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + uint32_t busy = 0; + if (amdsmi_get_gpu_busy_percent_p(ph, &busy) == AMDSMI_STATUS_SUCCESS) { + ntv_event_t *ev = &ntv_table.events[event_index++]; + ev->id = event_index-1; + ev->device = dev; + ev->variant = 0; + ev->subvariant = 0; + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "gpu_busy_percent:device=%d", dev); + snprintf(ev->descr, sizeof(ev->descr), "GPU %d utilization (percent busy)", dev); + ev->open_func_p = open_simple; + ev->close_func_p = close_simple; + ev->start_func_p = start_simple; + ev->stop_func_p = stop_simple; + ev->access_func_p = access_busy_percent; + } + } + + // Add memory usage events (for each memory type supported: VRAM, GTT) + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + // VRAM (type 0) + uint64_t total=0, used=0; + if (amdsmi_get_gpu_memory_total_p(ph, AMDSMI_MEM_TYPE_VRAM, &total) == AMDSMI_STATUS_SUCCESS && + amdsmi_get_gpu_memory_usage_p(ph, AMDSMI_MEM_TYPE_VRAM, &used) == AMDSMI_STATUS_SUCCESS) { + ntv_event_t *ev_total = &ntv_table.events[event_index++]; + ev_total->id = event_index-1; + ev_total->device = dev; + ev_total->variant = AMDSMI_MEM_TYPE_VRAM; + ev_total->subvariant = 0; + ev_total->writable = 0; + snprintf(ev_total->name, sizeof(ev_total->name), "mem_total_VRAM:device=%d", dev); + snprintf(ev_total->descr, sizeof(ev_total->descr), "GPU %d total VRAM bytes", dev); + ev_total->open_func_p = open_simple; + ev_total->close_func_p = close_simple; + ev_total->start_func_p = start_simple; + ev_total->stop_func_p = stop_simple; + ev_total->access_func_p = access_memory_total; + ntv_event_t *ev_used = &ntv_table.events[event_index++]; + ev_used->id = event_index-1; + ev_used->device = dev; + ev_used->variant = AMDSMI_MEM_TYPE_VRAM; + ev_used->subvariant = 1; // use subvariant=1 to denote "used" + ev_used->writable = 0; + snprintf(ev_used->name, sizeof(ev_used->name), "mem_used_VRAM:device=%d", dev); + snprintf(ev_used->descr, sizeof(ev_used->descr), "GPU %d used VRAM bytes", dev); + ev_used->open_func_p = open_simple; + ev_used->close_func_p = close_simple; + ev_used->start_func_p = start_simple; + ev_used->stop_func_p = stop_simple; + ev_used->access_func_p = access_memory_usage; + } + // GTT (type 1 - if applicable) + if (amdsmi_get_gpu_memory_total_p(ph, AMDSMI_MEM_TYPE_GTT, &total) == AMDSMI_STATUS_SUCCESS && + amdsmi_get_gpu_memory_usage_p(ph, AMDSMI_MEM_TYPE_GTT, &used) == AMDSMI_STATUS_SUCCESS) { + ntv_event_t *ev_total = &ntv_table.events[event_index++]; + ev_total->id = event_index-1; + ev_total->device = dev; + ev_total->variant = AMDSMI_MEM_TYPE_GTT; + ev_total->subvariant = 0; + ev_total->writable = 0; + snprintf(ev_total->name, sizeof(ev_total->name), "mem_total_GTT:device=%d", dev); + snprintf(ev_total->descr, sizeof(ev_total->descr), "GPU %d total GTT memory bytes", dev); + ev_total->open_func_p = open_simple; + ev_total->close_func_p = close_simple; + ev_total->start_func_p = start_simple; + ev_total->stop_func_p = stop_simple; + ev_total->access_func_p = access_memory_total; + ntv_event_t *ev_used = &ntv_table.events[event_index++]; + ev_used->id = event_index-1; + ev_used->device = dev; + ev_used->variant = AMDSMI_MEM_TYPE_GTT; + ev_used->subvariant = 1; + ev_used->writable = 0; + snprintf(ev_used->name, sizeof(ev_used->name), "mem_used_GTT:device=%d", dev); + snprintf(ev_used->descr, sizeof(ev_used->descr), "GPU %d used GTT memory bytes", dev); + ev_used->open_func_p = open_simple; + ev_used->close_func_p = close_simple; + ev_used->start_func_p = start_simple; + ev_used->stop_func_p = stop_simple; + ev_used->access_func_p = access_memory_usage; + } + } + + // Add XGMI performance counter events (if supported by devices) + for (int dev = 0; dev < device_count; ++dev) { + amdsmi_processor_handle ph = device_table[dev].handle; + // Check if XGMI event group is supported + if (amdsmi_dev_counter_group_supported_p && + amdsmi_dev_counter_group_supported_p(ph, AMDSMI_EVNT_GRP_XGMI) == AMDSMI_STATUS_SUCCESS) { + // Query available counters for XGMI + uint32_t available = 0; + if (amdsmi_counter_available_counters_get_p) { + amdsmi_counter_available_counters_get_p(ph, AMDSMI_EVNT_GRP_XGMI, &available); + } + // Add events for XGMI throughput per link (Data Out events) + // Assume event types AMDSMI_EVNT_XGMI_DATA_OUT_n for n=0..N-1 links + for (uint32_t link = 0; link < AMDSMI_MAX_NUM_XGMI_LINKS; ++link) { + amdsmi_event_type_t ev_type = (amdsmi_event_type_t)(AMDSMI_EVNT_XGMI_DATA_OUT_0 + link); + // Try to create a counter to see if event exists + amdsmi_event_handle_t evt_handle; + if (amdsmi_gpu_create_counter_p(ph, ev_type, &evt_handle) != AMDSMI_STATUS_SUCCESS) { + continue; + } + // Immediately destroy (we will recreate on open) + amdsmi_gpu_destroy_counter_p(evt_handle); + // Add event + ntv_event_t *ev = &ntv_table.events[event_index++]; + ev->id = event_index-1; + ev->device = dev; + ev->variant = ev_type; + ev->subvariant = link; + ev->writable = 0; + snprintf(ev->name, sizeof(ev->name), "xgmi_data_out_link%d:device=%d", link, dev); + snprintf(ev->descr, sizeof(ev->descr), "GPU %d XGMI outbound data (32-byte beats) on link %d", dev, link); + ev->open_func_p = open_xgmi_event; + ev->close_func_p = close_xgmi_event; + ev->start_func_p = start_xgmi_event; + ev->stop_func_p = stop_xgmi_event; + ev->access_func_p = access_xgmi_counter; + } + } + } + + ntv_table.count = event_index; + return PAPI_OK; +} + +// Shutdown event table and free all events +int shutdown_event_table(void) { + if (ntv_table.events) { + papi_free(ntv_table.events); + ntv_table.events = NULL; + } + ntv_table.count = 0; + return PAPI_OK; +} + +// Acquire devices for an event set (avoid conflicts if needed) ? stub for now +static int acquire_devices(unsigned int *events, int num, int32_t *mask_out) { + // For simplicity, allow all devices (no conflict resolution implemented here). + (void)events; (void)num; + *mask_out = -1; + return PAPI_OK; +} + +// Release device mask ? stub +static int release_devices(int32_t *mask) { + (void)mask; + return PAPI_OK; +} + +// Context open: allocate context struct and open each event (if needed) +int amdsmi_ctx_open(unsigned int *events_id, int num_events, amdsmi_ctx_t *ctx_out) { + int papi_errno = PAPI_OK; + _papi_hwi_lock(_amd_smi_lock); + // Prevent simultaneous use of same device if needed + int32_t device_mask; + if (acquire_devices(events_id, num_events, &device_mask) != PAPI_OK) { + papi_errno = PAPI_ECNFLCT; + goto fn_fail; + } + // Allocate context struct + *ctx_out = (amdsmi_ctx_t) papi_calloc(1, sizeof(struct amdsmi_ctx)); + if (*ctx_out == NULL) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; + } + // Allocate counters array + long long *counters = (long long *) papi_calloc(num_events, sizeof(long long)); + if (!counters) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; + } + // Open each event if it has an open_func (for counters) + for (int i = 0; i < num_events; ++i) { + int id = events_id[i]; + papi_errno = ntv_table_p->events[id].open_func_p(&ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + goto fn_fail; + } + } + (*ctx_out)->state |= AMDSMI_EVENTS_OPENED; + (*ctx_out)->events_id = events_id; + (*ctx_out)->num_events = num_events; + (*ctx_out)->counters = counters; + (*ctx_out)->device_mask = device_mask; +fn_exit: + _papi_hwi_unlock(_amd_smi_lock); + return papi_errno; +fn_fail: + // Cleanup partially opened events + for (int j = 0; j < num_events; ++j) { + if (j >= 0) { + int id = events_id[j]; + ntv_table_p->events[id].close_func_p(&ntv_table_p->events[id]); + } + } + if (counters) papi_free(counters); + if (*ctx_out) papi_free(*ctx_out); + *ctx_out = NULL; + goto fn_exit; +} + +// Close context: close events and free context struct +int amdsmi_ctx_close(amdsmi_ctx_t ctx) { + int papi_errno = PAPI_OK; + _papi_hwi_lock(_amd_smi_lock); + // Close each event (destroy counters if needed) + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + amdsmi_status_t status = ntv_table_p->events[id].close_func_p(&ntv_table_p->events[id]); + (void)status; // ignore errors on close + } + release_devices(&ctx->device_mask); + papi_free(ctx->counters); + papi_free(ctx); + _papi_hwi_unlock(_amd_smi_lock); + return papi_errno; +} + +// Start counting: start all events that require starting (counters) +int amdsmi_ctx_start(amdsmi_ctx_t ctx) { + int papi_errno = PAPI_OK; + // For each event, call start_func (for static metrics, does nothing; for counters, starts them) + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].start_func_p(&ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + } + ctx->state |= AMDSMI_EVENTS_RUNNING; + return PAPI_OK; +} + +// Stop counting: stop all events (for counters) +int amdsmi_ctx_stop(amdsmi_ctx_t ctx) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].stop_func_p(&ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + } + ctx->state &= ~AMDSMI_EVENTS_RUNNING; + return PAPI_OK; +} + +// Read counters: for each event, if needed call access_func (read mode) and collect value +int amdsmi_ctx_read(amdsmi_ctx_t ctx, long long **counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + // access in READ mode populates event->value + papi_errno = ntv_table_p->events[id].access_func_p(AMDSMI_MODE_READ, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + ctx->counters[i] = ntv_table_p->events[id].value; + } + *counts = (long long *) ctx->counters; + return papi_errno; +} + +// Write counters: set provided values to events (for controllable events) +int amdsmi_ctx_write(amdsmi_ctx_t ctx, long long *counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + ntv_table_p->events[id].value = counts[i]; + papi_errno = ntv_table_p->events[id].access_func_p(AMDSMI_MODE_WRITE, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + } + return papi_errno; +} + +// Reset counters: set all values to 0 +int amdsmi_ctx_reset(amdsmi_ctx_t ctx) { + for (int i = 0; i < ctx->num_events; ++i) { + int id = ctx->events_id[i]; + ntv_table_p->events[id].value = 0; + ctx->counters[i] = 0; + } + return PAPI_OK; +} + +// Native event enumeration interface for PAPI +int amdsmi_evt_enum(unsigned int *event_code, int modifier) { + if (modifier == PAPI_ENUM_FIRST) { + if (ntv_table.count == 0) return PAPI_ENOEVNT; + *event_code = 0; + return PAPI_OK; + } else if (modifier == PAPI_ENUM_EVENTS) { + if (*event_code < (unsigned int)(ntv_table.count - 1)) { + (*event_code)++; + return PAPI_OK; + } else { + return PAPI_ENOEVNT; + } + } + return PAPI_EINVAL; +} + +int amdsmi_evt_code_to_name(unsigned int event_code, char *name, int len) { + if (event_code >= (unsigned int) ntv_table.count) return PAPI_EINVAL; + strncpy(name, ntv_table.events[event_code].name, len); + return PAPI_OK; +} + +int amdsmi_evt_code_to_descr(unsigned int event_code, char *descr, int len) { + if (event_code >= (unsigned int) ntv_table.count) return PAPI_EINVAL; + strncpy(descr, ntv_table.events[event_code].descr, len); + return PAPI_OK; +} + +int amdsmi_evt_name_to_code(const char *name, unsigned int *event_code) { + // Simple linear search by name + for (int i = 0; i < ntv_table.count; ++i) { + if (strcmp(name, ntv_table.events[i].name) == 0) { + *event_code = ntv_table.events[i].id; + return PAPI_OK; + } + } + return PAPI_ENOEVNT; +} + +// Helper to get metric name strings (for formatting) +const char* amdsmi_temp_metric_name(amdsmi_temperature_metric_t metric) { + switch (metric) { + case AMDSMI_TEMP_CURRENT: return "current"; + case AMDSMI_TEMP_MAX: return "max"; + case AMDSMI_TEMP_MIN: return "min"; + case AMDSMI_TEMP_MAX_HYST: return "max_hyst"; + case AMDSMI_TEMP_MIN_HYST: return "min_hyst"; + case AMDSMI_TEMP_CRITICAL: return "critical"; + case AMDSMI_TEMP_CRITICAL_HYST: return "critical_hyst"; + case AMDSMI_TEMP_EMERGENCY: return "emergency"; + case AMDSMI_TEMP_EMERGENCY_HYST: return "emergency_hyst"; + case AMDSMI_TEMP_CRIT_MIN: return "crit_min"; + case AMDSMI_TEMP_CRIT_MIN_HYST: return "crit_min_hyst"; + case AMDSMI_TEMP_OFFSET: return "offset"; + case AMDSMI_TEMP_LOWEST: return "lowest"; + case AMDSMI_TEMP_HIGHEST: return "highest"; + case AMDSMI_TEMP_SHUTDOWN: return "shutdown"; + default: return "unknown"; + } +} +const char* amdsmi_temp_metric_desc(amdsmi_temperature_metric_t metric) { + switch (metric) { + case AMDSMI_TEMP_CURRENT: return "Current Temperature"; + case AMDSMI_TEMP_MAX: return "Max Observed Temperature"; + case AMDSMI_TEMP_MIN: return "Min Observed Temperature"; + case AMDSMI_TEMP_MAX_HYST: return "Max Temperature Hysteresis"; + case AMDSMI_TEMP_MIN_HYST: return "Min Temperature Hysteresis"; + case AMDSMI_TEMP_CRITICAL: return "Critical Temperature Threshold"; + case AMDSMI_TEMP_CRITICAL_HYST: return "Critical Temp Hysteresis"; + case AMDSMI_TEMP_EMERGENCY: return "Emergency Temperature"; + case AMDSMI_TEMP_EMERGENCY_HYST: return "Emergency Temp Hysteresis"; + case AMDSMI_TEMP_CRIT_MIN: return "Critical Min Temperature"; + case AMDSMI_TEMP_CRIT_MIN_HYST: return "Critical Min Temp Hysteresis"; + case AMDSMI_TEMP_OFFSET: return "Temperature Offset"; + case AMDSMI_TEMP_LOWEST: return "Lowest Historical Temperature"; + case AMDSMI_TEMP_HIGHEST: return "Highest Historical Temperature"; + case AMDSMI_TEMP_SHUTDOWN: return "Shutdown Temperature"; + default: return "Unknown Temperature Metric"; + } +} +const char* amdsmi_volt_metric_name(amdsmi_voltage_metric_t metric) { + switch (metric) { + case AMDSMI_VOLT_CURRENT: return "current"; + case AMDSMI_VOLT_MAX: return "max"; + case AMDSMI_VOLT_MIN_CRIT: return "min_crit"; + case AMDSMI_VOLT_MIN: return "min"; + case AMDSMI_VOLT_MAX_CRIT: return "max_crit"; + case AMDSMI_VOLT_AVERAGE: return "average"; + case AMDSMI_VOLT_LOWEST: return "lowest"; + case AMDSMI_VOLT_HIGHEST: return "highest"; + default: return "unknown"; + } +} +const char* amdsmi_volt_metric_desc(amdsmi_voltage_metric_t metric) { + switch (metric) { + case AMDSMI_VOLT_CURRENT: return "Current Voltage"; + case AMDSMI_VOLT_MAX: return "Max Voltage"; + case AMDSMI_VOLT_MIN_CRIT: return "Critical Min Voltage"; + case AMDSMI_VOLT_MIN: return "Min Voltage"; + case AMDSMI_VOLT_MAX_CRIT: return "Critical Max Voltage"; + case AMDSMI_VOLT_AVERAGE: return "Average Voltage"; + case AMDSMI_VOLT_LOWEST: return "Lowest Voltage"; + case AMDSMI_VOLT_HIGHEST: return "Highest Voltage"; + default: return "Unknown Voltage Metric"; + } +} + +// Access functions: perform the actual read or write for each event type +static int access_temp_metric(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + int64_t temp = 0; + amdsmi_status_t status = amdsmi_get_temp_metric_p(ph, + (amdsmi_temperature_type_t)event->subvariant, + (amdsmi_temperature_metric_t)event->variant, + &temp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + // The temperature is in millidegrees Celsius; convert to millideg or deg as needed. + event->value = (long long) temp; + } else if (mode == AMDSMI_MODE_WRITE) { + // No write available for temperature metrics + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_volt_metric(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + int64_t volt = 0; + amdsmi_status_t status = amdsmi_get_gpu_volt_metric_p(ph, + (amdsmi_voltage_type_t)event->subvariant, + (amdsmi_voltage_metric_t)event->variant, + &volt); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) volt; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_busy_percent(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + uint32_t busy = 0; + if (amdsmi_get_gpu_busy_percent_p(ph, &busy) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) busy; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_memory_total(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + uint64_t total = 0; + if (amdsmi_get_gpu_memory_total_p(ph, (amdsmi_memory_type_t)event->variant, &total) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) total; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_memory_usage(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + uint64_t used = 0; + if (amdsmi_get_gpu_memory_usage_p(ph, (amdsmi_memory_type_t)event->variant, &used) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) used; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_fan_rpms(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + int64_t rpm = 0; + if (amdsmi_get_gpu_fan_rpms_p(ph, 0, &rpm) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) rpm; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_fan_speed(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + int64_t speed = 0; + if (amdsmi_get_gpu_fan_speed_p(ph, 0, &speed) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) speed; + } else if (mode == AMDSMI_MODE_WRITE) { + // Write desired fan speed (requires root privileges and sensor index 0) + uint64_t new_speed = (uint64_t) event->value; + if (amdsmi_set_gpu_fan_speed_p(ph, 0, new_speed) != AMDSMI_STATUS_SUCCESS) { + return PAPI_EPERM; + } + } + return PAPI_OK; +} + +static int access_fan_speed_max(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + uint64_t max_speed = 0; + if (amdsmi_get_gpu_fan_speed_max_p(ph, 0, &max_speed) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + event->value = (long long) max_speed; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +static int access_power_info(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + if (mode == AMDSMI_MODE_READ) { + amdsmi_power_info_t info; + if (amdsmi_get_gpu_power_info_p(ph, 0, &info) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + if (event->variant == 0) { + // current power in W (Linux) + event->value = (long long) info.current_socket_power; + } else if (event->variant == 1) { + event->value = (long long) info.average_socket_power; + } else if (event->variant == 2) { + event->value = (long long) info.gfx_voltage; + } else { + return PAPI_EINVAL; + } + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +// XGMI performance counter events access +static int open_xgmi_event(void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_processor_handle ph = device_table[event->device].handle; + amdsmi_event_handle_t evt_handle; + amdsmi_status_t status = amdsmi_gpu_create_counter_p(ph, (amdsmi_event_type_t)event->variant, &evt_handle); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + // Store event handle in scratch space + *((amdsmi_event_handle_t *) event->scratch) = evt_handle; + return PAPI_OK; +} +static int close_xgmi_event(void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); + if (evt_handle) { + amdsmi_gpu_destroy_counter_p(evt_handle); + *((amdsmi_event_handle_t *) event->scratch) = 0; + } + return PAPI_OK; +} +static int start_xgmi_event(void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); + if (evt_handle) { + if (amdsmi_gpu_control_counter_p(evt_handle, AMDSMI_CNTR_CMD_START, NULL) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + } + return PAPI_OK; +} +static int stop_xgmi_event(void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); + if (evt_handle) { + if (amdsmi_gpu_control_counter_p(evt_handle, AMDSMI_CNTR_CMD_STOP, NULL) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + } + return PAPI_OK; +} +static int access_xgmi_counter(amdsmi_access_mode_t mode, void *event_ptr) { + ntv_event_t *event = (ntv_event_t *) event_ptr; + if (mode == AMDSMI_MODE_READ) { + amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); + if (!evt_handle) return PAPI_ECMP; + amdsmi_counter_value_t cv; + if (amdsmi_gpu_read_counter_p(evt_handle, &cv) != AMDSMI_STATUS_SUCCESS) { + return PAPI_ECMP; + } + // The counter value (cv.value) is number of beats (each 32 bytes). Use that as value. + event->value = (long long) cv.value; + } else { + return PAPI_ENOEVNT; + } + return PAPI_OK; +} + +// Access XGMI bandwidth (if any events provided; e.g., total throughput if needed) ? not implemented here +static int access_xgmi_bw(amdsmi_access_mode_t mode, void *event_ptr) { + (void)mode; (void)event_ptr; + return PAPI_ENOEVNT; +} diff --git a/src/components/amd_smi/amds.h b/src/components/amd_smi/amds.h new file mode 100644 index 000000000..8865e16a8 --- /dev/null +++ b/src/components/amd_smi/amds.h @@ -0,0 +1,186 @@ +//----------------------------------------------------------------------------- +// @file amdsmi.h +// +// @brief Header for AMD SMI PAPI component. Defines structures and function +// prototypes used by linux-amd-smi.c and amdsmi.c. +//----------------------------------------------------------------------------- + +#ifndef PAPI_AMDSMI_H +#define PAPI_AMDSMI_H + +#include + +// AMD SMI handle types (opaque handles to sockets and processors) +typedef uint32_t amdsmi_socket_handle; +typedef uint32_t amdsmi_processor_handle; + +// AMD SMI status code +typedef int32_t amdsmi_status_t; +#define AMDSMI_STATUS_SUCCESS 0 + +// Initialization flags +#define AMDSMI_INIT_AMD_GPUS (1 << 1) +#define AMDSMI_INIT_AMD_CPUS (1 << 0) // not used in this component + +// Temperature sensor types (see AMD SMI API) +typedef enum { + AMDSMI_TEMPERATURE_TYPE_FIRST = 0, + AMDSMI_TEMPERATURE_TYPE_EDGE = 0, + AMDSMI_TEMPERATURE_TYPE_HOTSPOT = 1, + AMDSMI_TEMPERATURE_TYPE_JUNCTION = 1, // alias + AMDSMI_TEMPERATURE_TYPE_VRAM = 2, + AMDSMI_TEMPERATURE_TYPE_HBM_0 = 3, + AMDSMI_TEMPERATURE_TYPE_HBM_1 = 4, + AMDSMI_TEMPERATURE_TYPE_HBM_2 = 5, + AMDSMI_TEMPERATURE_TYPE_HBM_3 = 6, + AMDSMI_TEMPERATURE_TYPE_PLX = 7, + AMDSMI_TEMPERATURE_TYPE__MAX = AMDSMI_TEMPERATURE_TYPE_PLX +} amdsmi_temperature_type_t; + +// Temperature metric types +typedef enum { + AMDSMI_TEMP_CURRENT = 0, + AMDSMI_TEMP_FIRST = AMDSMI_TEMP_CURRENT, + AMDSMI_TEMP_MAX, + AMDSMI_TEMP_MIN, + AMDSMI_TEMP_MAX_HYST, + AMDSMI_TEMP_MIN_HYST, + AMDSMI_TEMP_CRITICAL, + AMDSMI_TEMP_CRITICAL_HYST, + AMDSMI_TEMP_EMERGENCY, + AMDSMI_TEMP_EMERGENCY_HYST, + AMDSMI_TEMP_CRIT_MIN, + AMDSMI_TEMP_CRIT_MIN_HYST, + AMDSMI_TEMP_OFFSET, + AMDSMI_TEMP_LOWEST, + AMDSMI_TEMP_HIGHEST, + AMDSMI_TEMP_SHUTDOWN, + AMDSMI_TEMP_LAST = AMDSMI_TEMP_SHUTDOWN +} amdsmi_temperature_metric_t; + +// Voltage sensor types (for GPU, only VDDGFX is applicable) +typedef enum { + AMDSMI_VOLT_TYPE_FIRST = 0, + AMDSMI_VOLT_TYPE_VDDGFX = 0, + AMDSMI_VOLT_TYPE_LAST = AMDSMI_VOLT_TYPE_VDDGFX +} amdsmi_voltage_type_t; + +// Voltage metric types +typedef enum { + AMDSMI_VOLT_CURRENT = 0, + AMDSMI_VOLT_FIRST = AMDSMI_VOLT_CURRENT, + AMDSMI_VOLT_MAX, + AMDSMI_VOLT_MIN_CRIT, + AMDSMI_VOLT_MIN, + AMDSMI_VOLT_MAX_CRIT, + AMDSMI_VOLT_AVERAGE, + AMDSMI_VOLT_LOWEST, + AMDSMI_VOLT_HIGHEST, + AMDSMI_VOLT_LAST = AMDSMI_VOLT_HIGHEST +} amdsmi_voltage_metric_t; + +// Memory types for GPU memory queries +typedef enum { + AMDSMI_MEM_TYPE_VRAM = 0, + AMDSMI_MEM_TYPE_VIS_VRAM = 1, // visible VRAM (aperture) + AMDSMI_MEM_TYPE_GTT = 2 // GTT (system memory) +} amdsmi_memory_type_t; + +// Clock types (for amdsmi_get_clk_freq) +typedef enum { + AMDSMI_CLK_TYPE_SYS = 0, + AMDSMI_CLK_TYPE_FIRST = AMDSMI_CLK_TYPE_SYS, + AMDSMI_CLK_TYPE_GFX = AMDSMI_CLK_TYPE_SYS, // alias + AMDSMI_CLK_TYPE_DF, + AMDSMI_CLK_TYPE_DCEF, + AMDSMI_CLK_TYPE_SOC, + AMDSMI_CLK_TYPE_MEM, + AMDSMI_CLK_TYPE_PCIE, + AMDSMI_CLK_TYPE_VCLK0, + AMDSMI_CLK_TYPE_VCLK1, + AMDSMI_CLK_TYPE_DCLK0, + AMDSMI_CLK_TYPE_DCLK1, + AMDSMI_CLK_TYPE__MAX = AMDSMI_CLK_TYPE_DCLK1 +} amdsmi_clk_type_t; + +// AMD SMI structures for power info +typedef struct { + // On Linux bare-metal: + uint32_t current_socket_power; // Current power (W) + uint32_t average_socket_power; // Average power (W) + uint32_t gfx_voltage; // GFX voltage (mV) + uint32_t power_limit; // Power limit (W) + uint32_t reserved[2]; +} amdsmi_power_info_t; + +// GPU clock frequencies structure +#define AMDSMI_MAX_NUM_FREQUENCIES 64 +typedef struct { + uint32_t num_supported; + uint32_t current; // index of current frequency or current frequency value (Hz) + uint64_t frequency[AMDSMI_MAX_NUM_FREQUENCIES]; +} amdsmi_frequencies_t; + +// Performance counter event groups and types (for XGMI) +typedef enum { + AMDSMI_EVNT_GRP_XGMI = 0, + // For simplicity, use event group code directly as in AMD SMI + AMDSMI_EVNT_GRP_XGMI_DATA_OUT = 10 +} amdsmi_event_group_t; +typedef uint32_t amdsmi_event_type_t; +#define AMDSMI_EVNT_XGMI_DATA_OUT_0 ((amdsmi_event_type_t)0) // assume continuous range for link events + +// Performance counter handle and value +typedef uint64_t amdsmi_event_handle_t; +typedef enum { + AMDSMI_CNTR_CMD_START = 0, + AMDSMI_CNTR_CMD_STOP +} amdsmi_counter_command_t; +typedef struct { + uint64_t value; + uint64_t time_enabled; + uint64_t time_running; +} amdsmi_counter_value_t; + +// Internal access mode +typedef enum { + AMDSMI_MODE_READ, + AMDSMI_MODE_WRITE +} amdsmi_access_mode_t; + +// Internal context for an open EventSet (structure defined in amdsmi.c) +struct amdsmi_ctx { + unsigned int *events_id; + int num_events; + long long *counters; + int32_t device_mask; + int state; +}; +typedef struct amdsmi_ctx* amdsmi_ctx_t; + +// Public API functions provided by amdsmi.c +int amdsmi_init(void); +int amdsmi_shutdown(void); +int amdsmi_err_get_last(const char **err_string); + +// Context management +int amdsmi_ctx_open(unsigned int *events_id, int num_events, amdsmi_ctx_t *ctx); +int amdsmi_ctx_close(amdsmi_ctx_t ctx); +int amdsmi_ctx_start(amdsmi_ctx_t ctx); +int amdsmi_ctx_stop(amdsmi_ctx_t ctx); +int amdsmi_ctx_read(amdsmi_ctx_t ctx, long long **values); +int amdsmi_ctx_write(amdsmi_ctx_t ctx, long long *values); +int amdsmi_ctx_reset(amdsmi_ctx_t ctx); + +// Native event enumeration and name/description mapping +int amdsmi_evt_enum(unsigned int *event_code, int modifier); +int amdsmi_evt_code_to_name(unsigned int event_code, char *name, int len); +int amdsmi_evt_code_to_descr(unsigned int event_code, char *descr, int len); +int amdsmi_evt_name_to_code(const char *name, unsigned int *event_code); + +// Internal event table management +int init_event_table(void); +int shutdown_event_table(void); + +// Utility to get last error (internal) +#endif // PAPI_AMDSMI_H diff --git a/src/components/amd_smi/htable.c b/src/components/amd_smi/htable.c new file mode 100644 index 000000000..3240f2a9c --- /dev/null +++ b/src/components/amd_smi/htable.c @@ -0,0 +1,416 @@ +/** + * @file htable.h + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ +#ifndef __HTABLE_H__ +#define __HTABLE_H__ +#include +#include +#include "papi.h" +#include "papi_internal.h" +#include "papi_memory.h" + +#define HTABLE_NEEDS_TO_GROW(table) (table->size > 0 && table->capacity / table->size < 2) +#define HTABLE_NEEDS_TO_SHRINK(table) (table->size > 0 && table->capacity / table->size > 8) + +#define HTABLE_SUCCESS ( 0) +#define HTABLE_ENOVAL (-1) +#define HTABLE_EINVAL (-2) +#define HTABLE_ENOMEM (-3) + +struct hash_table_entry { + char *key; + void *val; + struct hash_table_entry *next; +}; + +struct hash_table { + uint32_t capacity; + uint32_t size; + struct hash_table_entry **buckets; +}; + +static uint64_t hash_func(const char *); + +static int create_table(uint64_t, struct hash_table **); +static int destroy_table(struct hash_table *); +static int rehash_table(struct hash_table *, struct hash_table *); +static int move_table(struct hash_table *, struct hash_table *); +static int check_n_resize_table(struct hash_table *); +static int destroy_table_entries(struct hash_table *); + +static int create_table_entry(const char *, void *, + struct hash_table_entry **); +static int destroy_table_entry(struct hash_table_entry *); +static int insert_table_entry(struct hash_table *, struct hash_table_entry *); +static int delete_table_entry(struct hash_table *, struct hash_table_entry *); +static int find_table_entry(struct hash_table *, const char *, + struct hash_table_entry **); + +static inline int +htable_init(void **handle) +{ + int htable_errno = HTABLE_SUCCESS; + +#define HTABLE_MIN_SIZE (8) + struct hash_table *table = NULL; + htable_errno = create_table(HTABLE_MIN_SIZE, &table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + *handle = table; + + fn_exit: + return htable_errno; + fn_fail: + *handle = NULL; + goto fn_exit; +} + +static inline int +htable_shutdown(void *handle) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL) { + return HTABLE_EINVAL; + } + + destroy_table_entries(table); + destroy_table(table); + + return htable_errno; +} + +static inline int +htable_insert(void *handle, const char *key, void *in) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno == HTABLE_SUCCESS) { + entry->val = in; + goto fn_exit; + } + + htable_errno = create_table_entry(key, in, &entry); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = insert_table_entry(table, entry); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = check_n_resize_table(table); + + fn_exit: + return htable_errno; + fn_fail: + if (entry) { + papi_free(entry); + } + goto fn_exit; +} + +static inline int +htable_delete(void *handle, const char *key) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + entry->val = NULL; + + htable_errno = delete_table_entry(table, entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + htable_errno = destroy_table_entry(entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + return check_n_resize_table(table); +} + +static inline int +htable_find(void *handle, const char *key, void **out) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL || out == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + *out = entry->val; + return htable_errno; +} + +/** + * djb2 hash function + */ +uint64_t +hash_func(const char *string) +{ + uint64_t hash = 5381; + int c; + while ((c = *string++)) { + hash = ((hash << 5) + hash) + c; + } + return hash; +} + +int +create_table(uint64_t size, struct hash_table **table) +{ + int htable_errno = HTABLE_SUCCESS; + + *table = papi_calloc(1, sizeof(**table)); + if (table == NULL) { + htable_errno = HTABLE_ENOMEM; + goto fn_exit; + } + + (*table)->buckets = papi_calloc(size, sizeof(*(*table)->buckets)); + if ((*table)->buckets == NULL) { + htable_errno = HTABLE_ENOMEM; + goto fn_exit; + } + + (*table)->capacity = size; + + fn_exit: + return htable_errno; +} + +int +destroy_table(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + + if (table && table->buckets) { + papi_free(table->buckets); + } + + if (table) { + papi_free(table); + } + + return htable_errno; +} + +int +rehash_table(struct hash_table *old_table, struct hash_table *new_table) +{ + uint64_t old_id; + for (old_id = 0; old_id < old_table->capacity; ++old_id) { + struct hash_table_entry *entry = old_table->buckets[old_id]; + struct hash_table_entry *next; + while (entry) { + next = entry->next; + delete_table_entry(old_table, entry); + insert_table_entry(new_table, entry); + entry = next; + } + } + + return HTABLE_SUCCESS; +} + +int +move_table(struct hash_table *new_table, struct hash_table *old_table) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table_entry **old_buckets = old_table->buckets; + + old_table->capacity = new_table->capacity; + old_table->size = new_table->size; + old_table->buckets = new_table->buckets; + new_table->buckets = NULL; + papi_free(old_buckets); + + return htable_errno; +} + +int +destroy_table_entries(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + uint64_t i; + + for (i = 0; i < table->capacity; ++i) { + struct hash_table_entry *entry = table->buckets[i]; + struct hash_table_entry *tmp = NULL; + + while (entry) { + tmp = entry; + entry = entry->next; + delete_table_entry(table, tmp); + destroy_table_entry(tmp); + } + } + + return htable_errno; +} + +int +check_n_resize_table(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *new_table = NULL; + char resize = + (HTABLE_NEEDS_TO_GROW(table) << 1) | HTABLE_NEEDS_TO_SHRINK(table); + + if (resize) { + uint64_t new_capacity = (resize & 0x2) ? + table->capacity * 2 : table->capacity / 2; + htable_errno = create_table(new_capacity, &new_table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = rehash_table(table, new_table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + move_table(new_table, table); + destroy_table(new_table); + } + + fn_exit: + return htable_errno; + fn_fail: + if (new_table) { + destroy_table(new_table); + } + goto fn_exit; +} + +int +create_table_entry(const char *key, void *val, struct hash_table_entry **entry) +{ + int htable_errno = HTABLE_SUCCESS; + + *entry = papi_calloc(1, sizeof(**entry)); + if (*entry == NULL) { + return HTABLE_ENOMEM; + } + (*entry)->key = strdup(key); + (*entry)->val = val; + (*entry)->next = NULL; + + return htable_errno; +} + +int +destroy_table_entry(struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + papi_free(entry->key); + papi_free(entry); + return htable_errno; +} + +int +insert_table_entry(struct hash_table *table, struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + + uint64_t id = hash_func(entry->key) % table->capacity; + + if (table->buckets[id]) { + entry->next = table->buckets[id]; + } + + table->buckets[id] = entry; + ++table->size; + + return htable_errno; +} + +int +delete_table_entry(struct hash_table *table, struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + + uint64_t id = hash_func(entry->key) % table->capacity; + + if (table->buckets[id] == entry) { + table->buckets[id] = entry->next; + entry->next = NULL; + goto fn_exit; + } + + struct hash_table_entry *prev = table->buckets[id]; + struct hash_table_entry *curr = table->buckets[id]->next; + + while (curr) { + if (curr == entry) { + prev->next = curr->next; + curr->next = NULL; + break; + } + prev = prev->next; + curr = curr->next; + } + + fn_exit: + --table->size; + return htable_errno; +} + +int +find_table_entry(struct hash_table *table, const char *key, + struct hash_table_entry **entry) +{ + int htable_errno; + + uint64_t id = hash_func(key) % table->capacity; + struct hash_table_entry *head = table->buckets[id]; + if (head == NULL) { + htable_errno = HTABLE_ENOVAL; + goto fn_exit; + } + + struct hash_table_entry *curr = head; + while (curr && strcmp(curr->key, key)) { + curr = curr->next; + } + + *entry = curr; + htable_errno = (curr) ? HTABLE_SUCCESS : HTABLE_ENOVAL; + + fn_exit: + return htable_errno; +} +#endif /* End of __HTABLE_H__ */ diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c new file mode 100644 index 000000000..8429d0888 --- /dev/null +++ b/src/components/amd_smi/linux-amd-smi.c @@ -0,0 +1,345 @@ +//----------------------------------------------------------------------------- +// @file linux-amd-smi.c +// +// @brief PAPI component for AMD SMI (System Management Interface) on Linux. +// Bridges PAPI to AMD GPU monitoring via libamd_smi.so. +//----------------------------------------------------------------------------- +#include +#include +#include +#include + +#include "papi.h" +#include "papi_internal.h" +#include "papi_vector.h" +#include "papi_memory.h" +#include "extras.h" +#include "amd_smi/amdsmi.h" +#include "amds.h" + +// PAPI component context (per thread) +typedef struct { + int initialized; + int state; + int component_id; +} amdsmi_context_t; + +// PAPI component control state (per EventSet) +typedef struct { + unsigned int *events_id; // array of native event indices + int num_events; // number of events in the array + int component_id; + amdsmi_ctx_t amdsmi_ctx; // handle to internal AMD SMI context for the eventset +} amdsmi_control_t; + +// Lock for thread safety +extern unsigned int _amd_smi_lock; +papi_vector_t _amd_smi_vector; // exported to PAPI core + +// Forward declarations of component callbacks +static int _amd_smi_init_private(void); +static int _amd_smi_init_component(int cidx); +static int _amd_smi_init_thread(hwd_context_t *ctx); +static int _amd_smi_shutdown_component(void); +static int _amd_smi_shutdown_thread(hwd_context_t *ctx); +static int _amd_smi_init_control_state(hwd_control_state_t *ctrl); +static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, + int nativeCount, hwd_context_t *ctx); +static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl); +static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl); +static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags); +static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values); +static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl); +static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl); +static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option); +static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain); +static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier); +static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len); +static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *descr, int len); +static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode); + +// Helper to ensure component is initialized (calls _amd_smi_init_private on first use) +static int _amd_smi_check_n_initialize(void) { + if (!_amd_smi_vector.cmp_info.initialized) + return _amd_smi_init_private(); + return _amd_smi_vector.cmp_info.disabled; +} + +// Initialize per-thread context (called when a thread registers this component) +static int _amd_smi_init_thread(hwd_context_t *ctx) { + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + memset(amd_ctx, 0, sizeof(*amd_ctx)); + amd_ctx->initialized = 1; + amd_ctx->component_id = _amd_smi_vector.cmp_info.CmpIdx; + return PAPI_OK; +} + +// Initialize component (called when PAPI_library_init() or component is first used) +static int _amd_smi_init_component(int cidx) { + // Set component index and mark not initialized until first use + _amd_smi_vector.cmp_info.CmpIdx = cidx; + _amd_smi_vector.cmp_info.num_native_events = -1; + _amd_smi_vector.cmp_info.num_cntrs = -1; + _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; + + sprintf(_amd_smi_vector.cmp_info.disabled_reason, + "Not initialized. Access component events to initialize it."); + _amd_smi_vector.cmp_info.disabled = PAPI_EDELAY_INIT; + return PAPI_EDELAY_INIT; +} + +// Internal one-time initialization: load AMD SMI library and build event table +static int _amd_smi_init_private(void) { + int papi_errno = PAPI_OK; + PAPI_lock(COMPONENT_LOCK); + if (_amd_smi_vector.cmp_info.initialized) { + papi_errno = _amd_smi_vector.cmp_info.disabled; + goto fn_exit; + } + // Initialize AMD SMI component (load library, enumerate events) + papi_errno = amdsmi_init(); // calls dynamic loading and event table setup + if (papi_errno != PAPI_OK) { + // On failure, disable component with error code + _amd_smi_vector.cmp_info.disabled = papi_errno; + const char *error_str; + amdsmi_err_get_last(&error_str); // get last error string from amdsmi + snprintf(_amd_smi_vector.cmp_info.disabled_reason, PAPI_MAX_STR_LEN, "%s", error_str); + goto fn_exit; + } + // Set number of native events and counters from amdsmi + _amd_smi_vector.cmp_info.num_native_events = amdsmi_get_event_count(); + _amd_smi_vector.cmp_info.num_cntrs = _amd_smi_vector.cmp_info.num_native_events; + _amd_smi_vector.cmp_info.available_domains = PAPI_DOM_USER; + _amd_smi_vector.cmp_info.initialized = 1; + _amd_smi_vector.cmp_info.disabled = PAPI_OK; +fn_exit: + PAPI_unlock(COMPONENT_LOCK); + return papi_errno; +} + +// Initialize a new control state (EventSet) +static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + memset(ctl, 0, sizeof(*ctl)); + ctl->component_id = _amd_smi_vector.cmp_info.CmpIdx; + return PAPI_OK; +} + +// Update control state with a new list of events +static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, + int nativeCount, hwd_context_t *ctx) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) return papi_errno; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + amdsmi_context_t *tctx = (amdsmi_context_t *) ctx; + if (tctx->state & AMDSMI_EVENTS_RUNNING) { + // cannot update while running + return PAPI_EISRUN; + } + // Allocate and store native event codes + unsigned int *events = (unsigned int *) papi_calloc(nativeCount, sizeof(unsigned int)); + if (!events && nativeCount > 0) return PAPI_ENOMEM; + for (int i = 0; i < nativeCount; ++i) { + events[i] = nativeInfo[i].ni_event; + nativeInfo[i].ni_position = i; + } + // Free old event list and assign new + papi_free(ctl->events_id); + ctl->events_id = events; + ctl->num_events = nativeCount; + return PAPI_OK; +} + +// Start counting events in an EventSet +static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + int papi_errno = PAPI_OK; + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + if (amd_ctx->state & AMDSMI_EVENTS_OPENED) { + // events already opened, cannot start again without stop + return PAPI_EMISC; + } + // Open and initialize the AMD SMI event context + papi_errno = amdsmi_ctx_open(ctl->events_id, ctl->num_events, &ctl->amdsmi_ctx); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amd_ctx->state = AMDSMI_EVENTS_OPENED; + // Start the counters + papi_errno = amdsmi_ctx_start(ctl->amdsmi_ctx); + if (papi_errno != PAPI_OK) { + // failure: cleanup + amdsmi_ctx_close(ctl->amdsmi_ctx); + amd_ctx->state = 0; + return papi_errno; + } + amd_ctx->state |= AMDSMI_EVENTS_RUNNING; + return PAPI_OK; +} + +// Stop counting events and release resources for an EventSet +static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + int papi_errno = PAPI_OK; + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + // Stop counters + papi_errno = amdsmi_ctx_stop(ctl->amdsmi_ctx); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + // Mark not running + amd_ctx->state &= ~AMDSMI_EVENTS_RUNNING; + // Close and free context + papi_errno = amdsmi_ctx_close(ctl->amdsmi_ctx); + amd_ctx->state = 0; + ctl->amdsmi_ctx = NULL; + return papi_errno; +} + +// Read current values from events in EventSet +static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, + long long **values, int flags) { + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amdsmi_ctx_read(ctl->amdsmi_ctx, values); +} + +// Write values to controllable events (for events that support write) +static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amdsmi_ctx_write(ctl->amdsmi_ctx, values); +} + +// Reset events in an EventSet to initial state (zero counters, etc.) +static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amdsmi_ctx_reset(ctl->amdsmi_ctx); +} + +// Cleanup EventSet (after stop, free allocated event list) +static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { + amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; + // Context should have been closed in stop. Ensure it's NULL. + if (ctl->amdsmi_ctx != NULL) { + return PAPI_EMISC; + } + papi_free(ctl->events_id); + ctl->events_id = NULL; + ctl->num_events = 0; + return PAPI_OK; +} + +// Shutdown thread context +static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { + amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; + amd_ctx->state = 0; + amd_ctx->initialized = 0; + return PAPI_OK; +} + +// Shutdown entire component (cleanup global resources) +static int _amd_smi_shutdown_component(void) { + if (!_amd_smi_vector.cmp_info.initialized) { + return PAPI_EMISC; + } + if (_amd_smi_vector.cmp_info.disabled != PAPI_OK) { + // not successfully initialized + return PAPI_EMISC; + } + int papi_errno = amdsmi_shutdown(); + _amd_smi_vector.cmp_info.initialized = 0; + return papi_errno; +} + +// Ioctl/ctl interface (not used, no custom options) +static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) { + (void)ctx; (void)code; (void)option; + return PAPI_OK; +} + +// Set domain (User/Kernel, etc. - AMD SMI metrics are all user-space domain) +static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) { + (void)ctrl; + if (domain != PAPI_DOM_USER) { + return PAPI_EINVAL; + } + return PAPI_OK; +} + +// Enumerate native events +static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) { + return amdsmi_evt_enum(EventCode, modifier); +} + +// Convert event code to name string +static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) { + return amdsmi_evt_code_to_name(EventCode, name, len); +} + +// Convert event code to description string +static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *descr, int len) { + return amdsmi_evt_code_to_descr(EventCode, descr, len); +} + +// Lookup event code by name +static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) { + return amdsmi_evt_name_to_code(name, EventCode); +} + +// Define the component's function vector table +papi_vector_t _amd_smi_vector = { + .cmp_info = { + .name = "amd_smi", + .short_name = "amd_smi", + .version = "1.0", + .description = "AMD GPU System Management Interface via libamd_smi", + .default_domain = PAPI_DOM_USER, + .default_granularity = PAPI_GRN_THR, + .available_granularities = PAPI_GRN_THR, + .hardware_intr_sig = PAPI_INT_SIGNAL, + .fast_real_timer = 0, + .fast_virtual_timer = 0, + .attach = 0, + .attach_must_ptrace = 0, + .available_domains = PAPI_DOM_USER, + .initialized = 0, + }, + .size = { + .context = sizeof(amdsmi_context_t), + .control_state = sizeof(amdsmi_control_t), + .reg_value = 1, + .reg_alloc = 1, + }, + .start = _amd_smi_start, + .stop = _amd_smi_stop, + .read = _amd_smi_read, + .write = _amd_smi_write, + .reset = _amd_smi_reset, + .cleanup_eventset = _amd_smi_cleanup_eventset, + .init_component = _amd_smi_init_component, + .init_thread = _amd_smi_init_thread, + .init_control_state = _amd_smi_init_control_state, + .update_control_state = _amd_smi_update_control_state, + .ctl = _amd_smi_ctrl, + .set_domain = _amd_smi_set_domain, + .ntv_enum_events = _amd_smi_ntv_enum_events, + .ntv_code_to_name = _amd_smi_ntv_code_to_name, + .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, + .ntv_name_to_code = _amd_smi_ntv_name_to_code, + .shutdown_thread = _amd_smi_shutdown_thread, + .shutdown_component = _amd_smi_shutdown_component, +}; From 88fc12464509d1f39fdba65c368987c25c5b2d76 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 6 May 2025 04:22:48 +0000 Subject: [PATCH 002/147] configure --- src/configure | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/configure b/src/configure index c9141fedf..3b4d50a32 100755 --- a/src/configure +++ b/src/configure @@ -7010,6 +7010,10 @@ for comp in $components; do if test "x`find $PAPI_ROCMSMI_ROOT -name "rocm_smi.h"`" != "x" ; then CFLAGS="$CFLAGS -DHAVE_ROCM_SMI" fi + + if test "x`find $PAPI_AMDSMI_ROOT -name "amd_smi.h"`" != "x" ; then + CFLAGS="$CFLAGS -DHAVE_AMD_SMI" + fi fi done From 3d3323411fef17738da6d7cd271da101e83dfa79 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 6 May 2025 05:37:23 +0000 Subject: [PATCH 003/147] changes --- src/components/amd_smi/amds.c | 1839 ++++++++--------- src/components/amd_smi/amds.h | 203 +- src/components/amd_smi/{htable.c => htable.h} | 4 +- src/components/amd_smi/linux-amd-smi.c | 411 ++-- 4 files changed, 1154 insertions(+), 1303 deletions(-) rename src/components/amd_smi/{htable.c => htable.h} (95%) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 941eb28c5..efcb6475e 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,787 +1,494 @@ -//----------------------------------------------------------------------------- -// @file amdsmi.c -// -// @brief Core implementation of AMD SMI PAPI component. -// Handles dynamic loading of libamd_smi.so and mapping its functions -// to PAPI events (native events enumeration, read/write functions, etc.). -//----------------------------------------------------------------------------- - -#include -#include -#include #include -#include +#include +#include +#include +#include #include "papi.h" -#include "amd_smi/amdsmi.h" +#include "papi_memory.h" #include "amds.h" +#include "htable.h" -// AMD SMI library function pointers (dynamically loaded) -static void *amdsmi_dlp = NULL; // handle for dlopen +unsigned int _amd_smi_lock; -// AMD SMI core functions -static amdsmi_status_t (*amdsmi_init_p)(uint64_t init_flags) = NULL; -static amdsmi_status_t (*amdsmi_shut_down_p)(void) = NULL; -static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *count, amdsmi_socket_handle *handles) = NULL; -static amdsmi_status_t (*amdsmi_get_processor_handles_p)(amdsmi_socket_handle socket, uint32_t *count, amdsmi_processor_handle *handles) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_name_p)(amdsmi_processor_handle, char *name, size_t len) = NULL; // optional for descriptions +typedef enum { + PAPI_MODE_READ = 1, + PAPI_MODE_WRITE, + PAPI_MODE_RDWR, +} rocs_access_mode_e; -// Temperature, power, fan, clock, etc. monitoring functions -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *temperature) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *voltage) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_busy_percent_p)(amdsmi_processor_handle, uint32_t *busy_percent) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_memory_total_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *total) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *used) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t sensor, int64_t *speed) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t sensor, int64_t *speed) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t sensor, uint64_t *max_speed) = NULL; -static amdsmi_status_t (*amdsmi_set_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t sensor, uint64_t speed) = NULL; -static amdsmi_status_t (*amdsmi_reset_gpu_fan_p)(amdsmi_processor_handle, uint32_t sensor) = NULL; -static amdsmi_status_t (*amdsmi_get_gpu_power_info_p)(amdsmi_processor_handle, uint32_t sensor, amdsmi_power_info_t *info) = NULL; -static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *f) = NULL; +/* Pointers to AMD SMI library functions (dynamically loaded) */ +static amdsmi_status_t (*amdsmi_init_p)(uint64_t); +static amdsmi_status_t (*amdsmi_shut_down_p)(void); +static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); +static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_busy_percent_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_power_cap_info_p)(amdsmi_processor_handle, amdsmi_power_cap_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_clk_freq_info_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); +static amdsmi_status_t (*amdsmi_set_gpu_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); -// Performance counter (XGMI, etc.) functions -static amdsmi_status_t (*amdsmi_gpu_create_counter_p)(amdsmi_processor_handle, amdsmi_event_type_t, amdsmi_event_handle_t *) = NULL; -static amdsmi_status_t (*amdsmi_gpu_destroy_counter_p)(amdsmi_event_handle_t) = NULL; -static amdsmi_status_t (*amdsmi_gpu_control_counter_p)(amdsmi_event_handle_t, amdsmi_counter_command_t, void *) = NULL; -static amdsmi_status_t (*amdsmi_gpu_read_counter_p)(amdsmi_event_handle_t, amdsmi_counter_value_t *) = NULL; -static amdsmi_status_t (*amdsmi_dev_counter_group_supported_p)(amdsmi_processor_handle, amdsmi_event_group_t) = NULL; -static amdsmi_status_t (*amdsmi_counter_available_counters_get_p)(amdsmi_processor_handle, amdsmi_event_group_t, uint32_t *) = NULL; +/* Global device list and count */ +static int32_t device_count = 0; +static amdsmi_processor_handle *device_handles = NULL; +static int32_t device_mask = 0; -// Data structures for device and events -typedef struct { - amdsmi_processor_handle handle; - char name[64]; -} device_entry_t; +static void *amds_dlp = NULL; +static void *htable = NULL; +static char error_string[PAPI_MAX_STR_LEN+1]; -static device_entry_t *device_table = NULL; -static int device_count = 0; +/* forward declarations for internal helpers */ +static int load_amdsmi_sym(void); +static int unload_amdsmi_sym(void); +static int init_device_table(void); +static int shutdown_device_table(void); +static int init_event_table(void); +static int shutdown_event_table(void); -// Structure for a native event -typedef struct { - char name[PAPI_MAX_STR_LEN]; - char descr[PAPI_MAX_STR_LEN]; - int id; // event index in table - int device; // device index associated (if applicable) - int64_t variant; // variant (metric type, etc.) - int64_t subvariant; // sub-variant (e.g., sensor index) - int writable; // 1 if event supports write (control) - // Pointers to per-event operation functions - int (*open_func_p)(void *); - int (*close_func_p)(void *); - int (*start_func_p)(void *); - int (*stop_func_p)(void *); - int (*access_func_p)(amdsmi_access_mode_t mode, void *); - long long value; // cached value or value to write - char scratch[8]; // scratch space (e.g., for storing event handle if needed) -} ntv_event_t; +/* Event descriptor structure for native events */ +typedef struct native_event { + unsigned int id; + char *name; + char *descr; + int32_t device; /* device index or -1 if not applicable */ + uint64_t value; /* last read value or set value */ + uint32_t mode; /* access mode (read/write) */ + uint32_t variant; /* variant index (for metric type, etc.) */ + uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ + int (*open_func)(struct native_event *); /* optional open (reserve resources) */ + int (*close_func)(struct native_event *); /* optional close (release resources) */ + int (*start_func)(struct native_event *); /* optional start (begin counting) */ + int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ + int (*access_func)(int mode, void *arg); /* read or write the event value */ +} native_event_t; +/* Table of all native events */ typedef struct { - ntv_event_t *events; + native_event_t *events; int count; -} ntv_event_table_t; +} native_event_table_t; -static ntv_event_table_t ntv_table; -static ntv_event_table_t *ntv_table_p = NULL; // pointer to current table -static char error_string[PAPI_MAX_STR_LEN]; // last error string +static native_event_table_t ntv_table; +static native_event_table_t *ntv_table_p = NULL; -// Internal flags for event state -#define AMDSMI_EVENTS_OPENED 0x1 -#define AMDSMI_EVENTS_RUNNING 0x2 +/* Locking device usage for contexts */ +static int +acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) +{ + int32_t mask_acq = 0; + for (int i = 0; i < num_events; ++i) { + int32_t dev_id = ntv_table_p->events[events_id[i]].device; + if (dev_id < 0) continue; + mask_acq |= (1 << dev_id); + } + if (mask_acq & device_mask) { + return PAPI_ECNFLCT; // conflict: device already in use + } + device_mask |= mask_acq; + *bitmask = mask_acq; + return PAPI_OK; +} -// Forward declarations of internal event access functions -static int access_temp_metric(amdsmi_access_mode_t mode, void *event_ptr); -static int access_volt_metric(amdsmi_access_mode_t mode, void *event_ptr); -static int access_busy_percent(amdsmi_access_mode_t mode, void *event_ptr); -static int access_memory_usage(amdsmi_access_mode_t mode, void *event_ptr); -static int access_memory_total(amdsmi_access_mode_t mode, void *event_ptr); -static int access_fan_speed(amdsmi_access_mode_t mode, void *event_ptr); -static int access_fan_speed_max(amdsmi_access_mode_t mode, void *event_ptr); -static int access_fan_rpms(amdsmi_access_mode_t mode, void *event_ptr); -static int access_power_info(amdsmi_access_mode_t mode, void *event_ptr); -static int access_xgmi_counter(amdsmi_access_mode_t mode, void *event_ptr); -static int access_xgmi_bw(amdsmi_access_mode_t mode, void *event_ptr); -// open/close/start/stop handlers for counters -static int open_xgmi_event(void *event_ptr); -static int close_xgmi_event(void *event_ptr); -static int start_xgmi_event(void *event_ptr); -static int stop_xgmi_event(void *event_ptr); -// Simple open/close handlers (no action needed for static metrics) -static int open_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } -static int close_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } -static int start_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } -static int stop_simple(void *event_ptr) { (void)event_ptr; return PAPI_OK; } +static int +release_devices(int32_t *bitmask) +{ + int32_t mask_rel = *bitmask; + if ((mask_rel & device_mask) != mask_rel) { + return PAPI_EMISC; + } + device_mask ^= mask_rel; + *bitmask = 0; + return PAPI_OK; +} -// Helper macros for memory -#define ALLOC_EVENTS(n) ((ntv_event_t*) papi_calloc((n), sizeof(ntv_event_t))) +/* Access function prototypes for different events (read/write handlers) */ +static int access_amdsmi_temp_metric(int mode, void *arg); +static int access_amdsmi_fan_speed(int mode, void *arg); +static int access_amdsmi_fan_rpms(int mode, void *arg); +static int access_amdsmi_mem_total(int mode, void *arg); +static int access_amdsmi_mem_usage(int mode, void *arg); +static int access_amdsmi_power_cap(int mode, void *arg); +static int access_amdsmi_power_cap_range(int mode, void *arg); +static int access_amdsmi_power_average(int mode, void *arg); +static int access_amdsmi_pci_throughput(int mode, void *arg); +static int access_amdsmi_pci_replay_counter(int mode, void *arg); +static int access_amdsmi_clk_freq(int mode, void *arg); +static int access_amdsmi_gpu_metrics(int mode, void *arg); -// Error handling: record last error string -static void record_error(const char *msg) { - strncpy(error_string, msg, PAPI_MAX_STR_LEN-1); - error_string[PAPI_MAX_STR_LEN-1] = '\0'; +/* Define simple open/close/start/stop functions (most events don't need special handling) */ +static int open_simple(native_event_t *event) { + (void) event; + return PAPI_OK; } - -// Public error retrieval -int amdsmi_err_get_last(const char **err_string) { - *err_string = error_string; +static int close_simple(native_event_t *event) { + (void) event; + return PAPI_OK; +} +static int start_simple(native_event_t *event) { + (void) event; + return PAPI_OK; +} +static int stop_simple(native_event_t *event) { + (void) event; return PAPI_OK; } -// Load AMD SMI library and symbols -static int load_amdsmi_lib(void) { - char lib_path[PATH_MAX] = {0}; - const char *root = getenv("PAPI_AMDSMI_ROOT"); - if (root == NULL) { - record_error("Environment variable PAPI_AMDSMI_ROOT not set."); - return PAPI_ENOSUPP; +/* Load AMD SMI symbols using dlopen and dlsym */ +static int +load_amdsmi_sym(void) +{ + int papi_errno = PAPI_OK; + char pathname[PATH_MAX] = {0}; + char *amdsmi_root = getenv("PAPI_AMDSMI_ROOT"); + if (amdsmi_root == NULL) { + sprintf(error_string, "Can't load libamd_smi.so, PAPI_AMDSMI_ROOT not set."); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; } - snprintf(lib_path, sizeof(lib_path), "%s/lib/libamd_smi.so", root); - amdsmi_dlp = dlopen(lib_path, RTLD_NOW | RTLD_GLOBAL); - if (!amdsmi_dlp) { - record_error(dlerror()); - return PAPI_ENOSUPP; + snprintf(pathname, PATH_MAX, "%s/lib/libamd_smi.so", amdsmi_root); + amds_dlp = dlopen(pathname, RTLD_NOW | RTLD_GLOBAL); + if (!amds_dlp) { + sprintf(error_string, "%s", dlerror()); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; } - // Load required symbols (only success if all critical symbols found) - #define LOAD_SYM(sym) do { \ - sym ## _p = dlsym(amdsmi_dlp, #sym); \ - if (!(sym ## _p)) { record_error(dlerror()); return PAPI_ENOSUPP; } } while(0) + // Load required symbols + amdsmi_init_p = dlsym(amds_dlp, "amdsmi_init"); + amdsmi_shut_down_p = dlsym(amds_dlp, "amdsmi_shut_down"); + amdsmi_get_socket_handles_p = dlsym(amds_dlp, "amdsmi_get_socket_handles"); + amdsmi_get_processor_handles_by_type_p = dlsym(amds_dlp, "amdsmi_get_processor_handles_by_type"); + amdsmi_get_temp_metric_p = dlsym(amds_dlp, "amdsmi_get_temp_metric"); + amdsmi_get_gpu_fan_rpms_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_rpms"); + amdsmi_get_gpu_fan_speed_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_speed"); + amdsmi_get_gpu_fan_speed_max_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_speed_max"); + amdsmi_get_total_memory_p = dlsym(amds_dlp, "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = dlsym(amds_dlp, "amdsmi_get_memory_usage"); + amdsmi_get_gpu_busy_percent_p = dlsym(amds_dlp, "amdsmi_dev_busy_percent_get"); // possibly different naming in AMD SMI + amdsmi_get_gpu_power_cap_info_p = dlsym(amds_dlp, "amdsmi_get_power_cap_info"); + amdsmi_get_gpu_power_cap_set_p = dlsym(amds_dlp, "amdsmi_dev_set_power_cap"); + amdsmi_get_gpu_power_ave_p = dlsym(amds_dlp, "amdsmi_dev_get_power_ave"); + amdsmi_get_gpu_pci_throughput_p = dlsym(amds_dlp, "amdsmi_get_gpu_pci_throughput"); + amdsmi_get_gpu_pci_replay_counter_p = dlsym(amds_dlp, "amdsmi_get_gpu_pci_replay_counter"); + amdsmi_get_gpu_clk_freq_info_p = dlsym(amds_dlp, "amdsmi_get_gpu_clk_freq_info"); + amdsmi_set_gpu_clk_freq_p = dlsym(amds_dlp, "amdsmi_set_gpu_clk_freq"); + amdsmi_get_gpu_metrics_info_p = dlsym(amds_dlp, "amdsmi_get_gpu_metrics_info"); - // Core init/shutdown - LOAD_SYM(amdsmi_init); - LOAD_SYM(amdsmi_shut_down); - LOAD_SYM(amdsmi_get_socket_handles); - LOAD_SYM(amdsmi_get_processor_handles); - // Monitoring functions - LOAD_SYM(amdsmi_get_temp_metric); - LOAD_SYM(amdsmi_get_gpu_volt_metric); - LOAD_SYM(amdsmi_get_gpu_busy_percent); - LOAD_SYM(amdsmi_get_gpu_memory_total); - LOAD_SYM(amdsmi_get_gpu_memory_usage); - LOAD_SYM(amdsmi_get_gpu_fan_rpms); - LOAD_SYM(amdsmi_get_gpu_fan_speed); - LOAD_SYM(amdsmi_get_gpu_fan_speed_max); - LOAD_SYM(amdsmi_set_gpu_fan_speed); - LOAD_SYM(amdsmi_reset_gpu_fan); - LOAD_SYM(amdsmi_get_gpu_power_info); - LOAD_SYM(amdsmi_get_clk_freq); - // Performance counter functions - LOAD_SYM(amdsmi_gpu_create_counter); - LOAD_SYM(amdsmi_gpu_destroy_counter); - LOAD_SYM(amdsmi_gpu_control_counter); - LOAD_SYM(amdsmi_gpu_read_counter); - LOAD_SYM(amdsmi_dev_counter_group_supported); - LOAD_SYM(amdsmi_counter_available_counters_get); - // Optional functions (not critical) - amdsmi_get_gpu_name_p = dlsym(amdsmi_dlp, "amdsmi_get_gpu_name"); - - #undef LOAD_SYM + // Check that critical symbols are loaded + int missing = (!amdsmi_init_p || !amdsmi_shut_down_p || !amdsmi_get_socket_handles_p || !amdsmi_get_processor_handles_by_type_p || + !amdsmi_get_temp_metric_p || !amdsmi_get_gpu_fan_rpms_p || !amdsmi_get_gpu_fan_speed_p || !amdsmi_get_gpu_fan_speed_max_p || + !amdsmi_get_total_memory_p || !amdsmi_get_memory_usage_p || !amdsmi_get_gpu_power_cap_info_p || !amdsmi_get_gpu_power_ave_p || + !amdsmi_get_gpu_pci_throughput_p || !amdsmi_get_gpu_pci_replay_counter_p); + if (missing) { + sprintf(error_string, "Error while loading AMD SMI symbols."); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; + } return PAPI_OK; +fn_fail: + if (amds_dlp) { + dlclose(amds_dlp); + amds_dlp = NULL; + } + return papi_errno; } -// Unload AMD SMI library -int unload_amdsmi_lib(void) { - if (amdsmi_dlp) dlclose(amdsmi_dlp); - amdsmi_dlp = NULL; +static int +unload_amdsmi_sym(void) +{ + // Reset all function pointers + amdsmi_init_p = NULL; + amdsmi_shut_down_p = NULL; + amdsmi_get_socket_handles_p = NULL; + amdsmi_get_processor_handles_by_type_p = NULL; + amdsmi_get_temp_metric_p = NULL; + amdsmi_get_gpu_fan_rpms_p = NULL; + amdsmi_get_gpu_fan_speed_p = NULL; + amdsmi_get_gpu_fan_speed_max_p = NULL; + amdsmi_get_total_memory_p = NULL; + amdsmi_get_memory_usage_p = NULL; + amdsmi_get_gpu_busy_percent_p = NULL; + amdsmi_get_gpu_power_cap_info_p = NULL; + amdsmi_get_gpu_power_cap_set_p = NULL; + amdsmi_get_gpu_power_ave_p = NULL; + amdsmi_get_gpu_pci_throughput_p = NULL; + amdsmi_get_gpu_pci_replay_counter_p = NULL; + amdsmi_get_gpu_clk_freq_info_p = NULL; + amdsmi_set_gpu_clk_freq_p = NULL; + amdsmi_get_gpu_metrics_info_p = NULL; + if (amds_dlp) { + dlclose(amds_dlp); + amds_dlp = NULL; + } return PAPI_OK; } -// Initialize AMD SMI and enumerate devices and events -int amdsmi_init(void) { - int papi_errno = load_amdsmi_lib(); +/* Initialize AMD SMI library and event table */ +int +amds_init(void) +{ + int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } - // Initialize AMD SMI library for GPUs only amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { - record_error("amdsmi_init failed"); + // if init fails, get error string if possible + strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } - // Enumerate GPUs in system + htable_init(&htable); + // Discover devices (sockets and GPU handles) uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) { - record_error("Failed to get socket count"); - return PAPI_ENOSUPP; + if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { + sprintf(error_string, "Error discovering sockets or no AMD GPU socket found."); + papi_errno = PAPI_ENOEVNT; + goto fn_fail; } - if (socket_count == 0) { - record_error("No AMD GPU sockets found"); - return PAPI_ENOEVNT; + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); + if (!sockets) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; } - amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) calloc(socket_count, sizeof(*sockets)); - if (!sockets) return PAPI_ENOMEM; status = amdsmi_get_socket_handles_p(&socket_count, sockets); if (status != AMDSMI_STATUS_SUCCESS) { - free(sockets); - record_error("Failed to get socket handles"); - return PAPI_ENOSUPP; + sprintf(error_string, "Error getting socket handles."); + papi_free(sockets); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; } - // Count total GPU processors across sockets + // Count GPU devices and store their handles device_count = 0; - for (uint32_t i = 0; i < socket_count; ++i) { - uint32_t proc_count = 0; - status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) continue; - device_count += proc_count; - } - if (device_count == 0) { - free(sockets); - record_error("No AMD GPU devices found"); - return PAPI_ENOEVNT; - } - device_table = (device_entry_t *) calloc(device_count, sizeof(device_entry_t)); - if (!device_table) { - free(sockets); - return PAPI_ENOMEM; + // First, allocate a buffer for maximum possible processors (GPUs) + // We assume at most one GPU per socket (except APUs, but those count as one GPU as well) + device_handles = (amdsmi_processor_handle *) papi_calloc(socket_count, sizeof(amdsmi_processor_handle)); + if (!device_handles) { + papi_free(sockets); + papi_errno = PAPI_ENOMEM; + goto fn_fail; } - // Gather all GPU device handles - int idx = 0; - for (uint32_t i = 0; i < socket_count; ++i) { - uint32_t proc_count = 0; - amdsmi_processor_handle *proc_list = NULL; - status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS || proc_count == 0) { - continue; - } - proc_list = (amdsmi_processor_handle *) calloc(proc_count, sizeof(*proc_list)); - if (!proc_list) { - free(sockets); - return PAPI_ENOMEM; - } - status = amdsmi_get_processor_handles_p(sockets[i], &proc_count, proc_list); + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count = 0; + // Get GPU processors for this socket + amdsmi_processor_handle gpu_handle; + processor_type_t processor_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + //ret = amdsmi_get_processor_type(gpu_handle[j], &processor_type); + ///////////////////////////////////////////////////////////////////////FIX + + status = amdsmi_get_processor_handles_by_type_p(sockets[s], processor_type, &gpu_handle, &gpu_count); if (status != AMDSMI_STATUS_SUCCESS) { - free(proc_list); continue; } - for (uint32_t j = 0; j < proc_count; ++j) { - device_table[idx].handle = proc_list[j]; - // Optionally get device name (if available) - if (amdsmi_get_gpu_name_p) { - char namebuf[64] = ""; - if (amdsmi_get_gpu_name_p(proc_list[j], namebuf, sizeof(namebuf)) == AMDSMI_STATUS_SUCCESS) { - strncpy(device_table[idx].name, namebuf, sizeof(device_table[idx].name)-1); - } else { - snprintf(device_table[idx].name, sizeof(device_table[idx].name), "GPU%u", idx); + if (gpu_count > 0) { + // There might be multiple GPU handles if socket has multiple GPU dies (e.g., MI200 series GCDs). + // For simplicity, handle one GPU per call. If gpu_count > 1, allocate accordingly. + amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count, sizeof(amdsmi_processor_handle)); + if (!gpu_handles) { + papi_errno = PAPI_ENOMEM; + continue; + } + status = amdsmi_get_processor_handles_by_type_p(sockets[s], processor_type, gpu_handles, &gpu_count); + if (status == AMDSMI_STATUS_SUCCESS) { + for (uint32_t g = 0; g < gpu_count; ++g) { + device_handles[device_count++] = gpu_handles[g]; } - } else { - snprintf(device_table[idx].name, sizeof(device_table[idx].name), "GPU%u", idx); } - idx++; + papi_free(gpu_handles); } - free(proc_list); } - free(sockets); - // Build the native event table + papi_free(sockets); + if (device_count == 0) { + sprintf(error_string, "No AMD GPU devices found."); + papi_errno = PAPI_ENOEVNT; + goto fn_fail; + } + + // Initialize event tables for all discovered metrics papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { - // Clean up on failure - shutdown_event_table(); - free(device_table); - device_table = NULL; - device_count = 0; - amdsmi_shut_down_p(); - return papi_errno; + sprintf(error_string, "Error while initializing the native event table."); + goto fn_fail; } ntv_table_p = &ntv_table; return PAPI_OK; +fn_fail: + htable_shutdown(htable); + if (device_handles) { papi_free(device_handles); device_handles = NULL; device_count = 0; } + amdsmi_shut_down_p(); + unload_amdsmi_sym(); + return papi_errno; } -// Shut down AMD SMI and free resources -int amdsmi_shutdown(void) { - // Free event table and device table +int +amds_shutdown(void) +{ shutdown_event_table(); - if (device_table) free(device_table); - device_table = NULL; - device_count = 0; + shutdown_device_table(); + htable_shutdown(htable); // Shutdown AMD SMI library - if (amdsmi_shut_down_p) { - amdsmi_shut_down_p(); - } - unload_amdsmi_lib(); - return PAPI_OK; + amdsmi_shut_down_p(); + return unload_amdsmi_sym(); } -// Initialize native event table: enumerate all supported events -int init_event_table(void) { - int event_index = 0; - // Estimate maximum events: - // Temperature: devices * sensors * metrics - // Voltage: devices * metrics - // Fan: devices * (fan sensors * metrics) - // Power: devices * some fields - // Busy: devices * 1 - // Memory: devices * types * 2 (total/used) - // XGMI: devices * number of XGMI counters - // We'll dynamically add events as we find them. - int max_events = 1024; // allocate initial space (will adjust if needed) - ntv_table.events = ALLOC_EVENTS(max_events); - if (!ntv_table.events) return PAPI_ENOMEM; - ntv_table.count = 0; - - // Add temperature events for each GPU and sensor type and metric - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - // Iterate over possible temperature sensor types - for (int ttype = (int)AMDSMI_TEMPERATURE_TYPE_FIRST; - ttype <= (int)AMDSMI_TEMPERATURE_TYPE__MAX; ++ttype) { - // We will attempt only a specific subset if needed: - // e.g., Edge (0), Hotspot (1), VRAM (2), HBM_0-3 (3-6), PLX (7). - amdsmi_temperature_type_t sensor_type = (amdsmi_temperature_type_t) ttype; - // Check if this sensor is supported by trying to read current temperature - int64_t temp_val = 0; - if (amdsmi_get_temp_metric_p(ph, sensor_type, AMDSMI_TEMP_CURRENT, &temp_val) != AMDSMI_STATUS_SUCCESS) { - continue; // skip unsupported sensor - } - // Sensor supported: add events for each metric type - for (int m = (int)AMDSMI_TEMP_FIRST; m <= (int)AMDSMI_TEMP_LAST; ++m) { - amdsmi_temperature_metric_t metric = (amdsmi_temperature_metric_t) m; - // Try to read once to see if this metric is available - int64_t tmp = 0; - amdsmi_status_t st = amdsmi_get_temp_metric_p(ph, sensor_type, metric, &tmp); - if (st != AMDSMI_STATUS_SUCCESS) { - continue; // skip metrics not supported - } - // Add event - ntv_event_t *ev = &ntv_table.events[event_index]; - ev->id = event_index; - ev->device = dev; - ev->variant = metric; - ev->subvariant = sensor_type; - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "temp_%s:device=%d:sensor=%d", - amdsmi_temp_metric_name(metric), dev, sensor_type); - snprintf(ev->descr, sizeof(ev->descr), - "GPU %d temperature %s (sensor type %d)", - dev, amdsmi_temp_metric_desc(metric), sensor_type); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_temp_metric; - event_index++; - if (event_index >= max_events) { - // reallocate larger table if needed - max_events *= 2; - ntv_table.events = (ntv_event_t*) papi_realloc(ntv_table.events, max_events * sizeof(ntv_event_t)); - if (!ntv_table.events) return PAPI_ENOMEM; - } - } - } - } - - // Add voltage metric events for each GPU (only VDDGFX sensor type) - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - for (int vmet = (int)AMDSMI_VOLT_FIRST; vmet <= (int)AMDSMI_VOLT_LAST; ++vmet) { - amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t) vmet; - int64_t val = 0; - amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(ph, AMDSMI_VOLT_TYPE_VDDGFX, metric, &val); - if (st != AMDSMI_STATUS_SUCCESS) continue; - ntv_event_t *ev = &ntv_table.events[event_index]; - ev->id = event_index; - ev->device = dev; - ev->variant = metric; - ev->subvariant = AMDSMI_VOLT_TYPE_VDDGFX; - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "voltage_%s:device=%d", amdsmi_volt_metric_name(metric), dev); - snprintf(ev->descr, sizeof(ev->descr), - "GPU %d voltage %s (mV)", dev, amdsmi_volt_metric_desc(metric)); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_volt_metric; - event_index++; - if (event_index >= max_events) { - max_events *= 2; - ntv_table.events = (ntv_event_t*) papi_realloc(ntv_table.events, max_events * sizeof(ntv_event_t)); - if (!ntv_table.events) return PAPI_ENOMEM; - } - } - } - - // Add fan speed events (RPM and normalized, plus max, and control if supported) - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - // Assume at least sensor 0 exists for fan - int64_t rpm = 0; - if (amdsmi_get_gpu_fan_rpms_p(ph, 0, &rpm) == AMDSMI_STATUS_SUCCESS) { - // Current fan RPM - ntv_event_t *ev = &ntv_table.events[event_index++]; - ev->id = event_index-1; - ev->device = dev; - ev->variant = 0; // using variant as sensor index - ev->subvariant = 0; // not used further - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "fan_rpm:device=%d", dev); - snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan speed (RPM)", dev); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_fan_rpms; - } - int64_t speed_val = 0; - if (amdsmi_get_gpu_fan_speed_p(ph, 0, &speed_val) == AMDSMI_STATUS_SUCCESS) { - // Current fan speed relative (0-255) - ntv_event_t *ev = &ntv_table.events[event_index++]; - ev->id = event_index-1; - ev->device = dev; - ev->variant = 0; - ev->subvariant = 0; - ev->writable = 1; // this one can be written (set fan speed) - snprintf(ev->name, sizeof(ev->name), "fan_speed:device=%d", dev); - snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan speed (0-255 scale)", dev); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_fan_speed; - } - uint64_t max_speed = 0; - if (amdsmi_get_gpu_fan_speed_max_p(ph, 0, &max_speed) == AMDSMI_STATUS_SUCCESS) { - ntv_event_t *ev = &ntv_table.events[event_index++]; - ev->id = event_index-1; - ev->device = dev; - ev->variant = 0; - ev->subvariant = 0; - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "fan_max_speed:device=%d", dev); - snprintf(ev->descr, sizeof(ev->descr), "GPU %d fan maximum speed", dev); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_fan_speed_max; - } - } - - // Add power and energy-related events (current power, average power, voltage reading) - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - amdsmi_power_info_t pinfo; - if (amdsmi_get_gpu_power_info_p(ph, 0, &pinfo) == AMDSMI_STATUS_SUCCESS) { - // current power - ntv_event_t *ev_cur = &ntv_table.events[event_index++]; - ev_cur->id = event_index-1; - ev_cur->device = dev; - ev_cur->variant = 0; // use variant to identify field (0 = current, 1 = average, 2 = voltage, etc.) - ev_cur->subvariant = 0; - ev_cur->writable = 0; - snprintf(ev_cur->name, sizeof(ev_cur->name), "power_draw:device=%d", dev); - snprintf(ev_cur->descr, sizeof(ev_cur->descr), "GPU %d instantaneous power draw (W)", dev); - ev_cur->open_func_p = open_simple; - ev_cur->close_func_p = close_simple; - ev_cur->start_func_p = start_simple; - ev_cur->stop_func_p = stop_simple; - ev_cur->access_func_p = access_power_info; - // average power - ntv_event_t *ev_avg = &ntv_table.events[event_index++]; - ev_avg->id = event_index-1; - ev_avg->device = dev; - ev_avg->variant = 1; - ev_avg->subvariant = 0; - ev_avg->writable = 0; - snprintf(ev_avg->name, sizeof(ev_avg->name), "power_average:device=%d", dev); - snprintf(ev_avg->descr, sizeof(ev_avg->descr), "GPU %d average power (W)", dev); - ev_avg->open_func_p = open_simple; - ev_avg->close_func_p = close_simple; - ev_avg->start_func_p = start_simple; - ev_avg->stop_func_p = stop_simple; - ev_avg->access_func_p = access_power_info; - // GFX voltage (also available via volt_metric, but include here as part of power info) - ntv_event_t *ev_v = &ntv_table.events[event_index++]; - ev_v->id = event_index-1; - ev_v->device = dev; - ev_v->variant = 2; - ev_v->subvariant = 0; - ev_v->writable = 0; - snprintf(ev_v->name, sizeof(ev_v->name), "voltage_gpu:device=%d", dev); - snprintf(ev_v->descr, sizeof(ev_v->descr), "GPU %d voltage (mV)", dev); - ev_v->open_func_p = open_simple; - ev_v->close_func_p = close_simple; - ev_v->start_func_p = start_simple; - ev_v->stop_func_p = stop_simple; - ev_v->access_func_p = access_power_info; - } - } - - // Add utilization (busy percent) events - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - uint32_t busy = 0; - if (amdsmi_get_gpu_busy_percent_p(ph, &busy) == AMDSMI_STATUS_SUCCESS) { - ntv_event_t *ev = &ntv_table.events[event_index++]; - ev->id = event_index-1; - ev->device = dev; - ev->variant = 0; - ev->subvariant = 0; - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "gpu_busy_percent:device=%d", dev); - snprintf(ev->descr, sizeof(ev->descr), "GPU %d utilization (percent busy)", dev); - ev->open_func_p = open_simple; - ev->close_func_p = close_simple; - ev->start_func_p = start_simple; - ev->stop_func_p = stop_simple; - ev->access_func_p = access_busy_percent; - } +/* Retrieve last error string */ +int +amds_err_get_last(const char **err_string) +{ + if (err_string) { + *err_string = error_string; } + return PAPI_OK; +} - // Add memory usage events (for each memory type supported: VRAM, GTT) - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - // VRAM (type 0) - uint64_t total=0, used=0; - if (amdsmi_get_gpu_memory_total_p(ph, AMDSMI_MEM_TYPE_VRAM, &total) == AMDSMI_STATUS_SUCCESS && - amdsmi_get_gpu_memory_usage_p(ph, AMDSMI_MEM_TYPE_VRAM, &used) == AMDSMI_STATUS_SUCCESS) { - ntv_event_t *ev_total = &ntv_table.events[event_index++]; - ev_total->id = event_index-1; - ev_total->device = dev; - ev_total->variant = AMDSMI_MEM_TYPE_VRAM; - ev_total->subvariant = 0; - ev_total->writable = 0; - snprintf(ev_total->name, sizeof(ev_total->name), "mem_total_VRAM:device=%d", dev); - snprintf(ev_total->descr, sizeof(ev_total->descr), "GPU %d total VRAM bytes", dev); - ev_total->open_func_p = open_simple; - ev_total->close_func_p = close_simple; - ev_total->start_func_p = start_simple; - ev_total->stop_func_p = stop_simple; - ev_total->access_func_p = access_memory_total; - ntv_event_t *ev_used = &ntv_table.events[event_index++]; - ev_used->id = event_index-1; - ev_used->device = dev; - ev_used->variant = AMDSMI_MEM_TYPE_VRAM; - ev_used->subvariant = 1; // use subvariant=1 to denote "used" - ev_used->writable = 0; - snprintf(ev_used->name, sizeof(ev_used->name), "mem_used_VRAM:device=%d", dev); - snprintf(ev_used->descr, sizeof(ev_used->descr), "GPU %d used VRAM bytes", dev); - ev_used->open_func_p = open_simple; - ev_used->close_func_p = close_simple; - ev_used->start_func_p = start_simple; - ev_used->stop_func_p = stop_simple; - ev_used->access_func_p = access_memory_usage; - } - // GTT (type 1 - if applicable) - if (amdsmi_get_gpu_memory_total_p(ph, AMDSMI_MEM_TYPE_GTT, &total) == AMDSMI_STATUS_SUCCESS && - amdsmi_get_gpu_memory_usage_p(ph, AMDSMI_MEM_TYPE_GTT, &used) == AMDSMI_STATUS_SUCCESS) { - ntv_event_t *ev_total = &ntv_table.events[event_index++]; - ev_total->id = event_index-1; - ev_total->device = dev; - ev_total->variant = AMDSMI_MEM_TYPE_GTT; - ev_total->subvariant = 0; - ev_total->writable = 0; - snprintf(ev_total->name, sizeof(ev_total->name), "mem_total_GTT:device=%d", dev); - snprintf(ev_total->descr, sizeof(ev_total->descr), "GPU %d total GTT memory bytes", dev); - ev_total->open_func_p = open_simple; - ev_total->close_func_p = close_simple; - ev_total->start_func_p = start_simple; - ev_total->stop_func_p = stop_simple; - ev_total->access_func_p = access_memory_total; - ntv_event_t *ev_used = &ntv_table.events[event_index++]; - ev_used->id = event_index-1; - ev_used->device = dev; - ev_used->variant = AMDSMI_MEM_TYPE_GTT; - ev_used->subvariant = 1; - ev_used->writable = 0; - snprintf(ev_used->name, sizeof(ev_used->name), "mem_used_GTT:device=%d", dev); - snprintf(ev_used->descr, sizeof(ev_used->descr), "GPU %d used GTT memory bytes", dev); - ev_used->open_func_p = open_simple; - ev_used->close_func_p = close_simple; - ev_used->start_func_p = start_simple; - ev_used->stop_func_p = stop_simple; - ev_used->access_func_p = access_memory_usage; +/* Event enumeration: iterate over native events */ +int +amds_evt_enum(unsigned int *EventCode, int modifier) +{ + if (modifier == PAPI_ENUM_FIRST) { + if (ntv_table_p->count == 0) { + return PAPI_ENOEVNT; } - } - - // Add XGMI performance counter events (if supported by devices) - for (int dev = 0; dev < device_count; ++dev) { - amdsmi_processor_handle ph = device_table[dev].handle; - // Check if XGMI event group is supported - if (amdsmi_dev_counter_group_supported_p && - amdsmi_dev_counter_group_supported_p(ph, AMDSMI_EVNT_GRP_XGMI) == AMDSMI_STATUS_SUCCESS) { - // Query available counters for XGMI - uint32_t available = 0; - if (amdsmi_counter_available_counters_get_p) { - amdsmi_counter_available_counters_get_p(ph, AMDSMI_EVNT_GRP_XGMI, &available); - } - // Add events for XGMI throughput per link (Data Out events) - // Assume event types AMDSMI_EVNT_XGMI_DATA_OUT_n for n=0..N-1 links - for (uint32_t link = 0; link < AMDSMI_MAX_NUM_XGMI_LINKS; ++link) { - amdsmi_event_type_t ev_type = (amdsmi_event_type_t)(AMDSMI_EVNT_XGMI_DATA_OUT_0 + link); - // Try to create a counter to see if event exists - amdsmi_event_handle_t evt_handle; - if (amdsmi_gpu_create_counter_p(ph, ev_type, &evt_handle) != AMDSMI_STATUS_SUCCESS) { - continue; - } - // Immediately destroy (we will recreate on open) - amdsmi_gpu_destroy_counter_p(evt_handle); - // Add event - ntv_event_t *ev = &ntv_table.events[event_index++]; - ev->id = event_index-1; - ev->device = dev; - ev->variant = ev_type; - ev->subvariant = link; - ev->writable = 0; - snprintf(ev->name, sizeof(ev->name), "xgmi_data_out_link%d:device=%d", link, dev); - snprintf(ev->descr, sizeof(ev->descr), "GPU %d XGMI outbound data (32-byte beats) on link %d", dev, link); - ev->open_func_p = open_xgmi_event; - ev->close_func_p = close_xgmi_event; - ev->start_func_p = start_xgmi_event; - ev->stop_func_p = stop_xgmi_event; - ev->access_func_p = access_xgmi_counter; - } + *EventCode = 0; + return PAPI_OK; + } else if (modifier == PAPI_ENUM_EVENTS) { + if (*EventCode + 1 < (unsigned int) ntv_table_p->count) { + *EventCode = *EventCode + 1; + return PAPI_OK; + } else { + return PAPI_ENOEVNT; } } - - ntv_table.count = event_index; - return PAPI_OK; + return PAPI_EINVAL; } -// Shutdown event table and free all events -int shutdown_event_table(void) { - if (ntv_table.events) { - papi_free(ntv_table.events); - ntv_table.events = NULL; +int +amds_evt_code_to_name(unsigned int EventCode, char *name, int len) +{ + if (EventCode >= (unsigned int) ntv_table_p->count) { + return PAPI_EINVAL; } - ntv_table.count = 0; + strncpy(name, ntv_table_p->events[EventCode].name, len); return PAPI_OK; } -// Acquire devices for an event set (avoid conflicts if needed) ? stub for now -static int acquire_devices(unsigned int *events, int num, int32_t *mask_out) { - // For simplicity, allow all devices (no conflict resolution implemented here). - (void)events; (void)num; - *mask_out = -1; +int +amds_evt_name_to_code(const char *name, unsigned int *EventCode) +{ + int hret = htable_find(htable, name, (void **) &(*EventCode)); + if (hret != HTABLE_SUCCESS) { + return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; + } return PAPI_OK; } -// Release device mask ? stub -static int release_devices(int32_t *mask) { - (void)mask; +int +amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) +{ + if (EventCode >= (unsigned int) ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(descr, ntv_table_p->events[EventCode].descr, len); return PAPI_OK; } -// Context open: allocate context struct and open each event (if needed) -int amdsmi_ctx_open(unsigned int *events_id, int num_events, amdsmi_ctx_t *ctx_out) { - int papi_errno = PAPI_OK; - _papi_hwi_lock(_amd_smi_lock); - // Prevent simultaneous use of same device if needed +/* Context management: open/close, start/stop, read/write, reset */ +struct amds_ctx { + int state; + unsigned int *events_id; + int num_events; + long long *counters; int32_t device_mask; - if (acquire_devices(events_id, num_events, &device_mask) != PAPI_OK) { - papi_errno = PAPI_ECNFLCT; - goto fn_fail; - } - // Allocate context struct - *ctx_out = (amdsmi_ctx_t) papi_calloc(1, sizeof(struct amdsmi_ctx)); - if (*ctx_out == NULL) { - papi_errno = PAPI_ENOMEM; - goto fn_fail; - } - // Allocate counters array - long long *counters = (long long *) papi_calloc(num_events, sizeof(long long)); - if (!counters) { - papi_errno = PAPI_ENOMEM; - goto fn_fail; +}; + +int +amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) +{ + amds_ctx_t new_ctx = (amds_ctx_t) papi_calloc(1, sizeof(struct amds_ctx)); + if (new_ctx == NULL) { + return PAPI_ENOMEM; } - // Open each event if it has an open_func (for counters) - for (int i = 0; i < num_events; ++i) { - int id = events_id[i]; - papi_errno = ntv_table_p->events[id].open_func_p(&ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - goto fn_fail; - } + new_ctx->events_id = event_ids; + new_ctx->num_events = num_events; + new_ctx->counters = (long long *) papi_calloc(num_events, sizeof(long long)); + if (new_ctx->counters == NULL) { + papi_free(new_ctx); + return PAPI_ENOMEM; } - (*ctx_out)->state |= AMDSMI_EVENTS_OPENED; - (*ctx_out)->events_id = events_id; - (*ctx_out)->num_events = num_events; - (*ctx_out)->counters = counters; - (*ctx_out)->device_mask = device_mask; -fn_exit: - _papi_hwi_unlock(_amd_smi_lock); - return papi_errno; -fn_fail: - // Cleanup partially opened events - for (int j = 0; j < num_events; ++j) { - if (j >= 0) { - int id = events_id[j]; - ntv_table_p->events[id].close_func_p(&ntv_table_p->events[id]); - } + // Acquire devices needed by these events to avoid conflicts + int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); + if (papi_errno != PAPI_OK) { + papi_free(new_ctx->counters); + papi_free(new_ctx); + return papi_errno; } - if (counters) papi_free(counters); - if (*ctx_out) papi_free(*ctx_out); - *ctx_out = NULL; - goto fn_exit; + *ctx = new_ctx; + return PAPI_OK; } -// Close context: close events and free context struct -int amdsmi_ctx_close(amdsmi_ctx_t ctx) { - int papi_errno = PAPI_OK; - _papi_hwi_lock(_amd_smi_lock); - // Close each event (destroy counters if needed) - for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; - amdsmi_status_t status = ntv_table_p->events[id].close_func_p(&ntv_table_p->events[id]); - (void)status; // ignore errors on close - } +int +amds_ctx_close(amds_ctx_t ctx) +{ + if (!ctx) return PAPI_OK; + // release device usage release_devices(&ctx->device_mask); papi_free(ctx->counters); papi_free(ctx); - _papi_hwi_unlock(_amd_smi_lock); - return papi_errno; + return PAPI_OK; } -// Start counting: start all events that require starting (counters) -int amdsmi_ctx_start(amdsmi_ctx_t ctx) { - int papi_errno = PAPI_OK; - // For each event, call start_func (for static metrics, does nothing; for counters, starts them) - for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].start_func_p(&ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - } - ctx->state |= AMDSMI_EVENTS_RUNNING; +int +amds_ctx_start(amds_ctx_t ctx) +{ + (void) ctx; + // No additional actions needed to start in this design (all reads are on-demand) + ctx->state |= AMDS_EVENTS_RUNNING; return PAPI_OK; } -// Stop counting: stop all events (for counters) -int amdsmi_ctx_stop(amdsmi_ctx_t ctx) { - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].stop_func_p(&ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } +int +amds_ctx_stop(amds_ctx_t ctx) +{ + if (!(ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_OK; } - ctx->state &= ~AMDSMI_EVENTS_RUNNING; + ctx->state &= ~AMDS_EVENTS_RUNNING; return PAPI_OK; } -// Read counters: for each event, if needed call access_func (read mode) and collect value -int amdsmi_ctx_read(amdsmi_ctx_t ctx, long long **counts) { +int +amds_ctx_read(amds_ctx_t ctx, long long **counts) +{ int papi_errno = PAPI_OK; for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; - // access in READ mode populates event->value - papi_errno = ntv_table_p->events[id].access_func_p(AMDSMI_MODE_READ, &ntv_table_p->events[id]); + unsigned int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); if (papi_errno != PAPI_OK) { return papi_errno; } - ctx->counters[i] = ntv_table_p->events[id].value; + ctx->counters[i] = (long long) ntv_table_p->events[id].value; } - *counts = (long long *) ctx->counters; + *counts = ctx->counters; return papi_errno; } -// Write counters: set provided values to events (for controllable events) -int amdsmi_ctx_write(amdsmi_ctx_t ctx, long long *counts) { +int +amds_ctx_write(amds_ctx_t ctx, long long *counts) +{ int papi_errno = PAPI_OK; for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; + unsigned int id = ctx->events_id[i]; ntv_table_p->events[id].value = counts[i]; - papi_errno = ntv_table_p->events[id].access_func_p(AMDSMI_MODE_WRITE, &ntv_table_p->events[id]); + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); if (papi_errno != PAPI_OK) { return papi_errno; } @@ -789,344 +496,596 @@ int amdsmi_ctx_write(amdsmi_ctx_t ctx, long long *counts) { return papi_errno; } -// Reset counters: set all values to 0 -int amdsmi_ctx_reset(amdsmi_ctx_t ctx) { +int +amds_ctx_reset(amds_ctx_t ctx) +{ for (int i = 0; i < ctx->num_events; ++i) { - int id = ctx->events_id[i]; + unsigned int id = ctx->events_id[i]; ntv_table_p->events[id].value = 0; ctx->counters[i] = 0; } return PAPI_OK; } -// Native event enumeration interface for PAPI -int amdsmi_evt_enum(unsigned int *event_code, int modifier) { - if (modifier == PAPI_ENUM_FIRST) { - if (ntv_table.count == 0) return PAPI_ENOEVNT; - *event_code = 0; - return PAPI_OK; - } else if (modifier == PAPI_ENUM_EVENTS) { - if (*event_code < (unsigned int)(ntv_table.count - 1)) { - (*event_code)++; - return PAPI_OK; - } else { - return PAPI_ENOEVNT; - } +/* Build the native event table with all supported events */ +static int +init_event_table(void) +{ + // Maximum possible events (rough estimate): + // For each GPU device, for each metric category, multiple events. + // We allocate an initial array and will resize if needed. + int max_events_guess = 512 * device_count; + ntv_table.events = (native_event_t *) papi_calloc(max_events_guess, sizeof(native_event_t)); + if (!ntv_table.events) { + return PAPI_ENOMEM; } - return PAPI_EINVAL; -} - -int amdsmi_evt_code_to_name(unsigned int event_code, char *name, int len) { - if (event_code >= (unsigned int) ntv_table.count) return PAPI_EINVAL; - strncpy(name, ntv_table.events[event_code].name, len); - return PAPI_OK; -} - -int amdsmi_evt_code_to_descr(unsigned int event_code, char *descr, int len) { - if (event_code >= (unsigned int) ntv_table.count) return PAPI_EINVAL; - strncpy(descr, ntv_table.events[event_code].descr, len); - return PAPI_OK; -} + ntv_table.count = 0; + int idx = 0; + char name_buf[PAPI_MAX_STR_LEN]; + char descr_buf[PAPI_MAX_STR_LEN]; -int amdsmi_evt_name_to_code(const char *name, unsigned int *event_code) { - // Simple linear search by name - for (int i = 0; i < ntv_table.count; ++i) { - if (strcmp(name, ntv_table.events[i].name) == 0) { - *event_code = ntv_table.events[i].id; - return PAPI_OK; + // Temperature metrics: for each device, each sensor type, each temperature metric + amdsmi_temperature_metric_t temp_metrics[] = { + AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, + AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, + AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, + AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, + AMDSMI_TEMP_CRIT_MIN, AMDSMI_TEMP_CRIT_MIN_HYST, + AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST + }; + amdsmi_temperature_type_t temp_sensors[] = { + AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_PLX + // HBM sensors omitted for brevity; could include TEMPERATURE_TYPE_HBM_0.._HBM_3 if needed + }; + const char *temp_metric_names[] = { + "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", + "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", + "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" + }; + for (int d = 0; d < device_count; ++d) { + for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { + // To avoid adding unsupported sensor metrics: call AMD SMI for current temperature, if fails, skip sensor entirely + int64_t dummy_val; + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &dummy_val) != AMDSMI_STATUS_SUCCESS) { + continue; // skip this sensor if no current temp (likely sensor not present) + } + for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { + // Event name example: "temp_current:device=0:sensor=0" + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, temp_metric_names[mi], (int) temp_sensors[si]); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = temp_metrics[mi]; + ev->subvariant = temp_sensors[si]; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_temp_metric; + htable_insert(htable, ev->name, &ev->id); + idx++; + } } } - return PAPI_ENOEVNT; -} -// Helper to get metric name strings (for formatting) -const char* amdsmi_temp_metric_name(amdsmi_temperature_metric_t metric) { - switch (metric) { - case AMDSMI_TEMP_CURRENT: return "current"; - case AMDSMI_TEMP_MAX: return "max"; - case AMDSMI_TEMP_MIN: return "min"; - case AMDSMI_TEMP_MAX_HYST: return "max_hyst"; - case AMDSMI_TEMP_MIN_HYST: return "min_hyst"; - case AMDSMI_TEMP_CRITICAL: return "critical"; - case AMDSMI_TEMP_CRITICAL_HYST: return "critical_hyst"; - case AMDSMI_TEMP_EMERGENCY: return "emergency"; - case AMDSMI_TEMP_EMERGENCY_HYST: return "emergency_hyst"; - case AMDSMI_TEMP_CRIT_MIN: return "crit_min"; - case AMDSMI_TEMP_CRIT_MIN_HYST: return "crit_min_hyst"; - case AMDSMI_TEMP_OFFSET: return "offset"; - case AMDSMI_TEMP_LOWEST: return "lowest"; - case AMDSMI_TEMP_HIGHEST: return "highest"; - case AMDSMI_TEMP_SHUTDOWN: return "shutdown"; - default: return "unknown"; + // Fan metrics: assume one fan sensor (index 0) per device + for (int d = 0; d < device_count; ++d) { + // Fan RPM + snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); + native_event_t *ev_rpm = &ntv_table.events[idx]; + ev_rpm->id = idx; + ev_rpm->name = strdup(name_buf); + ev_rpm->descr = strdup(descr_buf); + ev_rpm->device = d; + ev_rpm->value = 0; + ev_rpm->mode = PAPI_MODE_READ; + ev_rpm->variant = 0; // not used + ev_rpm->subvariant = 0; // sensor index + ev_rpm->open_func = open_simple; + ev_rpm->close_func = close_simple; + ev_rpm->start_func = start_simple; + ev_rpm->stop_func = stop_simple; + ev_rpm->access_func = access_amdsmi_fan_rpms; + htable_insert(htable, ev_rpm->name, &ev_rpm->id); + idx++; + // Fan speed percentage (relative value) + snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); + native_event_t *ev_fan = &ntv_table.events[idx]; + ev_fan->id = idx; + ev_fan->name = strdup(name_buf); + ev_fan->descr = strdup(descr_buf); + ev_fan->device = d; + ev_fan->value = 0; + ev_fan->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; + ev_fan->variant = 0; // not used + ev_fan->subvariant = 0; + ev_fan->open_func = open_simple; + ev_fan->close_func = close_simple; + ev_fan->start_func = start_simple; + ev_fan->stop_func = stop_simple; + ev_fan->access_func = access_amdsmi_fan_speed; + htable_insert(htable, ev_fan->name, &ev_fan->id); + idx++; } -} -const char* amdsmi_temp_metric_desc(amdsmi_temperature_metric_t metric) { - switch (metric) { - case AMDSMI_TEMP_CURRENT: return "Current Temperature"; - case AMDSMI_TEMP_MAX: return "Max Observed Temperature"; - case AMDSMI_TEMP_MIN: return "Min Observed Temperature"; - case AMDSMI_TEMP_MAX_HYST: return "Max Temperature Hysteresis"; - case AMDSMI_TEMP_MIN_HYST: return "Min Temperature Hysteresis"; - case AMDSMI_TEMP_CRITICAL: return "Critical Temperature Threshold"; - case AMDSMI_TEMP_CRITICAL_HYST: return "Critical Temp Hysteresis"; - case AMDSMI_TEMP_EMERGENCY: return "Emergency Temperature"; - case AMDSMI_TEMP_EMERGENCY_HYST: return "Emergency Temp Hysteresis"; - case AMDSMI_TEMP_CRIT_MIN: return "Critical Min Temperature"; - case AMDSMI_TEMP_CRIT_MIN_HYST: return "Critical Min Temp Hysteresis"; - case AMDSMI_TEMP_OFFSET: return "Temperature Offset"; - case AMDSMI_TEMP_LOWEST: return "Lowest Historical Temperature"; - case AMDSMI_TEMP_HIGHEST: return "Highest Historical Temperature"; - case AMDSMI_TEMP_SHUTDOWN: return "Shutdown Temperature"; - default: return "Unknown Temperature Metric"; + + // VRAM memory usage and total for each device + for (int d = 0; d < device_count; ++d) { + // Total VRAM + snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); + native_event_t *ev_mem_tot = &ntv_table.events[idx]; + ev_mem_tot->id = idx; + ev_mem_tot->name = strdup(name_buf); + ev_mem_tot->descr = strdup(descr_buf); + ev_mem_tot->device = d; + ev_mem_tot->value = 0; + ev_mem_tot->mode = PAPI_MODE_READ; + ev_mem_tot->variant = AMDSMI_MEM_TYPE_VRAM; + ev_mem_tot->subvariant = 0; + ev_mem_tot->open_func = open_simple; + ev_mem_tot->close_func = close_simple; + ev_mem_tot->start_func = start_simple; + ev_mem_tot->stop_func = stop_simple; + ev_mem_tot->access_func = access_amdsmi_mem_total; + htable_insert(htable, ev_mem_tot->name, &ev_mem_tot->id); + idx++; + // Used VRAM + snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); + native_event_t *ev_mem_use = &ntv_table.events[idx]; + ev_mem_use->id = idx; + ev_mem_use->name = strdup(name_buf); + ev_mem_use->descr = strdup(descr_buf); + ev_mem_use->device = d; + ev_mem_use->value = 0; + ev_mem_use->mode = PAPI_MODE_READ; + ev_mem_use->variant = AMDSMI_MEM_TYPE_VRAM; + ev_mem_use->subvariant = 0; + ev_mem_use->open_func = open_simple; + ev_mem_use->close_func = close_simple; + ev_mem_use->start_func = start_simple; + ev_mem_use->stop_func = stop_simple; + ev_mem_use->access_func = access_amdsmi_mem_usage; + htable_insert(htable, ev_mem_use->name, &ev_mem_use->id); + idx++; } -} -const char* amdsmi_volt_metric_name(amdsmi_voltage_metric_t metric) { - switch (metric) { - case AMDSMI_VOLT_CURRENT: return "current"; - case AMDSMI_VOLT_MAX: return "max"; - case AMDSMI_VOLT_MIN_CRIT: return "min_crit"; - case AMDSMI_VOLT_MIN: return "min"; - case AMDSMI_VOLT_MAX_CRIT: return "max_crit"; - case AMDSMI_VOLT_AVERAGE: return "average"; - case AMDSMI_VOLT_LOWEST: return "lowest"; - case AMDSMI_VOLT_HIGHEST: return "highest"; - default: return "unknown"; + + // GPU power metrics: average power, power cap and cap range. + for (int d = 0; d < device_count; ++d) { + // Average power consumption (in microWatts) + snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (uW)", d); + native_event_t *ev_pwr_avg = &ntv_table.events[idx]; + ev_pwr_avg->id = idx; + ev_pwr_avg->name = strdup(name_buf); + ev_pwr_avg->descr = strdup(descr_buf); + ev_pwr_avg->device = d; + ev_pwr_avg->value = 0; + ev_pwr_avg->mode = PAPI_MODE_READ; + ev_pwr_avg->variant = 0; + ev_pwr_avg->subvariant = 0; + ev_pwr_avg->open_func = open_simple; + ev_pwr_avg->close_func = close_simple; + ev_pwr_avg->start_func = start_simple; + ev_pwr_avg->stop_func = stop_simple; + ev_pwr_avg->access_func = access_amdsmi_power_average; + htable_insert(htable, ev_pwr_avg->name, &ev_pwr_avg->id); + idx++; + // Power cap (current limit) + snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (uW)", d); + native_event_t *ev_pcap = &ntv_table.events[idx]; + ev_pcap->id = idx; + ev_pcap->name = strdup(name_buf); + ev_pcap->descr = strdup(descr_buf); + ev_pcap->device = d; + ev_pcap->value = 0; + ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; + ev_pcap->variant = 0; + ev_pcap->subvariant = 0; + ev_pcap->open_func = open_simple; + ev_pcap->close_func = close_simple; + ev_pcap->start_func = start_simple; + ev_pcap->stop_func = stop_simple; + ev_pcap->access_func = access_amdsmi_power_cap; + htable_insert(htable, ev_pcap->name, &ev_pcap->id); + idx++; + // Power cap range min + snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (uW)", d); + native_event_t *ev_pcap_min = &ntv_table.events[idx]; + ev_pcap_min->id = idx; + ev_pcap_min->name = strdup(name_buf); + ev_pcap_min->descr = strdup(descr_buf); + ev_pcap_min->device = d; + ev_pcap_min->value = 0; + ev_pcap_min->mode = PAPI_MODE_READ; + ev_pcap_min->variant = 1; // indicate min variant + ev_pcap_min->subvariant = 0; + ev_pcap_min->open_func = open_simple; + ev_pcap_min->close_func = close_simple; + ev_pcap_min->start_func = start_simple; + ev_pcap_min->stop_func = stop_simple; + ev_pcap_min->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_min->name, &ev_pcap_min->id); + idx++; + // Power cap range max + snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (uW)", d); + native_event_t *ev_pcap_max = &ntv_table.events[idx]; + ev_pcap_max->id = idx; + ev_pcap_max->name = strdup(name_buf); + ev_pcap_max->descr = strdup(descr_buf); + ev_pcap_max->device = d; + ev_pcap_max->value = 0; + ev_pcap_max->mode = PAPI_MODE_READ; + ev_pcap_max->variant = 2; // indicate max variant + ev_pcap_max->subvariant = 0; + ev_pcap_max->open_func = open_simple; + ev_pcap_max->close_func = close_simple; + ev_pcap_max->start_func = start_simple; + ev_pcap_max->stop_func = stop_simple; + ev_pcap_max->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_max->name, &ev_pcap_max->id); + idx++; } -} -const char* amdsmi_volt_metric_desc(amdsmi_voltage_metric_t metric) { - switch (metric) { - case AMDSMI_VOLT_CURRENT: return "Current Voltage"; - case AMDSMI_VOLT_MAX: return "Max Voltage"; - case AMDSMI_VOLT_MIN_CRIT: return "Critical Min Voltage"; - case AMDSMI_VOLT_MIN: return "Min Voltage"; - case AMDSMI_VOLT_MAX_CRIT: return "Critical Max Voltage"; - case AMDSMI_VOLT_AVERAGE: return "Average Voltage"; - case AMDSMI_VOLT_LOWEST: return "Lowest Voltage"; - case AMDSMI_VOLT_HIGHEST: return "Highest Voltage"; - default: return "Unknown Voltage Metric"; + + // PCIe throughput and replay counter + for (int d = 0; d < device_count; ++d) { + // PCIe sent + snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); + native_event_t *ev_pci_tx = &ntv_table.events[idx]; + ev_pci_tx->id = idx; + ev_pci_tx->name = strdup(name_buf); + ev_pci_tx->descr = strdup(descr_buf); + ev_pci_tx->device = d; + ev_pci_tx->value = 0; + ev_pci_tx->mode = PAPI_MODE_READ; + ev_pci_tx->variant = 0; // variant 0 for sent + ev_pci_tx->subvariant = 0; + ev_pci_tx->open_func = open_simple; + ev_pci_tx->close_func = close_simple; + ev_pci_tx->start_func = start_simple; + ev_pci_tx->stop_func = stop_simple; + ev_pci_tx->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_pci_tx->name, &ev_pci_tx->id); + idx++; + // PCIe received + snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); + native_event_t *ev_pci_rx = &ntv_table.events[idx]; + ev_pci_rx->id = idx; + ev_pci_rx->name = strdup(name_buf); + ev_pci_rx->descr = strdup(descr_buf); + ev_pci_rx->device = d; + ev_pci_rx->value = 0; + ev_pci_rx->mode = PAPI_MODE_READ; + ev_pci_rx->variant = 1; // variant 1 for received + ev_pci_rx->subvariant = 0; + ev_pci_rx->open_func = open_simple; + ev_pci_rx->close_func = close_simple; + ev_pci_rx->start_func = start_simple; + ev_pci_rx->stop_func = stop_simple; + ev_pci_rx->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_pci_rx->name, &ev_pci_rx->id); + idx++; + // PCIe max packet size + snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); + native_event_t *ev_pci_pkt = &ntv_table.events[idx]; + ev_pci_pkt->id = idx; + ev_pci_pkt->name = strdup(name_buf); + ev_pci_pkt->descr = strdup(descr_buf); + ev_pci_pkt->device = d; + ev_pci_pkt->value = 0; + ev_pci_pkt->mode = PAPI_MODE_READ; + ev_pci_pkt->variant = 2; // variant 2 for max packet + ev_pci_pkt->subvariant = 0; + ev_pci_pkt->open_func = open_simple; + ev_pci_pkt->close_func = close_simple; + ev_pci_pkt->start_func = start_simple; + ev_pci_pkt->stop_func = stop_simple; + ev_pci_pkt->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_pci_pkt->name, &ev_pci_pkt->id); + idx++; + // PCIe replay counter + snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); + native_event_t *ev_pci_replay = &ntv_table.events[idx]; + ev_pci_replay->id = idx; + ev_pci_replay->name = strdup(name_buf); + ev_pci_replay->descr = strdup(descr_buf); + ev_pci_replay->device = d; + ev_pci_replay->value = 0; + ev_pci_replay->mode = PAPI_MODE_READ; + ev_pci_replay->variant = 0; + ev_pci_replay->subvariant = 0; + ev_pci_replay->open_func = open_simple; + ev_pci_replay->close_func = close_simple; + ev_pci_replay->start_func = start_simple; + ev_pci_replay->stop_func = stop_simple; + ev_pci_replay->access_func = access_amdsmi_pci_replay_counter; + htable_insert(htable, ev_pci_replay->name, &ev_pci_replay->id); + idx++; } + + // (Optional) GPU metrics group events could be added here, e.g., GPU utilization. + // For brevity, not enumerating all fields of amdsmi_gpu_metrics_t. + + ntv_table.count = idx; + return PAPI_OK; } -// Access functions: perform the actual read or write for each event type -static int access_temp_metric(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - int64_t temp = 0; - amdsmi_status_t status = amdsmi_get_temp_metric_p(ph, - (amdsmi_temperature_type_t)event->subvariant, - (amdsmi_temperature_metric_t)event->variant, - &temp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - // The temperature is in millidegrees Celsius; convert to millideg or deg as needed. - event->value = (long long) temp; - } else if (mode == AMDSMI_MODE_WRITE) { - // No write available for temperature metrics - return PAPI_ENOEVNT; +static int +shutdown_event_table(void) +{ + // Free allocated names and descriptions + for (int i = 0; i < ntv_table.count; ++i) { + htable_delete(htable, ntv_table.events[i].name); + papi_free(ntv_table.events[i].name); + papi_free(ntv_table.events[i].descr); } + papi_free(ntv_table.events); + ntv_table.events = NULL; + ntv_table.count = 0; return PAPI_OK; } -static int access_volt_metric(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - int64_t volt = 0; - amdsmi_status_t status = amdsmi_get_gpu_volt_metric_p(ph, - (amdsmi_voltage_type_t)event->subvariant, - (amdsmi_voltage_metric_t)event->variant, - &volt); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) volt; - } else { - return PAPI_ENOEVNT; - } +static int +init_device_table(void) +{ + // Nothing to do; device_handles and device_count are set in amds_init. return PAPI_OK; } -static int access_busy_percent(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - uint32_t busy = 0; - if (amdsmi_get_gpu_busy_percent_p(ph, &busy) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) busy; - } else { - return PAPI_ENOEVNT; +static int +shutdown_device_table(void) +{ + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; } + device_count = 0; return PAPI_OK; } -static int access_memory_total(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - uint64_t total = 0; - if (amdsmi_get_gpu_memory_total_p(ph, (amdsmi_memory_type_t)event->variant, &total) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) total; - } else { - return PAPI_ENOEVNT; +/* Access function implementations */ + +static int +access_amdsmi_temp_metric(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; } - return PAPI_OK; + amdsmi_status_t status; + status = amdsmi_get_temp_metric_p(device_handles[event->device], + (amdsmi_temperature_type_t) event->subvariant, + (amdsmi_temperature_metric_t) event->variant, + (int64_t *) &event->value); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } -static int access_memory_usage(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - uint64_t used = 0; - if (amdsmi_get_gpu_memory_usage_p(ph, (amdsmi_memory_type_t)event->variant, &used) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) used; - } else { - return PAPI_ENOEVNT; +static int +access_amdsmi_fan_rpms(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; } + int64_t speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = speed; return PAPI_OK; } -static int access_fan_rpms(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - int64_t rpm = 0; - if (amdsmi_get_gpu_fan_rpms_p(ph, 0, &rpm) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; +static int +access_amdsmi_fan_speed(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode == PAPI_MODE_READ) { + int64_t val = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], event->subvariant, &val); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } - event->value = (long long) rpm; - } else { - return PAPI_ENOEVNT; + event->value = val; + return PAPI_OK; + } else if (mode == PAPI_MODE_WRITE) { + // Writing fan speed (in RPMs expected for set function) + uint64_t rpm_val = (uint64_t) event->value; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &event->value); + // Actually, AMD SMI might have a separate function to set fan speed (in RPM). Assume amdsmi_set_gpu_fan_speed exists: + // status = amdsmi_set_gpu_fan_speed_p(device_handles[event->device], event->subvariant, rpm_val); + // Without actual symbol, skip implementing fan speed setting. + (void) rpm_val; + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_ENOSUPP); } - return PAPI_OK; + return PAPI_ENOSUPP; } -static int access_fan_speed(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - int64_t speed = 0; - if (amdsmi_get_gpu_fan_speed_p(ph, 0, &speed) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) speed; - } else if (mode == AMDSMI_MODE_WRITE) { - // Write desired fan speed (requires root privileges and sensor index 0) - uint64_t new_speed = (uint64_t) event->value; - if (amdsmi_set_gpu_fan_speed_p(ph, 0, new_speed) != AMDSMI_STATUS_SUCCESS) { - return PAPI_EPERM; - } +static int +access_amdsmi_mem_total(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } + event->value = (int64_t) data; return PAPI_OK; } -static int access_fan_speed_max(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - uint64_t max_speed = 0; - if (amdsmi_get_gpu_fan_speed_max_p(ph, 0, &max_speed) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - event->value = (long long) max_speed; - } else { - return PAPI_ENOEVNT; +static int +access_amdsmi_mem_usage(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } + event->value = (int64_t) data; return PAPI_OK; } -static int access_power_info(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - if (mode == AMDSMI_MODE_READ) { - amdsmi_power_info_t info; - if (amdsmi_get_gpu_power_info_p(ph, 0, &info) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } - if (event->variant == 0) { - // current power in W (Linux) - event->value = (long long) info.current_socket_power; - } else if (event->variant == 1) { - event->value = (long long) info.average_socket_power; - } else if (event->variant == 2) { - event->value = (long long) info.gfx_voltage; - } else { - return PAPI_EINVAL; +static int +access_amdsmi_power_cap(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode == PAPI_MODE_READ) { + // Use amdsmi_get_power_cap_info to retrieve current cap + amdsmi_power_cap_info_t info; + amdsmi_status_t status = amdsmi_get_gpu_power_cap_info_p(device_handles[event->device], &info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } - } else { - return PAPI_ENOEVNT; + // The struct likely has current power_cap in microWatts + // Assuming info.current is the current power cap + event->value = (int64_t) info.power_cap; + return PAPI_OK; + } else if (mode == PAPI_MODE_WRITE) { + // Set new power cap from event->value (in microWatts) + uint64_t new_cap = (uint64_t) event->value; + amdsmi_status_t status = amdsmi_get_gpu_power_cap_set_p(device_handles[event->device], 0, new_cap); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } - return PAPI_OK; + return PAPI_ENOSUPP; } -// XGMI performance counter events access -static int open_xgmi_event(void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_processor_handle ph = device_table[event->device].handle; - amdsmi_event_handle_t evt_handle; - amdsmi_status_t status = amdsmi_gpu_create_counter_p(ph, (amdsmi_event_type_t)event->variant, &evt_handle); +static int +access_amdsmi_power_cap_range(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_power_cap_info_t info; + amdsmi_status_t status = amdsmi_get_gpu_power_cap_info_p(device_handles[event->device], &info); if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; + return PAPI_EMISC; + } + if (event->variant == 1) { + // min + event->value = (int64_t) info.min_power_cap; + } else if (event->variant == 2) { + // max + event->value = (int64_t) info.max_power_cap; + } else { + return PAPI_EMISC; } - // Store event handle in scratch space - *((amdsmi_event_handle_t *) event->scratch) = evt_handle; return PAPI_OK; } -static int close_xgmi_event(void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); - if (evt_handle) { - amdsmi_gpu_destroy_counter_p(evt_handle); - *((amdsmi_event_handle_t *) event->scratch) = 0; + +static int +access_amdsmi_power_average(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t power = 0; + // sensor_id = 0 (only one power sensor) + amdsmi_status_t status = amdsmi_get_gpu_power_ave_p(device_handles[event->device], 0, &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } + event->value = (int64_t) power; return PAPI_OK; } -static int start_xgmi_event(void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); - if (evt_handle) { - if (amdsmi_gpu_control_counter_p(evt_handle, AMDSMI_CNTR_CMD_START, NULL) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } + +static int +access_amdsmi_pci_throughput(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t sent=0, received=0, max_pkt=0; + amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch(event->variant) { + case 0: event->value = (int64_t) sent; break; + case 1: event->value = (int64_t) received; break; + case 2: event->value = (int64_t) max_pkt; break; + default: return PAPI_EMISC; } return PAPI_OK; } -static int stop_xgmi_event(void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); - if (evt_handle) { - if (amdsmi_gpu_control_counter_p(evt_handle, AMDSMI_CNTR_CMD_STOP, NULL) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; - } + +static int +access_amdsmi_pci_replay_counter(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t counter = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; } + event->value = (int64_t) counter; return PAPI_OK; } -static int access_xgmi_counter(amdsmi_access_mode_t mode, void *event_ptr) { - ntv_event_t *event = (ntv_event_t *) event_ptr; - if (mode == AMDSMI_MODE_READ) { - amdsmi_event_handle_t evt_handle = *((amdsmi_event_handle_t *) event->scratch); - if (!evt_handle) return PAPI_ECMP; - amdsmi_counter_value_t cv; - if (amdsmi_gpu_read_counter_p(evt_handle, &cv) != AMDSMI_STATUS_SUCCESS) { - return PAPI_ECMP; + +static int +access_amdsmi_clk_freq(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + // For simplicity, we only handle read of "current" frequency and count in this implementation + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_frequencies_t freq_info; + amdsmi_status_t status = amdsmi_get_gpu_clk_freq_info_p(device_handles[event->device], + (amdsmi_clk_type_t) event->variant, &freq_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->subvariant == 0) { // count + event->value = freq_info.num_supported; + } else if (event->subvariant == 1) { // current + // Assuming frequencies array and current index are part of freq_info + // If freq_info.current is available: + // event->value = freq_info.frequency[freq_info.current]; + // else, assume first element is current frequency + if (freq_info.num_supported > 0) { + event->value = freq_info.frequency[0]; + } else { + event->value = 0; } - // The counter value (cv.value) is number of beats (each 32 bytes). Use that as value. - event->value = (long long) cv.value; } else { - return PAPI_ENOEVNT; + // idx = specific index beyond 'current' + int idx = event->subvariant - 2; + if (idx >= 0 && idx < freq_info.num_supported) { + event->value = freq_info.frequency[idx]; + } else { + return PAPI_EMISC; + } } return PAPI_OK; } -// Access XGMI bandwidth (if any events provided; e.g., total throughput if needed) ? not implemented here -static int access_xgmi_bw(amdsmi_access_mode_t mode, void *event_ptr) { - (void)mode; (void)event_ptr; - return PAPI_ENOEVNT; +static int +access_amdsmi_gpu_metrics(int mode, void *arg) +{ + native_event_t *event = (native_event_t *) arg; + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_gpu_metrics_t metrics; + amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // This would parse metrics structure and set event->value for the specific metric field. + // (Not fully implemented here due to complexity) + return PAPI_OK; } diff --git a/src/components/amd_smi/amds.h b/src/components/amd_smi/amds.h index 8865e16a8..86ec5fc27 100644 --- a/src/components/amd_smi/amds.h +++ b/src/components/amd_smi/amds.h @@ -1,186 +1,31 @@ -//----------------------------------------------------------------------------- -// @file amdsmi.h -// -// @brief Header for AMD SMI PAPI component. Defines structures and function -// prototypes used by linux-amd-smi.c and amdsmi.c. -//----------------------------------------------------------------------------- +#ifndef __AMDS_H__ +#define __AMDS_H__ -#ifndef PAPI_AMDSMI_H -#define PAPI_AMDSMI_H +#define AMDS_EVENTS_OPENED (0x1) +#define AMDS_EVENTS_RUNNING (0x2) -#include +typedef struct amds_ctx *amds_ctx_t; -// AMD SMI handle types (opaque handles to sockets and processors) -typedef uint32_t amdsmi_socket_handle; -typedef uint32_t amdsmi_processor_handle; +/* initialization and shutdown */ +int amds_init(void); +int amds_shutdown(void); -// AMD SMI status code -typedef int32_t amdsmi_status_t; -#define AMDSMI_STATUS_SUCCESS 0 +/* native event queries */ +int amds_evt_enum(unsigned int *EventCode, int modifier); +int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len); +int amds_evt_name_to_code(const char *name, unsigned int *EventCode); +int amds_evt_code_to_name(unsigned int EventCode, char *name, int len); -// Initialization flags -#define AMDSMI_INIT_AMD_GPUS (1 << 1) -#define AMDSMI_INIT_AMD_CPUS (1 << 0) // not used in this component +/* error handling */ +int amds_err_get_last(const char **err_string); -// Temperature sensor types (see AMD SMI API) -typedef enum { - AMDSMI_TEMPERATURE_TYPE_FIRST = 0, - AMDSMI_TEMPERATURE_TYPE_EDGE = 0, - AMDSMI_TEMPERATURE_TYPE_HOTSPOT = 1, - AMDSMI_TEMPERATURE_TYPE_JUNCTION = 1, // alias - AMDSMI_TEMPERATURE_TYPE_VRAM = 2, - AMDSMI_TEMPERATURE_TYPE_HBM_0 = 3, - AMDSMI_TEMPERATURE_TYPE_HBM_1 = 4, - AMDSMI_TEMPERATURE_TYPE_HBM_2 = 5, - AMDSMI_TEMPERATURE_TYPE_HBM_3 = 6, - AMDSMI_TEMPERATURE_TYPE_PLX = 7, - AMDSMI_TEMPERATURE_TYPE__MAX = AMDSMI_TEMPERATURE_TYPE_PLX -} amdsmi_temperature_type_t; +/* profiling context operations */ +int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx); +int amds_ctx_close(amds_ctx_t ctx); +int amds_ctx_start(amds_ctx_t ctx); +int amds_ctx_stop(amds_ctx_t ctx); +int amds_ctx_read(amds_ctx_t ctx, long long **counts); +int amds_ctx_write(amds_ctx_t ctx, long long *counts); +int amds_ctx_reset(amds_ctx_t ctx); -// Temperature metric types -typedef enum { - AMDSMI_TEMP_CURRENT = 0, - AMDSMI_TEMP_FIRST = AMDSMI_TEMP_CURRENT, - AMDSMI_TEMP_MAX, - AMDSMI_TEMP_MIN, - AMDSMI_TEMP_MAX_HYST, - AMDSMI_TEMP_MIN_HYST, - AMDSMI_TEMP_CRITICAL, - AMDSMI_TEMP_CRITICAL_HYST, - AMDSMI_TEMP_EMERGENCY, - AMDSMI_TEMP_EMERGENCY_HYST, - AMDSMI_TEMP_CRIT_MIN, - AMDSMI_TEMP_CRIT_MIN_HYST, - AMDSMI_TEMP_OFFSET, - AMDSMI_TEMP_LOWEST, - AMDSMI_TEMP_HIGHEST, - AMDSMI_TEMP_SHUTDOWN, - AMDSMI_TEMP_LAST = AMDSMI_TEMP_SHUTDOWN -} amdsmi_temperature_metric_t; - -// Voltage sensor types (for GPU, only VDDGFX is applicable) -typedef enum { - AMDSMI_VOLT_TYPE_FIRST = 0, - AMDSMI_VOLT_TYPE_VDDGFX = 0, - AMDSMI_VOLT_TYPE_LAST = AMDSMI_VOLT_TYPE_VDDGFX -} amdsmi_voltage_type_t; - -// Voltage metric types -typedef enum { - AMDSMI_VOLT_CURRENT = 0, - AMDSMI_VOLT_FIRST = AMDSMI_VOLT_CURRENT, - AMDSMI_VOLT_MAX, - AMDSMI_VOLT_MIN_CRIT, - AMDSMI_VOLT_MIN, - AMDSMI_VOLT_MAX_CRIT, - AMDSMI_VOLT_AVERAGE, - AMDSMI_VOLT_LOWEST, - AMDSMI_VOLT_HIGHEST, - AMDSMI_VOLT_LAST = AMDSMI_VOLT_HIGHEST -} amdsmi_voltage_metric_t; - -// Memory types for GPU memory queries -typedef enum { - AMDSMI_MEM_TYPE_VRAM = 0, - AMDSMI_MEM_TYPE_VIS_VRAM = 1, // visible VRAM (aperture) - AMDSMI_MEM_TYPE_GTT = 2 // GTT (system memory) -} amdsmi_memory_type_t; - -// Clock types (for amdsmi_get_clk_freq) -typedef enum { - AMDSMI_CLK_TYPE_SYS = 0, - AMDSMI_CLK_TYPE_FIRST = AMDSMI_CLK_TYPE_SYS, - AMDSMI_CLK_TYPE_GFX = AMDSMI_CLK_TYPE_SYS, // alias - AMDSMI_CLK_TYPE_DF, - AMDSMI_CLK_TYPE_DCEF, - AMDSMI_CLK_TYPE_SOC, - AMDSMI_CLK_TYPE_MEM, - AMDSMI_CLK_TYPE_PCIE, - AMDSMI_CLK_TYPE_VCLK0, - AMDSMI_CLK_TYPE_VCLK1, - AMDSMI_CLK_TYPE_DCLK0, - AMDSMI_CLK_TYPE_DCLK1, - AMDSMI_CLK_TYPE__MAX = AMDSMI_CLK_TYPE_DCLK1 -} amdsmi_clk_type_t; - -// AMD SMI structures for power info -typedef struct { - // On Linux bare-metal: - uint32_t current_socket_power; // Current power (W) - uint32_t average_socket_power; // Average power (W) - uint32_t gfx_voltage; // GFX voltage (mV) - uint32_t power_limit; // Power limit (W) - uint32_t reserved[2]; -} amdsmi_power_info_t; - -// GPU clock frequencies structure -#define AMDSMI_MAX_NUM_FREQUENCIES 64 -typedef struct { - uint32_t num_supported; - uint32_t current; // index of current frequency or current frequency value (Hz) - uint64_t frequency[AMDSMI_MAX_NUM_FREQUENCIES]; -} amdsmi_frequencies_t; - -// Performance counter event groups and types (for XGMI) -typedef enum { - AMDSMI_EVNT_GRP_XGMI = 0, - // For simplicity, use event group code directly as in AMD SMI - AMDSMI_EVNT_GRP_XGMI_DATA_OUT = 10 -} amdsmi_event_group_t; -typedef uint32_t amdsmi_event_type_t; -#define AMDSMI_EVNT_XGMI_DATA_OUT_0 ((amdsmi_event_type_t)0) // assume continuous range for link events - -// Performance counter handle and value -typedef uint64_t amdsmi_event_handle_t; -typedef enum { - AMDSMI_CNTR_CMD_START = 0, - AMDSMI_CNTR_CMD_STOP -} amdsmi_counter_command_t; -typedef struct { - uint64_t value; - uint64_t time_enabled; - uint64_t time_running; -} amdsmi_counter_value_t; - -// Internal access mode -typedef enum { - AMDSMI_MODE_READ, - AMDSMI_MODE_WRITE -} amdsmi_access_mode_t; - -// Internal context for an open EventSet (structure defined in amdsmi.c) -struct amdsmi_ctx { - unsigned int *events_id; - int num_events; - long long *counters; - int32_t device_mask; - int state; -}; -typedef struct amdsmi_ctx* amdsmi_ctx_t; - -// Public API functions provided by amdsmi.c -int amdsmi_init(void); -int amdsmi_shutdown(void); -int amdsmi_err_get_last(const char **err_string); - -// Context management -int amdsmi_ctx_open(unsigned int *events_id, int num_events, amdsmi_ctx_t *ctx); -int amdsmi_ctx_close(amdsmi_ctx_t ctx); -int amdsmi_ctx_start(amdsmi_ctx_t ctx); -int amdsmi_ctx_stop(amdsmi_ctx_t ctx); -int amdsmi_ctx_read(amdsmi_ctx_t ctx, long long **values); -int amdsmi_ctx_write(amdsmi_ctx_t ctx, long long *values); -int amdsmi_ctx_reset(amdsmi_ctx_t ctx); - -// Native event enumeration and name/description mapping -int amdsmi_evt_enum(unsigned int *event_code, int modifier); -int amdsmi_evt_code_to_name(unsigned int event_code, char *name, int len); -int amdsmi_evt_code_to_descr(unsigned int event_code, char *descr, int len); -int amdsmi_evt_name_to_code(const char *name, unsigned int *event_code); - -// Internal event table management -int init_event_table(void); -int shutdown_event_table(void); - -// Utility to get last error (internal) -#endif // PAPI_AMDSMI_H +#endif /* __AMDS_H__ */ diff --git a/src/components/amd_smi/htable.c b/src/components/amd_smi/htable.h similarity index 95% rename from src/components/amd_smi/htable.c rename to src/components/amd_smi/htable.h index 3240f2a9c..51f6e799e 100644 --- a/src/components/amd_smi/htable.c +++ b/src/components/amd_smi/htable.h @@ -1,7 +1,7 @@ /** * @file htable.h - * @author Dong Jun Woun - * djwoun@gmail.com + * @author Giuseppe Congiu + * gcongiu@icl.utk.edu * */ #ifndef __HTABLE_H__ diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 8429d0888..70492175e 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -1,9 +1,13 @@ //----------------------------------------------------------------------------- // @file linux-amd-smi.c // -// @brief PAPI component for AMD SMI (System Management Interface) on Linux. -// Bridges PAPI to AMD GPU monitoring via libamd_smi.so. +// @ingroup amd_smi_components +// +// @brief This implements a PAPI component that enables PAPI-C to access +// hardware system management controls for AMD GPU devices through the +// AMD SMI library. //----------------------------------------------------------------------------- + #include #include #include @@ -14,299 +18,343 @@ #include "papi_vector.h" #include "papi_memory.h" #include "extras.h" -#include "amd_smi/amdsmi.h" #include "amds.h" -// PAPI component context (per thread) typedef struct { int initialized; int state; int component_id; } amdsmi_context_t; -// PAPI component control state (per EventSet) typedef struct { - unsigned int *events_id; // array of native event indices - int num_events; // number of events in the array + unsigned int *events_id; + int num_events; int component_id; - amdsmi_ctx_t amdsmi_ctx; // handle to internal AMD SMI context for the eventset + amds_ctx_t amds_ctx; } amdsmi_control_t; -// Lock for thread safety extern unsigned int _amd_smi_lock; -papi_vector_t _amd_smi_vector; // exported to PAPI core +papi_vector_t _amd_smi_vector; -// Forward declarations of component callbacks static int _amd_smi_init_private(void); -static int _amd_smi_init_component(int cidx); -static int _amd_smi_init_thread(hwd_context_t *ctx); -static int _amd_smi_shutdown_component(void); -static int _amd_smi_shutdown_thread(hwd_context_t *ctx); -static int _amd_smi_init_control_state(hwd_control_state_t *ctrl); -static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, - int nativeCount, hwd_context_t *ctx); -static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl); -static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl); -static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags); -static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values); -static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl); -static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl); -static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option); -static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain); -static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier); -static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len); -static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *descr, int len); -static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode); - -// Helper to ensure component is initialized (calls _amd_smi_init_private on first use) -static int _amd_smi_check_n_initialize(void) { + +static int +_amd_smi_check_n_initialize(void) +{ if (!_amd_smi_vector.cmp_info.initialized) return _amd_smi_init_private(); return _amd_smi_vector.cmp_info.disabled; } -// Initialize per-thread context (called when a thread registers this component) -static int _amd_smi_init_thread(hwd_context_t *ctx) { - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - memset(amd_ctx, 0, sizeof(*amd_ctx)); - amd_ctx->initialized = 1; - amd_ctx->component_id = _amd_smi_vector.cmp_info.CmpIdx; +static int +_amd_smi_init_thread(hwd_context_t *ctx) +{ + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + memset(amdsmi_ctx, 0, sizeof(*amdsmi_ctx)); + amdsmi_ctx->initialized = 1; + amdsmi_ctx->component_id = _amd_smi_vector.cmp_info.CmpIdx; return PAPI_OK; } -// Initialize component (called when PAPI_library_init() or component is first used) -static int _amd_smi_init_component(int cidx) { - // Set component index and mark not initialized until first use +static int +_amd_smi_init_component(int cidx) +{ _amd_smi_vector.cmp_info.CmpIdx = cidx; _amd_smi_vector.cmp_info.num_native_events = -1; _amd_smi_vector.cmp_info.num_cntrs = -1; + _amd_smi_vector.cmp_info.num_mpx_cntrs = -1; _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; sprintf(_amd_smi_vector.cmp_info.disabled_reason, "Not initialized. Access component events to initialize it."); _amd_smi_vector.cmp_info.disabled = PAPI_EDELAY_INIT; + return PAPI_EDELAY_INIT; } -// Internal one-time initialization: load AMD SMI library and build event table -static int _amd_smi_init_private(void) { +static int +evt_get_count(int *count) +{ + unsigned int event_code = 0; + if (amds_evt_enum(&event_code, PAPI_ENUM_FIRST) == PAPI_OK) { + ++(*count); + } + while (amds_evt_enum(&event_code, PAPI_ENUM_EVENTS) == PAPI_OK) { + ++(*count); + } + return PAPI_OK; +} + +static int +_amd_smi_init_private(void) +{ int papi_errno = PAPI_OK; PAPI_lock(COMPONENT_LOCK); + if (_amd_smi_vector.cmp_info.initialized) { papi_errno = _amd_smi_vector.cmp_info.disabled; goto fn_exit; } - // Initialize AMD SMI component (load library, enumerate events) - papi_errno = amdsmi_init(); // calls dynamic loading and event table setup + + papi_errno = amds_init(); if (papi_errno != PAPI_OK) { - // On failure, disable component with error code _amd_smi_vector.cmp_info.disabled = papi_errno; const char *error_str; - amdsmi_err_get_last(&error_str); // get last error string from amdsmi - snprintf(_amd_smi_vector.cmp_info.disabled_reason, PAPI_MAX_STR_LEN, "%s", error_str); - goto fn_exit; + amds_err_get_last(&error_str); + sprintf(_amd_smi_vector.cmp_info.disabled_reason, "%s", error_str); + goto fn_fail; } - // Set number of native events and counters from amdsmi - _amd_smi_vector.cmp_info.num_native_events = amdsmi_get_event_count(); - _amd_smi_vector.cmp_info.num_cntrs = _amd_smi_vector.cmp_info.num_native_events; - _amd_smi_vector.cmp_info.available_domains = PAPI_DOM_USER; - _amd_smi_vector.cmp_info.initialized = 1; - _amd_smi_vector.cmp_info.disabled = PAPI_OK; + + int count = 0; + papi_errno = evt_get_count(&count); + _amd_smi_vector.cmp_info.num_native_events = count; + _amd_smi_vector.cmp_info.num_cntrs = count; + _amd_smi_vector.cmp_info.num_mpx_cntrs = count; + fn_exit: + _amd_smi_vector.cmp_info.initialized = 1; + _amd_smi_vector.cmp_info.disabled = papi_errno; PAPI_unlock(COMPONENT_LOCK); return papi_errno; +fn_fail: + goto fn_exit; } -// Initialize a new control state (EventSet) -static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - memset(ctl, 0, sizeof(*ctl)); - ctl->component_id = _amd_smi_vector.cmp_info.CmpIdx; - return PAPI_OK; +static int +_amd_smi_init_control_state(hwd_control_state_t *ctrl) +{ + (void) ctrl; // unused + return _amd_smi_check_n_initialize(); } -// Update control state with a new list of events -static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, - int nativeCount, hwd_context_t *ctx) { +static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount); +static int try_open_events(amdsmi_control_t *ctl); + +static int +_amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, int nativeCount, hwd_context_t *ctx) +{ int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) return papi_errno; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - amdsmi_context_t *tctx = (amdsmi_context_t *) ctx; - if (tctx->state & AMDSMI_EVENTS_RUNNING) { - // cannot update while running - return PAPI_EISRUN; + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { + return PAPI_EMISC; + } + papi_errno = update_native_events(amdsmi_ctl, nativeInfo, nativeCount); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return try_open_events(amdsmi_ctl); +} + +static int +update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) +{ + int papi_errno = PAPI_OK; + unsigned int *events = papi_calloc(ntvCount, sizeof(*events)); + if (events == NULL) { + return PAPI_ENOMEM; } - // Allocate and store native event codes - unsigned int *events = (unsigned int *) papi_calloc(nativeCount, sizeof(unsigned int)); - if (!events && nativeCount > 0) return PAPI_ENOMEM; - for (int i = 0; i < nativeCount; ++i) { - events[i] = nativeInfo[i].ni_event; - nativeInfo[i].ni_position = i; + for (int i = 0; i < ntvCount; ++i) { + events[i] = ntvInfo[i].ni_event; + ntvInfo[i].ni_position = i; } - // Free old event list and assign new papi_free(ctl->events_id); ctl->events_id = events; - ctl->num_events = nativeCount; + ctl->num_events = ntvCount; + return papi_errno; +} + +static int +try_open_events(amdsmi_control_t *ctl) +{ + // No pre-opening needed in this design (events opened on start) return PAPI_OK; } -// Start counting events in an EventSet -static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { +static int +_amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) +{ int papi_errno = PAPI_OK; - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - if (amd_ctx->state & AMDSMI_EVENTS_OPENED) { - // events already opened, cannot start again without stop + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + + if (amdsmi_ctx->state & AMDS_EVENTS_OPENED) { return PAPI_EMISC; } - // Open and initialize the AMD SMI event context - papi_errno = amdsmi_ctx_open(ctl->events_id, ctl->num_events, &ctl->amdsmi_ctx); + papi_errno = amds_ctx_open(amdsmi_ctl->events_id, amdsmi_ctl->num_events, &amdsmi_ctl->amds_ctx); if (papi_errno != PAPI_OK) { return papi_errno; } - amd_ctx->state = AMDSMI_EVENTS_OPENED; - // Start the counters - papi_errno = amdsmi_ctx_start(ctl->amdsmi_ctx); + amdsmi_ctx->state = AMDS_EVENTS_OPENED; + + papi_errno = amds_ctx_start(amdsmi_ctl->amds_ctx); if (papi_errno != PAPI_OK) { - // failure: cleanup - amdsmi_ctx_close(ctl->amdsmi_ctx); - amd_ctx->state = 0; + // If start fails, close context + amds_ctx_close(amdsmi_ctl->amds_ctx); + amdsmi_ctx->state = 0; + amdsmi_ctl->amds_ctx = NULL; return papi_errno; } - amd_ctx->state |= AMDSMI_EVENTS_RUNNING; + amdsmi_ctx->state |= AMDS_EVENTS_RUNNING; return PAPI_OK; } -// Stop counting events and release resources for an EventSet -static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - int papi_errno = PAPI_OK; - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { +static int +_amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) +{ + (void) flags; // unused + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_EMISC; } - // Stop counters - papi_errno = amdsmi_ctx_stop(ctl->amdsmi_ctx); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - // Mark not running - amd_ctx->state &= ~AMDSMI_EVENTS_RUNNING; - // Close and free context - papi_errno = amdsmi_ctx_close(ctl->amdsmi_ctx); - amd_ctx->state = 0; - ctl->amdsmi_ctx = NULL; - return papi_errno; + return amds_ctx_read(amdsmi_ctl->amds_ctx, values); } -// Read current values from events in EventSet -static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, - long long **values, int flags) { - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { +static int +_amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) +{ + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_EMISC; } - return amdsmi_ctx_read(ctl->amdsmi_ctx, values); + return amds_ctx_write(amdsmi_ctl->amds_ctx, values); } -// Write values to controllable events (for events that support write) -static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { +static int +_amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) +{ + int papi_errno = PAPI_OK; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_EMISC; } - return amdsmi_ctx_write(ctl->amdsmi_ctx, values); + papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; + papi_errno = amds_ctx_close(amdsmi_ctl->amds_ctx); + amdsmi_ctx->state = 0; + amdsmi_ctl->amds_ctx = NULL; + return papi_errno; } -// Reset events in an EventSet to initial state (zero counters, etc.) -static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - if (!(amd_ctx->state & AMDSMI_EVENTS_RUNNING)) { +static int +_amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) +{ + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_EMISC; } - return amdsmi_ctx_reset(ctl->amdsmi_ctx); + return amds_ctx_reset(amdsmi_ctl->amds_ctx); } -// Cleanup EventSet (after stop, free allocated event list) -static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { - amdsmi_control_t *ctl = (amdsmi_control_t *) ctrl; - // Context should have been closed in stop. Ensure it's NULL. - if (ctl->amdsmi_ctx != NULL) { +static int +_amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) +{ + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (amdsmi_ctl->amds_ctx != NULL) { + // Context should be NULL if properly stopped return PAPI_EMISC; } - papi_free(ctl->events_id); - ctl->events_id = NULL; - ctl->num_events = 0; + papi_free(amdsmi_ctl->events_id); + amdsmi_ctl->events_id = NULL; + amdsmi_ctl->num_events = 0; return PAPI_OK; } -// Shutdown thread context -static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { - amdsmi_context_t *amd_ctx = (amdsmi_context_t *) ctx; - amd_ctx->state = 0; - amd_ctx->initialized = 0; +static int +_amd_smi_shutdown_thread(hwd_context_t *ctx) +{ + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_ctx->state = 0; + amdsmi_ctx->initialized = 0; return PAPI_OK; } -// Shutdown entire component (cleanup global resources) -static int _amd_smi_shutdown_component(void) { +static int +_amd_smi_shutdown_component(void) +{ if (!_amd_smi_vector.cmp_info.initialized) { return PAPI_EMISC; } if (_amd_smi_vector.cmp_info.disabled != PAPI_OK) { - // not successfully initialized return PAPI_EMISC; } - int papi_errno = amdsmi_shutdown(); + int papi_errno = amds_shutdown(); _amd_smi_vector.cmp_info.initialized = 0; return papi_errno; } -// Ioctl/ctl interface (not used, no custom options) -static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) { - (void)ctx; (void)code; (void)option; +static int +_amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) +{ + (void) ctx; (void) code; (void) option; + // No special control actions needed return PAPI_OK; } -// Set domain (User/Kernel, etc. - AMD SMI metrics are all user-space domain) -static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) { - (void)ctrl; - if (domain != PAPI_DOM_USER) { - return PAPI_EINVAL; - } +static int +_amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) +{ + (void) ctrl; (void) domain; + // This component only supports the default domain (user|kernel) return PAPI_OK; } -// Enumerate native events -static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) { - return amdsmi_evt_enum(EventCode, modifier); +static int +_amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) +{ + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_enum(EventCode, modifier); } -// Convert event code to name string -static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) { - return amdsmi_evt_code_to_name(EventCode, name, len); +static int +_amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) +{ + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_code_to_name(EventCode, name, len); } -// Convert event code to description string -static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *descr, int len) { - return amdsmi_evt_code_to_descr(EventCode, descr, len); +static int +_amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) +{ + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_name_to_code(name, EventCode); } -// Lookup event code by name -static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) { - return amdsmi_evt_name_to_code(name, EventCode); +static int +_amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) +{ + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_code_to_descr(EventCode, desc, len); } -// Define the component's function vector table papi_vector_t _amd_smi_vector = { .cmp_info = { .name = "amd_smi", .short_name = "amd_smi", .version = "1.0", - .description = "AMD GPU System Management Interface via libamd_smi", + .description = "AMD GPU System Management Interface via AMD SMI library", .default_domain = PAPI_DOM_USER, .default_granularity = PAPI_GRN_THR, .available_granularities = PAPI_GRN_THR, @@ -315,31 +363,30 @@ papi_vector_t _amd_smi_vector = { .fast_virtual_timer = 0, .attach = 0, .attach_must_ptrace = 0, - .available_domains = PAPI_DOM_USER, - .initialized = 0, + .available_domains = PAPI_DOM_USER | PAPI_DOM_KERNEL, }, .size = { .context = sizeof(amdsmi_context_t), .control_state = sizeof(amdsmi_control_t), - .reg_value = 1, - .reg_alloc = 1, + .reg_value = sizeof(int), + .reg_alloc = sizeof(int), }, + .init_thread = _amd_smi_init_thread, + .init_component = _amd_smi_init_component, + .init_control_state = _amd_smi_init_control_state, + .update_control_state = _amd_smi_update_control_state, .start = _amd_smi_start, .stop = _amd_smi_stop, .read = _amd_smi_read, .write = _amd_smi_write, .reset = _amd_smi_reset, .cleanup_eventset = _amd_smi_cleanup_eventset, - .init_component = _amd_smi_init_component, - .init_thread = _amd_smi_init_thread, - .init_control_state = _amd_smi_init_control_state, - .update_control_state = _amd_smi_update_control_state, + .shutdown_thread = _amd_smi_shutdown_thread, + .shutdown_component = _amd_smi_shutdown_component, .ctl = _amd_smi_ctrl, .set_domain = _amd_smi_set_domain, .ntv_enum_events = _amd_smi_ntv_enum_events, .ntv_code_to_name = _amd_smi_ntv_code_to_name, - .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, .ntv_name_to_code = _amd_smi_ntv_name_to_code, - .shutdown_thread = _amd_smi_shutdown_thread, - .shutdown_component = _amd_smi_shutdown_component, + .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, }; From a940429ff501f5a2880fb4dd7c6d694ca2bbbfeb Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 6 May 2025 06:34:10 +0000 Subject: [PATCH 004/147] update --- src/components/amd_smi/amds.c | 217 +++++++++++++++++++++++----------- 1 file changed, 149 insertions(+), 68 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index efcb6475e..e101a8a0b 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -28,16 +28,19 @@ static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, ui static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_busy_percent_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_power_cap_info_p)(amdsmi_processor_handle, amdsmi_power_cap_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); +static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, amdsmi_power_cap_info_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); +static amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_clk_freq_info_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); -static amdsmi_status_t (*amdsmi_set_gpu_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); +static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); + /* Global device list and count */ static int32_t device_count = 0; static amdsmi_processor_handle *device_handles = NULL; @@ -144,64 +147,117 @@ static int stop_simple(native_event_t *event) { } /* Load AMD SMI symbols using dlopen and dlsym */ -static int -load_amdsmi_sym(void) +/* helper ? try preferred symbol then optional fallback */ +static void *sym(const char *preferred, const char *fallback) { - int papi_errno = PAPI_OK; - char pathname[PATH_MAX] = {0}; - char *amdsmi_root = getenv("PAPI_AMDSMI_ROOT"); - if (amdsmi_root == NULL) { - sprintf(error_string, "Can't load libamd_smi.so, PAPI_AMDSMI_ROOT not set."); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; + void *p = dlsym(amds_dlp, preferred); + return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); +} + +/* ------------------------------------------------------------------------ */ +/* load_amdsmi_sym() */ +/* ------------------------------------------------------------------------ */ +static int load_amdsmi_sym(void) +{ + char so_path[PATH_MAX] = {0}; + const char *root = getenv("PAPI_AMDSMI_ROOT"); + if (!root) { + snprintf(error_string, sizeof(error_string), + "PAPI_AMDSMI_ROOT not set ? can¡¯t find libamd_smi.so"); + return PAPI_ENOSUPP; } - snprintf(pathname, PATH_MAX, "%s/lib/libamd_smi.so", amdsmi_root); - amds_dlp = dlopen(pathname, RTLD_NOW | RTLD_GLOBAL); + snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); + amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); if (!amds_dlp) { - sprintf(error_string, "%s", dlerror()); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; + snprintf(error_string, sizeof(error_string), + "dlopen(\"%s\"): %s", so_path, dlerror()); + return PAPI_ENOSUPP; } - // Load required symbols - amdsmi_init_p = dlsym(amds_dlp, "amdsmi_init"); - amdsmi_shut_down_p = dlsym(amds_dlp, "amdsmi_shut_down"); - amdsmi_get_socket_handles_p = dlsym(amds_dlp, "amdsmi_get_socket_handles"); - amdsmi_get_processor_handles_by_type_p = dlsym(amds_dlp, "amdsmi_get_processor_handles_by_type"); - amdsmi_get_temp_metric_p = dlsym(amds_dlp, "amdsmi_get_temp_metric"); - amdsmi_get_gpu_fan_rpms_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_rpms"); - amdsmi_get_gpu_fan_speed_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_speed"); - amdsmi_get_gpu_fan_speed_max_p = dlsym(amds_dlp, "amdsmi_get_gpu_fan_speed_max"); - amdsmi_get_total_memory_p = dlsym(amds_dlp, "amdsmi_get_total_memory"); - amdsmi_get_memory_usage_p = dlsym(amds_dlp, "amdsmi_get_memory_usage"); - amdsmi_get_gpu_busy_percent_p = dlsym(amds_dlp, "amdsmi_dev_busy_percent_get"); // possibly different naming in AMD SMI - amdsmi_get_gpu_power_cap_info_p = dlsym(amds_dlp, "amdsmi_get_power_cap_info"); - amdsmi_get_gpu_power_cap_set_p = dlsym(amds_dlp, "amdsmi_dev_set_power_cap"); - amdsmi_get_gpu_power_ave_p = dlsym(amds_dlp, "amdsmi_dev_get_power_ave"); - amdsmi_get_gpu_pci_throughput_p = dlsym(amds_dlp, "amdsmi_get_gpu_pci_throughput"); - amdsmi_get_gpu_pci_replay_counter_p = dlsym(amds_dlp, "amdsmi_get_gpu_pci_replay_counter"); - amdsmi_get_gpu_clk_freq_info_p = dlsym(amds_dlp, "amdsmi_get_gpu_clk_freq_info"); - amdsmi_set_gpu_clk_freq_p = dlsym(amds_dlp, "amdsmi_set_gpu_clk_freq"); - amdsmi_get_gpu_metrics_info_p = dlsym(amds_dlp, "amdsmi_get_gpu_metrics_info"); - - // Check that critical symbols are loaded - int missing = (!amdsmi_init_p || !amdsmi_shut_down_p || !amdsmi_get_socket_handles_p || !amdsmi_get_processor_handles_by_type_p || - !amdsmi_get_temp_metric_p || !amdsmi_get_gpu_fan_rpms_p || !amdsmi_get_gpu_fan_speed_p || !amdsmi_get_gpu_fan_speed_max_p || - !amdsmi_get_total_memory_p || !amdsmi_get_memory_usage_p || !amdsmi_get_gpu_power_cap_info_p || !amdsmi_get_gpu_power_ave_p || - !amdsmi_get_gpu_pci_throughput_p || !amdsmi_get_gpu_pci_replay_counter_p); - if (missing) { - sprintf(error_string, "Error while loading AMD SMI symbols."); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; + + /* ------------ resolve every function pointer ------------- */ + amdsmi_init_p = sym("amdsmi_init", NULL); + amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); + amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); + amdsmi_get_processor_handles_by_type_p= sym("amdsmi_get_processor_handles_by_type", + NULL); + + /* sensors ------------------------------------------------ */ + amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); + amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); + amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); + amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); + + /* memory ------------------------------------------------- */ + amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", + "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", + "amdsmi_get_memory_usage"); + + /* utilisation / activity -------------------------------- */ + amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", + "amdsmi_get_engine_usage"); /* old alias */ + + /* power -------------------------------------------------- */ + amdsmi_get_power_info_p = sym("amdsmi_get_power_info_v2", + "amdsmi_get_power_info"); + amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); + amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", + "amdsmi_dev_set_power_cap"); + + /* PCIe --------------------------------------------------- */ + amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); + amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", + NULL); + + /* clocks ------------------------------------------------- */ + amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); + amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); + + /* GPU metrics ------------------------------------------- */ + amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); + + /* ------------ verify required symbols ------------------ */ + struct { const char *name; void *ptr; } required[] = { + { "amdsmi_init", amdsmi_init_p }, + { "amdsmi_shut_down", amdsmi_shut_down_p }, + { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, + { "amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p }, + { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, + { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, + { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, + { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, + { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, + { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, + { "amdsmi_get_power_info", amdsmi_get_power_info_p }, + { "amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p }, + { "amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p }, + { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, + { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, + { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, + { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, + { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, + { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, + }; + + int miss = 0, pos = 0; + pos = snprintf(error_string, sizeof(error_string), + "Error loading AMD?SMI symbols:"); + for (size_t i = 0; i < sizeof(required)/sizeof(required[0]); ++i) { + if (!required[i].ptr) { + ++miss; + pos += snprintf(error_string + pos, + sizeof(error_string) - pos, + "\n %s", required[i].name); + } } - return PAPI_OK; -fn_fail: - if (amds_dlp) { - dlclose(amds_dlp); - amds_dlp = NULL; + if (miss) { /* something missing */ + dlclose(amds_dlp); amds_dlp = NULL; + return PAPI_ENOSUPP; } - return papi_errno; + return PAPI_OK; } + static int unload_amdsmi_sym(void) { @@ -216,14 +272,14 @@ unload_amdsmi_sym(void) amdsmi_get_gpu_fan_speed_max_p = NULL; amdsmi_get_total_memory_p = NULL; amdsmi_get_memory_usage_p = NULL; - amdsmi_get_gpu_busy_percent_p = NULL; - amdsmi_get_gpu_power_cap_info_p = NULL; - amdsmi_get_gpu_power_cap_set_p = NULL; - amdsmi_get_gpu_power_ave_p = NULL; + amdsmi_get_gpu_activity_p = NULL; + amdsmi_get_power_cap_info_p = NULL; + amdsmi_set_power_cap_p = NULL; + amdsmi_get_power_info_p = NULL; amdsmi_get_gpu_pci_throughput_p = NULL; amdsmi_get_gpu_pci_replay_counter_p = NULL; - amdsmi_get_gpu_clk_freq_info_p = NULL; - amdsmi_set_gpu_clk_freq_p = NULL; + amdsmi_get_clk_freq_p = NULL; + amdsmi_set_clk_freq_p = NULL; amdsmi_get_gpu_metrics_info_p = NULL; if (amds_dlp) { dlclose(amds_dlp); @@ -284,6 +340,11 @@ amds_init(void) processor_type_t processor_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; //ret = amdsmi_get_processor_type(gpu_handle[j], &processor_type); ///////////////////////////////////////////////////////////////////////FIX + ///////////////////////////////////////////////////////////////////////FIX + ///////////////////////////////////////////////////////////////////////FIX + ///////////////////////////////////////////////////////////////////////FIX + ///////////////////////////////////////////////////////////////////////FIX + ///////////////////////////////////////////////////////////////////////FIX status = amdsmi_get_processor_handles_by_type_p(sockets[s], processor_type, &gpu_handle, &gpu_count); if (status != AMDSMI_STATUS_SUCCESS) { @@ -952,7 +1013,7 @@ access_amdsmi_power_cap(int mode, void *arg) if (mode == PAPI_MODE_READ) { // Use amdsmi_get_power_cap_info to retrieve current cap amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_gpu_power_cap_info_p(device_handles[event->device], &info); + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], &info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -963,7 +1024,7 @@ access_amdsmi_power_cap(int mode, void *arg) } else if (mode == PAPI_MODE_WRITE) { // Set new power cap from event->value (in microWatts) uint64_t new_cap = (uint64_t) event->value; - amdsmi_status_t status = amdsmi_get_gpu_power_cap_set_p(device_handles[event->device], 0, new_cap); + amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } return PAPI_ENOSUPP; @@ -975,7 +1036,7 @@ access_amdsmi_power_cap_range(int mode, void *arg) native_event_t *event = (native_event_t *) arg; if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_gpu_power_cap_info_p(device_handles[event->device], &info); + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], &info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -996,13 +1057,13 @@ access_amdsmi_power_average(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t power = 0; + amdsmi_power_info_t power; // sensor_id = 0 (only one power sensor) - amdsmi_status_t status = amdsmi_get_gpu_power_ave_p(device_handles[event->device], 0, &power); + amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - event->value = (int64_t) power; + event->value = (int64_t) power.average_socket_power; return PAPI_OK; } @@ -1042,12 +1103,32 @@ access_amdsmi_pci_replay_counter(int mode, void *arg) static int access_amdsmi_clk_freq(int mode, void *arg) { +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p + +////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p +/* +clk_freq_def_t amd_smi_clocks[] = { + {AMDSMI_CLK_TYPE_SYS, "SelectedClk_SYS_MHz"}, // System clock, often represents GPU clock + {AMDSMI_CLK_TYPE_MEM, "SelectedClk_MEM_MHz"}, // Memory clock + {AMDSMI_CLK_TYPE_DF, "SelectedClk_DF_MHz"}, // Data Fabric clock (if needed and supported) + // {AMDSMI_CLK_TYPE_DCEF, "SelectedClk_DCEF_MHz"} // Display Controller clock (if needed and supported) +}; +*/ native_event_t *event = (native_event_t *) arg; // For simplicity, we only handle read of "current" frequency and count in this implementation if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_frequencies_t freq_info; - amdsmi_status_t status = amdsmi_get_gpu_clk_freq_info_p(device_handles[event->device], - (amdsmi_clk_type_t) event->variant, &freq_info); + amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS ,&freq_info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } From 33891faf5a097f834358deb1ae0b377c87cb5fad Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 5 May 2025 23:56:42 -0700 Subject: [PATCH 005/147] update --- src/components/amd_smi/amds.c | 22 +++++--- src/components/amd_smi/tests/Makefile | 74 +++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 src/components/amd_smi/tests/Makefile diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index e101a8a0b..6dc53cdce 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -335,8 +335,6 @@ amds_init(void) } for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count = 0; - // Get GPU processors for this socket - amdsmi_processor_handle gpu_handle; processor_type_t processor_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; //ret = amdsmi_get_processor_type(gpu_handle[j], &processor_type); ///////////////////////////////////////////////////////////////////////FIX @@ -346,19 +344,26 @@ amds_init(void) ///////////////////////////////////////////////////////////////////////FIX ///////////////////////////////////////////////////////////////////////FIX - status = amdsmi_get_processor_handles_by_type_p(sockets[s], processor_type, &gpu_handle, &gpu_count); - if (status != AMDSMI_STATUS_SUCCESS) { - continue; - } + status = amdsmi_get_processor_handles_by_type_p(sockets[s], + processor_type, + NULL, /* NULL buffer */ + &gpu_count); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count == 0) + continue; + if (gpu_count > 0) { // There might be multiple GPU handles if socket has multiple GPU dies (e.g., MI200 series GCDs). // For simplicity, handle one GPU per call. If gpu_count > 1, allocate accordingly. - amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count, sizeof(amdsmi_processor_handle)); + amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *)papi_calloc(gpu_count, + sizeof(*gpu_handles)); if (!gpu_handles) { papi_errno = PAPI_ENOMEM; continue; } - status = amdsmi_get_processor_handles_by_type_p(sockets[s], processor_type, gpu_handles, &gpu_count); + status = amdsmi_get_processor_handles_by_type_p(sockets[s], + processor_type, + gpu_handles, + &gpu_count); if (status == AMDSMI_STATUS_SUCCESS) { for (uint32_t g = 0; g < gpu_count; ++g) { device_handles[device_count++] = gpu_handles[g]; @@ -368,6 +373,7 @@ amds_init(void) } } papi_free(sockets); + if (device_count == 0) { sprintf(error_string, "No AMD GPU devices found."); papi_errno = PAPI_ENOEVNT; diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile new file mode 100644 index 000000000..ff39a392a --- /dev/null +++ b/src/components/amd_smi/tests/Makefile @@ -0,0 +1,74 @@ +# ***NOTE*** The Environment Variable PAPI_ROCM_ROOT must be defined for +# programs to compile correctly. one typical location is /opt/rocm, but +# contact your sysadmin if you cannot find it. +NAME=amd_smi +include ../../Makefile_comp_tests.target +PAPI_ROCM_ROOT ?= /opt/rocm +HIP_PATH= ${PAPI_ROCM_ROOT} +HIPCC=$(HIP_PATH)/bin/hipcc + +INCLUDE += -I$(PAPI_ROCM_ROOT)/include +INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi +INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hip +INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hsa +INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocprofiler +INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocblas +LDFLAGS = -ldl -g -L$(PAPI_ROCM_ROOT)/lib/rocblas -lrocblas + +%.o:%.c + @echo "INCLUDE=" $(INCLUDE) + $(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDE) -c -o $@ $< + +%.o:%.cpp + @echo "INCLUDE=" $(INCLUDE) + @echo "CFLAGS=" $(CFLAGS) + g++ $(CFLAGS) $(OPTFLAGS) $(INCLUDE) -c -o $@ $< + +TESTS = rocm_command_line rocm_smi_all power_monitor_rocm rocmsmi_example rocm_smi_writeTests + +rocm_smi_tests: $(TESTS) + +# Note: We compile .o separately from the executable link; some versions of hipcc +# have trouble managing libraries if we try to do both in a single step. + +rocm_command_line.o: rocm_command_line.cpp $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ + +rocm_command_line: rocm_command_line.o $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) + +rocm_smi_all.o: rocm_smi_all.cpp $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ + +rocm_smi_all: rocm_smi_all.o $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) + +power_monitor_rocm.o: power_monitor_rocm.cpp $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ + +power_monitor_rocm: power_monitor_rocm.o $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) + +rocmsmi_example.o: rocmsmi_example.cpp $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ + +rocmsmi_example: rocmsmi_example.o $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) -lpthread + +rocm_smi_writeTests.o: rocm_smi_writeTests.cpp $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ + +rocm_smi_writeTests: rocm_smi_writeTests.o $(UTILOBJS) $(PAPILIB) + $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) + +clean: + rm -f $(TESTS) *.o + +checkpath: + echo PAPI_ROCM_ROOT = $(PAPI_ROCM_ROOT) + echo HIP_PATH = $(HIP_PATH) + echo HIPCC = $(HIPCC) + echo INCLUDE = $(INCLUDE) + echo LDFLAGS = $(LDFLAGS) + echo CFLAGS = $(CFLAGS) + From 23e26c115d77d8a963e81cabe8b2f616d05b1599 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 6 May 2025 21:16:26 +0000 Subject: [PATCH 006/147] add simple testing --- src/components/amd_smi/tests/Makefile | 170 ++++---- .../amd_smi/tests/amdsmi_example.cpp | 137 ++++++ src/components/amd_smi/tests/gemm.cpp | 391 ++++++++++++++++++ src/components/amd_smi/tests/gemm_example | Bin 0 -> 1264504 bytes src/components/amd_smi/tests/gemm_example.o | Bin 0 -> 25920 bytes src/components/amd_smi/tests/rocmsmi_example | Bin 0 -> 1249920 bytes src/components/amd_smi/tests/test.csv | 23 ++ 7 files changed, 652 insertions(+), 69 deletions(-) create mode 100644 src/components/amd_smi/tests/amdsmi_example.cpp create mode 100644 src/components/amd_smi/tests/gemm.cpp create mode 100755 src/components/amd_smi/tests/gemm_example create mode 100644 src/components/amd_smi/tests/gemm_example.o create mode 100755 src/components/amd_smi/tests/rocmsmi_example create mode 100644 src/components/amd_smi/tests/test.csv diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index ff39a392a..82fb2a987 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,74 +1,106 @@ -# ***NOTE*** The Environment Variable PAPI_ROCM_ROOT must be defined for +# ***NOTE*** The Environment Variable PAPI_ROCM_ROOT must be defined for # programs to compile correctly. one typical location is /opt/rocm, but # contact your sysadmin if you cannot find it. -NAME=amd_smi -include ../../Makefile_comp_tests.target -PAPI_ROCM_ROOT ?= /opt/rocm -HIP_PATH= ${PAPI_ROCM_ROOT} -HIPCC=$(HIP_PATH)/bin/hipcc -INCLUDE += -I$(PAPI_ROCM_ROOT)/include -INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi -INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hip -INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hsa -INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocprofiler -INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocblas -LDFLAGS = -ldl -g -L$(PAPI_ROCM_ROOT)/lib/rocblas -lrocblas - -%.o:%.c - @echo "INCLUDE=" $(INCLUDE) - $(CC) $(CFLAGS) $(OPTFLAGS) $(INCLUDE) -c -o $@ $< - -%.o:%.cpp - @echo "INCLUDE=" $(INCLUDE) - @echo "CFLAGS=" $(CFLAGS) - g++ $(CFLAGS) $(OPTFLAGS) $(INCLUDE) -c -o $@ $< - -TESTS = rocm_command_line rocm_smi_all power_monitor_rocm rocmsmi_example rocm_smi_writeTests - -rocm_smi_tests: $(TESTS) - -# Note: We compile .o separately from the executable link; some versions of hipcc -# have trouble managing libraries if we try to do both in a single step. - -rocm_command_line.o: rocm_command_line.cpp $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -rocm_command_line: rocm_command_line.o $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) - -rocm_smi_all.o: rocm_smi_all.cpp $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -rocm_smi_all: rocm_smi_all.o $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) - -power_monitor_rocm.o: power_monitor_rocm.cpp $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -power_monitor_rocm: power_monitor_rocm.o $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) - -rocmsmi_example.o: rocmsmi_example.cpp $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -rocmsmi_example: rocmsmi_example.o $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) -lpthread - -rocm_smi_writeTests.o: rocm_smi_writeTests.cpp $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -c $< -o $@ - -rocm_smi_writeTests: rocm_smi_writeTests.o $(UTILOBJS) $(PAPILIB) - $(HIPCC) $(CFLAGS) $(INCLUDE) -o $@ $< $(UTILOBJS) $(PAPILIB) $(LDFLAGS) +# Set the default PAPI_ROCM_ROOT if not already set in the environment +PAPI_ROCM_ROOT ?= /apps/rocm/rocm-6.3.2 +HIP_PATH := $(PAPI_ROCM_ROOT) +HIPCC := $(HIP_PATH)/bin/hipcc + +# --- DIAGNOSIS STEP: Comment out the include temporarily --- +# include ../../Makefile_comp_tests.target + +# --- Manually define variables expected from Makefile_comp_tests.target --- +# These values are based on your successful amdsmi_example compilation log: +CFLAGS ?= -DPAPI_NUM_COMP=3 +OPTFLAGS ?= -O2 +UTILOBJS ?= ../../../testlib/libtestlib.a +PAPILIB ?= ../../../libpapi.a +# Base includes that were part of your amdsmi_example compile line (before PAPI/ROCm specifics) +BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests + +# Specific PAPI include path +PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include + +# Consolidate INCLUDE paths +EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) +EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) # Add PAPI include +# Add ROCm specific paths +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hip +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hsa +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocprofiler +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocblas # For GEMM + +# Common Linker Flags +COMMON_LDFLAGS = -ldl -g -lpthread + +# Specific linker flags for amdsmi_example +LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) $(COMMON_LDFLAGS) + +# Specific linker flags for gemm_example +LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) + +# Default target +all: amdsmi_example gemm_example + +# Generic Rule for .cpp to .o compilation (e.g., for amdsmi_example.o from amdsmi_example.cpp) +# This rule is used when the target is X.o and prerequisite is X.cpp +%.o: %.cpp + @echo "Compiling $< to $@ using pattern rule..." + @echo "HIPCC: $(HIPCC)" + @echo "CFLAGS: $(CFLAGS)" + @echo "OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + +# Rule for amdsmi_example.o (uses the pattern rule above) +amdsmi_example.o: amdsmi_example.cpp + +# Rule for linking amdsmi_example +amdsmi_example: amdsmi_example.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_example.o $(LDFLAGS_AMDSMI) + +# Rule for gemm_example.o from gemm.cpp (NEEDS AN EXPLICIT RECIPE) +# Here, the target object name (gemm_example.o) doesn't match the source stem (gemm.cpp) +# for the simple %.o: %.cpp pattern rule. +gemm_example.o: gemm.cpp + @echo "Compiling $< (gemm.cpp) to produce $@ (gemm_example.o) with explicit rule..." + @echo "HIPCC: $(HIPCC)" + @echo "CFLAGS: $(CFLAGS)" + @echo "OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + +# Rule for linking gemm_example +gemm_example: gemm_example.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" + $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ gemm_example.o $(LDFLAGS_GEMM) clean: - rm -f $(TESTS) *.o - -checkpath: - echo PAPI_ROCM_ROOT = $(PAPI_ROCM_ROOT) - echo HIP_PATH = $(HIP_PATH) - echo HIPCC = $(HIPCC) - echo INCLUDE = $(INCLUDE) - echo LDFLAGS = $(LDFLAGS) - echo CFLAGS = $(CFLAGS) - + @echo "Cleaning up..." + rm -f amdsmi_example amdsmi_example.o gemm_example gemm_example.o *.exe + +checkpath: + @echo "--- Variables (with Makefile_comp_tests.target potentially commented out) ---" + @echo "PAPI_ROCM_ROOT = $(PAPI_ROCM_ROOT)" + @echo "HIP_PATH = $(HIP_PATH)" + @echo "HIPCC = $(HIPCC)" + @echo "PAPI_DIR_INCLUDE = $(PAPI_DIR_INCLUDE)" + @echo "--- Manually set CFLAGS, OPTFLAGS, etc. (if include is commented) ---" + @echo "CFLAGS = $(CFLAGS)" + @echo "OPTFLAGS = $(OPTFLAGS)" + @echo "UTILOBJS = $(UTILOBJS)" + @echo "PAPILIB = $(PAPILIB)" + @echo "BASE_INCLUDES_FROM_LOG = $(BASE_INCLUDES_FROM_LOG)" + @echo "--- Effective values ---" + @echo "EFFECTIVE_INCLUDE = $(EFFECTIVE_INCLUDE)" + @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" + @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" + @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" + +.PHONY: all clean checkpath amdsmi_example gemm_example \ No newline at end of file diff --git a/src/components/amd_smi/tests/amdsmi_example.cpp b/src/components/amd_smi/tests/amdsmi_example.cpp new file mode 100644 index 000000000..9490f3fc9 --- /dev/null +++ b/src/components/amd_smi/tests/amdsmi_example.cpp @@ -0,0 +1,137 @@ +#include +#include + +#include "papi.h" // PAPI header file + +// Basic PAPI error handling function +static void handle_papi_error(int retval, const char *function_name, int current_event_set, int papi_initialized_flag) { + if (retval != PAPI_OK) { + fprintf(stderr, "PAPI error in function %s(): %s (Error Code: %d)\n", + function_name, PAPI_strerror(retval), retval); + if (papi_initialized_flag) { + if (current_event_set != PAPI_NULL) { + // Attempt to clean up the event set if it exists + // Note: Depending on when the error occurred, events might still be in the set. + // PAPI_cleanup_eventset or PAPI_destroy_eventset handles this. + char event_name_buf[PAPI_MAX_STR_LEN]; + if (PAPI_list_events(current_event_set, NULL, NULL) > 0) { // Check if events are in set + // If specific event name was stored, it could be removed here. + // For simplicity, PAPI_destroy_eventset will handle cleanup. + } + PAPI_destroy_eventset(¤t_event_set); + } + PAPI_shutdown(); + } + exit(EXIT_FAILURE); + } +} + +int main(int argc, char **argv) { + (void)argc; // Unused + (void)argv; // Unused + + int retval=0; + int EventSet = PAPI_NULL; + long_long event_values[1]; // PAPI counters are long_long + int papi_is_initialized = 0; + + + + // --- Step 1: Initialize the PAPI library --- + retval = PAPI_library_init(PAPI_VER_CURRENT); + printf("AAAAAAAAAAAAAAAAAAAA\n"); + printf("%d\n", retval); + if (retval != PAPI_VER_CURRENT && retval > 0) { + // PAPI_VER_CURRENT is the version, > 0 are error codes + fprintf(stderr, "PAPI library version mismatch! Expected %d, got %d\n", + PAPI_VER_CURRENT, retval); + exit(EXIT_FAILURE); + } + + printf("BBBBBBBBBBBBBBBBBBBB\n"); + + + printf("%d\n", retval); + + + // For other errors from PAPI_library_init (negative values) + handle_papi_error(retval, "PAPI_library_init", EventSet, papi_is_initialized); + papi_is_initialized = 1; + printf("PAPI library initialized successfully.\n"); + + // --- Step 2: Create an EventSet --- + retval = PAPI_create_eventset(&EventSet); + handle_papi_error(retval, "PAPI_create_eventset", EventSet, papi_is_initialized); + printf("PAPI EventSet created.\n"); + + // --- Step 3: Add a PAPI event to the EventSet --- + // You can change "PAPI_TOT_INS" to any available PAPI event. + // For CPU events: "PAPI_TOT_CYC" (Total Cycles), "PAPI_L1_DCM" (L1 Data Cache Misses), etc. + // For rocm_smi events (if PAPI is configured for it and you have a ROCm GPU): + // e.g., "rocm_smi:::power_average:device=0" (Average GPU Power) + // e.g., "rocm_smi:::temp_rx_soc:device=0" (GPU Temperature) + // Check availability with `papi_avail` or `papi_native_avail` utilities. + const char *eventName = "PAPI_TOT_INS"; // Example: Total Instructions Executed + + printf("Attempting to add event: %s\n", eventName); + retval = PAPI_add_named_event(EventSet, eventName); + if (retval != PAPI_OK) { + fprintf(stderr, "Failed to add PAPI event '%s'. Error: %s (Code: %d)\n", + eventName, PAPI_strerror(retval), retval); + if (retval == PAPI_ECMP) { // Component not available error + fprintf(stderr, "This error often means the PAPI component required for '%s' (e.g., 'rocm_smi' for GPU events) is not available, not configured, or the event name is incorrect for your hardware.\n", eventName); + fprintf(stderr, "Please use PAPI utilities like 'papi_components_avail' and 'papi_native_avail' to check available components and events.\n"); + } + handle_papi_error(retval, "PAPI_add_named_event", EventSet, papi_is_initialized); // Will cleanup and exit + } + printf("Successfully added event '%s' to EventSet.\n", eventName); + + // --- Step 4: Start counting events in the EventSet --- + retval = PAPI_start(EventSet); + handle_papi_error(retval, "PAPI_start", EventSet, papi_is_initialized); + printf("PAPI event counting started.\n"); + + // --- Optional: Perform some work --- + // The PAPI counters will measure events that occur between PAPI_start() and PAPI_stop(). + // For a simple check, even a small amount of computation will do. + printf("Performing some dummy computation...\n"); + volatile double work_dummy = 0.0; + for (long i = 0; i < 20000000; ++i) { // Increased loop iterations + work_dummy += (double)i / (double)(i + 1); + } + printf("Dummy computation finished. (Result: %f to prevent optimization)\n", work_dummy); + + // --- Step 5: Stop counting events and retrieve the values --- + // PAPI_stop() will read the current values of the events in EventSet into event_values. + retval = PAPI_stop(EventSet, event_values); + handle_papi_error(retval, "PAPI_stop", EventSet, papi_is_initialized); + printf("PAPI event counting stopped.\n"); + + // --- Step 6: Print the event value --- + printf("\n--- PAPI Event Value ---\n"); + printf("Event: %s\n", eventName); + printf("Value: %lld\n\n", event_values[0]); + + // --- Step 7: Clean up PAPI resources --- + // Remove the event (optional if PAPI_destroy_eventset is called, but good practice) + // PAPI_cleanup_eventset also works and is sometimes preferred as it can clear, stop, and remove events. + retval = PAPI_remove_named_event(EventSet, eventName); + // Don't treat "event not in set" or "set not running" as fatal after stop for simple cleanup + if (retval != PAPI_OK && retval != PAPI_ENOEVNT && retval != PAPI_ENOTRUN ) { + handle_papi_error(retval, "PAPI_remove_named_event", EventSet, papi_is_initialized); + } else if (retval == PAPI_OK) { + printf("PAPI event '%s' removed from EventSet.\n", eventName); + } + + + // Destroy the EventSet + retval = PAPI_destroy_eventset(&EventSet); + handle_papi_error(retval, "PAPI_destroy_eventset", EventSet, papi_is_initialized); // EventSet becomes PAPI_NULL internally + printf("PAPI EventSet destroyed.\n"); + + // Shutdown the PAPI library + PAPI_shutdown(); + printf("PAPI library shut down successfully.\n"); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/src/components/amd_smi/tests/gemm.cpp b/src/components/amd_smi/tests/gemm.cpp new file mode 100644 index 000000000..767253a37 --- /dev/null +++ b/src/components/amd_smi/tests/gemm.cpp @@ -0,0 +1,391 @@ +#include +#include +#include "papi.h" +#include "hip/hip_runtime.h" +//#include // No longer needed since we use a custom kernel +#include // For usleep() +#include // For gettimeofday() +#include // For pthreads + +#define M_DIM 7296 //14592 +#define K_DIM 14592//65536 +#define N_DIM 7296 //14592 //14592 + +// Number of streams to use for concurrent execution +#define NUM_STREAMS 1 + +// Number of iterations to run in each stream +#define ITERATIONS_PER_STREAM 20 + +// Global flag to signal the monitor thread to stop. +volatile int stop_monitor = 0; + +// Structure to pass parameters to the monitoring thread. +struct monitor_params { + int EventSet; + FILE *csvFile; + struct timeval start_time; +}; + +// Monitor thread that periodically reads PAPI counters and logs them. +void *monitor_events(void *args) { + struct monitor_params *params = (struct monitor_params *)args; + int statusFlag; + long long values[5]; + + // Continue monitoring until stop_monitor is set. + while (!stop_monitor) { + statusFlag = PAPI_read(params->EventSet, values); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI read failed in monitor: %s\n", PAPI_strerror(statusFlag)); + break; + } + + struct timeval current_time; + gettimeofday(¤t_time, NULL); + double elapsed = (current_time.tv_sec - params->start_time.tv_sec) + + (current_time.tv_usec - params->start_time.tv_usec) / 1e6; + + + int gpu1_power = -1; // Default to -1 (error/unavailable) + FILE *fp = popen("amd-smi metric -g 1 -p --csv", "r"); // Use specific command + if (fp != NULL) { + char buffer[128]; // Sufficient buffer for the expected output + int header_skipped = 0; + int data_parsed = 0; + + while (fgets(buffer, sizeof(buffer), fp) != NULL) { + // Skip the header line (contains "gpu") + if (!header_skipped && strstr(buffer, "gpu")) { + header_skipped = 1; + continue; + } + // Parse the data line (after header) + if (header_skipped) { + int gpu_id_read; + // Expect format like "1,83,..." - parse first two ints + if (sscanf(buffer, "%d,%d", &gpu_id_read, &gpu1_power) == 2) { + data_parsed = 1; // Flag success + break; // Got the data, no need to read further + } else { + // Failed to parse data line, treat as error for this sample + gpu1_power = -1; + break; + } + } + } + + // Check if data was actually parsed after skipping header + if (header_skipped && !data_parsed) { + gpu1_power = -1; // Header found, but data parsing failed/missing + } else if (!header_skipped) { + gpu1_power = -1; // Header wasn't even found + } + + + int status = pclose(fp); + // If command failed execution, ensure power is marked as error + if (status == -1 || (WIFEXITED(status) && WEXITSTATUS(status) != 0)) { + if (gpu1_power != -1) { // Only print warning if we previously thought we succeeded + // Optional: fprintf(stderr, "Warning: amd-smi command failed, but power value was parsed earlier.\n"); + } + gpu1_power = -1; + } + } else { + perror("Failed to run amd-smi"); // popen failed itself + // gpu1_power remains -1 + } + + // Write the PAPI values and the GPU 1 power value to the CSV file. + fprintf(params->csvFile, "%.6f,%lld,%lld,%lld,%lld,%lld,%d\n", + elapsed, values[0], values[1], values[2], values[3], values[4], gpu1_power); + fflush(params->csvFile); + + // Also print to stdout. + fprintf(stdout, + "Time: %.6f sec -> event1: %lld, event2: %lld, event3: %lld, event4: %lld, event5: %lld, GPU1_POWER: %d\n", + elapsed, values[0], values[1], values[2], values[3], values[4], gpu1_power); + + usleep(300000); // Sleep for 0.5 seconds. + } + return NULL; +} + + +// Custom DGEMM kernel using a simple row-major implementation. +__global__ void dgemm_kernel(const double *A, const double *B, double *C, + int M, int N, int K, double alpha, double beta) { + // Compute the row and column index of the C element. + int row = blockIdx.y * blockDim.y + threadIdx.y; + int col = blockIdx.x * blockDim.x + threadIdx.x; + + if (row < M && col < N) { + double sum = 0.0; + // Compute the dot product of row of A and column of B. + for (int k = 0; k < K; k++) { + sum += A[row * K + k] * B[k * N + col]; + //sum += sin(A[row * K + k] * B[k * N + col]) + cos(A[row * K + k] * B[k * N + col]); + + } + // Scale the result and add the scaled C element. + C[row * N + col] = alpha * sum + beta * C[row * N + col]; + } +} + +int main(int argc, char *argv[]) { + int statusFlag; + int EventSet = PAPI_NULL; + + /* Initialize PAPI. */ + statusFlag = PAPI_library_init(PAPI_VER_CURRENT); + if (statusFlag != PAPI_VER_CURRENT) { + fprintf(stderr, "PAPI shared library version error: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + /* Create event set. */ + statusFlag = PAPI_create_eventset(&EventSet); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI create eventset: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + /* Add GPU events to the event set. */ + const char *event1 = "amd_smi:::temp_current:device=0:sensor=0"; + const char *event2 = "rocm_smi:::temp_current:device=1:sensor=2"; + const char *event3 = "rocm_smi:::mem_usage_VRAM:device=1"; + const char *event4 = "rocm_smi:::busy_percent:device=1"; + const char *event5 = "rocm_smi:::memory_busy_percent:device=1"; // New event + + statusFlag = PAPI_add_named_event(EventSet, event1); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI add named event 1: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + statusFlag = PAPI_add_named_event(EventSet, event2); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI add named event 2: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + statusFlag = PAPI_add_named_event(EventSet, event3); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI add named event 3: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + statusFlag = PAPI_add_named_event(EventSet, event4); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI add named event 4: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + statusFlag = PAPI_add_named_event(EventSet, event5); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI add named event 5: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + /* Set HIP device properties to optimize for MI300 */ + hipSetDevice(1); + hipDeviceProp_t deviceProp; + hipGetDeviceProperties(&deviceProp, 1); + printf("Device Name: %s\n", deviceProp.name); + printf("Compute Units: %d\n", deviceProp.multiProcessorCount); + printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); + + /* Allocate host memory for matrices A, B, and C with page-locked memory for faster transfers */ + size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); + size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); + size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); + + double *h_A, *h_B, *h_C; + hipHostMalloc(&h_A, size_A, hipHostMallocDefault); + hipHostMalloc(&h_B, size_B, hipHostMallocDefault); + hipHostMalloc(&h_C, size_C, hipHostMallocDefault); + + if (!h_A || !h_B || !h_C) { + fprintf(stderr, "Host memory allocation failed.\n"); + return -1; + } + + /* Initialize host matrices. */ + for (int i = 0; i < M_DIM * K_DIM; i++) { + h_A[i] = (double)(i % 100); + } + for (int i = 0; i < K_DIM * N_DIM; i++) { + h_B[i] = (double)(i % 100); + } + for (int i = 0; i < M_DIM * N_DIM; i++) { + h_C[i] = 0.0; + } + + /* Allocate device memory. */ + double *d_A[NUM_STREAMS], *d_B[NUM_STREAMS], *d_C[NUM_STREAMS]; + hipError_t hipStatus; + + for (int s = 0; s < NUM_STREAMS; s++) { + hipStatus = hipMalloc((void**)&d_A[s], size_A); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMalloc d_A[%d] failed.\n", s); + return -1; + } + hipStatus = hipMalloc((void**)&d_B[s], size_B); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMalloc d_B[%d] failed.\n", s); + return -1; + } + hipStatus = hipMalloc((void**)&d_C[s], size_C); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMalloc d_C[%d] failed.\n", s); + return -1; + } + } + + /* Create multiple streams for concurrent execution */ + hipStream_t streams[NUM_STREAMS]; + hipEvent_t events[NUM_STREAMS]; + + for (int s = 0; s < NUM_STREAMS; s++) { + hipStatus = hipStreamCreateWithFlags(&streams[s], hipStreamNonBlocking); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipStreamCreate failed for stream %d.\n", s); + return -1; + } + + hipStatus = hipEventCreate(&events[s]); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipEventCreate failed for event %d.\n", s); + return -1; + } + } + + /* Copy host matrices to device memory in parallel across streams */ + for (int s = 0; s < NUM_STREAMS; s++) { + hipStatus = hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s]); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMemcpyAsync d_A[%d] failed.\n", s); + return -1; + } + hipStatus = hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s]); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMemcpyAsync d_B[%d] failed.\n", s); + return -1; + } + hipStatus = hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s]); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMemcpyAsync d_C[%d] failed.\n", s); + return -1; + } + } + + /* Open CSV file for recording data and write header. */ + FILE *csvFile = fopen("test.csv", "w"); + if (!csvFile) { + fprintf(stderr, "Failed to open CSV file for writing.\n"); + return -1; + } + fprintf(csvFile, "timestamp,%s,%s,%s,%s,%s,%s\n", + event1, event2, event3, event4, event5, "power"); + + /* Start PAPI counters to monitor GPU metrics. */ + statusFlag = PAPI_start(EventSet); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI start: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + /* Start the monitoring thread immediately after PAPI_start */ + pthread_t monitor_thread; + struct monitor_params params; + params.EventSet = EventSet; + params.csvFile = csvFile; + gettimeofday(¶ms.start_time, NULL); // Record the start time + + statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); + if (statusFlag != 0) { + fprintf(stderr, "pthread_create failed.\n"); + return -1; + } + + /* Wait for initial copies to complete */ + for (int s = 0; s < NUM_STREAMS; s++) { + hipStreamSynchronize(streams[s]); + } + + /* GEMM parameters */ + double alpha = 0.75; + double beta = 0.5; + + // Define grid and block dimensions for the kernel launch. + dim3 blockDim(32, 32); + dim3 gridDim((N_DIM + blockDim.x - 1) / (blockDim.x), + (M_DIM + blockDim.y - 1) / (blockDim.y)); + + /* Kernel execution loop to keep the GPU busy */ + for (int iter = 0; iter < ITERATIONS_PER_STREAM; iter++) { + for (int s = 0; s < NUM_STREAMS; s++) { + // Launch the custom DGEMM kernel on stream 's' + hipLaunchKernelGGL(dgemm_kernel, gridDim, blockDim, 0, streams[s], + d_A[s], d_B[s], d_C[s], + M_DIM, N_DIM, K_DIM, alpha, beta); + + // Record event but don't synchronize. + hipEventRecord(events[s], streams[s]); + + hipStreamSynchronize(streams[s]); + usleep(3000000); + } + } + + /* Wait for all streams to complete */ + /*for (int s = 0; s < NUM_STREAMS; s++) { + + }*/ + + //usleep(3000000); + + /* + hipStatus = hipMemcpyAsync(h_C, d_C[0], size_C, hipMemcpyDeviceToHost, streams[0]); + if (hipStatus != hipSuccess) { + fprintf(stderr, "hipMemcpy h_C failed.\n"); + return -1; + }*/ + + hipStreamSynchronize(streams[0]); + + /* Signal the monitor thread to stop and wait for it to finish. */ + stop_monitor = 1; + pthread_join(monitor_thread, NULL); + + /* Cleanup resources. */ + fclose(csvFile); + + for (int s = 0; s < NUM_STREAMS; s++) { + hipEventDestroy(events[s]); + hipStreamDestroy(streams[s]); + hipFree(d_A[s]); + hipFree(d_B[s]); + hipFree(d_C[s]); + } + + hipHostFree(h_A); + hipHostFree(h_B); + hipHostFree(h_C); + + statusFlag = PAPI_stop(EventSet, NULL); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI stop: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + statusFlag = PAPI_cleanup_eventset(EventSet); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI cleanup eventset: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + statusFlag = PAPI_destroy_eventset(&EventSet); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI destroy eventset: %s\n", PAPI_strerror(statusFlag)); + return -1; + } + + return 0; +} diff --git a/src/components/amd_smi/tests/gemm_example b/src/components/amd_smi/tests/gemm_example new file mode 100755 index 0000000000000000000000000000000000000000..84549f33600a1104c12244bc7cd975ee67b28699 GIT binary patch literal 1264504 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 Hea#6QDjU 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

spKGdIvG^h?B7n9!wjOM-+t^TPnI79i*daU~wio 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�P$!&ctPjp8)!a&zU3ZR$ zFj&E+&eR)TAN|_c`eW-e51@b@n}fIUhO&yf6}+Jgbk|+JrO`*CVLvoiOQXlg;Zj5= z*Bet$8}(##ay>`pge(uEo{TPu#>pTUwIsTdpSqR65db-#B+M}C$>;~NA@4!-5B0QB zjaVqd^69kZq~ffI_(Pou?_$~YTf_{Z*zzPrdxP}+OF^keBMOjxKGa*livv& zU56EObe(iQW|9sj$TDIXMbLuX^$%$UI}8m^4-ZaVhV@^)>8edU9?>>6b-73hPB3E? zJA5V6wGs!J5n3C*jiGJfM;JO1{;*)Fd$=-gS-4kf2ZI-m>Vmd6QZW@<#C0lUwOpwm zYZuk_D2&sP0(TI_4aKsu_Gk~7%0lWqP+aOh(xY-3oW!t7oosLxqbhZ_L3sn1vAjXC zF~w2b@K8$t4z=8XU4VDKQ5#yHZ;kNz)}x-#SwHHDNl!@3q$e_YLI@+T%(j(nfm7Lb z^HUnI`Kd!sk;zk64Zzi>7Ps?gP#&onn%oA*sM9g3h5;E>!`o9@HS}+y8V&%7YKeoj zYBz;BZ}kL2NY-U>Qj|Zfpg_k)A4vHhU!MM zXgE;o2hrn)hB#Z%N&VDtXG7H2;)YsEX4^x;Xg^klYO4i({9-ZsB2QS#d!Qp^merC@WIlD(uBg?k=Z5( zYJ*E~H#8Q#j;6=tBu&OK%)xL#-@qq*+{Vw1CGf7BpVmSaz1KZVVo{ zq`tZ_s*9iFq6KbG$jirB71N#%QyNWOVWXl(*xw^*$G!YWJ5*$!V^wn+6*h8YZVxUC-&T?H=ffN)p`za1Yi>64+2S2u8t#g1$;xe3HhZZh8h4Eo_Fz}#t8Gn>w9ir25cwTxH#>Dsy(YF^XjO)+5d zXGU0oKDH@rFcwFCY+qtHFuCbWgmF;_e~2B?RQcL#;SQ>%6IsqBx)ZOy845%^I_7K_ z?`+plh6?$tYJHG9D3($iFrzG9W{X9g($Po(eUe+ZHjT`W*exN*6esQD0RHq;>V?p%xt?D?F|}B-Hw!e1A9p&HU&+8jK$*YV^!i- zJvOd6$frKOUpBaBw#{PWL|SU+uDb00AJe4MA3OUPs_NOtE*Yym z3^%Hgp1}bCb*A~P<~(_&ZZ)6JqiUIL=d&i8QgwNMZ1iI&XD%3;B6YOc(8nB^YjS~r zi0SPNKbEK@iWk#v=F1;viD0!@ z()>(wD*B-LRAzyeBbgBL=i3(l^VGzQ9&Lw-wjblMP7xeXmSYS zxRj-e8l!9sA*c`1%%%ku?F3&*4~j^hwi zN`eO%1weyQ0MIhgfRmoME@Rm1<`~u(y0ZK*e%=$Sc(!I0*uqwfgptq=OJ|@iJ~2tC zCq22~Nputoo?Q8)Y^B}&(I^eB+seCx?_rhRgo+&0j1d7DjicD5-blsQ#FX6T;q zGJ2bxI8;Q~Y9pFSgff}7&6qz`n{5w_<&Xzz2&P7LtPzcu&2%)rJtW$kvD4I@&1ii1 zN;GFgm@NJTg$b*$t&+8lRcbreI<6Z_A0(i*GK3N$7sY1VRhztg_oh6Fcool)%gc9f zqIPmZqRMt%dBmHXv|N!r*1ne0yld@wb`-HZdm)!l3hhVrLXSFXpNI8fH$Em^?MsNc zgalakv+w2N&R$J`#0!CYlF5*u7i+;vnkROuMavl5HE*Lx$h z9mULRdJQ^)krGi=QZ#^Fm-jgDzpBOSlD1l?21@q+X^V9CrMVvrp5t~3XzCD1-=MX z#(&S*neQ9SYk(H+cLv!1|ISM{bgztf&*F0ASdN{u6P@=lIpjUXzs>66J@3y@M`S(sB|(_>Kkyw<6EmV_B+|7{9Rl! zjdLpQHk}3WcjBoZdBGJ0@iit&Jj@LJ)v34z@hWvCu9P(bFoo&kh+f2#4~8BK;_(nY zrbi54FMf0`h_9qLYP2(ce>{dD-*|j-n%|lW;#bCFjdW%Frg(YhZBzVCgv}xBg80Sp zdhD?{enULcAki}RSO7$iv4_q{RbVcH-{I2n9qT>!84-Q&e{TCMqge`XJXbhU^V>Dp9b_!TNN62t)Ve|2289f= z;IMtQVe+;?y9VI^A;6v^VNomT%d9V<0rXG$GKW6sl4`)T&(y^*W#Yh$foN1R1}+(h z9(c*Xr2};fv~=KF!q*O*Mk_$|aRajll2*4n$`yZ)bd?$naYn??4I?>IU*sS&wYOLa{z9BUNis))d#Dh0cQs2m@@;)1;mudWQQs@i8mO; z2R=91xX3J46L$l(AqE^qi@6O|^l-KOuxD922HaaH%({eE0KN$K9{Tz%nBZM`h{e#)Wlz%+#6OZKsFrNL% zzE3dGGMGhd_9tl+BHY!ePsdQ-F`uS=id$6&JK}I%6J`}Y8TF|n^PR(NQsqa`)lYCG z7G|8Tep10qs{oDwfPh%QjFq{gpWOR|mb&-JaImICBUT>5D*5#AXO7I_hrn8tH~h?2 zG@z>F(=nf6l6jq42G=APeI!gw5!Ns6$Roo1|rFQ3{WQ+%IMvHbpUx zA1>ZT|KMcTm+1@$GQDh7)VA= zs)_xU_Cq?CLX_|Svf#QD$CsA+8H&>UCEPAbAS{o^`dwr>gv#Dh@ZE(E^ zQEx}<3Y#{-sJX8C>Vbi($9Oo5h5eWjU@kvZ`FZN!XphvtUF#18ul2vtU*_F}1oLnM zE)8JxC6aPWIPW87t%07?`>*fMxPASL`on%PNEKd{?|)f<(*|S@Z~<2g*z68$9`LIx z;5qs?G@^r)X|2}xKiprgDLCB!cz=A*90zv^rwy1rKs>V{2NBr=Ht6sMh(dVtfbBZG z9nugs(&7F>aLY*jTV;Qgc}Z|D6HzBvssPLdjqZGYpEdu!m>g}1HaR@nJuPA zEzmO5WZ(ms#*~>Hkr}!D{V;#^ax~gC2QnhJ|F!-h-&piItQ$)X-&;JE?HQ1bSoTH1DGwRPiW5X5Ln}t;&3F!uv4Q zg!k9H528$shkvNy!#^B{ zEOOaYtupy8Azv3&DYzM?1j^+1nS#mh0|(E@eNg&=%Ygas?SBuNulZoj2c`ju=3&4k zq|)2^3yT4cglMLFtR|+ekc1K?(R_8 z4^im;4c+`Z>F?4)>F>^c7i!FXchS3OHrfBbllzX_7W^96^3HzY#r`b)-E^SqT6o}{ z-`*jM-`=_P4nHukCkR|TXx-&O{nV#=f^PKv1N~t`ys8O3e(H0hFS+07JMtZ5;i7lP zyvN{}_olpO^SRH_Ja!lT)MrT_w?H6OlMjuK_W7Z&4dW8bj-xNZ+Df0R!u3}dyD^#_ zXF9Q4@6qvCZkKjvecxaDI&k3x#zE?rzWe*4UzQ<}7qV!5Uq|M~Q%0>v#|6-gzIwCL zjJ`|yqT^oz9AmSRCO~;ba_L_#N-YNhj7uJX-C));V}WMQ7pe7q^9`o?eGilA;l3vg z0F$KI6C0Q(HG?r^V9xizBL^wxkAy)X6FH%|Ocj1~uB1#iMc1#dza zu1wa#@EI}Xt>bS2e*CTd-2vaPWdc6#?U6kI7};Z04~PI@RgVG!3bYacB=_9f6M(Hf zMF{{z37OD+gc4BTN&-5iD@<)SQvpn7PI)W;Ex_~NI@KNUQ&0ePbui>3&DeUX#Q{&! zjNuT{EC?b^T6UBh{#1T73FF>gMFs^ugwM~km>xxGY=gqnD8EZGX?5a%Hq&|r4@Pn` z7YFDD3&}l^)>}*KtwdUH7GBgdlxtjEiv|P#q2sx3th(pAo$F@vxkJyew=mN>?(K1J z6Taf@g*^~l2(!yh7*W5En1Rt-nT$ScUJ8&{cR72HReG&KG9NrD(Za7Hv8WHrkLYRCSk$8kCIRXgM z4tT`c)HPVmoq9FwEf~>gEXKXP;%(%+OzNTSGpWbi9SGV>>d=EO_)wPWU{(SB}EEY zHBnlSVCr1Z~AS5>t>{d!~VN4mN@q0b_m<9ql8u zATHOU@d?jVk}YQK(s~{3h2Gcn^<Kb0ROT*MwerB5y*kS-p@ZiI$1HG$4AeMT>3qpFe8jR`uA# zCMvn-&pqLoEt@nHCiNe-&q9mWLrIG-KHU?rVKON#AbqGG5gOd`OB#>fLuv$!Gv%%F zw^*dg-^%HZHi&4nD;k?QXrtZLP1ak~VPLzI7Z6w+HhUAqnaX*fo3hL=Z?mN082X=HnLv7D=zsXSXUq`+TXH}1NEO_gB ztY>Swo_6j8?pK&)S9+D94OROn#68$lE5V0s&rqYTqLBn)SrjQY_d-e7@ZOVqqh7gx zYC`wPls>up{O(@g)K>GQ7sLKVrb{+5>dd|KjYs}~;RH{a-8^JoL}vvvtmqAAL+{;i z+`@3`q5Diqn<>&78`2U78`9v>(h@yBZ|49PBwDfICMrA{)!gWS39;_`{|f6Y>AkKu zoDIG6;po(tcVF|@kiUC;o8I|`pRCmK_h8-1k{QmuN`~_MD}O5IuaJPdzk2UA?GKxm zcgMSDH~$LLzpb$ZgiB)y(vw;$@%2eO@jdDFbiATtoUPHwiLd|2^W8tbKI08!-HbP~ zd3YNmlI%Cq6ZAKRR0}oj_1UjO^z7FszJcPI{l>XYa4vTOl5s?!>Wwj-n8RZ_{nkkj z7qH0Q)JFcZ=-`!%F2TQkCFXyI!G1QcjS0PKJ5CIL4! zBlnpVZJ;C6muzMb>Hm`WpqUsDcl$Szpod0o8_m!*0_CHur7m>5(-E0+hq~dW#McVx z6e3{&?tkqzL$^WcSyvNZ{^@0y|EHHzUx7xcucW^sxuDWt+11gbs;I=5$Gwbf829qn zSCH(n8V}hZcv7j2k*e8hf@1h9%n+!CiJ<+jD9pW~ z_>&nb9B>3c4%-ORGwnitMsoDbD_1D}3NZEOn}G(DQLp~`sv~m&Q>T9fO?y>KnD#0% z9s@GqxFn1s%$Um`^=kI3ED_nSE=Qi|_D{!4#&gofs($D=x+A9t44>ZpqB37v_7aNo zvX@F<@@!22&v^+Vb6&dk5=?kaN4wexP1YG?S6@QuzN({LHD9fKDgPxTH2bX7X}!tfUX82;jj7ZE+;#dQp=dvX1XI(q$! znGov9$zYWLR>A|-?Boj*UWEP=G!+2rU))N-RuF>?QX*v?rwa6VREB6&h;}^r!ju>3 zPI+mXle6&M7nKv@yU+K2fR34j^krS7#G`zIKILXddbrd0JP$<~DAhTk2DO}7%E zx6405816vwf+eqMOIAKt`5aZiPv%`ALtGG+{biI`eN=~09iYXi4pTbFJ%rgE4m14g zGsVx)XvJ_@f}gqkjLa{VKeO^#gfpL?Maz>h?&0V#u>;bxw!STNO)=e9iOYs+*QaqRP%&wGSvDkv#v)L`uMV&*1=YK5^X9#nsoLHo+Hpp{Yq7BO{~K2Z#N&;v7h&2LuFQaG|uNsWX_4(XP8OEpQJ>W$DM)4VIn1%=tF=haE-Pe^zITWvF@No zDF|8=jI=JoEx#}t`c}v=+9g52NI&Rg5Ub%yxKQR~(3K!w5UQ>Ol?K`V7d&@(<8v3> z(3=)46AEd;8GNTKBY0u3&b$I#*zBli^Nht}v{HG&c;K-!9(bG?@&`img7*ef=w7(s zy*Kz+un0XCd@@*sUI?yYL{;#2AtLmE>%8SM`IOrcbbkgbojdZHI^c80z&^3_-As8iF8}BNv1&4)q#P zTP=o*wur4H@$_`U=8)|WpfkB7G^qxYl2l_{4bS>gTq>NXkIWh_D@DB7>y@p)rh5W5Ol_swRi6s8fIXsdUi98jB!R)E1 z3w#)g=!Q-g@rW1RdCcU9EJD6hXeMLRqYlOuZNM6Qa$b_)D3j#0UhJ0kIEzaug$3NJ%t zMIo*aq5zmrpVdq4lPH&u6WM^xkD?4Q=g6p(D7?@y$bvIhDNz%mjGjZZJ`njEjqqD! zc_d0;dE}5NsjNeyMn<{&ivxI`M%U1Dkq?M2(bAUw7CAD?qZ&#_To~nHQKr2Rxj}8p zppJRB7t@DpmuK;Ek6B)`J$B5gv0mc|9q;wy@1O}L)EHN*M6V>`CV36@#4Ry5iT}V~ZZp0$$6EOBJjKeg{o3p{6v!-hY_@Lkk{?(Vy~?yidh_SMi!2!vh~h(Krp z29PSf7fV=>Di}bT^o|JO{hl*3ckUB{#NFTT^ZxTbAIQCP=6lYZIWuQw?!8mKBq=qA~AF!4fhs?p2RkE;v_bI zlP%QGv{gTj%zS9CILU$S#3U4*J453&RFx4WA)y^K6#Y9xVM!@f6`a;a!aD+fhRzr` zBNM>hTg=rFT=$87UovA4A!_4zWF=D~!z~Q`DwJ1Y#PbKJudurwuhNKDt2DNUW;)|Z zG8t4pt+N7B%5k{|o{U8*R6yz*7vEFDG;Tj8&I{C!^I|A1<`^3CSqSle9qEv^ z{0uh6`h_;^`Ng_x0elx1Lfy4y(zzZpeY1R^&hjm$&=0;7ST2F}>nG@-2{l-|Aoz&b z&mj+`%%9#p;tG-@F|&OC_R;m@pxj;!6rHG-)QSh{*I`#S@0O>i^XbeSh_5`DF&O z{7F|a4TtnjZUB*ISr9*W+BW64>!U>%q_9?YvqhgFgpI;`>UCcAOnBeAV|W75cBfEL97#d`Xmn zBrGl=Bl^eWlmTXj5ox^+j3}AOh`waXKr%7Ih>}?u(FdB=L0qAE?42=>{ekR<#RJb^ zxPUSfqS2toi!2!p!5nRGjQA*S)mS`=8+E@;H|T)o7K{9KVxT5^Mv^uoX?W4e3@=0) zHf-bOS?cvToI+)IGD%vd=akCZDbFPmV}2sTv!C*}-}4jtE%B2?BAcf?7m08Y4D9BL z1$Y4QhF=0v*esIP&(ROjk4$ z``*#ciC)<4osKZLfsOJPOjNtiQBUpJMP-N@hBh2OJuX;@#e&qv@1;d}=tx3_at|_8 zuWQ>(-OFa{FjEg(m(fj#%ho{ZKuC}nVJ+aO1%ROK$2ehxwb`;#|J9cJP)-Z5blScW z$8vbD(5kX4-fOBUex=^tSxL2ch@MFMa84xA*gIB=hG7=TQ{%srqCwaz z&Jp6A6b%B4#%_!xT3e9BLgWlVR-8dHahj}HPnY##Gws|-aHmbRBFy(clS^F;L8AX> za_JD6TLT#uoY|Yp^0IkgvtwkuW8wlC?}E5Pp*vKl=1V+IOmxe|wxWSkjaNgUpFg?>)E5PvRlXqOmg(nXPR${m5kSUdq^ zaZVXc)RMsJ00^t00BWk*JX36<&7Sd6k|Oaw25pAe7Me;rD^1aCb5{kj5|}Fa9~Ov4 zg7`DC106}qc*yU@ijc)@QYT45rfm|YZcBT)y=d1`1E~S3#2Z25&zE@M@*p`SZX=|k zQPLz52NJbYnndD2qIGp>6eTMOT#ekz>qaRUr9(_7LwUc-iAa|%2VQOq7kE0<}6deVqkP)nNdX7YMkh-Atgo?3M4LtBqLr~?)0c~<|dD|vp8js~4O z9dm_e9gF>jjw!!OM}y9tj=93Kj%#c^9=7Atc3f`C+Msi%W3KS5V>ermhjq+|{5@rD z(7DqwS9sR(o~_5jI`*>Ta$`q>&Yh0A!n2N_+Il>!V_rKB?`1`Cd7`PP_Xxi>X#O;Y z)5JtwVu4@Rdk&udTsFVX6`uUps%`5*AGxYxyASQwE-O7kmo@FH`oy!c?RoYQIvO;e zVS!DfL~UY$j?d<#W3KS5<33vt>VK-&wso{(>=?EpttG{)|6W5d*tN4^ZX9qnV^gTu zw3$?~*^3Cg_>v5~^iKr-saB@;dK(6Q8zSX|IwOvCGaCG7BC$o=b1D<&ITGcvAw0MU>1bUE1l5l!vVK&l<*cR#Qw#-Ntfco%RMV0KMd1VLsHTsHqBx_K zHl~`Ascc0`qBSk4zHx{&K1Wcj#7UK`8f7PkpM$+DbSxXxT=hm>?M<6uL)|`n(qNK% z1c^g<1btM&+aLY;1PLy3L&72?m}8ShiT`h<#i!wJl8g%Y-%oUz>+-K|Yu#WBRIM%T?`=F@(h%t^qvyQZd?K8xJ3ROF& zF;1@VtYaTr4;qI##yGI!6 zk8B+QHEMQTt~x6lojVQxL^ zUwwlEluh-s44UoO5<0dd7U^jGBWQS;J3I-u8rphL+tZv@(Rf_`D_&X3cuS*o za9KSSQMg#;ccsej@`2rh-N}y}Qac#AwGMg??1`-Od_`vEm3I($hvXt(BsU)COXDQ1 z9A5?)ZT?fCod4l=rYQg2Ua`x_a@jGQU3FH&GpI$jNnk&N;>Q`<#k&?kk%MP=l=6a9 zACBn2R-+fx)lebCGqj>ozRG8@4$yB1#B)z6r5?TpO2!P2_DnhmDo~P(hb3D%M?uIb z#iJjdtaMul&3_6n;SiE@6ohQbE+oYkLf`-W>S!Q*J#bk$M?uK6Y(gA1c3GKjowW)O zSm7@)@?TzM)x@hfI=Yh>fca%IJdjTE?Ib3+Cn~~3ekQ}$2KrX&kTlRuWiSvpo{>Ya z;F6FUI5_^}w3Va+4zsiurSMu`w3Bnz{5}|_rK8mDwxdE0gn)1$`)z;hr^$W|55YZBw&Iw)qYb;SeU7NEugs zyJ>3tZcJ{MgdZc$5#b!B!b`&ahyl?c42Yf*EeTViQ}cn4ns0SJNm!k42%V2Jq|nqt zk}$PUDiKl(Emwr)h1L;aU7_8Iu)EOu!XT_Ke6X-&Iav4<5l$7(QiLqrxx4u1PmyMY z);SiD!|pU~JrZ{BhPeu>=yT;Zaf&Y2a0nYNUj?qw<(I(F0=P^nu)HuX2Pu_qj#QkV z7j=S;H2#2(UsSeuAK_g`-=o*b62;d^P7Oy@2_(}A$!v_XNDfpN}E1YdR*Y+@d)s_dNGF`krTiH{e~{ zNk&2mbW+75nA~% z!6bhXx@W;wr&?Mlf2$0X%_c9{gk-$m`tPzz)YkG?$roQFRbNa9c+dVNhBSg16JAC2 z`Nuyf;vani-W`9`5qWu9!2a(3-2C--4+A}Qs|F84 znBc?QDMYvNDF_oi1q{Fn=52n)!KLD7IGAj!?s-O1>ps#uQMK+9y)%h0 z)4Nj2St-l2&YcLHPNA<<$?*mybxb9~qWMOYB_1rfdo+olNH z!gdm2Cr-_j+0Vp0aS%?1-BpCUVfTq}KWx05YA(iyPYMTNQusneSQx&I2-`3xUC9VP zNraQ(zbeA7;aNn;3ZJ0*!wC^9se@b@u~iYaM(iNMj)=Qzjn~~gGxLHlGw)ZlehJ_6 zzRJ6f2Yt+{`;7O0tZgwL|E+qh>3@?5KG}n1|Iu60sp_ zGZ8jN9aeBR}t>!--K00VpG9GY8BI=g2#z)yx<*0xKnT#4NHb$xFVBHEwqtFAsZdT zk|RVoQuvA*mRu?P3lV-PobrTZNqJ&9oeH@8iM@)j_laReKp0jeO^(q;T9K*BM6gX7AnHRm~p$BtmA) zT}8NyI}E~RK4uX1d)iisb+oYg(C_9;p(lIuuh!{v~A_qne$J$FVJaQ6+CPhx8(6q<}6j~6ughERqaZEA}gutRkgtkTQ zqtL#{!xTD9ha-0oXCp6B=u+f83f+tBPwO%J=Sj(fP)eQ&6q=A{7KLWznNOklSc8es z$~@~Rv@Xxr6#6>PzbW+ZJed^A%yXJTr}NyP(2YDWW;cg1a~f+t%9IX+Vd=1FlT2gK zWN9!AJ|}vY5@DzJG7Ub*gsq_^Hk-qj6~JX#fo%nNarU+XY8_sBK@O)&&j9Qnx(D-0?vW+09xA9Q5*_fq|2$OQ&EII6?HkvIexy3FwrkZ{Q|lfIRAn$ z(SL~=5bYc|55UtA=tfIDGSxccHGWyGXI+x;*T3@LH=Me?(ccZ7hPsFH$Zn{66h?Mt zOg{=?;u(eKa;Hw|?sTT7yH|j22JpnB zf&7P!WUEHS0@L(wl*!rn+^dzf&e<^eU{E2O8jdVkPnQqQPE}a6YRx=YQH)0um;Gqc z55sW8q`;Qh;~p+VU6?stUDg{Fbc&pbqD4vnqA_@ycqxVrJzd1qfSKylp@=$-1K#7! zbVTFEL~GnU;H}tN)0#IYTJv@R@0hBZ)~+4V+I0zdOD1Sqmo7x>g6Ek!jWjKRwr3Lw ze-3z;*opu7&qVw4-vZv54K(g=Y~;Va74SY&LDSxPi*Rqf7w|UfplR<7;Zks!AKAeE zS*gu*-sx1aD${9@Fg<#O8a1qlK3NBZlXaHWmA%ulx-*-DFthoZ=8~|c`S>;_M8otR{F`!DYtS*wCdRAsvx3yQb9FVa924fe(G#0U@)BiQC3tccEt1|cJQJB>R) z*k1G$twBCjbYMw7NM~TlsU;DfT5@7J37A;!R(TL^mETa20UIh_uP9@#SDZsf?airl zu9|oBq>sh9YDu+ZOj50TI8;mAlh#Bk%j#y-WlToh+cb3-q}xr-Gy~>Lv&+pqy<)^= zX=X&MX@0gjBF;9S*@6?C*G5BgJ;>-C+34N1(a~$M(YtG-gTO||mZZ|?Ah6N9v(b?Q5ZLNC zfEiZjJWnh)w>%bU&MnWj27qnd9kyl@gOF6~)-yoddS(mR6ND{IZZ~1x+f6=eikQ!u za=k?i8?-wcR6^OJI6OdF6o?Bg#=xK?aF5ZHWJJlgIu)oKu6wT?h+>BtpWO`Z?3 z!;7NI7SwW_AV9yMsF!3^%Ez|Vtt)MG%P=GaXS#hXMu((^pv6rM8G-|y5WZ4)<`Z-y zrOj)r;T_@ri$d1nkyiB+mWiXowZ#)1F-Bm7JQdyTwLI-KcVlp$5;y4?`dq{c*+o3QlTHN}1&K2tDGpm)Nhp*9)FEz4khq23 zwIuFbfpZ0%+8K}$$53bos4dQA{cMY?2RWNP-_U!CSq0`f#5qCy0xzTf+~<{sXb!HYkc4=u65hhHCE_P3>Q#%84h$ASp1JoAhvWnR44tdAaz(Nu?B6hSxoD*ccgP{owWpPy3U$ceP zfOm}YFT=um=>^W11R10J!x_^}#yA|r#7YODPgkSppuhIwpg)bCSa`Xzzs+%EA&0gTxt-5ywzy2dFL1WmR}VXO>*%8_!Yd zP|g;=h?h}1vrdq48HOe>l*N(DylV@igKDWm=^;JF84=W>I3phFP)y{bI~0x49ZH5$ z!E`7#g_ZG}Aa^J_Xm==iUz7$>K4OCGBRXh&q>92n#z!>cBYngGa`F)!o1>2m>Zr?5 zbtp+8Q;d&{jy#fwePlr8b(Pf~zt%IIG)rrgcXH%7+9*tpmK<@?Lt4W_7-4(JaGRT| z^hWtMe00Up6>TBtR1C<}L55;WaX{@l=(P?9iMtd2fcmI!D|}nQDb9e5IEE%L)FG}y zyv`eG_eJ<}5;qLT&^yH$kP*kw1cut;T-N)xI399^?V>JkOZlDUjW{RBc*tggCNR|Y zkR7%#>QufBy&2G*iZcdTq8QbwIAglW7)PgKVoj&=ZRqJx8g~Uw(K{2_sTdq>WX|$= z1UBI%X|0y_2+XF)5ts?G!|31~-Kk_M0m@-akR3(`jl*Oq{9_zOGd|K`3?L_m(XkIX zOz=C5SO1{v%49hfn;i0mah)$hMuhQG*NCvs!hASz)}r$mW;~q|$JCU#$#Hg9G%fB} zb#}93)kot<^VE+;a;puk>^=$2BYsxF<~qHSC>c?5qfB)-rhMS#>h%i8E3u3(a74Ry z)tKir3*Lo@l(>m;cEz(yoOIPrsBet0UG;sNo19^7wJp_f8PsABLb`p&sLlo%XJBXo zLv3g9TDxo{iM#RiuTSH$sre?n*)ie_$cSTT0z)0*iaf9LM&gD(J&MHLfBydSPH_fg z#4$91p|&`e^|~#NTy=fbZB=nu`TSakI48)sDnk<(%HpUqTWJd;SN*2)&sDUmI%BZS z3&ki`b;e*fJ&JL-s);qO`c35{mEo$%RSs97lxZgcN6Og#UaXf=@US$fyR??++iZ$- zRTE@a)j_*&+o}X8S2aO)RUI_0dQ#yZty+hR-KkQvovO%T5chU zTUBA5L!1-j2dnVYOAvWQ?Qcn^;rx z@5PQTgPOm&OiEcwnQOkm{RK6jQ|2e1VF@yO&)ZKvHU+BT$;Slw$wvp}WJG!|paiIz zZ-QL&b~{ zEbkx^Hz#aPkT?S}Zp_dGhC0L*u?xlxJB|)$xk`!rU9AKXDA-h0CiNR3f;6aByM=I z(Zz7tRcco$r#J&L;uxC1P=~npgT!4gc9+BrDm5rboBl&*L7!1f{am>-5G;6j(8lk-Nc$6 zE3L@VBB<}DiY%eeyxe02rA>zzuMF&^Imb#IdZs3?2f2WgBD*ddfI%c&NC#~f=&uAQ z7cfC~0Ub0hkgD*HaRJTvNEa}GoLoT1I$Z!$?hE}z=5~WSsIOt?IH%%-i%wnoF8m0d z%k?`46ITYN6=mq;C`RA~l5A-cUe&dk#`b5zuA_;?Wa}R>5zjn%7?2*@<0~OSdoa|l zeqJj*NL(uB975dWh{-|X49JLMXb*-u#CczHYBwXW2rahQ6TZh}5u-x`GU6E8gQ2!K zm-U=2?it8AkFA(UyYOiaaZZpF_YCSCL%T7Q#gTK2vW3;aGv*!Ngiw4d;mWWW+JFJ3}4f5`)AY&wrMtWG*YbEJ&OI8F38l&QM#N%i0_y?tJvM zXo$OCXrM!!6QsqV<`WbMm=nE>J_DYNUdA)Rc&(OE0k0vXd`R*5YyM4^Lp}9O zTuYz!yxID&Net{v>C&1+3kc*w%X&$peYM)>pL3MYp{EiP5m|1XOAuci!>axz+(IliPUT4?d7H!0RDO^wy>|4E3Wi=F1fOT6(il! zCur5_(1ZeAP@r9C118M)e(BE${P|TGc=h$5<&D`m<3#~F1lZoXiJo!~_FLJq8e?ZQ7Fmsb2cuP9Q;Mv<`ynVFVsj6CG0kzos^w(HV&J~WU|+o;^+Qyq z4~Nrp<#5T2U5Tk)s0=t*DFd-pk;{g1zT~^OeK%P>YuGu?&d?C$(6A{VUDTpC?%(~8 zOoSZ&RpsbO|J%s%zaGkQ>UdqaG00y`XYh8$d^IZEE^i|6=36rG*1NKB+2mHb&6St* z&6^iS&YPbN{zNnC&0PMS3Q{uI)Yb-@mEP7@Y^s)^ayf1orGpjr?`)6dol7yrLoCIq2SnWO{()^twpYeKXQvuL zhzMHH7EzKjQx!$l2}L%>O+iYJC*@iV>`cf}2pVcpxT^PUya=gU6K+U9E5-(i5IPpN zln@22kNpS7f$o`~Edl^I65*MZzmEWW4h1n99|goPoKVXFABhMlx)p&*XpL(`)*iw*UrhLx2Hqda{6e=2xk z6X74CXf9e2=kbqJ!J^)`V^|lDHCB;?D=*Z{ThQ}%jFgGL)|Jt^GJF6leDE#pjs2}> zjapc=#ybk@5*h74c88mFA4Thi)VAf0xLRmaYjGTQB@eDdB*uYE<_ z&E;%TOau2Q?NBXn_y~LbR1XZ)MP!#jZH&uf#f{ar3@1Iqi}6tior}fAqBE$<2O)GW zR)c~ld-_=`#%PWY;Dk5bb3M3h@a({asz-zpSlma=N^h>w;A&u}lh@PRCGwW?^#0I= zvov&B)-u(@<%4ckZ9AEdt<*~Ak!3N*`-NBCKZNm)Uhpvk=myZjvnIP+Z-0(>v?F1z?(k<39)W(jY&UzURTv>TVz&(=K_FCmY4 zPJ8%ZOn5_oWd^4=Oi?t9El4Z;tW>*(KMBR3jFT;GT+q&Z2J;l^_EWr$oPg*x0n|Gz zI7C%IHLpMj%n$`a?{ALep0<+!Lz`_n-MI)!f2*U#^OxA86pPagDWrtLuT-V{TWe5qL^?bYJOuvysiTzNEA@#nubMR?+rv_;bqrz>Uk4 z#>*O`K$)THS-oQ7zJU0zfI2bMnr5Qb9Z`Vky2N3}6X3kwfA zLE2AE;r=1P3D&Su7hM4#C#LQn!q8EOoDhye#QB+zRKjlJ-6&jYg|65clZ#fC;)Oq% z@R;YCESPJaL9#q(EjpXP!j|hrT3{%1(LD)o zwZ$m!C*0|L;yp-ho%~s?ZHDSF!~u7I>NbBtolp>~s}1nNTq)k!xF`oE5e@-G{2#e$ zmO$G+T@Pnnf*VhRQav036`hw#50SIE-#;G zt}3*8qOpU7w&VgMdzleB0X&wzsm(NjJGcpWYsB7gAbdD~G8&aSyV zYin{LtgSh_9>pB5cY&`L>iy7w!uJ~tZ%FB(v+Jm&hk8dJG{>GxgR{+Ev6Igao92HG zrSse}_}tu&#K`a!nBR(sDp&AwH z%ofhfRNg)&l>-f+SF;h?}kx!Y63^9A^TtQ*Lwh z^H|mG3|mm#%7fGYYSbrTHn!S79G-q(UR{NT`u_^&?V77 zlwP5Y_0OV9ntvf(R?;yxbe88)x*YY7pjUy{LX!dr-42Wl!{ut&Ra{^tnb!iCW@0PF zMV_Y~YJQ?Ml9mX5M`v<%5fcA#n=pa0#Zb5i@=&Cx3=DNob@Lsi;RMt2 z5{krF=%E;_lAxIG565&8ZzF;|HCR{zN6?x-|5~L`Bs-;lNMEVnG^GbBqakUJ9<4ya zMbF6vtALe$R=Q1>_UNk~Oc1r+j-q$_MJwXZ3$G|Xu)3{h-qwbRlD3E{4a1avg*(QcVr3kG$7kAlrjM;iF}HurzWPW=x?yI9_9yY#0XBOOXx3jC$8)!|+*yMY2Vp z*Eo=!Qwj_C36#W=W0O?6?y3RlbXpimCjtqlE6JuSiN;l{{99L#)#_bc8_12VFjR$( z-SDUHQ0m@?(Jo1FUH1~YY;}J}mrVB^y8PmvMo&$%d|!~Sr~6jYWwUQTT@Ltuq|48A zic@=>-9!g8iCKkr6vk!ElgFRLx0XqlGXY#S4nwKEk>28pKmYafZ)^)NJjJGm?eW|iGqnQ!h?POic? zJF4uJH>avBf0`)jSoPtSqfF?hi{45oR zja{7sc2D3S&Hvw3dsposY@oMJ+sGY?6DxonRC|yU>$1AqSo!9nK0xb3x6!#G8=l$v z49TTor!~*UQSII4JK~4$J`{sR<`hHUH?r|yvk8i!7nbzHJ4hpudVNv;S(MH;Is^&N z*#7-~N|{G?PUJt(>`OT~AT0%*08M-Or*b~bi1lSbl=mf|&$U1hso6~Unmn#AE zrV1ZYOc3W~yX;_Fwgq&z_9^_M-XN>xGg=OPNXc>ei~;2IAw|aq&j|A;zb6Z~zG`YL z*ZaD(JEFB(U37ao62&E&@v8WaDGau*KDf zoO=Z)6(a2lO)4xK7;*t81ar9xPQtcZ(mAHt%=GC$vCyYMA9oC&agKWhN6-`W#zJEY zlM+khBM@j=Ucsy^YvO zhi|^lH?ROA`WIcsb6ZH}FDJA8c5;Zao$zovaz?@Su z{3a!C%(^j;Bc&rbr!+QZN>EDcORq2ONZI7c@SBu~8F?ZeJ0+J@@gr@$dJaiq*OPmm zbcXLf_24N-Sf}LVm&1{INP?JgAs$W%1!cWwr$Ymle-}SfLeD;T#$ZPpicu}DGp37- zaSTUHtZ8xoT^t(}wHK31oZ!`BG#qiH+ygBx%jZ!@t7MsTGYYXOH0E>rO_0B1>!3Xf z8KVTKQHTlhC`1R%C?s9sAJyKfQHW-IN3jGbiVi48KWzGW;ebVn#~DW2fY@ zzOqva^1JaxKP~FC-qa^&ShNja>%eFcN*+5KD`$!aNb~!mPjB zooM@jca*)k%_sS14}(@t8^2@j0^E_ zO4K1*1GVkQF%RUqkXJjVGp3u2QI6@1!HNXpaX6-lHI8{8&nf!IG%fELn&+XP&kgdg zaLuiGGV9>;IXyDhI%oBC8GoQXIX!VrVypk~rlYZ`tC=IX)H31uo0Qa(tH1 z&f$b~BM6R^moKm0u$jp@QpIYs{LJIB44-k1PsMzC9si?POan~m90o_u!SdNTMymGP zIEPKq&S4XzbLgP$9D9@qUQPDOr~9OUs;l?9J($X>SdIh`&k&%f!V((bzIl z>pC>$l77};o0mR?m8)!*loViXu;bZ~4cT0xVRP87`5$HAk8dM@Q*b#X*&Kfz64(L_ zphg1{1LHM(1%X#c3<7_I{Y2llVac3N)cubI!IqJAWOYCuW!vPkj@TKqpuVNHn11>1 z&RjS^Ug+heclj^>U6~HXJ7>#4Aqh_yzT>s&4j-U8?BunJi|k^xSIP)iMWkG@kx9`J zRR!r)p(r(L`w>wru$L{659)}KT*&r76+u;q#|jQ4=@gkS1PMI#G)ci>H?|l|aua3i zIrK776`)rIiqd-J9K{0DZGi!B1&Y~vZE)ztX{$e0hRsn5DwJx#Du@QpBk=soGVt)n^LB}ged1aXDtlcY!xviRCsvh`YGk7xF5w*I}mI;U1>J>7MNLvlDx!)=Fic=0h4 z+YX1WNCE>q3u{#(fC@>Oy~dNV4^DXUg?*`(j^@=p{h&e9Y+0Y?PztEabFgtKD%dGZ@|1+r z?q7)T3#A;7ln2w4(!rh~qyX?kJj;o&+`}4yu)?#J2y3AjBOYpXY_<62|E+Gpx|oo4 z%`Ob~yr5=w9NA->d%QBxc=ui+>~-%`gtOQj0)!jxn~HGLJ&Q~-%af*zmgbocf=Lc{ zjudO7glp^0p*;faSu)zivu>7vJC-14vs+Ks*R2GN8w;1Vdpt_Onr_FI@$@by%9O>( z=(S#+UVhQ*opQYkj}y{8s+Yh*4m(t;W@+yZQ`h}i2ZyGWoj1~!SCX7}m}jI%J1O`ULx*zvNTZ-bCBc%au)hFpMPT1{h>M&T32pZ3te?wuzR+Y{J4F)I*qTr{^#c z4ttI(!g0?Q+G}Ksceh$qwA)J?DJ!{_k;ZF5H(-AcEP=V{SYG7RzyXheg=4mP@N#dP zOdM-5cG3ng378JfiGy(5vxAO?*dY@KffJ|cg~7idxgA9emf&<3JEUA}W4+UpNrX%( z7lh-UU0x7&Nx2}fT=_-bDLF{)iy~$t)zFPn?u#V%5D^YZxgZ?(tivR7u};bbf#sqO zW1Rw~cP(hBO)v1kFGMIk{e;3h~Youm>ukUV~%M58bnO)KeutYatd!$W&t=R>^ zEfj>_tKjFh+S)wWYDAQ$MTKrP=bdGmEVyVBSPQ?((bg^Lw>A=8b(@G0lX#&m;6i_1sg|Ue>>DU{|N=h*-sb@*g@Wh zTq|ZZYNAWN8T4wlfc$@fXO;5*RXA%9%E`%doDYMKCk5kQgk4@-LJqdXvl3WAEK1+^ zno8NB5qi{7yJB2Pdf4~BuadorNGnnBZV{ znxtsQ5*o|ib=XfsFn+pRVdtFQPK(enZa1%6LnX4d+HnQ&!o9#-?w7<{sJ}f(^}{Oe zj|gJb<_Q(-?0zXY*qx28V!M(WTw+C(+9)xLR@N1tE<(cXK{?(yowC!WzRF(;wX{?v zuCW-w+i#oM2^z(GZV? zqSLEn8B|Y=n1n`!O21$;S$Xnet`wqmur$G+#yUhSnj}Soej?E~njTz7`zHEOk0<&* zRY%o*>YGP|dA`LIz1X)z(sN*r2lHefymPW-M!WW@?{gx2PR#L|Sv~1$2{PplVE)7h zD}5rF(ae47TS$b3#N0tMV|^`Fs*E9;e$^-ii46a7I@b5N|2(D!i}U_Ve%VG`(&yy$ zqZgt5Li@|(@^tcimCW&AzK9ve;-X|m1}^#U6XCue%<-C;Gayb7Et?K0{?AB<&-`;p zhdKTQN{0phRYX|j-$>CL{hK5`SO;c~2lG5ia-L*{4h#HW5#cLhj@QiDjmXR$!2G!% zHv3#M!-xy~Yl*Oym^)}@X~Y>s%a(x*-*GDD((Za5s7CsMXD}XTRdR^V@<72X84blbns<)?3_xwa}9)6NYsBy}3kq8&Tz{3T_0z7~nG!TW& zBIR32=$nfa_x{clQ@pA4_@C-cQ-j(x?;>MB(hIBpCU}vF2{^YII?s|wWFpPGkO&LG z5R{1&0^&qC2}CAXq<*&raft4yqcP&-=#FUDRBDe^XzcG%NNn(JAqUvv+v;fNM6V=z zFiyfVSE%>vMP)c`s;udrT~vlphMRtB`&q5II7O5i{>>rB@SRJX3%SF=J0as}k;^!1 zsRim%YnMf!UDl68{n5GsDhm?#LO$iFPXR#}?s0>%)Us07wxteU|3o^S@z)t={9U2Z z^A+zkRVvrKS%X=#+~V^WjT z5E%EHskz+ZJ3h)4Mw53m&KExrEx0v;tVA(IAcs@LY}yBMwpgUjZCxZXh>(HvTxBay zr+|ZSO(cc{IThIoQYH%Ien$k-`ClZyBf@u53J5HP4xokO``J@CrKP^%sBIULgG3A_X+Lu_ld-z9blYE z7sbdacLZ`TEh*X?$|<8sm=Tyy>yhR|0jQ!*TM|n`zoR$k9Eq2WsK#P>XbS19G)3pZ zbsJ;@U-C-DS;H46Aw4% zG@LRF$(CVAwhW=glKYYwNE&`5Z*S-jdb2tNX|Ro;8haT(@L{sc2_C|q2)z}GR`^!v z-B9nFc-p%g`XJQzRxfN?iwC?Sl^-56igf>B8VVft-&A9qoBk{!Wci0YG{6FQKXv{4 z{WoY<#SO`Wy1+c>alu2)oUS`)YjVXvc#-KpN2C2L{~+gZOk`Lis39NWOIG?N`zMfo z6Z~^?7`xahquaC|SkU!>wV9@DY({^;{S~@|ABgaS@2Dai_1z%C4c|>gxak`~*&E^K zB#}K%5`7_(49cEK4f_ADrN`Du_06G)M67~oUB#7!*lr>MCYCX?dPK4#wc1duk z2yhZvB*~gf(?sS<9%PSs;+ZEXd%0v_{l;5UsqckEU}%spzV?e%I^Ribm9p%YVH_V_ENEiTJHUH z(vCJN^h@!sq~XF!Z0aDJ?1SFZL^zGjftcXbFU9*MjTyf59-y(s0m%dXm?xfjg7wQC z1M9ch`!$U)PJ3@UyL^#KTL5*&`^U3th$lhQ0}Z%uVOI^?ej>wtod$u|-9wdjLp>9m19$)~(?^WU?qA*Bw|Y(& zze*%@Vx*~fk4K`g?zyw*Bbok*3ni|W2;S55AYN=C4M{tLDxz9&`Bjl%#&biDk3O`58#4ta8aXqYdP#n?~&I%Ezjj*ke^MR%P=2s&{af2;%R=jj3Vc$JAJiHP|38uCclX#H_9{ zpeC;Z8&ETeKJF&foL`H>^K0G04R&h3RV$0Od&{advo?ok*1n7zFV1$XeY-XyZr7ey zhr{#gY@%h%o9drzz`&CY1~%e|fsN7{v&^){^BV&(zwr|6gaaLxH2#Ld-!z`kgySbP znbrgnr#0E!l*5~wj%voDMm3w*3=tEXt@#6o*Zg7Vb1Zu3b1BauBIUWI&vSU`^LtxD z;@*}wS~2iOtMP3(VtkwBZCU2>wwrlUGxxEw?_XI`7v$-Z5O%ucjxrb_>?pIpjDPf5 zlqQvmWeY1zg+QdMPvA# z757y{Q@gL?v5LHj>amJv5Y~p@S@D~S((vC@JVLs2G#h>=fQ}ct^t>*1mCGt;n-N-T z5|(_EWidn8CiRe{9;iz6gIRaspb@gt#d3GcA*D%`W>>=HWTl0bIk&R(c9laxX^j&wn3ggt2)lOELTUlC-@7QW5p&v!F)%sN)Ryn)XhE*O{*;wsl zrAw7ywM&)mRAQ^$snoBsvD(Q>XDUgnovCz_GQrVowUYoktj3vgaXu*Pmnx^#Ky_WG zS{RB2ZCw@EblcN+=x`+_t*dgMP7k^h_ZhZHmeuqU8gr07uO?AcO_|hPl2kQiQV&UT zRMSh9uhU$T&#UdPMq2EzcA*-A^Wv_@kx8Hf2|HN@c4zrqO^;QZhfQ2m`#=F%P5F+i z=`pB6?5Ldc;x5HWgYz95d|sT4W`l2!`z|iK!M}?;9A^wZFYe1Y82rn)b#ZL)b#dDf z*41=g+`>3%@P%<-#X)zDW`oZI&|z?{fb**!llB`!_A{jJ+|}u7%BUWag7Q4R0JZLV(DP6{AdMMi2cFLklX zSevU4ts#xYcWkW9)nzmr>v;8Z)w3JxT=g5(jj=XY|F$}e^=4{D&( z`<41|`FUJCsBx_pNYs04(zROWYlB2xyduF~=WDO510r?zxTH1S!f>j?JjO^6Kh>2& zH3>U%en3QQ#Iy1P=>UxEA(4)%y|~8m8pz^Lb;t3(I^*hnSr5VM_14n%I2da~ed*BgY5Mg&K5!CkL6 zy1t{}xJqBZK+IU*Cb8{MB#qd1HW?P+a&px43pK~pqEa7MYc`GF1~!`52$%hhQX6ws zCF@YNMmEN{f&+{g2|3II^T#*cD~UKgmqot-{^27X|ltO&XV>V%_iFqV0M$8dS<4h zcCu}V#3n>6Yfq<O|BGbyx; zN^!zAd+LvCV4I8r(qwd}O|}Q_qD(ff!J!7yWPHaa8`nTav&oh;SluAI$yPVm+Q67> zT!ZNiV6y2A<~3lG&1mt)VOh0wgRgk0Z-{JgG}~?&fDYSnwp@ZA#qjbGO&-}`OXKBjb$hy{ z@t7uX-x1C6JfhmuF-?-1fkaOtnv~RR;Bz3+XHe8;6Vu%(RV(wfn7 ze#`8oHNWMumZr1@wj4zh*+;dU+>%Rca?2SA>(Uz7a%f9gT0>h-Xo+laG?&&u03D^p zEPAB57l4IwO0?a&px4K}{DnC8I5Dy1pq=8{cMb8(hw`Sfp z5s6KPDvMIr?I|OB$a?HBSyr>ze;||1{=>>YAho?MPg6OiwYuDjb4(R3tJ%EgU^4aq zHra`mX{~INQ9zoE?zG8Hz+IHd(pvr8N}7!C*koy~WHg&>bF1C0vYTvotNpEv$WZtIth-o=i6R`Olw6YByR9X^qRa)+uc$$K;{9h3Fx!QVU^=K)o8!dRuGT zb`+4dqdRT80j%^A~z1zXEvjE2Cdg z$7g^v=#?B#&JdYBZuY>thnqc?_Qc?JY0u?7M?MP+mDQ zbOOV@9(?{mzn)8I@dl+p9I!*bo(p;gpXk6zQmPrj$Kyodhe9vdi3NvhmV?y;=L!v|-G%!I*|)4|;* zbO(My_lezQPA7Js2|DJX4%ph6-)#n_0*M*jrqHQoX$c$X zvNd5JUG^m$LT0&YiHQkQ5~yg>Aj=zihgu0#l%?H{btCGrZb=DnN&Mu?PD8)j4O{eo zD7Wap+bydbHtFXOzk~)?IEQJ|eo#o{WfIkqMByh=UtUEvUG?%_wN7pC%f~>Fu@bPI z?6&>o-GtjMaWE6(^c-J^L39Tl4MT9Wp7uiNbe-Q7{PVl+?~2jJ{;mU5asyr-|8lks z^%=dhD-zw=^+H#e_d?f;YSrq+u31FLlI+l8z{?{^yOAUX(??N-#F?&VXpW`0*!5Od z`Ne^Y0!b^GXGlaaBQgq*(e8{|P~y-|Ms@}xl9ETOFvkH->;Mu)DN`i*1HDhn#vm;! zGGF@TCD`GYm&U3j#&(?s!^l|T%6w@EWqnB3B(hghSH>ZyjI-^X`4XZ#=xErRqdRcI z+z6+3S>J`Mu)fR27f`)7zHsCPo~(J~g|i4#LVLTceu2li;#;~iQ#28Ci+OK#8T|q> zHRgq>bea9a>KA0*0DusF6+PjF*)Q<4Off-4;LTbOWGqms>8kxxD4y`Sto!#>-1eG zgf4Wt+Q}PwX}Y)`{~(^x58_vKM*OPIdpjfkbm!}I8QkTQF7_!4tb+58tSC3zCba|O zH|=J($7NK9$sKT6-r*o!4tBWK0kvmp$0Z#R`gg~}bos2)CemaRR6yL-PUGScS|7h7 z9-&p8Pm>mRI)BndeOaIc#ncWt&m%sLt<2h*E(FK{Y$TQ zT2B&5FxgMqON{OKStnXQK(TbCY@2n|VtL0sq~e~ACpsegEP@+G>Zq@FN+n4mHGVE> zJU4zpJa^PQCF6eE)$Ib_=GFAE1E)J*?Cc2hu><0M+r{lj0!5NeG_IjPh?vX~liN)t zTTX4axE)kK-T7>1Sb+{3U{))&_NSNu#_a0eMAGpBELR;b@K9pxvJ2a1w1)+gQLZqZ z$Bh?d3)}Z&vk{Gy@}gN_qQRj;u4YC=@*UyiPfX7DWj?63@eiePppJ26wtY$j=!=;Pgbc`Z!WGF* zRwk2C;5c-7wrdQF!?vBpmto&IJM0A2t{Dun!^{d@4nh{y@!|`L*odsfz@Kv=0W^VXey~$bu3Vi`}C#x>qc*ID8*= zxrn=f*9li7M>2TNTX0iBRh#HG;QgqzN>3`Wv*2M6pRjAw_r)%vQ0)Bq;cOv7ewPDfoS{vk>J(DUw4vp7RS{*9y{Yz*|OFTJ&q;I!HXU6GIA(D5Nq% zw*hbBm)aeH8v&BUr4~xlIJymZyVwl^aA_b(+^RzBG>&cq-f>;DVSrl)lEfV-^n=FH zZNU3YMF;K&kbt8f4n4(4!)&P{T){i3h&oO1{1~)>N|QEtdW5@m{1dJ$qf0+GY}nsD z1sA5k2yWqx0x>GvQY)C4S-eH$V`Y&l0MW84P(@T7#{;DjgsDDZE5o4U%CIA0a>#!q z>{lZE8a6AO2^y)cVE8f&qo^;#zM%u#z6tx5_%Mq4HtaAF4og8G90{9A$6d?}XF=*| z$w>Pz1W~UbW`r#c^Yn=ki^JB2dES(A#m2DBVaW34upKxafN2k_L1Zy397l5CP&z0V zG)5Nb;RnKz{R81Y%j}Dv!~4_9zy1+v5z;_u5nq5H6I6e}wU-v??hQXjSw1J3VS}H; zXJK0?F-tOoz|77GjL_xxGIRDfAw|mm-tZsf$|i9%{6}Po>dw#MX%Tv$@{kIwvPgW;_*AlO+2;7A0rc_d+w1S8uslIhY+ z--6$G4ab_Gu}fy;Ei&A#$Zzt%F5h4;LTSH@JbUuMesUBe2!-Yfu0h;8MN{Ga~Tk=AKEqNEvsl5xL zS4B$=Rz>fLh6eQ1WFz;{W_n^@-h+9O?}K@lL}R?QBzh%qg5XN0RneQGA6io=R_FaZ znl#1OF7NHUR_gFC z7&R=~UL+_6MNPq`gJMe5?I^4dyiIXEkP#5>(Po5r$uWbY>^uHAKLfFp27Aiks2`*B zD!?D3PU{`1xD`!{T1f5a!l><0s3zN^_C#^D*%NgbVcnXhMJ-qB|CUF6OK^_nHgzF@ zjtW7|ub3I_uqfqyCQ5^}sf1YBK+9Ei>F+L&4X@)(TsPU08$*Z3=c zllU8aoRbqN?jIz5w-$JbuY&NfCAWNXDn?FlIl)Zlwr7Lx-;G4CoE5Mi9MbJ9xMbrg<<(RoYE*# z#RfE1=^?8_u(RTh5Rq!FKy$6a>+s5HN63W`kz%EQni2ASh{#0PzCDZE3n4c`#4jPg zhTs6UftDC=ji;HCzD%F^$#)&?egCjQVPa(1$S{}qG5k`vxDtK~QygbR&W#kSBG*Q` z#I%Cb3W^y8R}>T(1!rob(x?Ms2AzvBugsTa#N4tA z%etJm-S9o{lx9dFZcZF-lW;rH+$L8aS6!qw zoZHYP&elk*B}O;RXzCJ)wK8jo^d^~2#I5gv&oqz;%KvL zkd;<m@c2tDAiX)c!_?8i~wCiA}_rCZn5*jHXwbitm~o zMNDR+8;wDPyqgcjY;O$W2!bDhQfC{fFx_5mB(60Y(O8UaJhrh*+-{WESR^(cirWz& zh!u?iy$4pzuYB(Cb7I5u+n#rcZ_RDy^O?_!pPs+>ycpU%xw%V>Yd)vBnA?0&bCKSB z8NwTy?`tj&Hb2;0{LuVzb8(}2Vhg-9>u|q=c+g=0rk)P#l+sD0bV|jm@)z#BfC^-8 z*SwtZvPeuAoB%22_RwF>|3zH-%ZWW z?O|_=(Ql`|4d;G)$~$7(JE`x8HSa8b*Ci&rgYevU>GuA+{ofNw?@f8nC62y#;yrQx zy}P*G@czN~#o6~Sye}@jf8%|T_(A^<;PyIg~uYHK`EC0&)mzex3tNzVWfhOmv^3K*qmre%gBhWVVbD!#mKw^LQ;QpAB-QPW_ zKZ2_VyYWw~8|=P^%g`b2JI*ZixFHE<=a9lZS$OVW=Db#HFF`8x)*2+&y== zTPzsvUOXJZwZq-`CpHduZ>C^sl6!WNTYR46UX_I4z9jcy1dk@U&*O3@$(=F+N{nz% zAA!gLBZ7j6a>k~Qa4!e=s}b&<1YVZxUYYC`879gRBPbEPR6$n^R)S!s(NeERCO=to_ z2#BB%E+CsGpEg5EAF76VGjAT z9mk2VO#4v7nX%g{A}K7PPCUjT-EUj@9*P`CPvXn-^t+gX*EDM7G@<6b&GfhI8n@8x zchD$&CVr##8M<1&$7(8(`rPUtmnvTNj+GyXmolhXD~BxGYb8Nv(bwTBd*6tEp}A@} zUU~9>RVtC%0O*yp4dbhodZU^6<_9%JPvJwj4tdc|Ny3$zWk`ABuvNxIf#I~k`JG1ue!buaLDk_tRnFgk19{sic?x^hb%f~6^Wr0Vyi%*<5o&MopzqX zfL^sz+!X4gctCNLwnd{O+A1fl!>8Q;T%@T(zGc^v6cSe_9_5fH?0lVG(9Qz~8lSLw zc2fjqbgN%HB-$ZkPuAoIrJ%eW51@c>hm>Dh`JvS9YU9B; zU3gYog&yBHZRNQrw53D7YsV!;B-M#y4o$zZ%DbsCP;jUn52oNqhumPtUDT+PL(X4=1)g<|%DB%W&{PKG%sUh{xb;#$ctvEWuX08?YIphy^ zzNA022~NCownWe>IbEmk^q+Ny%=*DRuLCPL{Ys))D+~a&2Ls}Gn(sMf-zM6Zl&OZ2w0rB3sxNU zdeUvTIpiw8q-Z0lqbcl?!$tAe(H(aN)q1fTSB+N&IA~Ak`KY}KDi@mhZw>Fw~M!y+H z)o~XS9rRA*(kR52#?YDgc?tA%!f7Ntzw5GY^m;dy zeZ)%0_&i0qo9!_9v0tm@#xSo7n}>C5IzT7dI! zS=ff&%lsmfgD%xH^6XuGH_Ep2-M!9{JCwxyG8pUi+KLWXMK>rAT7 z{1GGgCF5cSO>I}v4s1rdH`~!W?am`O^NM4g=*v#$!8Xsna{iUH_{!~9!i3*(Lq~eO z<2M~)mhbdsC;F|^#7ufTb2XazIHe#|V*0vFMEb7R`p_?^b|PUF20JI*y;)`WiT zKIU$JE)||{3i5tlVwdDG_@;MeE-#_kXn6B^))o{+TX4P3)|zB9<;B=(Y{pJ zZvn2csd#nvV>vL#^f=aoPV_jMO^@ZM{3ZS9yeeeo{0?sV6E0K@7TON}jNpcz(|gf+ znCBse^xW5zj`jSprx~B#t16oo_IaZ(UF=tg{EPjz_oqGmIk@qG5Gt4Rg?@TMpbpg~J|4@W3r!-a@|&n>n234_`VQ@+17jXy)+w9K5yo zc6#pivZ3_C(86K#*0Aq~(d)x^4R`Ev_|YAHTew(z7A&gvB3K#iGeO72ClYASk9QvD zXIOp}y9s-PgA0j+^PDH0_*mfu1P|8)C-U{{DRM39?ydVOIlM26s_ z!BCQaA53S0ABWt1F1Rp+3PYwLSQh$RD6NKi84a)=dtc~b1b++tEtD>VJ`qOq!{&$4 z!mtXEzinZA!sxxQ55gRGLPKK{(QVFWKs9MIQ5BuW=*r|8No#TE9`dMXi3e|HEc4I` z&o+KiL@&5MFc-cI*~*b^`<4$ z{N#PfPzBdNU!PuTu)6^ynBd^_5fyZAsmlN^hm^PNff0KSuoX z)X!7t%hYdD>1^s_4e7~-uQYVr;1BH$cq@*!YCAQ0SNlTXX`i_S1SusvE>KQ14=*uL zB|dx)%0wq5o@A(0!9{rQKt6*NnJkN;(~L3A{z zI*4Y&RKz*w-SligML2r${4w<5pg-`P9GVtTjC1yffKwhS3@Q$ys-UCD`XOMB2amoy4K%qBFwH~L@Jal+KJ#E*BKYU0hlauKjU`n z_8-6z@ui?|@DLNtAn_O^3o#T zD?Zxbd(TG)eP?|1Y}Do`dK1=o`YdW%G|h~j1MEH;a4L`%g`Wwh6A=@=fLhS2!L$Ju zH4x*_qHx$=iojOTya;c%IFVC|rLt-S+@JG!Z`78q4js4Mza6soE)x3PlOv_%hzMgs24O zt3>P+u+V;uj{Otg;KY+yGBa_zliqgjb<%#ksO!KR465crL6d{IP)&Sas1g6oiI!&z zpuj%lpA7vrl)eq+PR!t0r2fv_-Quw4!sz|*!{Kx|{G)LCKKutzje~gXioOt#+N|Jt zK^Gt*(o8H1NV7h{MUz}JTr|V=1lG1XqB??pi1;;vE=Cl39n7=ZB(fslga`KTeLfWP zRr~0iZ$>1|k6aPysOMiSEP~}FoD7h^XKC{_TEeJTYx|Ex>SC=B^M6g-1YLu+1HfJD z-sz@2?mce2RyZk;<^{eCYQ5L9*F*1nj(F%Z&v9&*1H7qs1y97r*cJSCFzpTg5DULD z^m!)#uK^T`BVLW5Q|;DX0iA{Ste2{M(<7-Yt_l=zdSqD~RmJ^LpGq2>YDaHf@hu7+ zjzMBcgDs$K6$u|E&>?(j6BMw~A5H0xriIPv)3nlbTGi%g8=BO%q%G(C*qDB8T-bz4 zn<1NXIB|Jn6$dki8`yNT&G9yLy3Hh%FHJwzn!ay6p$$!GvkI4U+p3;FMbG=w_ovhG z^dHlql;x~X+MNQ^wWIC+wsfZLibP@f0lY5{OPu+li87Foab*-igLM>X0AX@g_84v_s~< z=+_9uvHR_~A)wcaLqLDr&Tm0iU+0kP?RYq)UJ1Kwh0$Ikmt_!w%E3w`&_xmCaJ4cE zP0?HlrWpvOtW?%T1tieeu@2eEEXaVwY+OUlc#40$D!WiBjmDJr*zq6=f*Aa@9d}W? zZVq|fOV*UpPby3tWq{idJJC=Z6xwm9RvJ^Yc68;<^yqZW;j#>0UwG^(MmX;D-+Alx zSuVUCx&Zrlr|Stfl`xGibH9mmX+PUDj=D}E>w;^t8%LU%55^*BaS$yIs>D7rgH@mw zD}r7KqV++W5UdIUxqc_;y&%WSu$kH9KnM!xh@Ql0fj9Sl74(OwX2vOCxd&B#LdDa; z=YzqZm0`0g7N;`gs}M!^A!dYEg;RC-x1eJaB34DvOA#+2_-*u$(KI(^ZVbH}b1H_u zkNG}^%3{l6LA+v)#?aB2xvT^=S{%PLo;D=BkJP2{%j0Qf{00QyM?y_4%s=rd=7FB8N9*b>sc*(# z`&0aIq7rt^{4I%xK`~U-eTfGUJeqhak-kqXgy6fb-tl@gt$s1uDoWmwOed13Avh^{ zPBJY`el?jYlV7(IPc-Qs7&FGV6 zpERQr&Aw|!JFnPz1-*AgVSC!v-YgB#n!mLET;ul}qxQGlM0I<=M2J+4k2R*R8n13b zl}-Fxb5LQ^@}{)D>EULOSeu?`O5ZlEZc0Bkos9U2rr$QD>ZU(7rOC~(;ekbkmbb2y<77F<%evLx* zNO0b?dV?Xn07QC2t8ZJ;ceS#ALbiYW>Fyk#cGb?S zsQBu#t2wxVgKWWDd+qvbsieoe9yn=xPVY%i^qk$37WUlPlgfIn?}e4^ISsNmg7~u~ zo634u^u}@5>ziJ5uGi1Ve>~^a9NL}pE+qUnbKc6Kk8(cEp>K1}=FqP>7jkGq?}@!> zYVVn-^kMH0d($Vqm-V5FK0Eu+VcdVjLiF3*kKXKeq#u3S@91?@(SQE+Fic#(=z3au z{f6sl^Y!y@z!+{gf@|qFoVwE74B7_Hv?vmG4t>ma%~Xu@Ec zK6n;7z?w9qWC*PsvU&(Tdt1frSZu#|)ot|FZExL%9m4smZmUAD z;UK6LFcsu=$Ba1L%6N;`+18cJ2es}Mgh^ypAJI`lY7 zRSlaroE8o*8%{qD|9v=3%b%SOay;Bj1Y@56_z0>VQ8tn)MplmG_{MyCGyiBl601jG zW%Cc`)8YJ&QEUE)Pe;(P5nqm=vXRS2(sLtMjikzv+fZq@l>?p3$TvpO2cu4oqK`%& zAB{b7$ILru_8m{%0sOo3%-#N3)ps7gOU1D)cYSsjeR0>0yW!(-_Xl^=$9JDb@Z_kO zqiO!=k4Dq+(LbTBl6$_p*NA_m;=kWhbT3W0cj3MCE((Fj-S^vlRCxd5`!Vf;-37F- z;DZ7O-#@dD?P{7PX*nKygfNTe%kl8|egvnnME$f}Dyh&_=)#|cNSvit>vYWZ6N1kM zycR$k1Ktdv9RUXe=m@?y>*(y?Yz4hdbQmx4Q8g7x3`Bm1w)9D;yDy;3LzSLg9y_?j zLt8k$!CNyhDYS-Y5S$wRueW!&x+WO$Uz1&y&x*?-M>ViYh0>?)1p#z1pxi?rdd_<2 zMEK?i+7>a{OOJcYybk$ayQqsM19fE^LG%jzPwA=PCBd{jCb}odK33H^MXo94@`iHPvv}$VAX-5-K z-XZU4W~GEvd^_q0;n7vq!brOq<633<)L=d-ZLE@^G{d3p&rb%{z*QHfgP;oLv68i;~I`!PW34t|3cB!7Z&JJUN5uIQW#@uKCIJBeRBuaAN!LlZt`?+$SV6A zD2=H}26jug8d!KbLYRFDW4XJ#l?WN-Ck-zkUIcx>pK+WXiFWl9CEc? zo@f!fILVjn6hZoYBv{{9V5BD(g+tP5evQ>jJIXu(&0(u|GH6%M?>YF8$F)|Li<0i6 zHOx`Sadx7EqI%Kh*4tXs}F#~Ae zt$$9v!XXd$wCcJj?k<|&d`WYM%wuQBGR=|OYwl?32I$zb! zIoafV6Fkm#v6(}5%&uuIq#Lbh@@f;B*KB?>+R*HEWY4s-GiYL?;>HeHJlLvW&u6`z z{F6b!Kcuk&e>W~}lEG*q)(^02^>e+rdnB{qRYtWjgHON_5JLgrr1W%_UPs6JHm0u2KxgAgZ(}c*0k+d9l z%p9`AbyjDsDE9<*Sh1a8PjbDT#fEDC=goG6(J`>Xo%3_hA3^kPvv+}k&2F$7QgvPodNqh1YxWp& z#`)!7rdtDd2h!4}&orfNO?LsKcG}q)c<1_r$05t|tfuU#?zEHqr&>1^Q*CpjRTop8 z?4q^xPtQt5IlKLGuvpT|3<-8(fuvGdCTWBG1@0KZus`{gfWL$ZdH`OZa-E$9)sDto_MP^)UX?UCs3e58 zhwRRv-5L8c=<|%-ooI4qaV9OxJex&JJFn^NkYCspT$EM_|H+_jK$JW0w>neXV`1RZ zK$>~w%qtzTvUbjUp2Hs64b6~4dLF1%XPW0p4^8ec894*}a`Y^EBVc;~EpET0Jyo@T z3wZRrot;J7T^~Vyxc4EesdQ?41$6<_S8692TMl1b2IF5h6VHxnGknCabnN+9 znqPlDlKb1q9qGl`S7YhpUW|pK%$%NxQ(r~l7OxK|7%rQ z5=Or!ZBC|N>#t3rpHrT0NbffMq9JW$E$NEJk2e8dY?p7yk2 zD)}qGJHF5=u5xB1%}Sz`$t#g_SM8iP6L%%jv3kdFq;B-f!F=Y%FNz10e^0^-?8}fH zFu`gvi{6d<0thqU2`j~(&lEe!e?E0nF`uXH)^G)+!gn^3eu!V5fO!^KZNm0-KW+AH zgW+bYov3E>qW4uV9f&;uQtF*(6<0YYBfgEGlGqaD46U8BIAVDO?TOg~%zN1{C%79u z6SgXhjz^!2rl~QHBU_(jHJL?+Lca-f$WLZiDfT>r9=DSG=UF!u^DMPnE0VM{=+j_W z$zK4mc1*S!a8bht=sP8T%&-$Xz)9tYK$;Og18$ce`6W*dd_0i0hi%8OnoqHs=s=r1 zTRk)(Yyy%e*vVId4gD;DwuJ5sb;$SZO+ljUD)_9k+L2tt9Ng4%4hE zQzgExGTTE_L*GE-JM47Olbh*0zG4SS?=h=z2b%6Kans!3xj3q)`z1f?Dt8(FJMxHM z^2hoYI?V{00peTV9#lt~sz0IA-oS%kS?;%!vuF`M#o>@o*ehbpW|tkeXHzQ)v*}o3 z4bVd&;S|}Tz0DPK_d0R9{=DlTy(SRnMTBAxcW{90zV9deS`IL zWkJh=;AIfBIGC0OKLg7oUzw)exYrCXnM1HAmWRC*hC92@M1UEA`S2CKI?Q)}aknDu z+b}wZ+q^I*hW!AiSKQ`>A5Pf0FkIGs48doRP*V#^e(!f)I*->^9Q2*{yq6~UrugUy zJhB42yzdDgE%Yt%(Mmk4;-DqIl|Fjex84W0g0~P~@2m3B9`;xH5KpH-aqIigM<;w= z`REKDOL5Rw?8S1?2jO%^WN{=^=aKN3cq(#{DXh|>$mMX_!qX*Gm2epL$Ssk(B8i_O zp)$Nbf}ug;C4T9HrX`jkJ|XI{DB{;Ps5)U9;!C5RkAlk#l? zjD9;B@6#NNr=#&@Xls4_UG?e5`llP=_DB8s4d4&955dh1w&Io=zK}taQ_32tFDJl^ z!0}_Lc6@HbZ4GHp!@UjZ06t&<7rcgh8q(f|2O8o-0gJiP^JvLG@gfR6fzM~)HrmXl z_+rLuEjj*FWA!3GTr-=kZcgi(uWwG9oA1Kqv(?SlHK+B>H#f)I`%_xbV=bO&Q9JQV z6yj&_@!&i+HNVA<7PPm;{uXoyFVw>b)nac8+TY?(3p{LJ){>rS`5X%QCr&{8gO;;0 z)Fbdf6MUP4PT`XrbRm6K2FHJDsa|1+&93##HZ-@*{5G_>>*GL)&I<8=Bu{aT~n1 zev*AczN?eC195)TT)j5VZ;r2QOE0!v+m>EyyA|#uE8D)pMQ%&3K?&J)I2<$*jo4d)S9E>9fpZkZkZuwu263ewIncGQZ5k z^Vk(x^m5kvtlEhsi1SO;#BWGD@OO4sJR)7$mEP?7R#)1M7o@Szy1v zPTRb0Pot!N;yD!Jhnm%^%CPBWy_bb&m4D8n!p;*r)3nZWI%B$7g`H_)=V_hs9P@jf z=>XnQuAR6Raekv%y-@7H-!q-*Oy>n%Xla+_UFi8P>u@u0L6@anXnB|CyWoN1GhOIM zJSbc{@qNU%b$hu7?dtJrUk<*5n|pX|7dFdYTYBNe+f%)$y4TrW^fMm41^V`??nP%| zlcY)6FjQ{Clee`Kmm$v2$*Lz|@zISw%lqK**SGu7`+W}fp^xwktb^X}^L`&X*yp1@ zc>i^IUs~C>96kFdPDY#`SXGat!WAL=ST-Gle>0Wj%*mkzInTll`dCg$4$a9~kb~D% zkLAz_Jd0X8aVz5dSM4jui!zMg*mPt^@rr2faO;PZG( z%uFr2sq7|t>85i7=(hpIxehYpr(kwGH{dsz9dn<}rSjZYk+o{zD+6g0p2>s3ZP2X2 zG-vQrgK5Ly*9UX_fZx@XK4C z96}3*aPa7mFY$!xke6%g65hocedx)yOR^p+0CC&LqKQu zI(;(!IA&sWj`J9rK8(}ixD}~60-V;X3}S)Qq%&GZ=$e%IQs_C->BEm#%9c_ajL>LK z&~!0Ilffb|TRQa;yrtqKEt~)7`BL*rp@QP!O8(Vq|0%7BN=?+ymrk!t;@%3-c%BSF zQ0uRYhG&rBlM+#(FF{x%C(18-1j9rBq8EN6y^&J-WCv9C5~}H9lH_7R;`edcKeu<-dCm5QIvGC@{w{GjBcFzCe@u&?_-zJFdfX@n9rh`k=vnKv*A>I zpe~Y*Mnui zbu#c~>1l>hW?>Bi6>#z_-~jc_Rn}*kc>|Gz|1qr4vKoOHozK5DBUK^4;bIN9Io!EC zNXDlSDW_mi?kpsjJF=1%U!s75?Il+IR{$K%Bx9iHSLnS}GrYXI zxYwO2UC3Y*MC0bV7#(YRuAa%0$u^-YJZf%gv649>*}$aV9#)u?2Dp`}CIWIWKYfjX zPOAGzKrdfoNOdVlPPSk*>N2oW5Iv~=#_-=uLUoG`Ri1^mA9EVaKm{TI8|8HvYmg{@ zxENT7iT|LNVwMW9>n{b^>`MUlb@YQB$ouoeShYClnS_iL4T_K|#Vri()kqTcP|_!3 zb&WHG7^3NYys{y05(W~0CT6*?g>`XmEXV7M$6ZB8%~Os4U^kBD(vcmYixMu5mcAdG zCgXI_5U;EUR79r6dAXdai!a6&{J9%hpT}LRZLX$^*)BBQOKRz9s0|A7%EOsVA<}p; z2bv38fTAX*Z`SLqM_p7`3#YI}54+s*sj?y@R~O%F#ek}81K@ZSZh}GrFd(^rt}2GN zdM>Hq-gW2ErOR9(x=mVtfHh5I43+oB|S6*(r9 zwTd#d8h%oe}h9pL)oH{_OO&Y#- z9OUj>p$=niSh5W0oF-kR`pq&7L(wKC>!Ln3npbwkT7fpGJ!@=U9;+rEM)Ceq=IVWc zTx!wWs`qR8@89>W${aL+77B`z!)xFMb(@HQma88};5ikY|*oRveR-vXykr#!B79^HWQ}8%cQ3pD`s9paDgf?t^o6 zceaTNch;bSz~UQ7aDtaM1xTJPb-ab5mU@?r$83Q%AXK{BBpYkxEdogzm1g0`n9JaYnog0q{emw& zb+mrafp=X@u=*c0inU=Hsee?8S#;nPWnjo$8LGO#UenzX$ofd73;jXH1jc=ayHlSe z)A(0Bq^SzdY$-O%q1XyunaJfb)qc&@%DFY`@Brd)v?c%Hb5#9$RSEu+Z?-M&Dw15r z86qS2hs!zjY?-nPV<_O2l7W?ZYAnD}KB5T}mj5BBiAau%htF_M0fP1t#$bU>x-~={ zYIV@lZyWM(430#PPXWIWs>R; z$gh4&YPv+DIlB1D=~f%Qr@cLNw+|hqdzpg>0O}&5xDUAD=dwAnHHxZ(xyqpxrSTBE^AJT8I`OLG2^b>uDQ36xRJZ7@vm$~* zpJw3Mag_PkEc21d@{E*W9g&*D6ckNqdQ>?Ih#t8WY9OH{GVB2)8p-+)+_^ddDpmy16r+oFIPaucm6IV}x)Ru{LW$xsww0$|LD(NPnLnYr0U zfr{}(e^DZ68rDbb07Rm7v1B}WS6%GYK&C(gagyLK(?Hz~J`H>*))=5oCLZP0!J|Y*qoIsN z=`~ms5B?v^abu|o>=Ay;;SmKqa*>e_1QBCEdBq*&4DtOAKpa@evXT!#W`d}RalB#r zV+|DJweddAMDkxtU8h0}scZgymz26ThA3Qg`ZRT1DKSUMSIneg+?(!8;{(N?%POtm zvQXRJq%|SG?P}7KTXfNyNs*#OA<{huvo>TGmpEFW&d;TR=mV#aI8vbIWt^Sq8S09`QjzKF%Li926G}y$&WQRtA1=p~6Fo-K!a= z3i%C|r=ly2Z-`~_LXg!Uc)1(egY^tT`$MfUFtJc0UiGIDe}EBVha*>s&RNOUDf&=d zg3EpS4Z&hO0umvQil3F?1#$PJN7V#MB^$HK=R2-ai{sG#9n%i3k79WN>xUzwYRNQ#Z`0tBW^q zf`f8h!-&PFVQ{{5_hXc{kFdSz%YWMqLj`=s6x!QKX)&eqqM_y(vuV+@j7ge}E8M(QVcAiDU@QG~r* zU@%b7is)j&cz3aarrafijHa;wIF6%HFC<&09+V+0oz7JaKvIZSQ;OF|fEVZlI6A>f z$MY{kiMh83pgS|esqP}#I$OpU;rzWrrC{c)Oq*)-m#GdNY!xIoDpg0i#Kc(ik@{rS z-CP#g5ZkPH05y)YDr2J>p1Vljr4H`E&eD4mGK^z9Fi(0rshGhsD#;Fr)d+2Q#1r?r zi_UPLfUOCOViXpM=qSpI?!z;)kUdfj66psVl_u*sQE{ZGdD9sas_ubmG{D(tRa1s^ zlVRc+??)r@?JDmzt5MaA6t=%foLP1K9??CE$hpK$5!BE3DbkU2s&#-QE$Mth_< zL*g{0-w9$Q*2R?Z?gBZ0!(9km!QJf-P8P9zFY}l+caJz)TreAOm@Sm6(l!02vB7 zCNIqU3El}mL34<1Gtp~~;S8B-W$S=Z9 ze&ZgTL+A|1fq#Z7Mi04k3xLgInjvE`!8T|#fP$mQ4OY-b%}t{eYQ7a=qULMhXBCe6 zk>~=&P3?=YP}7#RF{a4U8az5B8*^6%(N#*M{Bqv-hG2WWq9wsgWJoVSDN80GBe)0$ zERZA9s>zeG_1+v&poaFF!}a(N#5MwVx0sy>En3Kk4fkvvIvT^AYL2bPW`+hLLP;SpqlAC2Ijbu z)jAB%zT`Tfv4MWepwuIOu?$`llZ~|)^|utptLhpQMy(1K;k~tJyheD$>gwQ~8!%0bVi7D0@;45t6{rNW*#1U)VQ)5TaKC6g(7^0nU*J!LG>SJo2E z`qL6gY3zv~FS$bDx(F&zs>twc>B&*^5&ChASMa%S{!wST03*R-z0k+YaQbx&bXS_%3>f;q+YAPe{f{?8 z#&HYIK11|XVBYHo=J)SZJ7GJ^k8WGE2Tk51n}F~* zCrBD2oe$`97)<31r7;ES7z=0nnNC<5r z5^TLs2KSNm8TOMDlg|J*3K|S&P+o1U<9(Oqh4=v7C9J(Tii&k{;eU*7O#fy(3lz?N z@!w)LNT$hXE@r5B?P0$*{F1}o2YJJ9*iA8Pwhln_!id=@5(l*@b9ihEF-s~diBU-f zS(prdP)4^v?*onPgNZEW!JFGhO~k)8duJr^XvZkA3$|6ojsuQ=I4Z%@DrGo>sn!zA z8FtCJoQ=2Uq6W*du^KuC>GkiNrv*x>%spO=&?{R&J2_Ftjc4$A6_dtN0r$-sQ*)+jYJWr3cs1|sl)fBKUA408ZAO{StOps7#MS?Xpj3x?lAVxF+8M76S zqd=};*+MlulAGFzY(oU9+mo_CXa41K?-+VX5LMa30El?^V;CRQ41<;7Y8Y`mFV@8_ zVLV7cvEa@!t~pBPnBeLCPZm0g#d2Qe&O9MjasS> zzbiaG0Xe`~r+8dG$NR5=`UD1~) zC9ubs^hKeaA5mcmxp}sPh{=?g>A3=Il!0~|FG*hvb!@yrUl_Bn0l(CWZL(5_vY)s# zWnbpM(mvS??O7xe1f65Nx@yt=sFm6?U1ZD+=seHdGkq?zXL#v>NDST)_R=qUR0BaY zTE;oz#rpQaPP!3}1cnx&#LS$?+9*c<5lSt^B%3uNF6<9~`(TY1k1o;-!UnSeW(U1s7Fx(+Ny9v@ z1oTkGL1UanA^Lyd;s(buoG z3IM9=<%+k1f?0VQVdS4DX?SE*tjF3idnv>YFd0Vg>5}HaHHmlN2;}(Gp$_pRp6S>a zMpUTA#F|GHf|UwL&>-Zug9PBz#JPumY+rIG!&8shO=zm%vgH;r@J9mFAh(`?7Zp1^ z8N&dVV)e@Jgi3*Y z0qLQvY7?Xi|js`O#35SBRH6{zbf zP&m;~XQj%3D8(v%|6y!5;5T??FCY*&LdM>R!9Y-8y3Wur;3fkfkQ%J19#N5>&kTXU z2p9nkeb(jOj$S6E`T)DjKosrN>{88GwNpi}Rhtsja{qrpF7Tu-m>s5+eWi$IPpX}$ zxCdFmqFhww!sYILL{R(+g$QP2@Qwqc;Z$6+(I5y<8Z)3Z4WXS$|0|LW#qZ8!70ySS z=bYfMHSzfW&|)Th`HYo<`hds#4X>R~vK$FyYX#UOGZY|3X{Ck$RRUrMuzc@O!kiG9 z*rrfNGRBAwm2oak%_e)x?)v)-*q5OO-*o2l! zR~K_SQ%t>Ny!)T%1~9qEWLD?v;;vigFO_;4?3KyV#Ks@2PvMlW|(`WN}DP9P8P+_KEkg{7&s`?8;t-Sl781B=N^ZPjaG z)TYL0`21J%VlvrMyf&V9<}SEHVTzUGOZ}SD%X6`twmM)n7Gm@G zGG1sD-5YMN0uwh5@6Mh5?owACQU4V=CW&Q75Ny z)Ju0?kaNpmiz6^j@nssgUSqfq{S)Ui^o)xqnxgd{P+nZ>N#g3+QmGHw$wbLeGPXd* zfQZ2DvLzE^!&d`!VN?K}VRGtU6xb(IK?#{*n0vE2p=wFa zhMnLHPDZ2GSzMF_J>?%$#xZcg_-kbE<{)nXeELy&C0QA$XIQJ7^9HEkD^W%bL(4$8 zD};6oj8uJu1DY)iP%3BH7f=nYGfjpNWT9>(O1U~21&d_VblC<~;Bh~|aPoyDybDr8 z5pGTdFk_u<%AJQyJ?CnrePP699uLQ6U#uig04vF|8Ajrh5iFCISS>$kwrunRw*xo~ zCZh+)wZU-kWAYs)>Sd1^qmCLDI+m!;_?Ojld_90~%V}(ZIs;QJ zxTjQ2SF(dlNET4+9q!<$FDhb4x>fdwp!3&w*aARikd*|7)u->E<_ z7HFcgWQa*;AR#ey#8czTm5$uWyoIw!Hs>E^8Q-p1e$Z#A$Qhx8e!^VViE7-W)UBav z#NZFC6*pjJz%oz_;_SOrW|WA{#X8?tAmg$o$#@YC7l7Cb!{Y>Q4{%v$0DxWMAMQ{6 zieZX-`1`|LmBQT#qcntA4%GQm$1xB~Xf{3v9G!BYGrRjI?lPvtbT4$>sw<zo2847WmYvw6fgLRc>>(a^97xF6G&oDF0CFq8Z5=ORMk(xY zWddsvc7Zuns!wb=1T--*PthDDBGffwU_VZRHv>!k-nsaBoU1VB=gO7fDADFfNzrO| zHH2E*RW7eAL9qwTF2F5`Amj9Lx{oNB)OG%MVVul81i^rY`)bA--}Fy>`(Q8^RWP$* zbL<#UjKQd}vN)sQg?J-qsZOqgL6Ra%KGXmJ1!*dK}I`;r} z1Vze7FE)CK%)n?t=~_xAkH!`=E?1-jBH#!!LB@E8r!n|M!|X9KO$;nRuyOGiaK*W$ z;0I2a^smI!YLwUn#~>*+@icZrm2@{ZIxZ897Rm5TgRCY_#=x&tIz<V=$bO6w3iT_K*EG#@Mx)vKhxFpp-j9 z-Qg;RGLWkY{SgLJ1O(9Njxqw;xIz>fsaoJ80fL_k)ExePxyKPQcujEmzS^{lJ5^o4 zd0~8|?8r4SOQTa4&L18q9G(;_#hg|W)X3E&PDM@;s_#AyJsG5i#WJv~jOc(|5NTaZ!_@$n{+ODCPb3#(Y@-TfY?e%%%wXbc z9n30Xe(K&0A2~{g3)d>0L4n(yCQ}FfmrB428ySQC2{l#ZvK+{RyALsItg2JS*CC^I zsgLTxppKVO7WkDE@t2`#s;qK<`E@w1J9y=_ieWN+hKr=Toy{=`&@Kn6i)VGJ(Ol~G6T=MR zLyRhTqj3-dB1Xm4oN9~(r&e#6oXT8amAp!e>oe48ILh3w*c}Fn$%dE5@9gEl2iC&s7C?}7{z?T|4?PTU}cnc|i&RsR^agI`RGfihlK8(icj*}g;)C7fl z5PQ)Yxkxe`Dllv>*d;LnIyX>w?oRE69NC!X22L2F05i%E=Hw$mA@73n*18S-znU8L^-f;i=ME+Z6 zwf#tfCE=y1A_|SvAEn0_WB7*iE@NiTWT9^SC+-po&rD>y{IwP_erl z0>=`7rx-g3;0NGXq78=M0lSC?<4|g>e#c+|qLC&ZIu7P{jM8)kx*uU4=!+Cfx!gsl zNZE-3XMj2rH}XGeUNROS7kt%Pz)OHvTI9$MDmuVOW_`;z+)2Z35`kxcgX~%A)R*Pu zaSQmC8MAHBwuIumYQpmvrs~<$&8bgUR1Mc0ft9#T&G#KymFZlJ@rY}4)p~e9FaJCl zz7U}43d{Jux-Rld0pN4D?v$wl-bnyHL?;AUR5-CwrY^!51IlFwH11R5OoiVk6Jvqv z1K098nM|ijR5xq<+>-eEvk1gw)C9+vJ06LKHOZn>g3DP+)(%2aq;l|xeozLpl6(o+ z6||$ltpUt$rSf&cVVj4EC$N?d7kF^ZRUgIKPr|>NJH>K?j2k!DNiTz=h}(?8$STBAHhBcX<*2LVF=>BcF{p@?X^ep^U#6&R%DFL1`o+BnKll3he~|K zkGtN{RQU#OGE^&yj4*TT{t6=iW9I%Dts9D^dSJF0^aDYz72}Z2{Br}07j1^a#bIKl zY{lC_AE4YOVRKOIBCpq7n6uk7J`I%7$D|WJO>AD8wS z?+xJWf54{o1`2?ZKx*RcFULXqISw`{z6K{j&?4F+n5E#xNvy!(U*5EwuDqgkev|~* z$kzy@7zVdOcKwGrfIEl!;9>Tj1|0jqs*=ZgiGDygzdHwciWep9h5n#&<50T0j1yzo z4}^P&g?0O3_$T#Ozqr!$H>2sSMgzn*jw@Du39#0zj8Jqy1k}Mw74<_+RZ7Kmfv11| zd|uTptJZuCoDmEoAz!DugAIO=HIfViA&WX#a{qOy(=IO)TeG2p1G|Bp%G(;oztOLm z#=o5knOIHd-+pW@1LS4ffB8@C@3Y!xc^y69z<;?H>v@>5rtZZ!a})HQG90VS%M3LF zFa|f?dB=ibglvm?F))+BqM{qV{kZ(j$Y(LbqTn)|A(~y^zg%IJdo|m&!enS~8OL5q zBMt8m=9MF}a}BIQ|M!$K78XkvEO$6{Av5BRq@t6tT+6t^#kw>;r`heL_U|M#cMz6( zPO=bEOzFo7SQ09HrSbwX5OYgoYz|oM0<%RCVfrOt@{c|F{Y+t40wML=!TY+ zeREyx{y_ROh|T{W`d8!)>McXZafXNdE)0{zK6VZVh{sb|3 zGIjv}CH+|g4m)u$7vpdcxH{kw_om6F`6#{Huoii6I5L-#1OG0M{;*=zpxp%@4>hqt z4M12ILH(wf8XjWb+C$t0;s!>RV41}7>W5F_oe6XVded;RzB4lo3W9K8JO+CjXMT zt>_^Ie00>mR4F4od<}{3vw7fF3qr*84EHstEnT>wkEapr19~w)$QPwY(k=e3-o{W5e%ecVku{FszOGb7y5)PYEbY~g- zx1XgXgtY?CcpWb$A5ptXR;5x9xd2$$%Q$2?dx=t4>h1fhiBY2*SaS!v1I7ACAX zVsLAkv%;9$WZIE|p=8Sph%MlAvN1+64q8lP0DsAA@= zL_Aca=v^hhsK5`kplj8o-5Kl5$nZ5*-l$-uf$?Y>HZ_(njkaXSLLU9b@p!mI=?Ft| zWl~pp1#8MSaSjg5!0Qyi7$~fq!C-P_0xJ%eF~Cc)z4WDuE7V#8A0L9f9`5d_hKIiL zV0BR=Wc4GOzM|{@zlJBZR?YyIBb5wdCYSun#|U3X1=VEM%ch!0#xCW*eg}=o8^v%k zs44$|qN<{P8W8_d%5G)|fN3~z{|&j_;!w6JH5o?WZt02IRspL^MJfmIWbvFltGtn>sO47~HDC>0GOX za~ouAcu)ibC#dD&Z*(9=vaLYzZMBAmgI2R#CUB=qh*7xs03QSJA}B9L=c?_BJ4ATX z3MJLC#e9em_bK)TAhd+b{L7zL9nSE%iS5U;fwfI9*WDWpBrkz656pn+-?81eSZz8K zuo@;*ycU{|GiMiuWIK8w9aDY<$J5WZQ(rwV1lGUoBS{5du4i;aXx?UUtEtgCkK~#MvrD(fzr4 zHXcgBI4>Z<7^n11;BA{+GvPn(Rp)B0313tbF8cF?fAgDgl*I&bgI)-m#U)g)}mMw|D1SL$6)dqj}0%%1=(tFcxVw?lJJ_h({N!6OePzua%#Co zW<%!Y=hIk#5XajAQDE6udoq##`fXp1`mu-rbA;Mrbw@B;jR5;!eBF-6B*k35iUR=` zcY;|^^?O+DD>yS5y)os!bZoO$3?z^b1j*$KQCYr%VA z;7oe8|}rORT`Tfq)y zye5ag*hPG5f}wA<)nw@5U58~#1%$ouUj?v$2oQQA=HXNm?_6KZM2h`(#H%gg*@dC% z5Of*y1587yeobvvPk`8cJ@?xB*u#-;b-}%n?v+Hs*IwcmS5v ztsbGl;e;bf6Eo`62Dg?Ay&w29R+#T6JiqCcXkL$ut1W41(+d6u`g$qWLdV#Wr)9piZilQDtTP0B;*J2anTkY3ulh zZ`bl$wRPXGt$DllGl6XNX97PdtKP2V*JPdQ<=7^i#824@e!CVQI7FxXl&$2beil)u z{fe#RS8OG}V(a`@uh>4!FWa6(UG<)=li#y-UWcgj9u9%)fJdqYgV(@q5l$w?gur3I z0RclPD37?m2%B>df*~@pZvpOyAkNAG<|Oz;iNuQ&4WOrHuHX)!EKu^gTo^zCSz}{2 z13#U0|HU@Kr@+p2^-S`oc#1febFONHA zN^_a~kW6YJlSj&CEoJf;l!ar$ar4ns?!dT=!4j;&$-@eVAtKJqH%zSDosq*=B3LSq z77y~Zikb>6mH5Y5_v+uk!+2;B7m?iH__%1w6d8Z5Y|1y=M<}Vq4M~6ryBlprBOen^ z)&IwI{wfeu7QnWuip}9;KLD{DXt$dKQZ7KOB??2ElPPn$$tE3S&RA3j;bJ)*Y+W#P zOOdQwdQb`6q(7u&kPsMcA3$n4&lNr>c>9ti?^cXk%9P%Xz|0QYjd9n%rb zjZg~NFjf&hh#=l(>nuZu;20~wePAg3*{ozJ5}l^mV4XcW)LCL*umEr5RnIqICospc z6+>V&(qOm6D_bQ1uDCy0$?@!m1jR4>nT67sLiLXdk3q@=L-HRSSJ2TS;RlURC-LN? z?3^tOGOZ`# zIr2)x__wwCRaY%AYMOv7QfJ+ND z7aHt&}@Jg z=P=Cr>~A+$VM72*j^Hwypons#(ZvSThi;0k_|8hhlf;r`Ef2$n%nI?s-OTvIj#&J- z4Bp#N4>74Do;fQ^pu?DR`8W`xncRorRT0kA4_Z8%Yq#3KE{ub>IIIzH(?kG1Jq%Ou z1e~18-l@)X_H+RUk!dK&bB(vQv%xMYt^mL3>i%0mAK926wn^k`O#z+pER?v9-Q#du zFF?RP*A2LN8IScC$D6@_eMs_20$%&6Q;}@ zD<7HIPC}m?qpGVH(>ZSf_$OAgse|+|K*EHbUD;vI>mju+&`<^s<;6b;{hHuoR5it* zL{qFm!o0$>`SwDPm~<~LZ^BBj7i*p=HWwIoQd;ncWG24|90T1tZ&w)Y3=phQtQ;c( ztE=E_=mebtjZVh-u!gHC*^g6@aE=q$naXGbDPdCdMqR5dE|v`?D2hD^dH|^-3Mujh znUNz~u%sK12^CU?cre$BV(zNd-fE0|tZ9d^Pg`4EThA*x^?qux@?{hwEANb{AX$(? zaLBQ5;~LpWHNk8$9&Ri^XTjhK_bcUyvGF{oq}Blk1}0c2UAQ3JTe^Cps=6wi*9jrR zX~=TG<;OA=qwDUf=Nmq`u6Za`uE-!vhsq$Hr;tS3A!(p&umiAt5aJjkIL|g4uX!?O ze6Ip8s$kt=&f`I1?e9Hk6cuC3zvCrt#=>3GxzWG^c^mn@Ny_%E7&WXuvH7=sgvV=@YH{2&)u zTms2a9A6?6;mWy0CM=QhZ19DO6+P-N@nHnKVbW17wbfuVUgt$Oh#T9o<8V0Pg>t}& zomdsbMk<6CSb9E);=vy<6)#h}Mk%f!_dF&8ui?)w1jAIppgc>)E@*>|#n^--R!nwh z2FrSSwzoQ^!{OOTIOIT=S?oBw@e&3MbKyM zdKuV>PvvNFN4CVvn)4pvjq8>7Fx7^h4Fd-TLD$Ms(tEg@gh?CNkGs#S1#kZ>*#kd} zw0wT2!~!Ow0{cMGeuaTS{Hls}E7Wi0DB;wdLojH@Xr1dW z;Xk=jISs4Z=(^WEKzBCw=DD+=K-P3$5hx3cCki70GpHSs;AhRqQ-${5$N1wjmGSeQ zB2aO>iQcIcyO~KCcm-osFwYL^+$A`4f|z?9k8 zGK{t2v1%gu4Chr?d9Q$L13a!{5aFL%QS6t5Ph>bCO;9Lf0h{Wg8r*&2PvG(=!c#p& z1hV5Bgj%tQoiTk90xAnWnt0Y&gW9Jm=IM8;GGJ%fhblO&y;vu8eB&n@c;G(6XAD~z z@)+`9EO2BqTaEi%yzYu^!TVcGXd5f|fYE0BV)5DkY{mFR(_FTa8wMsEu!!Qy0-9Pg zUR`E^#0C)KR4JD?!!^%2e8b&0Ql&C#__{j1c zM9E3&sKBA!;Gl8h%~5liBz-XM0*{SjD5%`@>4u$}krcI+4jn>F00YgZyfK*p=2&oT zFFIYHuTI!7IK3Q{IC}YUX6z7D4#P$b;K$Xk1;@cJEV8jk^aPh#On z@w)v6->O^;UxaO}=9uOa9{}+?rgP0>8os&WGpXg@#OwCvI5#^q{GWDc5u4i-39+2D z@vykUIX;y&@x8MWjbj7ddf41t7ohh5i-Nop;C8VUn0s!C$C_~{JPoLZGlN!SGJkk9 znI{Vs>qK?lYS+mCoE5OnY%}Z*AMimB*@U+}Zg&H$>L|jMQTHt}ARWCxo0lkN|F;O6 z@Mlo~Mt9RY9BUSrKEpt@4PJ zlSO?av>8tL{HX$`*ovE#c4DUKfy5x*;lR}x6wyTYGia!Y%>@7$5UD>}>Ma+t47^{w#Wc zSdCWLtk@m%Y|3U#NGfVF*g5Q$Y4P1m8%Dd6A-su~FyTwkFg`8$l0RE@`G8CM2&v5ZWpr++T-4;!8!3l$WZb{Uf(=!!w7$%_ml< z^ttbr*nz=UV*YrD0NPgI18xDU7ZBO8ghvV)0+J)f9)yc2yzxR<(9MxeO)*J4fKvW| z=VO%-6^dI}W)!LmV8-)I+oM!Y1fX?pvcs4H%RDrvR!Qg0)UQjunuJAz^D$odJQ%P zYR|?<@bMO41v=LFPyu!{gU3y@csN^TJpy43yRc8LtTzS{Vvsniu0b|K(S=r>ejw8^ zs?Q2^$zw7EXU0{d#~|Ec^7P|QrE>_MK=3EfSPc7rti1`G)pfo9Ki~5?pYJ(yW@q+c z-<4$sL`7x5rA!$>EH!2Tms<*MnaB*F3CIlKQYni|n*-W%Z-r*NfvK&c_u6`c%3D@K zR=3nJ&6{=mKVR?9_squNa({n(IOn^5zMtj&dG8C~lJwBzO4|9*NK{uY zY|GJVm_7HmFifKhhBFXr-2MTd-RA3%;H1(O!zn zsnF`!HiQ3$_=h?^SijShIGB=-YVp$=m2I_N2Kzd9Mk{@w5ik(=M3Q(tRv18t2tcIB zPJxp5kkC$_01nKkia5u9c5?}5|Emi`nQQfLNFj}tRQ+RAN z-C$elm%pRl7PlWFHnJ@#o=dcfE3K-xs?tE2W1ZO86!E0pM-wr?!WQmdSn z{|Y4bwmgm-k#*yLR_xe{fTbg0M4Z(l?vE!Ut+`8P)$@2{D>>o%Zub`WbBWyfw<_*oHtxR~9LT_3j|NX$!D|2iSl zn?#(&;R>^{^PUtL+p!7`&eY)+Fyej%Hz+J$Dv<)0Q}J4?DUP79UaPw`X}%me35i-V zX$C$J-5lzH;K)RiXZUo3AwhxzGoARA^PC($+|w}OwP<&Xq}^R89Iprvhuk9e$Eh{@ z#ZG9y<;IRVglaqOFa|=8Nj>D^72z@7lG<3xk)zI}Kg*?@8iTfDLYE)2f(skTzrqVC zcRt~kI>>9QYTQwBEP9Xue3$_Y#)by>a$`gL=~)=fw-`-uj`=MgVf^v$Lym2{p31M` zbbhcs^YU!I%0{)&R7K6J!ro$@5NVD~PsLq}ijmF?SDD3z$TBVe@5kcAu!vckV&C$| z!A-LZA=ApvRmfc|4Q3JX(yx><`V}bXS2{JKD?7+Mbl*;2u@hbWwMbi|J1Q%)^N>Oj z{7nY?SJDEAIhX6d$V-DmoB_=4$)F4GQ8p!dtG-;Ui5p*BVb*CpC-5kqjixw4my!ZW z1;@t&2_R2ov64(Ck|IB0wQdquQhZ?HW*`S?dW9ns?zifHSfSfB3>dxdM3L&)p%1v} zT9n`7BjHbBaHL3%-KXthiQCU6OvP(x5PBslY8u@yBO3xMK~iaYBij9M@l`!u;=Zts zZo2O&VkN$Xd=p}fccD}1R%9G`)iom#VCYNfB5 zLSJOrKr7G!OQc}5iVa*_ZUm5;3Zd0U@ZLq2+c_YjG5J-d|0vl=E9G@R| zVkCjD&|XT#!IMu+v=|r0XdisE=YxFb$i|rm)ierp%%8i_iwEWu&HocLl+WZo!zP>< zd)9ISIiHxg68SgGGvFsk=R~0)^LUofJ}v1NS~cs>{kAlC^y#KM58;XiT>Oy1-V>PeLA?!+^6PHKh(wxoh&w>7p_Ka=-mp5xdKs?*6S60AQB5_jX{NSyzwAJ@OnKK_ zMBFHT3`m?ZFQw+Qnvr`P8AhEF6+vBJzZLk+;MBW}O*Gv7I@M0AHyTXKt(kI`hDyf- zHzq4S`S_rl$TsP3Q-JLi%-wsv>!2)YKg?vkd#O}Fb)RiHPq(%8Jo@IyZRS1` z9;iyMHO2k4G};q}{)em82Y`SwXP>hX9JCRnS;#wWOy2$BYDsUsNE+6zpOJSv-Jcj1 zP@2OO3yYqDU?Iy5ruAlw-z9$$S)%0Kt@R)Igpc0oGX%IyrF-vVkC*uIFe(e7TQj{k z{iNcwq;VK4fgXcehB4y!k54{oDYWx#xS$eTY}Q8jUeQwSOAH%&HiO3@V(0|@;vsFn zozzJE9}53X@o!~ao)hh60Yhqlkg`tALXK5>V)-H7g*?&XwKu0K4Xz_h^pE{jhH4=CiCmFSe z&Mf;!rWd;bmOeLxZF#A_yBZ6w#$LS8kC^GRyZJop*FZ`QOe;W-O)ZzoeAxmYo#@NP zvN<};I1gE*{&0%80|_V|weBm-Z)0|wAt)%aW_C%qX$C!?%2tO{h4uj}gq==Mk1Rjc z1SlIev)?kaFRg2a%-Sgt8Ik)l1W=Q@?9EInV^`W4>s$CJF>SvbY?Yp3hOWdQIG_Nl^!emEd3Hw~M~TKJuFP^!&;kk3A#YMAqqMU%c)pBL-{>oYbzfYux3$q8 zrthC!P3J-2t=c=_@jL)z?xGjhk_(@rti4_$UpIZnNVdkl_y;D^;A3!;(I^jzt%=$&*Q6EHMOFb15d< z?IhcQX%Xcub`#hPOE&(ol6|XN{c*q&tSjLlI><|t3N%&kf=>7?S#!Y0*3L6gIn8ug z30n?=(@UD*=@~)&2@|X@$h9ndsSAb5Rz|>X#}ZVT1n2#^zY5Xw2s{SQFc~A{IX+tO zkpIf1wy)EarfN*SGEJ)KaV$u+8jcanlYva>KM;A>ig__x2$|{o=~tN?gl+joP>gHj zR$nYP&!yIHx!=mQtA3^D%Cr;sM3bRUd4C*DgT)X9F^KYXm_Z(2t%ci0&Wys;3gtL7e;J|RJvQ(OCYp8geY;cM2vqm%wEQUBOtjYw4u*Z9nZ zetJlJG0mK=G60Hl~r4FcL_xvWL!4WQTw@aZS=0_-USzA11 z6h9&F6M<~xU{H(QS=vI!v^F;GHBtWI^?(UO@036gvJdhhDyG#FIFLP;uP(*PW;0jS z0!mEHM1Uhlu0H99qFaUC`B1{guw&jTT})t`Gt?bB zk+a^N0{AFfPm3p{Ez^!a)@H(&XZsVUGEa)@WJ$z!Oo#ahg_G&SAx2mw=SMK1HnRt> zirnmLEpi`r?kAyp zDYv(v6K_zBM=Q#Nxv#tjZ(bw?bN-{9T+cU~eIfD=WoV3t!A51 zPS#q8MTiLboLEwSsa6uXx{XVK^6&WiR3uapk6nFSH?zG4QDaSSezL*oIwS+)XVFj1iLHqfY;a=+$oXN zO)jqzN|owp*(iU8{G~xCHE!hrjcuet5;cjwcVwWXHd2po)(&?8)xYE9Hm=0PE5tl~Fc?&D3AQ zIk`C%FGk-sTy5^ihq0AX*FAz#+#sY7nZP`H$R^-kENf{NpESdGqk7jx)lZ%k?6E6J zc!=wdc(-1+&)6v#OMIwY3rjZo$}{&#(PPf;+JV1&@4ywxn~Fi7;%WP~b#r-WOWt{< zAYWhL@#%6DdNG-(|jZJJ+U} zG8aTC$4f1oOPpMS>0!_}G{JcP@eNS)5TZiGm?N*(tFm;pOsB#WNaXy^r;h+(eT|=n znWtWeR=zPpHbB4JRN{rAI7LyFbu`+KmWCd&imU&sPS@e!tN!>=DQx~g~7E=@=dh%28Dyn>OCr?9c4#lrFmiyiE&vhI#> z8!;rve?wY8B}(8yFmTI$qsSRG67t1HMh9E>CJ)|Y4=#ZAZ9-d~hP&2o=Brz!x41`E zZuGZl43;ywzMxYnZ!iisnbT)FzTNcUndP$}{pm-Nm)R^ciLw`K>c;L;V2JxJ8v7wQ z(TgEmMMGTr_L`{eXSSIr*pj1zv-oa}ZKRw&FMcVQUeA}zC3Zt{Gkl4@-JMZ% z(j5AFQKvuNwB#B5bc8KyJAA3af5MjK7yp$Zt;?3hPh@xEm@ErX1_f5!+4IFG)P6{|QHKRXpND5CB?3R`4d@u+^hqloT$o%uyLbn(7>Z z5ugNLvcx+tF^g)tzy z5#~VPyg{Sd1fekDSFF=y?h2dB@ut=lTKXn|w;y*qU`K*GOT=ZVL~`*bY_3KqzlUO` zh_AbxpSStUMbh=6Gm`Dzik$F!r#+mBU-V@W{w@-d&>hGU{kYE|HFH+Na%sboY)Jk) zdH_GUGBM{01l6v>?8x7d?x)}e)LqjB_VajA6Mnm`d@eqSN`kBvxsV-g8%+`fatUoS zEZ7@%)V2G7-qJaK*t2Z9?jgpIS z(xQ4xtAD_{YSYH{y2)qH;r%WqbF59Kp&;?SRfPWYaq>~xB{A;{4?EP3U!bdUBz7ck zVrl$vHAEl=S6G*E1gX*-d^ks~^7)YkOvvi|{MN_$Rnye&XSe&At$y|vKT9(eFhON} zo?2=^p*0tt1^aoad$&Yz>IdO-aW8CBr4rY0yb|zK_Nqd+1{eB^mD2FOO#WU<&3+qA(BPlT@o)@R?=$-=(K#9I5pNh z$=F9K?=kFqFkr+WA9D-0zwC2Zoa(^x$DHc16|n(IvyI49mF`_6ej(xDuAXLrmAwV~ z#1OF}qT88ee4O2}Cfj1ZB(Ovx<2jvdv)U5FplYGrte#8k}TcxT( zh%l$x-vjHG{M==9Zt z*qtshm-!}=dE6}7#4M2*hL*@D zO-sAAXkFA{NCPeC-^BO`?qo2?+ z@Txt_Rn4$Hi-Vl|4alO`yh^>cXHFwdS&(=9X_#+P0$^86Bg!5q*234 zt#(^k=RjeM1&DiJKAuoVSROR4Epu|zsjH;5h!=!1N03q8XPiH0%WAba9JR$-zr|XI1(!x< zFz*Fk1jRjPALdIptn41V&3M~R-$Lt^s~_@j)33(`H-{|ZYS|~IS3@@WIZxCHQm#4#SF>K&W@`wgDG|lzwjO7F;Hos*4X`P-2qs%3KU}XIp7YcNiWyW~DEm z$1sFb%G-Mm{IK(U`2v3o=$aQw?${%@URXE;xrovlFj=5DX*Ibt>;xyDlw|{KpUxal*5E zj6Yl;5IQ_eHdNN8Xc-)e&Cb8uBK@vsk;1C)OIE%6jjj4^th(exSO{zGFFnomTXO>v zFxo9Vu38AgZe!c+XI2vaRO$5TZWJHVUrPlU-{0p#=+sLqcMSlL!9P!ZHMkag-Tk8| zaJivj!P`^Vi=aBf8Kd+J4oLB>h^G>`cS6s02IEymJ_?b00Z}_uB_Iy-Blu6ki1F@v zBOBvJ^p_&5Pw3-6!4y{FKD#zMq-!NtuQd3B*CgGfS*3)Ke|J4dNf}>(8;MAyp;rfO>%R!?$Gq$W!o;S zFv5M%tZ^OwB1T6_oHeXS0$Jbgm)JbWI55pbfuDnXLP8ow-t9|2s9qH-;8jmGk?B1g;o}jg>Rm8_L*kk(e&o44uoVSxIlr4s5nO_* zFQEO6@z*Ms7|&AC$NW4WFb5x1jYEQ$& z%4DM)g*GMdunui{#$B@v;6HqNa#8j&3)!j3BL1W%@S3Wm^t{i$?fX){*#(@2K*xn@ z>);X>$y>i_fv=mwv}8wzInOQjRX1=x$GE^;JMd5O@?VG(&QO56o~9_$YU13Nq-VvA|Pz*XaMAji$h4M9(Oyd5*tqo0vTfEWcw zsV(o`dBnD9hNmX52FqgiLx85l-Gk;vezzs=>DOF5-n*MszD(bOg&DOJ&gq5gQBb_o zv>;n>R`dvQk}1Hw8N~7F*7p*2t)?RZ#pKfz-0oRw zwgu&& zMr@fabUV*9x5NI!*RIFFpqw{t&?S`f!bFIWDl0-t8SN7wqvW%G%ubS-)*vp3@vb2} zgM>8TNCF{%{N0R~%MMm4!J-w7$;5M9gRWEEtr$Khpaw6~QONBYGM4lY&+-Q;GXz-=+_r8JgTr z%cb#;d~PW(z}}TBnNT%iN%@HkV+nbyRsh(Q31sJ&vZ)_dh{@3g;drVb%7*-%D2ddU zoqWCA{i*0lpZLLqH~PB05;|4Q5=M{bQ5dFt!zqP?-3tv+rT z_;7gS)hK$L^fip=PX*DAjYbq}v~UnnEvB*-@Fe2MDa2Ql!q};0)NuTqzXK_d1^w>= zW(vy{u|3R*J4yU736XNr6fHJ(>9)S?Qm+hU{B-30i^iDn$F8ULFf&ez-(>I&Aiwfi zW(lWd1SeHer=OE|@81FK%($PfYh-)kx^-t1bpZpsw>;X9+5zQyV>dY0AeLd72+0E8 zww|COBv=~xBp+DLP%2v$n97@NLedtO^u#Ld7H;kE#fv2Ay6!@@H&@1@+ECV7@uldm zs)zw2<(|HSH^472wD!Elh2SI&qoq8+K)ci;?&iWM`&&BrOhNX*;S z8g5veKT1o%l5qJ}e-;ZywfnPRpV6pYf=fbplf1eEUKL}Gsmv9U65j0>-&s{-9Jx|h zX^s#L6K^s)5xH)BfRF{QLR?Sto~BN$wYzyuYhDl$dHx9uA&=dw)V0+?V)<3ypn?0| zfQ$mX-<6@%X@k35-7>Yu5Ol>PXMTNhs@;OYRvbA;CDfpo!4HK|sPqJRK26lwCUFFA zOzXDnHq1dDf1}AY@wrO7C8EGMUKR6dvRQnODVTC7YPR@uTKvMjnsL>Fw3_9Wd5i#? z9#qa7eNia5NL~vnGr%4ktJKirf<$yQ?T?d2WwBQCjQA6WP?MgE36e~HyDhAeL=z)7 z`W6X0{{*fh|91HLxdgJE$8kM&9u?y|QK?eU^;KiRn1Z$vw_yrJh!VQnBiOys%AaBA z?aFoo(;xI*4EC=j#ZvupAfU+o2~!k49KTE-l5-odlwPBmWH-C-KpBNuyI7VbJuTd^3QaJ3T95{Jb08^9kWq7SZ43Nc=^gpt)3BOh$+nrt_wk*c z;(p}g5yPZ>Mw!_h-eJ(Jbk2fmeNz}s3d-Vu<3cis%oa!?+CbWHe*ojt2K96S0;v8( zUYJe*gUC8J&bP%%ymzFq5rj!f#l?Zw#Ke(Ef!TyyvL6$y-?PSxwXCQcu;MKC!{5yi zc!l-E;IRt)ce1Sggv34*7PL7vUSjDyKbH^GQ^`iDx(LUV@H0jw4^Qe{y$1ltu~;jt zOISm&habLv`(v3PrB`95f0GG{g`lj+g71j(2%b>_w1TwU~wEHdNR7w!0$5AzU+>DdhT=UF@bUE@9R3rkQBIZB|oBb zQgjBdZP^>bx@`)xE-+ncYO&3=Ne4Of}7A?|#(3teZj19_aMMcCKw$IpfmW|c#pJxLMgqj;rW`myYbbO8F8 zbl^3IsICndqAtxA;hCeFvykuMlvU|#J^K;nhx3Sev+m1DHA*Wx#zsMi3@xyuFsiI&mr$^<3Rf38_3XAMH}`mSV!`xv{v)IGj#mr=HF zL{WEYED3Y7K_SA`G zltn9jhO(skGU{jY_1#8$3ryc$0WW=$kM00}|A-E+@kO_hkO=(UU&$tNndftBG_YT= z#j7zgYQOi8z)~)wS(+}icn>v=`=UiAZ9iH5xmolRb?yPa5S&^vtKugOTN)vWx7n(E z1yR4R<}R<#?tB9z5$N~^yp_nn)V+e0@}ScGVo#eaY+tT}wPF^ZOrO|wdh@o`&0f@z#* zk;MLtPOZk>wpM-Xpe4rgXjW>r`=Lwl2%@L8l%P)BBcQ5WP+L>^9VtDPaf{z$p;3ZN z1rc?$*{XcC?+o@~XcdmhJU?C%uw(B;XBFTIX#Rp9)&pKq_@m8?GUH@z3JEzgi1V8I z;`jpNE6OzVh2n}U+%xo?)!DK7P?(i&{AFYJgY3Y*eZ6nr`mC-Lh=?M1Q3w5ecRbH{ zSz}~Oqs>B_C*Xr*U}V{XzJDwsG8xfYb5h~=`}9Jy^zX^47KkxP}k_pF$whU`=wf z0X7!atp_`$m^?93 z{9%1<5($QcqE0K>$2aRBg61_1iG}|0PA7LY>Dcc~U5HN$0+q62x=%wW@(2(nqR9ON zo}twJOeQ?S<0yE^d!<+gE(QiF-QRJv(s#1m#vCAgA#J)>%$zY02AJ=&rMG?mwZ?(I zfM0-p3G$HeHwx#$>GC_PRGJ2`Dr76=Av<#!@86~M;Ww1|OOsD8fQl*yRK3kd`2SB* zKUeJQ?I(Z-r^m&W=Hr3jY?VMZQ=1qby< zj)Jj#3B8hldwCH0UYEh0GsbZNZ^KUkSr&I-bZ)d!Y37zytCix9I!O5Wx+0Q1fH~ym zu5_FD^XHgH%h6b9X-+Yi3E}4x2aUtkFC>snN~qwo`yn$vH!R_>1x+AQH8K&AHThJykWJcCM%{Gj$&tyguzIv*V!cF>z~b29!lAau@giCZBAeUpQ1pQjj?Z z55XYz`DxO7RiNO50^qu214=p|;g$~E8wO-;r*QiYCjS3xKeFlv%cDFG1G;iNZbI}$ zUq6*#MSb0k6F|7l%z-{DzwCZ5byK9o7GO3ZWtRskJh}#UyOPSM7KJ%P`%y z3(Wsq7GI|Kx`^<>i~@frS&mO7jxRoqp=ODY;*n}w$S~<4Dli{Ak%$K7!LCWT#lW&? zyN;DTM%(4C1XP0=RdME8;Sl+(`&V$k)>oX);e0-(m%z!jVuPVqzyyJ&;#+a>FM+v) zPW|ipE%<*FsGgWW=stC@BK{DhYK>{^8$k46bu6lWjvb1Dq^o!;z;D&_B-X5>C` zsk}_&g3UOMLcxpKK850DFVju>-x2R!Y?}bjC78u`;o3lSBW21wG^aFvnJ&v3iJkl^ z^2_4ufmg}q^#^454VgCv)<+fBiD)i_gcXh%4JjQk7MYQ2bSpW*FcLx}tKR2_6Is!G zz*mLRxWJ%DqD6VO2;(!sP!vjVwIh6~6LFlKEXi9M=ecM{(mcT&O5W+>Q4}1Ex&&^p zVwNv~3Aoiatx>o`#n=4ExxVQvUvef?9S_11MI13;bxhsVq?!j5M7446933K;C0s3}OJKy8{VmaSuTrG*c zmH)gBSRu<8Gd*834MXQF0km7)g0rr;G$P%C#Z=LMZ{^&?BxSoN6kCN?;&V(X=vtAz z1Zz?JO&$t~ckYMJF<&P7@nlNQJ;O-w$`#j-atG0)Q0hnU14F?L>zowvd+ zoE5~z*cm%FMoqmzp3dS!Vuhq2H1J1^U92FHxR<-Ts5#;8KA_bT7*u$wa*$x6O8)a) z5lk!Bxdj3#FTfJey)Lzxu8*=Hs@DdO?v|Ur5>#$kJO#iz?d=@?<`MFJ&Rru<=+Z_c zlK5SQYa^25xu+1qg?$v~RI?G6XNeUwtDjIbk7W8fLGfhQlxprnhKfDC3Chw?Gf5~q zkbV`R44fFDQ)I7FJwlPwkXWfc{umpdXihyub|u9^3m-@G!KqY05 z!GI9-1)lB?VahEXlT`ada16b{{+>jeREv)d=Zm5QC!Os1e)8LVg|ZZNDbzt6!2(;L z7=RywS2xT#NL*Q1L`_D4(`uSR%kmu=;XabeYBOco2U5`zyaGA%|%%#xeILF~@h zYjy)^g3`5W4~nZu&0|D&-M?WEgYxoV*sLC?Iqb7`Uvx~!-NVKX_5_Vx&=>~7uwG{% zv;#7^cP+Tj;sN+8VDM4{D;a&6Cm9_+rO{I47z}%L79UT3@@Sh+TRh-aoV`pyQA4QO zh<-*y9rG^$!+b@Urb02SVu#3C5r4-!AX@5&Hmr6Vq`}}w1E0Rkk0dKgObo^{ky2dV zPT{hIk4#+WPq*?zT1HvxC0wQ4Z-Ku+cLE4g7g~O{j6o7I!Qhxsl%R}`p~Gm$`C-%g zW^GQ^I?!*D{tqL)13a9%5XYAr60V-@8)p0QXL5l$KZ-f1_GLd)O%$BLZt~-eH&Bdq zmwiaT(r57tXroPm`5M0-zl0oh1avdBeUtP&hq#dcm_ymgEjR-le^hgRwsDkk{Eqkl zaXrF1WdxHf@*@PBMD_4~pZ3m%ZM)C(**rC2ksrHgz*EL{DgMBrfE08NR~%`D742mr zwFjB*VOkbQj97(th#aQ62uEXL73`v(qaW19vO_uK&ik>(_)$u+7rQIXr}8!`Bs1wC zQ0S(2x39}8iB`G$6Yx#EZzXAr_*7teZbreEXL|k^1*YfrbuEF(S+<)7U@$J^#_MxA zIM#tgG>A3qB{y7shJS=wv!BJAE2+Dbbq-D$1}7cl2YDun+bfDs=WEQ)3u{}&bn#ua zsIBEd5JB`%k#-$P14I5Olr)+)E3EleTBy2)XS+f(|434Kb>U$usMY=#($&OK;>C|; zYL(a|P!&oW^IGJ-w^s9^i()Lc_E=tk|9+XSc0r`bhheiv4J%%9Kc%<&2rS-WEgbz6 zr#_F1*g~hWuh0)f?&J23AIXE2?w3mCAXZ9r(4n5f4wAijRr!UTP5ZM)_fnENDyQL7qogwBGC!uw2+qS(Us7PIjr z=8^Evo^;=5x2Gt6+ke_xwDIhD!?N%^W!n>b7~My)|9ph7#U%Zr06T{O-)#wV%(XwUC@HsnojfA`#G2|D zxmhRS1_-G4q=mL^Ed_ZAK}Lo7Wn3#n&?=Vsp&Nbf8qg)X6dE1^ZF)zr9K_Qks+LyP zejy=QGz9Z9cos_vt6`2urjADWjSK%!{%4L?86`^1@zu&{vdw*Y4Mr;VEj=X3D1R&Q zngvj#b4*iki3Cc!Q0L+ni=G&#hw@I&80n43f2n_BAI)EyhFts? z+e*<{Bu^vSN?G!oIP!&*18E{fU(m3bJ^>7xavQGKy#14m_~~!ZO(}$4exJG+H|D49 zW)?&&8GMXcueG|aB&eB3I`R)xtAHm?*xHb(I(0Oe*D0<+PU`M*mT)w^8$Xw`c_!4Q zm**K~>KIGlJ zd|$$$X+PZ&pcFMi;T-@sHa1oOFzFm+*)>jCX1+M1TbNZ=Vu7q%P})m4nU|pCHo}oZ z1YLzyg@##xV;M_}wR~_UNnCE_8;W|xQGkpUBt4)ac&p-;kD2SIQDj^sExVb8tn|k$ z3Rh@^&y8W?8L>E*jC5pZWhoI(hyY&~F|6_`?|6?3@26fakOp z0;qsaNC?-IKnW7Lh>VMW$;@yp=*`z?o1gIf^9bjyG$TaF%caH`Est`P!cldSej&X2 zk*>8LL>4+qwnt6irIg!p-7+>Kv-d%-?e=F_xZWM++^s(NT80ILbJq;245K=@)i$() zJE$`5oNO|V;L{60(ldS`JCA zfh8(m;!94a-Q`|MuP2@4$IRDXFyd%2I9K>#wN{>o-8>_VajK2+TwFDDkl%Ik3lcOa z>$hRn_;xXODvSnp8TEEpH%0%VC&Y=ShF+=x2IXb|ZZ^8rOve{(I>MG=iL(SZ0IgqT zQk0;Ztv_a-{?a=@k$7zu_gKqkE3v%97tQd|(Z1;O#s}HPL>tmVaRzqIW!jQASo;Y< z@8q+23?(b<1EIrVNjE3x6%(a~*%LlR9ol|t+ly@$+v>IWGVMQlnt$M zH^SE|y=vrM6u!-4{tp;#uiVv$d|@D*qzlA^>QNvL*~Uxcol!&Z%hK!$UJ>0?-eJ2y zSBTX+361bytYiO|oNO zyT_Mo;G8^8Ls{Xil7~F3kvYR!F%Q#PpHDpnJlS) z0)yCL>jjM#qc32sLVZ!}E>o0vEwzPv4*7_CHKMBM0dWN?MYSM7gU0Q{deCXf2jxCB zhHV+SPlh!K*As!0)%!W1XM2?dHZg%?s4bXE0+GpkX^wapBdheay9vt?-NzM}n0mv_ zl1XFtTP)E&Rj)%nQ8$qZU7Sp0aCk41ab?`fPHOg2(e?yB&=gXI z(jCyq!^UMtOQ{a%uF~L#w8l$W1r$Gg2Frg621?ie9Rq`oWr&lTtE_>M`?s)oJv__4 z4E{=y`;snGCxIZe46m+P2G`e$0`EJv4Mg`PFMN$qx?$w#kl71!n&euxY+Fo;p05Z9 z;>uJS1>MJrP@18x`wV)nH>a+Xs!pa@OXpJKP{S42pChX4di8Url^ala*(|Lxvc|ne z)>$-~lJYGhgp&s0D8xYFd;b2s(6Hlggk|7FL?(t>w81iQsE6&JY<8Z$1NYqwhVzfzN z?vlBXAV`wG7*7h{#Bapyk5W*Bdk5>fu5;-s=PgUct$5SkPyFL3BJ(+WtX+*W?uqQ|cWZx=7Q9!#H zmpkA`T}^YF6AWp|BgHQYObf{^R)X__X+1(Q5v8>IEd=EZKvi+XVF`XL-G~gJC}}Qa zV%=!VUZS$)GW`ouq<}xwMiVJ+B(#|T&uc4_1_K_O_rR23Q%8gVm?bBiY)hdVQta!y zS_GY!#_wm}mbLmx>MAo5uvdVZJw1AZSV{^u%Gb<{6uI6S)}gP`1qsdvugjo3={P(; zk%9r0d74c9d^%*JpbVY3_c_*^3HY;GnMFQT-f6q)^FhCqZ1KLji~*3$E06I34NY3A z$lYTbAgshM!)AE1dsB)q2xPK3Q5Agz9Iq`_YXU?Kx{6|E*^w`zslwO5|1CweZhZ)z z{3tGk^)%B`Xq?FQt&)2xdM7E*k34&;h!u(5r3PZgHX~^sJ_UZdPvTjTavyrFxV8RA=h=Ya4V{)IRuPA5^(Q&rf zCXgNbPxwN*L59S@4uc`mDmWPI6M%hF=9*_IQ>rNH@T#Tppoy)%DZLOP3?6H;KBt__UDuT)BxYBl`U0iTRdFmKjwfgJ48IDC_itL}Blu zDzaY!BlRoJtyBjLL3wUWG{So`qADB-Rm3A&(toV)*XiW*++hUnZ6@W-F)1(1)4kUV z48!F7)CHaPzg?f`wDb09(o?*?N_#(@$@ilO(872nq3FH@bAR6E6_z8^V&7@sO*Txg zO}hWa#-Ku@bRBoco|V0^=gokBge#I95wqV&KmSaVGjJ!7e>HLRXuRX2v5%CB|6MI` zKZf;v3uv17SXGgiJ|kgNW^gz{#Fu(fVPBg&w>>7P;W4v<5=jOnL>UmSIb5xDNFjh& zxs=;1@}+M>rmmCN9NJ68AJU*=_s{n!bcv|Qw50GRE=E*H?1MOtl+%G|6`MJeIIi9s zx(hIlIi&6AKwQJ%&&WwT*E`C15|O8*l^oa&n0#(TO(-Ntt0?m}{P|r+;?FaKxk&co z%_|GxppmWkGk`ZY_sCv<$Ro1lUlnsN-rV={=3>T!ojfE-T$C{54})P)(@kSTRRtiw z!Pv6^x@S!p3k=Y2^x&bK$N*;fMFU`)7fy4H1xESegmDzY} zjkT@^j^sg?h5j5ACO!2S#;_)U z?<(aUP@&8Y80a{W*h@efUqOK%BlO7fmx=e!_mfK$nAVM@t^)L6PvfYhba>Khqt6l@ zEJ8fR1939;SeldCB#G0sdz(0ud_apbKM;Ntw;ZH^Z!BwcrLmQ73D^*}3(KCY3UZXU zH;_A~i8*+-0N46T5k2v1rs722ZXi6`gr+Y`X!@4Y*M;1FRWNb1BhiUl_MAEu4009F z`e~f~27&;Ft&kpR0f*(PL9Z$T!?@b;PrEuST&;|6j}I|GQlBv!O1kS*l4t|NC!}$Y zue(9(7WgDSBljlZ788(|DU@Lx`r+u75%EnvLgJLFXYoejoEbM1)(rH%WF>vBhH(dm zzK5(N8B!`mEShO4F3Q}87*Hj=c4m*Mt48C~zlLq4Gf8VQ@@cXXO3xj+x9R-= zb;dJfsKvpui6O^}G811UW`{^#0f9KZU?^CSm;qM#<8^~RjisL&nj;+?as?^ky)(H& z@*M*?`w*N#Z$mHnQ>IFiCN^>ZYEIFf!dT}-~%@32o$fVGa!OI z!P_?|BIuumive^9oZ4(Q;OVsorPvV`&$9anols~H3^;QUhP1%O8@OLs1%Mnajr>!I zc*d6^E$%KWuMOF3c?;8v)Hq9Nh%xFAA3ytqyBHsQWx#Rug30BY_YQwN->MqeQd=!X zkf4`O$4m0#e;v}xr)+rC5`^=@#Lo=Q(HNl-N-DENSskRpkr#b)aUc7mbluy+4ybEG-o4l%)w#*#lMpk;kbEDl6lz z$J!Rf*{w*x;;={KV$$YEv)N|H&` zKgO8I${E?8#@Nl=%>#_+U9$A>kMDQ7(!K7Q)>aTZ3zL=kGz>g5F6M>IOEY|glhmm``mirK zj(%T@L+@RoL`E0bBlMrVG92LPibkI0A{4=`xGb5rq1$w_Ib|bs@j*kgxfmte%hnmMdAcziqKn6g zg%68b*)!Q0{F3x#7NxVaa_zq4WM6gyuN-5oj?+avCvAOs6<=vy#hi+nmY%^cgg&^2 z-5a$KoqmoUbq}qVqGlBfQR!!+v4aUD-|;$m$f(Ot=(T;irgYGHsPb#va{s&@&v^As zZ<~{d7<~6kDyplM3>XD}4I(~pjJB4-j4`HI^|2%!R6OKsF6MQ#nl<@{0C4VTa@Kzt!xGD@K*iGryQi%q zO?v@FwXqzsBA|v>V*`72KVRQd$yB#~ia^O7n((mB8hj&7y?FATz zrSJ@n#J0rK)E-a`Exsm|ThG^en|oS-o}uG|e(V=XUq0OTb}xQ-%5IY{y7eGsKC<)9 zJ;;CiaqQcF?m-65qI`};Y0}Ek+cxhm0f-Y8@HQ4_kpBEE^yl8bAMEYz{-i%UdT&eI z>1oHfFq@_y+LMkfl;-nl*GL)(Iy)W@DL}dkIfsO7$OlxaI$qSI=XWAK52cvYXV`hV z%xHiQb9xB3q#g{L4L1w{tlqH|LHO?bVDtb`=vKB%@+rq9QJUmBoxo!fo`=SU7lkH^ zHgkxoX)-pJ)JiUjD}W}CvAYnHYJ7sYLYRmfkLuhlY4M{^G#&b4e6hHLvk%7eW;m0X z_UbCrLPH6-C#g=&b@}NvP}St`G>&zLqJ?NhcHZEN-lro4hR97veyXYjLU%fP8&GE> zH-$XZ(1AhsTRJa<09heo9#_1#9J)rN7 zkr+F}kNL0)i@^s3s@Z2R#9=S^3^~eA^@XZEp{=JXcM(>VjKh(J)xZ&zjgU$qKU|&* z^27OJ!v~AP^-?kAD|zH2HO%Z=_)lq-?2iP6AU8-daFPt12?b*I(_;41#?!xWMZ!70 z2)>2rt8?Y|`eN}_sbg4eIlPha!aYbmJUB}##?*>Ocn?pz%Vjzu>u9ATMM>n|A@FvW z%Yt45ON|)D&IQ4`NyxTRWQ!}R(l79YunwH7Hg_fQ2eRp&;?w&RwUG*qm-}HGnePzh z-0KaQ_loQ=XH~=#jV!mDF6kuQu{?d-zQ|>-Zz-y)ZC_#5Acv3h&U1~Jm z=UK?9@MSGFWJaaAt~+4F0-q-l2XVWGaWUmeIB^U2q0pfEfgBDaho&c0)j+W|bKh3~ zH#6^AoGl8g+bs8PRBi3eWEuD$;2?B+2;C+KaXfpY4*z@i3K`2Mx*Ks;88*$2J=ss3 z>BqVvHGmVx#H;<-Q_tpp2Qz@HxSXEpm>#&2tM6^*kh%>Vp{tqANx2&1vK}^r=~zd# zhw*c`=J1dmrU&JHG~N_z>`ZQ6r_YX`fu3!{Sz`E!7p0B5s((M+H_& zyTWB$5W_+BVONx(uKzRE9a+qQQRG`@SFVi$vMzJxKPv8VV!D6}Xn&ggSW+Hq&#ba1 zDDK-p(P3maE?YG@NT=3c3pI`3p*C9yr-XUq=koj7F?p9?9I*mj-2M3 zPx4dd__{NF`chwWrao%l9ES>bmLEFWr!Ud9yedPkA9&s_;@YKt1YOGm(pEf2DRevE zkHbN1rhVWfJ}{MHl4_LlExb1rCtWp1C|rQxq&Zy+&6$S|l7SLa=G-?BL5ARoUL4mn zgBy>IKOj4_{OU-6M(aav@Wp3wc~US>&j?;Asc)KKBrknvw929Ug2W}bkgN<9^w4%Pkwi<#V7n|Cg%XQU_P+LHHK|Qh*#e(q=^~|Xl!WY&6~$Fn?NY&rvus|D$Ir2jO>;+3;uews z=G|!Z!FBU|)pB1VDPL31TbN0WCl13AP8rI#Dn{C8HD=Hx9Kn)(?48K%!?&o)Kvft40s2LBO1{KD2GKPrN{hkUfqDJ~Q78#~1rBE?_`W3V{5L-DX z9nDFzKLL+seAyLtIM1|9iW$$k2Y5gnXYV|jLwqt#?Kn>{p{>RVn8s7KNW4qRj#j52 z_H2OsrKK{q_q#-N6WJPIpMHcGN-;_;)MjB~`TMv-hPH2ACkE;eTA38lE2Qvc1z+Kg zwjbj_0hhz4$4}vUY8(v!JY0s2#0lA&ig7{X%0E!jR?YuNJP+^{4#uqs-6h7RVp)@- z3r3ki^HmhlGHBlRn%rhyQ!TBvI8Ng>D?hz6_Qfs zyV38~fVV(GRju)sm?#rTAn2JXFLIoYSk#a=gdOu_mVgb(r}=-{4@$IOBNv7UCQyq> zOI$#-Q!K6#s6<03%j30V(YD-Sr-H&K(=~CU<^I@9sV8`Ma^YCM`)1Bo>b{9 z%UUIDup_Ie(Hl%pg(CUvY9{ODC!f(tRv9TwDT8=0$A^_n%SJ1%Iqv@KeoGAz>a& z>?hYP<1jmC;1_QL9-vEd#Ov=5Xffa08Jf5g&q7D4k)CskmD0G^sJk>XS%NO40n~vt%LJ~&y zpVr$oJG{%ZF5&?ye1w+o6ih7ig&X~`?%KV+NkQEUt0+g<_w^Etk=Tx@le5EDE#e-p z3tB61l@ha8NEVzE^gG|5aD)B5hHD#xFAQ@P*7nG)EVan#!uVzbP+B?GS~>PLS|PC~ zeVL`cEKd5eH0jHYeh8u1EL@F96_7~Q4E|2Hzxar9JkI_is&fpzqV^_=DZUp=(XP8aWY=wYp^VQXttm3R&#(3e9j5JSxQjl#|kK@DlWN^eg%s2grRNJ zn7jQ+lROH&A;xwvdpqDr1gI2QV>I?JG_q1YRD-C6+`i zd9x7oU&`Z?KC492)uhkY5(OI~+e!Y?g5;9;XQm*L>%80?z&xqukhlljVUIMz1qpZq z?2_ZRaF-Dlg`C05Sd`M|{Arw}&I@NRg|ii^D^>p(;J(?kr^oH|GvCSCDnr!z6*q`s zpFmE~s#fK&)~(rHzV0F3!=ijf{6NVzZUbUOY=lfY4p19M`dM9VA$N(t} zv07tQA@2qpS2XmV=h0qErBxlzljh|H--Ht?o~3#jJw|yOavur=_uk$4xj&xsV|V)F z!`zElG54w^%Df!i8n=sxhP4NPx(T{{Tx(&@3Qx$34EApq4A-E_#&|Ggqns6t1+3dC zHv#)oqN84|qf)@Q6JQISiUm7)5~Rf?_VG+GHwKF{G53TSVj7=Uf6me$@quYEl0jK1 zjxcTh2zn$%ij%_B4Vx0)a0BcyYDw9<*yvv%IYX+lfo&Xu5-{OaRtii!WKx0W!Wz$^ z<~lKUAAsA(g99yAa09K1M;8p5z(2RDxS`BW8>5 zuWKiC1!T3*GZQF_b=rOATJspwqA6PFJ8gfoZb%RUrJv9A{dF51D`-% z8nV@&ez%XV^FvOj3#ZWO5+9w$XVL3N7sMYD2F}0g&lWp@HVvh_?1|gwP@tWRqkUcBAkSL4UY^pq!w7NpODsl3ZBp^fc=JwEM2Z{06b$ zS=DI^ZCogU4AOJ@Gy(w_1rRpDYESCf+ zbokK}zeDs*W5AI}CBHPjy%%pWDFW_fmvM2MA34RJjw_e0ZL~!U#RD#+WN`(QZJN(q z6SsA!L!~eP^k`YP4Nyzp(+_+w(Cv3$$8f?6du(95L{huM;A}9+QPqaS)<6@f1qi>^ zJ1Yu4xjyXXZZ^xHyV*Jl>nxAcw|KQr zf==7c2bJZ?oQll7$UKW)(sLnV>{R&^-JI;-&zaYXU!lz*5${x^))1oIK6@ha^>#+f zrg&6JQ;L1Xq+Tfbxi9-Rr<9|EC6j0mrDow=)u9m6eZTpHE6uNkc&`-l7Rj_<^8})T zik&F&yCYY*R3u|`#i~>%f!$Jlb(p1T6i=Bs1Td|37s&in?#8qv0U;M@MewPa#THs( zi|pfRaWkGC7RZQFgVF)Pq=$<;0~N-o^ye~2*&r%aBvymxN{K8==bjD*$iYKpPG@Y{ z*)=u=GAzAA{eT}U$KZ4^=Q29#IywX)`IPw=jUm272F-NyEqG^96oE`p>S1_Pnn4Rk z+wR@hjpmYi1?idFxWy=tx2K1#q@zp`o+RhO^KJiRw0AX%He=+Yi*<{Rc-1Q-5$BI7|T!h(fMe4z#>=5YgH>1DmDQC6R2?UPG5N( z)tqs{_jGv%51@jQ0$?WtMiV9rMjStF0dZCWB6cKgf^fzn2+0;vHvL8;tS={ zP805|T`x*BeurA1Jdc#OoDvP?-525hn8PQii~@k(p}7rwZkXYBgkrOvw}QK}a5g@% zvYZ4+3+^{%q?&vuSLc}Zt-@79FUs5%idkPm+^nQY-ow-DYh1C^No`8^6p|>FKsFxZ zj3O62Rer87*=+Z0uY()i{m7@K+;%H@Lp{KCj}*^1BH4ak#y++^98v-P4&v(M?#fd{ zPud>-16hk$UUx^-Zs-5Ku2s4DSd6>mJS^|ka>BrEjZgCFIlKLd15 zOL5D^dwhBCq%5+58&i*_=ewMlG~0vw>f^gwI>CN%9b|gol&oM%mfRQSgej5NR6uKc zY)14s&5HY0qy&}a?(6GXy2B)Vn{^K$iSE9T$*7oTpjQZ4^>eZ~;-=yT1_NEjmZff& zAbF~LA^%0bfAQ{4`37B2=Unh8V+}f#Ut~$LRCJ4P196|g(%6G*7rLJ(efm`B(}`Tr z#9oRUTq^!j*CvWS@zoUEP(WL0cLynYr5j753_*Q*R9GNBYgsSaEKIAiZHGU{eaxYG z0lL|?hJMcp==YqXsUb7opR?9yuITjV{K;n)+BgLH^tPT|LiD0SxqJTM6GRpowxg@* z^kwt;E>#Zb!%#e0feWV3`Kq?C61zgQ2mw}X9YNZ5%@U!>Rn+|EOe$cikY&Js+G$tT&Mk)xqf^_gyNN33@)Ll~Jw>jX=3Ffl0m- zEUvm%On0*}27fV_n%2Azt`eZ29cN4lKJP?@q3CDLRx^BW#F}QC#NHG-Q_*bQ&A=XBuz&~LAnmodya04kw~Kt*N8G`JLK4Mo>3Yx^>p=xH`CSs(T&J>GkW+TESfX$ zc`;dop!0bX;FBi^gD=6YY%7+)41D(zxuZeV5T`7=;T-{ppu*dr)y!Y*uo4YO7HR)c7BB&wU&$ zV*UTrVEy;L%Y$UZV+4F~d454r$%b9^hKGQydby?%ne~Xf3RwLXLjYE>+#OBFuu4<4 z0XoES9B;HWa;J&|J6YNwx46}OP^u`5rpKo8n9o1am8V{vv zJ%PXoyqQ%wxL@U4_=~oA4%2}5(HsaAn@N=ZCT&32ZTT1699|8V3BsazF&E>=P>!{n!0R!( zwJp$TZm`kt%bF1RW0a4R#ol#V~=>LT;1Q~yjN6*#%kyNuda z5PjE*>iFy0xyIqTFXJNCha$ZZ034|fS<3TSz5?o;=S?kI5Kc#+0(X}n&%FP9MyU}{ zqlg;FXPWQ}YTLT^a>Ll+MdM3+T1P0J-fJBl?J^n2m{11Qs|BuRZjR!YOf)^Hse%Rc0XeB4FBxGC3MmW#!1jP~f;hhOdaKw&CjK8* zarxk@m`tG(?!@kXu*Y~tG7x+2(9Kp2<0#1EUZ!L+Pt6eTxrxIvKzoM8jOM!S{joaP zZYBdnNSOQUb{l~i*Qr#p?jxvdGao4lf%^^m+? z=##{^dN&8(OtOgM5Z|A9Cj0gw8Ivl2817?K0bJLAkXvR8OE8 zrf37tq}@-6C-Cm=)^}k+M*;)E3=vrhyRmJRQPtVU9|u!c2dP4!Sm8DhU|vhOxj=ra zkxRuR;n1WY5g4GqUmxayz>Q&zD9^X}g}gVf*)LS}=?+`2>D}fjdww@BAXYc~naY(h znmL<*oqxtEKm8;>b3Tt>BUdK)ChMs21@kSh;n76IDXAb+ud7lTSxZRkbOCyxl^CoC z6I{DodwF{|&eMgJAnjR3kVhjdSb1ccR5nY060M$&B} z*65(fE%RXwrC*`-5kN&jXvf|5`__X7Lm5X2_hd3@Ck{ilTZ& zZHW0mk0vMaLYY=Uo<%bCN2pLOGL!sktpSlu<>Q-zj!`ZfLzEz$dBWG_G^XCfNqwN4 zHm4gKgV(%Qou*R_o>VP`3u=xh~*?WA57_#C$3Bf@R7^> zOgjq7Ii>27%FJ?ts(KA60(^Xh4W*2^nn`nLdsc%bu+Yx;C%LmIq~WHu`zaf^@e(G) zh2Z82`f|LAjgb?*lk2OP7;;uATP{jfW{w=!+HYB;POVhvKjmD-p=oH+4R^lgSiJvA z|NEHe`wbQwIV%tQk7cX9Z&xPp4K&i~O&dB!GWWLOODv>=1OV$IFRM6y#X>j>u^{Go z)%*Kg5jC=ax%hsRsg}ltT@`Y^YzXJ`{0TO(i^65?>D9!eR3Jx#j0qj}y8U>Mj#$xj zZbLXFA*a22cS!pJ=qWgyIqbysz`c+rQm)d2R^(gH1tfu@WBprEz)|VoG+;S|2t_0Z zRdV7~e6{J{qX!6!DVo%Zf#i#_Gh+N)fmPzj<`Vh7$>7;9(xPOFA}#EX`M&8-N|q9* ziWkB6Z9s{OUaN=hqJK>+AY&MYSp<-9WWCfdaaB9wfvZK)r>81>(L6tz=;RJR zlQjPGfu-K-(WQ2A6;2a_Ttus{j9(V&q^8P!N=7^tLd*AslJ!Q1tUGRON`V9c3#Q`R z0V+=MFL>?WpAWd7KmX}~>-qEiZ@%69^ZE1q@4)K=-^)KY@b}*2yZPUp$@xw;A*gtY zkM03SUSq)G;uj1n>sJD^i=Ru*pEIHi(O!`pJa4Kv7eC)~E~?%8;`0D}Xh2FdJtuOn zU$Mw)ShASTMO^e=c0#BEhy1!_#Jq@h6yCfWwMXf(Es(ubZA^*;+{`_U+9@95fY6v z{~Mm`J@0!xN2Xpktkqmr?@U})KX{~Vo5|1*ZemxHI`Ash<|?2m0r$EFRgt7h`- zHE&wTl%?8{DKq54{2<666d~+Qy3?Bm^MPH-mi{}Ex7niVw5f38hBD#6L?IT*l&%tMLd)7~+fJY^LM%G@W(*CZ)PRHXMecuXR~ zR)!gLJJ*>RL$gg845`@jsrp&SBNKB~(X0@WN(3~MTwYAYdq)LVipasb@xiB~ zT?yoOB(hwP>1h11wOE!ke5yE3f?G%@9+qP znMzMedskFzIRZFLeqiCjC)(*RZ8U4Yl=L3RAEcks#;3x(+rs71!FB|7v4SfUGyK zS^{J@@}1aSyey3U=JlP}o9Q2DGR?61jxraYvzw09+M<6W!c~{f@XWW#BP4iGx+;UN zWHq*1FB8~OCaKWFJLP!88fXLV>$4mmGee|z2lC}pI^|qI8aM5Yt#4#W?qMjAv&6eV z_?w)#ZTL*OALcjauU~V{=&Ar^moe5_%#I_xoNdN>$P|6toU!QK)A=dl;zuOa4Z-h2j3E!d z@(qFgG`|CP1^v-E4o~_CUA7DQBh?(YjA1oc?CE)S8|S0p+)S~XvaCYxJ3U=y!g^uP z48!o(D!8Kg`9c(p3IO=fy7qnm*teTeymZtk;gm;{snNHz#SNDJEqp2<-vpnBHZOcb zRR+J`J0ZLVePI*PyE^wc%Zve@Xs?oEC8A=YWTd^;ve}HfOcfGGlMYx|jwCnMqtEmm zd@pwIJ9zgbUq$Q*9ld8=OTWSQ=@Q>Ok2NnR2Gd=QR~o5Y49$lvep}C%3^IP7K*n8p z$Vhhg5fZZYOJWtf-$g`9LU~2D@<>Vhd*FErC4OD( zJ`AiY)2r%(5|VU)7IIhjwEFe|jrP)?K!?<*Iz;M7c|9fVDP_6Mb5gD*eE!Hl7V0yx zZ#xG}bH4#Ivv@!9)V_ko|Bt;lfv>W<^Z#>mIJfs=5)y7m09joDF+toRsEDBK2nfL~ zA|x1PGr0lxCAd^)tl&~RRs-5jH=(t5vBhc~+o`d&Gfr!@+I3cqo?A#c`b}cAS;iC+XtMBN2W3 zeIl{BI8E_`5oh+5y>Vv!#hLBsS5)*5Scg5qbs>kQL)KBeDf=|DNjq>ZS4H!vmJpX# zEG{ji8WfjCG8{NEMPuou!yV zBq%DDtl~Ir)ehv079IW-WrriLBpG7z6SE;91lF+n8Hjdt;U2wqk7~*AvdpJQkrElI zm9&F{63NY&Itv*=@ej6NlnweNrHAH`*Rw*S#U!*0qym`;c&>YRDiXM;5noyQ~_Z-^z#<0*<8N z3pMZz!Y+R|25zmXCWyYm7wK?M3D<^>=h6aVj6$kL?z_YV2ycrKmodRQlbML_JcD=zI(Yor zAiClM<-B>a4DMK8+4ojV4VBNgvzY?o#;ZLDnWom2Og2`#k`JerFdsvk+y#sQ<_HE6 zW(f%se3Irr*b6B6Ul{wGsL>$H&X>0_C(P_E^_&hKxYnd_z;-|D$eH@ zPfYBP_~4M>RzNT1zG_Yn3?}aI5QHMCb&Tt#!|E}AEApI zR2Kkd_6Onokvf6PbE9X?U78N@u?(Io{6VXzw+aa>?#h$6ln1ufXRGNy_2>|rG#vor zc}dUnW0uf?+a<;0cWVaLR~2wW*(PrSL=iZqcqt+b5-xZl0Ma2zbQUW*k{dFRrbCL4 z60&|E^bJO%BD#`cV9AwQk=y%aSvjtV5ZdNPH+xR>iFthH6(;j85Y z7HY7*clfFaT{^GRt9nl`5)HS(`t1|bYyjkGGDi2wxH6m4-ugN-4z3DsU7l=* z?PiE27x^Kl^C|{h)U^OZTaOE3?{BhodKG(@#9W#9B7o~l3MxRS5Z);lKYPnz3zwDKn13Osc8*!P zl}MMA9ZOq@Nu&I+Q>M(stZecWu6z}L8-3*&)UFM$Rn{sT2D=S?5Ut>)>(P9Uvj%VC zgUmrzasN^PK9DIlgwkx-UFTZ0m03TI$8~-ld?Oh2MEyvub*{lEaYU4o>O4w`H81<; zOC>`aEX2F381*I#WK`h>y%X%e^~(T}S9~#{8puZBJrl`mm@vXdpzJ2LlZ^G{>nA6= zjBCZ$XPBgyLy=Qq9;ZOsTA(VXwrrBGnxntzWbqMvF7OxO#Fa*qB1PPxSr5G_;UJ7G zQ+~D0iaIT1=mynb#m?U(>0FIr7XzqHi@O+*YM|R24As`uA==O~Xh$d9zZT6R?h@$Z z^DGG4e^>6AW*A|v7|^J;$KX%mT_Nj$55A@QI$1=8_IlR%sv0eTn_6O#P5HF+2#rW4hem9X>k< zNx!>572HtvhTPU&qr5f`lrEc1XFa6wl6sS?{{9L;*hIO=K8G8Ri{<(!sjGC&A}Y-E zdy$kQm0?PhG^5)6h`m|4m^#hDNK2K&yxpy}kuGGw+5W&K`SsBF&G3nu+N^A|1KN$L zt-8gR!|BTL7XUegz+Z4LrDyUnEpT+fp521SrX&HS1XtHu;VE97v^9jF2^!-njL zsXL;Nha{GK93_Frn>xG~OxqK+WI}aK#CF22V~DHYWfy?_F{vhE$luWA>lH-MOpOBm zg-3|NJ{XNM&92xbuDOyymM%?_FbmW~X?YP6!2SNIC7DgZ~JRZEj~t}UQ=((x4e^pXqfYUO^*(b5 zUwekHftAyKnp_9(i^lTAv^Ap>QwLDl#5Z zsDZOgio=4pW;4W-fL3M*1F{l*SigQS8ZWIAFJI|CT+WJe68tdlqFSuvVZwcF9f~ZS znb{W~VN{h5p|-NuURYO*1(B;A=mc+QNHyV;Ut3ooZjReznDn7blMDjJy2503G(pZI zEF|EOPU-Odb#_jjgl`|O1tj;{T6m;9r!`@dFlmbLi{|OdcT|)D@U~k)XkIyvKm?1ic$I)|Sb@VkjRUin1_MRbn}q z<8L#Hw0l2d{sh-3o(V+5EvIyV=Zku%aIhIUM^)K!Jy|A;biG?)p#1Z7Qa~XtLVixf zJ(iVCe}$RoZ8QLVtN=i_CU^A;?}fSu1If=Z-(p?h?P-LrJhM(`>$H26lyGb`6yCPe zc%*Y`KKl_CZfvV8O8;1&*`+;CjQzk885@tsr}!_4y!f6DGvSi%CzF?z6nApcZ(0C~~14{ALKdaT`$xWc&%6bMB0 zAZC~E0u3RBuFzJPt#M0!=~gAGGpNi%#4HcrmQd;tja8=uob@XZRg11wBzFu|Na#b{ zdQKBWDKs)0cuNjH6$FYD@N=5a%{)|wRyTcfO=mBeaNI+2!QDa{y>PJ5DWpy_s!)gjL{ta2{R<#j-CmD>)8!nuV`b;3*whU91fzSNnsYiGpcfdRy@&Q8L= zfzfexN>+6Ea-@$-8CQ9#zNwurFfCt0b6oz1?afa zgA7QW!w5N{@;TsQ;Q84)yo%JFfF0y@VN-e#6Kz+oMxKFHbcwNkJV?*sF9w6u4F`P6O+E8=6DB)n*FP}JdFMzUWN$$7Y!uecfGWN>KL z`iEdae^S_w1!V=W&sMJl=;?}k#iT+a@&$0Ob6TmpfkC<#u~#&UwMs7AiCuue1&SeP z8VACYtS21Y?_w6DV2@}PlT+rt*An3A0fD~3Qvj#0{OQ1HD7^!mWZz%v@VCxLoW)gp z@-sPT`q0~erZGwP6wpK*8)4M93r+uN1B=jUpP}gv1|ZI95UgW1K-FuPqATr!N&hyW zs>TUOzFq0Q zcWFJGSQ_)bi0*}5e+Y(B0<;J)EEzGcKab$FfC+n0n97gnji}G>wxHcf<2i+-k)vHi z8u42Cvy#SM&_iEI<6w7tX#!D`%(9q@qnS@#VZ-u**(oGKTv723&&2cfD$=T+^L0I| z-IebUCoEgKO5#~aZyh4&#qy^hh}mhNVP|x9t%x?uEbBDZ>J59cT<^(;@u@2 zI+Jb&ry(~9Vk{%7tmJ7**UX1Mc`0iRR0L8Hns~{Y80tQV9*GxrwCM09_U0o}E=QWY zg!}qc9m&*rV%sA7frNWR`YbB&)|X_t>~o|;^=hig2OxCTfaRak%U5%^Ay7e`#yvbc!;|8?5mKs;K*|pY? z&CX?OT*+qFR)b6eOB)jDxs5f12z8g$yvJQ$a}UDecaObf+{H&UkH6?hS;OGjg~%=G z{^4q(;E4t)5MgiJ?N24f=__{&IRVB}?q}F{1EsjA>SW)dQn+6jBf$jB?+s*7j<)~! zBog3)9e=QbyJYPt86QxZr?G4j@z9;h zBWYM!KJpZ-!A5Q zu)Eu9Do_d9$iy-z;VF#NDL(Z@?keJVyIfAct=tP zzKpxhb10?z_wgLb*Ce$3ZblQlxp&9gtOGd|Jz9+7H0hosi*MSU(!{qt<^u)8f0W^$ zF%VH!rKJksi<_>(*2fNkbNJvOArVOh6cgcu6cs^kL`{q z=KsCc(@NV~#DeL6Jr7Y@8w(k=r0M_tl?lSX12}Iu6n+f5WEc54lkRYULd`u*U!c>U zRcmNk@p*tQb3>=UNgA;NwkQ%`>pONL>^cVs0CcVz;O_T&y~6#_gw2sW`#v^>bgJ4LFq-YO^RG;O$B&aj65)v6$Fj5d^u0a%mfI#0x9v zxgFL0h+NML-;(4)9UpH(gc+?|dh?bX(B?GGWrmxaV0iP{ed?1)uyZ7i1DNDX=Xie~fboIkE;{tJs{}QG$%mW*2GRJ7Dly}fhbXF5 z(eqYBRH*#UNFCDc8zv``8H+mvYm8HvIpPrV#WVI0;~pTG4;IH8Z2n`ubg~o}w60v;1H=0Gq6>~b;mLvbUEY2NP9*4i!d*vHHp ze^Ay}DpGS0MGb0~#t?@vp`&dUOZ^n<6`4ip)fUlxY*&b~Dc^COf=f5~n$J>snU}g# zk80WQ*7f?`*7XVGCSYF*CQosf&|z4KT$eAQ%d)xX+UZey?ewNzJFVA0)~!1yh3>ov zU$5RIQ^;hAS{?xcw&Gg^BR5g_MWUI+Oe7^HS^ov*$FW`8)_$gh%kltiTYX2ecP(5O zqdb$k{{!Ofgu|skTQ2AZuq5w)9p5cJK8T!I{sTmgQ}gI#j9$J#KF5Mh`c~R8*bBDk zXoPB;+l{`%=Pv8jc!%;vX3qd`ypty9*ID z6Gu||uCwNSBZaADeN*V{V(}90*Muj5?1JCJQnAg$X|EkKmxvx1T(RYz#h1=zc_4XP zEIT1vfnQ;oWlTQQ&@L5}Ll>sV%_HgzkO1q0C3r^J_|k4eJDwe+O(K>t^YgQ!CLx)f zCXc=U+60a*qp)&6q23>SD!lO(P5$5oesm)fvxNuZ61ZoU2wKKS(x{Q(5~Ti@=|5SP z(=dickHoKqDvJ5yz7OX)8aEoV>iMq8Iw%%X-mksyam4+6#Q>r;b9Nqs28c7{osH1Jav?mnyDkS50Z(xXQ zw2W+l##23YC0=R-3W6sqAVwWVv0ftrx#*~S6h)EXyid|xqca-*;{y`LT=Iz!5%iE* zvO024F&`jRnYJbAqBnra3u9t}(}Ap}HtK zE)v~|>8)9Tn!U(eIiRqV4?%u(91)2ODT6kWil5bpEU*Ck?><}IP2@}G+M0`dk zMubWqO0&DJ6x@g&a>jTD?El$*P2hod5M(jSXHsk}0KqWj55x~+;OW5m8 z+l3DUwzPvbOLkd*zlh&7=8hg%o{$d z3HPul0B2Vs3xf?7GrCWTn~$dOH=wbY$SjMdQ2Oe zSyw}nv<=zD!xoRuLKg_4`=B|vaGiIw*w-@|HE0C*ia3{|Eg$?qbbJYvlnBU9#GmDL#d=b z?~JD9Ndw&RO`brop0IbLX&;+so2w7>4jK{te6|?9dO9gsc)}n(YymYMqKNWqD~HPQ z2<(xxJfqp65piD?9q3;-vH?6@DURx^{boTj+$XMtC$4n=lZrOtBiTLO03;qv?VCL!K8bW8Da|HAygU;3^*~uuB5-^^wmUfPhTkpF`E4?)OnE4-V7Qtn8qa1 zX8*N#_HWz!?058S_J4K>}C$w5!&Jy*WdW_iVtl>y^1^p$j`j_}h zsoRMFfK~aNHwG#?z%Q`9T7&pz_9ViK-r$cO?`P}lFBoc-7K_-DCvE1hbvn*~wTdhb zMAyS!rXtzK)nsEJZND=$2h@iSJj@g!ex|!Gc-S!a5m?(&q*w{}bsP9HbgCmU{=5RO zR~-m07Y86<$0G-kSn!z|WFiGj{Mq^Ec32cc*`m11IO*O>A?9xGu!QZeuM|L1uLREU z86DhirX30Q@CGdDnW^1q4h}bFl#kqFyw~?5k}lN>BbXzV0xY%cT;y=%=B7qupnTw#OR%s~rp|7NFgvRTUt)Peb9P z{5t{jU99G`CMd{D0f8}^Z(>L$Q`Od^k;L%R?G)r19B!y+r+|T-Ii8+)&+%#C1^?CwbLFkO;TY9v3QRi-RkBQyF7x;{V}9t!vgHPh}%v=?x; zFnqlAD-M=b$#V2G?pt7qO1H!Ye19RT*dihJ*U}y4W`c(8h}p9U3gbS$0jyFRV@P6R z*+!qmk>99|M9R#Up@Z26x27o(xk`v|i$mVwadI3pB4zao$ZZ6%>6S=HVI zc)l$3R4uEfguAcX$#x(5D1lhgedPej&5-Nu&&ywhdMD`-j?HHWN~;|yKJ!z+M`XrL zgzyZ$OL;qPe-5tzC0`OJbz_(J5La#xzx_3u=mvMsU)q3IsS~A)da6o0lT9EtWS~BJpNfseULd z;vW|y`^7G5a!*r)HVYV#x($D@qH_6-nft#5bCRc-Gq-+oC^Nq?^XM;+zO3}&5PxCD zgo$$bsZhM_Sb9kwK%e{wr6j^TLuX97y&!sdaLhOCqyBY;_4!oP%;u=LI_g1Gysh`* zhkGx6viIWWdN2Nd@5Qh7UR?CwVR^cBu)O!;QN0&W=w8ekHnUV(;&<+Ci7kqkVnxI; zBDB=h`)>pg91ox>@2{PKCo3UC;$>*N& z2VQT*T;n{m-`Ds?W|!yhLE zGQ}S!`$Bo*T`Xt4b?6%~Do_wm+ZvmH6+p)Q3~Cf{)m2h@#m@`T}5 zWZYov06r+;*{wRbVH+t<*WCi*s^kc!Ns!6zO?D(yO=yJs1D|6Ons=GZRH15dcshnM zn6FCKWXSU3xyS^FA0xc0C{w6sWXLECj~9)MDAexT`~9e)x`(d`cEvXqXVu|f(Ul`Z ze@TWt@UwjH&8xF!x%TbED5XNYO8iMvauvC3{a~5b=-XQ{-4B+aa5g$+#yZp<{iWJd z*T`-=99sNrCNn;G{wclO)Ji!Ce#pD^OJF#xkj@FZmG+Cb`}CxQv5` z9I*iV!aA{QBC3o60i5veQRDLKiHK0}<7*hpzN^eg6PZw^nNR5-bU97pVNjJ%= z88O=Y*u)s;S*b5!suW;>;ABKB8x8oIV#|yjq-TE^OjGM?uOSD*uc|Yxk-;5B(4((^D#R3ip0Ov+W zdM*V-wK2k{ont&jKoJi{sDeW~_DeE{A<(dB_Yq9D@U)<*+-;EmMt>|xe}A>?Y?9Uf zu&a5z3e{%OJ~9evGm>772qA5BK8w~1!LBd~b0Bvk&njCC zAa()qgn&C5*~A#0##_(!VVHvW(JF-{*VOFe^$L4C?)`Eax8Te+eFHIE4fAJ1Baos_ zTkuE$N5x@k?uhPjkF?%nDKB48jdVT7NG#DXX(G`rec?Nbo|6(Ab(cs5ML%fwe!ZnLIxFo??txVn zGS}`LwZoU;5bvW}h^2!mF!GHwu~vJ8RT)Z5Xq&cGk#YPgvr%AZZ5Res`tfq=B8JND zFfR}{(}QSPD>!h~@{K4^$~=Wz@;GW5|GJ6smmC>!k=Okp+E?u$b9PPv+ZjJmCar)s z{2-*{xkia^sdO{iIVEI@TLo5$TYWBi*Eqtr)1C67L%|?LMe&P${^Ek@MR#{(PWYmx z!4G<@P#``JDAVRc@5rKW00EMila&c#Bt2qZfD;8YndJFC{W?FKs0o@iNjawoyG@8J z9T15b65D~!<^Zc@pDVh&0v!-a9;wC49p@qzYasR$7SkqFYs2P2^(5CVOBAPIb9Y|@ z`h(4Vgn@H#>3Nc|kZ8iZ-2-h1^BxELs~{U6fQt=jIvcnOK{n3hS+8-?!~qkCgg^g9 z<>ZSX$0N&twqpwcjR^x?vQF69>pit@T5Y5E?{kp^(jKIWn?{2TS$N~2c76EXZXY^WJSuO z;IjE*ox9f%ixng3viV{ic64h)gx9KQ2*JSmih4f=o+ZJ6LFx>qPJ>;=^q}}W-48rU ze=YbJ6D0}D1`P%K3a;=gV1uaZ5&cv{XNC6UEPfZ$tQOVTEfJcJV&BY)-pAa+#6_2H zmb47c3vmxRav>{%iXcbYUv0?Byr|XCRobNKrKqJQ!>dz;Tcb}Q{io44ih?6VP`0+(=#2dUa)f_Df7mng*LP?ya;E(wnzTlV;T9uk}~ygQg9M!8$nev6P2`BJ+e zyk2@Jq7);gf*zJdJtU`yePbctzy&3eGFa~jPcF8wgn)urPPN4k5m?z{(4xJ0o*#v|}4E@Gkidzcud?wJp)~pR4VY|BP+RM*6R@-&6jme!sgZ0E+2Wjxybf zG#Qv#3xP=NCZy?;pCr>=x9x37ziD8duxt7S_0$PPeGW9ogv?*SPVW?yMSjM5kL)n1VV>;ck8h3c7JG;gm*6Gfvaff!gb8Floo$kCEcW@_ZFx^3&uAv6k7D7q8>RFqR zMdL$BlyWzubJIKB@)|d?(_L8OMs&IrHEwvPTUq0Vb-KnHcVMS$s&PX*-KrYux{GSi zxwz&USKa9@rom2kNsSxSNvu>?+3D8QxJ;)xc6OR$XQw%KcA8^nr#W_Znqz0DId*oM zV`tVJJG184nWa-#Val=w$IjISj-AKN^>dGacypddkaJn8-Tlus#gh}*b)kE`9a(D{ zOKb$=8*6ep+Iy_@$Ja*zFU%fc;tpk->%Y?L(v>P0^5jXiaCRFdQjw zRH2|#`@9Ujw#MA~G=&TO+4h$)5L8y-oZJfV6-*JYy>cMr!3 zIN8wceRidw!pV|;wfj2#>}~b-T8AMemHqn?^>4PTx6Y0ZotF+qW9&AR76w}F9!SVT z2k++&%rfzFBdjHk!3fyZ4iDPwUDaj8mFQk`3&P4L-B@%uX}1*Dv({{wxT8~>cQ4+{ z|L!o{rb^B&Xv3X~o`X;612p&hqSWSszJ?zEzx>Mq@kwxKZjiGx$>MPX*@}$*M0338 zwx49S8C9YGi?JTBX2$~FBkD0#j22|HvLg-2KO4@ZvXOY<0*u`CLdCM=xcG`Vsu$V( z+iRKVwF<(wf-rpb2HenX#aOVXikfu&1WKuDH&)&uZmC=&o+|3hQgRj%0O|PPT*raa z468VbqwFa3QKiW>>WE>fj}TPP*5GSJK!k#sDfF@SYiaT*>#o8hwX41IZtby;36Hxh zwG%Hu9*-$_yeY#j7RsQRC~)#oxSH3~xd-WV+MV6OYcR=Jv7Xnc@`AzqiF{b?!Bix*2C2`UPU)#D1n@RrY6;2!Vf${03_ zJDf;r%ph*mIS4G=*Hk(k&{6-MxJGfaBG6gf^GfY8q1$}=K1MZG@sR>({2_qGd#**W zBX9Ds0NA8-Ux29M`>A+E2Q|^-66T)0YA8DQ$Mp}Gk^=SX#Beto`&_dEdUAZEH3De5 zlCzVIoITbTa#l#%{v6j~Pv00%dPy>ODN+G7eveDZ5!Y?H8sDNEsh!i;>zGvHl6baH zFM%_7qjRn79H1b{-?G_4ucvY%~Qa+n0q%@+q-+VnenXEzCnrD)e zQ;#JVr$#3yZvjxZCy9rLJ2Ua0%D$i?d0$+DsY_uAJCqF?6RcN6u;~5g(QM~;3~I53MN>S8r&!k%Pfw_BE{4(=deA=#xU zM=+QUBMd&>VtYMD23`q!{X@cO%+f(NNrh_}17KZgn|DI z^vqX0;?sj5TPOPT$-7klY>0@6m}_EHvj^>-$@l=1odYgKpiDjC(~Gs- zW!v?jaJm1O>)!Yt=8u_P8P*d*!%fP?IAK=R|`aQyzZwvu)kA-&{h&@b7z7-8-2Y||37MeldelDyY zmbGjX^A48E9=kw6BJ30pBaI5`*GLTwnqQqYlfH=3WROKyx;A(+$PN&`_f8xYIzhEo zeXbII1=(p`ovd_)>xan4LaGdafYyf4Y>Pf#2I1ke>v5e8?jqf~XDSk@c&XIfrEgWV zGnl|N>e}P7qlv`qV|8Rv{X26b5k#Wqhm~E6YD2Nc>{N?eTN(PH-qa<@L-yTXn)Zll zX6>mHzCW39JmXN$pw!+3NVCu>&;l{!ThRen<*p3&1Q6f1mo)ut;*vAG; z)>UGPlm)wLK1SoR0NvM8Ztl61^apmC$w487AYE(ORM^SFwR~5!mXg9oy}VJtu7oOK zu1^BiPOtOF&*Cp|Q|nU-T<9w6u?E3%t-?>NA*2s%{i!^KWl_k(2h=Hk4ZN5sB9HUR za!6f0o^djOl}}o^%1ghjSz{29DGg0_gRWp*#;${{Gs2ork=j!a{6f1e&dFie7e>RLj|tvPq96?f zUTnaF88CW8qDU|4Hc+u~Hd6Ez)waRT&l*_e9#FxYzC63XLP1X^F`6@H`B9kvM&0C~ zCbJbto)OCayE0bkoLPPZ7KG6NF~PJ-WbN2qI3tHA>`fV64r7ZmIn5nr`+BH-uh!gt zMsP$UXp-inGPHvUwvf$GEcidR8Xi>km&`9tI%!AtmxSExbqSD4yL2G5SBGMAj+A-F)JI(*yN>+iY!Da* zaak~k)oc+(X`C|4A2!9K^@}6hsy%(Z{3Jhoi9R(rSCM$oqcQn>fio;49heAxQ0S*k z{zPj&*fO%RKQaS0)|j*HXrEY$CkNyZi%249pAQsZkzZn`?AIkw90P1T>&u7x#N+*V z`KC2H*^z${30wrF|55bk%%zbmo-hb|Ubg(-vo8GQWLph~*!E-wEj^lcp~6 z>8ziqki~$-a~PW__DZBZe2Yl9eU9w9X_IVvv&@gv59ws|GdbL~g}W5kPNh(b z_*JV+ejpXsh00lrW<^6*__P@n@vQrs(JKnq<;Vx8pXimzUhHEpuS6dUEj^a&L)4P& zLfp1cx;6CS#N1ayI%M}{%ss8^?lZ{M?8SOtqZeDEs+)9!f2@9(JDF85S^r8#2g~nn zFT>!dSoGx^eyli~ANzyx{um3tI1lD$hLWS0Uz13ZVe`5@zSeyjH{{^M{x$kBb`Wkq z?jw|epI=TxOZVNz1oz=w8{Z3UOd!N`Xyd>7+QxmkHh!LKV{>TZjlQ)}>u%4r@tfRO zHib5>$H}Pop#(QCh#S*^hd9+w$oivZYEsOp_%2QZec7dgY_mU=v`7)bkOzMs&u4@d zEjwws3^yt+5sixmyMav@56G$?T6n}3Uv6u<$5%&d96_7i5)o3R_ShBtkw#F3Bq zTC(qK3#D5_A5P5mH-i30St)zXeFf;Z7wi2|YNsWxsv9`(sO<>)AK3@=Kf9OZE`W+4w%eC=rXya(&9;edlfM zgl&J4o$#$3`0U7m&%X!o`BWcw!oTI3*qMXkr$Q4?^$m(AxPQsD@pP_@PlY!Ay>D&Q zx=-fXcs@6j4}~_q-N&7v>RorjD}CMxxx7F*4(UdA0>PG`5w;U_sht4r@$MhnB-nYY zZa7L{Yt1`~Poj)bC=M zOWeC`)Z@C28vORCI2SU83fFxhPxYmBe!IBt54qD-{N_GSgSWr^(_rhL?=<*Bc(;J+ zw(jLLI6Lse-A;qw-3LE>Qy(aHt)1Ee(f?WCAvq0h2|VQMed9wXIGx%;8@~>1K=p43 zZCuwkJT<|NVWEv1bGYtT0Z-l5w>E0s|KxDp9XVY0)6mAfeZ+OD-WAvF=rgYCc^Z70 zO;B(e6l<*0V3L^kf_v?O5857hDZd9k^cTAaX8!s1fKKmW58U#$_P`ta*aHvuX%F0- zgWv0OaPww>n_K!w?thyDy?5on_m`oGclQl^C%9ka+IVlSjUR+I-q*J_YTfs9ZG0#< zl;=Ym5BG5ksCw5e@P$5afu7|4<6XBvU2Y2m+V_1loquz*@BK#m9yHn~YJWyV|H?25 zg5H11P$SAJG}Wj83k9l2L^t-NszCDu1;7UPc>M(HW>eEB^y59ro#ZH=%%S>34p_jsAocVTwQ0T8x3s-`phcv`N0V|DG)Kn}w^&{X@pN-L`>Za0LdQ87WbE+X-%K zoAh6L68LhSOmJVwRS%3dg~&;Bg@JR%7K4*8(o^&_knOT4Px~5zS+@FdGDqBDRx&jhIuo-r>uZf8NzJ&~mhM5E5v zBEzG2rav-Y%nKDb6Gb(~Z}Wq<`q~rit%H;97Le#*_Ztu>D(#8VSCcbVqIU%PHwaM@ zXl!hOxVSG;fur58fL5u26K+c&?g+bn7Kr;l^^HL|#{D$cMn`Dln56q|XyXHYZR0z+ zHXh2g@gJd$PxP&gquq14Ha?RZ%NIi%PxeV*R^e2gyd1~Q)TFS%67K7*`zbC)6Rrdj zM-t4TVlld1(*9Mr0ZsnMi5@h$X1h3rrc{(e^)@-(H2xT z6b3mmg%jQTb8Q5{FsQ56J(j~~LA)0?Ji&b`hZBR;jwch`OS$Sn3`b$Ddp1`XQ4vdNFRonqq{6wmgEovJ-H zUq)3SYFSX|vCQpf`x@@_JH~#4eZ|3UD~ifW_XDwxXe4wftr!0_|KbxH=hOA0i{izGOu1!IDz8@$3zUh5m&&et5R9+V(3OT*6 zY1Afp(|C~?V3u_+I^q1|MgUp`^`Wbm#zRz@J?NqMeNC!)J+{H`uj2PsJ{*qNzbA7; zknjH9L|5|9`&b|@h3GUTg8}G@ru`9H(t#57Ax*z7+ z_~+0DQi~Tu8$0?mlv1nS^_cTyp9y)-W6mdykh@DadyJM!Ma8Fxo^w_2r(m^aO5h^_ z-|8s6;&)qL_}e3FA7mCv+zt`8l@UL_B>aL{-^kI9aLQ&fBA)y!IrBVWu5@w>b@hJB802X-AszKAwEOBu7VX=CToJh=2*+OdJ(RxtOm3aFtUfAzoL=Bqd5Uu}&E+E&* z)czDFHSTl@3{p=$2w_M`^r}Aim+mkB{NYdKaohuAjk1rxXxOpScAK7G0 zf=G0g6DWL13C3KppkOBVrz`yo^qw@r4Ya7g=G+zM}ewzb@VC2M;39ciz2El5H!derUht&;cNGwc= zo6jds*pJx+ax&Mk0#i8WPnGDS*+mjN(i^U4Xi_}jb3InOVtI6svo85gRLz|;-=aQkBV(WkH z81vEi7$fNxti)yzNDOoZo31qZeY5sW|Hgjs!+DPx){-5nU*6ApJ@^Gf&nIG_8OT+Zh6aRbj= z(tCDB$3p$uKhAkC0C$ob#bOwnF(g{YxW_mah9^O|!jog{6cY-Aw1mQ=?Sv8vgZKk5 zt&L3iUZ>%3+@aDR+0X6pFPMu=;Y+o_MWr$^2pt0Rf`<;W$zS!uu0_1j z!Gy23EH~~z3AvSq5lJ|np~+=N%PIS4K_`~QXyUT%nq8%=N@r4=@E!(B603uJI5rz{ zq}UQU_M{GzCy%~*Iac`bH{r+dJd7HtX88Bp3c#Z!+&>#K4R{EUP%K$i#>Bj3%(eU+ zg3r*49CFKj$wlN^dY5Jyca`T9Q!Kd|Tk53y->X@CqNNj*m)Q)9eK+mjs=)CqcKDC> z@V;VCguDf*C*c~kxgFNw>Ex{z*Zhq_0| z&2z~0D$ZEBu;y55>sMT-(po3n)1VbT9z?%C3_NIGY$eCJPr`<2>5M+Rmq zbKfrMi#3<~V6KH9gceBV_1@6JPx{uvy}1^CnQP%)p@skHQwx5ayDitoo4IjZAKKVd z8d(VwY^1BvbfJ}S+Nt`{SwCL>a6#<*Zg5b+mWXWmzrn(WGe!&nk(IEZ$ZTMce5Vp% z-i*8+@y3J&#(R+KOoFApqg`C9yNwtWIPu6(U!+p%1ZAiX_qNe3tJMpZiC_>lq!JjE zys_|pPyHT0N?uc=0UOE9MkiA{EEU z$eyRl*ySO|<;*_-OPe#VDfm1opKK8D@96Xm`+_6HcDL0ph8lfmKXvlGadu&J#qG5(c zh!rD$*=l#))ns;Iyu;ef|0(TWXQ~#v+n6fm=_g_?^7FKrBjGTfX=*nai^N=SwYeUh zyn_XKfpNN5Kt;L9WUi8AX3+%Nsq!~nTI}ouZCASA+4D^{;p9&X>Y*XlqMZ+(B1B2R zP56bl?~=4Eol!J~L&2Xvct=PmZcAr2Sj3coj`qS^ZDM{SqI9SAha3_AZxi?KC$Cx$ zb5-I#GAI&A#EL?s?vhx3mW^G88D@TUQ={`pehJ&88gex@>E19r-yY@L_-`X5SAp(> z6U{0E;0pJ3Vq{mj9sRbOruW~jOjOeX%la*%UhI8GhaFCyy6T;UJD9d@N7r+~uGAhM zo^-W);$6FnUAx6@hJykMHf`}i1N|svxaqm^kwzu_sb~8s_j#1fQ+9%Lrub7K(kCzF zQit+#J)XL3u0Lh5N-{i6_^D_6Qzu!4>D(R4##Q>ngWVg1?>^c6BN;~zHA3+!XM*m; zX5V_oU4Dl92aF634RZJ2(FoKgeeqt!9g+B;ZkIpZ{hk$!Uc5D+_ddQTm0I-TJ#XX1 z8E%)oD7pLlqxUWgJ?%k6^48J2{2A^=y|>Jt(Q1=5KbE_HenW3^_kB|mT5+Eu^EW*1 z5E#zAAlzv}xF^R5H|SILf^Y%U5Klhf+fORifSA6(y*_4$b<7PQODci~s-RK2S-?VBypItGTc&zuU) zy8B9Xnvbk?x3lTRsf?pNH?Sjui`@Y(zD#xGOygjDy8s1J*g~NA9TaDryWz6F0L6d5 zqbE@8&Bv{9J!{=f#A6Psj`rL<{x;0xt$kaI3GO$!wYWXEp1%lf+|$=Kex7UNzFZsM z4{f}^Z*8EE%(e01+*rOI+W2@MVM5ir!o(N<2$*;nn7|06r5+ioE9>-&3_gyQpo(-P z2ZJ2QQzMER^ICUyXP{m;<|_?#Ge*i-tcX9e+!LLCoTRmQdKx%k;v1uw7rR2!Hw~IT zyjN(76~#g^&-DULd$SMh3QZ5?py@lb5fo=zDFegoen%fMOh>MbpN2NTFn5GD_Vl%l zEx9&+m22b1(8eG7)4Y$#*3%AXLxbSGJoo1I^1UL;N*6@ zOt>eahPtvdC-mY-yvv{F9#;>T!B%@)hg&4Gr-u>n1y{^FC zo7em^9_GF*Kjz>Tf@K1RS#!#YxoDb!f@E8;Y#<7^@&dR zd{LtP{Py~qdVj3@Dw+ru>5G?fNRfKE^qW$1wD}=({IHb_?rfQ(9SZqrF#RWTl(r@v zWBe4(Fhs_X8wX+2DJBXc5!e+@)A+kYt4GjF?6aeljJPv7OF5gRs8Fu%4=Tx{CBu}` zl8nWbQ$cyW|3-m!7A_O5cyUKShV9p27)>BYEB#$U9Qp{SLMg(70Y;q4W?rO@+!D0b zRIWDGvqHH#4K&GOM&9?Kz;9v=iOep?)OwnJi6D2TNbN?9tfS`*A^o>3jB-PoNDA=o zL;8?UoExeJT`1=#(w4r5=|KP5&oPue(C^|(^&d+om!QnM-&~a%Xd}AWwMPY;y{qll zk0^Pgvy?d3P@mkB=-1DU6iW+iCT4}=gtR#X04|2vrU`m|lS@biygL?lW(3L$k!;AC z{3JhSlP|s0k7@QJPhr7Q!z}ROkcqy6QxTfJA?VODU+_cbOWIy49UfWNC1E7tU8>XKTjkjtRAF!utyv6Yev8otMws zybMwfoRERP37F-pItrkL0ZV(Tm~gSNI!I9WzAjx&3H67rA8@4s~aKQXmIXvy--IJ|D>rVe=JWq+-H=K#3mhk zh;Be0&H9nE{m}fZ`@}*5hz|O2?u$No5p9JW;I&G7eW{{Z4yZ?e40xDXh0@b!{>P8r zV52BbqEt|1t75uSpA5sj#cW*wkOh`}BT?9bPzEOR7NeQSVVZPJ8${i-anP;YaDdu3bquqFD% zRf%PySMJd(_rsXzVJBlE_aU>?!FEv-yyNe`|EK5Sqn{Hdx$~Mt9s397rWn90N*BNH z-Y8i5qXUpJxNPw|czCua;XH}%Z`)g<`*)m|EGnueY5hNvUj9mcKf|w*-Ye0)CAY8m z6*Y=3QC|Bhm6g(@dyYT-#_LZDPyIHs+55#xZof<)yk1wk^=BllCAuZD&*!jzGVbyn zvT=d=iKt`XhulDsJ5L1Z5j<7Y?o3iC&pq*Uqg&U6HC@O9>yr-{w$(4wLmt>Fv1f$T zG+?oCpP0p z1BsOm_ia&j$W2TP!Ob;Df>$XcH8BRS4d2k}mHL#}`#beId8%R_5Xvon5R~Pr%Cl`u; zZcsb42~ggjdzP+I)YvrC0>QJ6F{o!E3-lo}KvyfP%nCri3lW8Zg7pq7X6*v1_^e)@OUhH#!%D0C8#4q~3esMwcqWh%8 z19a>~Th6M-#3#p~F_!^~nTBCv)h~n3B))V07mpUU1g)UC!^F8#XkW}|9-^(3DW ztB8$hxioKt%lFBu_{|A?s((VSd`^GzDE3q^DRN}~d=wNL@N6EPo<&*mJ)qs> zNM1`4D>q$Sv@KfqpBg%?G}{=u-zi)Zxk_;RahATq{rfddelUI#k=w*pPQ80`oA?AT zba9)29m+)5YL5Ib(so*xt*7jgu`D}}OY&jKf(Bb*j?AoyjIWiDTVjE%z0K#P6O@6M z%wqfyDpYzlgw>=8cgZN!kOZC32}F2NQSt|oEs|U6lU%@RLIH7v{QcFS5JP!j&-;>w z03+;ij^I_fBaT*V=d#oNH z3q0I?sj$Nq4WLdf#MbS-Ca&HHwNZZd@(HWnG*7Xw>yy znjPc1Hv7pxN26|3_r7Wl%ltfbwnGEY=Ze-cW93=G_8P!tn%uzR*h}tWUWEtUWg#I) z;yrPmm2#JD_hYVMa!7{QZLa4AS}|*W&ku1f)R&bnf&EC^OhtR)3>QqryK?ipFrMEL zTYT01e#92?>FLyMYuIHVCXFHGd1{(+<18{DB|qYb6QKUWF4dMY2MR87Q*xdkaXkA% z4+iVOj8J@zA8{gvA}X%3ob?;`aOq0(0GY_I{gSwEQFkydDV$j-j<8bUfG?xr3w-$r z22h{5oK+J2afo0tZVe|408$%DzoVny@zJk(t#VBD?N_Fgx<8~_dHg*7joXn;v+C=R zrC*uo>sN9a{R#^g{02Z5f@Sz@2};DI9K52Qpa-2s^yC`Y~7tdILK)$~c(m;xFv70^+k3g}l%K3{wb z@+q&wGT=uphl0GE%OUVLScqr}cn!|gy_1}u^`M#oemH2r9k4lc_5{qW6KJDE!%e8` z2hZ_-jvsP@-i`Q_woC@^M^{5f-9Lw!s*+rqZhxCmq}}_k6-3Fq^gS3WYX=r29v0WIaIRaheDd;$QC>HLGX8z-!MxME_iN_J)F)sBYt*x@4}wX4%D;DX!HD@&ql`Yo!9f( zsQB5rJ)ez^pPke5*+F`?k?++PJTo7O&3-@y1363w$_-RlvX=^DR6#vnxR(m!;|lZk zQei^;i8%!o$SkRO#5*#~)$D?2h5b8PFQ3cjPqzyACLK*uXE#^GLuVcv#PO>17?oxe zw32&zf}TFXQ?^iUjdM@y;&-R^d|FBFSbY86`GUU3X+gd zW2g4*(zu{qj7u^2(~TTUaAeaEp_L`C`VZtv45^2JV8(gI6Cy)+-^q^3)5n`~sUtMjhsnyjeG9&+|i8Lc18k zn^zX2V`Ba^Tp7j{^QOC}UxL>c6WS}`4^i%`H+b14+x55jAk)9_6Dederu}gpa5}Mp)06pR%F5}~D?3Q^mNWL)Satf!e$<&LVf6T~926h(t3F!q3VoeMB zUqPUdaa$s$R6FHQ>PEhAS0_MfvHO*)V?Mn5&DFD#XX|`k=%5e8-C7877@Hxwk+2`i zhGm8l(QD8*QdpIQ*4Jy75T2-b)&!e0wOpDcy)N7g^-A7s(nsgDJJ&ctFu(O{10fyzgE=Z2nyR+^+lLTkJYkBX!8$mO~l( z{xlqEL{0YULT zb7g0@-S%=Jt{9fX6~Yn1724yt91jh+LcyDcN4R2`5u`k>I1nHoy2+0UxI#y9ZEYRd z3xDHsk@Xl?+`Rv|;un7$uCVQo`c}KG2d;>5L)eQ`BI?X^sCJHaM|(ednxoxT+>>^{ zHLeJ|n`zV+m^=OCaYamVW87emHI1sKskYzzefRn?g^udyaK*iU#}!>@^4~J909Ak# zcCq&G4>gKe3sQL3l{>p3g&RB!#8zT=z(8yW%mb)JVk1c`IHeHrSQr5|QvfJ9A0l)x zIFAkngAS_U34{*vtU|;h#H>P&g^1K)f=TzCE4s1{driNX<}BZpb-1UX-+p+6%q;3b z=(|2I8>Y~A`>6UpTzwyw@B4wAz=qxL58UKOV}wLOW9FXDJO30my!T~-`1v;e(KmAC5Qd{jW;1!`PL%=MTZu87qR|Gu! zEfH}3fMcKeQ)1ptIa8axVcPx0ysv7mHRcd6)UM*Qk+`&r_r|4_x$hBQ9-{w&Yr1FR zVbkUhNJ3@J;e+Si`|X?%x*vBp zrlj$2TwZui_$|_qLYczbU<`g+*!__?#(+r=-Ph+vVe1@b-#Ve$AF0_Nk)Qn$Fg3#o z+7+0Zi0b=;1NG1S#^q8|#$3UF?SJ2IqZtl#c~VNuBaw>K1pC{amf9hr2Q7^gzy=aF zJ12NB${P`42Co+3>a0|~*S&$ET?iC)!Gu`Fknl>Eg%S^|!bBN0kBDb{iotx$-i(?S zyzb+^d;M;-R&cEr+_tx%rK%t~XqSJI66WLpVJdas=DUn~m7rAX~yeI!34|h05F;=95+Gwp=4~ z!m} z_^I|wL|*;Q^2gfk%#ba@=nD#n3CqYv%V<4EYdur7#A@A;Tpb7Md+6GFtT{{> z+UUz)lpA6tR>Cp>!g7q)5S})w58h4cx&H8yfcaCXc+8r?{X*MdkjmtoR*iESwzcWx zZmow;XZ=LEj`Q?)L?n$FBf7X(zDO=h{du(#eeEPF-av;6CvYCpmz_FwRc1DAl1%I= zMahNtpkrzG6W>l8*m228K0OC*Qg!lCpPtM8Su#e|X|(z=4HN&iDtBox?26>k?iRX_ zyCc0tbFNK_I%=8ep|GkV7&{Wkf$rvhdTFcs^_5{}K5apMu^4MC|aFt2CRa4E!5ZP zkz8ZbK)mJ&YV)(JWO#J9tH*Ck-*eefW~c8iR}w_5IRMkhCUz;keeJ4IYU2)vH=X-A zfX?nQlWp@6oU8umBdhQvC19+h#|ohg4Aym+cSxlHkT9{}@>#WQ_NjVlZuHDBH|s9T zzF_ho`@ZToy7KAa$<0>(f;}v5a+h`KON+1G7JY)X)2DHLPF0zPaI|jm-^>YunZ|tZdxSkiC3;W6|=}tJkeqo?X|{kZoQW)oNaw zZCKy3uBmx-V?(xR!PEsa8|F-GIBnX}hUS%*6|}Ts-P#R}E!l>~4UKEFt&Q1+?7D_E zZL71*>sL2k7T!B;`jUpJix)3!XjnLZ+T4b-X3ksOFm3+a1r5`tE@+rLb=Lfa1?@Gp zG&VL&S7VDB3%@(nzT3REXnP)C$X?Xa(7L{H zMcjFHV)3#C)1#h*KAbggalxlov@|ZyHs(eWwY_L@!_0Y$@{KQAHZ51Mp06}6U)iv3 z?F!9OYj$}{)aU$|r=4}$)G+4L7oOH|+RV8P^`YfyixxI4I%`_KW#)I$;<@?zRhrFc z7|l)1D~ebT#?!o}vFNnR*Dhbvykcrg%ksX(O>$A=4*2V)`GJRUZq6Ib|trx9p$&TXnqP5KpG~d|L zs?M}5Z@Ii^ZR3V8=}V_BoL6+w>V~G~wGni*W*gS7ZeDvyk-&XjQ^ShYjmy_Iu8fA% zT9jRvrH^_Tz_+NSaTOhCr3cJqwy}kV8fbANy=`o`xRt(XL$J^-*>#r`wJvXHZCc$qjcv*H$;|6{=M&B-KSTwC+?)16y7cOg9 zuyFq3>C+a^oIlS>r=NM&%q0!e=1g6*h}}_dWm6X|n>X!@h4bglKWkCL%=uOZh|Qcf zJ-%DGc+t$$^Yu?#GINpIo;hzus6A);lIe4fVgpZ|b_SbZ(W3d&irTWRfDyyFyp?U- z6#8@~{h2x6T3P{GxP-Z23L6{Nt}Du}S>Ld}v88DZ^AIMiA-nuS=3@i}7zUc2KruIs3`F z2F74|X3U&3ePP3l=~EYmJyR@yjg(cm%uH}+dE$iCWvm|`? zj73w~Ow?c0Fn!^|`3sqdB~$0jJPpKi+VqA+%jTXse@;UU5lL zi>^dRTHDsIXN$5BO>JveG_YMjDNL?9%^-92*00;x*peeGVFs43SkcIy$<+bztZM%4WTr_uP!|4moYB+Vye8#k3+RW(sSgk;9dg^Ly!&7Q$5P#Z{R2utS9 zn0nTn#Zkoo3a6g6Xju^;wWy)~bSf^Hx^U)Hsy57>dDMgn4W~_AJhfr|S&JKv4KJ}h z8x~AG9dHS6FPy$;`obklsP$>a(x^*Irm=6AuK}ep7i+T{K#D7&2I~R<=bpq179#-G zOr50}pmOf?Mf%FL*+n#@c5G&Bu2w8((-n28y>QWS$M8yAS9D_4`Zf?Yki4QbP=WPD z;O7?5(f>!;n}AuCl~tmriW16#f<#10oT3#Ol&Xr%8fg(S#>^mNxZE3&12*1_If9I- z;zs09iY6*p`e-|~Z7s2pQcwZAH6PCbr#5+lmcCZ=sohP>Q`2XwI6-NP!$YChTL0Sn z3=vV~iw`Oz{>ygG#W zADU|8iSemCNPH-NB@b_Ga%@`N;f4;`$_`ot7n$GOB}2`l>TS+rT_P{tJ6qZ<4Sc9>zd)+y#DX2S`O$-ZsVsQgk zA)3I$w>H<-AYQw@`B|{DQcqgj+&l-Cf=;X)KzJ6DvpcKj7l-&l1*GaMgctU9+_b*Z z-C3K{C#ZBIwkFBF9dA>r2cZ&;PfZ?!k}zCs%|Z-{gGn|v+tpR4u}P>-YBvOKcf1{< za&G8?OM0N_g>sMkI#A$is;6IIXM{9Ha^q>=cBvTEBp!5?Ra_z zTnlSbdJ*Lh1bcUG?VRQx8p*;YRxdtsXa$(vigvUG;aQLgLPPNNIVcYsx?y2)X%;$g z(kj+xFG|UP1`=WuJz~P6Yy7eShEZ2I=2sTy&uN8Wc-`(2zR_}z8X5lB#he_zA7VMw zb4*cEJT{?;7juhviPen-Xx~`a39)b&!_Z{&3VX&Z%{+b-`P9~j$ zAI4Gz%W`K0%W{sQM-5L8cJAwrjkoSO(w!O|y$7}h^qJFBt&z#@Q2R^^YIXj*Ju)yp zJqC8w#ofCX@l|&4k-IC{ireQ`u>}h(h1rV*H?1uZDuLLNtMixeMX2xcKRu{eORE=) zt=-;=G>-F7XS*9c=pLbQc=7bQlIz8mrb{Nzy810N`TUISkz?KVSWEv-w+C92Q|KGq zX?}5QM|y~4EqQs|vQu1`J-;X&rrTQvpAa_-IiC2s|H4Z=w7a;w2(_RGPP4pCT^kxn z_Yyw(ldC2J?PD_&5MAsE?}TlFow+#MTP)5&6J1;j!2*^J;W&2*3hCz35m0u==-jq*SfJ;+ix)W|RESHxgPMq* zLJbRoR_uP@wd2;(y5l3q28N*1PTULGIdo#gxY*PZpaGdES~j1r3n~WqV)}B0G!r$(e~HwQ@(j z-8su9%|b~BzX*F^4$pA!p;3U-No5F4Lkd9F3Py*fU`TeSPL8xk$EQw(dO*(I0s#{O z#k+fa?AYWFur5lvup%j+EONo3cC{&c1qEVsxVu4d z0?i3%j4bb>w*>=bXDKd&xnTQi*u}!)+^!Ay(V6k?5cVCx8I5ate6Tw`uD|2G@q}4e zD`8?c#~xaUsw=T{iTJj4lmm zM)>GZSUPK)lS1ltLkG+@}7-YjEH0)_{ z!4&7L2z`P*7`pHdtl-`PaFx(Cum~0}f`4}dw7?<^#R8g3T607uF#B_xJ;EnYD`lVa zt}gKgAvkNZPyn>-@U>>Q@y%i3R^;*Np&2mlc1L&v2CzB*idS@d(0q*mOpZ*S!Xg0E zNfMh=jyHt>x&#D;YL5gt$&$f97w5V6C93OEegn451)9kVo1r)y>9z(t-GL$TOg$qj z3Nw>qfp$O(fh?pRqIVHDDlR^FzxWF{1Fb{o0-KnrZJ0g1~>c#Zuffp zWqtMyOKXshfT=yYyV^bBNR>1xgOsJbp}?h@J2&1rE{chJ0x zx=yZ%-!L9L3yYP%LTu|R@xwLjXWHH)Lqo78DKa}VgC~;>J~IgmvyJT{5f>KI z#bqoXJe?~Yx*kQB0K%n^KXotxOqJY;LWbK!k7}Cv_w{%CyOUF`?)2&C0-LEvZIf$x zt1)1jqeu2A53(J@)W)!29OXe~nYcB-3LR@>;lkRZBq);2U3N zV;*)AM^Ck*p+iVFkg28{dY9I` zCI~=+^+D>w=v;s~emIZfQlZzP*bW^H<1e6fK`keM15hFf+WNS6*XJSOVIPw}c>q=( zW+q2YxA1*oZU|ng*y=TmzOhx4RUkriD|@CM9SPY+j&hctvQC0Zss#iX9nO?I3{7 z5j==JSs69yFP;)P2-f!=2Y*1mB(1}}iw!`p= z_hJtr^P|VnR<`NYJj)bq>GWLrcmhaJE4*FuNmQY&;J#T>ia}E-;)q#X%zfa za*DukSf=U-z`d$ImXb93!w$wIt*%4QpcKGVK<_f>4>TW|4xoI1(Nz&#Zxzgci3ky$ z3)a~v8Fp|NL=NRtg5pA++urBH4j*|?wrvcQ40R693xc0?gYgylnIM9Iqr>-sx0#*m z!RJEbZ+8b6g!~bhTD&WzFX53jK6$6W@`YJ0tswbiU=322#b9A(CGDoz)tu5^2aMJp zX^m$uf=ritVO7y(Fg`X3^%t-();I01?zxqRrB%r2&!7RY%wrSN#q2UXPsy=Zn)6)i zTD5DN@JOygEh$wAX&6;iVsmL>_7ZhvEM)?1S^-!h0qSUFKqPlpXj;gk?~H|5CXyq< z;ORo&FigsDD_}O^^B@#CwK20nb~?SexrS~_;}cUY79=!RPnFCC!=jko+1^~E7YrZ< zY$fj415Dx80N4>Uz_uI)RQ-0{A>&0TzG>WiyOHW{E8Y433DVRcZBhXPI=3BE&)11}VJ z!VKJygyBomRuoR95mtN+Ba_1b(XloY?`7 z^w`kAcyuxcg?4FmagBqi+(`vsk3g<#0bDChS-V%XltV4;S6Czq*v8q6CGScKc*6@Z zF>!omFa}?`COQ+7K`O2J>`~~CE3H#)dizH4A4uSPhPyD^#&>W-@mHOq0EaNL4(C zJekpncWdRU7QrS!JlH>wOS>Lb`R03}i_Sy=3mCan-0ERY)b<@sW(5O)j3!D0~_ zmSnIX-8x{8t&aJC8&eSjPa;~$F0)=hDV*N{a_P8z6_rsZhKU7EPzmeVi2IJhC@7Q- zNmJ}jA17x=sKZoyV0a8-m|n)VWb2IJ6be@w+Pg5p&8142J&l_uI%?e-YXN0Pk4L&g zrHPNf>&|~kA2u6+S}AA$@W?n^pL`61LnsIs=8&HOh#Y|iGZ>eBt859@%-A6sdh4@W zYP+-rliJpB1+#;{ffpcb!pR@31%Ix0cekMB0V}sumDVKDJvEMt+oY}@KwYnC~!km>Co0wz=l?4 z;cX}_yJY>uYLsFJry)e00$8FUEyRRmhM`DK*WlM7wP1XuE3&udE<_jN3s$IcvoQ}% zcpl3^E_e7_dvtO(p9mWSVwL7`2qQ4)@Tqqu5Jy21lrD#w=%x*^Rh-{k+X1`Y(_zW2 zArLC|_TZ@!kLF5A79u<#=_!mNG0GgaYL-p3GPszCHORKvBZ7deW+N|zOsf^3f#29d zg;F1qZ*zBf1&T6EW8%P7SuxU%coKz$jSL?fNf)D6`s8D4(gvb$etGF)Y22cF0Oj)v zi0N+btiURU0s)O-p7`jcG;3Yl1RM@nw!$LWn1@*nIROs;UAv0yejRM2ICe3hZl-*Q#G*=<{xA_ZGY^t62Qj;;gy};-9Zo^%#M`{3*FsP zLUiTR-bDZv1J$|&79yf7+tZ6{vsf`$?6m_q>%A>n7YOBB6?jbVb{*K==v_eUi*VhFnOGvu+tMNd^-`InaXh-Y zjlD7p-wg!&CRi_Qt7S6JuH}!T&gu(Wmg3?5Vg=!RhE+2p8sY+LcN3<_+%9DYd^NDV zsvg;-q{}H;EUbwE|1*uk>8TU&p-R*Nu(T5u=76HqrUxd62M`)EqOsv6!5O^$XoX?V z07I?BbV2Qny)JV_X2`KNVIPIQ1=nX#lNg?$vCNPwaAd+lpE69Uj*Sx8@=OR`#*|~; zLKtO;6uXpmvwV11r6CYXkEFa7>G_V13K?~BXe44|2!0`~XFq%DEFENW(eb#z60j!&jGMvYIwQb2KtP82Jv%PVxKVNmO{+vf-{5>JMrMj!I#YGw3}^U|xy z$O^GAzp}dlhAth801sj3!;*`7O9)a1eOC=02JCEuxxq(Jk87fLfcO{un3v#btl!0p zwr>kUbb%hh91772W*bI$l5RbO`#^2?)Drv^cxe zFGvLHwPJ!I&jA25wVXabPCWG{$c!TN9`j{>U8Vak@%CbRO78d#BU>(3jaXF!-@+17*aMMaSV7C z;f(V|d#0nH)RFN~;uB;fft1qc3Go1A9ONV%1@~cPV{b}`h0P6)xTy&Im@}PQ>G(n82w)-_N4dHKY_bO-K3B$7Kt52* zJDWP;l!!L^XzN5H{>hAm9XfEY(%)dA$Eu3Cb{QN0c`Pj2OhiO_Q`Z5ETy4Vw>8>I zG-7-;yY2YkME6K`uw;`o&3m#1Ww+ba*$6eFfmV~jc=h%`r%t0>ejve>VY^!sO9}u) z=0zY9VepeH)@P$sG$5jwK*7BRYaqFXA|5)2X~(-e(7W4;;B*3b$lZyElN>CYqzTt! z$00yq)KzUD*kMm90Qqu=ABi@!1ZPj2I^0Q+U@)$Lswr^M!b)2+#og!+at-l@Qd)=s zlbgm9%)BXU`~-0DjpaTE7f1-QD|$gGdUwDi)J5=@FfXuPmQ$t|HK9fp7h({Hncp#- zATr1^1nR+BoR zlZR6me^qsZE5CKD!i;Np)zTep3%=Ab|yvgjr?*Lh!996?(Bh$y)-SCDuPigO1D2zAiA>PPVs@5)+(!ws%FXjZG&~N6z8UmIKrIG5D z;H^rt(!F+I;!>moS+U?FvZczTr4(eVfSi;C7g$bgsPGGB4`?XJ6uij^m|;|l(dsq& z7qPSybO@bOCKYt|WkRR0jhB|7lQKBESPA=1Y=92MKwBdq3Coth;DM3(RIy=?wV4Pr zaGLo9A*3r_Mk`+Q>>%f%Vg2TdkxPm}BQy(mrdVB>v6MXCDXvmNu)bJ$75W38ftn|=wa4HL za(FQC2&T@eA>35L>6R3hX)g}f*)}*1Ql=@X7*u*b0FwzJha)sNWwcdn=?V;xbBYmS z?ED+;SS{ChZl!gCg^4PSM_diWO*EUFJ{i{e@W?=0;k|%g8H z0}VrwqXWE;08HY3Qbf{r+|zM>xz2>$u$o9jfRuLHf(%8(X{|9ShvAIKM1dQXlMLqK zG-=&eg&>9i^jO2#-WHS_e<8%0sqQfpSn3e~4?of34nt}dHVNv^()@zEF@oDFssy6| z{S`T9^!+T#G7sBrPLVv>Hq}lkH4iyC%FdXpRNV{AQlckzyNJkd`GAtrXfs!W14j4- z#>-f($Uq3p;;IS}LFl166v%8|LC9eP$(H3V6C0^mbj~SSxkoQ49rIQ@OpYnTA{Vm- z@>&9~tH{j(^8}bAao-t%6aP5k50M$TvyHf9Sl~302Tpa7jEqbXs0xTfhPHwa$tyKm zy3+y&EKO)cC=VkKG&GS3u)cPdyj47*uv=YQ20(G9Yyo}dy=ru(2$m!{kNrs$vU;zLOqLEGKEg{3O z3+1s5IT6M_=CdL;B)80~mGlwOAR=cO&H$qBai|S@#AF$^TJNZXfUGg(6f+o^!ELrt z;~ko|d&8rMWj4Qp@VRc;&!gy_D~ zdzy1vLg?xa%|WCTNjC^k-A-g#WVa&s!MBD;=yghO_+0PtyJ={kTMNig2x|TDHq2Y9jEu`yVv8*nD ziCtoNS!xzzXrX!p!hJ{URI6LZ>QuHJ9z2#7j;;DM)6OWxR7CJ0m_#r>+*OMO%0i9M zW5o|z8lU7Z4UcY3Lczj`u7#P)jn)YQVvMlS<-SY+SolgM=1O@F70y*wQpJ%o$sd4B zzEac}ObsCtk0?7~%C~&UP#Om;hL_f0cJ`trywE8y7_nfBkUNlou-ag5koQ7pmJdn* zwZ_Sh56+9S8}PYCUqmk2MlKNRQT0i)b@th&u33^J6!R>bLI>b7g6ycavk;O@lbj^S zK_afA?ZJl=@=@$iyn%JH07!(kWOk24NZ6!cP!NhR-jRO_4i6ifudH|q7=Qt08}RUy zh6mQ-&rv=$gdyAp+R!B>=OV}lF>CybakjFC8}3!@KDA);C=bE}E4Af~ve4Dw2nFQ; zR8=^fc%|&$`7%8S^6;yQphTGAq-h5O7fW^w1W}I$(60y ztvWH~nN+ck01sLz9+s*MGGrH!T#DElT5H>zP{`?H4GT3d@AGA{?H-{=M2+lV40SzT zhpD7e1n;YG5WE869D%WQvp8f67eS=LBo_sSK@3XOD$1Y%^g~4+xlzz;sMV=itUXve zgt_yM*I&S=B?OiKV$qOfU1^C@k4;u+NliUrMpKGmc`@8pV)a=H!m9wlx;t`uXr!g` zG1+*lhTs6oL6w+cOP}nHWC0jS3VzvL0+#Vw5*%BNVj9zceJ1cI8imu-OhMfzKV@d} z#N^Z|s2?;Cp{=)$v>ft_#BoI=LI1%gVMt7h4ra#7rG1#LqCks?vFWFmL2)&qi&hzZ z7X7l2CHe{5Y$@_*X9tgs*Nd*4U$RYKN2RZLn5DfrKdnT0a?3!{`j}xt&aOquAR{0U zjE!IjTM*2~95X{}Fy}JVlBOH8L=kGKHsGk!4kKk12Ry?TP}`~;^jrvS#!8dd*gZMzq|8;ps)@wZXka({{zLyd9-5+gilLLB6f&gAGMWk@Q=*4YH>w|?ibCuS0mMwCWF0LD z-1SR(7Sq81EP!hSwt~u98zE=ul84Ts>1P&dR+Vg#QXwL5Vnma5oAhTaNkX{HW7k&D zC1#IfIUu?NB1$GIwhDe_{wiSDuv4)E%OHRd!)QgJyHAmaEXgCYg>a?f<-yH{rrYC{ zsuveSVnQsUei*iixTGLpz6edm6q_3+mox*Y*$}*&$byPe5EaZk>@#(mFlzx{PF&%x zVsg~hGIWaG_WTh6Px12F5OOHHHXS8HNc7ZIxF#95RMlf-f=Q2I6`Ib$*tFnh8NLmd z@x-Ztv1vr#xFA<4)ujkzR)C$9plj;9i6I3*8nRtwE`pDCN?bMryX3mYtWpK%_GupB=IvFsgtl4CER%5hKBnZmA0~5We<;|eV7=o7CBUP^m{IW6ukQ%t0 z0g=*NMPOAMF>DZ&65P6w$2mNT+6i)IC!?IIHueL6xCAI`{n{AK9;SL>D=^_?=t)w~z3W=r_+wfUeLM5_N z@@;s3E7`YUYwPP|0iU!3$w@>|GZI3-cTngd6@PG*DefS7Cgih{sb&A4?ns-jj4#TF z?HCz_8gX~#2B_8~qS9TX)~017B9LYQ+byS>fC%{z)@|F29L!jA3*}ITBXW6NH6^0U zdNI;iMnH++kt8NpJ_T0*CmLwgU}Pf4B3Dvl=Ts3DybwhUr3P=DJ6K;>ji>3=$rr^D zLv>q1G0ipO^}HS{m5NW+#3>5P4%DD>RiioBJeggMqP&iA&JjS6KAg#jU8H#Za~hEInVheGMfi`58a z3DG0n8E3F$xjSyT8+9WPlh5EMHAabuZ2O990Qn`4M{;HaCI|Yy#d=~uf>9U+|DC_6 z+7E-s?bd6=hm3*eFVAS>C~A3r6C#@Hu8IdIgV#b->sySQ6>pTNq;yI1M`)N7bsgUSp@hr?SkU7g!7O!z2rRr4B?TT_{cRP{=dY68Demjhp9KQRfAIHfJw(Ob%; znoL5B0Si7huI9=PX5l&Nm|Qw^Fc}iQoL#8aqA_NXg7u~~9qb67ff70RLI{g^I-#p- zjYt$g8)hIxU6!$GC8e3fXA(y?<83w9vm0~lcI~wrcdDADrC(KS+Jfb`&XBFR9h^6` z+~EIbFbG&<6USvmjugyR>4o!G_C$lQ5w+aP2{~bpd%08-p%xbqqwnVhIvd}xMj|v@ zD^k&EN0ADq2`mfY-DQM7w{(5%D5T7?mJ}Q3z#EgO8bfNW>Q#gF%&)*#2)UCXOc>ik z;}z30S-L5^(v>TBipkw|6a<@E630&Qgjq7^SrHXc>W?C3-zp%~4q`t=tkz^G&1PtK z4b1j+*!cKP(B>~O%7dCPoSq0LiEe1pRdP(KVlug_Z2B`k8x>|Ixh$n`Mw)0y9hwFe z%UO+2X4f+oGF^wWwND*;c7Cktsvh5$3&Wj<0TP zY|ir|GyPfBAj>-w{+^Xgq|v%YRP0R(PMT0vX{xnfjlrsmGfTp%K!dW%I6HyH%1OZZ zgl}W%LtZ1yXuf-KeI4Hbs`RF~J?NW}w?i`rn+vzVT*Mb(BxpNzrLB(5lcK~)zV zHlvnE&S6$f7HP(d+f&%)(~+iGi@t&qE6x*U>A>{JY1Cd#25?xTFiur@(P?b(RYpB1 z!bjQ8rldVRjX+O~wrX=L4w=A~qmlKM$WsJN;g<|jeHI0O8ZZ&!JCNH0wC8U|@EX%|2Nr zF4crZCqJ|7%g|?(K0w1=;mch}G$Ax_z)@-Dp5ra?_Ea z^iHp62~=&&238LIy&hksN#~409x+%F&g~Rq&2K^&j4vC}$6>cuLaU?(L^W~T#!4FY z15!l_S=F!{S-Gr@prbLMlagiiSmYtB$tmWF!2`U{wkB@MSzG6wC_{f2zfH5kIoM*LG1LeKVf zmf7`EMw)^Q%SWMcsHYuSV5Q;^&rLo0GRUOm$ZDubJ@d3}4 zXc&c$F_lGN{-)7w0O4@tOKz)KDJAzoR0le8WH=$fX)+0fkfW||7p3Tz5#!tkRuB)a z^jN~xBNIcdGpgb_KG0HOCNU!op@v*zC1S%-_)6wPm%;Rt#H>6Z`B6s)CdS6kFoc_< z+2k+5{J4LUkW}errnfmlS_v7bHw%EfB5NhZ8wV_KnDGHMs9>b9=m0$KtTKc1{4C@a zK!Lr&R7&x3PI?W{Ap~e~fjA?o5D5pEV{8!_FkykZ5Csxb4Hcr@j3Lk*6fT^gYi7jM zZ=@w0BUVIga(ux*Cc(=xM)%+AOrR)+ODhtL7t^NGN+7lr^@FkrPL3CdVf&3NOsU&#hE%sv05UfFj{M z1&Tac4Be%aBNMT(oJFi}7SCX(AvI zwdJ)mp`v3UMg<{TS1KYzy7cv(3!4vONutmeM~1J*l!GK%BWnr*O!`YLFGkX65FhJA z!Ig;`#z-BZ?U!Vj{>V}U8r04#k3bP8mJwcN?r?eU#d-h#1Iv;%Ina;74)}@kJZB$T zOV(N$+Pp^wP9pfxYT=l$@D#>ckLs}y$;M&b8nm|RMq<%rsL$bAWx*7HQ$bAeDRfI& zGe{Ef)W9gRj^JX3x6(E%^pIY0ZVA`}T&cljbSEsQ$cIJAhQ;&H-L-egW&LU50Yj5G zZD)ue^z=Y`Z!i?UX{FF_2;==jhKI*Gt?_{~fUb`rE+Hf^zh7PrMt zmKnoUnL!Cw%i(#A^DL533HuOFPJ}F48I8;n8c;%MkXgGKT8&$VM~BiaL10u5UZ5t2 zR#4@2tBn7p1+RGSlPpuDST38sj89`q4>vS2=v40koFOU{1=p9T3KO#-s!D^dajFJ- z1AIb;t~&&N#ux5E<%6zChAZa{ZL`uHYSBdlp6=LGRSz{L5lO*p$;JS(tc>7Fhw!Ko z4PBT!e35w{EEH@hMnqgvUQjCJWH>(YV33}IeV(H564m-`Ud+O^tOyh#`e4XR-xWsG zyeSFHhSxL-GO00Z8yiP1rCD;QVR8cHkYO2{2Y4z&cB-!3jO?aFXWQrTz#uI^hlmd(mo-A0zQRTE7eSUrvs_{5Pi$!~t zLm%->u$~bYmdZ(gBrLsx zt^|Y?tkg~ysNUVMQq5B+i^(GuL{x2FJFqFj)6}+7lK!8k2atUrmkdSlfpI{jA#;pc zhGIUXiZG{0I6Pz%&k*27V%JR@m?~bxU+8MXP1`|Sa|wW!&RB7higT7*)gU2v3T1SO z0!dC&@YRf9S#8MfM&e3{=q$+{j@p5KDE*eok}~0SHc5AmVHF{Fk=#v&P*xTW$(w6k z>{Ew2U(@!3B|1buXR;W}LD$Sg)+R#MLA&C^-78g3jGP%Btdo(civVKj0MwwnDu0}s zXaZ7^$1rDw6_U%=pUiMX4yv zl-IdTPG`fobe*qAwO!B-=E80FVl zRbBOh$y|~WLfswh^wiSIEqQm z4TSh6vl-r2#pHyoI=e=0!z%Rt@|ga4*h7-G#-3ehLuM>S49yN$YWaRnnF*VThw?Y|Jx797f2QfeF24$VTNieKT6RUx`43`|uN zIJ_eR6j31cM>#tH$~u%nl$Okf&cc#}aL1CTqu34`C~68G@N8&1_==&q>5M{`Aq2Qn zD=5tSfjrkLV5rZC;==CM@j{no+%TRQ2;?2M`4t9kxrov*dvLiyOB6@k8M4Ty77r$lw zs?ouLb{qIrDW5Tw_$+p1Rb=nJg(n#I&{a@VlwowfQzM93mCueNu{|Vk9hZio%S2lr z?iV0y3KgR8tR6l9ZlfbCcT zCybz627_4?CW6u{Rm9d-GtzS=aMUbYR(g}JyI;A9O0kWwp;`I@9;Cxb0Piv1wdHGr z13JM+r6QOsbGh!K$AtO{?K8!~7HnCF3g26fSCv4ZiKQ!h9w}SBejCF-!PgdrLV|At=Qs~SSf}{xWXiNDCiLl0U zQ7AGfe{to^AKLU*DXu;CN&%|mi~!i8<+*LpsbfBJ7%FW=h<v0Y~P93A_q-X1S9$xiM9w09iJ(E$tZ7;TOUEayEZuXOhDg5$H&H1c0pns z8dcR@-EE6HqvI*l<05m3<&Sv4a8#t|Xa*Em&?{JjL-}q@F4~|!IAWji*XjZf=Rtl3 zR$-4`%s|83UMey^CG1~8%m*Rg3p!yD=&0s`LR8<-8snUjpj zFk}@ykX=N3+MXPMCzZt_Ad7uSfYuC^OJcUw(#S}VkE6@UxfJRU6}67&7y;`Q)$Fd^ z)1JqsShE&%LBzykbxjORJH-n<$3CRjm3LOO0vGNPa7b7neAgNed0r@3UXTK4fl%*J zS*RIe!X{eH-k(H2X*SK}Lvn4A>Qe_0x>Z5}TCe=zQH&shkqm zCWD^@Jdrg|X}__a8Q35af0B2BTE_mUJYAl`8R|MrhZ@)r54Eb60rR5GxPr!o{q<0n zQOtO@c$`&|3`>+g=uD#f_{7+2i}NswA~3t*&6sHQr&O-|@_xg)-QFcS4d#I@$IweB zh=ci_vfiiFGFS7F?8SJ7Jy3 zx~nT1m2-?3BcF7XP?lV=3wa_q6o6MtI3%*n=sUTv-JLzZT)z?E$;8Oe5&FmJklK5^ z0uNt+3J3KtLf~jGds8Mnhq!I^$m8e?3Kj$S)HZdG15)JJN@MUm*|mbHn3`!Lo-Rar zpbH5K6_6e{@x|NomA~r9z8S4w!gcPU;p?i&kMK zipQ#`N_MCBm>h=cGWb9!(gfqLs)4AL@&`2e`X&%pO5C8bEF66O91rM0z#--VtV!Cg zjxn|%wz8u)g~T^(16<+_K+y0WfG02)3WP(foE*tios}t#sacL?r5ow@Lckn>i-A9~e z0Yg{oidD&S`7RzOysyu}7@8aojzpJxpjUgTQm?^*M>u=do&m!0kyT*Uge|XV11lH{ zYxJ>F_(wQ7);4GE$-Nupbfm(Paw^1O^A+`>rld7xK0Z4X-4Nu-6d-zQ#)b)v5@HJ8 zqQ37%pXHjs>yYN522zPiAqC`66$iToI=k^sMi^si%gWpKp13=3q#lc@@oR>x%py3~ zuE@8u*cQdO?8Jt4!Ri%~I%fWBvpi)bJ1C@7m2$q~tY_VTBm!yT8R{h_fr)51hmBNd zj|lMMoB55(bkNB8RyiDAx5!plQTQXe3u`umwL?@iw|K)Af{hZkk#q|`u#89#&IJDh|Au&p}%e;P=%?I687Q~W3 zXf&%p)yGu2>&(F&-IFS7g@7nWz>i`Dp2ku|IO(Ix-x(g!x?f&bQM!j*4M+)&Wr}j@ z!9!!Djfy7ZnMs_h!4SZt>8WX1_97fG9ohNMvzz2@Welh8$bs?0fc=VNlQVrohac!W zeE6>W?&|M5(tqUM{s#`fqVJ_`#OxiP-SLGx?|WI_o$EWh8;f7*V*~IfUFBbi@{V`j zfA5{=kM!NSoc=d;FvI}f7NQq1D?Yoo+b!KFrv{KKsV*cG zkYNVC3@)mJ%X)Di+%eNt-6efAh(?qX0n-JX8|QEY+7fq-c3zw3oPKubSy5AJj)!BW z7&#gcivJd>x8uPj<**Wbo3H0LBaw z-T#P5DHEs5`0Qul&I9a3BpGPG=U;aPziK zRSSgj=9C#0Y1e?PJJTmR@QUG56bwssRCw-sI=oO{sagXpX*&j1R)7`~u+aIz z0azfXkl7{xDYkJ$2+klx9wnkkEDCD7v60Py91}kQoNgPLFL5imlS2B2$Ku}yO1K|lfH$vy)CaUI%A5KmdmPCVaCg4MXM%;w)1fkeL zXfe8|L<1!Al4FG;uX&*T3L8m>ftC8aG0Y0h9> z(~#c(jOFSH%TfdC!EafqI6t?l^3r?GMlNmd$B7q@U9ob_?<|_fsNJlC4&irSt_ZfD&%_T$JSo zBe&6?Gx1V52Vk=tKta*LFOf79Y(i&-Q^85bcI1zz4&(XaaVcGwM=$4y`naC3mZtDY z!EtoqLw*BLL;X5L#hj7Bc_+Ff}!LkKim@=F@R2;V>FxG4H0g~FnduLEm z8wHwV3U8`Nq{JNULvg_LFb6!44yi(kgV}@W8$MO_Uk#r}z<;rR3H?e2*{nnO!sBjlcEm!uhGU#oG*mE}E)_=Mh|TBO-wL5o*jii9rECnU|ZvsgPI zD?5nFpa|N<*|2A%Efn5`G-C-30S9BPQpAeKxy23CJbycy`QY72i{Lk7{y1*Mx$xx+ zC)cY&0iY;QDlJ@s)q~TTX1BLdA_j^H4ky`K+y#>)W)UDnO&5W7L1zsU=C*mNu~;g? z7bSjbEtP|1C{oGjstCrl*DFxs3xy(B^cs~#7B{BA>Iftt9JN4Bt~_o5x@dm$i`o+g zWhIn@Ge`))$?wUH5xRZg0?57Vuwa@l^6>&d!Vjc+XPEMJOe{VEAdx5z8$OHpJs7$E z%PceL5eU`Fg~8X?<+GwXhRWa$@MKvvMsO5N2Vu2+@cKA-L$+m#y#=)%`meExsztfy z07HNOYJxUe$9WuNSPWOr51n3P}^(G=OCUCGblpa6cMP>u z9r$Xs?_46&RaXKtR3xc01OUkpBEE@YAMTG+A`~EhZ!_N5TyTGt1IydTF~-Bnzyy{r zEphR^Neb3sSWiZ*TVt)D?qxV-7W0m^1^*4WLbsGpOm$~)1OZe0_wx!UPp~>JbwPx+ zQu_wQOXFqgnTst|(CG}ERJ2OYUz8Se9Ecwao=Rx|JJSGF$q~iWaz$TI^P`h(re*^M#^M|2;!6!M+Dul57E-!_yQP8Ml$tZ(n0(fQ54v~VFZg0eU8oW-zFlCO%xEa|O zC2JzZ0=tvblumtABOb$nwM(xsH8~`WzZH2)lWfvVCe>pd>mXEPYlV3Sp}}d(vepbtIaG=^iy%|eabGx9IkzOMLJka4 zm)U$9X3;*Oi~|1UsNn2E!^4vu$bdTIINgo26dGl(xVS{%yov`{B4-KB`fh~h!~BVs zaL$yW4E1A;SvXa8KA`~AZ$s8>EoAX@9J5tJB4CUolef?TAr%!;HU$twtoT`l3&ypr zR5*j#e-gt>`Y+y=I0+a(oGv~9Hqy!EV__6Td;`q&B^D^cH!6{n9CwSLRKFLByri6yEw!g0hRB%1_oc6u_&a-+&&4<^yi- z_(8;@!8;0f^5ih1`eDJ~t?dNYb5$}7x;5TCD+>GH4uJBWBM0041LG`)t3-$@bPYg8 zIg4ebOf7#~`a&?mlZ=ncS*)7l z&R7MLK>fa2Vee!s??Tl`er>3-7t7xfaMcvk$EG37VJ={?;y_sSTyuMK-F0yj&T*ST z2vgrW?qAkP@#_X}kjrh5)vTkBY?WqSev*7C(8_+2}33w;>n)uL!f)rKW>jkPwvvdQSc zeNNYCq~N8x?>2`M7C>aivUj~qP!Rmg1oP~!Pm-NtH76Nlqn1A7)J?TCO?s1TlAjzy zL0qQrSC&RFRssXz5yx6~m9@@s=wJX9PaSKvDZ|Ec)$Xt=#Bn$7zemTAr4?RS3~J}_kq2|t95STp{- zUFa{5mGM?MRaNd}9uP_SZR_*Wr@xMiC)8 zN}AJ)vvEWWP;)JSDoJWQ5S|1fln=%sR1VqRUc3OkN8ekjgYbc|@fM=bd<-}5g7V!S z7)C@JEi{zt3fcgUx!`ZLV@bs(!e`BE!WL3JQ?(vA*($5{Vb8BF90_g(j@w;Xg`EP_ znp*${c*GJklnkqu$$|T1F$AiG#|I6l;;IuMBU~@{nx@Hal^nlRNqxxp zztDC`Oe+x7lU!&DA33Q9HT#{KfZ`+w;|NrM&P1-ldl`5DcCfj-yuu8YoL^|HJ5F1b z@1L3$r4q2S3mav_tR1mHABs9n>lkz7hMu3_&|{0LLKEs|DeY;Pfz_pCIv*{GH&GMm zhPn)jwJW5Jv#x814sLD3&Pn6YvDAnZTSZhROT*MKVp@gjncOhhEh69wrBYnYkf(43<#>3Y?yKo;( zxz&q@=TtKX2~pwyk8wy4mq(N<(jDx%SD=i%zE?Qv`QR9St}WjX%z*!>x-hPwE)Oxc zrS#K7AxV=*G>NV(9&wGnX1cafvYhJ)Np)})!-I}PE8!84d9YJFL>XG?n0?|#L>0O? zVD%=jVCPFHxDO-Z0cP^F0Gvj)?#?AHB}ug@V=dC@UA28{v1^?css$o) ztpwQtY09#9{z9nx_;M^K>q4EC%05c&ueKp3192wEA1WDPgIouw`*3aWQQ6KsDiQ@C zx|Fcf9c_<{U``X>kTh=MjI0_^d!Z752ap4Ab@tvf$Px9J&M!h01S^wH(6Eu~8U5+N z?utB@^EL@wt!BfkLz>vqf=-(tmN^z+zA2Q(r;wniJ1||B%-T87t{ZX=TQezy4%82| z-PvfKPV)LQNMamgiYP-JQ$c`wqFos@pUqD~%^GV>EUMmRgGqQpOQ@G_?|K4SRjH`d zW)-R$2>OW@SjD8bg6qN;92T0+E`(e41#-}5vC3rIUeLeYp|(X5j&a4$m^`Pq|lDG*t5S8^gW z4!a4t(v?`Yh(=;Us~s8hQNjgGpkhvzrY2Z-M9U>DG%O}&&iNgZDj`K9Fe!2vFTJ=5 z0j}yqRfmEkfFTSi5A^t96k%^k@}{ms->Ujd;$eP<2Ln!G8^Hmp1**G)8-W`jAA?>| z#Q3XfKu)_;QNVagK8YL5J{5BScgy8+rMn;p0FMY&fhv!1^olY?Ert`7OXnka4B^?z zu8}CN0RT=LP)BlP6cOzfr~6^R915lc+zBcZ@#)Y}cxqn26yUUs5)Lv$CL9j9d7%gW z2Pd*1OC|E-$2xOJ$!VO#CMUXsUm^eMf%zmr-;6p#!0>%EuYCB7G1H8)76Q2Taw*_8 z7LmZ0=77;k@U&Hu?O?%M&mjm)?pvt$<(z1adW8AG6S& zkpn4ny9}t9jcU7HDQZ~duqWdJQRx#@eKs}m5QnVc-EZAM+X}N zHzA}VRIe=GiKsI{SP0}R^$E&Oh;K?yvj=DP!816Xq_RWgs4UP45PqOi{x;3=a8Y%8 zDAOptK;W-pDX=xNZC!g@O3_!z5l*TK4c3R*$Pg%vesJ~Vf=}+TJ@12RA4-x^`E2+G zPBlSwCLIC+fCkI%AaH2SCrJcMfIA9W+g_27JYZWef{?NvCQFt{If}mKAkQXoNWQXC zyv{ zbvehCU;y&Fy-L%xL{DQUM{xr;5T)@OgnM24ph!if44~k&nKna!!w#9NA$}$sLQy71}J2{A*-WMph_Z1@8RKYJ?yGb=9xv21ad9vt=mE+IC|>o z^8jarKJye&eBpSh3U@jjlb1q%j7oR_W{db9jJf*bk0B}$x(n~OzuO$obB!|RYJSD*+s_0gZG9w)Xi{er1*LLoiT+< zN@K7#a&#nP0U_qn4a+VE)K57^oEi%j7mtHu-nPOe;yHv44D0v6bW5!!tnscY@AIrS z@bv}ezbD-Z!FCLEsmPI3B5;FphVYG+`0CuEMT?}O{I9LN!c%h+Oq=Xsui$>LcV6o!{w zcrK1=!_H>uK%rFBYrE77^saGcJPdLbn3o`jPODOUl=*dEf7Ji0#oMs~0MSkXm zth$B54p?v~Gy&>m@R(rLU~E|i3(^OdsOS2Mm^m2qVeYsseg5eK zC#4{5l zk)`n4>dR4pXvnQsmF59*lyCt%qxmfFfr<=(cSWN;62CljJcs8g3kn}PQikF_>KF

4hGEe)IkDMLqjvI0UjdCym1N^47r}&*Tp#qQjA#OG3EvHizBTu zA5!Pz@SHGb7o!jnl3VumDzHXynD|PG96W=_m(c+nbzK4%5!!|)$lDOG&_0$sidl3} zomql^8_GbeB%*hah7I(B;uh>ez0@%SRB^_xLCqTVQ}MlLg(9qO6r8b`)&*N*T)I`V zL_3e!W?epCXpW^USg>c9wY5DPS<2sOskS1E|^v6mH_!leadH7cOp z(yStFQ)=FLPA_LfvMXVf75YnuHNLZCQN=PBgeW4wfFzV*uhP?-&GIDd)vliYUuHI&?ToTnpPAA&{ybpD98GhP<3quq5ScyhJ$> z___|VI28pBURM~74wi{cM?pw?zdXDk-VVbi`_RDzDk~%os$o@)bm-$DrLdgT4>N&~ z-CQ0gkadu$7Tge3^|S0zzKlviV19;*DCH9(gjvG|qhL+DiqqZ#06Pf(i_=5{v#yG0 zwvU7dLe*i`Q}{!h4(&jE9g7e?0~F3*M_fH0yaES&q1rJ{B%thk&D0=P6OQ(n3cH-9 zwuCB@gmNA{O<2~{<{;n>ph(2;2$sUOsz#j?7FX_E3I&LyHLydZFM(^L^bzvk5RoBS zxt|l?! z@s?2HN@bvDml0Chw5uoB?$UGi)*;EX_OqpJzjPbO=jz#9*_ zv&SI|eenu(9X6bv5o=fjEEtn^>ud!IM zn8)GO-p^a@)UGVmf;~G%J&UxAPD4mbCVHG;{7rzjAu@9)`jJvRWf%Ve0#7XC#3)YF zK}9)Kl>j)!r?hy2L@j85QUoL71|Vpz6xM9a5-()RGh$Df>{+!QGc=s2S)9?^mQ3D& zs?$lqsp;N;aio~#WO5Y6jk}f zj5H?6(HO&2Z*C9Kk?3G7f35ABrMYl3I~o$ zq(&Gvgrw}pBN2br5HI|bQ-oGy9U931ZFRHq=)N+^7Q&Mub@&UkBvpma z2bXT5x*j(z4t$By$wYqjjpR3J7>!;n6pm~MonV}Y!!>QffWJWI`bE43)Y(BmEDq?6{BIaD5Xm3-DDoDE(^)E~+M{HS^t}DjWtlRy{2?t1J08Y5(Qgxv)N08@m61g$9m@-4cQb9Hl7+-!Fo8|ftwTQm5<71mBf~jI>O~kC zGLLycjRl#;@Yk;PXf^UY*jb((6+_XaM|uaQRHJbus4H`%7_)@tR5)|_{Z|n!F^>{- zn3$ZufY;cdhH*Y+U^oZ>jB{>xIoZ_}^-T|lwkVm0h<$nnxC;2Gt2$n(27*IC?LkcX z<}MNf)8di3hp54brNG^q^T0)-IYa+?vGaBj!<)P6V*jnNT@oG^OBi#D!GQ&gBU@EJ~5W1#myz9*C=L?;y%(OV6#l6 z`a3c6s#`$cKfj#I_9B?RJ!C{9LG#A9L$h;;ln@W9@PRbZ$O%8sBHg@DkyR)d(!Q+1 z18wu4r@>86oshQLIRTTES`(pBxU^sbp^pPA_#k4G%4;Nj)Sm3j{e@fv80Htlfi)g; z+lW#~VFOa4l|P6_E6kYQF@%ty9v(9QiQu1O?tdd3k~&R8VZygn5CWBp?VRgXEF3Ogf#p2TRFG6oE>|%QuvQiGj%(#APU)Z9mK*is{ngbRfG7 z%&^PwO*FK6xtVlwp)e?2&k=(;VU1!p2iHZILo67zFW+8TUK5Qk;~GmdM)%20pj%i_ z1jlLO8R=XAx!;{Mh_^}J_%c2ZFd)s~B?uW}s|Z@!-rU(i1qn)pGDa@r6g7yU{1PLR zBkg1Gkf3foK?1DYBv~!;@)PUwQ%Ur~A?%vZ@%|Lf6)mK8jBsoGbh?%YM$N0H4YbEk z-w&0yJ%UO(tEx)VUF*#i-9gm93@`vT#O}rhYd(lEaDG%uU6yq^EQeM)K0Y|i9@ict z#n3lYb}?Rvy>zJ0(E8RGP>DoNMQN7SwxBfa5kPy;_t!-e2m*f|bwnd7qZl)@a`i4DMb6_aU{xT=^>0l*MhSwO&EL(J)e;pl=C zBrn$tc;zf~7~m%|N{K;t5$uH#@N;smvZT~YL7c*)2}u!%N#!!GR6_WYKFtZ|R|77v zz$7WCB5UXD7q?fS{2JK^PP&0|7aZgO4KBt)rfKKrD}+JgbYCLzXkb#A5vsNTUUHKxsIpPC_v2gCtc+ zE{*C_N?ZYvW2x>9Bl<#?94v~<;`a?eLr`pTw1w+JZZM z(KS>g9k4giImYbBbXDIYmB8~eJs352JWs7T%M;dy$4P-QpB)gkd+n~zp>`G9os|cS zAVRAWbLHn|;u=dd1L+h^fnkyD9^1QFC)LdkmxuOAy7d~-YU*rs_+++CllfLYIv3;$ zl1;@dD-HZt(*E|5aEOO)wOEuS22ULzqRrxOMxQ-->ONHz=qXHZk^eXXyUM%6kS@LO zk(dVN#YFI^o{Wl z4TNdu_=w}{~3(^ZZ{J!0<`o4In8uR?AcP95Ww-md7JL zWN$~&@c1%1wTBK2IzCVuAaYGgG3&5KA)=}@jRgvcCx!=}Tn5NzJw}+5Tv(}uuoHu+ zB|CoXAj!8Ur@EA#;fC0pdjsut=+MhGH-1WJgO32>cmoC1P-Fpzsc!--*xa65MC=0d zPoO-3S(b*meH%5Q9L4Bp%2wfhGDI*)pyx=t1M-R(G#W~DY6Nr0vKMDY)@29LPYFCd zjXo%rU*L;gF&0-RpJk6pY5oZ^?=L}eZr#*D zQ<@4EZVXc=lF{>6+G!Qeog)Ssfa^dF!}+I_W-Jt*H722*obl4!~_n^tjj5yfywNZb|Lgwn`)~Jyh$y{j4E#% z-)9vFNU5`DE`+V8!!OC=x^r0@rL7=RWH9IrLTAH*LDUmX59{x`#z7_9E#5a%w(eEpuqw4x>ElQIsr^=uS=A2G5!pq!R5+#-b-8wM*C zzp7of|8%HACy5N6RTjUGpt_@yZxDYC4xyX&5tikFIhBYx#+M`OM}?)K$uh^QSN2fi zzc7$M1nN9wri|NdQ*S0$j|uqDY!u+gedo7NI#rwW987R{v>>LXDt4 z5~*rgS|wvoMPughC6V|DF~ubSNhP&kC#m3L?xZ^AC&${;M47;u&14Q|4|;&^aGOWu zxhtO&H1ndQ4J=-PwMW>LmC-xotcYq3QZn9pC^WhO{*P9Z@qOg-W_DWprcCnIfNo%~Y?v%w+;c&X%52 zWVwBkon~%~3PFG;V+^=spEIv&yc=78onPGmU_C!K73;|64X`BW8WXjFOz8hhlH%F^mj7n9F5hg ziX3i;jX(pVzIohUdqA}WO0FhyKNl6U$E>$DxKS&KM_nB1UMddagTCL8a8(wNl)@+uOby=L)Uu z5|G?M7RwT-_yw#regV_KFL&LIByOJT02S|UAb~iZxp(*S{QTW_-BlK%>fKFkM*q2M zKAj7Ko3%^uuh`0+G1(+vgj1l0Uy{2BzhalEUUIYbyfrn@sa>#pI`aa$0WlCPc81^R zcO$O?69ggBLh+04kofaKE}(G}V>dNoI^4LkvmhBaytu@kSCB4yr&3MtR#z))7zQ{L z%c7+26W7Pzm_+<_ClhKm@Mnds;I9zl?Da05@16}+^cb^5#|*A!l_BPqe)uX4b3xMG zo)f=2Su*a`AOq%PPh8#j*KNpINks`0JQIV6uduJG5L_*R&#D#y_) z#Aq{DsO(?HEnvu%PWjDii;ZG=X_XwR(TYPWmt^CyU|`S(H&CLH{ij*me;tuma+PS0 zLjmz__wM%Qp6xM44t>@3a+PJoTbf^yZ3LHEKVam^EXIWG_hO*M(&Lv#8*Nx=-5i6^ z{94E5G)2TdE+!6?7>>KtUgl!f8dA6byIfsP>>xG~&NJcbg0thl{3;m4!rIb2Io;hW zo9l~rFI+$*su<QiTO(ec*mzKNRZTaR=PPxz!kw!duc{3q^UXL4kYm}0$3?3X`x;{P`l z&nk|7M)V^h{_|?lUsycu_D6l8jeptyRrfz@`oF@z?EluEs`tMw`tyog|MW}M@>aLM zB>HC;cQokV@gnqd^Bu+UPuAOCM*CZezxuRq&;NW2e&cxh9**&Um9Km+{^fY?@OaX5 zuZjM7#Y+cYqLz2)zeVw1@Gtwh?0&x3^gqGB`#tw#sr}pIx%az02Y6F)N73^5Z!!Iu zm~i%g<$clqYyAOUgnv2CmwKG3{ZY3+`s3057v0aa>8Y=lTbupNHK4&zRo&P|&~1{eQ&ttB(i$n%jRIbiUX7|1#D?dM`|Z z=3(nsqWvt|@#jlHXZvf7_79l;xasLTo-qCA8tq^2{%`zh^#2w3n?Kv8U;Dp<&UMM3 zM@)b0w}SqMK`wsK^q>1w(9{0>a_P=ZTRny;wzxnfV{CiVzTXFr*zF2?1 zK>x*leOl0qKM(qcO@D#uSKU6X&pS=OV*2O1{gCNfjsDMozTfwq2c7HiM&rFMn*N08 z-|P?e9qJ$Z=wtC6)BOJj(?8qv^nHKU{ak+9i!{RL`1}5@=~r$EdRqUVH2u)igFf%~ zdOkYTel&f}^sg}e3DbY?>2YD!^y{}rKacpi-(dRL=LDVWn?LUao$Kvcjq$(F^g|8$ zFS?&=|04Q%*)yV_kGlP>jrKQT!R$Bxw}DRnaJ^gK7l#gL|3#p49?rfpo}1?9sQP(f z@yHYP?=tH4*WLcRVwlBg)3?4d`Z?oySV-+(74#%8E~@|AilcuK>$A`Oe1qHfy*k>b z{q>mIzpyAgp383k9{1Ddekh0d^9yc&@K2eL}L#AJLKew2E-TmC^er_}UkKO*L z`+3y#kGcKddw+eV>9=6La6jHK{j*GeA?W*kuNQ&N`R|*G_x%C4??0gZ18#r)RJ4E8 z^L!L^uD8b;->Y*#KXdNq=)a17-tXtGtDifHqi0_nltb~)uG<%{kM=+4_HS1E7ZykV z+U;+N3vYG%t8PE)aefcz`_039-TsMl(f^41|5?zvo{w(5Sd@#;i3`7cKtKQW0Q&zp zfd1E@bN-KhOFZ|59_KCCf7%z{8uafs{c}t|^wyxyV;%74%T2%h?LoiOjC&Y#ewU-4 zdT}%~gL_S)|81QqW<^{L9!cTc$6AzTbTA9zg#_^@H&|{Uz!l z@!Pk8&i8%Z`(pfQJ^zsDpWmQ=0QCKy`?%ZpyZ!AR=MB@3nx6L8Crodd?&&Q4$@H_P zgN^Iwb_|%~+-lHYVESd#|I+PWp4$H(@m}B{`uR%Jub7_ntB&c{P5*4S|7z2pX!NsU z`k^0>{#$OpZTeZ$sYmkXjj12gKN95P+fBdz6VcBXd%eBO^x~(2-tYE5V|u^oY5c!o z`j+WwKL5n@%cdW8Kc6!FT7&-CSOA>o;{EmKewpe0rhmZwyehT->1dz$2$u^s_$`{a}0Q=i5x*GW|zPe>>>hUsrE^i70p-{k+HR`+he1`8?Bq!Sti1 z|AFbhW_th6Mf>md{Qth`*MC0fZ@xKh_#4pq+!gPmTinkxv9QHAu0{K0(_e1-b<@Aw z^fA-7J`nAb{M|AAMuYx+rnmmjX#ex>=Y6Ih`o*B1GX2+6|EAyM_xdByIsWU7dHa~@ z7eBK;pPw>)t3m%P7=)UK2K~jRpKZ{On0~rJf3@kY2EA?i@dmwX`q2jcoaqlX=od`y zZ_pnx{iO~1qo(&Y=s#-u9S!;iOh441|GMe7Ht4@^deNZ&mFa)q_%2U-R?PDg4f^v< z|7e5$Wv1U~&<9NaaD#pdbgtXWAB^>r?6Muxiw^~T-0SDE>8)Q1`US7IA9VlkZuI{j z-2S@Tzt;UcZhHUY(a&?dzdquAE_;7rk?H3z-TvsWM*C;F{iogjnxAX6rT9#+Fuqso zKS%pFVc+uS^Fimjz3ldVq87zHra#sg|8Q#mjMx`xJky}>$KU1;pl^ZB@f`g`jOV}m zz24~lA9-ed-@V!G`~EK4uX&u`qxQEIm#q&ZIrU@i=kjgt$Nm4D>8BIj{rrmQXB+g7 zfWF^*{RQY8|J6^%c)%9)^Ymv2{hH}XUO(UT>kaysnSR6cB)^WC-uI8u|2Mh+v!-7) z{VvnLCiP=_lJDPcdht)u&lkG=_nY2l`sbMbzngxv(f*q0XHB1U``nYq`o8zN{k2B>DYw7s_UXHSwcEeH(SFzMue<%f@HoHG^x|pp+$2x` zt^2v!=;w#s{;b>oYxnb$ZvSYb{cpPc6K-!Sp!lfUfB4RrpIh9|C)~d8mKe{5>9;>O z=Ix`6{`)}Jyt(~XyZw;c-)OXdo!dXrXut0EEB*EF_4RJw`ivM)>i?Z?-`8mWOKyL) z(f)?p_cz-AgWDf^dcFVW!Jy_kIooLea?ts{TaET(ZvWCo`$f0E-e~_8w?EWq|3hxy z|BU*0e$nkedUt((e&6k{G}`~8+uvxkzXSFn$Nxm5{VPG|`~H2Seb?< zR3FcK-TuKw`wzMORk!~p3(nti`zsCp{QsE#XrrJ1nc6q#&jzs1_j;s3f05~z8}xD0 zFE;4Arf)UqkC}dJgZ>Mq7Y+LFnf^p$ojmPxW1Jsu(7(X+>kaw?ra#u8kDGp_L0>fe za)bVLrf)Uq-);IzgMQWYR)hX)roXg7|1;D38uVvCfzf(v(7(j=Lk;??O~184UogFB z&@Y?*_l@=QR@0wo(BE$Qha2?wnSQ-N|1YLL)}VjP^c&V&-emsvNzln>j(&dZi-)1d z@aHxFGQ`RIJ`s54OM_fI{{VWQ>4n?(x&4=e&i>!|w&?#EroYb`>-e&qW(-R;53DaBuGTI+?`~PP871Lj7`d^uT-Si8l zKNF5QzHjR*qMz?J{Yy=M!t{@uJ_tJ3+jW1JgpWfKd-W#c+Tw~Z?r$}_IdC1_=1>+ z$4r07?e8?J7vK1{sw*0^rNOHT;dI>|DovTAKd?2K<9j3_WJkmiz}wDH1@@J zr+$W`pAWt)I{J@pf3z`gk0<)G>htr5re8BYaM|PewCP)o=RWfbW1QDK|H+Pc0qFbL zeJ=r>>*|`Z^Y|CQ-mrcb*4r%k_R`eoCf{Y5c9N8cXL z{TtK2EYZI&=toQ+G5xaXpJDo}=~o)`e|Njj7e&6@E z+`f1$`uQoh|6|jynV!DyUz>j2^ij8eR$r{Evxj4SCVujHrhm9WzZZ0_tG@4#=PtXS z6K;RK(SFhGuQb}f(e2;gX#d@AU;IG5{~vSvtBv-*;`Uo^f4+#HKXLoV8ttD3K!D?a z!tGDF{TG2wKJaLx{R3{_dS{I1!)`zA_K!5$@3?*cyP|#S|KGX&<8uU+?{?P{gxe(KQ-y043gQh>;pm$8a)}U{j{_Y0-t)^dT z(BEnL#RmPSP2XzJe*<)WuPZ+o^ZA{gpFc6Z|A&J9^`?K?^sA<)_5Z9diGHq`p5*My zOh5a>(NB^)qo&_5J@wNz{fP#>YkKkS=qJgYuQC1XdxHKKpAiH7-$3X5U$b8QCXfG7 zw{QJewEw3U#D({`{fg%&@&BJR{i^#(^6Q%E#~btc%cj4(q0cj%iQ_rl=>OR-!t-zb z+~Se|A=NEmB#|vsv%%c6xH$S`h@#``EL|+#DImPt`{ojM_FfQ>i(*dXG z=P3HW>E<%dFum{JVVs{u{^NMUG%AK6k$&_c{DPm4n2|B8sE_dmpRAAPMW8c8&~hU5%0zLHvZ84 z@mzebLyb7S|E~7YruyGMIDr09_fs6H^Z$<@(Ee{l$M^cS7|&m)hhTd5n>WG{`_Z3w z0R3|hp!Xd>?>~V4zyb7EfzEmBYrOA>+5>NVXS^50rG7f5pWO=j@0x!3fc~i_aa}$7 z)qQH2DS&I&t36zKW_TgHwWG7XK@QQ!hZAo+ym%$9zehM z0Q%qo^sxizodf7=2hhLf0Q$EcK))jT?M441F%NHeT1?RQ9?<^12he}v0Q#>VK>yPN z=nVVWZ~p)30Q&9NZu_vD1bD(SAnO}K0#fQ}%e0vRy1wWr>f9^+3Kf4?BG|o?(e${c; zEsy`uOJg1i3S9gEp3=`3ncipmS<~+|{j%vtO+R7!HPe$m@Osmaer@#s3AgVh`Wu7( zxar?w`k}82`nyeko9Wj~PkiQmrr$9A8{PhwOyBzY=!bFP{P{i8FJBINviJWs_5Y@z zABpD0?O+sKC&f1e{cqjR7bN;O1^p*YKMXp**N->irC;gxTNHfwN&4+6x8M0aEO`9f zqW>1fvgubEag1LF`sZLoXWi~r|N9;8|GMKR-{JNAqlxb4e!}#}O}}w6#`7!g=g&ar z_^0pnt&hUl84$R{r^A(D}ZthCc8I zssDe7etydLeENWXp7G^;-@QMdB|6p*6)^n#is!%I^exZBuy1{h>5u(dv_EY6N^1X` zK~H$XTTDOe_Gvx*km*O=KE85Md@%Ln_V}#&`J+VtAJP9iJa3;iz5gvizv%W~`11I^ zXa6zi@!z6&(Db7p4hmoy{j^QL>V95h`iAL+`RX~--)MU4iRkBZZ;1=vZu+4=4tme+ zf5h}F9?#vTf5`MLDx&y#{nO&YZy|rXo!s!gIPLlQEYP{m zFaOKvKiRo2GyRb1>AhZU`q{6D_Wv%1Q_Prt{deNM-v0Esupqh{RsK2W_I)R!pC9sg zc1$l`8T7bpxa-)674_7?SCWn|LsBlTR-=A68$@Z4j4*5A2a>2$rw*shks}K6K?;N zZhtcrLVlP2e;fTgf)9Mi9O{XF3DJYf3PS4IEtaz7_QCx3Xf!H3sOzuMsQ-yr%O z#bf4UX+OTr{U3E6(<|NodrZG(`m;>`3Dd8e{!G(9VEPTy-)s7Bo8IU7d86sSXZn@z zi+M=<;$x;?Gu>>vxET#NZ%>$h)cri)^!|55KR0{cUJN?t=d$Hj|8wGoSGxVt$D;k8 zdLNCYerzv1!~MTr{oGNU^}O9;`a`K7w@>4IliI(q*lNhl?=tW!`-zwK8~txc{}bY6&Qq+O zz@LHqob!h9ew8p;8dfQ2S z;(*aF5WfnztRHZkpnqP^?;<`%-0N+Tat=_=_n7~WJAS^U+aTXR6EAZf@j3D9ijye% zIZXP+A6q_eqWnjQAG*Zk|1Eh=!GtLNv-}CeKTZ5h;s-e2JwW^=ibo0ZaeV>)a>`kH z!1D81(l?3kxYE)sF`us`e&|O=zl``hhfsKFkcfHa_ z03Sa>IR|dDa@|DyX5u?;H++Wp?Zgiee;x6!5HEkm=pFyA(-Ze{9dY{48ojSGA9JSl z^D!|<;_qdYe-iOBaUaKL5bqM7BmE}gOF8;i5l=p6^10kdI>g6v`0I(6a`?N6Pvr0$ zh)?G5PZKZa@UIZxLHxzc|2K&*5{FvQzaJ7mMBL|*UlU&rqe ze?a_Tj{Yd|iQk$0YbpN;XN?}$PcFcpra0`z+%Nb%_#)t{ik*k^V_c_e$bN za&i`kPkhz#xtZ;?s5qIUpBqTOaIew(`tVNTi^K=ySt^k8(*pcg1^6Qc_!Chfe;nn{ zA5Sj8pRPFOuWwrZeV%$&0sX21e6j#Pm-0)mG=1pj#jhs5Z@uAHv7S4`$GAUwH4E@M z;)@?K`p1+0{ls_dH~j45jNzYvOMfW&`?;h)3vHb4SZnmB za-H*J#Yq(XJRP{~I}Y+a!8=c|$Q8sF-)43d$Io&4>$CV4m48BVh~vfeVOi;MZ-nc7 zW+%CVa_;1Qhs8~Hkp4c>J3dGGV<%d0c9LH}Yew6s}tcy<* zKb*tAMtmtJ=KSE8db&?n{AtONoSap_Wxl?Q`ExlN6hAT8 zxx9WZqMWZ$j^k65Q_jihQV!uD?`qPQ7_oxCe@A>P!=C?}f$M%}g|*8yjK3SW^yhEn z@^hH<3(qzBSCalA;!DJ*iJx?i$uFO7^mniWtpqOezn+u7p7fv1`h&T3;QJIOarCoTfZtGnf3yJqQ~`c_0sh4T{GI~* z>jn6?3h?_2@P9ABe^P+|q5%JO0scP)`0+0qJ&!!T03R#BmlxpAD8Nrs9OochKg;(u zzp(&6pg7JeFSm02hKlAc;zxLH z@)!=7`-vx48T~6cF+50o$AaOQ&h+mDEL=sOED}FVInN=!aJA91I+NAJ_Yrsd&v`C~ z_$JDqC4Pi>iTE|d$KGV}mlOXm@d@Id&pU{Bi9>zq-*<^0Aijn8!^D#}oBYG9x2OEM zm3QeahP!=cHSsZiPvCUQxrlgDF?wGQU+MJ3@8X2Zt|z83p)R1^7z}@J$8yc?J0P0{m44c&z}REx_A~v~T=xfA(Onia(J;Wa-UcSlb|DO0V z7;t1>NDdhO9O6$SK0*9V#3zU!B>o2C>xqwj(&Tvk>~J}JpW5|mhj=N6|E0^x;cq2= z%66sH6+;535 z?Yx0#c^K7{9t*be?KC=kNAni zA12-<&h2dS*tM3=rTZ+OCzJjZ;>o`nehC%9X^N95`WY|4R|A)Fm2&UtZzjGuhhJ78 zXNThW-q&|5KTAxzO?>jZhF?VdYT}E;w{o5QKH^8dXY@Ca{u55WWcYFp)Grf1_(Q{A z&H;9x<7{6)FZd7Qlf+$bJP2IsVMVUIk6&l?KlWpj|2*dNsl>aKgX2H_JDvFCPmI3* z7{kvYe(QIoK7JSC1~Pn!c$soeWq!Uve3Ij{B+_IIs9e7WnSoB_iW9{nd~R$lYWu!xp;YBN%{ltG5RZ+ z|DD83l;ivUs~ji2+oj(^eDU2TXAkAPhj{WX!#_j(L&T4~!*KsT$v+Z5Nc#Ipe+Thy z+vrz3(<1I6zPQiuO{D)e@g>Ul`u{2MBc#Xls(;6AuzFi0z2i?MK0&-q`WFBfJK=&{ zbj07p<1AtW=}UK8e#-1W+ms&qllQ%kH}Yf$>6h*`dawTu@iOmY`@ZRQj+6cx%DI;K zBynFaz1QV`)#Ri2`gfz_Uord<;^(lyo*&-@Cnin!h>inrv7|xq6l~OR?mXUWw5r0&r*3P2r;hrn9B<6RnF;*=R%Yv< z^iVQBz=xX?!wxuu zf>)(+6Mz^KsDfsj-A&cOx@LQOV@7-;CgVWhWN9!3-&5oA8E6Hi)arnCygI-)p{L-| z4Y@E^)#|H-&($foPub-$_!PJJ84i?H^_mlcz4lBd8lPNlI4iz9?T-S>m#C9*Gyq&c z;&&E7d$M1AUAsEfRQIBlO1*<`#*4d9e;SAHYXD6+5V@)Wzmk=Wo8gFKEnH-Z1BOZ^ zLkT}r@H}mh*1n37Cy2pM5W+N+W(Lk?#%o=1G%D2xXQT7*va1fP4VmfAqeAIVqB6Cz z-dI(CVPj=|&C2POXPreht95u#7YCT)u{)Ag7iZZ1DRKS2w0!LwjZv-5nopNrV}Q?# zn{OR_tG-u-6BWthI6Q3)#wWy$n)z;tBgGY)#lg!Q%4QT+G<*oVH>ilmU-cv}E;Z>? zULN5opwou8v0kSO0YRpCwGCB04i|>v10wp)y}Kd95Sngvc1Nz4@PT%?ya?WUL$+0d zc(+A27H=-72XVEmPx#vZe0yi?z^M(#;BZ$y=$IgJq3V)^i_zv{f{ACbh>F7L7B5RC znIWPc$Pxpxkg+iFzXd8fV^3UL`!5%+!WRxlG=n{Cu~t{)}2-aumT zq}4#%SQ~j=X3~dv^vMF?{349s(kn#PK@!Ro+O1A?yuoufen*U4;b0%+H7PmJJZC#wRreY^9~&=H4gv*MP@zW*;1pgIsypIY#Th02mg_?1k| zPlI?VLCN8ROy()5LZ$3Crx2XUyF0*$5w8aDf(n1)PBGgR|yb<*W)6G37hlb(DC|SS#Qn)=G zKXZ*~1G=lBd!LY5JXpn<8j_$n2s8gJqTcc`;%Pyq5k%2Hh5S@PCkw++qf^}4RNXsN zdvNuwOqdPPd#YHqXt*}$wcO`rR#Oj7P>+vsIX!<)Ei1vraW)H*F6(JAyv`#Ya7 zLmH?8(+peHW1NJ^(8yvpuG(o-j-U;l)Wlz(dQ%ezf5@Wvmk@u?QdKNzEW$j&1{vxw z98+H#tI9Mz3CV;gv4*<84RyiPGmIT-D8bl6OTE#88Z|fE$S~Zrp%I{(Dp~-|d!;r7 z$D;6U4o7OT4#T*RNcG$eZ&_NsjD&Ajc>;qLl@3JV`6_npEm2(G!0DT~5p<1 z<2t&nB<>}is`eZ5oY6&Cupw{NDa=P&giNGP2DL^PH9s)-dXmeGZ_{yjF0ab?h_flK z!3rrwl&>5Ew`)?X5zUXs&9`-YY5}q2by&moR#(~!ZtszzR4*!3!%e7knY&`l)=1{W z#p%@hD0$RbpGTN4S8Gqkqt`*7GoW))h=6}HK1)W7Hv-fvpND%L3@ojo>Yy64%{8!> zfMY%q>S*(Tx&n+dt3W2likSa)N-(4~-=B3cvPy=dKDg?uO@)N4Tq9tVDn>E9F#0fY zhThVI7b&)X7)0p6zn4pSbBdU_YCvhR9WmK1lkQ}=Pk%C z2-DdFUZmK6Ie5@B6q;#urm(~}T|yU)p~Fi;p-Av3C%q~F<2f%j+CRm|m~4sVSGuL- zs|ue@?lwEZY$x>5-eo4T zluqRnq)}sXJqusoho}>`BBm^Ar}pyPI`5Zk1uw9r7ot$)oag;8-Ab zf{DEsoFtl6N>gT_Kw4dvgm71F9I}G6%tSx|XA_GcX$PseLg%Ob`6>8s8(;~Tx*kzT#CX+a8Fz`!z>Ysn2#wCU~6ZrlLq3w z+-o&PkIgvWhq@hNRP@-4Q}g}36_}W6qTBKb$B_kMVv>|UMhh6>;v2mtWwG!vhcMKuW$({L`S@?a<3P|xHW_2e{mylQp!_l*>&b_6~oq8_1KveKh8@L@g z1_Qh+!Yw@1Lz<>=1-O9K@>Sgx^$mw+j>!Tiw6OKH<4zS^##=-IJBB)}p1PV#vl@W~ zY}3u&+-_{)ToI+b`IrI$jatq6M#>qWW3XUTfaQPG4~2=~G1z3`G#|CUa2Zy>1S4!a zN=1VOq%xDHh0u9*^h5v?3nu;wX6q>!U_x)ozy)cfIxU-87B67lHP!6&hZ`yb7qLP~ zc6!{E`rx4^k4kEr9*LJ#rIk!}JA%mK1csO<%wan95EdgOY*8|mRa;o&Ta_tC8r8;m zifjiw<^FuP+vyE3vH}hKiuT|)8D55e54x}i85X#!ipIeL*fwJ$WOgva>f~EdFU4_& zWk$_M%fdCv5vK;xLp|7cVNaQ9^z$;H*QZBIk79CyRTqhNi&INgO;oLt%QPa#kt&NE zM;bAb!&PWL60=2qT@+eTrj9f+$BE+>tkiene68`CeEnqNa(taST;0Qd4{!B2L@*oe zPz5`Y?zE$V>Jpo+C0i40IbbPuKy`<#v|tu=P%6{cm9~XW`zHC|(YU;-T(PwtjEXR# zi%VB@Efb}?F0&!%pr*0ztTku4-R`V4tJBA`a`a|>lR}sbGbjZiYf{d0B2J|;)_4&* zq6ZJHW79r39F>`E(K166p_`73(P?ogCUm`_n7AV(+Ea9&KSY=5X$eBUb2ZC&&cJF7 z8jMt~Bhqq{;LKDZrQ=CE!}wWgRLDKKR@*MSR%`TO#}|X%G0j=Nr5S0!(EST{TBg%H zAg3smHv0dtg(B>^N7$`WGXzZ?BP%E^T)y0^(x`m7S4L5(ezWSD$XFQB3B|U6Gmf3K z9l+vFU%zU6mlg@7@a;N%4a3v|vvEp>ap86YrwFW(*}&tt$qrTn$A^su9-|!jOweTD zG_)9`K`|J3$m|7aNX-Qv9Az!=xDmzzj~Znw@VFsUK^&2_6vQz)&ASacWPYTb0Bpa9 zoq&2rh|!+WQq%Xy*7y4KOs$hZLyJ*gB)ShLI-6xM~P9(-z)hVKRm5|gs4$^kwhixvIvwoqoGfZvJmY6X; zdI}cZyu!Uv}ru!iP~0HD5NJ&yi>&LxNGIN*>SSF={> zHXDgN!#t{|etP0y;mWyNFI=~FYvsaCo3?MfxN`B@bz3*$lFyb4L64hIa(zH<0l{Xb z`#0DdRRS*h$oT|iRA#W>uz=hUl9D8HiqizAEDZGs-R^J6XaZW>Qw_&F2-f=@_BaVN zM)F*-a<%Vjw3hniU1nA!noR2%>U1(aEr%M2tK<4aGT(1C8eO~UBc?@J6v#1gXS$9H zVO`nCB-6lfmNw{#aSs=uFhtHdr_%4&s_khkVp^SkBf+9XuG2s&9!wml4Xj+T>V=YT zolX0L`6&eCnp0&bE($eT<@4&>Co1K7v)QamW#Xz*xzk;b8xiX}?dj&sJPxDeid^N2 zm8**Rz_qoCJ>2YhDs=erk|8wVS`}ekSYBJ+qSt|BTEV3t>?H>YWNmK@HfV+=aIOc+ zxT1u62{^jhHgWa@4(PE2A506$W*l~(k1XRD9(q_-oB#=kIMhXTZoS%%FKrHHH?^uW zeIeN>2^y{(jk#KP@7n%e+=!Xh%GV59N9x+_PBXNSo7nB3hFz+SGoT=HTcg(Ld2OP- zhpW@2UD?4w_q4U5XJ~_+R;5Wqz@}b9laUhZGjoXJeSI2Qp(yIh$58RpT$)I8Z{r}a z>w~y$X1yT5Xjbh37_)oyHXe8`Y5Oq9abd>=Yx3~DxIJsmw!0B}u9;LMELVAIQ1(#a zynGT}-$S;0txbhHZ9i}t8 z5t->ZX>sCiS#Ru#5|ZAa`A&Oe6susG38~5`Rx3$vei|?GC6}SnRGBAi2!fm_7JG5I zD_G1vdOpbBA58~bB)Qe;?8M>iM$zBfq3+Whx=qmQ;j}`IzrhnmDpWFJZK~ef~!&Xh-T_^<7P$OVGrbY5)qC13eut?uw!78 zz`liBeNi;kon8z~%dHC~GqpyvnY+Jfz7)0~Z*6OqF`3B??vVX7b5cs(z+0r~^V!|7 zPxRBU=<^tpVV4R}nL71=EL$x+oz`#l2qvJeY^FS!vdWRkEr-M@5r*!TNt&Z zw@a0UD^7hDV|VTjcsxGW!@9Kvr>lEdIc6k|QmW6-VZO0V9oGOHYz1S`U`;#R=}y;= zX}bJ?5P}Q(iMWr|2ZmYH2oEHgINjYlGf4X^0h7{fhMZca|tm6WZ61auY)V**b3@uULjT5==w7-p3Jv! zGBeoAu7qJS5|r^odtZRW{(ymi ztGrT7qnK_rGvT;rQv>KC)si}k~I%>tZ_=+ENp6$>fc9mz%juj{#N z7REGyo638cbxBPT-1^Q#Sja@st|l~ahEI_!pF%00tnRE-Vj}WqOqtdR>`fl6OUZ|; z5^D|61hpZtT1TlyODiiVIdaJQ3Ck!Ii@R{VUgYN7(QpOUBw1S-moBrhX;uSM)T6U_ z$hT91QZQeLgcwqb4)~s}8QohLLP8qIg;D*HxrQ5joAfcK@)zi0Wv56IiTvfUMIBG4PSP%k9yj%)|a z;s9Dz9e4!=r@Y!Mm#*D*0SIeq^_vn>gs|e1m4UpyBb7DiWL8I1&vLt8*BkNpQw2V( z3seQRJ2mJUn5oi*OM(x<-(RuCK3hb*7<6uqgvy*sbLN?M8t*jN87x1fX{``$%|?-V=bh zh(OX3MDF)PyiY;eU!cuUUa}Lh0`ny$+-B8V)tGUlf2sCs;mt>e#H0WtA$E)Mp2QFc zQBYi2c+?9&UX4=4391v@R)5QIsH(j`SUIA%r(B3LkBE{9k@JQ9s3}F?isCGa#91cI zr|C2Wef6GF;8I7fY(VT)CRG~Hyt1H>`V{+QZFfD9Jwl=tsZY2(CyEo+M|rJ41|ckB zHWqg#b35zJ9$sn@Qzl+gY$elm4ZH>hAH1-HV%8HV04z_T1u$W$!Lw$UJQLi|mv@Qy zN>MVfS9PM%7H&H8>cOa}FsX1*qWbiGCuFfX!&i~;1PL`gZIm?e7O+z{VJ+vefTMaYsR9l_~zrm6;$aeJOG9)y`(dm&8TGM53Avn8FFBjOP-57+v$VSb;R(@k0h z8IhSGP0A;B>)Ig)3d@u%DQk=6dE!VjK98ip+@BL2W_v7`^%i5qm&Qq>1_n(x?$R zN+Y|PTTG}aXIQC>DvNT;awH!)Y-)@|h8MpgY;N|dIMsNcwX5Iede@HXl3ruCbYgUS z?f00pFe}kcKW%n;YW*3?04JJ z@AR^eSes=S$=DL%@~c*4d6>olg36Tr0XWz+)(S$MwD5KwG@6cYS@LU7QX`#Tj?|fS zrwjwJMWO5K%q_oNu^t$!o*B`IW_KHWv zB6-uriAHh5U{R>YbU9}h%4mleJ&M+_`Pg)Xr4m3<$G&?JQc-e|SwkSZHGrIiWwpEu z0@aS!n9QIP1<@%&NcTJ;WQP+WsLDHpq#gae29$WG2@z!|uXr_aE~4KZP6S=2;YZ-r_zaYAk{)nMAt zM7Xe$2!|wHnOzXy)rDHV5)Do2*kocpt+)KO9qA48{st*Zp|A8rN9^^MEu~ek)RR}S z*dNm>4wY$ezS^?HUd36|TM3&2bTjWPX&uBxt=3*M-^7cbl3OeraqrU)sM6Moj zeB6L(+^R^DupX!dvmjP*A*9MK3WdsbGfZ+}duyj!zqr$Bm2td?;3fLfo&d?_?Q1Kq z*myx@?fDxjYcJYb-ge=pEjWSRy7An#>o2dA&tHv&^ZN5}GQEAv6&tNl(~cZcK=L@A zb~BNNG9y7suLH)K&ENmi&LVHRXi>3cjrGW*&nW{_3d zj4H5LuQCg{DzH#!3k!PdI;p4v73;MC#T)fCRl}(UP|A_L&)9r~dp|QY(p<=|M0F5?rVgVZ)L{r|9fXk8K?rIcgphSc4Qd_eQ>X(A#ab}L zdtq$^4#8Rn0nOBb-B-X))edK~pG4Vs!3MeXu;KCx)}Ft`zxWe>Bun*6Kz9idX7w1?w!;in)hK8u|HGV)(W{(bz= zt)wAo`}ZIHyS2{%_UNOJcAWo#CzXIC$pic_(G!_riVNvD{qsTlyNLhjSV`EEqx?|a zAq`m>MMggV_}p#sV8nmti6!N@lOMoap`j%4^gaKC6MXJS<2*k{$bW?VC-{e&$dIr9 z^MOmAoIhD!GD=p^ehUqy@AY>n;)Q=5>GqRt+X{2hE& ziNE@jyyZ~HnF1DTaq_=>zfSm_YV)t2DR8ox4hWC>2c{GquK(S@WB$oyf2Nd^%dEx^ zO97)l&%Z-|g$LpHYIeWJB|3n6SIu)~9PAd(p1e87?|zwYKDbP2o*pReA>V)GJ8N3;~QeA6t95Ay#Z`SbL-;v}B{uXGXTUrzqzQ4*ne*aue81MyT9!c z`In?|@F)65{+!SA^(A0J;{3@^o-Jfaa<|po3JZn*o!^1G@gSJ-+XHz)rV3xm@FY2^SdANx4hm)L@AekKL0-kf1Lk=pL&j_u>VcQ zKl@q@hW|?8$sT@=A4%Uw*@|_iX~c@ZHh$MLMxEBbhlM%jPs+xhEE<3J)Iezu-f)Cv zeh~hN99j2s#(!@P7h3uA-;?p+eZykx|H(UyzvP6B%vERdJjCZnlyb-C$$x8h1mpz%Lt(p$y~kmtXofdBNfO>viV1sN8=X1%6M~uI+G3HLo H@96&mg*8^Z literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/gemm_example.o b/src/components/amd_smi/tests/gemm_example.o new file mode 100644 index 0000000000000000000000000000000000000000..c95934f0283ef41065808596a45552d3695f7a53 GIT binary patch literal 25920 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 RsTV&PJ0K?}l&e+${{faiePI9q literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/rocmsmi_example b/src/components/amd_smi/tests/rocmsmi_example new file mode 100755 index 0000000000000000000000000000000000000000..3643a8464cb6df5a6d0c845c21e192e8436eea79 GIT binary patch literal 1249920 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%0Duo8%}MWZ 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

?S9C!?&rIe5N|R^R9= zgLR*~dT(=sJxt#}wT8|^z?-#ppyPQ2NZ(B_t|b>fMOk~iL>@7H#|W0jzW9eG(%@ro zlkHKSEw(0hH@sI#@W>A&B?*D5wDLcaC9AYLMEBh$FcxOkWgfCEc}RRVrx0$zRR|kX zi=@om5} zlfGDDHekV0Ot#xewgb~5%3JIvs2P@Q{9`5iRyX@&!6jH%!a;P9mnIcxs@?^i@LMwG zfRC-6XQB$4>97*E90aGALV~Af2K6UQu)ZMIvhbx26e?R80jnKLP%a71`)gknqURBK z44wfP!{s?XO8Aif%B8lh3n@+2kbGsjRMTUbkZLs?BbX-xnbLP4@~##0Vzv-6)A!M@ z0vv>G`9@HTYs6MxA~(@e!JieL> zw~d?`k=uoW8+5{KIgrg^iu)gU_-fa_z8O}{Jt2KULNKQ`_w79WE9vBG*1w5K|CXtL zEU^Zps`_hu`T{>AB)*t#PFHD!%t`dC45h4m1*Jn6OK_2CbfxAOdSG|lo-~6O5SF;b ze#RVLnV)|J+p^@5yFi^%_xFM>*<;!_@MM_->sUR%4{2~jOWYk&=#!Ks%3Dmh|4+VB z<2tV0$JKwbc68k2r<$TUZ$>F)N6LN$yv4~eZ$XhP>7FT!2J_yha2e@V#NeM;Z(UB7 z5X{YwQRFhWc*-b#Lf$7r*~r15mblZjgpO`*XxM9_{G%H{6NcU{fgofb?Ut0QnA zb2eXHj+M4%_Olq&>Mo0L8z-0irAQ>xCfuwWu3<%#)F!pE>; z-YQ*8V4Ks_9h<{h&q@J(l&z=96VjG$#UE=6;mh;=#3Kcv+C^-8@m*km@* zV)(9`0aeDma-}BpWo;XqxWJmlefvG_B;lb9nTU#lhWf0@icL(=Zp-3f%KN*R#y^K` z=>$F^g0hs&ZyYc2lQZVN~+R1i*v(XnJ?@-p31ATE`HQYQ# z;86##^Vw{+*v`pZi?E0gA)gaV>MzwyB3HL?2~>WTuTMon)#kCQ_a^M4GOofc*mD`% zfPcgWthon1xTh!67)qnj6s}TIywsr8iZ|M!Fi|UmRWD1q%|Y2-Z6ycf6%iv^o;uiw z8TQ~)O}lv|?&6Y;+}(7>yFZF)i{1O*jr5XtUeYYMKhc$$?k?(X_hAyWAwI(`aX>h? zs=%Md&fKF$<-79YU#WaYl^!`;x>(wGUqb>w`2sF=yMi=l8dX?!H=I5^d&yj$oz|jy zSlGg}yMol;B-SQ+9aj-PDQ4Myh;}0P>w&&=sKFhAJIT5tNOL~@K9J6@_KYLd< z`RJ*J@i1-v_6ng=;@5Q~≷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 +aw7z^%%BTlFa#d%Z+Pp+); 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 Date: Thu, 8 May 2025 20:47:10 +0000 Subject: [PATCH 007/147] add updates --- src/components/amd_smi/amds.c | 61 +++++++++++++++--- src/components/amd_smi/tests/amdsmi_example | Bin 0 -> 1243592 bytes src/components/amd_smi/tests/amdsmi_example.o | Bin 0 -> 6552 bytes src/components/amd_smi/tests/gemm_example | Bin 1264504 -> 1264896 bytes 4 files changed, 51 insertions(+), 10 deletions(-) create mode 100755 src/components/amd_smi/tests/amdsmi_example create mode 100644 src/components/amd_smi/tests/amdsmi_example.o diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 6dc53cdce..af30a7e43 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -198,8 +198,8 @@ static int load_amdsmi_sym(void) "amdsmi_get_engine_usage"); /* old alias */ /* power -------------------------------------------------- */ - amdsmi_get_power_info_p = sym("amdsmi_get_power_info_v2", - "amdsmi_get_power_info"); + amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); + //"amdsmi_get_power_info_v2", amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); @@ -449,15 +449,17 @@ amds_evt_code_to_name(unsigned int EventCode, char *name, int len) } int -amds_evt_name_to_code(const char *name, unsigned int *EventCode) -{ - int hret = htable_find(htable, name, (void **) &(*EventCode)); +amds_evt_name_to_code(const char *name, unsigned int *EventCode) { + native_event_t *event = NULL; + int hret = htable_find(htable, name, (void**)&event); if (hret != HTABLE_SUCCESS) { return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; } + *EventCode = event->id; // assign the found event¡¯s ID return PAPI_OK; } + int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { @@ -634,7 +636,7 @@ init_event_table(void) ev->start_func = start_simple; ev->stop_func = stop_simple; ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, &ev->id); + htable_insert(htable, ev->name, ev); idx++; } } @@ -728,7 +730,7 @@ init_event_table(void) for (int d = 0; d < device_count; ++d) { // Average power consumption (in microWatts) snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (uW)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); native_event_t *ev_pwr_avg = &ntv_table.events[idx]; ev_pwr_avg->id = idx; ev_pwr_avg->name = strdup(name_buf); @@ -747,7 +749,7 @@ init_event_table(void) idx++; // Power cap (current limit) snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (uW)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); native_event_t *ev_pcap = &ntv_table.events[idx]; ev_pcap->id = idx; ev_pcap->name = strdup(name_buf); @@ -766,7 +768,7 @@ init_event_table(void) idx++; // Power cap range min snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (uW)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); native_event_t *ev_pcap_min = &ntv_table.events[idx]; ev_pcap_min->id = idx; ev_pcap_min->name = strdup(name_buf); @@ -785,7 +787,7 @@ init_event_table(void) idx++; // Power cap range max snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (uW)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); native_event_t *ev_pcap_max = &ntv_table.events[idx]; ev_pcap_max->id = idx; ev_pcap_max->name = strdup(name_buf); @@ -1065,10 +1067,49 @@ access_amdsmi_power_average(int mode, void *arg) if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_info_t power; // sensor_id = 0 (only one power sensor) + amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } + + // Diagnostic prints for every field in the struct + printf("=== power info dump ===\n"); + //printf("socket_power : %llu uW (host only)\n", + // (unsigned long long)power.socket_power); + printf("current_socket_power : %u W (linux_bm only)\n", + power.current_socket_power); + printf("average_socket_power : %u W (linux_bm only)\n", + power.average_socket_power); + printf("gfx_voltage : %u %s\n", + power.gfx_voltage, + /* choose unit based on build */ + #ifdef __linux__ + "mV" + #else + "V" + #endif + ); + printf("soc_voltage : %u %s\n", + power.soc_voltage, + #ifdef __linux__ + "mV" + #else + "V" + #endif + ); + printf("mem_voltage : %u %s\n", + power.mem_voltage, + #ifdef __linux__ + "mV" + #else + "V" + #endif + ); + printf("power_limit : %u W (linux_bm only)\n", + power.power_limit); + printf("========================\n"); + event->value = (int64_t) power.average_socket_power; return PAPI_OK; } diff --git a/src/components/amd_smi/tests/amdsmi_example b/src/components/amd_smi/tests/amdsmi_example new file mode 100755 index 0000000000000000000000000000000000000000..3e292bb6e7da70f0d2374bcaed40c4c1a8436ead GIT binary patch literal 1243592 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�NNB~~DbYg^JJ3(uSmdMPC4fUK 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

fG8mox=&C73S5do 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�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 O{<~Bo>Yz_^{Qm;h-+H$I literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/gemm_example b/src/components/amd_smi/tests/gemm_example index 84549f33600a1104c12244bc7cd975ee67b28699..2ee0d684ce26f6f3ec93611a59e1f18640d9fef6 100755 GIT binary patch delta 232588 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 JQ^3iqrJR5dL%$)gYg>bFCV953ox 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

nT89$Y6AZah+kYLNUq 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 delta 232038 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 z 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 F`!Ahgg#-Wq From f0a90cae6e64b1e48261066ba44332f5eed84b97 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Fri, 9 May 2025 13:59:03 -0700 Subject: [PATCH 008/147] fix power related events --- src/components/amd_smi/amds.c | 845 ++++++++---------- src/components/amd_smi/linux-amd-smi.c | 175 ++-- src/components/amd_smi/tests/amdsmi_example | Bin 1243592 -> 1540160 bytes src/components/amd_smi/tests/amdsmi_example.o | Bin 6552 -> 6552 bytes src/components/amd_smi/tests/gemm_example | Bin 1264896 -> 1563152 bytes src/components/amd_smi/tests/gemm_example.o | Bin 25920 -> 27152 bytes 6 files changed, 447 insertions(+), 573 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index af30a7e43..3bcf593e8 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -21,15 +21,20 @@ typedef enum { static amdsmi_status_t (*amdsmi_init_p)(uint64_t); static amdsmi_status_t (*amdsmi_shut_down_p)(void); static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, + processor_type_t, + amdsmi_processor_handle *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, + amdsmi_temperature_type_t, + amdsmi_temperature_metric_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); + static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, amdsmi_power_cap_info_t *); +static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); /* FIX: added sensor index param */ static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); @@ -41,6 +46,7 @@ static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_ static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); + /* Global device list and count */ static int32_t device_count = 0; static amdsmi_processor_handle *device_handles = NULL; @@ -114,7 +120,7 @@ release_devices(int32_t *bitmask) return PAPI_OK; } -/* Access function prototypes for different events (read/write handlers) */ +/* Prototypes for event access (read/write) functions */ static int access_amdsmi_temp_metric(int mode, void *arg); static int access_amdsmi_fan_speed(int mode, void *arg); static int access_amdsmi_fan_rpms(int mode, void *arg); @@ -128,42 +134,25 @@ static int access_amdsmi_pci_replay_counter(int mode, void *arg); static int access_amdsmi_clk_freq(int mode, void *arg); static int access_amdsmi_gpu_metrics(int mode, void *arg); -/* Define simple open/close/start/stop functions (most events don't need special handling) */ -static int open_simple(native_event_t *event) { - (void) event; - return PAPI_OK; -} -static int close_simple(native_event_t *event) { - (void) event; - return PAPI_OK; -} -static int start_simple(native_event_t *event) { - (void) event; - return PAPI_OK; -} -static int stop_simple(native_event_t *event) { - (void) event; - return PAPI_OK; -} +/* Simple open/close/start/stop functions (no special handling needed for most events) */ +static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } -/* Load AMD SMI symbols using dlopen and dlsym */ -/* helper ? try preferred symbol then optional fallback */ -static void *sym(const char *preferred, const char *fallback) -{ + +/* Dynamic load of AMD SMI library symbols */ +static void *sym(const char *preferred, const char *fallback) { void *p = dlsym(amds_dlp, preferred); return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); } -/* ------------------------------------------------------------------------ */ -/* load_amdsmi_sym() */ -/* ------------------------------------------------------------------------ */ -static int load_amdsmi_sym(void) -{ - char so_path[PATH_MAX] = {0}; +static int load_amdsmi_sym(void) { const char *root = getenv("PAPI_AMDSMI_ROOT"); + char so_path[PATH_MAX] = {0}; if (!root) { snprintf(error_string, sizeof(error_string), - "PAPI_AMDSMI_ROOT not set ? can¡¯t find libamd_smi.so"); + "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); return PAPI_ENOSUPP; } snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); @@ -173,84 +162,72 @@ static int load_amdsmi_sym(void) "dlopen(\"%s\"): %s", so_path, dlerror()); return PAPI_ENOSUPP; } - - /* ------------ resolve every function pointer ------------- */ - amdsmi_init_p = sym("amdsmi_init", NULL); - amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); - amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); - amdsmi_get_processor_handles_by_type_p= sym("amdsmi_get_processor_handles_by_type", - NULL); - - /* sensors ------------------------------------------------ */ - amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); - amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); - amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); - amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); - - /* memory ------------------------------------------------- */ - amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", - "amdsmi_get_total_memory"); - amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", - "amdsmi_get_memory_usage"); - - /* utilisation / activity -------------------------------- */ - amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", - "amdsmi_get_engine_usage"); /* old alias */ - - /* power -------------------------------------------------- */ - amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); - //"amdsmi_get_power_info_v2", - amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); - amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", - "amdsmi_dev_set_power_cap"); - - /* PCIe --------------------------------------------------- */ - amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); - amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", - NULL); - - /* clocks ------------------------------------------------- */ - amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); - amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); - - /* GPU metrics ------------------------------------------- */ - amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); - - /* ------------ verify required symbols ------------------ */ + /* Resolve required function symbols */ + amdsmi_init_p = sym("amdsmi_init", NULL); + amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); + amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); + amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); + + /* Sensors */ + amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); + amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); + amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); + amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); + + /* Memory */ + amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); + + /* Utilization / activity */ + amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); /* fallback for older name */ + + /* Power */ + amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); + amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); + amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); + + /* PCIe */ + amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); + amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); + + /* Clocks */ + amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); + amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); + + /* GPU metrics */ + amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); + + /* Verify that all required symbols are loaded */ struct { const char *name; void *ptr; } required[] = { - { "amdsmi_init", amdsmi_init_p }, - { "amdsmi_shut_down", amdsmi_shut_down_p }, - { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, + { "amdsmi_init", amdsmi_init_p }, + { "amdsmi_shut_down", amdsmi_shut_down_p }, + { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, { "amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p }, - { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, - { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, - { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, - { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, - { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, - { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, - { "amdsmi_get_power_info", amdsmi_get_power_info_p }, + { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, + { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, + { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, + { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, + { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, + { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, + { "amdsmi_get_power_info", amdsmi_get_power_info_p }, { "amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p }, { "amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p }, - { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, - { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, - { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, - { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, - { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, - { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, + { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, + { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, + { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, + { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, + { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, + { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p } }; - - int miss = 0, pos = 0; - pos = snprintf(error_string, sizeof(error_string), - "Error loading AMD?SMI symbols:"); + int miss = 0; + int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); for (size_t i = 0; i < sizeof(required)/sizeof(required[0]); ++i) { if (!required[i].ptr) { - ++miss; - pos += snprintf(error_string + pos, - sizeof(error_string) - pos, - "\n %s", required[i].name); + miss++; + pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); } } - if (miss) { /* something missing */ + if (miss) { dlclose(amds_dlp); amds_dlp = NULL; return PAPI_ENOSUPP; } @@ -258,10 +235,8 @@ static int load_amdsmi_sym(void) } -static int -unload_amdsmi_sym(void) -{ - // Reset all function pointers +static int unload_amdsmi_sym(void) { + /* Reset all function pointers and close library */ amdsmi_init_p = NULL; amdsmi_shut_down_p = NULL; amdsmi_get_socket_handles_p = NULL; @@ -288,22 +263,22 @@ unload_amdsmi_sym(void) return PAPI_OK; } -/* Initialize AMD SMI library and event table */ -int -amds_init(void) -{ + + +/* Initialize AMD SMI library and discover devices */ +int amds_init(void) { int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { - // if init fails, get error string if possible strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } htable_init(&htable); - // Discover devices (sockets and GPU handles) + + // Discover GPU devices (get socket handles, then GPU handles) uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { @@ -323,64 +298,63 @@ amds_init(void) papi_errno = PAPI_ENOSUPP; goto fn_fail; } - // Count GPU devices and store their handles + + // **FIX**: Handle multiple GPUs per socket by counting total GPUs first device_count = 0; - // First, allocate a buffer for maximum possible processors (GPUs) - // We assume at most one GPU per socket (except APUs, but those count as one GPU as well) - device_handles = (amdsmi_processor_handle *) papi_calloc(socket_count, sizeof(amdsmi_processor_handle)); - if (!device_handles) { + uint32_t total_gpu_count = 0; + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count); + if (st == AMDSMI_STATUS_SUCCESS) { + total_gpu_count += gpu_count; + } + } + if (total_gpu_count == 0) { + sprintf(error_string, "No AMD GPU devices found."); + papi_errno = PAPI_ENOEVNT; papi_free(sockets); + goto fn_fail; + } + device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count, sizeof(*device_handles)); + if (!device_handles) { papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for device handles."); + papi_free(sockets); goto fn_fail; } + + // Retrieve GPU processor handles for each socket for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count = 0; - processor_type_t processor_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - //ret = amdsmi_get_processor_type(gpu_handle[j], &processor_type); - ///////////////////////////////////////////////////////////////////////FIX - ///////////////////////////////////////////////////////////////////////FIX - ///////////////////////////////////////////////////////////////////////FIX - ///////////////////////////////////////////////////////////////////////FIX - ///////////////////////////////////////////////////////////////////////FIX - ///////////////////////////////////////////////////////////////////////FIX - - status = amdsmi_get_processor_handles_by_type_p(sockets[s], - processor_type, - NULL, /* NULL buffer */ - &gpu_count); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count == 0) - continue; - - if (gpu_count > 0) { - // There might be multiple GPU handles if socket has multiple GPU dies (e.g., MI200 series GCDs). - // For simplicity, handle one GPU per call. If gpu_count > 1, allocate accordingly. - amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *)papi_calloc(gpu_count, - sizeof(*gpu_handles)); - if (!gpu_handles) { - papi_errno = PAPI_ENOMEM; - continue; - } - status = amdsmi_get_processor_handles_by_type_p(sockets[s], - processor_type, - gpu_handles, - &gpu_count); - if (status == AMDSMI_STATUS_SUCCESS) { - for (uint32_t g = 0; g < gpu_count; ++g) { - device_handles[device_count++] = gpu_handles[g]; - } + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count == 0) { + continue; // no GPU on this socket or error + } + amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count, sizeof(*gpu_handles)); + if (!gpu_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for GPU handles on socket %u.", s); + papi_free(sockets); + goto fn_fail; + } + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count); + if (status == AMDSMI_STATUS_SUCCESS) { + for (uint32_t g = 0; g < gpu_count; ++g) { + device_handles[device_count++] = gpu_handles[g]; } - papi_free(gpu_handles); } + papi_free(gpu_handles); } papi_free(sockets); - if (device_count == 0) { sprintf(error_string, "No AMD GPU devices found."); papi_errno = PAPI_ENOEVNT; goto fn_fail; } - // Initialize event tables for all discovered metrics + // Initialize the native event table for all discovered metrics papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing the native event table."); @@ -388,32 +362,27 @@ amds_init(void) } ntv_table_p = &ntv_table; return PAPI_OK; + fn_fail: htable_shutdown(htable); if (device_handles) { papi_free(device_handles); device_handles = NULL; device_count = 0; } + if (sockets) papi_free(sockets); amdsmi_shut_down_p(); unload_amdsmi_sym(); return papi_errno; } -int -amds_shutdown(void) -{ +int amds_shutdown(void) { shutdown_event_table(); shutdown_device_table(); htable_shutdown(htable); - // Shutdown AMD SMI library - amdsmi_shut_down_p(); + amdsmi_shut_down_p(); // shutdown AMD SMI library return unload_amdsmi_sym(); } -/* Retrieve last error string */ -int -amds_err_get_last(const char **err_string) -{ - if (err_string) { - *err_string = error_string; - } + +int amds_err_get_last(const char **err_string) { + if (err_string) *err_string = error_string; return PAPI_OK; } @@ -438,9 +407,7 @@ amds_evt_enum(unsigned int *EventCode, int modifier) return PAPI_EINVAL; } -int -amds_evt_code_to_name(unsigned int EventCode, char *name, int len) -{ +int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { if (EventCode >= (unsigned int) ntv_table_p->count) { return PAPI_EINVAL; } @@ -448,21 +415,17 @@ amds_evt_code_to_name(unsigned int EventCode, char *name, int len) return PAPI_OK; } -int -amds_evt_name_to_code(const char *name, unsigned int *EventCode) { +int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { native_event_t *event = NULL; - int hret = htable_find(htable, name, (void**)&event); + int hret = htable_find(htable, name, (void **) &event); if (hret != HTABLE_SUCCESS) { return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; } - *EventCode = event->id; // assign the found event¡¯s ID + *EventCode = event->id; return PAPI_OK; } - -int -amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) -{ +int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { if (EventCode >= (unsigned int) ntv_table_p->count) { return PAPI_EINVAL; } @@ -470,6 +433,7 @@ amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) return PAPI_OK; } + /* Context management: open/close, start/stop, read/write, reset */ struct amds_ctx { int state; @@ -576,36 +540,31 @@ amds_ctx_reset(amds_ctx_t ctx) return PAPI_OK; } -/* Build the native event table with all supported events */ -static int -init_event_table(void) -{ - // Maximum possible events (rough estimate): - // For each GPU device, for each metric category, multiple events. - // We allocate an initial array and will resize if needed. - int max_events_guess = 512 * device_count; - ntv_table.events = (native_event_t *) papi_calloc(max_events_guess, sizeof(native_event_t)); + + +/* Initialize native event table: enumerate all supported events */ +static int init_event_table(void) { + ntv_table.count = 0; + int idx = 0; + ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); if (!ntv_table.events) { return PAPI_ENOMEM; } - ntv_table.count = 0; - int idx = 0; char name_buf[PAPI_MAX_STR_LEN]; char descr_buf[PAPI_MAX_STR_LEN]; - // Temperature metrics: for each device, each sensor type, each temperature metric - amdsmi_temperature_metric_t temp_metrics[] = { - AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, - AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, - AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, - AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, - AMDSMI_TEMP_CRIT_MIN, AMDSMI_TEMP_CRIT_MIN_HYST, - AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST - }; + /* Temperature sensors (only include if sensor is present) */ amdsmi_temperature_type_t temp_sensors[] = { - AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_PLX + AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0 , AMDSMI_TEMPERATURE_TYPE_HBM_1 , AMDSMI_TEMPERATURE_TYPE_HBM_2 , + AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX // HBM sensors omitted for brevity; could include TEMPERATURE_TYPE_HBM_0.._HBM_3 if needed }; + const amdsmi_temperature_metric_t temp_metrics[] = { + AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, + AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, + AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, + AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST + }; const char *temp_metric_names[] = { "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", @@ -613,15 +572,17 @@ init_event_table(void) }; for (int d = 0; d < device_count; ++d) { for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { - // To avoid adding unsupported sensor metrics: call AMD SMI for current temperature, if fails, skip sensor entirely + // Probe if sensor exists by reading current temperature int64_t dummy_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &dummy_val) != AMDSMI_STATUS_SUCCESS) { - continue; // skip this sensor if no current temp (likely sensor not present) + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &dummy_val) + != AMDSMI_STATUS_SUCCESS) { + continue; // skip this sensor if not present } for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { - // Event name example: "temp_current:device=0:sensor=0" - snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, temp_metric_names[mi], (int) temp_sensors[si]); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", + temp_metric_names[mi], d, (int) temp_sensors[si]); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", + d, temp_metric_names[mi], (int) temp_sensors[si]); native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); @@ -636,15 +597,15 @@ init_event_table(void) ev->start_func = start_simple; ev->stop_func = stop_simple; ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, ev); + htable_insert(htable, ev->name, ev); // store pointer to event (not &id) idx++; } } } - // Fan metrics: assume one fan sensor (index 0) per device + /* Fan metrics (assume one fan sensor index 0 per device) */ for (int d = 0; d < device_count; ++d) { - // Fan RPM + // Fan RPM (speed in RPM) snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); native_event_t *ev_rpm = &ntv_table.events[idx]; @@ -654,16 +615,17 @@ init_event_table(void) ev_rpm->device = d; ev_rpm->value = 0; ev_rpm->mode = PAPI_MODE_READ; - ev_rpm->variant = 0; // not used - ev_rpm->subvariant = 0; // sensor index + ev_rpm->variant = 0; + ev_rpm->subvariant = 0; ev_rpm->open_func = open_simple; ev_rpm->close_func = close_simple; ev_rpm->start_func = start_simple; ev_rpm->stop_func = stop_simple; ev_rpm->access_func = access_amdsmi_fan_rpms; - htable_insert(htable, ev_rpm->name, &ev_rpm->id); + htable_insert(htable, ev_rpm->name, ev_rpm); idx++; - // Fan speed percentage (relative value) + + // Fan speed (relative value 0-255, read-only; write not implemented) snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); native_event_t *ev_fan = &ntv_table.events[idx]; @@ -672,19 +634,19 @@ init_event_table(void) ev_fan->descr = strdup(descr_buf); ev_fan->device = d; ev_fan->value = 0; - ev_fan->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; - ev_fan->variant = 0; // not used + ev_fan->mode = PAPI_MODE_READ; /* FIX: only read supported, write not implemented */ + ev_fan->variant = 0; ev_fan->subvariant = 0; ev_fan->open_func = open_simple; ev_fan->close_func = close_simple; ev_fan->start_func = start_simple; ev_fan->stop_func = stop_simple; ev_fan->access_func = access_amdsmi_fan_speed; - htable_insert(htable, ev_fan->name, &ev_fan->id); + htable_insert(htable, ev_fan->name, ev_fan); idx++; } - // VRAM memory usage and total for each device + /* VRAM memory metrics */ for (int d = 0; d < device_count; ++d) { // Total VRAM snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); @@ -703,8 +665,9 @@ init_event_table(void) ev_mem_tot->start_func = start_simple; ev_mem_tot->stop_func = stop_simple; ev_mem_tot->access_func = access_amdsmi_mem_total; - htable_insert(htable, ev_mem_tot->name, &ev_mem_tot->id); + htable_insert(htable, ev_mem_tot->name, ev_mem_tot); idx++; + // Used VRAM snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); @@ -722,93 +685,108 @@ init_event_table(void) ev_mem_use->start_func = start_simple; ev_mem_use->stop_func = stop_simple; ev_mem_use->access_func = access_amdsmi_mem_usage; - htable_insert(htable, ev_mem_use->name, &ev_mem_use->id); + htable_insert(htable, ev_mem_use->name, ev_mem_use); idx++; } - // GPU power metrics: average power, power cap and cap range. + /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < device_count; ++d) { - // Average power consumption (in microWatts) - snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); - native_event_t *ev_pwr_avg = &ntv_table.events[idx]; - ev_pwr_avg->id = idx; - ev_pwr_avg->name = strdup(name_buf); - ev_pwr_avg->descr = strdup(descr_buf); - ev_pwr_avg->device = d; - ev_pwr_avg->value = 0; - ev_pwr_avg->mode = PAPI_MODE_READ; - ev_pwr_avg->variant = 0; - ev_pwr_avg->subvariant = 0; - ev_pwr_avg->open_func = open_simple; - ev_pwr_avg->close_func = close_simple; - ev_pwr_avg->start_func = start_simple; - ev_pwr_avg->stop_func = stop_simple; - ev_pwr_avg->access_func = access_amdsmi_power_average; - htable_insert(htable, ev_pwr_avg->name, &ev_pwr_avg->id); - idx++; - // Power cap (current limit) - snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); - native_event_t *ev_pcap = &ntv_table.events[idx]; - ev_pcap->id = idx; - ev_pcap->name = strdup(name_buf); - ev_pcap->descr = strdup(descr_buf); - ev_pcap->device = d; - ev_pcap->value = 0; - ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; - ev_pcap->variant = 0; - ev_pcap->subvariant = 0; - ev_pcap->open_func = open_simple; - ev_pcap->close_func = close_simple; - ev_pcap->start_func = start_simple; - ev_pcap->stop_func = stop_simple; - ev_pcap->access_func = access_amdsmi_power_cap; - htable_insert(htable, ev_pcap->name, &ev_pcap->id); - idx++; - // Power cap range min - snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); - native_event_t *ev_pcap_min = &ntv_table.events[idx]; - ev_pcap_min->id = idx; - ev_pcap_min->name = strdup(name_buf); - ev_pcap_min->descr = strdup(descr_buf); - ev_pcap_min->device = d; - ev_pcap_min->value = 0; - ev_pcap_min->mode = PAPI_MODE_READ; - ev_pcap_min->variant = 1; // indicate min variant - ev_pcap_min->subvariant = 0; - ev_pcap_min->open_func = open_simple; - ev_pcap_min->close_func = close_simple; - ev_pcap_min->start_func = start_simple; - ev_pcap_min->stop_func = stop_simple; - ev_pcap_min->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_min->name, &ev_pcap_min->id); - idx++; - // Power cap range max - snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); - native_event_t *ev_pcap_max = &ntv_table.events[idx]; - ev_pcap_max->id = idx; - ev_pcap_max->name = strdup(name_buf); - ev_pcap_max->descr = strdup(descr_buf); - ev_pcap_max->device = d; - ev_pcap_max->value = 0; - ev_pcap_max->mode = PAPI_MODE_READ; - ev_pcap_max->variant = 2; // indicate max variant - ev_pcap_max->subvariant = 0; - ev_pcap_max->open_func = open_simple; - ev_pcap_max->close_func = close_simple; - ev_pcap_max->start_func = start_simple; - ev_pcap_max->stop_func = stop_simple; - ev_pcap_max->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_max->name, &ev_pcap_max->id); - idx++; + // Check support for power metrics on this device + amdsmi_power_info_t pinfo; + amdsmi_power_cap_info_t cinfo; + amdsmi_status_t stat_avg = amdsmi_get_power_info_p(device_handles[d], &pinfo); + amdsmi_status_t stat_cap = amdsmi_get_power_cap_info_p(device_handles[d], 0, &cinfo); + if (stat_avg != AMDSMI_STATUS_SUCCESS && stat_cap != AMDSMI_STATUS_SUCCESS) { + // Device supports neither power reading nor capping + continue; + } + if (stat_avg == AMDSMI_STATUS_SUCCESS) { + // Average power consumption (in Watts or microWatts) + snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); + native_event_t *ev_pwr_avg = &ntv_table.events[idx]; + ev_pwr_avg->id = idx; + ev_pwr_avg->name = strdup(name_buf); + ev_pwr_avg->descr = strdup(descr_buf); + ev_pwr_avg->device = d; + ev_pwr_avg->value = 0; + ev_pwr_avg->mode = PAPI_MODE_READ; + ev_pwr_avg->variant = 0; + ev_pwr_avg->subvariant = 0; + ev_pwr_avg->open_func = open_simple; + ev_pwr_avg->close_func = close_simple; + ev_pwr_avg->start_func = start_simple; + ev_pwr_avg->stop_func = stop_simple; + ev_pwr_avg->access_func = access_amdsmi_power_average; + htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); + idx++; + } + if (stat_cap == AMDSMI_STATUS_SUCCESS) { + // Current power cap limit + snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); + native_event_t *ev_pcap = &ntv_table.events[idx]; + ev_pcap->id = idx; + ev_pcap->name = strdup(name_buf); + ev_pcap->descr = strdup(descr_buf); + ev_pcap->device = d; + ev_pcap->value = 0; + ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; + ev_pcap->variant = 0; + ev_pcap->subvariant = 0; + ev_pcap->open_func = open_simple; + ev_pcap->close_func = close_simple; + ev_pcap->start_func = start_simple; + ev_pcap->stop_func = stop_simple; + ev_pcap->access_func = access_amdsmi_power_cap; + htable_insert(htable, ev_pcap->name, ev_pcap); /* FIX: store pointer (not &id) */ + idx++; + + // Minimum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); + native_event_t *ev_pcap_min = &ntv_table.events[idx]; + ev_pcap_min->id = idx; + ev_pcap_min->name = strdup(name_buf); + ev_pcap_min->descr = strdup(descr_buf); + ev_pcap_min->device = d; + ev_pcap_min->value = 0; + ev_pcap_min->mode = PAPI_MODE_READ; + ev_pcap_min->variant = 1; // variant 1 => min + ev_pcap_min->subvariant = 0; + ev_pcap_min->open_func = open_simple; + ev_pcap_min->close_func = close_simple; + ev_pcap_min->start_func = start_simple; + ev_pcap_min->stop_func = stop_simple; + ev_pcap_min->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_min->name, ev_pcap_min); + idx++; + + // Maximum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); + native_event_t *ev_pcap_max = &ntv_table.events[idx]; + ev_pcap_max->id = idx; + ev_pcap_max->name = strdup(name_buf); + ev_pcap_max->descr = strdup(descr_buf); + ev_pcap_max->device = d; + ev_pcap_max->value = 0; + ev_pcap_max->mode = PAPI_MODE_READ; + ev_pcap_max->variant = 2; // variant 2 => max + ev_pcap_max->subvariant = 0; + ev_pcap_max->open_func = open_simple; + ev_pcap_max->close_func = close_simple; + ev_pcap_max->start_func = start_simple; + ev_pcap_max->stop_func = stop_simple; + ev_pcap_max->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_max->name, ev_pcap_max); + idx++; + } } - // PCIe throughput and replay counter + /* PCIe throughput and replay counter metrics */ for (int d = 0; d < device_count; ++d) { - // PCIe sent + // PCIe bytes sent snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); native_event_t *ev_pci_tx = &ntv_table.events[idx]; @@ -818,16 +796,17 @@ init_event_table(void) ev_pci_tx->device = d; ev_pci_tx->value = 0; ev_pci_tx->mode = PAPI_MODE_READ; - ev_pci_tx->variant = 0; // variant 0 for sent + ev_pci_tx->variant = 0; // 0 for "sent" ev_pci_tx->subvariant = 0; ev_pci_tx->open_func = open_simple; ev_pci_tx->close_func = close_simple; ev_pci_tx->start_func = start_simple; ev_pci_tx->stop_func = stop_simple; ev_pci_tx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_tx->name, &ev_pci_tx->id); + htable_insert(htable, ev_pci_tx->name, ev_pci_tx); idx++; - // PCIe received + + // PCIe bytes received snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); native_event_t *ev_pci_rx = &ntv_table.events[idx]; @@ -837,15 +816,16 @@ init_event_table(void) ev_pci_rx->device = d; ev_pci_rx->value = 0; ev_pci_rx->mode = PAPI_MODE_READ; - ev_pci_rx->variant = 1; // variant 1 for received + ev_pci_rx->variant = 1; // 1 for "received" ev_pci_rx->subvariant = 0; ev_pci_rx->open_func = open_simple; ev_pci_rx->close_func = close_simple; ev_pci_rx->start_func = start_simple; ev_pci_rx->stop_func = stop_simple; ev_pci_rx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_rx->name, &ev_pci_rx->id); + htable_insert(htable, ev_pci_rx->name, ev_pci_rx); idx++; + // PCIe max packet size snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); @@ -856,16 +836,17 @@ init_event_table(void) ev_pci_pkt->device = d; ev_pci_pkt->value = 0; ev_pci_pkt->mode = PAPI_MODE_READ; - ev_pci_pkt->variant = 2; // variant 2 for max packet + ev_pci_pkt->variant = 2; // 2 for "max_packet" ev_pci_pkt->subvariant = 0; ev_pci_pkt->open_func = open_simple; ev_pci_pkt->close_func = close_simple; ev_pci_pkt->start_func = start_simple; ev_pci_pkt->stop_func = stop_simple; ev_pci_pkt->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_pkt->name, &ev_pci_pkt->id); + htable_insert(htable, ev_pci_pkt->name, ev_pci_pkt); idx++; - // PCIe replay counter + + // PCIe replay counter (NAK counter) snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); native_event_t *ev_pci_replay = &ntv_table.events[idx]; @@ -882,21 +863,20 @@ init_event_table(void) ev_pci_replay->start_func = start_simple; ev_pci_replay->stop_func = stop_simple; ev_pci_replay->access_func = access_amdsmi_pci_replay_counter; - htable_insert(htable, ev_pci_replay->name, &ev_pci_replay->id); + htable_insert(htable, ev_pci_replay->name, ev_pci_replay); idx++; } - // (Optional) GPU metrics group events could be added here, e.g., GPU utilization. - // For brevity, not enumerating all fields of amdsmi_gpu_metrics_t. + // (Optional) Additional GPU metrics (like utilization) could be added here... ntv_table.count = idx; return PAPI_OK; } -static int -shutdown_event_table(void) -{ - // Free allocated names and descriptions + + +static int shutdown_event_table(void) { + // Remove all events from hash table and free their names/descr for (int i = 0; i < ntv_table.count; ++i) { htable_delete(htable, ntv_table.events[i].name); papi_free(ntv_table.events[i].name); @@ -908,16 +888,12 @@ shutdown_event_table(void) return PAPI_OK; } -static int -init_device_table(void) -{ - // Nothing to do; device_handles and device_count are set in amds_init. +static int init_device_table(void) { + // Nothing to do (device_handles and device_count already set in amds_init) return PAPI_OK; } -static int -shutdown_device_table(void) -{ +static int shutdown_device_table(void) { if (device_handles) { papi_free(device_handles); device_handles = NULL; @@ -926,32 +902,35 @@ shutdown_device_table(void) return PAPI_OK; } -/* Access function implementations */ -static int -access_amdsmi_temp_metric(int mode, void *arg) -{ +/* Access function implementations (read/write operations for each event) */ + +static int access_amdsmi_temp_metric(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; /* ensure device handle is valid */ + } if (mode != PAPI_MODE_READ) { return PAPI_ENOSUPP; } - amdsmi_status_t status; - status = amdsmi_get_temp_metric_p(device_handles[event->device], - (amdsmi_temperature_type_t) event->subvariant, - (amdsmi_temperature_metric_t) event->variant, - (int64_t *) &event->value); + amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], + (amdsmi_temperature_type_t) event->subvariant, + (amdsmi_temperature_metric_t) event->variant, + (int64_t *)&event->value); return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } -static int -access_amdsmi_fan_rpms(int mode, void *arg) -{ +static int access_amdsmi_fan_rpms(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) { return PAPI_ENOSUPP; } int64_t speed = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); + amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], + event->subvariant, &speed); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -959,35 +938,29 @@ access_amdsmi_fan_rpms(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_fan_speed(int mode, void *arg) -{ +static int access_amdsmi_fan_speed(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; - if (mode == PAPI_MODE_READ) { - int64_t val = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], event->subvariant, &val); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = val; - return PAPI_OK; - } else if (mode == PAPI_MODE_WRITE) { - // Writing fan speed (in RPMs expected for set function) - uint64_t rpm_val = (uint64_t) event->value; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &event->value); - // Actually, AMD SMI might have a separate function to set fan speed (in RPM). Assume amdsmi_set_gpu_fan_speed exists: - // status = amdsmi_set_gpu_fan_speed_p(device_handles[event->device], event->subvariant, rpm_val); - // Without actual symbol, skip implementing fan speed setting. - (void) rpm_val; - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_ENOSUPP); + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; } - return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; // writing fan speed not supported + } + int64_t val = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], + event->subvariant, &val); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = val; + return PAPI_OK; } -static int -access_amdsmi_mem_total(int mode, void *arg) -{ +static int access_amdsmi_mem_total(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], @@ -999,10 +972,11 @@ access_amdsmi_mem_total(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_mem_usage(int mode, void *arg) -{ +static int access_amdsmi_mem_usage(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], @@ -1014,23 +988,22 @@ access_amdsmi_mem_usage(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_power_cap(int mode, void *arg) -{ +static int access_amdsmi_power_cap(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode == PAPI_MODE_READ) { - // Use amdsmi_get_power_cap_info to retrieve current cap + // Read current power cap amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], &info); + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - // The struct likely has current power_cap in microWatts - // Assuming info.current is the current power cap event->value = (int64_t) info.power_cap; return PAPI_OK; } else if (mode == PAPI_MODE_WRITE) { - // Set new power cap from event->value (in microWatts) + // Set new power cap (value expected in microWatts if API uses uW) uint64_t new_cap = (uint64_t) event->value; amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); @@ -1038,21 +1011,20 @@ access_amdsmi_power_cap(int mode, void *arg) return PAPI_ENOSUPP; } -static int -access_amdsmi_power_cap_range(int mode, void *arg) -{ +static int access_amdsmi_power_cap_range(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], &info); + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } if (event->variant == 1) { - // min event->value = (int64_t) info.min_power_cap; } else if (event->variant == 2) { - // max event->value = (int64_t) info.max_power_cap; } else { return PAPI_EMISC; @@ -1060,71 +1032,45 @@ access_amdsmi_power_cap_range(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_power_average(int mode, void *arg) -{ +static int access_amdsmi_power_average(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_info_t power; - // sensor_id = 0 (only one power sensor) - amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - - // Diagnostic prints for every field in the struct + // Remove debug prints to avoid unnecessary console output + #if 0 printf("=== power info dump ===\n"); - //printf("socket_power : %llu uW (host only)\n", - // (unsigned long long)power.socket_power); - printf("current_socket_power : %u W (linux_bm only)\n", - power.current_socket_power); - printf("average_socket_power : %u W (linux_bm only)\n", - power.average_socket_power); - printf("gfx_voltage : %u %s\n", - power.gfx_voltage, - /* choose unit based on build */ - #ifdef __linux__ - "mV" - #else - "V" - #endif - ); - printf("soc_voltage : %u %s\n", - power.soc_voltage, - #ifdef __linux__ - "mV" - #else - "V" - #endif - ); - printf("mem_voltage : %u %s\n", - power.mem_voltage, - #ifdef __linux__ - "mV" - #else - "V" - #endif - ); - printf("power_limit : %u W (linux_bm only)\n", - power.power_limit); + printf("current_socket_power : %u W\n", power.current_socket_power); + printf("average_socket_power : %u W\n", power.average_socket_power); + printf("gfx_voltage : %u mV\n", power.gfx_voltage); + printf("soc_voltage : %u mV\n", power.soc_voltage); + printf("mem_voltage : %u mV\n", power.mem_voltage); + printf("power_limit : %u W\n", power.power_limit); printf("========================\n"); - + #endif event->value = (int64_t) power.average_socket_power; return PAPI_OK; } -static int -access_amdsmi_pci_throughput(int mode, void *arg) -{ +static int access_amdsmi_pci_throughput(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t sent=0, received=0, max_pkt=0; - amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); + uint64_t sent = 0, received = 0, max_pkt = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], + &sent, &received, &max_pkt); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - switch(event->variant) { + switch (event->variant) { case 0: event->value = (int64_t) sent; break; case 1: event->value = (int64_t) received; break; case 2: event->value = (int64_t) max_pkt; break; @@ -1133,10 +1079,11 @@ access_amdsmi_pci_throughput(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_pci_replay_counter(int mode, void *arg) -{ +static int access_amdsmi_pci_replay_counter(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t counter = 0; amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); @@ -1147,54 +1094,29 @@ access_amdsmi_pci_replay_counter(int mode, void *arg) return PAPI_OK; } -static int -access_amdsmi_clk_freq(int mode, void *arg) -{ -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p - -////////////////////////////////////////////////////// ADD amdsmi_set_clk_freq_p -/* -clk_freq_def_t amd_smi_clocks[] = { - {AMDSMI_CLK_TYPE_SYS, "SelectedClk_SYS_MHz"}, // System clock, often represents GPU clock - {AMDSMI_CLK_TYPE_MEM, "SelectedClk_MEM_MHz"}, // Memory clock - {AMDSMI_CLK_TYPE_DF, "SelectedClk_DF_MHz"}, // Data Fabric clock (if needed and supported) - // {AMDSMI_CLK_TYPE_DCEF, "SelectedClk_DCEF_MHz"} // Display Controller clock (if needed and supported) -}; -*/ +static int access_amdsmi_clk_freq(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; - // For simplicity, we only handle read of "current" frequency and count in this implementation + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_frequencies_t freq_info; - amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS ,&freq_info); + amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - if (event->subvariant == 0) { // count + // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific index + if (event->subvariant == 0) { event->value = freq_info.num_supported; - } else if (event->subvariant == 1) { // current - // Assuming frequencies array and current index are part of freq_info - // If freq_info.current is available: - // event->value = freq_info.frequency[freq_info.current]; - // else, assume first element is current frequency + } else if (event->subvariant == 1) { if (freq_info.num_supported > 0) { - event->value = freq_info.frequency[0]; + event->value = freq_info.frequency[0]; // assume first is current } else { event->value = 0; } } else { - // idx = specific index beyond 'current' int idx = event->subvariant - 2; - if (idx >= 0 && idx < freq_info.num_supported) { + if (idx >= 0 && idx < (int)freq_info.num_supported) { event->value = freq_info.frequency[idx]; } else { return PAPI_EMISC; @@ -1203,17 +1125,18 @@ clk_freq_def_t amd_smi_clocks[] = { return PAPI_OK; } -static int -access_amdsmi_gpu_metrics(int mode, void *arg) -{ +static int access_amdsmi_gpu_metrics(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_gpu_metrics_t metrics; amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - // This would parse metrics structure and set event->value for the specific metric field. - // (Not fully implemented here due to complexity) + // Parsing of metrics is not fully implemented; just return OK. + // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) return PAPI_OK; -} +} \ No newline at end of file diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 70492175e..005898337 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -1,11 +1,8 @@ //----------------------------------------------------------------------------- // @file linux-amd-smi.c -// // @ingroup amd_smi_components // -// @brief This implements a PAPI component that enables PAPI-C to access -// hardware system management controls for AMD GPU devices through the -// AMD SMI library. +// @brief PAPI component for AMD GPU management via the AMD SMI library. //----------------------------------------------------------------------------- #include @@ -38,17 +35,13 @@ papi_vector_t _amd_smi_vector; static int _amd_smi_init_private(void); -static int -_amd_smi_check_n_initialize(void) -{ +static int _amd_smi_check_n_initialize(void) { if (!_amd_smi_vector.cmp_info.initialized) return _amd_smi_init_private(); return _amd_smi_vector.cmp_info.disabled; } -static int -_amd_smi_init_thread(hwd_context_t *ctx) -{ +static int _amd_smi_init_thread(hwd_context_t *ctx) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; memset(amdsmi_ctx, 0, sizeof(*amdsmi_ctx)); amdsmi_ctx->initialized = 1; @@ -56,9 +49,7 @@ _amd_smi_init_thread(hwd_context_t *ctx) return PAPI_OK; } -static int -_amd_smi_init_component(int cidx) -{ +static int _amd_smi_init_component(int cidx) { _amd_smi_vector.cmp_info.CmpIdx = cidx; _amd_smi_vector.cmp_info.num_native_events = -1; _amd_smi_vector.cmp_info.num_cntrs = -1; @@ -66,15 +57,13 @@ _amd_smi_init_component(int cidx) _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; sprintf(_amd_smi_vector.cmp_info.disabled_reason, - "Not initialized. Access component events to initialize it."); + "Not initialized. Access an AMD SMI event to initialize."); _amd_smi_vector.cmp_info.disabled = PAPI_EDELAY_INIT; return PAPI_EDELAY_INIT; } -static int -evt_get_count(int *count) -{ +static int evt_get_count(int *count) { unsigned int event_code = 0; if (amds_evt_enum(&event_code, PAPI_ENUM_FIRST) == PAPI_OK) { ++(*count); @@ -85,9 +74,7 @@ evt_get_count(int *count) return PAPI_OK; } -static int -_amd_smi_init_private(void) -{ +static int _amd_smi_init_private(void) { int papi_errno = PAPI_OK; PAPI_lock(COMPONENT_LOCK); @@ -96,7 +83,7 @@ _amd_smi_init_private(void) goto fn_exit; } - papi_errno = amds_init(); + papi_errno = amds_init(); // initialize AMD SMI library and events if (papi_errno != PAPI_OK) { _amd_smi_vector.cmp_info.disabled = papi_errno; const char *error_str; @@ -120,38 +107,12 @@ _amd_smi_init_private(void) goto fn_exit; } -static int -_amd_smi_init_control_state(hwd_control_state_t *ctrl) -{ - (void) ctrl; // unused +static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { + (void) ctrl; return _amd_smi_check_n_initialize(); } -static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount); -static int try_open_events(amdsmi_control_t *ctl); - -static int -_amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, int nativeCount, hwd_context_t *ctx) -{ - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { - return PAPI_EMISC; - } - papi_errno = update_native_events(amdsmi_ctl, nativeInfo, nativeCount); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return try_open_events(amdsmi_ctl); -} - -static int -update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) -{ +static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) { int papi_errno = PAPI_OK; unsigned int *events = papi_calloc(ntvCount, sizeof(*events)); if (events == NULL) { @@ -167,16 +128,30 @@ update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) return papi_errno; } -static int -try_open_events(amdsmi_control_t *ctl) -{ - // No pre-opening needed in this design (events opened on start) +static int try_open_events(amdsmi_control_t *ctl) { + // No pre-opening needed; events will be opened in amds_ctx_start return PAPI_OK; } -static int -_amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) -{ +static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, + int nativeCount, hwd_context_t *ctx) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { + return PAPI_EMISC; + } + papi_errno = update_native_events(amdsmi_ctl, nativeInfo, nativeCount); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return try_open_events(amdsmi_ctl); +} + +static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { int papi_errno = PAPI_OK; amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; @@ -192,7 +167,7 @@ _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) papi_errno = amds_ctx_start(amdsmi_ctl->amds_ctx); if (papi_errno != PAPI_OK) { - // If start fails, close context + // If start fails, close the context and reset state amds_ctx_close(amdsmi_ctl->amds_ctx); amdsmi_ctx->state = 0; amdsmi_ctl->amds_ctx = NULL; @@ -202,10 +177,8 @@ _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) return PAPI_OK; } -static int -_amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) -{ - (void) flags; // unused +static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) { + (void) flags; amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { @@ -214,9 +187,7 @@ _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, return amds_ctx_read(amdsmi_ctl->amds_ctx, values); } -static int -_amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) -{ +static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { @@ -225,9 +196,7 @@ _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) return amds_ctx_write(amdsmi_ctl->amds_ctx, values); } -static int -_amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) -{ +static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { int papi_errno = PAPI_OK; amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; @@ -245,9 +214,7 @@ _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) return papi_errno; } -static int -_amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) -{ +static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { @@ -256,12 +223,10 @@ _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) return amds_ctx_reset(amdsmi_ctl->amds_ctx); } -static int -_amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) -{ +static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; if (amdsmi_ctl->amds_ctx != NULL) { - // Context should be NULL if properly stopped + // Context should have been closed in _amd_smi_stop return PAPI_EMISC; } papi_free(amdsmi_ctl->events_id); @@ -270,18 +235,14 @@ _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) return PAPI_OK; } -static int -_amd_smi_shutdown_thread(hwd_context_t *ctx) -{ +static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_ctx->state = 0; amdsmi_ctx->initialized = 0; return PAPI_OK; } -static int -_amd_smi_shutdown_component(void) -{ +static int _amd_smi_shutdown_component(void) { if (!_amd_smi_vector.cmp_info.initialized) { return PAPI_EMISC; } @@ -293,25 +254,20 @@ _amd_smi_shutdown_component(void) return papi_errno; } -static int -_amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) -{ +static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) { (void) ctx; (void) code; (void) option; - // No special control actions needed + // No special control actions needed for this component return PAPI_OK; } -static int -_amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) -{ +static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) { (void) ctrl; (void) domain; - // This component only supports the default domain (user|kernel) + // Only default user/kernel domain is supported return PAPI_OK; } -static int -_amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) -{ +/* Native event API functions */ +static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) { int papi_errno = _amd_smi_check_n_initialize(); if (papi_errno != PAPI_OK) { return papi_errno; @@ -319,9 +275,7 @@ _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) return amds_evt_enum(EventCode, modifier); } -static int -_amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) -{ +static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) { int papi_errno = _amd_smi_check_n_initialize(); if (papi_errno != PAPI_OK) { return papi_errno; @@ -329,9 +283,7 @@ _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) return amds_evt_code_to_name(EventCode, name, len); } -static int -_amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) -{ +static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) { int papi_errno = _amd_smi_check_n_initialize(); if (papi_errno != PAPI_OK) { return papi_errno; @@ -339,9 +291,7 @@ _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) return amds_evt_name_to_code(name, EventCode); } -static int -_amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) -{ +static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) { int papi_errno = _amd_smi_check_n_initialize(); if (papi_errno != PAPI_OK) { return papi_errno; @@ -349,6 +299,7 @@ _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) return amds_evt_code_to_descr(EventCode, desc, len); } +/* Export the component interface */ papi_vector_t _amd_smi_vector = { .cmp_info = { .name = "amd_smi", @@ -371,21 +322,21 @@ papi_vector_t _amd_smi_vector = { .reg_value = sizeof(int), .reg_alloc = sizeof(int), }, - .init_thread = _amd_smi_init_thread, - .init_component = _amd_smi_init_component, + .init_thread = _amd_smi_init_thread, + .init_component = _amd_smi_init_component, .init_control_state = _amd_smi_init_control_state, .update_control_state = _amd_smi_update_control_state, - .start = _amd_smi_start, - .stop = _amd_smi_stop, - .read = _amd_smi_read, - .write = _amd_smi_write, - .reset = _amd_smi_reset, + .start = _amd_smi_start, + .stop = _amd_smi_stop, + .read = _amd_smi_read, + .write = _amd_smi_write, + .reset = _amd_smi_reset, .cleanup_eventset = _amd_smi_cleanup_eventset, - .shutdown_thread = _amd_smi_shutdown_thread, + .shutdown_thread = _amd_smi_shutdown_thread, .shutdown_component = _amd_smi_shutdown_component, - .ctl = _amd_smi_ctrl, - .set_domain = _amd_smi_set_domain, - .ntv_enum_events = _amd_smi_ntv_enum_events, + .ctl = _amd_smi_ctrl, + .set_domain = _amd_smi_set_domain, + .ntv_enum_events = _amd_smi_ntv_enum_events, .ntv_code_to_name = _amd_smi_ntv_code_to_name, .ntv_name_to_code = _amd_smi_ntv_name_to_code, .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, diff --git a/src/components/amd_smi/tests/amdsmi_example b/src/components/amd_smi/tests/amdsmi_example index 3e292bb6e7da70f0d2374bcaed40c4c1a8436ead..1d3d3ae311c6ab76484b98d28d277f2d8e0f0767 100755 GIT binary patch literal 1540160 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 z z!nVz}lH);99RKwe-7ns+>>`9^X$1(h@>YP!!<3h+CG2}|J#rN4D7&bMuR3WSH1=C< z?v2gCY+g3kho;&2uGpI4a_>T)da~_FD|yn&p0tW5ZO4;#SEXro`YxO+PY!Jc%PHMl zN-vj^8CcfiknaLJMwXue#41L6qb^A)@l7$kl2^Q;-QCENTf z2JxM;%1>TkaHN$ap=RZSgG!5d(;fsy!5XRLv0T)V8Jm{su%zU@CFCczmAhf+0+xln zre%!S#f(x>WN)KwqdV`x7#*} zdAgk|?~H*uBxM-s0cEF4mudywg^`*MAGcaTx4z+?DM2RXN@)*zcDqt0Qf>b!{q$chua$qcvG*NyS_1#F+;}U$EI{gUguFY) z#Z9z8)MHwyDUJ#uqyzDPfC8uFgrbu*Q$C~@!>5D=Korn4T@E_Bpyy3op0~!}3^~@O zgjyHl+TOmJ7rHK!Zs}0d=uWmfFCcX>FAH`8ZwpdJASxI&K7D1`CEIXLM-&s%?|R6yamGu9OT|Nw>$#Hqtp(QjUypF|%VF z2Xl6)1=P(@A;Do3+JX~EPZ$$k2Zlw?xMYn7?ow+?scO+q=@P)zC#Th@ln!deeTW1{ zbb2P}m042SNUesy!!}-Xkt^yMJT91PR^(EfWgd+IQLAHbfTj5Ww^~zTGwbo5IwGZi z0!Au)u3rLYBOmVy#7#3%enn=Y-KaJy?HZ2Qn5~sEO|G)qh z_CO-f`Uh}0@QTfD$siDhG&K)qh@T{;vBRg0;*FapTr5trin?X4QrrTE zJ3i_37i22ORm8~-59fmgnKW*q@DLn)LN^f9rAKE08u}-kJK|>ZzrbnAZ8^VeoV4Lo z1$8^yl28pO?m{-0eQ7K7LY`bgAqvo!7><}C#$GO=kd_D02p~tFRqUMcjD?nZaG!Be z$37O|!s3#bP>9BwUQsCI4GIZCkUWV{I9K6-OpjTxPQu#tb?7P3{W*d}pEfli$!idv z954x;6rV`e(FYw^SkfnplJNMFLPJ*sQI*#@Y6Wj-U7zAi82LnPvzrgfG8v87k!BVo+8BO|GGf8O&B`sTu_jJ_o$SrR@ozvgh$!c`I1a zdqrgzd$2r%`)qizF5xB$l=!6KCWS&2DQu!Mcs2#30jOb{fSG%U4B@a?y4)QmFfQc; z*aPEVfKb3U0AIu%gv;XG7C}-JTg&kq8sYfL=wukzyQR(m2PR-`6QV=W7>GdJYqa-2 zY*c_bjS=`URad(pAd%w$DUejdBAqeW*1#ADY@%=w{7V5P2A|Mx9nZtJRcjNOAsLFv zM8gUoS{XDV^KGwDX~FK&!W1tObgJnWnBx2p0qeMx$3|VRidof{g`H!tdeWRZG?bzH zq4B;$JiB8;tSKPNI#IT$PwINzPrOe7?0`bf6m&p#^yW!Cz4u`th9YOIum&3Kc5Fr_~8+PxvY^@pk?fh=}JW^Ss#n4&nm$ z;ofRD_Vn$mS%kV9J>hX%InkHJT^UZl$ii}L1h+AD#jCf^PRZroxdk37YNqTzm+3Tf zZVg+k-39rl#3r~XKaf__bZ8|sJY2pWZ`@YlkScUB^Ml+z!L0>2RgbgzBlvhlhc4B) zPoWxDDB}if0?lyrxl*hXFW>-bv9fgj+EE}#ENa!$oIuYPk$9x1Nd9R0s{MIIoF}Vy zH=B!>cT6+X8;=64y>)U2UpiYZoh|MWR1Wh4(#fGT+53UGgp6O3P&c8RKW=b&b*lst zF0UoqcIxQrMMoAM>{fTGILJr(GwrFut@~|abcM~j`rNpS!>;b}VNaN$uOc$bs3QK{ zxXYh{%ThgvHnb1-=IT)kXs_01L4C#;@Z3jw^j$5kx_ZZR8Ap1q7E6SgSoyY%Pf?sA z*$4TPx{FkBI-05?<1(cmTCX55^}8T22@I1~Rvsbl`6N)rqenY}_;{gJnyLR67DMiw_<_>oKPoL}N>| zy2T|!7c?wsbBT^8+cesnt$SJegmnZ%%TY1BCFc&DraY?4LN(8ktIKpcr!{93vL!K! zWpNY!itQQ8k4!eOL}l_faIuPuEvt5x93uEQ`jc0r-Z^oi7~VN)ezB~W`O8aRbGSVBFF!na z0CidMH{urE+0CL2hsJskkvN8SgqzxNK9;WY&Z`0LrGxb%E;Oyx_DX!>3$w|WX1E=D z4hVb|lzQ3t#OmZd`QhRz#QSk-4y16VSQ!1$tnl3$I?lvx1g@CYm3aJL}Rrl?zs(vTYsowcj)s955{M0W2k~I*2=Ee)>oKM`Puc+d>TK-=}#Q=Jfep>a9|xL zLHRa*F+1pb=z3cZ7)Mk9qE;ZBGYQMoC%(*v9yY8Ms(1vH{y;$PhfXc$Q;iDH7l5AZ zGiU>kIL>z>h2&iNg?~=J85ye*px8L2k&=}*Kc|^RX)%rGQp;YYUazhazB0W&r#jk5 zkN>9YXwigOV_Mqu_ml+08lO`)b=x(hs#-DMvUY94bvDI$6;(~vvL*f|26SFE)ia_6 zJK~%ws=e{-srWd+Jy$)w=)UmF3v|I^uRrb5!F$;APx_r0N{d(!h$2_NDd9#mbtj4f z6^e9P-CVGt-1o#w_YYbH+&taHJ>+swDrPcjSGNxEMU}}@+?GXmGa_AHolPPa7D&Zp#W%S z2QSed;MH`1N9sv7*QtX|( z?N_Zx^oOc>?iE1S=urSRpWKD5K0jYI)iO^deVQAgZ!JQble3t_y|%0kyTpZ2jb?mp zKJ4M@7d)0m)dwpviPsyR^$!s>B7H-@)J3CuP?BF_{*wBfL>J zy|JHkPs*e2^v3O5U%Yj@y|sRGtBreJ+P~RoZ*R88^TYLT^v7?aCfp7)z{5WJ&X}w_ z^iJg0=eX@St|xfYk9j^W&luAMGi&kLNgwyE(yOBB#W1J~7r~INb9?y|TR_wWsMq;^TXpH@b-MI3yP}6K z`O(*@(ml{;3Ej<%tBKh|0q28)Vbrb9==wz6W|lqigyK-rU_5XWN+Z`UiuJfPT8pb! zPwDAa0&*~UcrtW8qrnQVj;cYZ7IwISGg^C3u3!RK^MuZtx1+C*@vf;n&J|x%l*X9T zXm}m3nkIO|Fg6zpdy3FCZpr%bdR&JxN2JCS6u0o2R%a5I`Ign|4ZdWUwpiMDgByR+ z8O)REo9@EH)!?0qK&*$t3=8xtJ1GjdO8ZK%&Y|2p`x~Q6Sy6hJjVcrsJ`&?SgimHe`v=>l(P_*QKB&oEwTdvY& zTE&|8i6f^22dKs%ZL0=$owEs2O-&Qh5sW9cHu2b28Zj1pi6PD5(MHqX&e^Tq{rhRR zRvme;gMxmrIL{5yIm;7@yIV5WbWS|;B_Tn(Jɑzr!40*pCDw{P8FWS-F+IwAcq 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

k)=tpa!j2g^ff=t@m7R0v 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%0DxJrupcLCU7n(Zli7!|~Llo!vv8OwKGrZL4$j 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⁡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 H1^NFUlJI&Q literal 1243592 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�NNB~~DbYg^JJ3(uSmdMPC4fUK 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

fG8mox=&C73S5do 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�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 diff --git a/src/components/amd_smi/tests/gemm_example b/src/components/amd_smi/tests/gemm_example index 2ee0d684ce26f6f3ec93611a59e1f18640d9fef6..4b6c9e21befbc6c76681102af335efe36e0924ee 100755 GIT binary patch literal 1563152 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≪zHzCf$ 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�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%0ADcG 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


Xv4rWR+t{{5wNYZT4xd7<5 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�b+5}S=R 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 k;<>!#FZ`bI*LKF-dHWsxFRgBL>i_@% diff --git a/src/components/amd_smi/tests/gemm_example.o b/src/components/amd_smi/tests/gemm_example.o index c95934f0283ef41065808596a45552d3695f7a53..203dc67f92572a01dfd06130a998e93da9f01289 100644 GIT binary patch delta 3120 zcmeHJeQZ-z6uFk;v^nut*ce;6gk1XDlIKWsq~kwi15e>g&P37SA+!oV0I66byW2r&N9#EgHu z$-U>DbAIQXd+)jL-jh9#$G*p7>&T>k{E^?6wqS%_Zgjtrd{}!0(KedZjH9R#2o&9)-#%y$qWyRqFEhYs9{ILh!`~qe+zZSbQZ|4QJ~g$0BHLkAl;t z#cj}ITT5mgu*YUxffzcytUSe*1KY#SPu{&H{TSaXJ7(azQ&0Dkf!SUqOxw0-E%th= z)f=?>?B<}wTIYvGySYR`p)S~MpHO3T?gCo6p3u}*&nZCNuu>u+y0Iaa9DEU>vy)0h z&`y-vkBlQF-hqS15>f2q{!U6DoC;O2(=PA{7-DcExfVl2T7yVvxjfr@3K7zg0+5 z9b{QcisNibl`6!gN;7fIp$u2au-E4H(ZC~_qGLHAJ&qUfV#G`!QiWvabOB|A9ioe} zFbZOmeIg{$>2cY0bOCX6D8r!PDMro{!?F@eB`+aHqTDcbmRjg8Ep)(n@uUS`@x2qE z`+u)sfqCfxOWkRO}B312G{P5|ctA-ajDt#HcVZ z7>~yiNs93868pkYe;)+|1b@Ig*e8Ue!I%(?B?K`N5n=;EJP`|qBY^?aK*DE=M4st? zj7oL}e90X1&nHZmY=n3dOHwA-)3o}|8+WGZ+xy?GW1HgmCg_??O1`jpbVHl#mBp)}}Yb9f3|?Rwxl z+}HrmcbIS&oai`=6|x?0gPzSM{4xDD;V)9`6EDDJQdNFjn|;WD5p1b?c$2TeaxeUD8tMr_up}WFsaIadO#HG zF%L&Y2OX!ywfH(gYm)Em!Tr}Wc!R6JHF#&qL9mHKtZS?S&*FfAIaM4STp#aN$ z&BW6Iy_94Hc!QD<)lqVzBX`x%1CDhXgfCGAB JbHnmL_1}D-WqAMq delta 1868 zcmb7EUu;ul6#u@jx81#6x3%NX-AJH!3yv`m+On?gm|MI5f04$SC_~D&w(CWO4p`tp z`e!mI0Rr2JiTdD#mT&6zIP8OvsCG+L* z$Yh*RhFI7HuPIw;Luy(%REA*Dj76jxkSt~?S;CVNvK_3J*=Q5C#i<~PF=umFhwLuS z+3qd>mEoL8=7hZR)VXB-Tykg5Uy%7|k}nG{T21B8)_}v-n(Ala+~I#q!`If}`Ulz^ zT#$u^iV*%0Ua(bDQ|e9IsFs#M#?eO`V7+q-PDBgIT>|tw4YUcyJ)1fT4dxrmHpq3( z>yRbl#>_^3jimMTkm|nv@$VD8t|4BIGeg$EqG{EPD#4<&*EnMJ2W);v!0LBegI2p8 zeQTiGwGnFzv<=2xv!FDtiCqP(ysIHmiAC40wTYD#P7V~4XtDl=KAzC&Y%x)E>SMaJq}PYSWmtsV%1E+K zc(`&Bo0?1)lJW*LZn4^wfPEzB2-xkTE^EEZGGcLz*1P;pSA!)u>~J}E_?->)t{n}d^_vOlR}a1( zINYds2HKVW{&vOc+-BKk!OV(&FR#Z$;@$#{&JDRuVac8FzUTI{_j|lGOdr5f>vpL& z-)AjUwK=3h*9jO#E1CBt;SyR4d20a{+fK743d^AlkZ3pRpS-tXxZK`gO6H$m;aTkl zYrqU*htX8n+k%IuFvIQ;?sms&seoRB&k#*?RIpbJaJi#dnm6P|Igt$)J1eA){C^>k zMY=odb2GL5|Cz$0&aKn|>$}`^Uus`hHKngYyjzA?w~lJzboV$Idn)K%*xd64hAs9) z=@A(2y+D74HvFvM_@84PMu3aQ9cx6C8ptYG=;?mEV(kh;06hSA5cyj!mPgFkL0 zzF!-V|6IwD4ywFzWeI=cNZhL+7rf=*^~%(oQoVrr;IEft*g9w^c{jhM{FDx!ACzJ5 zpn+b2W%P$o6H*g{6Qz>Rrye;p>T>zu{>ZOT>i4zyd?7XL8w*d2s0V$a;e-A+0=}nz zCL|X$I-&ZX_Q6qqqsHd5z!m=({Rm6}S&9!~4@eQ*nqy4tg=>KtdIK_n7J3`M@{?`A zwF)|@0&1`YzgL5s=vR;l%F==k2(BUa ODP$1a-v;;9ntuSOoY;E+ From 2a3cfff5f78b207fa1380c0338dbbc107739405c Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Fri, 9 May 2025 14:57:23 -0700 Subject: [PATCH 009/147] updating tests --- src/components/amd_smi/a.txt | 3967 +++++++++++++++++ src/components/amd_smi/b.txt | 3631 +++++++++++++++ .../tests/.nfs0000000086114a7e00045c08 | 371 ++ .../tests/.nfs000000008614393300045c09 | 575 +++ src/components/amd_smi/tests/Makefile | 112 +- .../amd_smi/tests/amdsmi_basics.cpp | 575 +++ src/components/amd_smi/tests/amdsmi_example | Bin 1540160 -> 0 bytes src/components/amd_smi/tests/amdsmi_example.o | Bin 6552 -> 0 bytes src/components/amd_smi/tests/gemm.cpp | 2 +- src/components/amd_smi/tests/gemm_example | Bin 1563152 -> 0 bytes src/components/amd_smi/tests/gemm_example.o | Bin 27152 -> 0 bytes src/components/amd_smi/tests/rocmsmi_example | Bin 1249920 -> 0 bytes src/components/amd_smi/tests/test.csv | 23 - 13 files changed, 9188 insertions(+), 68 deletions(-) create mode 100644 src/components/amd_smi/a.txt create mode 100644 src/components/amd_smi/b.txt create mode 100644 src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 create mode 100644 src/components/amd_smi/tests/.nfs000000008614393300045c09 create mode 100644 src/components/amd_smi/tests/amdsmi_basics.cpp delete mode 100755 src/components/amd_smi/tests/amdsmi_example delete mode 100644 src/components/amd_smi/tests/amdsmi_example.o delete mode 100755 src/components/amd_smi/tests/gemm_example delete mode 100644 src/components/amd_smi/tests/gemm_example.o delete mode 100755 src/components/amd_smi/tests/rocmsmi_example delete mode 100644 src/components/amd_smi/tests/test.csv diff --git a/src/components/amd_smi/a.txt b/src/components/amd_smi/a.txt new file mode 100644 index 000000000..c93348927 --- /dev/null +++ b/src/components/amd_smi/a.txt @@ -0,0 +1,3967 @@ +Available native events and hardware information. +-------------------------------------------------------------------------------- +PAPI version : 7.2.0.0 +Operating system : Linux 4.18.0-553.16.1.el8_10.x86_64 +Vendor string and code : AuthenticAMD (2, 0x2) +Model string and code : AMD EPYC 7413 24-Core Processor (1, 0x1) +CPU revision : 1.000000 +CPUID : Family/Model/Stepping 25/1/1, 0x19/0x01/0x01 +CPU Max MHz : 3630 +CPU Min MHz : 1500 +Total cores : 96 +SMT threads per core : 2 +Cores per socket : 24 +Sockets : 2 +Cores per NUMA region : 48 +NUMA regions : 2 +Running in a VM : no +Number Hardware Counters : NA +Max Multiplex Counters : 512 +Fast counter read (rdpmc): no +-------------------------------------------------------------------------------- + +=============================================================================== + Native Events in Component: rocm +=============================================================================== +| rocm:::SQ_WAIT_INST_LDS | +| Number of wave-cycles spent waiting for LDS instruction issue. In | +| units of 4 cycles. (per-simd, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES | +| TCP stalls TA data interface. Now Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_COUNT | +| Tie High - Count Number of Clocks | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_GUI_ACTIVE | +| The GUI is Active | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CP_BUSY | +| Any of the Command Processor (CPG/CPC/CPF) blocks are busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_SPI_BUSY | +| Any of the Shader Pipe Interpolators (SPI) are busy in the shader | +| engine(s). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_TA_BUSY | +| Any of the Texture Pipes (TA) are busy in the shader engine(s). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_TC_BUSY | +| Any of the Texture Cache Blocks (TCP/TCI/TCA/TCC) are busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CPC_BUSY | +| The Command Processor Compute (CPC) is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CPF_BUSY | +| The Command Processor Fetchers (CPF) is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_UTCL2_BUSY | +| The Unified Translation Cache Level-2 (UTCL2) block is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_EA_BUSY | +| The Efficiency Arbiter (EA) block is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_ME1_BUSY_FOR_PACKET_DECODE | +| Me1 busy for packet decode. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_UTCL1_STALL_ON_TRANSLATION | +| One of the UTCL1s is stalled waiting on translation, XNACK or PEND| +| ING response. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_BUSY | +| CPC Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_IDLE | +| CPC Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_STALL | +| CPC Stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_TCIU_BUSY | +| CPC TCIU interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_TCIU_IDLE | +| CPC TCIU interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_BUSY | +| CPC UTCL2 interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_IDLE | +| CPC UTCL2 interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_STALL | +| CPC UTCL2 interface Stalled waiting on Free, Tags or Translation. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_ME1_DC0_SPI_BUSY | +| CPC Me1 Processor Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CMP_UTCL1_STALL_ON_TRANSLATION | +| One of the Compute UTCL1s is stalled waiting on translation, XNACK| +| or PENDING response. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_BUSY | +| CPF Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_IDLE | +| CPF Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_STALL | +| CPF Stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_BUSY | +| CPF TCIU interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_IDLE | +| CPF TCIU interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_STALL | +| CPF TCIU interface Stalled waiting on Free, Tags. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_WINDOW_VALID | +| Clock count enabled by perfcounter_start event. Requires SPI_DEBUG| +| _CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, source | +| is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, sou| +| rce is CS3; default, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_BUSY | +| Number of clocks with outstanding waves (SPI or SH). Requires SPI_| +| DEBUG_CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, so| +| urce is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3| +| , source is CS3; default, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_NUM_THREADGROUPS | +| Number of threadgroups launched. Requires SPI_DEBUG_CNTL.DEBUG_PIP| +| E_SEL to select source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_P| +| IPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, source is CS3; def| +| ault, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_WAVE | +| Number of waves. Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select | +| source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, sou| +| rce is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is | +| CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_REQ_NO_ALLOC | +| Arb cycles with requests but no allocation. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_REQ_NO_ALLOC_CSN | +| Arb cycles with CSn req and no CSn alloc. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_RES_STALL_CSN | +| Arb cycles with CSn req and no CSn fits. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_TMP_STALL_CSN | +| Cycles where csn wants to req but does not fit in temp space. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_WAVE_SIMD_FULL_CSN | +| Sum of SIMD where WAVE can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_VGPR_SIMD_FULL_CSN | +| Sum of SIMD where VGPR can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_SGPR_SIMD_FULL_CSN | +| Sum of SIMD where SGPR can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_LDS_CU_FULL_CSN | +| Sum of CU where LDS can't take csn wave when !fits. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_BAR_CU_FULL_CSN | +| Sum of CU where BARRIER can't take csn wave when !fits. Source is | +| RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_BULKY_CU_FULL_CSN | +| Sum of CU where BULKY can't take csn wave when !fits. Source is RA| +| 0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_TGLIM_CU_FULL_CSN | +| Cycles where csn wants to req but all CU are at tg_limit | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_WVLIM_STALL_CSN | +| Number of clocks csn is stalled due to WAVE LIMIT. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_SWC_CSC_WR | +| Number of clocks to write CSC waves to SGPRs (need to multiply thi| +| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| +| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| +| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| +| ; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_VWC_CSC_WR | +| Number of clocks to write CSC waves to VGPRs (need to multiply thi| +| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| +| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| +| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| +| ; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACCUM_PREV | +| For counter N, increment by the value of counter N-1. Only accumul| +| ates once every 4 cycles. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_CYCLES | +| Clock cycles. (nondeterministic, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_BUSY_CYCLES | +| Clock cycles while SQ is reporting that it is busy. (nondeterminis| +| tic, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES | +| Count number of waves sent to SQs. (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LEVEL_WAVES | +| Track the number of waves. Set ACCUM_PREV for the next counter to | +| use this. (level, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_EQ_64 | +| Count number of waves with exactly 64 active threads sent to SQs. | +| (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_64 | +| Count number of waves with <64 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_48 | +| Count number of waves with <48 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_32 | +| Count number of waves sent <32 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_16 | +| Count number of waves sent <16 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_BUSY_CU_CYCLES | +| Count quad-cycles each CU is busy. (nondeterministic, per-simd) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ITEMS | +| Number of valid items per wave. (per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS | +| Number of instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU | +| Number of VALU instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F16 | +| Number of VALU ADD/SUB instructions on float16. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F16 | +| Number of VALU MUL instructions on float16. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F16 | +| Number of VALU FMA/MAD instructions on float16. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F16 | +| Number of VALU transcendental instructions on float16. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F32 | +| Number of VALU ADD/SUB instructions on float32. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F32 | +| Number of VALU MUL instructions on float32. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F32 | +| Number of VALU FMA/MAD instructions on float32. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F32 | +| Number of VALU transcendental instructions on float32. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F64 | +| Number of VALU ADD/SUB instructions on float64. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F64 | +| Number of VALU MUL instructions on float64. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F64 | +| Number of VALU FMA/MAD instructions on float64. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F64 | +| Number of VALU transcendental instructions on float64. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_INT32 | +| Number of VALU 32-bit integer (signed or unsigned) instructions. (| +| per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_INT64 | +| Number of VALU 64-bit integer (signed or unsigned) instructions. (| +| per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_CVT | +| Number of VALU data conversion instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_I8 | +| Number of VALU V_MFMA_*_I8 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F16 | +| Number of VALU V_MFMA_*_F16 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_BF16 | +| Number of VALU V_MFMA_*_BF16 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F32 | +| Number of VALU V_MFMA_*_F32 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F64 | +| Number of VALU V_MFMA_*_F64 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_I8 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type I8. (per-simd,| +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F16 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F16. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_BF16 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type BF16. (per-sim| +| d, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F32 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F32. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F64 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F64. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_MFMA | +| Number of MFMA instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM_WR | +| Number of VMEM write instructions issued (including FLAT). (per-si| +| md, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM_RD | +| Number of VMEM read instructions issued (including FLAT). (per-sim| +| d, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM | +| Number of VMEM instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SALU | +| Number of SALU instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SMEM | +| Number of SMEM instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_FLAT | +| Number of FLAT instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_FLAT_LDS_ONLY | +| Number of FLAT instructions issued that read/wrote only from/to LD| +| S (only works if EARLY_TA_DONE is enabled). (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_LDS | +| Number of LDS instructions issued (including FLAT). (per-simd, emu| +| lated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_GDS | +| Number of GDS instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_EXP_GDS | +| Number of EXP and GDS instructions issued, excluding skipped expor| +| t instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_BRANCH | +| Number of Branch instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SENDMSG | +| Number of Sendmsg instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VSKIPPED | +| Number of vector instructions skipped. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_VMEM | +| Number of in-flight VMEM instructions. Set next counter to ACCUM_P| +| REV and divide by INSTS_VMEM for average latency. Includes FLAT in| +| structions. (per-simd, level, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_SMEM | +| Number of in-flight SMEM instructions (*2 load/store; *2 atomic; *| +| 2 memtime; *4 wb/inv). Set next counter to ACCUM_PREV and divide b| +| y INSTS_SMEM for average latency per smem request. Falls slightly | +| short of total request latency because some fetches are divided in| +| to two requests that may finish at different times and this counte| +| r collects the average latency of the two. (per-simd, level, nonde| +| terministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_LDS | +| Number of in-flight LDS instructions. Set next counter to ACCUM_PR| +| EV and divide by INSTS_LDS for average latency. Includes FLAT inst| +| ructions. (per-simd, level, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_VALU_MFMA_BUSY_CYCLES | +| Number of cycles the MFMA ALU is busy (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVE_CYCLES | +| Number of wave-cycles spent by waves in the CUs (per-simd, nondete| +| rministic). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAIT_ANY | +| Number of wave-cycles spent waiting for anything (per-simd, nondet| +| erministic). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAIT_INST_ANY | +| Number of wave-cycles spent waiting for any instruction issue. In | +| units of 4 cycles. (per-simd, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_ANY | +| Number of cycles each wave is working on an instruction. (per-simd| +| , emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_VMEM | +| Number of cycles the SQ instruction arbiter is working on a VMEM i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_LDS | +| Number of cycles the SQ instruction arbiter is working on a LDS in| +| struction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_VALU | +| Number of cycles the SQ instruction arbiter is working on a VALU i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_SCA | +| Number of cycles the SQ instruction arbiter is working on a SALU o| +| r SMEM instruction. (per-simd, emulated). Units in quad-cycles(4 c| +| ycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_EXP_GDS | +| Number of cycles the SQ instruction arbiter is working on an EXPOR| +| T or GDS instruction. (per-simd, emulated). Units in quad-cycles(4| +| cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_MISC | +| Number of cycles the SQ instruction aribter is working on a BRANCH| +| or SENDMSG instruction. (per-simd, emulated). Units in quad-cycle| +| s(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_FLAT | +| Number of cycles the SQ instruction arbiter is working on a FLAT i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_VMEM_WR | +| Number of cycles needed to send addr and cmd data for VMEM write i| +| nstructions. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_VMEM_RD | +| Number of cycles needed to send addr and cmd data for VMEM read in| +| structions. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_SMEM | +| Number of cycles needed to execute scalar memory reads. (per-simd,| +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_SALU | +| Number of cycles needed to execute non-memory read scalar operatio| +| ns. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_THREAD_CYCLES_VALU | +| Number of thread-cycles used to execute VALU operations (similar t| +| o INST_CYCLES_VALU but multiplied by # of active threads). (per-si| +| md) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_IFETCH | +| Number of instruction fetch requests from cache. (per-simd, emulat| +| ed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_IFETCH_LEVEL | +| Number of instruction fetch requests from cache. (per-simd, level)| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_BANK_CONFLICT | +| Number of cycles LDS is stalled by bank conflicts. (emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_ADDR_CONFLICT | +| Number of cycles LDS is stalled by address conflicts. (emulated,no| +| ndeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_UNALIGNED_STALL | +| Number of cycles LDS is stalled processing flat unaligned load/sto| +| re ops. (emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_MEM_VIOLATIONS | +| Number of threads that have a memory violation in the LDS.(emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_ATOMIC_RETURN | +| Number of atomic return cycles in LDS. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_IDX_ACTIVE | +| Number of cycles LDS is used for indexed (non-direct,non-interpola| +| tion) operations. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACCUM_PREV_HIRES | +| For counter N, increment by the value of counter N-1. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_RESTORED | +| Count number of context-restored waves sent to SQs. (per-simd, emu| +| lated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_SAVED | +| Count number of context-saved waves. (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SMEM_NORM | +| Number of SMEM instructions issued normalized to match smem_level | +| (*2 load/store; *2 atomic; *2 memtime; *4 wb/inv). (per-simd, emul| +| ated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_INPUT_VALID_READYB | +| Input stalled by SQC (per-SQ, nondeterministic, unwindowed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_REQ | +| Total number of TC requests that were issued by instruction and co| +| nstant caches. (No-Masking, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_INST_REQ | +| Number of insruction requests to the TC (No-Masking, nondeterminis| +| tic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_READ_REQ | +| Number of data read requests to the TC (No-Masking, nondeterminist| +| ic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_WRITE_REQ | +| Number of data write requests to the TC (No-Masking, nondeterminis| +| tic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_ATOMIC_REQ | +| Number of data atomic requests to the TC (No-Masking, nondetermini| +| stic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_STALL | +| Valid request stalled TC request interface (no-credits). (No-Maski| +| ng, nondeterministic, unwindowed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_REQ | +| Number of requests. (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_HITS | +| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_MISSES | +| Number of cache misses, includes uncached requests. (per-SQ, per-B| +| ank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_MISSES_DUPLICATE | +| Number of misses that were duplicates (access to a non-resident, m| +| iss pending CL). (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ | +| Number of requests (post-bank-serialization). (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_HITS | +| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_MISSES | +| Number of cache misses, includes uncached requests. (per-SQ, per-B| +| ank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_MISSES_DUPLICATE | +| Number of misses that were duplicates (access to a non-resident, m| +| iss pending CL). (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_ATOMIC | +| Number of atomic requests. (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_1 | +| Number of constant cache 1 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_2 | +| Number of constant cache 2 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_4 | +| Number of constant cache 4 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_8 | +| Number of constant cache 8 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_16 | +| Number of constant cache 16 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TA_BUSY | +| TA block is busy. Perf_Windowing not supported for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_TOTAL_WAVEFRONTS | +| Total number of wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WAVEFRONTS | +| Number of buffer wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_READ_WAVEFRONTS | +| Number of buffer read wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WRITE_WAVEFRONTS | +| Number of buffer write wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS | +| Number of buffer atomic wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_TOTAL_CYCLES | +| Number of buffer cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_READ_CYCLES | +| Number of buffer coalesced read cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES | +| Number of buffer coalesced write cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES | +| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES | +| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_DATA_STALLED_BY_TC_CYCLES | +| Number of cycles data path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WAVEFRONTS | +| Number of flat opcode wavfronts processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_READ_WAVEFRONTS | +| Number of flat opcode reads processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WRITE_WAVEFRONTS | +| Number of flat opcode writes processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS | +| Number of flat opcode atomics processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_TD_BUSY | +| TD is processing or waiting for data. Perf_Windowing not supported| +| for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_TC_STALL | +| TD is stalled waiting for TC data. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_SPI_STALL | +| TD is stalled SPI vinit | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_LOAD_WAVEFRONT | +| Count the wavefronts with opcode = load, include atomics and store| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_ATOMIC_WAVEFRONT | +| Count the wavefronts with opcode = atomic. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_STORE_WAVEFRONT | +| Count the wavefronts with opcode = store. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_COALESCABLE_WAVEFRONT | +| Count wavefronts that TA finds coalescable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN1 | +| TCP interface clocks are turned on. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN2 | +| TCP core clocks are turned on. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TD_TCP_STALL_CYCLES | +| TD stalls TCP | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES | +| TCR stalls TCP_TCR_req interface | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on a read | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on a write | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on an atomic | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_PENDING_STALL_CYCLES | +| Stall due to data pending from L2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TA_TCP_STATE_READ | +| Number of state reads | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_VOLATILE | +| Total number of L1 volatile pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ACCESSES | +| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| +| READ+TCP_PERF_SEL_TOTAL_NONREAD | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_READ | +| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| +| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| +| L_TOTAL_MISS_EVICT_READ | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITE | +| Total number of local write pixels/buffers from TA. Equals TCP_PER| +| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITH_RET | +| Total number of atomic with return pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET | +| Total number of atomic without return pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES | +| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| +| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| +| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_REQUEST | +| Total CLIENT_UTCL1 NORMAL requests | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_MISS | +| Total utcl1 translation misses | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_HIT | +| Total utcl1 translation hits | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_PERMISSION_MISS | +| Total utcl1 permission misses | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_CACHE_ACCESSES | +| Count of total cache line (tag) accesses (includes hits and misses| +| ). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_LATENCY | +| Total TCP wave latency (from first clock of wave entering to first| +| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| +| atency | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_LATENCY | +| Total TCP->TCC request latency for reads and atomics with return. | +| Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_LATENCY | +| Total TCP->TCC request latency for writes and atomics without retu| +| rn. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ | +| Total read requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ | +| Total write requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ | +| Total atomic with return requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ | +| Total atomic without return requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_READ_REQ | +| Total read requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_WRITE_REQ | +| Total write requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_ATOMIC_REQ | +| Total atomic requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_READ_REQ | +| Total read requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_WRITE_REQ | +| Total write requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_ATOMIC_REQ | +| Total atomic requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_READ_REQ | +| Total write requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_WRITE_REQ | +| Total write requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_ATOMIC_REQ | +| Total atomic requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_READ_REQ | +| Total write requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_WRITE_REQ | +| Total write requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_ATOMIC_REQ | +| Total atomic requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCA_CYCLE | +| Number of cycles. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCA_BUSY | +| Number of cycles we have a request pending. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CYCLE | +| Number of cycles. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY | +| Number of cycles we have a request pending. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_REQ | +| Number of requests of all types. This is measured at the tag block| +| . This may be more than the number of requests arriving at the TCC| +| , but it is a good indication of the total amount of work that nee| +| ds to be performed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_STREAMING_REQ | +| Number of streaming requests. This is measured at the tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NC_REQ | +| The number of noncoherently cached requests. This is measured at t| +| he tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_UC_REQ | +| The number of uncached requests. This is measured at the tag block| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CC_REQ | +| The number of coherently cached requests. This is measured at the | +| tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_RW_REQ | +| The number of RW requests. This is measured at the tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE | +| Number of probe requests. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_ALL | +| Number of external probe requests with with EA_TCC_preq_all== 1. N| +| ot windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_READ | +| Number of read requests. Compressed reads are included in this, bu| +| t metadata reads are not included. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITE | +| Number of write requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ATOMIC | +| Number of atomic requests of all types. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_HIT | +| Number of cache hits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_MISS | +| Number of cache misses. UC reads count as misses. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITEBACK | +| Number of lines written back to main memory. This includes writeba| +| cks of dirty lines and uncached write/atomic requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ | +| Number of transactions (either 32-byte or 64-byte) going over the | +| TC_EA_wrreq interface. Atomics may travel over the same interface | +| and are generally classified as write requests. This does not incl| +| ude probe commands. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_64B | +| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| +| er the TC_EA_wrreq interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WR_UNCACHED_32B | +| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| +| e due to uncached traffic. Note that CC mtypes can produce uncache| +| d requests, and those are included in this. A 64-byte request will| +| be counted as 2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_STALL | +| Number of cycles a write request was stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of IO credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of GMI credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of DRAM credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL | +| Number of cycles the TCC could not send a EA write request because| +| it already reached its maximum number of pending EA write request| +| s. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_LEVEL | +| The sum of the number of EA write requests in flight. This is prim| +| arily meant for measure average EA write latency. Average write la| +| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC | +| Number of transactions going over the TC_EA_wrreq interface that a| +| re actually atomic requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_LEVEL | +| The sum of the number of EA atomics in flight. This is primarily m| +| eant for measure average EA atomic latency. Average atomic latency| +| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ | +| Number of TCC/EA read requests (either 32-byte or 64-byte) | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_32B | +| Number of 32-byte TCC/EA read requests | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RD_UNCACHED_32B | +| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| +| equest will be counted as 2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of IO credits. Stalls occur regardless of whether a re| +| ad needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of GMI credits. Stalls occur regardless of whether a r| +| ead needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of DRAM credits. Stalls occur regardless of whether a | +| read needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_LEVEL | +| The sum of the number of TCC/EA read requests in flight. This is p| +| rimarily meant for measure average EA read latency. Average read l| +| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL | +| Number of cycles the normal request pipeline in the tag was stalle| +| d for any reason. Normally, stalls of this nature are measured exa| +| ctly from one point the pipeline, but that is not the case for thi| +| s counter. Probes can stall the pipeline at a variety of places, a| +| nd there is no single point that can reasonably measure the total | +| stalls accurately. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_WRITEBACK | +| Number of writebacks due to requests that are not writeback reques| +| ts. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK | +| Number of writebacks due to all TC_OP writeback requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_EVICT | +| Number of evictions due to requests that are not invalidate or pro| +| be requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_INV_EVICT | +| Number of evictions due to all TC_OP invalidate requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM | +| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| +| d for DRAM (MC). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM | +| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| +| ed for DRAM (MC). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::MeanOccupancyPerCU | +| Mean occupancy per compute unit. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SIMD_UTILIZATION | +| Percent of time at least one warp was active on a multiprocessor, | +| averaged over all multiprocessors. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MeanOccupancyPerActiveCU | +| Mean occupancy per active compute unit. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TA_BUSY_sum | +| TA block is busy. Perf_Windowing not supported for this counter. S| +| um over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TOTAL_WAVEFRONTS_sum | +| Total number of wavefronts processed by TA. Sum over TA instances.| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES_sum | +| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES_sum | +| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_DATA_STALLED_BY_TC_CYCLES_sum | +| Number of cycles data path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WAVEFRONTS_sum | +| Number of flat opcode wavfronts processed by the TA. Sum over TA i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_READ_WAVEFRONTS_sum | +| Number of flat opcode reads processed by the TA. Sum over TA insta| +| nces. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS_sum | +| Number of flat opcode atomics processed by the TA. Sum over TA ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WAVEFRONTS_sum | +| Number of buffer wavefronts processed by TA. Sum over TA instances| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_READ_WAVEFRONTS_sum | +| Number of buffer read wavefronts processed by TA. Sum over TA inst| +| ances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WRITE_WAVEFRONTS_sum | +| Number of buffer write wavefronts processed by TA. Sum over TA ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS_sum | +| Number of buffer atomic wavefronts processed by TA. Sum over TA in| +| stances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_TOTAL_CYCLES_sum | +| Number of buffer cycles issued to TC. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_READ_CYCLES_sum | +| Number of buffer coalesced read cycles issued to TC. Sum over TA i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES_sum | +| Number of buffer coalesced write cycles issued to TC. Sum over TA | +| instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_TD_BUSY_sum | +| TD is processing or waiting for data. Perf_Windowing not supported| +| for this counter. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_TC_STALL_sum | +| TD is stalled waiting for TC data. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_LOAD_WAVEFRONT_sum | +| Count the wavefronts with opcode = load, include atomics and store| +| . Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_ATOMIC_WAVEFRONT_sum | +| Count the wavefronts with opcode = atomic. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_STORE_WAVEFRONT_sum | +| Count the wavefronts with opcode = store. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_COALESCABLE_WAVEFRONT_sum | +| Count wavefronts that TA finds coalescable. Sum over TD instances.| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_SPI_STALL_sum | +| TD is stalled SPI vinit, sum of TCP instances | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN1_sum | +| TCP interface clocks are turned on. Not Windowed. Sum over TCP ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN2_sum | +| TCP core clocks are turned on. Not Windowed. Sum over TCP instance| +| s. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TD_TCP_STALL_CYCLES_sum | +| TD stalls TCP. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES_sum | +| TCR stalls TCP_TCR_req interface. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on a read. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on a write. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on an atomic. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_VOLATILE_sum | +| Total number of L1 volatile pixels/buffers from TA. Sum over TCP i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ACCESSES_sum | +| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| +| READ+TCP_PERF_SEL_TOTAL_NONREAD. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_READ_sum | +| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| +| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| +| L_TOTAL_MISS_EVICT_READ. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITE_sum | +| Total number of local write pixels/buffers from TA. Equals TCP_PER| +| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE. S| +| um over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITH_RET_sum | +| Total number of atomic with return pixels/buffers from TA. Sum ove| +| r TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET_sum | +| Total number of atomic without return pixels/buffers from TA Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES_sum | +| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| +| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| +| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. Sum over TCP i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_REQUEST_sum | +| Total CLIENT_UTCL1 NORMAL requests Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_MISS_sum | +| Total utcl1 translation misses Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_HIT_sum | +| Total utcl1 translation hits Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_PERMISSION_MISS_sum | +| Total utcl1 permission misses Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_CACHE_ACCESSES_sum | +| Count of total cache line (tag) accesses (includes hits and misses| +| ). Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_LATENCY_sum | +| Total TCP wave latency (from first clock of wave entering to first| +| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| +| atency Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TA_TCP_STATE_READ_sum | +| Number of state reads Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_LATENCY_sum | +| Total TCP->TCC request latency for reads and atomics with return. | +| Not Windowed. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_LATENCY_sum | +| Total TCP->TCC request latency for writes and atomics without retu| +| rn. Not Windowed. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_sum | +| Total read requests from TCP to all TCCs Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_sum | +| Total write requests from TCP to all TCCs Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ_sum | +| Total atomic with return requests from TCP to all TCCs Sum over TC| +| P instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum | +| Total atomic without return requests from TCP to all TCCs Sum over| +| TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_READ_REQ_sum | +| Total read requests with NC mtype from this TCP to all TCCs Sum ov| +| er TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_WRITE_REQ_sum | +| Total write requests with NC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_ATOMIC_REQ_sum | +| Total atomic requests with NC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_READ_REQ_sum | +| Total read requests with UC mtype from this TCP to all TCCs Sum ov| +| er TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_WRITE_REQ_sum | +| Total write requests with UC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_ATOMIC_REQ_sum | +| Total atomic requests with UC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_READ_REQ_sum | +| Total write requests with CC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_WRITE_REQ_sum | +| Total write requests with CC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_ATOMIC_REQ_sum | +| Total atomic requests with CC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_READ_REQ_sum | +| Total write requests with RW mtype from this TCP to all TCCs. Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_WRITE_REQ_sum | +| Total write requests with RW mtype from this TCP to all TCCs. Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_ATOMIC_REQ_sum | +| Total atomic requests with RW mtype from this TCP to all TCCs. Sum| +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_PENDING_STALL_CYCLES_sum | +| Stall due to data pending from L2. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES_PERCENT | +| Percentage of time TCP is stalled by TCR. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCA_CYCLE_sum | +| Number of cycles. Sum over all TCA instances | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCA_BUSY_sum | +| Number of cycles we have a request pending. Sum over all TCA insta| +| nces. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY_avr | +| TCC_BUSY avr over all memory channels. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRREQ_STALL_max | +| Number of cycles a write request was stalled. Max over TCC instanc| +| es. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CYCLE_sum | +| Number of cycles. Not windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY_sum | +| Number of cycles we have a request pending. Not windowable. Sum ov| +| er TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_REQ_sum | +| Number of requests of all types. This is measured at the tag block| +| . This may be more than the number of requests arriving at the TCC| +| , but it is a good indication of the total amount of work that nee| +| ds to be performed. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_STREAMING_REQ_sum | +| Number of streaming requests. This is measured at the tag block. S| +| um over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NC_REQ_sum | +| The number of noncoherently cached requests. This is measured at t| +| he tag block. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_UC_REQ_sum | +| The number of uncached requests. This is measured at the tag block| +| . Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CC_REQ_sum | +| The number of coherently cached requests. This is measured at the | +| tag block. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_RW_REQ_sum | +| The number of RW requests. This is measured at the tag block. Sum | +| over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_sum | +| Number of probe requests. Not windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_ALL_sum | +| Number of external probe requests with with EA_TCC_preq_all== 1. N| +| ot windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_READ_sum | +| Number of read requests. Compressed reads are included in this, bu| +| t metadata reads are not included. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITE_sum | +| Number of write requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ATOMIC_sum | +| Number of atomic requests of all types. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_HIT_sum | +| Number of cache hits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_MISS_sum | +| Number of cache misses. UC reads count as misses. Sum over TCC ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITEBACK_sum | +| Number of lines written back to main memory. This includes writeba| +| cks of dirty lines and uncached write/atomic requests. Sum over TC| +| C instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_sum | +| Number of transactions (either 32-byte or 64-byte) going over the | +| TC_EA_wrreq interface. Atomics may travel over the same interface | +| and are generally classified as write requests. This does not incl| +| ude probe commands. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_64B_sum | +| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| +| er the TC_EA_wrreq interface. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WR_UNCACHED_32B_sum | +| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| +| e due to uncached traffic. Note that CC mtypes can produce uncache| +| d requests, and those are included in this. A 64-byte request will| +| be counted as 2. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_STALL_sum | +| Number of cycles a write request was stalled. Sum over TCC instanc| +| es. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of IO credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of GMI credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of DRAM credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL_sum | +| Number of cycles the TCC could not send a EA write request because| +| it already reached its maximum number of pending EA write request| +| s. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_LEVEL_sum | +| The sum of the number of EA write requests in flight. This is prim| +| arily meant for measure average EA write latency. Average write la| +| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. Sum ove| +| r TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_LEVEL_sum | +| The sum of the number of TCC/EA read requests in flight. This is p| +| rimarily meant for measure average EA read latency. Average read l| +| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. Sum ov| +| er TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_sum | +| Number of transactions going over the TC_EA_wrreq interface that a| +| re actually atomic requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_LEVEL_sum | +| The sum of the number of EA atomics in flight. This is primarily m| +| eant for measure average EA atomic latency. Average atomic latency| +| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| +| . Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_sum | +| Number of TCC/EA read requests (either 32-byte or 64-byte) Sum ove| +| r TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_32B_sum | +| Number of 32-byte TCC/EA read requests Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RD_UNCACHED_32B_sum | +| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| +| equest will be counted as 2 Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of IO credits. Stalls occur regardless of whether a re| +| ad needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of GMI credits. Stalls occur regardless of whether a r| +| ead needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of DRAM credits. Stalls occur regardless of whether a | +| read needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL_sum | +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL_PERCENT | +| Percentage of time the TCC tag lookup pipeline is stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_WRITEBACK_sum | +| Number of writebacks due to requests that are not writeback reques| +| ts. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK_sum | +| Number of writebacks due to all TC_OP writeback requests. Sum over| +| TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_EVICT_sum | +| Number of evictions due to requests that are not invalidate or pro| +| be requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_INV_EVICT_sum | +| Number of evictions due to all TC_OP invalidate requests. Sum over| +| TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_sum | +| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| +| d for DRAM (MC). Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_sum | +| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| +| ed for DRAM (MC). Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FETCH_SIZE | +| The total kilobytes fetched from the video memory. This is measure| +| d with all extra fetches and any cache or memory effects taken int| +| o account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WRITE_SIZE | +| The total kilobytes written to the video memory. This is measured | +| with all extra fetches and any cache or memory effects taken into | +| account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_16_OPS | +| The number of 16 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_32_OPS | +| The number of 32 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_64_OPS | +| The number of 64 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ACTIVE_CYCLES | +| Active Cycles | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ELAPSED_CYCLES | +| Elapsed Cycles | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ACTIVE_WAVES | +| Active Waves | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::BANDWIDTH_EA | +| Memory Bandwidth measured at the TCC_EA interface. In units of byt| +| es/cycle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::OccupancyPercent | +| GPU occupancy as % of maximum. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MfmaUtil | +| The percentage of kernel's duration, the MFMA unit was busy execut| +| ing instructions | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_avr | +| TA block is busy. Average over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_max | +| TA block is busy. Max over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_min | +| TA block is busy. Min over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WRITE_WAVEFRONTS_sum | +| Number of flat opcode writes processed by the TA. Sum over TA inst| +| ances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_sum | +| Total number of TCP stalls TA data interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_max | +| Maximum number of TCP stalls TA data interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WRITE_REQ_32B | +| The total number of 32-byte effective memory writes. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VFetchInsts | +| The average number of vector fetch instructions from the video mem| +| ory executed per work-item (affected by flow control). Excludes FL| +| AT instructions that fetch from video memory. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VWriteInsts | +| The average number of vector write instructions to the video memor| +| y executed per work-item (affected by flow control). Excludes FLAT| +| instructions that write to video memory. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FlatVMemInsts | +| The average number of FLAT instructions that read from or write to| +| the video memory executed per work item (affected by flow control| +| ). Includes FLAT instructions that read from or write to scratch. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::LDSInsts | +| The average number of LDS read or LDS write instructions executed | +| per work item (affected by flow control). Excludes FLAT instructi| +| ons that read from or write to LDS. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FlatLDSInsts | +| The average number of FLAT instructions that read or write to LDS | +| executed per work item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUUtilization | +| The percentage of active vector ALU threads in a wave. A lower num| +| ber can mean either more thread divergence in a wave or that the w| +| ork-group size is not a multiple of 64. Value range: 0% (bad), 100| +| % (ideal - no thread divergence). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUBusy | +| The percentage of GPUTime vector ALU instructions are processed. V| +| alue range: 0% (bad) to 100% (optimal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SALUBusy | +| The percentage of GPUTime scalar ALU instructions are processed. V| +| alue range: 0% (bad) to 100% (optimal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FetchSize | +| The total kilobytes fetched from the video memory. This is measure| +| d with all extra fetches and any cache or memory effects taken int| +| o account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WriteSize | +| The total kilobytes written to the video memory. This is measured | +| with all extra fetches and any cache or memory effects taken into | +| account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemWrites32B | +| The total number of effective 32B write transactions to the memory| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::L2CacheHit | +| The percentage of fetch, write, atomic, and other instructions tha| +| t hit the data in L2 cache. Value range: 0% (no hit) to 100% (opti| +| mal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemUnitStalled | +| The percentage of GPUTime the memory unit is stalled. Try reducing| +| the number or size of fetches and writes if possible. Value range| +| : 0% (optimal) to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WriteUnitStalled | +| The percentage of GPUTime the Write unit is stalled. Value range: | +| 0% to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::LDSBankConflict | +| The percentage of GPUTime LDS is stalled by bank conflicts. Value | +| range: 0% (optimal) to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GPUBusy | +| The percentage of time GPU was busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::Wavefronts | +| Total wavefronts. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUInsts | +| The average number of vector ALU instructions executed per work-it| +| em (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SALUInsts | +| The average number of scalar ALU instructions executed per work-it| +| em (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SFetchInsts | +| The average number of scalar fetch instructions from the video mem| +| ory executed per work-item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GDSInsts | +| The average number of GDS read or GDS write instructions executed | +| per work item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemUnitBusy | +| The percentage of GPUTime the memory unit is active. The result in| +| cludes the stall time (MemUnitStalled). This is measured with all | +| extra fetches and writes and any cache or memory effects taken int| +| o account. Value range: 0% to 100% (fetch-bound). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ALUStalledByLDS | +| The percentage of GPUTime ALU units are stalled by the LDS input q| +| ueue being full or the output queue being not ready. If there are | +| LDS bank conflicts, reduce them. Otherwise, try reducing the numbe| +| r of LDS accesses if possible. Value range: 0% (optimal) to 100% (| +| bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +=============================================================================== + Native Events in Component: rocm_smi +=============================================================================== +| rocm_smi:::NUMDevices | +| Number of Devices which have monitors, accessible by rocm_smi. | +-------------------------------------------------------------------------------- +| rocm_smi:::rsmi_version | +| Version of RSMI lib; 0x0000MMMMmmmmpppp Major, Minor, Patch. | +-------------------------------------------------------------------------------- +| rocm_smi:::driver_version_str | +| Returns char* to z-terminated driver version string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::device_brand:device=0 | +| Returns char* to z-terminated brand string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::busy_percent:device=0 | +| Percentage of time the device was busy doing any processing. | +-------------------------------------------------------------------------------- +| rocm_smi:::drm_render_minor:device=0 | +| DRM Minor Number associated with this device. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=UMC | +| Correctable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=UMC | +| Uncorrectable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=SDMA | +| Correctable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=SDMA | +| Uncorrectable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=GFX | +| Correctable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=GFX | +| Uncorrectable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=MMHUB | +| Correctable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=MMHUB | +| Uncorrectable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=PCIE_BIF | +| Correctable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=PCIE_BIF | +| Uncorrectable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=HDP | +| Correctable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=HDP | +| Uncorrectable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_enabled_get:device=0 | +| Bit mask of GPU blocks with ecc error counting enabled. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=MEC | +| Firmware Version Block MEC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=MEC2 | +| Firmware Version Block MEC2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=RLC | +| Firmware Version Block RLC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SDMA | +| Firmware Version Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SDMA2 | +| Firmware Version Block SDMA2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SMC | +| Firmware Version Block SMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SOS | +| Firmware Version Block SOS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=RAS | +| Firmware Version Block RAS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=XGMI | +| Firmware Version Block XGMI. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=VCN | +| Firmware Version Block VCN. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=0 | +| Returns System frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=1 | +| Returns System frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=2 | +| Returns System frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:idx=0 | +| Returns DataFabric frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=0 | +| Returns SOC frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=1 | +| Returns SOC frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=2 | +| Returns SOC frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=3 | +| Returns SOC frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=4 | +| Returns SOC frequency value for supported_table[4]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=0 | +| Returns Memory frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=1 | +| Returns Memory frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=2 | +| Returns Memory frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=3 | +| Returns Memory frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:mask | +| Write Only. Sets bit mask, 1's for System frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:mask | +| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| +| upport table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:mask | +| Write Only. Sets bit mask, 1's for SOC frequency value in support | +| table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:mask | +| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_id:device=0 | +| Vendor supplied device id number. May be shared by same model devi| +| ces; see pci_id for a unique identifier. | +-------------------------------------------------------------------------------- +| rocm_smi:::memory_busy_percent:device=0 | +| Percentage_of time any device memory is being used. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VRAM:device=0 | +| Total VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VIS_VRAM:device=0 | +| Total Visible VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_GTT:device=0 | +| Total Visible GTT (Graphics Translation Table) memory, aka GART me| +| mory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VRAM:device=0 | +| VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VIS_VRAM:device=0 | +| Visible VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_GTT:device=0 | +| (Graphic Translation Table) memory in use (aka GART memory). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_name:device=0 | +| Returns char* to z-terminated name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_id:device=0 | +| BDF (Bus/Device/Function) ID, unique per device. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_replay_counter:device=0 | +| Sum of the number of NAK's received by the GPU and the NAK's gener| +| ated by the GPU. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_sent:device=0 | +| Throughput on PCIe traffic, bytes/second sent. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_received:device=0 | +| Throughput on PCIe traffic, bytes/second received. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_max_packet_size:device=0 | +| Maximum PCIe packet size. | +-------------------------------------------------------------------------------- +| rocm_smi:::perf_level:device=0 | +| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| +| t [0-8], see ROCm_SMI_Manual for details. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_average:device=0:sensor=0 | +| Current Average Power consumption in microwatts. Requires root pri| +| vileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap:device=0:sensor=0 | +| Power cap in microwatts. Read/Write. Between min/max (see power_ca| +| p_range_min/max). May require root privileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_min:device=0:sensor=0 | +| Power cap Minimum settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_max:device=0:sensor=0 | +| Power cap Maximim settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_serial_number:device=0 | +| Returns char* to z-terminated serial number string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_id:device=0 | +| Subsystem id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_subsystem_name:device=0 | +| Returns char* to z-terminated subsystem name string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_vendor_id:device=0 | +| System vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=0 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=1 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=2 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=0 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=1 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=2 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=0 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=1 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=2 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=0 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=1 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=2 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::unique_id:device=0 | +| Unique id for device. | +-------------------------------------------------------------------------------- +| rocm_smi:::vbios_version:device=0 | +| Returns char* to z-terminated vbios version string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_id:device=0 | +| Vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_name:device=0 | +| Returns char* to z-terminated vendor name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_brand:device=1 | +| Returns char* to z-terminated brand string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::busy_percent:device=1 | +| Percentage of time the device was busy doing any processing. | +-------------------------------------------------------------------------------- +| rocm_smi:::drm_render_minor:device=1 | +| DRM Minor Number associated with this device. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=UMC | +| Correctable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=UMC | +| Uncorrectable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=SDMA | +| Correctable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=SDMA | +| Uncorrectable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=GFX | +| Correctable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=GFX | +| Uncorrectable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=MMHUB | +| Correctable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=MMHUB | +| Uncorrectable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=PCIE_BIF | +| Correctable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=PCIE_BIF | +| Uncorrectable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=HDP | +| Correctable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=HDP | +| Uncorrectable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_enabled_get:device=1 | +| Bit mask of GPU blocks with ecc error counting enabled. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=MEC | +| Firmware Version Block MEC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=MEC2 | +| Firmware Version Block MEC2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=RLC | +| Firmware Version Block RLC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SDMA | +| Firmware Version Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SDMA2 | +| Firmware Version Block SDMA2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SMC | +| Firmware Version Block SMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SOS | +| Firmware Version Block SOS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=RAS | +| Firmware Version Block RAS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=XGMI | +| Firmware Version Block XGMI. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=VCN | +| Firmware Version Block VCN. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=0 | +| Returns System frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=1 | +| Returns System frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=2 | +| Returns System frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:idx=0 | +| Returns DataFabric frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=0 | +| Returns SOC frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=1 | +| Returns SOC frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=2 | +| Returns SOC frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=3 | +| Returns SOC frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=4 | +| Returns SOC frequency value for supported_table[4]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=0 | +| Returns Memory frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=1 | +| Returns Memory frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=2 | +| Returns Memory frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=3 | +| Returns Memory frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:mask | +| Write Only. Sets bit mask, 1's for System frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:mask | +| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| +| upport table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:mask | +| Write Only. Sets bit mask, 1's for SOC frequency value in support | +| table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:mask | +| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_id:device=1 | +| Vendor supplied device id number. May be shared by same model devi| +| ces; see pci_id for a unique identifier. | +-------------------------------------------------------------------------------- +| rocm_smi:::memory_busy_percent:device=1 | +| Percentage_of time any device memory is being used. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VRAM:device=1 | +| Total VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VIS_VRAM:device=1 | +| Total Visible VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_GTT:device=1 | +| Total Visible GTT (Graphics Translation Table) memory, aka GART me| +| mory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VRAM:device=1 | +| VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VIS_VRAM:device=1 | +| Visible VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_GTT:device=1 | +| (Graphic Translation Table) memory in use (aka GART memory). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_name:device=1 | +| Returns char* to z-terminated name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_id:device=1 | +| BDF (Bus/Device/Function) ID, unique per device. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_replay_counter:device=1 | +| Sum of the number of NAK's received by the GPU and the NAK's gener| +| ated by the GPU. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_sent:device=1 | +| Throughput on PCIe traffic, bytes/second sent. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_received:device=1 | +| Throughput on PCIe traffic, bytes/second received. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_max_packet_size:device=1 | +| Maximum PCIe packet size. | +-------------------------------------------------------------------------------- +| rocm_smi:::perf_level:device=1 | +| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| +| t [0-8], see ROCm_SMI_Manual for details. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_average:device=1:sensor=0 | +| Current Average Power consumption in microwatts. Requires root pri| +| vileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap:device=1:sensor=0 | +| Power cap in microwatts. Read/Write. Between min/max (see power_ca| +| p_range_min/max). May require root privileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_min:device=1:sensor=0 | +| Power cap Minimum settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_max:device=1:sensor=0 | +| Power cap Maximim settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_serial_number:device=1 | +| Returns char* to z-terminated serial number string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_id:device=1 | +| Subsystem id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_subsystem_name:device=1 | +| Returns char* to z-terminated subsystem name string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_vendor_id:device=1 | +| System vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=0 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=1 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=2 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=0 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=1 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=2 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=0 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=1 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=2 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=0 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=1 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=2 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::unique_id:device=1 | +| Unique id for device. | +-------------------------------------------------------------------------------- +| rocm_smi:::vbios_version:device=1 | +| Returns char* to z-terminated vbios version string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_id:device=1 | +| Vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_name:device=1 | +| Returns char* to z-terminated vendor name string; do not free(). | +=============================================================================== + Native Events in Component: amd_smi +=============================================================================== +| amd_smi:::temp_current:device=0:sensor=0 | +| Device 0 temp_current for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=0 | +| Device 0 temp_max for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=0 | +| Device 0 temp_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=0 | +| Device 0 temp_max_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=0 | +| Device 0 temp_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=0 | +| Device 0 temp_critical for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=0 | +| Device 0 temp_critical_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=0 | +| Device 0 temp_emergency for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=0 | +| Device 0 temp_emergency_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=0 | +| Device 0 temp_crit_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=0 | +| Device 0 temp_crit_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=0 | +| Device 0 temp_offset for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=0 | +| Device 0 temp_lowest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=0 | +| Device 0 temp_highest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=1 | +| Device 0 temp_current for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=1 | +| Device 0 temp_max for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=1 | +| Device 0 temp_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=1 | +| Device 0 temp_max_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=1 | +| Device 0 temp_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=1 | +| Device 0 temp_critical for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=1 | +| Device 0 temp_critical_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=1 | +| Device 0 temp_emergency for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=1 | +| Device 0 temp_emergency_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=1 | +| Device 0 temp_crit_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=1 | +| Device 0 temp_crit_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=1 | +| Device 0 temp_offset for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=1 | +| Device 0 temp_lowest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=1 | +| Device 0 temp_highest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=2 | +| Device 0 temp_current for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=2 | +| Device 0 temp_max for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=2 | +| Device 0 temp_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=2 | +| Device 0 temp_max_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=2 | +| Device 0 temp_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=2 | +| Device 0 temp_critical for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=2 | +| Device 0 temp_critical_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=2 | +| Device 0 temp_emergency for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=2 | +| Device 0 temp_emergency_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=2 | +| Device 0 temp_crit_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=2 | +| Device 0 temp_crit_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=2 | +| Device 0 temp_offset for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=2 | +| Device 0 temp_lowest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=2 | +| Device 0 temp_highest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=3 | +| Device 0 temp_current for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=3 | +| Device 0 temp_max for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=3 | +| Device 0 temp_min for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=3 | +| Device 0 temp_max_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=3 | +| Device 0 temp_min_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=3 | +| Device 0 temp_critical for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=3 | +| Device 0 temp_critical_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=3 | +| Device 0 temp_emergency for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=3 | +| Device 0 temp_emergency_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=3 | +| Device 0 temp_crit_min for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=3 | +| Device 0 temp_crit_min_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=3 | +| Device 0 temp_offset for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=3 | +| Device 0 temp_lowest for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=3 | +| Device 0 temp_highest for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=4 | +| Device 0 temp_current for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=4 | +| Device 0 temp_max for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=4 | +| Device 0 temp_min for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=4 | +| Device 0 temp_max_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=4 | +| Device 0 temp_min_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=4 | +| Device 0 temp_critical for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=4 | +| Device 0 temp_critical_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=4 | +| Device 0 temp_emergency for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=4 | +| Device 0 temp_emergency_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=4 | +| Device 0 temp_crit_min for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=4 | +| Device 0 temp_crit_min_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=4 | +| Device 0 temp_offset for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=4 | +| Device 0 temp_lowest for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=4 | +| Device 0 temp_highest for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=5 | +| Device 0 temp_current for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=5 | +| Device 0 temp_max for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=5 | +| Device 0 temp_min for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=5 | +| Device 0 temp_max_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=5 | +| Device 0 temp_min_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=5 | +| Device 0 temp_critical for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=5 | +| Device 0 temp_critical_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=5 | +| Device 0 temp_emergency for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=5 | +| Device 0 temp_emergency_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=5 | +| Device 0 temp_crit_min for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=5 | +| Device 0 temp_crit_min_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=5 | +| Device 0 temp_offset for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=5 | +| Device 0 temp_lowest for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=5 | +| Device 0 temp_highest for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=6 | +| Device 0 temp_current for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=6 | +| Device 0 temp_max for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=6 | +| Device 0 temp_min for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=6 | +| Device 0 temp_max_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=6 | +| Device 0 temp_min_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=6 | +| Device 0 temp_critical for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=6 | +| Device 0 temp_critical_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=6 | +| Device 0 temp_emergency for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=6 | +| Device 0 temp_emergency_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=6 | +| Device 0 temp_crit_min for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=6 | +| Device 0 temp_crit_min_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=6 | +| Device 0 temp_offset for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=6 | +| Device 0 temp_lowest for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=6 | +| Device 0 temp_highest for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=7 | +| Device 0 temp_current for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=7 | +| Device 0 temp_max for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=7 | +| Device 0 temp_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=7 | +| Device 0 temp_max_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=7 | +| Device 0 temp_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=7 | +| Device 0 temp_critical for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=7 | +| Device 0 temp_critical_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=7 | +| Device 0 temp_emergency for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=7 | +| Device 0 temp_emergency_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=7 | +| Device 0 temp_crit_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=7 | +| Device 0 temp_crit_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=7 | +| Device 0 temp_offset for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=7 | +| Device 0 temp_lowest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=7 | +| Device 0 temp_highest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=0 | +| Device 1 temp_current for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=0 | +| Device 1 temp_max for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=0 | +| Device 1 temp_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=0 | +| Device 1 temp_max_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=0 | +| Device 1 temp_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=0 | +| Device 1 temp_critical for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=0 | +| Device 1 temp_critical_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=0 | +| Device 1 temp_emergency for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=0 | +| Device 1 temp_emergency_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=0 | +| Device 1 temp_crit_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=0 | +| Device 1 temp_crit_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=0 | +| Device 1 temp_offset for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=0 | +| Device 1 temp_lowest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=0 | +| Device 1 temp_highest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=1 | +| Device 1 temp_current for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=1 | +| Device 1 temp_max for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=1 | +| Device 1 temp_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=1 | +| Device 1 temp_max_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=1 | +| Device 1 temp_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=1 | +| Device 1 temp_critical for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=1 | +| Device 1 temp_critical_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=1 | +| Device 1 temp_emergency for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=1 | +| Device 1 temp_emergency_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=1 | +| Device 1 temp_crit_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=1 | +| Device 1 temp_crit_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=1 | +| Device 1 temp_offset for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=1 | +| Device 1 temp_lowest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=1 | +| Device 1 temp_highest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=2 | +| Device 1 temp_current for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=2 | +| Device 1 temp_max for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=2 | +| Device 1 temp_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=2 | +| Device 1 temp_max_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=2 | +| Device 1 temp_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=2 | +| Device 1 temp_critical for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=2 | +| Device 1 temp_critical_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=2 | +| Device 1 temp_emergency for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=2 | +| Device 1 temp_emergency_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=2 | +| Device 1 temp_crit_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=2 | +| Device 1 temp_crit_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=2 | +| Device 1 temp_offset for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=2 | +| Device 1 temp_lowest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=2 | +| Device 1 temp_highest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=3 | +| Device 1 temp_current for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=3 | +| Device 1 temp_max for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=3 | +| Device 1 temp_min for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=3 | +| Device 1 temp_max_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=3 | +| Device 1 temp_min_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=3 | +| Device 1 temp_critical for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=3 | +| Device 1 temp_critical_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=3 | +| Device 1 temp_emergency for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=3 | +| Device 1 temp_emergency_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=3 | +| Device 1 temp_crit_min for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=3 | +| Device 1 temp_crit_min_hyst for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=3 | +| Device 1 temp_offset for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=3 | +| Device 1 temp_lowest for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=3 | +| Device 1 temp_highest for sensor 3 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=4 | +| Device 1 temp_current for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=4 | +| Device 1 temp_max for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=4 | +| Device 1 temp_min for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=4 | +| Device 1 temp_max_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=4 | +| Device 1 temp_min_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=4 | +| Device 1 temp_critical for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=4 | +| Device 1 temp_critical_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=4 | +| Device 1 temp_emergency for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=4 | +| Device 1 temp_emergency_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=4 | +| Device 1 temp_crit_min for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=4 | +| Device 1 temp_crit_min_hyst for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=4 | +| Device 1 temp_offset for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=4 | +| Device 1 temp_lowest for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=4 | +| Device 1 temp_highest for sensor 4 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=5 | +| Device 1 temp_current for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=5 | +| Device 1 temp_max for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=5 | +| Device 1 temp_min for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=5 | +| Device 1 temp_max_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=5 | +| Device 1 temp_min_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=5 | +| Device 1 temp_critical for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=5 | +| Device 1 temp_critical_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=5 | +| Device 1 temp_emergency for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=5 | +| Device 1 temp_emergency_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=5 | +| Device 1 temp_crit_min for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=5 | +| Device 1 temp_crit_min_hyst for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=5 | +| Device 1 temp_offset for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=5 | +| Device 1 temp_lowest for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=5 | +| Device 1 temp_highest for sensor 5 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=6 | +| Device 1 temp_current for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=6 | +| Device 1 temp_max for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=6 | +| Device 1 temp_min for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=6 | +| Device 1 temp_max_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=6 | +| Device 1 temp_min_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=6 | +| Device 1 temp_critical for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=6 | +| Device 1 temp_critical_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=6 | +| Device 1 temp_emergency for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=6 | +| Device 1 temp_emergency_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=6 | +| Device 1 temp_crit_min for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=6 | +| Device 1 temp_crit_min_hyst for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=6 | +| Device 1 temp_offset for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=6 | +| Device 1 temp_lowest for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=6 | +| Device 1 temp_highest for sensor 6 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=7 | +| Device 1 temp_current for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=7 | +| Device 1 temp_max for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=7 | +| Device 1 temp_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=7 | +| Device 1 temp_max_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=7 | +| Device 1 temp_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=7 | +| Device 1 temp_critical for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=7 | +| Device 1 temp_critical_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=7 | +| Device 1 temp_emergency for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=7 | +| Device 1 temp_emergency_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=7 | +| Device 1 temp_crit_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=7 | +| Device 1 temp_crit_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=7 | +| Device 1 temp_offset for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=7 | +| Device 1 temp_lowest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=7 | +| Device 1 temp_highest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::fan_rpms:device=0:sensor=0 | +| Device 0 fan speed in RPM | +-------------------------------------------------------------------------------- +| amd_smi:::fan_speed:device=0:sensor=0 | +| Device 0 fan speed (0-255 relative) | +-------------------------------------------------------------------------------- +| amd_smi:::fan_rpms:device=1:sensor=0 | +| Device 1 fan speed in RPM | +-------------------------------------------------------------------------------- +| amd_smi:::fan_speed:device=1:sensor=0 | +| Device 1 fan speed (0-255 relative) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_total_VRAM:device=0 | +| Device 0 total VRAM memory (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_usage_VRAM:device=0 | +| Device 0 VRAM memory usage (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_total_VRAM:device=1 | +| Device 1 total VRAM memory (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_usage_VRAM:device=1 | +| Device 1 VRAM memory usage (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::power_average:device=0 | +| Device 0 average power consumption (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap:device=0 | +| Device 0 current power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_min:device=0 | +| Device 0 minimum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_max:device=0 | +| Device 0 maximum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_average:device=1 | +| Device 1 average power consumption (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap:device=1 | +| Device 1 current power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_min:device=1 | +| Device 1 minimum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_max:device=1 | +| Device 1 maximum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_sent:device=0 | +| Device 0 PCIe bytes sent per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_received:device=0 | +| Device 0 PCIe bytes received per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_max_packet:device=0 | +| Device 0 PCIe max packet size (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_replay_counter:device=0 | +| Device 0 PCIe replay (NAK) counter | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_sent:device=1 | +| Device 1 PCIe bytes sent per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_received:device=1 | +| Device 1 PCIe bytes received per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_max_packet:device=1 | +| Device 1 PCIe max packet size (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_replay_counter:device=1 | +| Device 1 PCIe replay (NAK) counter | +-------------------------------------------------------------------------------- + +Total events reported: 844 diff --git a/src/components/amd_smi/b.txt b/src/components/amd_smi/b.txt new file mode 100644 index 000000000..395535ec5 --- /dev/null +++ b/src/components/amd_smi/b.txt @@ -0,0 +1,3631 @@ +Available native events and hardware information. +-------------------------------------------------------------------------------- +PAPI version : 7.2.0.0 +Operating system : Linux 4.18.0-553.16.1.el8_10.x86_64 +Vendor string and code : AuthenticAMD (2, 0x2) +Model string and code : AMD EPYC 7413 24-Core Processor (1, 0x1) +CPU revision : 1.000000 +CPUID : Family/Model/Stepping 25/1/1, 0x19/0x01/0x01 +CPU Max MHz : 3630 +CPU Min MHz : 1500 +Total cores : 96 +SMT threads per core : 2 +Cores per socket : 24 +Sockets : 2 +Cores per NUMA region : 48 +NUMA regions : 2 +Running in a VM : no +Number Hardware Counters : NA +Max Multiplex Counters : 512 +Fast counter read (rdpmc): no +-------------------------------------------------------------------------------- + +=============================================================================== + Native Events in Component: rocm +=============================================================================== +| rocm:::SQ_WAIT_INST_LDS | +| Number of wave-cycles spent waiting for LDS instruction issue. In | +| units of 4 cycles. (per-simd, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES | +| TCP stalls TA data interface. Now Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_COUNT | +| Tie High - Count Number of Clocks | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_GUI_ACTIVE | +| The GUI is Active | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CP_BUSY | +| Any of the Command Processor (CPG/CPC/CPF) blocks are busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_SPI_BUSY | +| Any of the Shader Pipe Interpolators (SPI) are busy in the shader | +| engine(s). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_TA_BUSY | +| Any of the Texture Pipes (TA) are busy in the shader engine(s). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_TC_BUSY | +| Any of the Texture Cache Blocks (TCP/TCI/TCA/TCC) are busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CPC_BUSY | +| The Command Processor Compute (CPC) is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_CPF_BUSY | +| The Command Processor Fetchers (CPF) is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_UTCL2_BUSY | +| The Unified Translation Cache Level-2 (UTCL2) block is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GRBM_EA_BUSY | +| The Efficiency Arbiter (EA) block is busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_ME1_BUSY_FOR_PACKET_DECODE | +| Me1 busy for packet decode. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_UTCL1_STALL_ON_TRANSLATION | +| One of the UTCL1s is stalled waiting on translation, XNACK or PEND| +| ING response. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_BUSY | +| CPC Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_IDLE | +| CPC Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_STAT_STALL | +| CPC Stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_TCIU_BUSY | +| CPC TCIU interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_TCIU_IDLE | +| CPC TCIU interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_BUSY | +| CPC UTCL2 interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_IDLE | +| CPC UTCL2 interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_CPC_UTCL2IU_STALL | +| CPC UTCL2 interface Stalled waiting on Free, Tags or Translation. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPC_ME1_DC0_SPI_BUSY | +| CPC Me1 Processor Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CMP_UTCL1_STALL_ON_TRANSLATION | +| One of the Compute UTCL1s is stalled waiting on translation, XNACK| +| or PENDING response. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_BUSY | +| CPF Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_IDLE | +| CPF Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_STAT_STALL | +| CPF Stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_BUSY | +| CPF TCIU interface Busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_IDLE | +| CPF TCIU interface Idle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::CPF_CPF_TCIU_STALL | +| CPF TCIU interface Stalled waiting on Free, Tags. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_WINDOW_VALID | +| Clock count enabled by perfcounter_start event. Requires SPI_DEBUG| +| _CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, source | +| is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, sou| +| rce is CS3; default, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_BUSY | +| Number of clocks with outstanding waves (SPI or SH). Requires SPI_| +| DEBUG_CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, so| +| urce is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3| +| , source is CS3; default, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_NUM_THREADGROUPS | +| Number of threadgroups launched. Requires SPI_DEBUG_CNTL.DEBUG_PIP| +| E_SEL to select source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_P| +| IPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, source is CS3; def| +| ault, source is CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_CSN_WAVE | +| Number of waves. Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select | +| source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, sou| +| rce is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is | +| CS0; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_REQ_NO_ALLOC | +| Arb cycles with requests but no allocation. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_REQ_NO_ALLOC_CSN | +| Arb cycles with CSn req and no CSn alloc. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_RES_STALL_CSN | +| Arb cycles with CSn req and no CSn fits. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_TMP_STALL_CSN | +| Cycles where csn wants to req but does not fit in temp space. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_WAVE_SIMD_FULL_CSN | +| Sum of SIMD where WAVE can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_VGPR_SIMD_FULL_CSN | +| Sum of SIMD where VGPR can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_SGPR_SIMD_FULL_CSN | +| Sum of SIMD where SGPR can't take csn wave when !fits. Source is R| +| A0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_LDS_CU_FULL_CSN | +| Sum of CU where LDS can't take csn wave when !fits. Source is RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_BAR_CU_FULL_CSN | +| Sum of CU where BARRIER can't take csn wave when !fits. Source is | +| RA0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_BULKY_CU_FULL_CSN | +| Sum of CU where BULKY can't take csn wave when !fits. Source is RA| +| 0 | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_TGLIM_CU_FULL_CSN | +| Cycles where csn wants to req but all CU are at tg_limit | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_RA_WVLIM_STALL_CSN | +| Number of clocks csn is stalled due to WAVE LIMIT. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_SWC_CSC_WR | +| Number of clocks to write CSC waves to SGPRs (need to multiply thi| +| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| +| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| +| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| +| ; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SPI_VWC_CSC_WR | +| Number of clocks to write CSC waves to VGPRs (need to multiply thi| +| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| +| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| +| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| +| ; | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACCUM_PREV | +| For counter N, increment by the value of counter N-1. Only accumul| +| ates once every 4 cycles. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_CYCLES | +| Clock cycles. (nondeterministic, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_BUSY_CYCLES | +| Clock cycles while SQ is reporting that it is busy. (nondeterminis| +| tic, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES | +| Count number of waves sent to SQs. (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LEVEL_WAVES | +| Track the number of waves. Set ACCUM_PREV for the next counter to | +| use this. (level, per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_EQ_64 | +| Count number of waves with exactly 64 active threads sent to SQs. | +| (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_64 | +| Count number of waves with <64 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_48 | +| Count number of waves with <48 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_32 | +| Count number of waves sent <32 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_LT_16 | +| Count number of waves sent <16 active threads sent to SQs. (per-si| +| md, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_BUSY_CU_CYCLES | +| Count quad-cycles each CU is busy. (nondeterministic, per-simd) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ITEMS | +| Number of valid items per wave. (per-simd, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS | +| Number of instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU | +| Number of VALU instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F16 | +| Number of VALU ADD/SUB instructions on float16. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F16 | +| Number of VALU MUL instructions on float16. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F16 | +| Number of VALU FMA/MAD instructions on float16. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F16 | +| Number of VALU transcendental instructions on float16. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F32 | +| Number of VALU ADD/SUB instructions on float32. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F32 | +| Number of VALU MUL instructions on float32. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F32 | +| Number of VALU FMA/MAD instructions on float32. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F32 | +| Number of VALU transcendental instructions on float32. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_ADD_F64 | +| Number of VALU ADD/SUB instructions on float64. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MUL_F64 | +| Number of VALU MUL instructions on float64. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_FMA_F64 | +| Number of VALU FMA/MAD instructions on float64. (per-simd, emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_TRANS_F64 | +| Number of VALU transcendental instructions on float64. (per-simd, | +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_INT32 | +| Number of VALU 32-bit integer (signed or unsigned) instructions. (| +| per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_INT64 | +| Number of VALU 64-bit integer (signed or unsigned) instructions. (| +| per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_CVT | +| Number of VALU data conversion instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_I8 | +| Number of VALU V_MFMA_*_I8 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F16 | +| Number of VALU V_MFMA_*_F16 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_BF16 | +| Number of VALU V_MFMA_*_BF16 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F32 | +| Number of VALU V_MFMA_*_F32 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_F64 | +| Number of VALU V_MFMA_*_F64 instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_I8 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type I8. (per-simd,| +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F16 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F16. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_BF16 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type BF16. (per-sim| +| d, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F32 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F32. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F64 | +| Number of VALU matrix math operations (add or mul) performed divid| +| ied by 512, assuming a full EXEC mask, of data type F64. (per-simd| +| , emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_MFMA | +| Number of MFMA instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM_WR | +| Number of VMEM write instructions issued (including FLAT). (per-si| +| md, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM_RD | +| Number of VMEM read instructions issued (including FLAT). (per-sim| +| d, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VMEM | +| Number of VMEM instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SALU | +| Number of SALU instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SMEM | +| Number of SMEM instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_FLAT | +| Number of FLAT instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_FLAT_LDS_ONLY | +| Number of FLAT instructions issued that read/wrote only from/to LD| +| S (only works if EARLY_TA_DONE is enabled). (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_LDS | +| Number of LDS instructions issued (including FLAT). (per-simd, emu| +| lated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_GDS | +| Number of GDS instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_EXP_GDS | +| Number of EXP and GDS instructions issued, excluding skipped expor| +| t instructions. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_BRANCH | +| Number of Branch instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SENDMSG | +| Number of Sendmsg instructions issued. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_VSKIPPED | +| Number of vector instructions skipped. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_VMEM | +| Number of in-flight VMEM instructions. Set next counter to ACCUM_P| +| REV and divide by INSTS_VMEM for average latency. Includes FLAT in| +| structions. (per-simd, level, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_SMEM | +| Number of in-flight SMEM instructions (*2 load/store; *2 atomic; *| +| 2 memtime; *4 wb/inv). Set next counter to ACCUM_PREV and divide b| +| y INSTS_SMEM for average latency per smem request. Falls slightly | +| short of total request latency because some fetches are divided in| +| to two requests that may finish at different times and this counte| +| r collects the average latency of the two. (per-simd, level, nonde| +| terministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_LEVEL_LDS | +| Number of in-flight LDS instructions. Set next counter to ACCUM_PR| +| EV and divide by INSTS_LDS for average latency. Includes FLAT inst| +| ructions. (per-simd, level, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_VALU_MFMA_BUSY_CYCLES | +| Number of cycles the MFMA ALU is busy (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVE_CYCLES | +| Number of wave-cycles spent by waves in the CUs (per-simd, nondete| +| rministic). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAIT_ANY | +| Number of wave-cycles spent waiting for anything (per-simd, nondet| +| erministic). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAIT_INST_ANY | +| Number of wave-cycles spent waiting for any instruction issue. In | +| units of 4 cycles. (per-simd, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_ANY | +| Number of cycles each wave is working on an instruction. (per-simd| +| , emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_VMEM | +| Number of cycles the SQ instruction arbiter is working on a VMEM i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_LDS | +| Number of cycles the SQ instruction arbiter is working on a LDS in| +| struction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_VALU | +| Number of cycles the SQ instruction arbiter is working on a VALU i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_SCA | +| Number of cycles the SQ instruction arbiter is working on a SALU o| +| r SMEM instruction. (per-simd, emulated). Units in quad-cycles(4 c| +| ycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_EXP_GDS | +| Number of cycles the SQ instruction arbiter is working on an EXPOR| +| T or GDS instruction. (per-simd, emulated). Units in quad-cycles(4| +| cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_MISC | +| Number of cycles the SQ instruction aribter is working on a BRANCH| +| or SENDMSG instruction. (per-simd, emulated). Units in quad-cycle| +| s(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACTIVE_INST_FLAT | +| Number of cycles the SQ instruction arbiter is working on a FLAT i| +| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_VMEM_WR | +| Number of cycles needed to send addr and cmd data for VMEM write i| +| nstructions. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_VMEM_RD | +| Number of cycles needed to send addr and cmd data for VMEM read in| +| structions. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_SMEM | +| Number of cycles needed to execute scalar memory reads. (per-simd,| +| emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INST_CYCLES_SALU | +| Number of cycles needed to execute non-memory read scalar operatio| +| ns. (per-simd, emulated). Units in quad-cycles(4 cycles) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_THREAD_CYCLES_VALU | +| Number of thread-cycles used to execute VALU operations (similar t| +| o INST_CYCLES_VALU but multiplied by # of active threads). (per-si| +| md) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_IFETCH | +| Number of instruction fetch requests from cache. (per-simd, emulat| +| ed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_IFETCH_LEVEL | +| Number of instruction fetch requests from cache. (per-simd, level)| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_BANK_CONFLICT | +| Number of cycles LDS is stalled by bank conflicts. (emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_ADDR_CONFLICT | +| Number of cycles LDS is stalled by address conflicts. (emulated,no| +| ndeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_UNALIGNED_STALL | +| Number of cycles LDS is stalled processing flat unaligned load/sto| +| re ops. (emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_MEM_VIOLATIONS | +| Number of threads that have a memory violation in the LDS.(emulate| +| d) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_ATOMIC_RETURN | +| Number of atomic return cycles in LDS. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_LDS_IDX_ACTIVE | +| Number of cycles LDS is used for indexed (non-direct,non-interpola| +| tion) operations. (per-simd, emulated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_ACCUM_PREV_HIRES | +| For counter N, increment by the value of counter N-1. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_RESTORED | +| Count number of context-restored waves sent to SQs. (per-simd, emu| +| lated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_WAVES_SAVED | +| Count number of context-saved waves. (per-simd, emulated, global) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQ_INSTS_SMEM_NORM | +| Number of SMEM instructions issued normalized to match smem_level | +| (*2 load/store; *2 atomic; *2 memtime; *4 wb/inv). (per-simd, emul| +| ated) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_INPUT_VALID_READYB | +| Input stalled by SQC (per-SQ, nondeterministic, unwindowed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_REQ | +| Total number of TC requests that were issued by instruction and co| +| nstant caches. (No-Masking, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_INST_REQ | +| Number of insruction requests to the TC (No-Masking, nondeterminis| +| tic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_READ_REQ | +| Number of data read requests to the TC (No-Masking, nondeterminist| +| ic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_WRITE_REQ | +| Number of data write requests to the TC (No-Masking, nondeterminis| +| tic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_DATA_ATOMIC_REQ | +| Number of data atomic requests to the TC (No-Masking, nondetermini| +| stic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_TC_STALL | +| Valid request stalled TC request interface (no-credits). (No-Maski| +| ng, nondeterministic, unwindowed) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_REQ | +| Number of requests. (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_HITS | +| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_MISSES | +| Number of cache misses, includes uncached requests. (per-SQ, per-B| +| ank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_ICACHE_MISSES_DUPLICATE | +| Number of misses that were duplicates (access to a non-resident, m| +| iss pending CL). (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ | +| Number of requests (post-bank-serialization). (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_HITS | +| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_MISSES | +| Number of cache misses, includes uncached requests. (per-SQ, per-B| +| ank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_MISSES_DUPLICATE | +| Number of misses that were duplicates (access to a non-resident, m| +| iss pending CL). (per-SQ, per-Bank, nondeterministic) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_ATOMIC | +| Number of atomic requests. (per-SQ, per-Bank) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_1 | +| Number of constant cache 1 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_2 | +| Number of constant cache 2 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_4 | +| Number of constant cache 4 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_8 | +| Number of constant cache 8 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SQC_DCACHE_REQ_READ_16 | +| Number of constant cache 16 dw read requests. (per-SQ) | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TA_BUSY | +| TA block is busy. Perf_Windowing not supported for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_TOTAL_WAVEFRONTS | +| Total number of wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WAVEFRONTS | +| Number of buffer wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_READ_WAVEFRONTS | +| Number of buffer read wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WRITE_WAVEFRONTS | +| Number of buffer write wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS | +| Number of buffer atomic wavefronts processed by TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_TOTAL_CYCLES | +| Number of buffer cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_READ_CYCLES | +| Number of buffer coalesced read cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES | +| Number of buffer coalesced write cycles issued to TC. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES | +| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES | +| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_DATA_STALLED_BY_TC_CYCLES | +| Number of cycles data path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WAVEFRONTS | +| Number of flat opcode wavfronts processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_READ_WAVEFRONTS | +| Number of flat opcode reads processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WRITE_WAVEFRONTS | +| Number of flat opcode writes processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS | +| Number of flat opcode atomics processed by the TA. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_TD_BUSY | +| TD is processing or waiting for data. Perf_Windowing not supported| +| for this counter. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_TC_STALL | +| TD is stalled waiting for TC data. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_SPI_STALL | +| TD is stalled SPI vinit | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_LOAD_WAVEFRONT | +| Count the wavefronts with opcode = load, include atomics and store| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_ATOMIC_WAVEFRONT | +| Count the wavefronts with opcode = atomic. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_STORE_WAVEFRONT | +| Count the wavefronts with opcode = store. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TD_COALESCABLE_WAVEFRONT | +| Count wavefronts that TA finds coalescable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN1 | +| TCP interface clocks are turned on. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN2 | +| TCP core clocks are turned on. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TD_TCP_STALL_CYCLES | +| TD stalls TCP | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES | +| TCR stalls TCP_TCR_req interface | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on a read | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on a write | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES | +| Tagram conflict stall on an atomic | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_PENDING_STALL_CYCLES | +| Stall due to data pending from L2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TA_TCP_STATE_READ | +| Number of state reads | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_VOLATILE | +| Total number of L1 volatile pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ACCESSES | +| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| +| READ+TCP_PERF_SEL_TOTAL_NONREAD | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_READ | +| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| +| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| +| L_TOTAL_MISS_EVICT_READ | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITE | +| Total number of local write pixels/buffers from TA. Equals TCP_PER| +| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITH_RET | +| Total number of atomic with return pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET | +| Total number of atomic without return pixels/buffers from TA | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES | +| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| +| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| +| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_REQUEST | +| Total CLIENT_UTCL1 NORMAL requests | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_MISS | +| Total utcl1 translation misses | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_HIT | +| Total utcl1 translation hits | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_PERMISSION_MISS | +| Total utcl1 permission misses | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_CACHE_ACCESSES | +| Count of total cache line (tag) accesses (includes hits and misses| +| ). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_LATENCY | +| Total TCP wave latency (from first clock of wave entering to first| +| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| +| atency | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_LATENCY | +| Total TCP->TCC request latency for reads and atomics with return. | +| Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_LATENCY | +| Total TCP->TCC request latency for writes and atomics without retu| +| rn. Not Windowed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ | +| Total read requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ | +| Total write requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ | +| Total atomic with return requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ | +| Total atomic without return requests from TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_READ_REQ | +| Total read requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_WRITE_REQ | +| Total write requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_ATOMIC_REQ | +| Total atomic requests with NC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_READ_REQ | +| Total read requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_WRITE_REQ | +| Total write requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_ATOMIC_REQ | +| Total atomic requests with UC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_READ_REQ | +| Total write requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_WRITE_REQ | +| Total write requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_ATOMIC_REQ | +| Total atomic requests with CC mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_READ_REQ | +| Total write requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_WRITE_REQ | +| Total write requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_ATOMIC_REQ | +| Total atomic requests with RW mtype from this TCP to all TCCs | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-15] | +-------------------------------------------------------------------------------- +| rocm:::TCA_CYCLE | +| Number of cycles. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCA_BUSY | +| Number of cycles we have a request pending. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CYCLE | +| Number of cycles. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY | +| Number of cycles we have a request pending. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_REQ | +| Number of requests of all types. This is measured at the tag block| +| . This may be more than the number of requests arriving at the TCC| +| , but it is a good indication of the total amount of work that nee| +| ds to be performed. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_STREAMING_REQ | +| Number of streaming requests. This is measured at the tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NC_REQ | +| The number of noncoherently cached requests. This is measured at t| +| he tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_UC_REQ | +| The number of uncached requests. This is measured at the tag block| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CC_REQ | +| The number of coherently cached requests. This is measured at the | +| tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_RW_REQ | +| The number of RW requests. This is measured at the tag block. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE | +| Number of probe requests. Not windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_ALL | +| Number of external probe requests with with EA_TCC_preq_all== 1. N| +| ot windowable. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_READ | +| Number of read requests. Compressed reads are included in this, bu| +| t metadata reads are not included. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITE | +| Number of write requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ATOMIC | +| Number of atomic requests of all types. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_HIT | +| Number of cache hits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_MISS | +| Number of cache misses. UC reads count as misses. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITEBACK | +| Number of lines written back to main memory. This includes writeba| +| cks of dirty lines and uncached write/atomic requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ | +| Number of transactions (either 32-byte or 64-byte) going over the | +| TC_EA_wrreq interface. Atomics may travel over the same interface | +| and are generally classified as write requests. This does not incl| +| ude probe commands. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_64B | +| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| +| er the TC_EA_wrreq interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WR_UNCACHED_32B | +| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| +| e due to uncached traffic. Note that CC mtypes can produce uncache| +| d requests, and those are included in this. A 64-byte request will| +| be counted as 2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_STALL | +| Number of cycles a write request was stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of IO credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of GMI credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of DRAM credits. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL | +| Number of cycles the TCC could not send a EA write request because| +| it already reached its maximum number of pending EA write request| +| s. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_LEVEL | +| The sum of the number of EA write requests in flight. This is prim| +| arily meant for measure average EA write latency. Average write la| +| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC | +| Number of transactions going over the TC_EA_wrreq interface that a| +| re actually atomic requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_LEVEL | +| The sum of the number of EA atomics in flight. This is primarily m| +| eant for measure average EA atomic latency. Average atomic latency| +| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ | +| Number of TCC/EA read requests (either 32-byte or 64-byte) | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_32B | +| Number of 32-byte TCC/EA read requests | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RD_UNCACHED_32B | +| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| +| equest will be counted as 2 | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of IO credits. Stalls occur regardless of whether a re| +| ad needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of GMI credits. Stalls occur regardless of whether a r| +| ead needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL | +| Number of cycles there was a stall because the read request interf| +| ace was out of DRAM credits. Stalls occur regardless of whether a | +| read needed to be performed or not. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_LEVEL | +| The sum of the number of TCC/EA read requests in flight. This is p| +| rimarily meant for measure average EA read latency. Average read l| +| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL | +| Number of cycles the normal request pipeline in the tag was stalle| +| d for any reason. Normally, stalls of this nature are measured exa| +| ctly from one point the pipeline, but that is not the case for thi| +| s counter. Probes can stall the pipeline at a variety of places, a| +| nd there is no single point that can reasonably measure the total | +| stalls accurately. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_WRITEBACK | +| Number of writebacks due to requests that are not writeback reques| +| ts. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK | +| Number of writebacks due to all TC_OP writeback requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_EVICT | +| Number of evictions due to requests that are not invalidate or pro| +| be requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_INV_EVICT | +| Number of evictions due to all TC_OP invalidate requests. | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM | +| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| +| d for DRAM (MC). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM | +| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| +| ed for DRAM (MC). | +| :device=0 | +| Mandatory device qualifier [0,1] | +| :instance=0 | +| Mandatory instance qualifier in range [0-31] | +-------------------------------------------------------------------------------- +| rocm:::MeanOccupancyPerCU | +| Mean occupancy per compute unit. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SIMD_UTILIZATION | +| Percent of time at least one warp was active on a multiprocessor, | +| averaged over all multiprocessors. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MeanOccupancyPerActiveCU | +| Mean occupancy per active compute unit. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TA_BUSY_sum | +| TA block is busy. Perf_Windowing not supported for this counter. S| +| um over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_TOTAL_WAVEFRONTS_sum | +| Total number of wavefronts processed by TA. Sum over TA instances.| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES_sum | +| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES_sum | +| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_DATA_STALLED_BY_TC_CYCLES_sum | +| Number of cycles data path stalled by TC. Perf_Windowing not suppo| +| rted for this counter. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WAVEFRONTS_sum | +| Number of flat opcode wavfronts processed by the TA. Sum over TA i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_READ_WAVEFRONTS_sum | +| Number of flat opcode reads processed by the TA. Sum over TA insta| +| nces. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS_sum | +| Number of flat opcode atomics processed by the TA. Sum over TA ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WAVEFRONTS_sum | +| Number of buffer wavefronts processed by TA. Sum over TA instances| +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_READ_WAVEFRONTS_sum | +| Number of buffer read wavefronts processed by TA. Sum over TA inst| +| ances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_WRITE_WAVEFRONTS_sum | +| Number of buffer write wavefronts processed by TA. Sum over TA ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS_sum | +| Number of buffer atomic wavefronts processed by TA. Sum over TA in| +| stances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_TOTAL_CYCLES_sum | +| Number of buffer cycles issued to TC. Sum over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_READ_CYCLES_sum | +| Number of buffer coalesced read cycles issued to TC. Sum over TA i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES_sum | +| Number of buffer coalesced write cycles issued to TC. Sum over TA | +| instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_TD_BUSY_sum | +| TD is processing or waiting for data. Perf_Windowing not supported| +| for this counter. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_TC_STALL_sum | +| TD is stalled waiting for TC data. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_LOAD_WAVEFRONT_sum | +| Count the wavefronts with opcode = load, include atomics and store| +| . Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_ATOMIC_WAVEFRONT_sum | +| Count the wavefronts with opcode = atomic. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_STORE_WAVEFRONT_sum | +| Count the wavefronts with opcode = store. Sum over TD instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_COALESCABLE_WAVEFRONT_sum | +| Count wavefronts that TA finds coalescable. Sum over TD instances.| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TD_SPI_STALL_sum | +| TD is stalled SPI vinit, sum of TCP instances | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN1_sum | +| TCP interface clocks are turned on. Not Windowed. Sum over TCP ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_GATE_EN2_sum | +| TCP core clocks are turned on. Not Windowed. Sum over TCP instance| +| s. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TD_TCP_STALL_CYCLES_sum | +| TD stalls TCP. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES_sum | +| TCR stalls TCP_TCR_req interface. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on a read. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on a write. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum | +| Tagram conflict stall on an atomic. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_VOLATILE_sum | +| Total number of L1 volatile pixels/buffers from TA. Sum over TCP i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ACCESSES_sum | +| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| +| READ+TCP_PERF_SEL_TOTAL_NONREAD. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_READ_sum | +| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| +| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| +| L_TOTAL_MISS_EVICT_READ. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITE_sum | +| Total number of local write pixels/buffers from TA. Equals TCP_PER| +| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE. S| +| um over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITH_RET_sum | +| Total number of atomic with return pixels/buffers from TA. Sum ove| +| r TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET_sum | +| Total number of atomic without return pixels/buffers from TA Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES_sum | +| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| +| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| +| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. Sum over TCP i| +| nstances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_REQUEST_sum | +| Total CLIENT_UTCL1 NORMAL requests Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_MISS_sum | +| Total utcl1 translation misses Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_TRANSLATION_HIT_sum | +| Total utcl1 translation hits Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_UTCL1_PERMISSION_MISS_sum | +| Total utcl1 permission misses Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TOTAL_CACHE_ACCESSES_sum | +| Count of total cache line (tag) accesses (includes hits and misses| +| ). Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_LATENCY_sum | +| Total TCP wave latency (from first clock of wave entering to first| +| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| +| atency Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TA_TCP_STATE_READ_sum | +| Number of state reads Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_LATENCY_sum | +| Total TCP->TCC request latency for reads and atomics with return. | +| Not Windowed. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_LATENCY_sum | +| Total TCP->TCC request latency for writes and atomics without retu| +| rn. Not Windowed. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_READ_REQ_sum | +| Total read requests from TCP to all TCCs Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_WRITE_REQ_sum | +| Total write requests from TCP to all TCCs Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ_sum | +| Total atomic with return requests from TCP to all TCCs Sum over TC| +| P instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum | +| Total atomic without return requests from TCP to all TCCs Sum over| +| TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_READ_REQ_sum | +| Total read requests with NC mtype from this TCP to all TCCs Sum ov| +| er TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_WRITE_REQ_sum | +| Total write requests with NC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_NC_ATOMIC_REQ_sum | +| Total atomic requests with NC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_READ_REQ_sum | +| Total read requests with UC mtype from this TCP to all TCCs Sum ov| +| er TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_WRITE_REQ_sum | +| Total write requests with UC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_UC_ATOMIC_REQ_sum | +| Total atomic requests with UC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_READ_REQ_sum | +| Total write requests with CC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_WRITE_REQ_sum | +| Total write requests with CC mtype from this TCP to all TCCs Sum o| +| ver TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_CC_ATOMIC_REQ_sum | +| Total atomic requests with CC mtype from this TCP to all TCCs Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_READ_REQ_sum | +| Total write requests with RW mtype from this TCP to all TCCs. Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_WRITE_REQ_sum | +| Total write requests with RW mtype from this TCP to all TCCs. Sum | +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCC_RW_ATOMIC_REQ_sum | +| Total atomic requests with RW mtype from this TCP to all TCCs. Sum| +| over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_PENDING_STALL_CYCLES_sum | +| Stall due to data pending from L2. Sum over TCP instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCR_TCP_STALL_CYCLES_PERCENT | +| Percentage of time TCP is stalled by TCR. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCA_CYCLE_sum | +| Number of cycles. Sum over all TCA instances | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCA_BUSY_sum | +| Number of cycles we have a request pending. Sum over all TCA insta| +| nces. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY_avr | +| TCC_BUSY avr over all memory channels. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRREQ_STALL_max | +| Number of cycles a write request was stalled. Max over TCC instanc| +| es. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CYCLE_sum | +| Number of cycles. Not windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_BUSY_sum | +| Number of cycles we have a request pending. Not windowable. Sum ov| +| er TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_REQ_sum | +| Number of requests of all types. This is measured at the tag block| +| . This may be more than the number of requests arriving at the TCC| +| , but it is a good indication of the total amount of work that nee| +| ds to be performed. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_STREAMING_REQ_sum | +| Number of streaming requests. This is measured at the tag block. S| +| um over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NC_REQ_sum | +| The number of noncoherently cached requests. This is measured at t| +| he tag block. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_UC_REQ_sum | +| The number of uncached requests. This is measured at the tag block| +| . Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_CC_REQ_sum | +| The number of coherently cached requests. This is measured at the | +| tag block. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_RW_REQ_sum | +| The number of RW requests. This is measured at the tag block. Sum | +| over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_sum | +| Number of probe requests. Not windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_PROBE_ALL_sum | +| Number of external probe requests with with EA_TCC_preq_all== 1. N| +| ot windowable. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_READ_sum | +| Number of read requests. Compressed reads are included in this, bu| +| t metadata reads are not included. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITE_sum | +| Number of write requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ATOMIC_sum | +| Number of atomic requests of all types. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_HIT_sum | +| Number of cache hits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_MISS_sum | +| Number of cache misses. UC reads count as misses. Sum over TCC ins| +| tances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_WRITEBACK_sum | +| Number of lines written back to main memory. This includes writeba| +| cks of dirty lines and uncached write/atomic requests. Sum over TC| +| C instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_sum | +| Number of transactions (either 32-byte or 64-byte) going over the | +| TC_EA_wrreq interface. Atomics may travel over the same interface | +| and are generally classified as write requests. This does not incl| +| ude probe commands. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_64B_sum | +| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| +| er the TC_EA_wrreq interface. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WR_UNCACHED_32B_sum | +| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| +| e due to uncached traffic. Note that CC mtypes can produce uncache| +| d requests, and those are included in this. A 64-byte request will| +| be counted as 2. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_STALL_sum | +| Number of cycles a write request was stalled. Sum over TCC instanc| +| es. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of IO credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of GMI credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum | +| Number of cycles a EA write request was stalled because the interf| +| ace was out of DRAM credits. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL_sum | +| Number of cycles the TCC could not send a EA write request because| +| it already reached its maximum number of pending EA write request| +| s. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_LEVEL_sum | +| The sum of the number of EA write requests in flight. This is prim| +| arily meant for measure average EA write latency. Average write la| +| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. Sum ove| +| r TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_LEVEL_sum | +| The sum of the number of TCC/EA read requests in flight. This is p| +| rimarily meant for measure average EA read latency. Average read l| +| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. Sum ov| +| er TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_sum | +| Number of transactions going over the TC_EA_wrreq interface that a| +| re actually atomic requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_ATOMIC_LEVEL_sum | +| The sum of the number of EA atomics in flight. This is primarily m| +| eant for measure average EA atomic latency. Average atomic latency| +| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| +| . Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_sum | +| Number of TCC/EA read requests (either 32-byte or 64-byte) Sum ove| +| r TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_32B_sum | +| Number of 32-byte TCC/EA read requests Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RD_UNCACHED_32B_sum | +| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| +| equest will be counted as 2 Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of IO credits. Stalls occur regardless of whether a re| +| ad needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of GMI credits. Stalls occur regardless of whether a r| +| ead needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum | +| Number of cycles there was a stall because the read request interf| +| ace was out of DRAM credits. Stalls occur regardless of whether a | +| read needed to be performed or not. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL_sum | +| . | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_TAG_STALL_PERCENT | +| Percentage of time the TCC tag lookup pipeline is stalled. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_WRITEBACK_sum | +| Number of writebacks due to requests that are not writeback reques| +| ts. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK_sum | +| Number of writebacks due to all TC_OP writeback requests. Sum over| +| TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_NORMAL_EVICT_sum | +| Number of evictions due to requests that are not invalidate or pro| +| be requests. Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_ALL_TC_OP_INV_EVICT_sum | +| Number of evictions due to all TC_OP invalidate requests. Sum over| +| TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_RDREQ_DRAM_sum | +| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| +| d for DRAM (MC). Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCC_EA_WRREQ_DRAM_sum | +| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| +| ed for DRAM (MC). Sum over TCC instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FETCH_SIZE | +| The total kilobytes fetched from the video memory. This is measure| +| d with all extra fetches and any cache or memory effects taken int| +| o account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WRITE_SIZE | +| The total kilobytes written to the video memory. This is measured | +| with all extra fetches and any cache or memory effects taken into | +| account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_16_OPS | +| The number of 16 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_32_OPS | +| The number of 32 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TOTAL_64_OPS | +| The number of 64 bits OPS executed | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ACTIVE_CYCLES | +| Active Cycles | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ELAPSED_CYCLES | +| Elapsed Cycles | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ACTIVE_WAVES | +| Active Waves | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::BANDWIDTH_EA | +| Memory Bandwidth measured at the TCC_EA interface. In units of byt| +| es/cycle. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::OccupancyPercent | +| GPU occupancy as % of maximum. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MfmaUtil | +| The percentage of kernel's duration, the MFMA unit was busy execut| +| ing instructions | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_avr | +| TA block is busy. Average over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_max | +| TA block is busy. Max over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_BUSY_min | +| TA block is busy. Min over TA instances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TA_FLAT_WRITE_WAVEFRONTS_sum | +| Number of flat opcode writes processed by the TA. Sum over TA inst| +| ances. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_sum | +| Total number of TCP stalls TA data interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_max | +| Maximum number of TCP stalls TA data interface. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WRITE_REQ_32B | +| The total number of 32-byte effective memory writes. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VFetchInsts | +| The average number of vector fetch instructions from the video mem| +| ory executed per work-item (affected by flow control). Excludes FL| +| AT instructions that fetch from video memory. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VWriteInsts | +| The average number of vector write instructions to the video memor| +| y executed per work-item (affected by flow control). Excludes FLAT| +| instructions that write to video memory. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FlatVMemInsts | +| The average number of FLAT instructions that read from or write to| +| the video memory executed per work item (affected by flow control| +| ). Includes FLAT instructions that read from or write to scratch. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::LDSInsts | +| The average number of LDS read or LDS write instructions executed | +| per work item (affected by flow control). Excludes FLAT instructi| +| ons that read from or write to LDS. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FlatLDSInsts | +| The average number of FLAT instructions that read or write to LDS | +| executed per work item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUUtilization | +| The percentage of active vector ALU threads in a wave. A lower num| +| ber can mean either more thread divergence in a wave or that the w| +| ork-group size is not a multiple of 64. Value range: 0% (bad), 100| +| % (ideal - no thread divergence). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUBusy | +| The percentage of GPUTime vector ALU instructions are processed. V| +| alue range: 0% (bad) to 100% (optimal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SALUBusy | +| The percentage of GPUTime scalar ALU instructions are processed. V| +| alue range: 0% (bad) to 100% (optimal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::FetchSize | +| The total kilobytes fetched from the video memory. This is measure| +| d with all extra fetches and any cache or memory effects taken int| +| o account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WriteSize | +| The total kilobytes written to the video memory. This is measured | +| with all extra fetches and any cache or memory effects taken into | +| account. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemWrites32B | +| The total number of effective 32B write transactions to the memory| +| | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::L2CacheHit | +| The percentage of fetch, write, atomic, and other instructions tha| +| t hit the data in L2 cache. Value range: 0% (no hit) to 100% (opti| +| mal). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemUnitStalled | +| The percentage of GPUTime the memory unit is stalled. Try reducing| +| the number or size of fetches and writes if possible. Value range| +| : 0% (optimal) to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::WriteUnitStalled | +| The percentage of GPUTime the Write unit is stalled. Value range: | +| 0% to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::LDSBankConflict | +| The percentage of GPUTime LDS is stalled by bank conflicts. Value | +| range: 0% (optimal) to 100% (bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GPUBusy | +| The percentage of time GPU was busy. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::Wavefronts | +| Total wavefronts. | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::VALUInsts | +| The average number of vector ALU instructions executed per work-it| +| em (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SALUInsts | +| The average number of scalar ALU instructions executed per work-it| +| em (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::SFetchInsts | +| The average number of scalar fetch instructions from the video mem| +| ory executed per work-item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::GDSInsts | +| The average number of GDS read or GDS write instructions executed | +| per work item (affected by flow control). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::MemUnitBusy | +| The percentage of GPUTime the memory unit is active. The result in| +| cludes the stall time (MemUnitStalled). This is measured with all | +| extra fetches and writes and any cache or memory effects taken int| +| o account. Value range: 0% to 100% (fetch-bound). | +| :device=0 | +| Mandatory device qualifier [0,1] | +-------------------------------------------------------------------------------- +| rocm:::ALUStalledByLDS | +| The percentage of GPUTime ALU units are stalled by the LDS input q| +| ueue being full or the output queue being not ready. If there are | +| LDS bank conflicts, reduce them. Otherwise, try reducing the numbe| +| r of LDS accesses if possible. Value range: 0% (optimal) to 100% (| +| bad). | +| :device=0 | +| Mandatory device qualifier [0,1] | +=============================================================================== + Native Events in Component: rocm_smi +=============================================================================== +| rocm_smi:::NUMDevices | +| Number of Devices which have monitors, accessible by rocm_smi. | +-------------------------------------------------------------------------------- +| rocm_smi:::rsmi_version | +| Version of RSMI lib; 0x0000MMMMmmmmpppp Major, Minor, Patch. | +-------------------------------------------------------------------------------- +| rocm_smi:::driver_version_str | +| Returns char* to z-terminated driver version string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::device_brand:device=0 | +| Returns char* to z-terminated brand string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::busy_percent:device=0 | +| Percentage of time the device was busy doing any processing. | +-------------------------------------------------------------------------------- +| rocm_smi:::drm_render_minor:device=0 | +| DRM Minor Number associated with this device. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=UMC | +| Correctable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=UMC | +| Uncorrectable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=SDMA | +| Correctable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=SDMA | +| Uncorrectable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=GFX | +| Correctable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=GFX | +| Uncorrectable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=MMHUB | +| Correctable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=MMHUB | +| Uncorrectable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=PCIE_BIF | +| Correctable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=PCIE_BIF | +| Uncorrectable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=0:block=HDP | +| Correctable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=0:block=HDP | +| Uncorrectable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_enabled_get:device=0 | +| Bit mask of GPU blocks with ecc error counting enabled. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=MEC | +| Firmware Version Block MEC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=MEC2 | +| Firmware Version Block MEC2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=RLC | +| Firmware Version Block RLC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SDMA | +| Firmware Version Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SDMA2 | +| Firmware Version Block SDMA2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SMC | +| Firmware Version Block SMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=SOS | +| Firmware Version Block SOS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=RAS | +| Firmware Version Block RAS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=XGMI | +| Firmware Version Block XGMI. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=0:block=VCN | +| Firmware Version Block VCN. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=0 | +| Returns System frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=1 | +| Returns System frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:idx=2 | +| Returns System frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:idx=0 | +| Returns DataFabric frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=0 | +| Returns SOC frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=1 | +| Returns SOC frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=2 | +| Returns SOC frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=3 | +| Returns SOC frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=4 | +| Returns SOC frequency value for supported_table[4]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=0 | +| Returns Memory frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=1 | +| Returns Memory frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=2 | +| Returns Memory frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=3 | +| Returns Memory frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=0:mask | +| Write Only. Sets bit mask, 1's for System frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=0:mask | +| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| +| upport table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=0:mask | +| Write Only. Sets bit mask, 1's for SOC frequency value in support | +| table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=0:mask | +| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_id:device=0 | +| Vendor supplied device id number. May be shared by same model devi| +| ces; see pci_id for a unique identifier. | +-------------------------------------------------------------------------------- +| rocm_smi:::memory_busy_percent:device=0 | +| Percentage_of time any device memory is being used. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VRAM:device=0 | +| Total VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VIS_VRAM:device=0 | +| Total Visible VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_GTT:device=0 | +| Total Visible GTT (Graphics Translation Table) memory, aka GART me| +| mory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VRAM:device=0 | +| VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VIS_VRAM:device=0 | +| Visible VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_GTT:device=0 | +| (Graphic Translation Table) memory in use (aka GART memory). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_name:device=0 | +| Returns char* to z-terminated name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_id:device=0 | +| BDF (Bus/Device/Function) ID, unique per device. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_replay_counter:device=0 | +| Sum of the number of NAK's received by the GPU and the NAK's gener| +| ated by the GPU. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_sent:device=0 | +| Throughput on PCIe traffic, bytes/second sent. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_received:device=0 | +| Throughput on PCIe traffic, bytes/second received. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_max_packet_size:device=0 | +| Maximum PCIe packet size. | +-------------------------------------------------------------------------------- +| rocm_smi:::perf_level:device=0 | +| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| +| t [0-8], see ROCm_SMI_Manual for details. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_average:device=0:sensor=0 | +| Current Average Power consumption in microwatts. Requires root pri| +| vileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap:device=0:sensor=0 | +| Power cap in microwatts. Read/Write. Between min/max (see power_ca| +| p_range_min/max). May require root privileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_min:device=0:sensor=0 | +| Power cap Minimum settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_max:device=0:sensor=0 | +| Power cap Maximim settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_serial_number:device=0 | +| Returns char* to z-terminated serial number string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_id:device=0 | +| Subsystem id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_subsystem_name:device=0 | +| Returns char* to z-terminated subsystem name string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_vendor_id:device=0 | +| System vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=0 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=1 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=0:sensor=2 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=0 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=1 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=0:sensor=2 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=0 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=1 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=0:sensor=2 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=0 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=1 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=0:sensor=2 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::unique_id:device=0 | +| Unique id for device. | +-------------------------------------------------------------------------------- +| rocm_smi:::vbios_version:device=0 | +| Returns char* to z-terminated vbios version string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_id:device=0 | +| Vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_name:device=0 | +| Returns char* to z-terminated vendor name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_brand:device=1 | +| Returns char* to z-terminated brand string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::busy_percent:device=1 | +| Percentage of time the device was busy doing any processing. | +-------------------------------------------------------------------------------- +| rocm_smi:::drm_render_minor:device=1 | +| DRM Minor Number associated with this device. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=UMC | +| Correctable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=UMC | +| Uncorrectable error count for the GPU Block UMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=SDMA | +| Correctable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=SDMA | +| Uncorrectable error count for the GPU Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=GFX | +| Correctable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=GFX | +| Uncorrectable error count for the GPU Block GFX. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=MMHUB | +| Correctable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=MMHUB | +| Uncorrectable error count for the GPU Block MMHUB. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=PCIE_BIF | +| Correctable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=PCIE_BIF | +| Uncorrectable error count for the GPU Block PCIE_BIF. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_correctable:device=1:block=HDP | +| Correctable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_count_uncorrectable:device=1:block=HDP | +| Uncorrectable error count for the GPU Block HDP. | +-------------------------------------------------------------------------------- +| rocm_smi:::ecc_enabled_get:device=1 | +| Bit mask of GPU blocks with ecc error counting enabled. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=MEC | +| Firmware Version Block MEC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=MEC2 | +| Firmware Version Block MEC2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=RLC | +| Firmware Version Block RLC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SDMA | +| Firmware Version Block SDMA. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SDMA2 | +| Firmware Version Block SDMA2. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SMC | +| Firmware Version Block SMC. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=SOS | +| Firmware Version Block SOS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=RAS | +| Firmware Version Block RAS. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=XGMI | +| Firmware Version Block XGMI. | +-------------------------------------------------------------------------------- +| rocm_smi:::firmware_version:device=1:block=VCN | +| Firmware Version Block VCN. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=0 | +| Returns System frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=1 | +| Returns System frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:idx=2 | +| Returns System frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:idx=0 | +| Returns DataFabric frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=0 | +| Returns SOC frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=1 | +| Returns SOC frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=2 | +| Returns SOC frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=3 | +| Returns SOC frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=4 | +| Returns SOC frequency value for supported_table[4]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:count | +| Number of frequencies available. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:current | +| Current operating frequency. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=0 | +| Returns Memory frequency value for supported_table[0]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=1 | +| Returns Memory frequency value for supported_table[1]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=2 | +| Returns Memory frequency value for supported_table[2]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=3 | +| Returns Memory frequency value for supported_table[3]. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_System:device=1:mask | +| Write Only. Sets bit mask, 1's for System frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_DataFabric:device=1:mask | +| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| +| upport table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_SOC:device=1:mask | +| Write Only. Sets bit mask, 1's for SOC frequency value in support | +| table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::gpu_clk_freq_Memory:device=1:mask | +| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| +| rt table permitted. All 0 mask prohibited. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_id:device=1 | +| Vendor supplied device id number. May be shared by same model devi| +| ces; see pci_id for a unique identifier. | +-------------------------------------------------------------------------------- +| rocm_smi:::memory_busy_percent:device=1 | +| Percentage_of time any device memory is being used. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VRAM:device=1 | +| Total VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_VIS_VRAM:device=1 | +| Total Visible VRAM memory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_total_GTT:device=1 | +| Total Visible GTT (Graphics Translation Table) memory, aka GART me| +| mory. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VRAM:device=1 | +| VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_VIS_VRAM:device=1 | +| Visible VRAM memory in use. | +-------------------------------------------------------------------------------- +| rocm_smi:::mem_usage_GTT:device=1 | +| (Graphic Translation Table) memory in use (aka GART memory). | +-------------------------------------------------------------------------------- +| rocm_smi:::device_name:device=1 | +| Returns char* to z-terminated name string; do not free(). | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_id:device=1 | +| BDF (Bus/Device/Function) ID, unique per device. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_replay_counter:device=1 | +| Sum of the number of NAK's received by the GPU and the NAK's gener| +| ated by the GPU. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_sent:device=1 | +| Throughput on PCIe traffic, bytes/second sent. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_throughput_received:device=1 | +| Throughput on PCIe traffic, bytes/second received. | +-------------------------------------------------------------------------------- +| rocm_smi:::pci_max_packet_size:device=1 | +| Maximum PCIe packet size. | +-------------------------------------------------------------------------------- +| rocm_smi:::perf_level:device=1 | +| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| +| t [0-8], see ROCm_SMI_Manual for details. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_average:device=1:sensor=0 | +| Current Average Power consumption in microwatts. Requires root pri| +| vileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap:device=1:sensor=0 | +| Power cap in microwatts. Read/Write. Between min/max (see power_ca| +| p_range_min/max). May require root privileges. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_min:device=1:sensor=0 | +| Power cap Minimum settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::power_cap_range_max:device=1:sensor=0 | +| Power cap Maximim settable value, in microwatts. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_serial_number:device=1 | +| Returns char* to z-terminated serial number string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_id:device=1 | +| Subsystem id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::device_subsystem_name:device=1 | +| Returns char* to z-terminated subsystem name string; do not free()| +| . | +-------------------------------------------------------------------------------- +| rocm_smi:::subsystem_vendor_id:device=1 | +| System vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=0 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=1 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_current:device=1:sensor=2 | +| Temperature current value, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=0 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=1 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical:device=1:sensor=2 | +| Temperature critical max value, typical > temp_max, millidegrees C| +| elsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=0 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=1 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_critical_hyst:device=1:sensor=2 | +| Temperature hysteresis value for critical limit, millidegrees Cels| +| ius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=0 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=1 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::temp_emergency:device=1:sensor=2 | +| Temperature emergency max for chips supporting more than two upper| +| temp limits, millidegrees Celsius. | +-------------------------------------------------------------------------------- +| rocm_smi:::unique_id:device=1 | +| Unique id for device. | +-------------------------------------------------------------------------------- +| rocm_smi:::vbios_version:device=1 | +| Returns char* to z-terminated vbios version string; do not free().| +| | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_id:device=1 | +| Vendor id number. | +-------------------------------------------------------------------------------- +| rocm_smi:::vendor_name:device=1 | +| Returns char* to z-terminated vendor name string; do not free(). | +=============================================================================== + Native Events in Component: amd_smi +=============================================================================== +| amd_smi:::temp_current:device=0:sensor=0 | +| Device 0 temp_current for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=0 | +| Device 0 temp_max for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=0 | +| Device 0 temp_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=0 | +| Device 0 temp_max_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=0 | +| Device 0 temp_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=0 | +| Device 0 temp_critical for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=0 | +| Device 0 temp_critical_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=0 | +| Device 0 temp_emergency for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=0 | +| Device 0 temp_emergency_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=0 | +| Device 0 temp_crit_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=0 | +| Device 0 temp_crit_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=0 | +| Device 0 temp_offset for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=0 | +| Device 0 temp_lowest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=0 | +| Device 0 temp_highest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=1 | +| Device 0 temp_current for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=1 | +| Device 0 temp_max for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=1 | +| Device 0 temp_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=1 | +| Device 0 temp_max_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=1 | +| Device 0 temp_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=1 | +| Device 0 temp_critical for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=1 | +| Device 0 temp_critical_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=1 | +| Device 0 temp_emergency for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=1 | +| Device 0 temp_emergency_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=1 | +| Device 0 temp_crit_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=1 | +| Device 0 temp_crit_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=1 | +| Device 0 temp_offset for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=1 | +| Device 0 temp_lowest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=1 | +| Device 0 temp_highest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=2 | +| Device 0 temp_current for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=2 | +| Device 0 temp_max for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=2 | +| Device 0 temp_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=2 | +| Device 0 temp_max_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=2 | +| Device 0 temp_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=2 | +| Device 0 temp_critical for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=2 | +| Device 0 temp_critical_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=2 | +| Device 0 temp_emergency for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=2 | +| Device 0 temp_emergency_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=2 | +| Device 0 temp_crit_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=2 | +| Device 0 temp_crit_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=2 | +| Device 0 temp_offset for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=2 | +| Device 0 temp_lowest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=2 | +| Device 0 temp_highest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=0:sensor=7 | +| Device 0 temp_current for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=0:sensor=7 | +| Device 0 temp_max for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=0:sensor=7 | +| Device 0 temp_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=0:sensor=7 | +| Device 0 temp_max_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=0:sensor=7 | +| Device 0 temp_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=0:sensor=7 | +| Device 0 temp_critical for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=0:sensor=7 | +| Device 0 temp_critical_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=0:sensor=7 | +| Device 0 temp_emergency for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=0:sensor=7 | +| Device 0 temp_emergency_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=0:sensor=7 | +| Device 0 temp_crit_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=0:sensor=7 | +| Device 0 temp_crit_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=0:sensor=7 | +| Device 0 temp_offset for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=0:sensor=7 | +| Device 0 temp_lowest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=0:sensor=7 | +| Device 0 temp_highest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=0 | +| Device 1 temp_current for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=0 | +| Device 1 temp_max for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=0 | +| Device 1 temp_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=0 | +| Device 1 temp_max_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=0 | +| Device 1 temp_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=0 | +| Device 1 temp_critical for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=0 | +| Device 1 temp_critical_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=0 | +| Device 1 temp_emergency for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=0 | +| Device 1 temp_emergency_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=0 | +| Device 1 temp_crit_min for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=0 | +| Device 1 temp_crit_min_hyst for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=0 | +| Device 1 temp_offset for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=0 | +| Device 1 temp_lowest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=0 | +| Device 1 temp_highest for sensor 0 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=1 | +| Device 1 temp_current for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=1 | +| Device 1 temp_max for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=1 | +| Device 1 temp_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=1 | +| Device 1 temp_max_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=1 | +| Device 1 temp_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=1 | +| Device 1 temp_critical for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=1 | +| Device 1 temp_critical_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=1 | +| Device 1 temp_emergency for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=1 | +| Device 1 temp_emergency_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=1 | +| Device 1 temp_crit_min for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=1 | +| Device 1 temp_crit_min_hyst for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=1 | +| Device 1 temp_offset for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=1 | +| Device 1 temp_lowest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=1 | +| Device 1 temp_highest for sensor 1 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=2 | +| Device 1 temp_current for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=2 | +| Device 1 temp_max for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=2 | +| Device 1 temp_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=2 | +| Device 1 temp_max_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=2 | +| Device 1 temp_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=2 | +| Device 1 temp_critical for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=2 | +| Device 1 temp_critical_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=2 | +| Device 1 temp_emergency for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=2 | +| Device 1 temp_emergency_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=2 | +| Device 1 temp_crit_min for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=2 | +| Device 1 temp_crit_min_hyst for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=2 | +| Device 1 temp_offset for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=2 | +| Device 1 temp_lowest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=2 | +| Device 1 temp_highest for sensor 2 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_current:device=1:sensor=7 | +| Device 1 temp_current for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max:device=1:sensor=7 | +| Device 1 temp_max for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min:device=1:sensor=7 | +| Device 1 temp_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_max_hyst:device=1:sensor=7 | +| Device 1 temp_max_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_min_hyst:device=1:sensor=7 | +| Device 1 temp_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical:device=1:sensor=7 | +| Device 1 temp_critical for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_critical_hyst:device=1:sensor=7 | +| Device 1 temp_critical_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency:device=1:sensor=7 | +| Device 1 temp_emergency for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_emergency_hyst:device=1:sensor=7 | +| Device 1 temp_emergency_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min:device=1:sensor=7 | +| Device 1 temp_crit_min for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_crit_min_hyst:device=1:sensor=7 | +| Device 1 temp_crit_min_hyst for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_offset:device=1:sensor=7 | +| Device 1 temp_offset for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_lowest:device=1:sensor=7 | +| Device 1 temp_lowest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::temp_highest:device=1:sensor=7 | +| Device 1 temp_highest for sensor 7 | +-------------------------------------------------------------------------------- +| amd_smi:::fan_rpms:device=0:sensor=0 | +| Device 0 fan speed in RPM | +-------------------------------------------------------------------------------- +| amd_smi:::fan_speed:device=0:sensor=0 | +| Device 0 fan speed (0-255 relative) | +-------------------------------------------------------------------------------- +| amd_smi:::fan_rpms:device=1:sensor=0 | +| Device 1 fan speed in RPM | +-------------------------------------------------------------------------------- +| amd_smi:::fan_speed:device=1:sensor=0 | +| Device 1 fan speed (0-255 relative) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_total_VRAM:device=0 | +| Device 0 total VRAM memory (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_usage_VRAM:device=0 | +| Device 0 VRAM memory usage (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_total_VRAM:device=1 | +| Device 1 total VRAM memory (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::mem_usage_VRAM:device=1 | +| Device 1 VRAM memory usage (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::power_average:device=0 | +| Device 0 average power consumption (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap:device=0 | +| Device 0 current power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_min:device=0 | +| Device 0 minimum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_max:device=0 | +| Device 0 maximum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_average:device=1 | +| Device 1 average power consumption (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap:device=1 | +| Device 1 current power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_min:device=1 | +| Device 1 minimum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::power_cap_range_max:device=1 | +| Device 1 maximum allowed power cap (W) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_sent:device=0 | +| Device 0 PCIe bytes sent per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_received:device=0 | +| Device 0 PCIe bytes received per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_max_packet:device=0 | +| Device 0 PCIe max packet size (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_replay_counter:device=0 | +| Device 0 PCIe replay (NAK) counter | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_sent:device=1 | +| Device 1 PCIe bytes sent per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_received:device=1 | +| Device 1 PCIe bytes received per second | +-------------------------------------------------------------------------------- +| amd_smi:::pci_throughput_max_packet:device=1 | +| Device 1 PCIe max packet size (bytes) | +-------------------------------------------------------------------------------- +| amd_smi:::pci_replay_counter:device=1 | +| Device 1 PCIe replay (NAK) counter | +-------------------------------------------------------------------------------- + +Total events reported: 732 diff --git a/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 b/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 new file mode 100644 index 000000000..026cff0d8 --- /dev/null +++ b/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 @@ -0,0 +1,371 @@ +/****************************/ +/* THIS IS OPEN SOURCE CODE */ +/****************************/ + +/** + * @author Vince Weaver (adapted by ChatGPT) + * + * Test case for AMD SMI component + * + * @brief + * Tests basic functionality of the AMD SMI component in PAPI + */ + +#include +#include +#include +#include + +#include "papi.h" +#include "papi_test.h" + +#define MAX_AMD_SMI_EVENTS 64 + + +#ifdef BASIC_TEST + +void run_test(int quiet) { + + if (!quiet) { + printf("Sleeping 1 second...\n"); + } + + /* Sleep */ + sleep(1); +} + +#else + +#define MATRIX_SIZE 1024 + + static double a[MATRIX_SIZE][MATRIX_SIZE]; + static double b[MATRIX_SIZE][MATRIX_SIZE]; + static double c[MATRIX_SIZE][MATRIX_SIZE]; + +/* Naive matrix multiply */ +void run_test(int quiet) { + + double s; + int i,j,k; + + if (!quiet) { + printf("Doing a naive %dx%d MMM...\n",MATRIX_SIZE,MATRIX_SIZE); + } + + for(i=0;i 1 ) { + if ( strstr( argv[1], "-w" ) ) { + do_wrap = 1; + } + } + +#endif + + /* Set TESTS_QUIET variable */ + tests_quiet( argc, argv ); + + /* PAPI Initialization */ + retval = PAPI_library_init( PAPI_VER_CURRENT ); + if ( retval != PAPI_VER_CURRENT ) { + test_fail(__FILE__, __LINE__,"PAPI_library_init failed\n",retval); + } + + if (!TESTS_QUIET) { + printf("Trying all AMD SMI events\n"); + } + + numcmp = PAPI_num_components(); + + for(cid=0; cidname,"amd_smi")) { + + amd_smi_cid=cid; + + if (!TESTS_QUIET) { + printf("Found AMD SMI component at cid %d\n",amd_smi_cid); + } +/* + if (cmpinfo->disabled) { + if (!TESTS_QUIET) { + printf("AMD SMI component disabled: %s\n", + cmpinfo->disabled_reason); + } + test_skip(__FILE__,__LINE__,"AMD SMI component disabled",0); + } + +*/ + break; + } + } + + /* Component not found */ + if (cid==numcmp) { + test_skip(__FILE__,__LINE__,"No AMD SMI component found\n",0); + } + + /* Create EventSet */ + retval = PAPI_create_eventset( &EventSet ); + if (retval != PAPI_OK) { + test_fail(__FILE__, __LINE__, + "PAPI_create_eventset()",retval); + } + + /* Add all events */ + + code = PAPI_NATIVE_MASK; + + r = PAPI_enum_cmp_event( &code, PAPI_ENUM_FIRST, amd_smi_cid ); + + while ( r == PAPI_OK ) { + + retval = PAPI_event_code_to_name( code, event_names[num_events] ); + if ( retval != PAPI_OK ) { + printf("Error translating %#x\n",code); + test_fail( __FILE__, __LINE__, + "PAPI_event_code_to_name", retval ); + } + + retval = PAPI_get_event_info(code,&evinfo); + if (retval != PAPI_OK) { + test_fail( __FILE__, __LINE__, + "Error getting event info\n",retval); + } + + strncpy(units[num_events],evinfo.units,sizeof(units[0])); + /* buffer must be null terminated to safely use strstr operation on it */ + units[num_events][sizeof(units[0])-1] = '\0'; + + data_type[num_events] = evinfo.data_type; + + retval = PAPI_add_event( EventSet, code ); + if (retval != PAPI_OK) { + break; /* We've hit an event limit */ + } + num_events++; + + r = PAPI_enum_cmp_event( &code, PAPI_ENUM_EVENTS, amd_smi_cid ); + } + + values=calloc(num_events,sizeof(long long)); + if (values==NULL) { + test_fail(__FILE__, __LINE__, + "No memory",retval); + } + + if (!TESTS_QUIET) { + printf("\nStarting measurements...\n\n"); + } + + /* Start Counting */ + before_time=PAPI_get_real_nsec(); + retval = PAPI_start( EventSet); + if (retval != PAPI_OK) { + test_fail(__FILE__, __LINE__, "PAPI_start()",retval); + } + + /* Run test */ + run_test(TESTS_QUIET); + + /* Stop Counting */ + after_time=PAPI_get_real_nsec(); + retval = PAPI_stop( EventSet, values); + if (retval != PAPI_OK) { + test_fail(__FILE__, __LINE__, "PAPI_stop()",retval); + } + + elapsed_time=((double)(after_time-before_time))/1.0e9; + + if (!TESTS_QUIET) { + printf("\nStopping measurements, took %.3fs, gathering results...\n\n", + elapsed_time); + + printf("Scaled energy measurements (if applicable):\n"); + + for(i=0;i +#include +#include +#include "papi.h" +#include +#include + +#define CHECK(cmd) \ +{\ + hipError_t error = cmd;\ + if (error != hipSuccess) { \ + fprintf(stderr, "error: '%s'(%d) at %s:%d\n", hipGetErrorString(error), error,__FILE__, __LINE__); \ + exit(EXIT_FAILURE);\ + }\ +} + +// THIS MACRO EXITS if the papi call does not return PAPI_OK. Do not use for routines that +// return anything else; e.g. PAPI_num_components, PAPI_get_component_info, PAPI_library_init. +#define CALL_PAPI_OK(papi_routine) \ + do { \ + int _papiret = papi_routine; \ + if (_papiret != PAPI_OK) { \ + fprintf(stderr, "%s:%d macro: PAPI Error: function " #papi_routine " failed with ret=%d [%s].\n", \ + __FILE__, __LINE__, _papiret, PAPI_strerror(_papiret)); \ + exit(-1); \ + } \ + } while (0); + + +#define MEMORY_ALLOCATION_CALL(var) \ + do { \ + if (var == NULL) { \ + fprintf(stderr, "%s:%d: Error: Memory Allocation Failed \n",\ + __FILE__, __LINE__); \ + exit(-1); \ + } \ + } while (0); + + +#define MAX_DEVICES (32) +#define BLOCK_SIZE (1024) +#define GRID_SIZE (512) +#define BUF_SIZE (32 * 1024) +#define ALIGN_SIZE (8) +#define SUCCESS (0) +#define NUM_METRIC (18) +#define NUM_EVENTS (2) +#define MAX_SIZE (64*1024*1024) // 64 MB + +typedef union +{ + long long ll; + unsigned long long ull; + double d; + void *vp; + unsigned char ch[8]; +} convert_64_t; + +typedef struct { + char name[128]; + long long value; + int flagged; +} eventStore_t; + +int eventsFoundCount = 0; // occupants of the array. +int eventsFoundMax; // Size of the array. +int eventsFoundAdd = 32; // Blocksize for increasing the array. +int deviceCount=0; // Total devices seen. +int deviceEvents[32] = {0}; // Number of events for each device=??. +int globalEvents = 0; // events without a "device=". +eventStore_t *eventsFound = NULL; // The array. + +//----------------------------------------------------------------------------- +// HIP routine: Square each element in the array A and write to array C. +//----------------------------------------------------------------------------- +template +__global__ void +vector_square(T *C_d, T *A_d, size_t N) +{ + size_t offset = (blockIdx.x * blockDim.x + threadIdx.x); + size_t stride = blockDim.x * gridDim.x ; + + for (size_t i=offset; i= eventsFoundMax) { // bump count, if too much, make room. + eventsFoundMax += eventsFoundAdd; // Add. + eventsFound = (eventStore_t*) realloc(eventsFound, eventsFoundMax*sizeof(eventStore_t)); // Make new room. + memset(eventsFound+(eventsFoundMax-eventsFoundAdd), 0, eventsFoundAdd*sizeof(eventStore_t)); // zero it. + } +} // end routine. + +//----------------------------------------------------------------------------- +// conduct a test using HIP. Derived from AMD sample code 'square.cpp'. +// coming in, EventSet is already populated, we just run the test and read. +// Note values must point at an array large enough to store the events in +// Eventset. +//----------------------------------------------------------------------------- +void conductTest(int EventSet, int device, long long *values) { + float *A_d, *C_d; + float *A_h, *C_h; + size_t N = 1000000; + size_t Nbytes = N * sizeof(float); + int ret, thisDev, verbose=0; + + ret = PAPI_start( EventSet ); + if (ret != PAPI_OK ) { + fprintf(stderr,"Error! PAPI_start\n"); + exit( ret ); + } + + hipDeviceProp_t props; + if (verbose) fprintf(stderr, "args: EventSet=%i, device=%i, values=%p.\n", EventSet, device, values); + + CHECK(hipSetDevice(device)); // Set device requested. + CHECK(hipGetDevice(&thisDev)); // Double check. + CHECK(hipGetDeviceProperties(&props, thisDev)); // Get properties (for name). + if (verbose) fprintf (stderr, "info: Requested Device=%i, running on device %i=%s\n", device, thisDev, props.name); + + if (verbose) fprintf (stderr, "info: allocate host mem (%6.2f MB)\n", 2*Nbytes/1024.0/1024.0); + A_h = (float*)malloc(Nbytes); // standard malloc for host. + CHECK(A_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); + C_h = (float*)malloc(Nbytes); // standard malloc for host. + CHECK(C_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); + + // Fill with Phi + i + for (size_t i=0; iname) == 0) cid=i; // If we found our match, record it. + } // end search components. + + if (cid < 0) { // if no amd_smi component found, + fprintf(stderr, "Failed to find amd_smi component among %i " + "reported components.\n", k); + FreeGlobals(); + PAPI_shutdown(); + exit(-1); + } + + printf("Found AMD_SMI Component at id %d\n", cid); + + // Add events at a GPU specific level ... eg amd_smi:::device=0:Whatever + eventCount = 0; + int eventsRead=0; + + // Begin enumeration of all events. + + printf("Events with numeric values were read; if they are zero, they may not \n" + "be operational, or the exercises performed by this code do not affect \n" + "them. We report all 'amd_smi' events presented by the amd_smi component. \n" + "\n" + "------------------------Event Name Found------------------------:---Value---\n"); + + PAPI_event_info_t info; // To get event enumeration info. + m=PAPI_NATIVE_MASK; // Get the PAPI NATIVE mask. + CALL_PAPI_OK(PAPI_enum_cmp_event(&m,PAPI_ENUM_FIRST,cid)); // Begin enumeration of ALL papi counters. + do { // Enumerate all events. + memset(&info,0,sizeof(PAPI_event_info_t)); // Clear event info. + k=m; // Make a copy of current code. + + // enumerate sub-events, with masks. For this test, we do not + // have any! But we do this to test our enumeration works as + // expected. First time through is guaranteed, of course. + + do { // enumerate masked events. + CALL_PAPI_OK(PAPI_get_event_info(k,&info)); // get name of k symbol. + char *devstr = strstr(info.symbol, "device="); // look for device enumerator. + if (devstr != NULL) { // If device specific, + device=atoi(devstr+7); // Get the device id, for info. +// fprintf(stderr, "Found amd_smi symbol '%s', device=%i.\n", info.symbol , device); + if (device < 0 || device >= 32) continue; // skip any not in range. + } else { // A few are system wide. +// fprintf(stderr, "Found amd_smi symbol '%s'.\n", info.symbol); + globalEvents++; // Add to global events. + device=0; // Any device will do. + } + + // Filter for strings being returned. + int isString = 0; + + if (strstr(info.symbol, "device_brand:") != NULL) isString=1; + if (strstr(info.symbol, "device_name:") != NULL) isString=1; + if (strstr(info.symbol, "device_serial_number:") != NULL) isString=1; + if (strstr(info.symbol, "device_subsystem_name:") != NULL) isString=1; + if (strstr(info.symbol, "vbios_version:") != NULL) isString=1; + if (strstr(info.symbol, "vendor_name:") != NULL) isString=1; + if (strstr(info.symbol, "driver_version_str:") != NULL) isString=1; + + // Filter out crashers. + // NOTE: These filters were for rocm_smi. Review and update for amd_smi if needed. + /* + if (strstr(info.symbol, "temp_current:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical_hyst:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; + // if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; // Duplicate line in original + + if (strstr(info.symbol, "temp_current:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical_hyst:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; + // if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; // Duplicate line in original + */ + + CALL_PAPI_OK(PAPI_create_eventset(&EventSet)); + CALL_PAPI_OK(PAPI_assign_eventset_component(EventSet, cid)); + + ret = PAPI_add_named_event(EventSet, info.symbol); // Don't want to fail program if name not found... + if(ret == PAPI_OK) { + eventCount++; // Bump number of events we could test. + if (deviceEvents[device] == 0) deviceCount++; // Increase count of devices if first for this device. + deviceEvents[device]++; // Add to count of events on this device. + } else { + fprintf(stderr, "FAILED to add event '%s', ret=%i='%s'.\n", info.symbol, ret, PAPI_strerror(ret)); + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + continue; + } + + long long value=0; // The only value we read. + + // Prep stuff. + + fprintf(stderr, "conductTest on single event: %s.\n", info.symbol); + conductTest(EventSet, device, &value); // Conduct a test, on device given. + addEventsFound(info.symbol, value); // Add to events we were able to read. + + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + + // report each event counted. + eventsRead++; // .. count and report. + if (value == 0) { + printf("%-64s: %lli (perhaps not exercised by current test code.)\n", info.symbol, value); + } else { + if (isString) printf("%-64s: %-64s\n", info.symbol, ((char*) value)); + else printf("%-64s: %lli\n", info.symbol, value); + } + } while(PAPI_enum_cmp_event(&k,PAPI_NTV_ENUM_UMASKS,cid)==PAPI_OK); // Get next umask entry (bits different) (should return PAPI_NOEVNT). + } while(PAPI_enum_cmp_event(&m,PAPI_ENUM_EVENTS,cid)==PAPI_OK); // Get next event code. + +// fprintf(stderr, "%s:%i Finished Event Loops.\n", __FILE__, __LINE__); + + if (eventCount < 1) { // If we failed on all of them, + fprintf(stderr, "Unable to add any AMD_SMI events; they are not present in the component.\n"); + fprintf(stderr, "Unable to proceed with this test.\n"); + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(-1); // exit no matter what. + } + + if (eventsRead < 1) { // If failed to read any, + fprintf(stderr, "\nFailed to read any AMD_SMI events.\n"); // report a failure. + fprintf(stderr, "Unable to proceed with pair testing.\n"); + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(-1); // exit no matter what. + } + + printf("\nTotal AMD_SMI events identified: %i.\n\n", eventsFoundCount); + + // EARLY SHUT DOWN. +// PAPI_shutdown(); +// return(0); + + // Next section is pair testing information. + if (eventsFoundCount < 2) { // If failed to get counts on any, + printf("Insufficient events are exercised by the current test code to perform pair testing.\n"); // report a failure. + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(0); // exit no matter what. + } + + + for (i=0; i<32; i++) { + if (deviceEvents[i] == 0) continue; // skip if none found. + if (i==0 && globalEvents >0) { + printf("Device %i assigned %i events (%i of which are not device specific). %i potential pairings for this device.\n", i, deviceEvents[i], globalEvents, deviceEvents[i]*(deviceEvents[i]-1)/2); + } else { + printf("Device %i assigned %i events. %i potential pairings for this device.\n", i, deviceEvents[i], deviceEvents[i]*(deviceEvents[i]-1)/2); + } + } + + // Begin pair testing. We consider every possible pairing of events + // that, tested alone, returned a value greater than zero. +// fprintf(stderr, "Begin Pair Testing.\n"); + + int mainEvent, pairEvent, mainDevice, pairDevice; + long long readValues[2]; + int goodOnSame=0, failOnDiff=0, badSameCombo=0, pairProblems=0; // Some counters. + int type; // 0 succeed on same device, 1 = fail across devices. + for (type=0; type<2; type++) { + if (type == 0) { + printf("List of Pairings on SAME device:\n"); + printf("* means value changed by more than 10%% when paired (vs measured singly, above).\n"); + printf("^ means a pair was rejected as an invalid combo.\n"); + } else { + printf("List of Pairings causing an error when on DIFFERENT devices:\n"); + } + + for (mainEvent = 0; mainEvent 1.10) { // Flag as significantly different for main. + flag1='*'; + eventsFound[mainEvent].flagged = 1; // .. remember this event is suspect. + } + + if (pairCheck < 0.90 || pairCheck > 1.10) { // Flag as significantly different for pair. + flag2='*'; + eventsFound[pairEvent].flagged = 1; // .. remember this event is suspect. + } + + if (flag1 == '*' || flag2 == '*') { + pairProblems++; // Remember number of problems. + flag = '*'; // set global flag. + } + + printf("%c %64s + %-64s [", flag, eventsFound[mainEvent].name, eventsFound[pairEvent].name); + if (flag1 == '*') printf("%c%lli (vs %lli),", flag1, readValues[0], eventsFound[mainEvent].value); + else printf("%c%lli,", flag1, readValues[0]); + + if (flag2 == '*') printf("%c%lli (vs %lli)]\n", flag2, readValues[1], eventsFound[pairEvent].value); + else printf("%c%lli]\n", flag2, readValues[1]); + + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + } // end for each possible pairing event. + } // end loop for each possible primary event. + + if (type == 0) { // For good pairings on same devices, + if (goodOnSame == 0) { + printf("NO valid pairings of above events if both on the SAME device.\n"); + } else { + printf("%i valid pairings of above events if both on the SAME device.\n", goodOnSame); + } + + printf("%i unique pairings on SAME device were rejected as bad combinations.\n", badSameCombo); + + if (pairProblems > 0) { + printf("%i pairings resulted in a change of one or both event values > 10%%.\n", pairProblems); + printf("The following events were changed by pairing:\n"); + for (mainEvent = 0; mainEvent +#include +#include +#include "papi.h" +#include +#include + +#define CHECK(cmd) \ +{\ + hipError_t error = cmd;\ + if (error != hipSuccess) { \ + fprintf(stderr, "error: '%s'(%d) at %s:%d\n", hipGetErrorString(error), error,__FILE__, __LINE__); \ + exit(EXIT_FAILURE);\ + }\ +} + +// THIS MACRO EXITS if the papi call does not return PAPI_OK. Do not use for routines that +// return anything else; e.g. PAPI_num_components, PAPI_get_component_info, PAPI_library_init. +#define CALL_PAPI_OK(papi_routine) \ + do { \ + int _papiret = papi_routine; \ + if (_papiret != PAPI_OK) { \ + fprintf(stderr, "%s:%d macro: PAPI Error: function " #papi_routine " failed with ret=%d [%s].\n", \ + __FILE__, __LINE__, _papiret, PAPI_strerror(_papiret)); \ + exit(-1); \ + } \ + } while (0); + + +#define MEMORY_ALLOCATION_CALL(var) \ + do { \ + if (var == NULL) { \ + fprintf(stderr, "%s:%d: Error: Memory Allocation Failed \n",\ + __FILE__, __LINE__); \ + exit(-1); \ + } \ + } while (0); + + +#define MAX_DEVICES (32) +#define BLOCK_SIZE (1024) +#define GRID_SIZE (512) +#define BUF_SIZE (32 * 1024) +#define ALIGN_SIZE (8) +#define SUCCESS (0) +#define NUM_METRIC (18) +#define NUM_EVENTS (2) +#define MAX_SIZE (64*1024*1024) // 64 MB + +typedef union +{ + long long ll; + unsigned long long ull; + double d; + void *vp; + unsigned char ch[8]; +} convert_64_t; + +typedef struct { + char name[128]; + long long value; + int flagged; +} eventStore_t; + +int eventsFoundCount = 0; // occupants of the array. +int eventsFoundMax; // Size of the array. +int eventsFoundAdd = 32; // Blocksize for increasing the array. +int deviceCount=0; // Total devices seen. +int deviceEvents[32] = {0}; // Number of events for each device=??. +int globalEvents = 0; // events without a "device=". +eventStore_t *eventsFound = NULL; // The array. + +//----------------------------------------------------------------------------- +// HIP routine: Square each element in the array A and write to array C. +//----------------------------------------------------------------------------- +template +__global__ void +vector_square(T *C_d, T *A_d, size_t N) +{ + size_t offset = (blockIdx.x * blockDim.x + threadIdx.x); + size_t stride = blockDim.x * gridDim.x ; + + for (size_t i=offset; i= eventsFoundMax) { // bump count, if too much, make room. + eventsFoundMax += eventsFoundAdd; // Add. + eventsFound = (eventStore_t*) realloc(eventsFound, eventsFoundMax*sizeof(eventStore_t)); // Make new room. + memset(eventsFound+(eventsFoundMax-eventsFoundAdd), 0, eventsFoundAdd*sizeof(eventStore_t)); // zero it. + } +} // end routine. + +//----------------------------------------------------------------------------- +// conduct a test using HIP. Derived from AMD sample code 'square.cpp'. +// coming in, EventSet is already populated, we just run the test and read. +// Note values must point at an array large enough to store the events in +// Eventset. +//----------------------------------------------------------------------------- +void conductTest(int EventSet, int device, long long *values) { + float *A_d, *C_d; + float *A_h, *C_h; + size_t N = 1000000; + size_t Nbytes = N * sizeof(float); + int ret, thisDev, verbose=0; + + ret = PAPI_start( EventSet ); + if (ret != PAPI_OK ) { + fprintf(stderr,"Error! PAPI_start\n"); + exit( ret ); + } + + hipDeviceProp_t props; + if (verbose) fprintf(stderr, "args: EventSet=%i, device=%i, values=%p.\n", EventSet, device, values); + + CHECK(hipSetDevice(device)); // Set device requested. + CHECK(hipGetDevice(&thisDev)); // Double check. + CHECK(hipGetDeviceProperties(&props, thisDev)); // Get properties (for name). + if (verbose) fprintf (stderr, "info: Requested Device=%i, running on device %i=%s\n", device, thisDev, props.name); + + if (verbose) fprintf (stderr, "info: allocate host mem (%6.2f MB)\n", 2*Nbytes/1024.0/1024.0); + A_h = (float*)malloc(Nbytes); // standard malloc for host. + CHECK(A_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); + C_h = (float*)malloc(Nbytes); // standard malloc for host. + CHECK(C_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); + + // Fill with Phi + i + for (size_t i=0; iname) == 0) cid=i; // If we found our match, record it. + } // end search components. + + if (cid < 0) { // if no amd_smi component found, + fprintf(stderr, "Failed to find amd_smi component among %i " + "reported components.\n", k); + FreeGlobals(); + PAPI_shutdown(); + exit(-1); + } + + printf("Found AMD_SMI Component at id %d\n", cid); + + // Add events at a GPU specific level ... eg amd_smi:::device=0:Whatever + eventCount = 0; + int eventsRead=0; + + // Begin enumeration of all events. + + printf("Events with numeric values were read; if they are zero, they may not \n" + "be operational, or the exercises performed by this code do not affect \n" + "them. We report all 'amd_smi' events presented by the amd_smi component. \n" + "\n" + "------------------------Event Name Found------------------------:---Value---\n"); + + PAPI_event_info_t info; // To get event enumeration info. + m=PAPI_NATIVE_MASK; // Get the PAPI NATIVE mask. + CALL_PAPI_OK(PAPI_enum_cmp_event(&m,PAPI_ENUM_FIRST,cid)); // Begin enumeration of ALL papi counters. + do { // Enumerate all events. + memset(&info,0,sizeof(PAPI_event_info_t)); // Clear event info. + k=m; // Make a copy of current code. + + // enumerate sub-events, with masks. For this test, we do not + // have any! But we do this to test our enumeration works as + // expected. First time through is guaranteed, of course. + + do { // enumerate masked events. + CALL_PAPI_OK(PAPI_get_event_info(k,&info)); // get name of k symbol. + char *devstr = strstr(info.symbol, "device="); // look for device enumerator. + if (devstr != NULL) { // If device specific, + device=atoi(devstr+7); // Get the device id, for info. +// fprintf(stderr, "Found amd_smi symbol '%s', device=%i.\n", info.symbol , device); + if (device < 0 || device >= 32) continue; // skip any not in range. + } else { // A few are system wide. +// fprintf(stderr, "Found amd_smi symbol '%s'.\n", info.symbol); + globalEvents++; // Add to global events. + device=0; // Any device will do. + } + + // Filter for strings being returned. + int isString = 0; + + if (strstr(info.symbol, "device_brand:") != NULL) isString=1; + if (strstr(info.symbol, "device_name:") != NULL) isString=1; + if (strstr(info.symbol, "device_serial_number:") != NULL) isString=1; + if (strstr(info.symbol, "device_subsystem_name:") != NULL) isString=1; + if (strstr(info.symbol, "vbios_version:") != NULL) isString=1; + if (strstr(info.symbol, "vendor_name:") != NULL) isString=1; + if (strstr(info.symbol, "driver_version_str:") != NULL) isString=1; + + // Filter out crashers. + // NOTE: These filters were for rocm_smi. Review and update for amd_smi if needed. + /* + if (strstr(info.symbol, "temp_current:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical_hyst:device=0:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; + // if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; // Duplicate line in original + + if (strstr(info.symbol, "temp_current:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_critical_hyst:device=1:sensor=3") != NULL) continue; + if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; + // if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; // Duplicate line in original + */ + + CALL_PAPI_OK(PAPI_create_eventset(&EventSet)); + CALL_PAPI_OK(PAPI_assign_eventset_component(EventSet, cid)); + + ret = PAPI_add_named_event(EventSet, info.symbol); // Don't want to fail program if name not found... + if(ret == PAPI_OK) { + eventCount++; // Bump number of events we could test. + if (deviceEvents[device] == 0) deviceCount++; // Increase count of devices if first for this device. + deviceEvents[device]++; // Add to count of events on this device. + } else { + fprintf(stderr, "FAILED to add event '%s', ret=%i='%s'.\n", info.symbol, ret, PAPI_strerror(ret)); + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + continue; + } + + long long value=0; // The only value we read. + + // Prep stuff. + + fprintf(stderr, "conductTest on single event: %s.\n", info.symbol); + conductTest(EventSet, device, &value); // Conduct a test, on device given. + addEventsFound(info.symbol, value); // Add to events we were able to read. + + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + + // report each event counted. + eventsRead++; // .. count and report. + if (value == 0) { + printf("%-64s: %lli (perhaps not exercised by current test code.)\n", info.symbol, value); + } else { + if (isString) printf("%-64s: %-64s\n", info.symbol, ((char*) value)); + else printf("%-64s: %lli\n", info.symbol, value); + } + } while(PAPI_enum_cmp_event(&k,PAPI_NTV_ENUM_UMASKS,cid)==PAPI_OK); // Get next umask entry (bits different) (should return PAPI_NOEVNT). + } while(PAPI_enum_cmp_event(&m,PAPI_ENUM_EVENTS,cid)==PAPI_OK); // Get next event code. + +// fprintf(stderr, "%s:%i Finished Event Loops.\n", __FILE__, __LINE__); + + if (eventCount < 1) { // If we failed on all of them, + fprintf(stderr, "Unable to add any AMD_SMI events; they are not present in the component.\n"); + fprintf(stderr, "Unable to proceed with this test.\n"); + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(-1); // exit no matter what. + } + + if (eventsRead < 1) { // If failed to read any, + fprintf(stderr, "\nFailed to read any AMD_SMI events.\n"); // report a failure. + fprintf(stderr, "Unable to proceed with pair testing.\n"); + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(-1); // exit no matter what. + } + + printf("\nTotal AMD_SMI events identified: %i.\n\n", eventsFoundCount); + + // EARLY SHUT DOWN. +// PAPI_shutdown(); +// return(0); + + // Next section is pair testing information. + if (eventsFoundCount < 2) { // If failed to get counts on any, + printf("Insufficient events are exercised by the current test code to perform pair testing.\n"); // report a failure. + FreeGlobals(); + PAPI_shutdown(); // Returns no value. + exit(0); // exit no matter what. + } + + + for (i=0; i<32; i++) { + if (deviceEvents[i] == 0) continue; // skip if none found. + if (i==0 && globalEvents >0) { + printf("Device %i assigned %i events (%i of which are not device specific). %i potential pairings for this device.\n", i, deviceEvents[i], globalEvents, deviceEvents[i]*(deviceEvents[i]-1)/2); + } else { + printf("Device %i assigned %i events. %i potential pairings for this device.\n", i, deviceEvents[i], deviceEvents[i]*(deviceEvents[i]-1)/2); + } + } + + // Begin pair testing. We consider every possible pairing of events + // that, tested alone, returned a value greater than zero. +// fprintf(stderr, "Begin Pair Testing.\n"); + + int mainEvent, pairEvent, mainDevice, pairDevice; + long long readValues[2]; + int goodOnSame=0, failOnDiff=0, badSameCombo=0, pairProblems=0; // Some counters. + int type; // 0 succeed on same device, 1 = fail across devices. + for (type=0; type<2; type++) { + if (type == 0) { + printf("List of Pairings on SAME device:\n"); + printf("* means value changed by more than 10%% when paired (vs measured singly, above).\n"); + printf("^ means a pair was rejected as an invalid combo.\n"); + } else { + printf("List of Pairings causing an error when on DIFFERENT devices:\n"); + } + + for (mainEvent = 0; mainEvent 1.10) { // Flag as significantly different for main. + flag1='*'; + eventsFound[mainEvent].flagged = 1; // .. remember this event is suspect. + } + + if (pairCheck < 0.90 || pairCheck > 1.10) { // Flag as significantly different for pair. + flag2='*'; + eventsFound[pairEvent].flagged = 1; // .. remember this event is suspect. + } + + if (flag1 == '*' || flag2 == '*') { + pairProblems++; // Remember number of problems. + flag = '*'; // set global flag. + } + + printf("%c %64s + %-64s [", flag, eventsFound[mainEvent].name, eventsFound[pairEvent].name); + if (flag1 == '*') printf("%c%lli (vs %lli),", flag1, readValues[0], eventsFound[mainEvent].value); + else printf("%c%lli,", flag1, readValues[0]); + + if (flag2 == '*') printf("%c%lli (vs %lli)]\n", flag2, readValues[1], eventsFound[pairEvent].value); + else printf("%c%lli]\n", flag2, readValues[1]); + + CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. + CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. + } // end for each possible pairing event. + } // end loop for each possible primary event. + + if (type == 0) { // For good pairings on same devices, + if (goodOnSame == 0) { + printf("NO valid pairings of above events if both on the SAME device.\n"); + } else { + printf("%i valid pairings of above events if both on the SAME device.\n", goodOnSame); + } + + printf("%i unique pairings on SAME device were rejected as bad combinations.\n", badSameCombo); + + if (pairProblems > 0) { + printf("%i pairings resulted in a change of one or both event values > 10%%.\n", pairProblems); + printf("The following events were changed by pairing:\n"); + for (mainEvent = 0; mainEvent)*Hh2O?|G`~->=kmKKD~U6`6mZ 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 z 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ɑzr!40*pCDw{P8FWS-F+IwAcq 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

k)=tpa!j2g^ff=t@m7R0v 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%0DxJrupcLCU7n(Zli7!|~Llo!vv8OwKGrZL4$j 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⁡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 H1^NFUlJI&Q diff --git a/src/components/amd_smi/tests/amdsmi_example.o b/src/components/amd_smi/tests/amdsmi_example.o deleted file mode 100644 index ca36ee54d4083262656fcd12d27239410cb54b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6552 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≪zHzCf$ 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�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%0ADcG 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


Xv4rWR+t{{5wNYZT4xd7<5 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

?S9C!?&rIe5N|R^R9= zgLR*~dT(=sJxt#}wT8|^z?-#ppyPQ2NZ(B_t|b>fMOk~iL>@7H#|W0jzW9eG(%@ro zlkHKSEw(0hH@sI#@W>A&B?*D5wDLcaC9AYLMEBh$FcxOkWgfCEc}RRVrx0$zRR|kX zi=@om5} zlfGDDHekV0Ot#xewgb~5%3JIvs2P@Q{9`5iRyX@&!6jH%!a;P9mnIcxs@?^i@LMwG zfRC-6XQB$4>97*E90aGALV~Af2K6UQu)ZMIvhbx26e?R80jnKLP%a71`)gknqURBK z44wfP!{s?XO8Aif%B8lh3n@+2kbGsjRMTUbkZLs?BbX-xnbLP4@~##0Vzv-6)A!M@ z0vv>G`9@HTYs6MxA~(@e!JieL> zw~d?`k=uoW8+5{KIgrg^iu)gU_-fa_z8O}{Jt2KULNKQ`_w79WE9vBG*1w5K|CXtL zEU^Zps`_hu`T{>AB)*t#PFHD!%t`dC45h4m1*Jn6OK_2CbfxAOdSG|lo-~6O5SF;b ze#RVLnV)|J+p^@5yFi^%_xFM>*<;!_@MM_->sUR%4{2~jOWYk&=#!Ks%3Dmh|4+VB z<2tV0$JKwbc68k2r<$TUZ$>F)N6LN$yv4~eZ$XhP>7FT!2J_yha2e@V#NeM;Z(UB7 z5X{YwQRFhWc*-b#Lf$7r*~r15mblZjgpO`*XxM9_{G%H{6NcU{fgofb?Ut0QnA zb2eXHj+M4%_Olq&>Mo0L8z-0irAQ>xCfuwWu3<%#)F!pE>; z-YQ*8V4Ks_9h<{h&q@J(l&z=96VjG$#UE=6;mh;=#3Kcv+C^-8@m*km@* zV)(9`0aeDma-}BpWo;XqxWJmlefvG_B;lb9nTU#lhWf0@icL(=Zp-3f%KN*R#y^K` z=>$F^g0hs&ZyYc2lQZVN~+R1i*v(XnJ?@-p31ATE`HQYQ# z;86##^Vw{+*v`pZi?E0gA)gaV>MzwyB3HL?2~>WTuTMon)#kCQ_a^M4GOofc*mD`% zfPcgWthon1xTh!67)qnj6s}TIywsr8iZ|M!Fi|UmRWD1q%|Y2-Z6ycf6%iv^o;uiw z8TQ~)O}lv|?&6Y;+}(7>yFZF)i{1O*jr5XtUeYYMKhc$$?k?(X_hAyWAwI(`aX>h? zs=%Md&fKF$<-79YU#WaYl^!`;x>(wGUqb>w`2sF=yMi=l8dX?!H=I5^d&yj$oz|jy zSlGg}yMol;B-SQ+9aj-PDQ4Myh;}0P>w&&=sKFhAJIT5tNOL~@K9J6@_KYLd< z`RJ*J@i1-v_6ng=;@5Q~≷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 +aw7z^%%BTlFa#d%Z+Pp+); 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 Date: Fri, 9 May 2025 14:59:56 -0700 Subject: [PATCH 010/147] updating tests --- src/components/amd_smi/tests/gemm.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/amd_smi/tests/gemm.cpp b/src/components/amd_smi/tests/gemm.cpp index bb6791dcf..fdfa8a080 100644 --- a/src/components/amd_smi/tests/gemm.cpp +++ b/src/components/amd_smi/tests/gemm.cpp @@ -152,10 +152,10 @@ int main(int argc, char *argv[]) { /* Add GPU events to the event set. */ const char *event1 = "amd_smi:::temp_current:device=0:sensor=0"; - const char *event2 = "rocm_smi:::temp_current:device=1:sensor=2"; - const char *event3 = "rocm_smi:::mem_usage_VRAM:device=1"; - const char *event4 = "rocm_smi:::busy_percent:device=1"; - const char *event5 = "rocm_smi:::memory_busy_percent:device=1"; // New event + const char *event2 = "amd_smi:::temp_current:device=0:sensor=1"; + const char *event3 = "amd_smi:::temp_current:device=0:sensor=2"; + const char *event4 = "amd_smi:::temp_current:device=0:sensor=3"; + const char *event5 = "amd_smi:::power_average:device=0"; // New event statusFlag = PAPI_add_named_event(EventSet, event1); if (statusFlag != PAPI_OK) { From c643253489a514136e0d377ff3be408ee911c145 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 12 May 2025 03:38:41 -0700 Subject: [PATCH 011/147] supporting more events --- src/components/amd_smi/amds.c | 621 ++++++++++++++++++++++++++++++++-- 1 file changed, 597 insertions(+), 24 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 3bcf593e8..f33661f69 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -25,8 +25,8 @@ static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_h processor_type_t, amdsmi_processor_handle *, uint32_t *); static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, - amdsmi_temperature_type_t, - amdsmi_temperature_metric_t, int64_t *); + amdsmi_temperature_type_t, + amdsmi_temperature_metric_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); @@ -45,7 +45,16 @@ static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_ static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); - +/* New AMD SMI function pointers */ +static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); +static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); +static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); +static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); +static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); +static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); /* Global device list and count */ static int32_t device_count = 0; @@ -133,13 +142,21 @@ static int access_amdsmi_pci_throughput(int mode, void *arg); static int access_amdsmi_pci_replay_counter(int mode, void *arg); static int access_amdsmi_clk_freq(int mode, void *arg); static int access_amdsmi_gpu_metrics(int mode, void *arg); +static int access_amdsmi_gpu_info(int mode, void *arg); +static int access_amdsmi_gpu_activity(int mode, void *arg); +static int access_amdsmi_fan_speed_max(int mode, void *arg); +static int access_amdsmi_pci_bandwidth(int mode, void *arg); +static int access_amdsmi_energy_count(int mode, void *arg); +static int access_amdsmi_power_profile_status(int mode, void *arg); /* Simple open/close/start/stop functions (no special handling needed for most events) */ static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } + static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } + static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } /* Dynamic load of AMD SMI library symbols */ static void *sym(const char *preferred, const char *fallback) { @@ -197,6 +214,17 @@ static int load_amdsmi_sym(void) { /* GPU metrics */ amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); + /* Identification and other queries */ + amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); + amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); + amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); + amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); + amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); + amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); + amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); + amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); + /* Verify that all required symbols are loaded */ struct { const char *name; void *ptr; } required[] = { { "amdsmi_init", amdsmi_init_p }, @@ -217,7 +245,16 @@ static int load_amdsmi_sym(void) { { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, - { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p } + { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, + { "amdsmi_get_gpu_id", amdsmi_get_gpu_id_p }, + { "amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p }, + { "amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p }, + { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, + { "amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p }, + { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, + { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, + { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, + { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p } }; int miss = 0; int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); @@ -234,7 +271,6 @@ static int load_amdsmi_sym(void) { return PAPI_OK; } - static int unload_amdsmi_sym(void) { /* Reset all function pointers and close library */ amdsmi_init_p = NULL; @@ -256,6 +292,15 @@ static int unload_amdsmi_sym(void) { amdsmi_get_clk_freq_p = NULL; amdsmi_set_clk_freq_p = NULL; amdsmi_get_gpu_metrics_info_p = NULL; + amdsmi_get_gpu_id_p = NULL; + amdsmi_get_gpu_revision_p = NULL; + amdsmi_get_gpu_subsystem_id_p = NULL; + amdsmi_get_gpu_virtualization_mode_p = NULL; + amdsmi_get_gpu_pci_bandwidth_p = NULL; + amdsmi_get_gpu_bdf_id_p = NULL; + amdsmi_get_gpu_topo_numa_affinity_p = NULL; + amdsmi_get_energy_count_p = NULL; + amdsmi_get_gpu_power_profile_presets_p = NULL; if (amds_dlp) { dlclose(amds_dlp); amds_dlp = NULL; @@ -263,8 +308,6 @@ static int unload_amdsmi_sym(void) { return PAPI_OK; } - - /* Initialize AMD SMI library and discover devices */ int amds_init(void) { int papi_errno = load_amdsmi_sym(); @@ -380,7 +423,6 @@ int amds_shutdown(void) { return unload_amdsmi_sym(); } - int amds_err_get_last(const char **err_string) { if (err_string) *err_string = error_string; return PAPI_OK; @@ -433,7 +475,6 @@ int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { return PAPI_OK; } - /* Context management: open/close, start/stop, read/write, reset */ struct amds_ctx { int state; @@ -540,8 +581,6 @@ amds_ctx_reset(amds_ctx_t ctx) return PAPI_OK; } - - /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { ntv_table.count = 0; @@ -556,8 +595,7 @@ static int init_event_table(void) { /* Temperature sensors (only include if sensor is present) */ amdsmi_temperature_type_t temp_sensors[] = { AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0 , AMDSMI_TEMPERATURE_TYPE_HBM_1 , AMDSMI_TEMPERATURE_TYPE_HBM_2 , - AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX - // HBM sensors omitted for brevity; could include TEMPERATURE_TYPE_HBM_0.._HBM_3 if needed + AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX }; const amdsmi_temperature_metric_t temp_metrics[] = { AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, @@ -597,7 +635,7 @@ static int init_event_table(void) { ev->start_func = start_simple; ev->stop_func = stop_simple; ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, ev); // store pointer to event (not &id) + htable_insert(htable, ev->name, ev); idx++; } } @@ -644,6 +682,26 @@ static int init_event_table(void) { ev_fan->access_func = access_amdsmi_fan_speed; htable_insert(htable, ev_fan->name, ev_fan); idx++; + + // Fan max RPM (maximum speed in RPM) + snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); + native_event_t *ev_fanmax = &ntv_table.events[idx]; + ev_fanmax->id = idx; + ev_fanmax->name = strdup(name_buf); + ev_fanmax->descr = strdup(descr_buf); + ev_fanmax->device = d; + ev_fanmax->value = 0; + ev_fanmax->mode = PAPI_MODE_READ; + ev_fanmax->variant = 0; + ev_fanmax->subvariant = 0; + ev_fanmax->open_func = open_simple; + ev_fanmax->close_func = close_simple; + ev_fanmax->start_func = start_simple; + ev_fanmax->stop_func = stop_simple; + ev_fanmax->access_func = access_amdsmi_fan_speed_max; + htable_insert(htable, ev_fanmax->name, ev_fanmax); + idx++; } /* VRAM memory metrics */ @@ -739,7 +797,7 @@ static int init_event_table(void) { ev_pcap->start_func = start_simple; ev_pcap->stop_func = stop_simple; ev_pcap->access_func = access_amdsmi_power_cap; - htable_insert(htable, ev_pcap->name, ev_pcap); /* FIX: store pointer (not &id) */ + htable_insert(htable, ev_pcap->name, ev_pcap); idx++; // Minimum allowed power cap @@ -867,14 +925,351 @@ static int init_event_table(void) { idx++; } - // (Optional) Additional GPU metrics (like utilization) could be added here... + /* Additional GPU metrics and system information */ + /* GPU engine utilization metrics (gfx, umc, mm) */ + for (int d = 0; d < device_count; ++d) { + amdsmi_engine_usage_t usage; + if (amdsmi_get_gpu_activity_p(device_handles[d], &usage) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); + native_event_t *ev_gfx = &ntv_table.events[idx]; + ev_gfx->id = idx; + ev_gfx->name = strdup(name_buf); + ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; + ev_gfx->value = 0; + ev_gfx->mode = PAPI_MODE_READ; + ev_gfx->variant = 0; + ev_gfx->subvariant = 0; + ev_gfx->open_func = open_simple; + ev_gfx->close_func = close_simple; + ev_gfx->start_func = start_simple; + ev_gfx->stop_func = stop_simple; + ev_gfx->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_gfx->name, ev_gfx); + idx++; + + snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); + native_event_t *ev_umc = &ntv_table.events[idx]; + ev_umc->id = idx; + ev_umc->name = strdup(name_buf); + ev_umc->descr = strdup(descr_buf); + ev_umc->device = d; + ev_umc->value = 0; + ev_umc->mode = PAPI_MODE_READ; + ev_umc->variant = 1; + ev_umc->subvariant = 0; + ev_umc->open_func = open_simple; + ev_umc->close_func = close_simple; + ev_umc->start_func = start_simple; + ev_umc->stop_func = stop_simple; + ev_umc->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_umc->name, ev_umc); + idx++; + + snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); + native_event_t *ev_mm = &ntv_table.events[idx]; + ev_mm->id = idx; + ev_mm->name = strdup(name_buf); + ev_mm->descr = strdup(descr_buf); + ev_mm->device = d; + ev_mm->value = 0; + ev_mm->mode = PAPI_MODE_READ; + ev_mm->variant = 2; + ev_mm->subvariant = 0; + ev_mm->open_func = open_simple; + ev_mm->close_func = close_simple; + ev_mm->start_func = start_simple; + ev_mm->stop_func = stop_simple; + ev_mm->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_mm->name, ev_mm); + idx++; + } + + /* GPU clock frequency levels */ + for (int d = 0; d < device_count; ++d) { + amdsmi_frequencies_t f; + if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { + continue; + } + // Number of supported frequencies + snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); + native_event_t *ev_clk_count = &ntv_table.events[idx]; + ev_clk_count->id = idx; + ev_clk_count->name = strdup(name_buf); + ev_clk_count->descr = strdup(descr_buf); + ev_clk_count->device = d; + ev_clk_count->value = 0; + ev_clk_count->mode = PAPI_MODE_READ; + ev_clk_count->variant = 0; + ev_clk_count->subvariant = 0; + ev_clk_count->open_func = open_simple; + ev_clk_count->close_func = close_simple; + ev_clk_count->start_func = start_simple; + ev_clk_count->stop_func = stop_simple; + ev_clk_count->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_count->name, ev_clk_count); + idx++; + + // Current clock frequency + snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); + native_event_t *ev_clk_cur = &ntv_table.events[idx]; + ev_clk_cur->id = idx; + ev_clk_cur->name = strdup(name_buf); + ev_clk_cur->descr = strdup(descr_buf); + ev_clk_cur->device = d; + ev_clk_cur->value = 0; + ev_clk_cur->mode = PAPI_MODE_READ; + ev_clk_cur->variant = 0; + ev_clk_cur->subvariant = 1; + ev_clk_cur->open_func = open_simple; + ev_clk_cur->close_func = close_simple; + ev_clk_cur->start_func = start_simple; + ev_clk_cur->stop_func = stop_simple; + ev_clk_cur->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_cur->name, ev_clk_cur); + idx++; + + // Supported frequency levels + for (uint32_t fi = 0; fi < f.num_supported; ++fi) { + snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); + native_event_t *ev_clk_lvl = &ntv_table.events[idx]; + ev_clk_lvl->id = idx; + ev_clk_lvl->name = strdup(name_buf); + ev_clk_lvl->descr = strdup(descr_buf); + ev_clk_lvl->device = d; + ev_clk_lvl->value = 0; + ev_clk_lvl->mode = PAPI_MODE_READ; + ev_clk_lvl->variant = 0; + ev_clk_lvl->subvariant = fi + 2; + ev_clk_lvl->open_func = open_simple; + ev_clk_lvl->close_func = close_simple; + ev_clk_lvl->start_func = start_simple; + ev_clk_lvl->stop_func = stop_simple; + ev_clk_lvl->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); + idx++; + } + } + + /* GPU identification and topology metrics */ + for (int d = 0; d < device_count; ++d) { + uint16_t id16; + uint64_t id64; + amdsmi_virtualization_mode_t vmode; + int32_t numa; + // GPU ID + if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); + native_event_t *ev_id = &ntv_table.events[idx]; + ev_id->id = idx; + ev_id->name = strdup(name_buf); + ev_id->descr = strdup(descr_buf); + ev_id->device = d; + ev_id->value = 0; + ev_id->mode = PAPI_MODE_READ; + ev_id->variant = 0; + ev_id->subvariant = 0; + ev_id->open_func = open_simple; + ev_id->close_func = close_simple; + ev_id->start_func = start_simple; + ev_id->stop_func = stop_simple; + ev_id->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_id->name, ev_id); + idx++; + } + // GPU Revision + if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); + native_event_t *ev_rev = &ntv_table.events[idx]; + ev_rev->id = idx; + ev_rev->name = strdup(name_buf); + ev_rev->descr = strdup(descr_buf); + ev_rev->device = d; + ev_rev->value = 0; + ev_rev->mode = PAPI_MODE_READ; + ev_rev->variant = 1; + ev_rev->subvariant = 0; + ev_rev->open_func = open_simple; + ev_rev->close_func = close_simple; + ev_rev->start_func = start_simple; + ev_rev->stop_func = stop_simple; + ev_rev->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_rev->name, ev_rev); + idx++; + } + // GPU Subsystem ID + if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); + native_event_t *ev_subid = &ntv_table.events[idx]; + ev_subid->id = idx; + ev_subid->name = strdup(name_buf); + ev_subid->descr = strdup(descr_buf); + ev_subid->device = d; + ev_subid->value = 0; + ev_subid->mode = PAPI_MODE_READ; + ev_subid->variant = 2; + ev_subid->subvariant = 0; + ev_subid->open_func = open_simple; + ev_subid->close_func = close_simple; + ev_subid->start_func = start_simple; + ev_subid->stop_func = stop_simple; + ev_subid->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_subid->name, ev_subid); + idx++; + } + // GPU BDF ID + if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); + native_event_t *ev_bdf = &ntv_table.events[idx]; + ev_bdf->id = idx; + ev_bdf->name = strdup(name_buf); + ev_bdf->descr = strdup(descr_buf); + ev_bdf->device = d; + ev_bdf->value = 0; + ev_bdf->mode = PAPI_MODE_READ; + ev_bdf->variant = 3; + ev_bdf->subvariant = 0; + ev_bdf->open_func = open_simple; + ev_bdf->close_func = close_simple; + ev_bdf->start_func = start_simple; + ev_bdf->stop_func = stop_simple; + ev_bdf->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_bdf->name, ev_bdf); + idx++; + } + // GPU Virtualization Mode + if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); + native_event_t *ev_vmode = &ntv_table.events[idx]; + ev_vmode->id = idx; + ev_vmode->name = strdup(name_buf); + ev_vmode->descr = strdup(descr_buf); + ev_vmode->device = d; + ev_vmode->value = 0; + ev_vmode->mode = PAPI_MODE_READ; + ev_vmode->variant = 4; + ev_vmode->subvariant = 0; + ev_vmode->open_func = open_simple; + ev_vmode->close_func = close_simple; + ev_vmode->start_func = start_simple; + ev_vmode->stop_func = stop_simple; + ev_vmode->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_vmode->name, ev_vmode); + idx++; + } + // GPU NUMA Node + if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); + native_event_t *ev_numa = &ntv_table.events[idx]; + ev_numa->id = idx; + ev_numa->name = strdup(name_buf); + ev_numa->descr = strdup(descr_buf); + ev_numa->device = d; + ev_numa->value = 0; + ev_numa->mode = PAPI_MODE_READ; + ev_numa->variant = 5; + ev_numa->subvariant = 0; + ev_numa->open_func = open_simple; + ev_numa->close_func = close_simple; + ev_numa->start_func = start_simple; + ev_numa->stop_func = stop_simple; + ev_numa->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_numa->name, ev_numa); + idx++; + } + } + + /* Energy consumption counter */ + for (int d = 0; d < device_count; ++d) { + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); + native_event_t *ev_energy = &ntv_table.events[idx]; + ev_energy->id = idx; + ev_energy->name = strdup(name_buf); + ev_energy->descr = strdup(descr_buf); + ev_energy->device = d; + ev_energy->value = 0; + ev_energy->mode = PAPI_MODE_READ; + ev_energy->variant = 0; + ev_energy->subvariant = 0; + ev_energy->open_func = open_simple; + ev_energy->close_func = close_simple; + ev_energy->start_func = start_simple; + ev_energy->stop_func = stop_simple; + ev_energy->access_func = access_amdsmi_energy_count; + htable_insert(htable, ev_energy->name, ev_energy); + idx++; + } + + /* GPU power profile information */ + for (int d = 0; d < device_count; ++d) { + amdsmi_power_profile_status_t profile_status; + if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); + native_event_t *ev_prof_count = &ntv_table.events[idx]; + ev_prof_count->id = idx; + ev_prof_count->name = strdup(name_buf); + ev_prof_count->descr = strdup(descr_buf); + ev_prof_count->device = d; + ev_prof_count->value = 0; + ev_prof_count->mode = PAPI_MODE_READ; + ev_prof_count->variant = 0; + ev_prof_count->subvariant = 0; + ev_prof_count->open_func = open_simple; + ev_prof_count->close_func = close_simple; + ev_prof_count->start_func = start_simple; + ev_prof_count->stop_func = stop_simple; + ev_prof_count->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_count->name, ev_prof_count); + idx++; + + snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); + native_event_t *ev_prof_curr = &ntv_table.events[idx]; + ev_prof_curr->id = idx; + ev_prof_curr->name = strdup(name_buf); + ev_prof_curr->descr = strdup(descr_buf); + ev_prof_curr->device = d; + ev_prof_curr->value = 0; + ev_prof_curr->mode = PAPI_MODE_READ; + ev_prof_curr->variant = 1; + ev_prof_curr->subvariant = 0; + ev_prof_curr->open_func = open_simple; + ev_prof_curr->close_func = close_simple; + ev_prof_curr->start_func = start_simple; + ev_prof_curr->stop_func = stop_simple; + ev_prof_curr->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_curr->name, ev_prof_curr); + idx++; + } ntv_table.count = idx; return PAPI_OK; } - - static int shutdown_event_table(void) { // Remove all events from hash table and free their names/descr for (int i = 0; i < ntv_table.count; ++i) { @@ -902,7 +1297,6 @@ static int shutdown_device_table(void) { return PAPI_OK; } - /* Access function implementations (read/write operations for each event) */ static int access_amdsmi_temp_metric(int mode, void *arg) { @@ -964,7 +1358,7 @@ static int access_amdsmi_mem_total(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); + (amdsmi_memory_type_t) event->variant, &data); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -980,7 +1374,7 @@ static int access_amdsmi_mem_usage(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); + (amdsmi_memory_type_t) event->variant, &data); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1066,7 +1460,7 @@ static int access_amdsmi_pci_throughput(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t sent = 0, received = 0, max_pkt = 0; amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], - &sent, &received, &max_pkt); + &sent, &received, &max_pkt); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1139,4 +1533,183 @@ static int access_amdsmi_gpu_metrics(int mode, void *arg) { // Parsing of metrics is not fully implemented; just return OK. // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) return PAPI_OK; -} \ No newline at end of file +} + +static int access_amdsmi_gpu_info(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status; + switch (event->variant) { + case 0: { + uint16_t id = 0; + status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = id; + } + break; + } + case 1: { + uint16_t rev = 0; + status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = rev; + } + break; + } + case 2: { + uint16_t subid = 0; + status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = subid; + } + break; + } + case 3: { + uint64_t bdfid = 0; + status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = (int64_t) bdfid; + } + break; + } + case 4: { + amdsmi_virtualization_mode_t mode_val; + status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = mode_val; + } + break; + } + case 5: { + int32_t numa_node = -1; + status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = numa_node; + } + break; + } + default: + return PAPI_EMISC; + } + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); +} + +static int access_amdsmi_gpu_activity(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_engine_usage_t usage; + amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: event->value = usage.gfx_activity; break; + case 1: event->value = usage.umc_activity; break; + case 2: event->value = usage.mm_activity; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_fan_speed_max(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t max_speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = max_speed; + return PAPI_OK; +} + +static int access_amdsmi_pci_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_pcie_bandwidth_t bw; + amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + uint32_t cur_index = bw.transfer_rate.current; + if (cur_index >= bw.transfer_rate.num_supported) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = bw.transfer_rate.num_supported; + break; + case 1: + event->value = (int64_t) bw.transfer_rate.frequency[cur_index]; + break; + case 2: + event->value = bw.lanes[cur_index]; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_energy_count(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + amdsmi_status_t status = amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Convert energy count to microJoules + event->value = (int64_t) (energy * resolution); + return PAPI_OK; +} + +static int access_amdsmi_power_profile_status(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_power_profile_status_t status_info; + amdsmi_status_t status = amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = status_info.num_profiles; + } else if (event->variant == 1) { + event->value = (int64_t) status_info.current; + } else { + return PAPI_EMISC; + } + return PAPI_OK; +} From 78c8857b626e8decb2dcfa19210126f92d03db9a Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 12 May 2025 08:29:14 -0700 Subject: [PATCH 012/147] esmi funcitons --- src/components/amd_smi/amds.c | 1084 ++++++++++++++++++++++++++++++--- 1 file changed, 1006 insertions(+), 78 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index f33661f69..6894f0f40 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -9,6 +9,8 @@ #include "amds.h" #include "htable.h" +#define AMDSMI_DISABLE_ESMI + unsigned int _amd_smi_lock; typedef enum { @@ -21,20 +23,15 @@ typedef enum { static amdsmi_status_t (*amdsmi_init_p)(uint64_t); static amdsmi_status_t (*amdsmi_shut_down_p)(void); static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, - processor_type_t, - amdsmi_processor_handle *, uint32_t *); -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, - amdsmi_temperature_type_t, - amdsmi_temperature_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); - static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); /* FIX: added sensor index param */ +static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); @@ -56,10 +53,39 @@ static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_h static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); + +#ifndef AMDSMI_DISABLE_ESMI +/* CPU function pointers */ +static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); +static amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); +static amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); +static amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +#endif + + /* Global device list and count */ static int32_t device_count = 0; static amdsmi_processor_handle *device_handles = NULL; static int32_t device_mask = 0; +static int32_t gpu_count = 0; +static int32_t cpu_count = 0; +static amdsmi_processor_handle **cpu_core_handles = NULL; +static uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; static void *htable = NULL; @@ -149,13 +175,29 @@ static int access_amdsmi_pci_bandwidth(int mode, void *arg); static int access_amdsmi_energy_count(int mode, void *arg); static int access_amdsmi_power_profile_status(int mode, void *arg); + +#ifndef AMDSMI_DISABLE_ESMI +static int access_amdsmi_cpu_socket_power(int mode, void *arg); +static int access_amdsmi_cpu_socket_energy(int mode, void *arg); +static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg); +static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg); +static int access_amdsmi_cpu_power_cap(int mode, void *arg); +static int access_amdsmi_cpu_core_energy(int mode, void *arg); +static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); +static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); +static int access_amdsmi_dimm_temp(int mode, void *arg); +static int access_amdsmi_dimm_power(int mode, void *arg); +static int access_amdsmi_dimm_range_refresh(int mode, void *arg); +static int access_amdsmi_threads_per_core(int mode, void *arg); +static int access_amdsmi_cpu_family(int mode, void *arg); +static int access_amdsmi_cpu_model(int mode, void *arg); +static int access_amdsmi_smu_fw_version(int mode, void *arg); +static int access_amdsmi_xgmi_bandwidth(int mode, void *arg); +#endif /* Simple open/close/start/stop functions (no special handling needed for most events) */ static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } - static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } - static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } - static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } /* Dynamic load of AMD SMI library symbols */ @@ -224,7 +266,28 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); - +#ifndef AMDSMI_DISABLE_ESMI + /* CPU functions */ + amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); + amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); + amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); + amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); + amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); + amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); + amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); + amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); + amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); + amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); + amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); + amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); + amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); + amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); + amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); + amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); + amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); + amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); +#endif /* Verify that all required symbols are loaded */ struct { const char *name; void *ptr; } required[] = { { "amdsmi_init", amdsmi_init_p }, @@ -254,7 +317,29 @@ static int load_amdsmi_sym(void) { { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, - { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p } + { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p }, + +#ifndef AMDSMI_DISABLE_ESMI + { "amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p }, + { "amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p }, + { "amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p }, + { "amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p }, + { "amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p }, + { "amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p }, + { "amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p }, + { "amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p }, + { "amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p }, + { "amdsmi_get_cpu_family", amdsmi_get_cpu_family_p }, + { "amdsmi_get_cpu_model", amdsmi_get_cpu_model_p }, + { "amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p }, + { "amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p }, + { "amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p }, + { "amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p }, + { "amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p }, + { "amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p }, + { "amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p }, + { "amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p } +#endif }; int miss = 0; int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); @@ -301,6 +386,27 @@ static int unload_amdsmi_sym(void) { amdsmi_get_gpu_topo_numa_affinity_p = NULL; amdsmi_get_energy_count_p = NULL; amdsmi_get_gpu_power_profile_presets_p = NULL; +#ifndef AMDSMI_DISABLE_ESMI + amdsmi_get_cpu_handles_p = NULL; + amdsmi_get_cpucore_handles_p = NULL; + amdsmi_get_cpu_socket_power_p = NULL; + amdsmi_get_cpu_socket_power_cap_p = NULL; + amdsmi_get_cpu_socket_power_cap_max_p = NULL; + amdsmi_get_cpu_core_energy_p = NULL; + amdsmi_get_cpu_socket_energy_p = NULL; + amdsmi_get_cpu_smu_fw_version_p = NULL; + amdsmi_get_threads_per_core_p = NULL; + amdsmi_get_cpu_family_p = NULL; + amdsmi_get_cpu_model_p = NULL; + amdsmi_get_cpu_core_boostlimit_p = NULL; + amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; + amdsmi_get_cpu_socket_freq_range_p = NULL; + amdsmi_get_cpu_core_current_freq_limit_p = NULL; + amdsmi_get_minmax_bandwidth_between_processors_p = NULL; + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; + amdsmi_get_cpu_dimm_power_consumption_p = NULL; + amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; +#endif if (amds_dlp) { dlclose(amds_dlp); amds_dlp = NULL; @@ -314,18 +420,18 @@ int amds_init(void) { if (papi_errno != PAPI_OK) { return papi_errno; } - amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS); if (status != AMDSMI_STATUS_SUCCESS) { strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } htable_init(&htable); - // Discover GPU devices (get socket handles, then GPU handles) + // Discover GPU and CPU devices uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { - sprintf(error_string, "Error discovering sockets or no AMD GPU socket found."); + sprintf(error_string, "Error discovering sockets or no AMD socket found."); papi_errno = PAPI_ENOEVNT; goto fn_fail; } @@ -342,24 +448,36 @@ int amds_init(void) { goto fn_fail; } - // **FIX**: Handle multiple GPUs per socket by counting total GPUs first device_count = 0; uint32_t total_gpu_count = 0; for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count = 0; + uint32_t gpu_count_local = 0; processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count); + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); if (st == AMDSMI_STATUS_SUCCESS) { - total_gpu_count += gpu_count; + total_gpu_count += gpu_count_local; } } - if (total_gpu_count == 0) { - sprintf(error_string, "No AMD GPU devices found."); + + + + + uint32_t total_cpu_count = 0; + +#ifndef AMDSMI_DISABLE_ESMI + status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) { + total_cpu_count = 0; + } +#endif + + if (total_gpu_count == 0 && total_cpu_count == 0) { + sprintf(error_string, "No AMD GPU or CPU devices found."); papi_errno = PAPI_ENOEVNT; papi_free(sockets); goto fn_fail; } - device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count, sizeof(*device_handles)); + device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); if (!device_handles) { papi_errno = PAPI_ENOMEM; sprintf(error_string, "Memory allocation error for device handles."); @@ -369,32 +487,97 @@ int amds_init(void) { // Retrieve GPU processor handles for each socket for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count = 0; + uint32_t gpu_count_local = 0; processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count == 0) { + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { continue; // no GPU on this socket or error } - amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count, sizeof(*gpu_handles)); + amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count_local, sizeof(*gpu_handles)); if (!gpu_handles) { papi_errno = PAPI_ENOMEM; sprintf(error_string, "Memory allocation error for GPU handles on socket %u.", s); papi_free(sockets); goto fn_fail; } - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count); + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); if (status == AMDSMI_STATUS_SUCCESS) { - for (uint32_t g = 0; g < gpu_count; ++g) { + for (uint32_t g = 0; g < gpu_count_local; ++g) { device_handles[device_count++] = gpu_handles[g]; } } papi_free(gpu_handles); } papi_free(sockets); - if (device_count == 0) { - sprintf(error_string, "No AMD GPU devices found."); - papi_errno = PAPI_ENOEVNT; - goto fn_fail; + // (No need to check device_count here; CPU may still be added even if GPU count is zero) + +#ifndef AMDSMI_DISABLE_ESMI + // Retrieve CPU socket handles + amdsmi_processor_handle *cpu_handles = NULL; + if (total_cpu_count > 0) { + cpu_handles = (amdsmi_processor_handle *) papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); + if (!cpu_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU handles."); + goto fn_fail; + } + status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); + if (status != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_handles); + cpu_handles = NULL; + total_cpu_count = 0; + } + } + if (cpu_handles) { + for (uint32_t i = 0; i < total_cpu_count; ++i) { + device_handles[device_count++] = cpu_handles[i]; + } + papi_free(cpu_handles); + } +#endif + // Set global GPU/CPU counts + gpu_count = total_gpu_count; + cpu_count = total_cpu_count; + + // Retrieve CPU core handles for each CPU socket + if (cpu_count > 0) { + cpu_core_handles = (amdsmi_processor_handle **) papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); + cores_per_socket = (uint32_t *) papi_calloc(cpu_count, sizeof(uint32_t)); + if (!cpu_core_handles || !cores_per_socket) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles."); + if (cpu_core_handles) papi_free(cpu_core_handles); + if (cores_per_socket) papi_free(cores_per_socket); + goto fn_fail; + } + for (uint32_t s = 0; s < cpu_count; ++s) { + uint32_t core_count = 0; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); + if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { + cores_per_socket[s] = 0; + cpu_core_handles[s] = NULL; + continue; + } + cpu_core_handles[s] = (amdsmi_processor_handle *) papi_calloc(core_count, sizeof(amdsmi_processor_handle)); + if (!cpu_core_handles[s]) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); + for (uint32_t t = 0; t < s; ++t) { + if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); + } + papi_free(cpu_core_handles); + papi_free(cores_per_socket); + goto fn_fail; + } + st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], &core_count); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_core_handles[s]); + cpu_core_handles[s] = NULL; + cores_per_socket[s] = 0; + } else { + cores_per_socket[s] = core_count; + } + } } // Initialize the native event table for all discovered metrics @@ -408,8 +591,23 @@ int amds_init(void) { fn_fail: htable_shutdown(htable); - if (device_handles) { papi_free(device_handles); device_handles = NULL; device_count = 0; } - if (sockets) papi_free(sockets); + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + device_count = 0; + } + // sockets already freed if allocated + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } amdsmi_shut_down_p(); unload_amdsmi_sym(); return papi_errno; @@ -608,7 +806,7 @@ static int init_event_table(void) { "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { // Probe if sensor exists by reading current temperature int64_t dummy_val; @@ -642,10 +840,11 @@ static int init_event_table(void) { } /* Fan metrics (assume one fan sensor index 0 per device) */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { // Fan RPM (speed in RPM) snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); + native_event_t *ev_rpm = &ntv_table.events[idx]; ev_rpm->id = idx; ev_rpm->name = strdup(name_buf); @@ -705,7 +904,7 @@ static int init_event_table(void) { } /* VRAM memory metrics */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { // Total VRAM snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); @@ -748,7 +947,7 @@ static int init_event_table(void) { } /* GPU power metrics: average power, power cap, and cap range */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { // Check support for power metrics on this device amdsmi_power_info_t pinfo; amdsmi_power_cap_info_t cinfo; @@ -843,7 +1042,7 @@ static int init_event_table(void) { } /* PCIe throughput and replay counter metrics */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { // PCIe bytes sent snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); @@ -927,7 +1126,7 @@ static int init_event_table(void) { /* Additional GPU metrics and system information */ /* GPU engine utilization metrics (gfx, umc, mm) */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { amdsmi_engine_usage_t usage; if (amdsmi_get_gpu_activity_p(device_handles[d], &usage) != AMDSMI_STATUS_SUCCESS) { continue; @@ -991,7 +1190,7 @@ static int init_event_table(void) { } /* GPU clock frequency levels */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { amdsmi_frequencies_t f; if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { continue; @@ -1060,7 +1259,7 @@ static int init_event_table(void) { } /* GPU identification and topology metrics */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { uint16_t id16; uint64_t id64; amdsmi_virtualization_mode_t vmode; @@ -1194,7 +1393,7 @@ static int init_event_table(void) { } /* Energy consumption counter */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { uint64_t energy = 0; float resolution = 0.0; uint64_t timestamp = 0; @@ -1222,7 +1421,7 @@ static int init_event_table(void) { } /* GPU power profile information */ - for (int d = 0; d < device_count; ++d) { + for (int d = 0; d < gpu_count; ++d) { amdsmi_power_profile_status_t profile_status; if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { continue; @@ -1265,7 +1464,416 @@ static int init_event_table(void) { htable_insert(htable, ev_prof_curr->name, ev_prof_curr); idx++; } + +#ifndef AMDSMI_DISABLE_ESMI + /* CPU metrics events */ + if (cpu_count > 0) { + // CPU socket-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + uint32_t pwr; + if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); + native_event_t *ev_pwr = &ntv_table.events[idx]; + ev_pwr->id = idx; + ev_pwr->name = strdup(name_buf); + ev_pwr->descr = strdup(descr_buf); + ev_pwr->device = dev; + ev_pwr->value = 0; + ev_pwr->mode = PAPI_MODE_READ; + ev_pwr->variant = 0; + ev_pwr->subvariant = 0; + ev_pwr->open_func = open_simple; + ev_pwr->close_func = close_simple; + ev_pwr->start_func = start_simple; + ev_pwr->stop_func = stop_simple; + ev_pwr->access_func = access_amdsmi_cpu_socket_power; + htable_insert(htable, ev_pwr->name, ev_pwr); + idx++; + } + uint64_t sock_energy; + if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); + native_event_t *ev_sock_energy = &ntv_table.events[idx]; + ev_sock_energy->id = idx; + ev_sock_energy->name = strdup(name_buf); + ev_sock_energy->descr = strdup(descr_buf); + ev_sock_energy->device = dev; + ev_sock_energy->value = 0; + ev_sock_energy->mode = PAPI_MODE_READ; + ev_sock_energy->variant = 0; + ev_sock_energy->subvariant = 0; + ev_sock_energy->open_func = open_simple; + ev_sock_energy->close_func = close_simple; + ev_sock_energy->start_func = start_simple; + ev_sock_energy->stop_func = stop_simple; + ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; + htable_insert(htable, ev_sock_energy->name, ev_sock_energy); + idx++; + } + uint16_t fmax, fmin; + if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); + native_event_t *ev_fmax = &ntv_table.events[idx]; + ev_fmax->id = idx; + ev_fmax->name = strdup(name_buf); + ev_fmax->descr = strdup(descr_buf); + ev_fmax->device = dev; + ev_fmax->value = 0; + ev_fmax->mode = PAPI_MODE_READ; + ev_fmax->variant = 1; + ev_fmax->subvariant = 0; + ev_fmax->open_func = open_simple; + ev_fmax->close_func = close_simple; + ev_fmax->start_func = start_simple; + ev_fmax->stop_func = stop_simple; + ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmax->name, ev_fmax); + idx++; + snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); + native_event_t *ev_fmin = &ntv_table.events[idx]; + ev_fmin->id = idx; + ev_fmin->name = strdup(name_buf); + ev_fmin->descr = strdup(descr_buf); + ev_fmin->device = dev; + ev_fmin->value = 0; + ev_fmin->mode = PAPI_MODE_READ; + ev_fmin->variant = 0; + ev_fmin->subvariant = 0; + ev_fmin->open_func = open_simple; + ev_fmin->close_func = close_simple; + ev_fmin->start_func = start_simple; + ev_fmin->stop_func = stop_simple; + ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmin->name, ev_fmin); + idx++; + } + uint32_t cap; + amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); + uint32_t cap_max; + amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); + if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { + if (st_cap == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); + native_event_t *ev_cap = &ntv_table.events[idx]; + ev_cap->id = idx; + ev_cap->name = strdup(name_buf); + ev_cap->descr = strdup(descr_buf); + ev_cap->device = dev; + ev_cap->value = 0; + ev_cap->mode = PAPI_MODE_READ; + ev_cap->variant = 0; + ev_cap->subvariant = 0; + ev_cap->open_func = open_simple; + ev_cap->close_func = close_simple; + ev_cap->start_func = start_simple; + ev_cap->stop_func = stop_simple; + ev_cap->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_cap->name, ev_cap); + idx++; + } + if (st_capmax == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); + native_event_t *ev_capmax = &ntv_table.events[idx]; + ev_capmax->id = idx; + ev_capmax->name = strdup(name_buf); + ev_capmax->descr = strdup(descr_buf); + ev_capmax->device = dev; + ev_capmax->value = 0; + ev_capmax->mode = PAPI_MODE_READ; + ev_capmax->variant = 1; + ev_capmax->subvariant = 0; + ev_capmax->open_func = open_simple; + ev_capmax->close_func = close_simple; + ev_capmax->start_func = start_simple; + ev_capmax->stop_func = stop_simple; + ev_capmax->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_capmax->name, ev_capmax); + idx++; + } + } + uint16_t freq; + char *src_type = NULL; + if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { + if (src_type) free(src_type); + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); + native_event_t *ev_flim = &ntv_table.events[idx]; + ev_flim->id = idx; + ev_flim->name = strdup(name_buf); + ev_flim->descr = strdup(descr_buf); + ev_flim->device = dev; + ev_flim->value = 0; + ev_flim->mode = PAPI_MODE_READ; + ev_flim->variant = 0; + ev_flim->subvariant = 0; + ev_flim->open_func = open_simple; + ev_flim->close_func = close_simple; + ev_flim->start_func = start_simple; + ev_flim->stop_func = stop_simple; + ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; + htable_insert(htable, ev_flim->name, ev_flim); + idx++; + } + amdsmi_smu_fw_version_t fw; + if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); + native_event_t *ev_fw = &ntv_table.events[idx]; + ev_fw->id = idx; + ev_fw->name = strdup(name_buf); + ev_fw->descr = strdup(descr_buf); + ev_fw->device = dev; + ev_fw->value = 0; + ev_fw->mode = PAPI_MODE_READ; + ev_fw->variant = 0; + ev_fw->subvariant = 0; + ev_fw->open_func = open_simple; + ev_fw->close_func = close_simple; + ev_fw->start_func = start_simple; + ev_fw->stop_func = stop_simple; + ev_fw->access_func = access_amdsmi_smu_fw_version; + htable_insert(htable, ev_fw->name, ev_fw); + idx++; + } + } + + // CPU core-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { + uint64_t energy; + if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); + native_event_t *ev_core_energy = &ntv_table.events[idx]; + ev_core_energy->id = idx; + ev_core_energy->name = strdup(name_buf); + ev_core_energy->descr = strdup(descr_buf); + ev_core_energy->device = dev; + ev_core_energy->value = 0; + ev_core_energy->mode = PAPI_MODE_READ; + ev_core_energy->variant = 0; + ev_core_energy->subvariant = c; + ev_core_energy->open_func = open_simple; + ev_core_energy->close_func = close_simple; + ev_core_energy->start_func = start_simple; + ev_core_energy->stop_func = stop_simple; + ev_core_energy->access_func = access_amdsmi_cpu_core_energy; + htable_insert(htable, ev_core_energy->name, ev_core_energy); + idx++; + } + uint32_t freq; + if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); + native_event_t *ev_core_flim = &ntv_table.events[idx]; + ev_core_flim->id = idx; + ev_core_flim->name = strdup(name_buf); + ev_core_flim->descr = strdup(descr_buf); + ev_core_flim->device = dev; + ev_core_flim->value = 0; + ev_core_flim->mode = PAPI_MODE_READ; + ev_core_flim->variant = 0; + ev_core_flim->subvariant = c; + ev_core_flim->open_func = open_simple; + ev_core_flim->close_func = close_simple; + ev_core_flim->start_func = start_simple; + ev_core_flim->stop_func = stop_simple; + ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; + htable_insert(htable, ev_core_flim->name, ev_core_flim); + idx++; + } + uint32_t boost; + if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); + native_event_t *ev_boost = &ntv_table.events[idx]; + ev_boost->id = idx; + ev_boost->name = strdup(name_buf); + ev_boost->descr = strdup(descr_buf); + ev_boost->device = dev; + ev_boost->value = 0; + ev_boost->mode = PAPI_MODE_READ; + ev_boost->variant = 0; + ev_boost->subvariant = c; + ev_boost->open_func = open_simple; + ev_boost->close_func = close_simple; + ev_boost->start_func = start_simple; + ev_boost->stop_func = stop_simple; + ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; + htable_insert(htable, ev_boost->name, ev_boost); + idx++; + } + } + } + // CPU DIMM events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint8_t dimm = 0; dimm < 16; ++dimm) { + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_dimm_power_t dimm_pow; + amdsmi_temp_range_refresh_rate_t range_info; + amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); + amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); + amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); + if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { + continue; + } + if (st_temp == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); + native_event_t *ev_dimm_temp = &ntv_table.events[idx]; + ev_dimm_temp->id = idx; + ev_dimm_temp->name = strdup(name_buf); + ev_dimm_temp->descr = strdup(descr_buf); + ev_dimm_temp->device = dev; + ev_dimm_temp->value = 0; + ev_dimm_temp->mode = PAPI_MODE_READ; + ev_dimm_temp->variant = 0; + ev_dimm_temp->subvariant = dimm; + ev_dimm_temp->open_func = open_simple; + ev_dimm_temp->close_func = close_simple; + ev_dimm_temp->start_func = start_simple; + ev_dimm_temp->stop_func = stop_simple; + ev_dimm_temp->access_func = access_amdsmi_dimm_temp; + htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); + idx++; + } + if (st_power == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); + native_event_t *ev_dimm_pow = &ntv_table.events[idx]; + ev_dimm_pow->id = idx; + ev_dimm_pow->name = strdup(name_buf); + ev_dimm_pow->descr = strdup(descr_buf); + ev_dimm_pow->device = dev; + ev_dimm_pow->value = 0; + ev_dimm_pow->mode = PAPI_MODE_READ; + ev_dimm_pow->variant = 0; + ev_dimm_pow->subvariant = dimm; + ev_dimm_pow->open_func = open_simple; + ev_dimm_pow->close_func = close_simple; + ev_dimm_pow->start_func = start_simple; + ev_dimm_pow->stop_func = stop_simple; + ev_dimm_pow->access_func = access_amdsmi_dimm_power; + htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); + idx++; + } + if (st_range == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); + native_event_t *ev_range = &ntv_table.events[idx]; + ev_range->id = idx; + ev_range->name = strdup(name_buf); + ev_range->descr = strdup(descr_buf); + ev_range->device = dev; + ev_range->value = 0; + ev_range->mode = PAPI_MODE_READ; + ev_range->variant = 0; + ev_range->subvariant = dimm; + ev_range->open_func = open_simple; + ev_range->close_func = close_simple; + ev_range->start_func = start_simple; + ev_range->stop_func = stop_simple; + ev_range->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_range->name, ev_range); + idx++; + snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); + native_event_t *ev_ref = &ntv_table.events[idx]; + ev_ref->id = idx; + ev_ref->name = strdup(name_buf); + ev_ref->descr = strdup(descr_buf); + ev_ref->device = dev; + ev_ref->value = 0; + ev_ref->mode = PAPI_MODE_READ; + ev_ref->variant = 1; + ev_ref->subvariant = dimm; + ev_ref->open_func = open_simple; + ev_ref->close_func = close_simple; + ev_ref->start_func = start_simple; + ev_ref->stop_func = stop_simple; + ev_ref->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_ref->name, ev_ref); + idx++; + } + } + } + + // System-wide CPU events + uint32_t threads; + if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "threads_per_core"); + snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); + native_event_t *ev_threads = &ntv_table.events[idx]; + ev_threads->id = idx; + ev_threads->name = strdup(name_buf); + ev_threads->descr = strdup(descr_buf); + ev_threads->device = -1; + ev_threads->value = 0; + ev_threads->mode = PAPI_MODE_READ; + ev_threads->variant = 0; + ev_threads->subvariant = 0; + ev_threads->open_func = open_simple; + ev_threads->close_func = close_simple; + ev_threads->start_func = start_simple; + ev_threads->stop_func = stop_simple; + ev_threads->access_func = access_amdsmi_threads_per_core; + htable_insert(htable, ev_threads->name, ev_threads); + idx++; + } + uint32_t family; + if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_family"); + snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); + native_event_t *ev_family = &ntv_table.events[idx]; + ev_family->id = idx; + ev_family->name = strdup(name_buf); + ev_family->descr = strdup(descr_buf); + ev_family->device = -1; + ev_family->value = 0; + ev_family->mode = PAPI_MODE_READ; + ev_family->variant = 0; + ev_family->subvariant = 0; + ev_family->open_func = open_simple; + ev_family->close_func = close_simple; + ev_family->start_func = start_simple; + ev_family->stop_func = stop_simple; + ev_family->access_func = access_amdsmi_cpu_family; + htable_insert(htable, ev_family->name, ev_family); + idx++; + } + uint32_t model; + if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_model"); + snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); + native_event_t *ev_model = &ntv_table.events[idx]; + ev_model->id = idx; + ev_model->name = strdup(name_buf); + ev_model->descr = strdup(descr_buf); + ev_model->device = -1; + ev_model->value = 0; + ev_model->mode = PAPI_MODE_READ; + ev_model->variant = 0; + ev_model->subvariant = 0; + ev_model->open_func = open_simple; + ev_model->close_func = close_simple; + ev_model->start_func = start_simple; + ev_model->stop_func = stop_simple; + ev_model->access_func = access_amdsmi_cpu_model; + htable_insert(htable, ev_model->name, ev_model); + idx++; + } + } +#endif ntv_table.count = idx; return PAPI_OK; } @@ -1293,12 +1901,24 @@ static int shutdown_device_table(void) { papi_free(device_handles); device_handles = NULL; } + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } device_count = 0; + gpu_count = 0; + cpu_count = 0; return PAPI_OK; } /* Access function implementations (read/write operations for each event) */ - static int access_amdsmi_temp_metric(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1307,7 +1927,8 @@ static int access_amdsmi_temp_metric(int mode, void *arg) { if (mode != PAPI_MODE_READ) { return PAPI_ENOSUPP; } - amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], + amdsmi_status_t status = + amdsmi_get_temp_metric_p(device_handles[event->device], (amdsmi_temperature_type_t) event->subvariant, (amdsmi_temperature_metric_t) event->variant, (int64_t *)&event->value); @@ -1323,7 +1944,8 @@ static int access_amdsmi_fan_rpms(int mode, void *arg) { return PAPI_ENOSUPP; } int64_t speed = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], + amdsmi_status_t status = + amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1341,8 +1963,9 @@ static int access_amdsmi_fan_speed(int mode, void *arg) { return PAPI_ENOSUPP; // writing fan speed not supported } int64_t val = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], - event->subvariant, &val); + amdsmi_status_t status = + amdsmi_get_gpu_fan_speed_p(device_handles[event->device], + event->subvariant, &val); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1357,8 +1980,9 @@ static int access_amdsmi_mem_total(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; - amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); + amdsmi_status_t status = + amdsmi_get_total_memory_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1373,8 +1997,9 @@ static int access_amdsmi_mem_usage(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t data = 0; - amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); + amdsmi_status_t status = + amdsmi_get_memory_usage_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1390,7 +2015,8 @@ static int access_amdsmi_power_cap(int mode, void *arg) { if (mode == PAPI_MODE_READ) { // Read current power cap amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 + amdsmi_status_t status = + amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1399,7 +2025,8 @@ static int access_amdsmi_power_cap(int mode, void *arg) { } else if (mode == PAPI_MODE_WRITE) { // Set new power cap (value expected in microWatts if API uses uW) uint64_t new_cap = (uint64_t) event->value; - amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); + amdsmi_status_t status = + amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } return PAPI_ENOSUPP; @@ -1412,7 +2039,8 @@ static int access_amdsmi_power_cap_range(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); + amdsmi_status_t status = + amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1433,21 +2061,11 @@ static int access_amdsmi_power_average(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_info_t power; - amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); + amdsmi_status_t status = + amdsmi_get_power_info_p(device_handles[event->device], &power); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - // Remove debug prints to avoid unnecessary console output - #if 0 - printf("=== power info dump ===\n"); - printf("current_socket_power : %u W\n", power.current_socket_power); - printf("average_socket_power : %u W\n", power.average_socket_power); - printf("gfx_voltage : %u mV\n", power.gfx_voltage); - printf("soc_voltage : %u mV\n", power.soc_voltage); - printf("mem_voltage : %u mV\n", power.mem_voltage); - printf("power_limit : %u W\n", power.power_limit); - printf("========================\n"); - #endif event->value = (int64_t) power.average_socket_power; return PAPI_OK; } @@ -1459,7 +2077,8 @@ static int access_amdsmi_pci_throughput(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t sent = 0, received = 0, max_pkt = 0; - amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], + amdsmi_status_t status = + amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1480,7 +2099,8 @@ static int access_amdsmi_pci_replay_counter(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint64_t counter = 0; - amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); + amdsmi_status_t status = + amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1495,7 +2115,8 @@ static int access_amdsmi_clk_freq(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_frequencies_t freq_info; - amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); + amdsmi_status_t status = + amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1526,7 +2147,8 @@ static int access_amdsmi_gpu_metrics(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_gpu_metrics_t metrics; - amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); + amdsmi_status_t status = + amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1608,7 +2230,8 @@ static int access_amdsmi_gpu_activity(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_engine_usage_t usage; - amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); + amdsmi_status_t status = + amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1630,7 +2253,8 @@ static int access_amdsmi_fan_speed_max(int mode, void *arg) { return PAPI_ENOSUPP; } int64_t max_speed = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); + amdsmi_status_t status = + amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1647,7 +2271,8 @@ static int access_amdsmi_pci_bandwidth(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_pcie_bandwidth_t bw; - amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); + amdsmi_status_t status = + amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1682,7 +2307,8 @@ static int access_amdsmi_energy_count(int mode, void *arg) { uint64_t energy = 0; float resolution = 0.0; uint64_t timestamp = 0; - amdsmi_status_t status = amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); + amdsmi_status_t status = + amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1700,7 +2326,8 @@ static int access_amdsmi_power_profile_status(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_power_profile_status_t status_info; - amdsmi_status_t status = amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); + amdsmi_status_t status = + amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } @@ -1713,3 +2340,304 @@ static int access_amdsmi_power_profile_status(int mode, void *arg) { } return PAPI_OK; } + +#ifndef AMDSMI_DISABLE_ESMI +/* The functions below implement CPU metrics access */ +static int access_amdsmi_cpu_socket_power(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t power = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) power; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) energy; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t freq = 0; + char *src = NULL; + amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (src) free(src); + event->value = freq; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t fmax = 0, fmin = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = fmin; + } else { + event->value = fmax; + } + return PAPI_OK; +} + +static int access_amdsmi_cpu_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t cap_value = 0; + amdsmi_status_t status; + if (event->variant == 0) { + status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); + } else { + status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); + } + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) cap_value; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) energy; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t freq = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = freq; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t boost = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = boost; + return PAPI_OK; +} + +static int access_amdsmi_dimm_temp(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_temp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) dimm_temp.temp; + return PAPI_OK; +} + +static int access_amdsmi_dimm_power(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_power_t dimm_pow; + amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_pow); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = dimm_pow.power; + return PAPI_OK; +} + +static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_temp_range_refresh_rate_t rate; + amdsmi_status_t status = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t) event->subvariant, &rate); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = rate.range; + } else { + event->value = rate.ref_rate; + } + return PAPI_OK; +} + +static int access_amdsmi_threads_per_core(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t threads = 0; + amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = threads; + return PAPI_OK; +} + +static int access_amdsmi_cpu_family(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t family = 0; + amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = family; + return PAPI_OK; +} + +static int access_amdsmi_cpu_model(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t model = 0; + amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = model; + return PAPI_OK; +} + +static int access_amdsmi_smu_fw_version(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_smu_fw_version_t fw; + amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + int encoded = ((int) fw.major << 16) | ((int) fw.minor << 8) | fw.debug; + event->value = encoded; + return PAPI_OK; +} + +static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_processor_handle src = device_handles[event->device]; + amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; + uint64_t min_bw = 0, max_bw = 0; + amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = (int64_t) min_bw; + } else { + event->value = (int64_t) max_bw; + } + return PAPI_OK; +} + +#endif From 896b96267ff61c053ff46b00db11fee5da71d464 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 12 May 2025 09:38:30 -0700 Subject: [PATCH 013/147] update tests --- .../amd_smi/tests/amdsmi_basics.cpp | 633 +++--------------- 1 file changed, 85 insertions(+), 548 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 6ee21946e..8fda2b6da 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -1,575 +1,112 @@ //----------------------------------------------------------------------------- -// This program must be compiled using a special makefile: -// make -f AMD_SMI_Makefile amd_smi_all.out +// amd_smi_single_event_test.cpp +// Enumerates every native AMD-SMI event exposed through PAPI and measures +// them **one at a time**. This isolates each counter in its own EventSet so +// that you can verify the event works independently of the others. +// Designed for C++17 / hipcc builds. +// +// Build example: +// make -f ROCM_SMI_Makefile amd_smi_single_event_test.out //----------------------------------------------------------------------------- -#define __HIP_PLATFORM_HCC__ - -#include -#include -#include -#include "papi.h" -#include -#include - -#define CHECK(cmd) \ -{\ - hipError_t error = cmd;\ - if (error != hipSuccess) { \ - fprintf(stderr, "error: '%s'(%d) at %s:%d\n", hipGetErrorString(error), error,__FILE__, __LINE__); \ - exit(EXIT_FAILURE);\ - }\ -} - -// THIS MACRO EXITS if the papi call does not return PAPI_OK. Do not use for routines that -// return anything else; e.g. PAPI_num_components, PAPI_get_component_info, PAPI_library_init. -#define CALL_PAPI_OK(papi_routine) \ - do { \ - int _papiret = papi_routine; \ - if (_papiret != PAPI_OK) { \ - fprintf(stderr, "%s:%d macro: PAPI Error: function " #papi_routine " failed with ret=%d [%s].\n", \ - __FILE__, __LINE__, _papiret, PAPI_strerror(_papiret)); \ - exit(-1); \ - } \ - } while (0); - - -#define MEMORY_ALLOCATION_CALL(var) \ - do { \ - if (var == NULL) { \ - fprintf(stderr, "%s:%d: Error: Memory Allocation Failed \n",\ - __FILE__, __LINE__); \ - exit(-1); \ - } \ - } while (0); - - -#define MAX_DEVICES (32) -#define BLOCK_SIZE (1024) -#define GRID_SIZE (512) -#define BUF_SIZE (32 * 1024) -#define ALIGN_SIZE (8) -#define SUCCESS (0) -#define NUM_METRIC (18) -#define NUM_EVENTS (2) -#define MAX_SIZE (64*1024*1024) // 64 MB - -typedef union -{ - long long ll; - unsigned long long ull; - double d; - void *vp; - unsigned char ch[8]; -} convert_64_t; - -typedef struct { - char name[128]; - long long value; - int flagged; -} eventStore_t; - -int eventsFoundCount = 0; // occupants of the array. -int eventsFoundMax; // Size of the array. -int eventsFoundAdd = 32; // Blocksize for increasing the array. -int deviceCount=0; // Total devices seen. -int deviceEvents[32] = {0}; // Number of events for each device=??. -int globalEvents = 0; // events without a "device=". -eventStore_t *eventsFound = NULL; // The array. - -//----------------------------------------------------------------------------- -// HIP routine: Square each element in the array A and write to array C. -//----------------------------------------------------------------------------- -template -__global__ void -vector_square(T *C_d, T *A_d, size_t N) -{ - size_t offset = (blockIdx.x * blockDim.x + threadIdx.x); - size_t stride = blockDim.x * gridDim.x ; - - for (size_t i=offset; i= eventsFoundMax) { // bump count, if too much, make room. - eventsFoundMax += eventsFoundAdd; // Add. - eventsFound = (eventStore_t*) realloc(eventsFound, eventsFoundMax*sizeof(eventStore_t)); // Make new room. - memset(eventsFound+(eventsFoundMax-eventsFoundAdd), 0, eventsFoundAdd*sizeof(eventStore_t)); // zero it. - } -} // end routine. - -//----------------------------------------------------------------------------- -// conduct a test using HIP. Derived from AMD sample code 'square.cpp'. -// coming in, EventSet is already populated, we just run the test and read. -// Note values must point at an array large enough to store the events in -// Eventset. -//----------------------------------------------------------------------------- -void conductTest(int EventSet, int device, long long *values) { - float *A_d, *C_d; - float *A_h, *C_h; - size_t N = 1000000; - size_t Nbytes = N * sizeof(float); - int ret, thisDev, verbose=0; - - ret = PAPI_start( EventSet ); - if (ret != PAPI_OK ) { - fprintf(stderr,"Error! PAPI_start\n"); - exit( ret ); - } - - hipDeviceProp_t props; - if (verbose) fprintf(stderr, "args: EventSet=%i, device=%i, values=%p.\n", EventSet, device, values); - - CHECK(hipSetDevice(device)); // Set device requested. - CHECK(hipGetDevice(&thisDev)); // Double check. - CHECK(hipGetDeviceProperties(&props, thisDev)); // Get properties (for name). - if (verbose) fprintf (stderr, "info: Requested Device=%i, running on device %i=%s\n", device, thisDev, props.name); - - if (verbose) fprintf (stderr, "info: allocate host mem (%6.2f MB)\n", 2*Nbytes/1024.0/1024.0); - A_h = (float*)malloc(Nbytes); // standard malloc for host. - CHECK(A_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); - C_h = (float*)malloc(Nbytes); // standard malloc for host. - CHECK(C_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); - - // Fill with Phi + i - for (size_t i=0; i +#include +#include - if (verbose) fprintf (stderr, "info: check result\n"); - for (size_t i=0; iname, "amd_smi") == 0) { + cid = i; } - - if (strcmp("amd_smi", aComponent->name) == 0) cid=i; // If we found our match, record it. - } // end search components. - - if (cid < 0) { // if no amd_smi component found, - fprintf(stderr, "Failed to find amd_smi component among %i " - "reported components.\n", k); - FreeGlobals(); - PAPI_shutdown(); - exit(-1); - } - - printf("Found AMD_SMI Component at id %d\n", cid); - - // Add events at a GPU specific level ... eg amd_smi:::device=0:Whatever - eventCount = 0; - int eventsRead=0; - - // Begin enumeration of all events. - - printf("Events with numeric values were read; if they are zero, they may not \n" - "be operational, or the exercises performed by this code do not affect \n" - "them. We report all 'amd_smi' events presented by the amd_smi component. \n" - "\n" - "------------------------Event Name Found------------------------:---Value---\n"); - - PAPI_event_info_t info; // To get event enumeration info. - m=PAPI_NATIVE_MASK; // Get the PAPI NATIVE mask. - CALL_PAPI_OK(PAPI_enum_cmp_event(&m,PAPI_ENUM_FIRST,cid)); // Begin enumeration of ALL papi counters. - do { // Enumerate all events. - memset(&info,0,sizeof(PAPI_event_info_t)); // Clear event info. - k=m; // Make a copy of current code. - - // enumerate sub-events, with masks. For this test, we do not - // have any! But we do this to test our enumeration works as - // expected. First time through is guaranteed, of course. - - do { // enumerate masked events. - CALL_PAPI_OK(PAPI_get_event_info(k,&info)); // get name of k symbol. - char *devstr = strstr(info.symbol, "device="); // look for device enumerator. - if (devstr != NULL) { // If device specific, - device=atoi(devstr+7); // Get the device id, for info. -// fprintf(stderr, "Found amd_smi symbol '%s', device=%i.\n", info.symbol , device); - if (device < 0 || device >= 32) continue; // skip any not in range. - } else { // A few are system wide. -// fprintf(stderr, "Found amd_smi symbol '%s'.\n", info.symbol); - globalEvents++; // Add to global events. - device=0; // Any device will do. - } - - // Filter for strings being returned. - int isString = 0; - - if (strstr(info.symbol, "device_brand:") != NULL) isString=1; - if (strstr(info.symbol, "device_name:") != NULL) isString=1; - if (strstr(info.symbol, "device_serial_number:") != NULL) isString=1; - if (strstr(info.symbol, "device_subsystem_name:") != NULL) isString=1; - if (strstr(info.symbol, "vbios_version:") != NULL) isString=1; - if (strstr(info.symbol, "vendor_name:") != NULL) isString=1; - if (strstr(info.symbol, "driver_version_str:") != NULL) isString=1; - - // Filter out crashers. - // NOTE: These filters were for rocm_smi. Review and update for amd_smi if needed. - /* - if (strstr(info.symbol, "temp_current:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical_hyst:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; - // if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; // Duplicate line in original - - if (strstr(info.symbol, "temp_current:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical_hyst:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; - // if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; // Duplicate line in original - */ - - CALL_PAPI_OK(PAPI_create_eventset(&EventSet)); - CALL_PAPI_OK(PAPI_assign_eventset_component(EventSet, cid)); - - ret = PAPI_add_named_event(EventSet, info.symbol); // Don't want to fail program if name not found... - if(ret == PAPI_OK) { - eventCount++; // Bump number of events we could test. - if (deviceEvents[device] == 0) deviceCount++; // Increase count of devices if first for this device. - deviceEvents[device]++; // Add to count of events on this device. - } else { - fprintf(stderr, "FAILED to add event '%s', ret=%i='%s'.\n", info.symbol, ret, PAPI_strerror(ret)); - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - continue; - } - - long long value=0; // The only value we read. - - // Prep stuff. - - fprintf(stderr, "conductTest on single event: %s.\n", info.symbol); - conductTest(EventSet, device, &value); // Conduct a test, on device given. - addEventsFound(info.symbol, value); // Add to events we were able to read. - - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - - // report each event counted. - eventsRead++; // .. count and report. - if (value == 0) { - printf("%-64s: %lli (perhaps not exercised by current test code.)\n", info.symbol, value); - } else { - if (isString) printf("%-64s: %-64s\n", info.symbol, ((char*) value)); - else printf("%-64s: %lli\n", info.symbol, value); - } - } while(PAPI_enum_cmp_event(&k,PAPI_NTV_ENUM_UMASKS,cid)==PAPI_OK); // Get next umask entry (bits different) (should return PAPI_NOEVNT). - } while(PAPI_enum_cmp_event(&m,PAPI_ENUM_EVENTS,cid)==PAPI_OK); // Get next event code. - -// fprintf(stderr, "%s:%i Finished Event Loops.\n", __FILE__, __LINE__); - - if (eventCount < 1) { // If we failed on all of them, - fprintf(stderr, "Unable to add any AMD_SMI events; they are not present in the component.\n"); - fprintf(stderr, "Unable to proceed with this test.\n"); - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(-1); // exit no matter what. - } - - if (eventsRead < 1) { // If failed to read any, - fprintf(stderr, "\nFailed to read any AMD_SMI events.\n"); // report a failure. - fprintf(stderr, "Unable to proceed with pair testing.\n"); - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(-1); // exit no matter what. } - - printf("\nTotal AMD_SMI events identified: %i.\n\n", eventsFoundCount); - - // EARLY SHUT DOWN. -// PAPI_shutdown(); -// return(0); - - // Next section is pair testing information. - if (eventsFoundCount < 2) { // If failed to get counts on any, - printf("Insufficient events are exercised by the current test code to perform pair testing.\n"); // report a failure. - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(0); // exit no matter what. + if (cid < 0) { + fprintf(stderr, "Unable to locate the amd_smi component ? is PAPI built with ROCm support?\n"); + return EXIT_FAILURE; } - - - for (i=0; i<32; i++) { - if (deviceEvents[i] == 0) continue; // skip if none found. - if (i==0 && globalEvents >0) { - printf("Device %i assigned %i events (%i of which are not device specific). %i potential pairings for this device.\n", i, deviceEvents[i], globalEvents, deviceEvents[i]*(deviceEvents[i]-1)/2); - } else { - printf("Device %i assigned %i events. %i potential pairings for this device.\n", i, deviceEvents[i], deviceEvents[i]*(deviceEvents[i]-1)/2); - } + printf("Using AMD-SMI component id %d\n\n", cid); + + //------------------------------------------------------------------- + // 3. Enumerate every native event + //------------------------------------------------------------------- + int ev_code = PAPI_NATIVE_MASK; + if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { + fprintf(stderr, "No native events found for AMD-SMI component.\n"); + return EXIT_SUCCESS; // Nothing more to do } - // Begin pair testing. We consider every possible pairing of events - // that, tested alone, returned a value greater than zero. -// fprintf(stderr, "Begin Pair Testing.\n"); - - int mainEvent, pairEvent, mainDevice, pairDevice; - long long readValues[2]; - int goodOnSame=0, failOnDiff=0, badSameCombo=0, pairProblems=0; // Some counters. - int type; // 0 succeed on same device, 1 = fail across devices. - for (type=0; type<2; type++) { - if (type == 0) { - printf("List of Pairings on SAME device:\n"); - printf("* means value changed by more than 10%% when paired (vs measured singly, above).\n"); - printf("^ means a pair was rejected as an invalid combo.\n"); - } else { - printf("List of Pairings causing an error when on DIFFERENT devices:\n"); + int event_index = 0; + do { + char ev_name[PAPI_MAX_STR_LEN]{}; + if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { + // Should not happen, but skip if it does. + continue; } - for (mainEvent = 0; mainEvent 1.10) { // Flag as significantly different for main. - flag1='*'; - eventsFound[mainEvent].flagged = 1; // .. remember this event is suspect. - } - - if (pairCheck < 0.90 || pairCheck > 1.10) { // Flag as significantly different for pair. - flag2='*'; - eventsFound[pairEvent].flagged = 1; // .. remember this event is suspect. - } - - if (flag1 == '*' || flag2 == '*') { - pairProblems++; // Remember number of problems. - flag = '*'; // set global flag. - } - - printf("%c %64s + %-64s [", flag, eventsFound[mainEvent].name, eventsFound[pairEvent].name); - if (flag1 == '*') printf("%c%lli (vs %lli),", flag1, readValues[0], eventsFound[mainEvent].value); - else printf("%c%lli,", flag1, readValues[0]); - - if (flag2 == '*') printf("%c%lli (vs %lli)]\n", flag2, readValues[1], eventsFound[pairEvent].value); - else printf("%c%lli]\n", flag2, readValues[1]); + ret = PAPI_add_event(eventSet, ev_code); + if (ret != PAPI_OK) { + fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + continue; + } - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - } // end for each possible pairing event. - } // end loop for each possible primary event. + long long value = 0; + CALL_PAPI_OK(PAPI_start(eventSet)); + CALL_PAPI_OK(PAPI_stop(eventSet, &value)); - if (type == 0) { // For good pairings on same devices, - if (goodOnSame == 0) { - printf("NO valid pairings of above events if both on the SAME device.\n"); - } else { - printf("%i valid pairings of above events if both on the SAME device.\n", goodOnSame); - } + printf(" %-60s = %lld\n\n", ev_name, value); - printf("%i unique pairings on SAME device were rejected as bad combinations.\n", badSameCombo); + CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); - if (pairProblems > 0) { - printf("%i pairings resulted in a change of one or both event values > 10%%.\n", pairProblems); - printf("The following events were changed by pairing:\n"); - for (mainEvent = 0; mainEvent Date: Mon, 12 May 2025 21:51:02 +0000 Subject: [PATCH 014/147] disable virtualization function --- src/components/amd_smi/amds.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 6894f0f40..4a1d3c890 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -46,7 +46,7 @@ static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +//static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); @@ -260,7 +260,7 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); - amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); +// amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); @@ -312,7 +312,7 @@ static int load_amdsmi_sym(void) { { "amdsmi_get_gpu_id", amdsmi_get_gpu_id_p }, { "amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p }, { "amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p }, - { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, +// { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, { "amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p }, { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, @@ -380,7 +380,7 @@ static int unload_amdsmi_sym(void) { amdsmi_get_gpu_id_p = NULL; amdsmi_get_gpu_revision_p = NULL; amdsmi_get_gpu_subsystem_id_p = NULL; - amdsmi_get_gpu_virtualization_mode_p = NULL; +// amdsmi_get_gpu_virtualization_mode_p = NULL; amdsmi_get_gpu_pci_bandwidth_p = NULL; amdsmi_get_gpu_bdf_id_p = NULL; amdsmi_get_gpu_topo_numa_affinity_p = NULL; @@ -810,11 +810,18 @@ static int init_event_table(void) { for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { // Probe if sensor exists by reading current temperature int64_t dummy_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &dummy_val) + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + AMDSMI_TEMP_CURRENT, &dummy_val) != AMDSMI_STATUS_SUCCESS) { continue; // skip this sensor if not present } for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { + int64_t metric_val; + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + temp_metrics[mi], &metric_val) + != AMDSMI_STATUS_SUCCESS) { + continue; /* skip this metric if not supported */ + } snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", @@ -1262,7 +1269,7 @@ static int init_event_table(void) { for (int d = 0; d < gpu_count; ++d) { uint16_t id16; uint64_t id64; - amdsmi_virtualization_mode_t vmode; + //amdsmi_virtualization_mode_t vmode; int32_t numa; // GPU ID if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { @@ -1348,6 +1355,7 @@ static int init_event_table(void) { htable_insert(htable, ev_bdf->name, ev_bdf); idx++; } + /* // GPU Virtualization Mode if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); @@ -1369,6 +1377,7 @@ static int init_event_table(void) { htable_insert(htable, ev_vmode->name, ev_vmode); idx++; } + */ // GPU NUMA Node if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); @@ -2199,14 +2208,14 @@ static int access_amdsmi_gpu_info(int mode, void *arg) { } break; } - case 4: { + /*case 4: { amdsmi_virtualization_mode_t mode_val; status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { event->value = mode_val; } break; - } + }*/ case 5: { int32_t numa_node = -1; status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); From 7f82e53faa6c2ad08454d24a5c4073f7f68c830a Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 12 May 2025 15:57:25 -0700 Subject: [PATCH 015/147] update tests --- .../{a.txt => .nfs0000000086564f6b00046031} | 0 src/components/amd_smi/Rules.amd_smi | 2 +- src/components/amd_smi/amds.c | 132 +- src/components/amd_smi/b.txt | 3631 ----------------- src/components/amd_smi/tests/Makefile | 1 - .../amd_smi/tests/amdsmi_example.cpp | 15 +- src/components/amd_smi/tests/gemm.cpp | 54 +- src/components/amd_smi/tests/test.csv | 13 + 8 files changed, 127 insertions(+), 3721 deletions(-) rename src/components/amd_smi/{a.txt => .nfs0000000086564f6b00046031} (100%) delete mode 100644 src/components/amd_smi/b.txt create mode 100644 src/components/amd_smi/tests/test.csv diff --git a/src/components/amd_smi/a.txt b/src/components/amd_smi/.nfs0000000086564f6b00046031 similarity index 100% rename from src/components/amd_smi/a.txt rename to src/components/amd_smi/.nfs0000000086564f6b00046031 diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 0dbbdff55..1b33117b5 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -3,7 +3,7 @@ # There are four other environment variables that must be exported # for runtime operation; see the README file. -PAPI_AMDMSMI_ROOT ?= /opt/rocm +PAPI_AMDMSMI_ROOT ?= /opt/rocm-6.4.0 # There is one library used by the AMD_SMI component: libamd_smi64.so # By default, the software tries to find this in system paths, including diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 4a1d3c890..232d67602 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -19,6 +19,7 @@ typedef enum { PAPI_MODE_RDWR, } rocs_access_mode_e; + /* Pointers to AMD SMI library functions (dynamically loaded) */ static amdsmi_status_t (*amdsmi_init_p)(uint64_t); static amdsmi_status_t (*amdsmi_shut_down_p)(void); @@ -848,66 +849,81 @@ static int init_event_table(void) { /* Fan metrics (assume one fan sensor index 0 per device) */ for (int d = 0; d < gpu_count; ++d) { - // Fan RPM (speed in RPM) - snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); - - native_event_t *ev_rpm = &ntv_table.events[idx]; - ev_rpm->id = idx; - ev_rpm->name = strdup(name_buf); - ev_rpm->descr = strdup(descr_buf); - ev_rpm->device = d; - ev_rpm->value = 0; - ev_rpm->mode = PAPI_MODE_READ; - ev_rpm->variant = 0; - ev_rpm->subvariant = 0; - ev_rpm->open_func = open_simple; - ev_rpm->close_func = close_simple; - ev_rpm->start_func = start_simple; - ev_rpm->stop_func = stop_simple; - ev_rpm->access_func = access_amdsmi_fan_rpms; - htable_insert(htable, ev_rpm->name, ev_rpm); - idx++; + int64_t dummy; + + /* --- only register Fan RPM if reading it works --- */ + if (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) + == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "fan_rpms:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan speed in RPM", d); + native_event_t *ev_rpm = &ntv_table.events[idx]; + ev_rpm->id = idx; + ev_rpm->name = strdup(name_buf); + ev_rpm->descr = strdup(descr_buf); + ev_rpm->device = d; + ev_rpm->value = 0; + ev_rpm->mode = PAPI_MODE_READ; + ev_rpm->variant = 0; + ev_rpm->subvariant = 0; + ev_rpm->open_func = open_simple; + ev_rpm->close_func = close_simple; + ev_rpm->start_func = start_simple; + ev_rpm->stop_func = stop_simple; + ev_rpm->access_func= access_amdsmi_fan_rpms; + htable_insert(htable, ev_rpm->name, ev_rpm); + idx++; + } - // Fan speed (relative value 0-255, read-only; write not implemented) - snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); - native_event_t *ev_fan = &ntv_table.events[idx]; - ev_fan->id = idx; - ev_fan->name = strdup(name_buf); - ev_fan->descr = strdup(descr_buf); - ev_fan->device = d; - ev_fan->value = 0; - ev_fan->mode = PAPI_MODE_READ; /* FIX: only read supported, write not implemented */ - ev_fan->variant = 0; - ev_fan->subvariant = 0; - ev_fan->open_func = open_simple; - ev_fan->close_func = close_simple; - ev_fan->start_func = start_simple; - ev_fan->stop_func = stop_simple; - ev_fan->access_func = access_amdsmi_fan_speed; - htable_insert(htable, ev_fan->name, ev_fan); - idx++; + /* --- only register Fan SPEED (0?255) if reading it works --- */ + if (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) + == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "fan_speed:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan speed (0-255 relative)", d); + native_event_t *ev_fan = &ntv_table.events[idx]; + ev_fan->id = idx; + ev_fan->name = strdup(name_buf); + ev_fan->descr = strdup(descr_buf); + ev_fan->device = d; + ev_fan->value = 0; + ev_fan->mode = PAPI_MODE_READ; + ev_fan->variant = 0; + ev_fan->subvariant = 0; + ev_fan->open_func = open_simple; + ev_fan->close_func = close_simple; + ev_fan->start_func = start_simple; + ev_fan->stop_func = stop_simple; + ev_fan->access_func= access_amdsmi_fan_speed; + htable_insert(htable, ev_fan->name, ev_fan); + idx++; + } - // Fan max RPM (maximum speed in RPM) - snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); - native_event_t *ev_fanmax = &ntv_table.events[idx]; - ev_fanmax->id = idx; - ev_fanmax->name = strdup(name_buf); - ev_fanmax->descr = strdup(descr_buf); - ev_fanmax->device = d; - ev_fanmax->value = 0; - ev_fanmax->mode = PAPI_MODE_READ; - ev_fanmax->variant = 0; - ev_fanmax->subvariant = 0; - ev_fanmax->open_func = open_simple; - ev_fanmax->close_func = close_simple; - ev_fanmax->start_func = start_simple; - ev_fanmax->stop_func = stop_simple; - ev_fanmax->access_func = access_amdsmi_fan_speed_max; - htable_insert(htable, ev_fanmax->name, ev_fanmax); - idx++; + if (amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy) + == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "fan_rpms_max:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan maximum speed in RPM", d); + native_event_t *ev_fanmax = &ntv_table.events[idx]; + ev_fanmax->id = idx; + ev_fanmax->name = strdup(name_buf); + ev_fanmax->descr = strdup(descr_buf); + ev_fanmax->device = d; + ev_fanmax->value = 0; + ev_fanmax->mode = PAPI_MODE_READ; + ev_fanmax->variant = 0; + ev_fanmax->subvariant = 0; + ev_fanmax->open_func = open_simple; + ev_fanmax->close_func = close_simple; + ev_fanmax->start_func = start_simple; + ev_fanmax->stop_func = stop_simple; + ev_fanmax->access_func= access_amdsmi_fan_speed_max; + htable_insert(htable, ev_fanmax->name, ev_fanmax); + idx++; + } } /* VRAM memory metrics */ diff --git a/src/components/amd_smi/b.txt b/src/components/amd_smi/b.txt deleted file mode 100644 index 395535ec5..000000000 --- a/src/components/amd_smi/b.txt +++ /dev/null @@ -1,3631 +0,0 @@ -Available native events and hardware information. --------------------------------------------------------------------------------- -PAPI version : 7.2.0.0 -Operating system : Linux 4.18.0-553.16.1.el8_10.x86_64 -Vendor string and code : AuthenticAMD (2, 0x2) -Model string and code : AMD EPYC 7413 24-Core Processor (1, 0x1) -CPU revision : 1.000000 -CPUID : Family/Model/Stepping 25/1/1, 0x19/0x01/0x01 -CPU Max MHz : 3630 -CPU Min MHz : 1500 -Total cores : 96 -SMT threads per core : 2 -Cores per socket : 24 -Sockets : 2 -Cores per NUMA region : 48 -NUMA regions : 2 -Running in a VM : no -Number Hardware Counters : NA -Max Multiplex Counters : 512 -Fast counter read (rdpmc): no --------------------------------------------------------------------------------- - -=============================================================================== - Native Events in Component: rocm -=============================================================================== -| rocm:::SQ_WAIT_INST_LDS | -| Number of wave-cycles spent waiting for LDS instruction issue. In | -| units of 4 cycles. (per-simd, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES | -| TCP stalls TA data interface. Now Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::GRBM_COUNT | -| Tie High - Count Number of Clocks | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_GUI_ACTIVE | -| The GUI is Active | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CP_BUSY | -| Any of the Command Processor (CPG/CPC/CPF) blocks are busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_SPI_BUSY | -| Any of the Shader Pipe Interpolators (SPI) are busy in the shader | -| engine(s). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_TA_BUSY | -| Any of the Texture Pipes (TA) are busy in the shader engine(s). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_TC_BUSY | -| Any of the Texture Cache Blocks (TCP/TCI/TCA/TCC) are busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CPC_BUSY | -| The Command Processor Compute (CPC) is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CPF_BUSY | -| The Command Processor Fetchers (CPF) is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_UTCL2_BUSY | -| The Unified Translation Cache Level-2 (UTCL2) block is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_EA_BUSY | -| The Efficiency Arbiter (EA) block is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_ME1_BUSY_FOR_PACKET_DECODE | -| Me1 busy for packet decode. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_UTCL1_STALL_ON_TRANSLATION | -| One of the UTCL1s is stalled waiting on translation, XNACK or PEND| -| ING response. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_BUSY | -| CPC Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_IDLE | -| CPC Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_STALL | -| CPC Stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_TCIU_BUSY | -| CPC TCIU interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_TCIU_IDLE | -| CPC TCIU interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_BUSY | -| CPC UTCL2 interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_IDLE | -| CPC UTCL2 interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_STALL | -| CPC UTCL2 interface Stalled waiting on Free, Tags or Translation. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_ME1_DC0_SPI_BUSY | -| CPC Me1 Processor Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CMP_UTCL1_STALL_ON_TRANSLATION | -| One of the Compute UTCL1s is stalled waiting on translation, XNACK| -| or PENDING response. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_BUSY | -| CPF Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_IDLE | -| CPF Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_STALL | -| CPF Stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_BUSY | -| CPF TCIU interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_IDLE | -| CPF TCIU interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_STALL | -| CPF TCIU interface Stalled waiting on Free, Tags. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_WINDOW_VALID | -| Clock count enabled by perfcounter_start event. Requires SPI_DEBUG| -| _CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, source | -| is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, sou| -| rce is CS3; default, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_BUSY | -| Number of clocks with outstanding waves (SPI or SH). Requires SPI_| -| DEBUG_CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, so| -| urce is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3| -| , source is CS3; default, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_NUM_THREADGROUPS | -| Number of threadgroups launched. Requires SPI_DEBUG_CNTL.DEBUG_PIP| -| E_SEL to select source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_P| -| IPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, source is CS3; def| -| ault, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_WAVE | -| Number of waves. Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select | -| source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, sou| -| rce is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is | -| CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_REQ_NO_ALLOC | -| Arb cycles with requests but no allocation. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_REQ_NO_ALLOC_CSN | -| Arb cycles with CSn req and no CSn alloc. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_RES_STALL_CSN | -| Arb cycles with CSn req and no CSn fits. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_TMP_STALL_CSN | -| Cycles where csn wants to req but does not fit in temp space. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_WAVE_SIMD_FULL_CSN | -| Sum of SIMD where WAVE can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_VGPR_SIMD_FULL_CSN | -| Sum of SIMD where VGPR can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_SGPR_SIMD_FULL_CSN | -| Sum of SIMD where SGPR can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_LDS_CU_FULL_CSN | -| Sum of CU where LDS can't take csn wave when !fits. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_BAR_CU_FULL_CSN | -| Sum of CU where BARRIER can't take csn wave when !fits. Source is | -| RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_BULKY_CU_FULL_CSN | -| Sum of CU where BULKY can't take csn wave when !fits. Source is RA| -| 0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_TGLIM_CU_FULL_CSN | -| Cycles where csn wants to req but all CU are at tg_limit | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_WVLIM_STALL_CSN | -| Number of clocks csn is stalled due to WAVE LIMIT. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_SWC_CSC_WR | -| Number of clocks to write CSC waves to SGPRs (need to multiply thi| -| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| -| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| -| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| -| ; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_VWC_CSC_WR | -| Number of clocks to write CSC waves to VGPRs (need to multiply thi| -| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| -| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| -| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| -| ; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACCUM_PREV | -| For counter N, increment by the value of counter N-1. Only accumul| -| ates once every 4 cycles. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_CYCLES | -| Clock cycles. (nondeterministic, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_BUSY_CYCLES | -| Clock cycles while SQ is reporting that it is busy. (nondeterminis| -| tic, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES | -| Count number of waves sent to SQs. (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LEVEL_WAVES | -| Track the number of waves. Set ACCUM_PREV for the next counter to | -| use this. (level, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_EQ_64 | -| Count number of waves with exactly 64 active threads sent to SQs. | -| (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_64 | -| Count number of waves with <64 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_48 | -| Count number of waves with <48 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_32 | -| Count number of waves sent <32 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_16 | -| Count number of waves sent <16 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_BUSY_CU_CYCLES | -| Count quad-cycles each CU is busy. (nondeterministic, per-simd) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ITEMS | -| Number of valid items per wave. (per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS | -| Number of instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU | -| Number of VALU instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F16 | -| Number of VALU ADD/SUB instructions on float16. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F16 | -| Number of VALU MUL instructions on float16. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F16 | -| Number of VALU FMA/MAD instructions on float16. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F16 | -| Number of VALU transcendental instructions on float16. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F32 | -| Number of VALU ADD/SUB instructions on float32. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F32 | -| Number of VALU MUL instructions on float32. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F32 | -| Number of VALU FMA/MAD instructions on float32. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F32 | -| Number of VALU transcendental instructions on float32. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F64 | -| Number of VALU ADD/SUB instructions on float64. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F64 | -| Number of VALU MUL instructions on float64. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F64 | -| Number of VALU FMA/MAD instructions on float64. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F64 | -| Number of VALU transcendental instructions on float64. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_INT32 | -| Number of VALU 32-bit integer (signed or unsigned) instructions. (| -| per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_INT64 | -| Number of VALU 64-bit integer (signed or unsigned) instructions. (| -| per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_CVT | -| Number of VALU data conversion instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_I8 | -| Number of VALU V_MFMA_*_I8 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F16 | -| Number of VALU V_MFMA_*_F16 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_BF16 | -| Number of VALU V_MFMA_*_BF16 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F32 | -| Number of VALU V_MFMA_*_F32 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F64 | -| Number of VALU V_MFMA_*_F64 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_I8 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type I8. (per-simd,| -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F16 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F16. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_BF16 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type BF16. (per-sim| -| d, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F32 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F32. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F64 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F64. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_MFMA | -| Number of MFMA instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM_WR | -| Number of VMEM write instructions issued (including FLAT). (per-si| -| md, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM_RD | -| Number of VMEM read instructions issued (including FLAT). (per-sim| -| d, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM | -| Number of VMEM instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SALU | -| Number of SALU instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SMEM | -| Number of SMEM instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_FLAT | -| Number of FLAT instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_FLAT_LDS_ONLY | -| Number of FLAT instructions issued that read/wrote only from/to LD| -| S (only works if EARLY_TA_DONE is enabled). (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_LDS | -| Number of LDS instructions issued (including FLAT). (per-simd, emu| -| lated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_GDS | -| Number of GDS instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_EXP_GDS | -| Number of EXP and GDS instructions issued, excluding skipped expor| -| t instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_BRANCH | -| Number of Branch instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SENDMSG | -| Number of Sendmsg instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VSKIPPED | -| Number of vector instructions skipped. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_VMEM | -| Number of in-flight VMEM instructions. Set next counter to ACCUM_P| -| REV and divide by INSTS_VMEM for average latency. Includes FLAT in| -| structions. (per-simd, level, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_SMEM | -| Number of in-flight SMEM instructions (*2 load/store; *2 atomic; *| -| 2 memtime; *4 wb/inv). Set next counter to ACCUM_PREV and divide b| -| y INSTS_SMEM for average latency per smem request. Falls slightly | -| short of total request latency because some fetches are divided in| -| to two requests that may finish at different times and this counte| -| r collects the average latency of the two. (per-simd, level, nonde| -| terministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_LDS | -| Number of in-flight LDS instructions. Set next counter to ACCUM_PR| -| EV and divide by INSTS_LDS for average latency. Includes FLAT inst| -| ructions. (per-simd, level, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_VALU_MFMA_BUSY_CYCLES | -| Number of cycles the MFMA ALU is busy (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVE_CYCLES | -| Number of wave-cycles spent by waves in the CUs (per-simd, nondete| -| rministic). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAIT_ANY | -| Number of wave-cycles spent waiting for anything (per-simd, nondet| -| erministic). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAIT_INST_ANY | -| Number of wave-cycles spent waiting for any instruction issue. In | -| units of 4 cycles. (per-simd, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_ANY | -| Number of cycles each wave is working on an instruction. (per-simd| -| , emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_VMEM | -| Number of cycles the SQ instruction arbiter is working on a VMEM i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_LDS | -| Number of cycles the SQ instruction arbiter is working on a LDS in| -| struction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_VALU | -| Number of cycles the SQ instruction arbiter is working on a VALU i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_SCA | -| Number of cycles the SQ instruction arbiter is working on a SALU o| -| r SMEM instruction. (per-simd, emulated). Units in quad-cycles(4 c| -| ycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_EXP_GDS | -| Number of cycles the SQ instruction arbiter is working on an EXPOR| -| T or GDS instruction. (per-simd, emulated). Units in quad-cycles(4| -| cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_MISC | -| Number of cycles the SQ instruction aribter is working on a BRANCH| -| or SENDMSG instruction. (per-simd, emulated). Units in quad-cycle| -| s(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_FLAT | -| Number of cycles the SQ instruction arbiter is working on a FLAT i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_VMEM_WR | -| Number of cycles needed to send addr and cmd data for VMEM write i| -| nstructions. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_VMEM_RD | -| Number of cycles needed to send addr and cmd data for VMEM read in| -| structions. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_SMEM | -| Number of cycles needed to execute scalar memory reads. (per-simd,| -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_SALU | -| Number of cycles needed to execute non-memory read scalar operatio| -| ns. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_THREAD_CYCLES_VALU | -| Number of thread-cycles used to execute VALU operations (similar t| -| o INST_CYCLES_VALU but multiplied by # of active threads). (per-si| -| md) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_IFETCH | -| Number of instruction fetch requests from cache. (per-simd, emulat| -| ed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_IFETCH_LEVEL | -| Number of instruction fetch requests from cache. (per-simd, level)| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_BANK_CONFLICT | -| Number of cycles LDS is stalled by bank conflicts. (emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_ADDR_CONFLICT | -| Number of cycles LDS is stalled by address conflicts. (emulated,no| -| ndeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_UNALIGNED_STALL | -| Number of cycles LDS is stalled processing flat unaligned load/sto| -| re ops. (emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_MEM_VIOLATIONS | -| Number of threads that have a memory violation in the LDS.(emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_ATOMIC_RETURN | -| Number of atomic return cycles in LDS. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_IDX_ACTIVE | -| Number of cycles LDS is used for indexed (non-direct,non-interpola| -| tion) operations. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACCUM_PREV_HIRES | -| For counter N, increment by the value of counter N-1. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_RESTORED | -| Count number of context-restored waves sent to SQs. (per-simd, emu| -| lated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_SAVED | -| Count number of context-saved waves. (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SMEM_NORM | -| Number of SMEM instructions issued normalized to match smem_level | -| (*2 load/store; *2 atomic; *2 memtime; *4 wb/inv). (per-simd, emul| -| ated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_INPUT_VALID_READYB | -| Input stalled by SQC (per-SQ, nondeterministic, unwindowed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_REQ | -| Total number of TC requests that were issued by instruction and co| -| nstant caches. (No-Masking, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_INST_REQ | -| Number of insruction requests to the TC (No-Masking, nondeterminis| -| tic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_READ_REQ | -| Number of data read requests to the TC (No-Masking, nondeterminist| -| ic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_WRITE_REQ | -| Number of data write requests to the TC (No-Masking, nondeterminis| -| tic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_ATOMIC_REQ | -| Number of data atomic requests to the TC (No-Masking, nondetermini| -| stic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_STALL | -| Valid request stalled TC request interface (no-credits). (No-Maski| -| ng, nondeterministic, unwindowed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_REQ | -| Number of requests. (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_HITS | -| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_MISSES | -| Number of cache misses, includes uncached requests. (per-SQ, per-B| -| ank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_MISSES_DUPLICATE | -| Number of misses that were duplicates (access to a non-resident, m| -| iss pending CL). (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ | -| Number of requests (post-bank-serialization). (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_HITS | -| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_MISSES | -| Number of cache misses, includes uncached requests. (per-SQ, per-B| -| ank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_MISSES_DUPLICATE | -| Number of misses that were duplicates (access to a non-resident, m| -| iss pending CL). (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_ATOMIC | -| Number of atomic requests. (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_1 | -| Number of constant cache 1 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_2 | -| Number of constant cache 2 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_4 | -| Number of constant cache 4 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_8 | -| Number of constant cache 8 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_16 | -| Number of constant cache 16 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TA_BUSY | -| TA block is busy. Perf_Windowing not supported for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_TOTAL_WAVEFRONTS | -| Total number of wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WAVEFRONTS | -| Number of buffer wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_READ_WAVEFRONTS | -| Number of buffer read wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WRITE_WAVEFRONTS | -| Number of buffer write wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS | -| Number of buffer atomic wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_TOTAL_CYCLES | -| Number of buffer cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_READ_CYCLES | -| Number of buffer coalesced read cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES | -| Number of buffer coalesced write cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES | -| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES | -| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_DATA_STALLED_BY_TC_CYCLES | -| Number of cycles data path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WAVEFRONTS | -| Number of flat opcode wavfronts processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_READ_WAVEFRONTS | -| Number of flat opcode reads processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WRITE_WAVEFRONTS | -| Number of flat opcode writes processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS | -| Number of flat opcode atomics processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_TD_BUSY | -| TD is processing or waiting for data. Perf_Windowing not supported| -| for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_TC_STALL | -| TD is stalled waiting for TC data. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_SPI_STALL | -| TD is stalled SPI vinit | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_LOAD_WAVEFRONT | -| Count the wavefronts with opcode = load, include atomics and store| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_ATOMIC_WAVEFRONT | -| Count the wavefronts with opcode = atomic. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_STORE_WAVEFRONT | -| Count the wavefronts with opcode = store. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_COALESCABLE_WAVEFRONT | -| Count wavefronts that TA finds coalescable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN1 | -| TCP interface clocks are turned on. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN2 | -| TCP core clocks are turned on. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TD_TCP_STALL_CYCLES | -| TD stalls TCP | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES | -| TCR stalls TCP_TCR_req interface | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on a read | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on a write | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on an atomic | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_PENDING_STALL_CYCLES | -| Stall due to data pending from L2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TA_TCP_STATE_READ | -| Number of state reads | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_VOLATILE | -| Total number of L1 volatile pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ACCESSES | -| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| -| READ+TCP_PERF_SEL_TOTAL_NONREAD | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_READ | -| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| -| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| -| L_TOTAL_MISS_EVICT_READ | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITE | -| Total number of local write pixels/buffers from TA. Equals TCP_PER| -| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITH_RET | -| Total number of atomic with return pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET | -| Total number of atomic without return pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES | -| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| -| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| -| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_REQUEST | -| Total CLIENT_UTCL1 NORMAL requests | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_MISS | -| Total utcl1 translation misses | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_HIT | -| Total utcl1 translation hits | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_PERMISSION_MISS | -| Total utcl1 permission misses | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_CACHE_ACCESSES | -| Count of total cache line (tag) accesses (includes hits and misses| -| ). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_LATENCY | -| Total TCP wave latency (from first clock of wave entering to first| -| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| -| atency | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_LATENCY | -| Total TCP->TCC request latency for reads and atomics with return. | -| Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_LATENCY | -| Total TCP->TCC request latency for writes and atomics without retu| -| rn. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ | -| Total read requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ | -| Total write requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ | -| Total atomic with return requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ | -| Total atomic without return requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_READ_REQ | -| Total read requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_WRITE_REQ | -| Total write requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_ATOMIC_REQ | -| Total atomic requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_READ_REQ | -| Total read requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_WRITE_REQ | -| Total write requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_ATOMIC_REQ | -| Total atomic requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_READ_REQ | -| Total write requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_WRITE_REQ | -| Total write requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_ATOMIC_REQ | -| Total atomic requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_READ_REQ | -| Total write requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_WRITE_REQ | -| Total write requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_ATOMIC_REQ | -| Total atomic requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCA_CYCLE | -| Number of cycles. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCA_BUSY | -| Number of cycles we have a request pending. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_CYCLE | -| Number of cycles. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY | -| Number of cycles we have a request pending. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_REQ | -| Number of requests of all types. This is measured at the tag block| -| . This may be more than the number of requests arriving at the TCC| -| , but it is a good indication of the total amount of work that nee| -| ds to be performed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_STREAMING_REQ | -| Number of streaming requests. This is measured at the tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NC_REQ | -| The number of noncoherently cached requests. This is measured at t| -| he tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_UC_REQ | -| The number of uncached requests. This is measured at the tag block| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_CC_REQ | -| The number of coherently cached requests. This is measured at the | -| tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_RW_REQ | -| The number of RW requests. This is measured at the tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE | -| Number of probe requests. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_ALL | -| Number of external probe requests with with EA_TCC_preq_all== 1. N| -| ot windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_READ | -| Number of read requests. Compressed reads are included in this, bu| -| t metadata reads are not included. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITE | -| Number of write requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ATOMIC | -| Number of atomic requests of all types. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_HIT | -| Number of cache hits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_MISS | -| Number of cache misses. UC reads count as misses. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITEBACK | -| Number of lines written back to main memory. This includes writeba| -| cks of dirty lines and uncached write/atomic requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ | -| Number of transactions (either 32-byte or 64-byte) going over the | -| TC_EA_wrreq interface. Atomics may travel over the same interface | -| and are generally classified as write requests. This does not incl| -| ude probe commands. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_64B | -| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| -| er the TC_EA_wrreq interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WR_UNCACHED_32B | -| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| -| e due to uncached traffic. Note that CC mtypes can produce uncache| -| d requests, and those are included in this. A 64-byte request will| -| be counted as 2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_STALL | -| Number of cycles a write request was stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of IO credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of GMI credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of DRAM credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL | -| Number of cycles the TCC could not send a EA write request because| -| it already reached its maximum number of pending EA write request| -| s. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_LEVEL | -| The sum of the number of EA write requests in flight. This is prim| -| arily meant for measure average EA write latency. Average write la| -| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC | -| Number of transactions going over the TC_EA_wrreq interface that a| -| re actually atomic requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_LEVEL | -| The sum of the number of EA atomics in flight. This is primarily m| -| eant for measure average EA atomic latency. Average atomic latency| -| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ | -| Number of TCC/EA read requests (either 32-byte or 64-byte) | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_32B | -| Number of 32-byte TCC/EA read requests | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RD_UNCACHED_32B | -| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| -| equest will be counted as 2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of IO credits. Stalls occur regardless of whether a re| -| ad needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of GMI credits. Stalls occur regardless of whether a r| -| ead needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of DRAM credits. Stalls occur regardless of whether a | -| read needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_LEVEL | -| The sum of the number of TCC/EA read requests in flight. This is p| -| rimarily meant for measure average EA read latency. Average read l| -| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL | -| Number of cycles the normal request pipeline in the tag was stalle| -| d for any reason. Normally, stalls of this nature are measured exa| -| ctly from one point the pipeline, but that is not the case for thi| -| s counter. Probes can stall the pipeline at a variety of places, a| -| nd there is no single point that can reasonably measure the total | -| stalls accurately. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_WRITEBACK | -| Number of writebacks due to requests that are not writeback reques| -| ts. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK | -| Number of writebacks due to all TC_OP writeback requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_EVICT | -| Number of evictions due to requests that are not invalidate or pro| -| be requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_INV_EVICT | -| Number of evictions due to all TC_OP invalidate requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM | -| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| -| d for DRAM (MC). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM | -| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| -| ed for DRAM (MC). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::MeanOccupancyPerCU | -| Mean occupancy per compute unit. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SIMD_UTILIZATION | -| Percent of time at least one warp was active on a multiprocessor, | -| averaged over all multiprocessors. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MeanOccupancyPerActiveCU | -| Mean occupancy per active compute unit. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TA_BUSY_sum | -| TA block is busy. Perf_Windowing not supported for this counter. S| -| um over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TOTAL_WAVEFRONTS_sum | -| Total number of wavefronts processed by TA. Sum over TA instances.| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES_sum | -| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES_sum | -| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_DATA_STALLED_BY_TC_CYCLES_sum | -| Number of cycles data path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WAVEFRONTS_sum | -| Number of flat opcode wavfronts processed by the TA. Sum over TA i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_READ_WAVEFRONTS_sum | -| Number of flat opcode reads processed by the TA. Sum over TA insta| -| nces. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS_sum | -| Number of flat opcode atomics processed by the TA. Sum over TA ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WAVEFRONTS_sum | -| Number of buffer wavefronts processed by TA. Sum over TA instances| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_READ_WAVEFRONTS_sum | -| Number of buffer read wavefronts processed by TA. Sum over TA inst| -| ances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WRITE_WAVEFRONTS_sum | -| Number of buffer write wavefronts processed by TA. Sum over TA ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS_sum | -| Number of buffer atomic wavefronts processed by TA. Sum over TA in| -| stances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_TOTAL_CYCLES_sum | -| Number of buffer cycles issued to TC. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_READ_CYCLES_sum | -| Number of buffer coalesced read cycles issued to TC. Sum over TA i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES_sum | -| Number of buffer coalesced write cycles issued to TC. Sum over TA | -| instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_TD_BUSY_sum | -| TD is processing or waiting for data. Perf_Windowing not supported| -| for this counter. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_TC_STALL_sum | -| TD is stalled waiting for TC data. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_LOAD_WAVEFRONT_sum | -| Count the wavefronts with opcode = load, include atomics and store| -| . Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_ATOMIC_WAVEFRONT_sum | -| Count the wavefronts with opcode = atomic. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_STORE_WAVEFRONT_sum | -| Count the wavefronts with opcode = store. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_COALESCABLE_WAVEFRONT_sum | -| Count wavefronts that TA finds coalescable. Sum over TD instances.| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_SPI_STALL_sum | -| TD is stalled SPI vinit, sum of TCP instances | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN1_sum | -| TCP interface clocks are turned on. Not Windowed. Sum over TCP ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN2_sum | -| TCP core clocks are turned on. Not Windowed. Sum over TCP instance| -| s. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TD_TCP_STALL_CYCLES_sum | -| TD stalls TCP. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES_sum | -| TCR stalls TCP_TCR_req interface. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on a read. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on a write. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on an atomic. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_VOLATILE_sum | -| Total number of L1 volatile pixels/buffers from TA. Sum over TCP i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ACCESSES_sum | -| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| -| READ+TCP_PERF_SEL_TOTAL_NONREAD. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_READ_sum | -| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| -| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| -| L_TOTAL_MISS_EVICT_READ. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITE_sum | -| Total number of local write pixels/buffers from TA. Equals TCP_PER| -| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE. S| -| um over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITH_RET_sum | -| Total number of atomic with return pixels/buffers from TA. Sum ove| -| r TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET_sum | -| Total number of atomic without return pixels/buffers from TA Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES_sum | -| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| -| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| -| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. Sum over TCP i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_REQUEST_sum | -| Total CLIENT_UTCL1 NORMAL requests Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_MISS_sum | -| Total utcl1 translation misses Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_HIT_sum | -| Total utcl1 translation hits Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_PERMISSION_MISS_sum | -| Total utcl1 permission misses Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_CACHE_ACCESSES_sum | -| Count of total cache line (tag) accesses (includes hits and misses| -| ). Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_LATENCY_sum | -| Total TCP wave latency (from first clock of wave entering to first| -| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| -| atency Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TA_TCP_STATE_READ_sum | -| Number of state reads Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_LATENCY_sum | -| Total TCP->TCC request latency for reads and atomics with return. | -| Not Windowed. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_LATENCY_sum | -| Total TCP->TCC request latency for writes and atomics without retu| -| rn. Not Windowed. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_sum | -| Total read requests from TCP to all TCCs Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_sum | -| Total write requests from TCP to all TCCs Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ_sum | -| Total atomic with return requests from TCP to all TCCs Sum over TC| -| P instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum | -| Total atomic without return requests from TCP to all TCCs Sum over| -| TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_READ_REQ_sum | -| Total read requests with NC mtype from this TCP to all TCCs Sum ov| -| er TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_WRITE_REQ_sum | -| Total write requests with NC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_ATOMIC_REQ_sum | -| Total atomic requests with NC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_READ_REQ_sum | -| Total read requests with UC mtype from this TCP to all TCCs Sum ov| -| er TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_WRITE_REQ_sum | -| Total write requests with UC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_ATOMIC_REQ_sum | -| Total atomic requests with UC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_READ_REQ_sum | -| Total write requests with CC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_WRITE_REQ_sum | -| Total write requests with CC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_ATOMIC_REQ_sum | -| Total atomic requests with CC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_READ_REQ_sum | -| Total write requests with RW mtype from this TCP to all TCCs. Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_WRITE_REQ_sum | -| Total write requests with RW mtype from this TCP to all TCCs. Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_ATOMIC_REQ_sum | -| Total atomic requests with RW mtype from this TCP to all TCCs. Sum| -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_PENDING_STALL_CYCLES_sum | -| Stall due to data pending from L2. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES_PERCENT | -| Percentage of time TCP is stalled by TCR. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCA_CYCLE_sum | -| Number of cycles. Sum over all TCA instances | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCA_BUSY_sum | -| Number of cycles we have a request pending. Sum over all TCA insta| -| nces. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY_avr | -| TCC_BUSY avr over all memory channels. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRREQ_STALL_max | -| Number of cycles a write request was stalled. Max over TCC instanc| -| es. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_CYCLE_sum | -| Number of cycles. Not windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY_sum | -| Number of cycles we have a request pending. Not windowable. Sum ov| -| er TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_REQ_sum | -| Number of requests of all types. This is measured at the tag block| -| . This may be more than the number of requests arriving at the TCC| -| , but it is a good indication of the total amount of work that nee| -| ds to be performed. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_STREAMING_REQ_sum | -| Number of streaming requests. This is measured at the tag block. S| -| um over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NC_REQ_sum | -| The number of noncoherently cached requests. This is measured at t| -| he tag block. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_UC_REQ_sum | -| The number of uncached requests. This is measured at the tag block| -| . Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_CC_REQ_sum | -| The number of coherently cached requests. This is measured at the | -| tag block. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_RW_REQ_sum | -| The number of RW requests. This is measured at the tag block. Sum | -| over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_sum | -| Number of probe requests. Not windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_ALL_sum | -| Number of external probe requests with with EA_TCC_preq_all== 1. N| -| ot windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_READ_sum | -| Number of read requests. Compressed reads are included in this, bu| -| t metadata reads are not included. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITE_sum | -| Number of write requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ATOMIC_sum | -| Number of atomic requests of all types. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_HIT_sum | -| Number of cache hits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_MISS_sum | -| Number of cache misses. UC reads count as misses. Sum over TCC ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITEBACK_sum | -| Number of lines written back to main memory. This includes writeba| -| cks of dirty lines and uncached write/atomic requests. Sum over TC| -| C instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_sum | -| Number of transactions (either 32-byte or 64-byte) going over the | -| TC_EA_wrreq interface. Atomics may travel over the same interface | -| and are generally classified as write requests. This does not incl| -| ude probe commands. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_64B_sum | -| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| -| er the TC_EA_wrreq interface. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WR_UNCACHED_32B_sum | -| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| -| e due to uncached traffic. Note that CC mtypes can produce uncache| -| d requests, and those are included in this. A 64-byte request will| -| be counted as 2. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_STALL_sum | -| Number of cycles a write request was stalled. Sum over TCC instanc| -| es. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of IO credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of GMI credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of DRAM credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL_sum | -| Number of cycles the TCC could not send a EA write request because| -| it already reached its maximum number of pending EA write request| -| s. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_LEVEL_sum | -| The sum of the number of EA write requests in flight. This is prim| -| arily meant for measure average EA write latency. Average write la| -| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. Sum ove| -| r TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_LEVEL_sum | -| The sum of the number of TCC/EA read requests in flight. This is p| -| rimarily meant for measure average EA read latency. Average read l| -| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. Sum ov| -| er TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_sum | -| Number of transactions going over the TC_EA_wrreq interface that a| -| re actually atomic requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_LEVEL_sum | -| The sum of the number of EA atomics in flight. This is primarily m| -| eant for measure average EA atomic latency. Average atomic latency| -| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| -| . Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_sum | -| Number of TCC/EA read requests (either 32-byte or 64-byte) Sum ove| -| r TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_32B_sum | -| Number of 32-byte TCC/EA read requests Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RD_UNCACHED_32B_sum | -| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| -| equest will be counted as 2 Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of IO credits. Stalls occur regardless of whether a re| -| ad needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of GMI credits. Stalls occur regardless of whether a r| -| ead needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of DRAM credits. Stalls occur regardless of whether a | -| read needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL_sum | -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL_PERCENT | -| Percentage of time the TCC tag lookup pipeline is stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_WRITEBACK_sum | -| Number of writebacks due to requests that are not writeback reques| -| ts. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK_sum | -| Number of writebacks due to all TC_OP writeback requests. Sum over| -| TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_EVICT_sum | -| Number of evictions due to requests that are not invalidate or pro| -| be requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_INV_EVICT_sum | -| Number of evictions due to all TC_OP invalidate requests. Sum over| -| TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_sum | -| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| -| d for DRAM (MC). Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_sum | -| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| -| ed for DRAM (MC). Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FETCH_SIZE | -| The total kilobytes fetched from the video memory. This is measure| -| d with all extra fetches and any cache or memory effects taken int| -| o account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WRITE_SIZE | -| The total kilobytes written to the video memory. This is measured | -| with all extra fetches and any cache or memory effects taken into | -| account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_16_OPS | -| The number of 16 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_32_OPS | -| The number of 32 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_64_OPS | -| The number of 64 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ACTIVE_CYCLES | -| Active Cycles | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ELAPSED_CYCLES | -| Elapsed Cycles | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ACTIVE_WAVES | -| Active Waves | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::BANDWIDTH_EA | -| Memory Bandwidth measured at the TCC_EA interface. In units of byt| -| es/cycle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::OccupancyPercent | -| GPU occupancy as % of maximum. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MfmaUtil | -| The percentage of kernel's duration, the MFMA unit was busy execut| -| ing instructions | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_avr | -| TA block is busy. Average over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_max | -| TA block is busy. Max over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_min | -| TA block is busy. Min over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WRITE_WAVEFRONTS_sum | -| Number of flat opcode writes processed by the TA. Sum over TA inst| -| ances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_sum | -| Total number of TCP stalls TA data interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_max | -| Maximum number of TCP stalls TA data interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WRITE_REQ_32B | -| The total number of 32-byte effective memory writes. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VFetchInsts | -| The average number of vector fetch instructions from the video mem| -| ory executed per work-item (affected by flow control). Excludes FL| -| AT instructions that fetch from video memory. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VWriteInsts | -| The average number of vector write instructions to the video memor| -| y executed per work-item (affected by flow control). Excludes FLAT| -| instructions that write to video memory. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FlatVMemInsts | -| The average number of FLAT instructions that read from or write to| -| the video memory executed per work item (affected by flow control| -| ). Includes FLAT instructions that read from or write to scratch. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::LDSInsts | -| The average number of LDS read or LDS write instructions executed | -| per work item (affected by flow control). Excludes FLAT instructi| -| ons that read from or write to LDS. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FlatLDSInsts | -| The average number of FLAT instructions that read or write to LDS | -| executed per work item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUUtilization | -| The percentage of active vector ALU threads in a wave. A lower num| -| ber can mean either more thread divergence in a wave or that the w| -| ork-group size is not a multiple of 64. Value range: 0% (bad), 100| -| % (ideal - no thread divergence). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUBusy | -| The percentage of GPUTime vector ALU instructions are processed. V| -| alue range: 0% (bad) to 100% (optimal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SALUBusy | -| The percentage of GPUTime scalar ALU instructions are processed. V| -| alue range: 0% (bad) to 100% (optimal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FetchSize | -| The total kilobytes fetched from the video memory. This is measure| -| d with all extra fetches and any cache or memory effects taken int| -| o account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WriteSize | -| The total kilobytes written to the video memory. This is measured | -| with all extra fetches and any cache or memory effects taken into | -| account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemWrites32B | -| The total number of effective 32B write transactions to the memory| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::L2CacheHit | -| The percentage of fetch, write, atomic, and other instructions tha| -| t hit the data in L2 cache. Value range: 0% (no hit) to 100% (opti| -| mal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemUnitStalled | -| The percentage of GPUTime the memory unit is stalled. Try reducing| -| the number or size of fetches and writes if possible. Value range| -| : 0% (optimal) to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WriteUnitStalled | -| The percentage of GPUTime the Write unit is stalled. Value range: | -| 0% to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::LDSBankConflict | -| The percentage of GPUTime LDS is stalled by bank conflicts. Value | -| range: 0% (optimal) to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GPUBusy | -| The percentage of time GPU was busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::Wavefronts | -| Total wavefronts. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUInsts | -| The average number of vector ALU instructions executed per work-it| -| em (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SALUInsts | -| The average number of scalar ALU instructions executed per work-it| -| em (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SFetchInsts | -| The average number of scalar fetch instructions from the video mem| -| ory executed per work-item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GDSInsts | -| The average number of GDS read or GDS write instructions executed | -| per work item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemUnitBusy | -| The percentage of GPUTime the memory unit is active. The result in| -| cludes the stall time (MemUnitStalled). This is measured with all | -| extra fetches and writes and any cache or memory effects taken int| -| o account. Value range: 0% to 100% (fetch-bound). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ALUStalledByLDS | -| The percentage of GPUTime ALU units are stalled by the LDS input q| -| ueue being full or the output queue being not ready. If there are | -| LDS bank conflicts, reduce them. Otherwise, try reducing the numbe| -| r of LDS accesses if possible. Value range: 0% (optimal) to 100% (| -| bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | -=============================================================================== - Native Events in Component: rocm_smi -=============================================================================== -| rocm_smi:::NUMDevices | -| Number of Devices which have monitors, accessible by rocm_smi. | --------------------------------------------------------------------------------- -| rocm_smi:::rsmi_version | -| Version of RSMI lib; 0x0000MMMMmmmmpppp Major, Minor, Patch. | --------------------------------------------------------------------------------- -| rocm_smi:::driver_version_str | -| Returns char* to z-terminated driver version string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::device_brand:device=0 | -| Returns char* to z-terminated brand string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::busy_percent:device=0 | -| Percentage of time the device was busy doing any processing. | --------------------------------------------------------------------------------- -| rocm_smi:::drm_render_minor:device=0 | -| DRM Minor Number associated with this device. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=UMC | -| Correctable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=UMC | -| Uncorrectable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=SDMA | -| Correctable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=SDMA | -| Uncorrectable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=GFX | -| Correctable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=GFX | -| Uncorrectable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=MMHUB | -| Correctable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=MMHUB | -| Uncorrectable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=PCIE_BIF | -| Correctable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=PCIE_BIF | -| Uncorrectable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=HDP | -| Correctable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=HDP | -| Uncorrectable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_enabled_get:device=0 | -| Bit mask of GPU blocks with ecc error counting enabled. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=MEC | -| Firmware Version Block MEC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=MEC2 | -| Firmware Version Block MEC2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=RLC | -| Firmware Version Block RLC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SDMA | -| Firmware Version Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SDMA2 | -| Firmware Version Block SDMA2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SMC | -| Firmware Version Block SMC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SOS | -| Firmware Version Block SOS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=RAS | -| Firmware Version Block RAS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=XGMI | -| Firmware Version Block XGMI. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=VCN | -| Firmware Version Block VCN. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=0 | -| Returns System frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=1 | -| Returns System frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=2 | -| Returns System frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:idx=0 | -| Returns DataFabric frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=0 | -| Returns SOC frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=1 | -| Returns SOC frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=2 | -| Returns SOC frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=3 | -| Returns SOC frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=4 | -| Returns SOC frequency value for supported_table[4]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=0 | -| Returns Memory frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=1 | -| Returns Memory frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=2 | -| Returns Memory frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=3 | -| Returns Memory frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:mask | -| Write Only. Sets bit mask, 1's for System frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:mask | -| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| -| upport table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:mask | -| Write Only. Sets bit mask, 1's for SOC frequency value in support | -| table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:mask | -| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::device_id:device=0 | -| Vendor supplied device id number. May be shared by same model devi| -| ces; see pci_id for a unique identifier. | --------------------------------------------------------------------------------- -| rocm_smi:::memory_busy_percent:device=0 | -| Percentage_of time any device memory is being used. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VRAM:device=0 | -| Total VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VIS_VRAM:device=0 | -| Total Visible VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_GTT:device=0 | -| Total Visible GTT (Graphics Translation Table) memory, aka GART me| -| mory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VRAM:device=0 | -| VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VIS_VRAM:device=0 | -| Visible VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_GTT:device=0 | -| (Graphic Translation Table) memory in use (aka GART memory). | --------------------------------------------------------------------------------- -| rocm_smi:::device_name:device=0 | -| Returns char* to z-terminated name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::pci_id:device=0 | -| BDF (Bus/Device/Function) ID, unique per device. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_replay_counter:device=0 | -| Sum of the number of NAK's received by the GPU and the NAK's gener| -| ated by the GPU. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_sent:device=0 | -| Throughput on PCIe traffic, bytes/second sent. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_received:device=0 | -| Throughput on PCIe traffic, bytes/second received. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_max_packet_size:device=0 | -| Maximum PCIe packet size. | --------------------------------------------------------------------------------- -| rocm_smi:::perf_level:device=0 | -| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| -| t [0-8], see ROCm_SMI_Manual for details. | --------------------------------------------------------------------------------- -| rocm_smi:::power_average:device=0:sensor=0 | -| Current Average Power consumption in microwatts. Requires root pri| -| vileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap:device=0:sensor=0 | -| Power cap in microwatts. Read/Write. Between min/max (see power_ca| -| p_range_min/max). May require root privileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_min:device=0:sensor=0 | -| Power cap Minimum settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_max:device=0:sensor=0 | -| Power cap Maximim settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::device_serial_number:device=0 | -| Returns char* to z-terminated serial number string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_id:device=0 | -| Subsystem id number. | --------------------------------------------------------------------------------- -| rocm_smi:::device_subsystem_name:device=0 | -| Returns char* to z-terminated subsystem name string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_vendor_id:device=0 | -| System vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=0 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=1 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=2 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=0 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=1 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=2 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=0 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=1 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=2 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=0 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=1 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=2 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::unique_id:device=0 | -| Unique id for device. | --------------------------------------------------------------------------------- -| rocm_smi:::vbios_version:device=0 | -| Returns char* to z-terminated vbios version string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_id:device=0 | -| Vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_name:device=0 | -| Returns char* to z-terminated vendor name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::device_brand:device=1 | -| Returns char* to z-terminated brand string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::busy_percent:device=1 | -| Percentage of time the device was busy doing any processing. | --------------------------------------------------------------------------------- -| rocm_smi:::drm_render_minor:device=1 | -| DRM Minor Number associated with this device. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=UMC | -| Correctable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=UMC | -| Uncorrectable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=SDMA | -| Correctable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=SDMA | -| Uncorrectable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=GFX | -| Correctable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=GFX | -| Uncorrectable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=MMHUB | -| Correctable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=MMHUB | -| Uncorrectable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=PCIE_BIF | -| Correctable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=PCIE_BIF | -| Uncorrectable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=HDP | -| Correctable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=HDP | -| Uncorrectable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_enabled_get:device=1 | -| Bit mask of GPU blocks with ecc error counting enabled. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=MEC | -| Firmware Version Block MEC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=MEC2 | -| Firmware Version Block MEC2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=RLC | -| Firmware Version Block RLC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SDMA | -| Firmware Version Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SDMA2 | -| Firmware Version Block SDMA2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SMC | -| Firmware Version Block SMC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SOS | -| Firmware Version Block SOS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=RAS | -| Firmware Version Block RAS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=XGMI | -| Firmware Version Block XGMI. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=VCN | -| Firmware Version Block VCN. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=0 | -| Returns System frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=1 | -| Returns System frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=2 | -| Returns System frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:idx=0 | -| Returns DataFabric frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=0 | -| Returns SOC frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=1 | -| Returns SOC frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=2 | -| Returns SOC frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=3 | -| Returns SOC frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=4 | -| Returns SOC frequency value for supported_table[4]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=0 | -| Returns Memory frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=1 | -| Returns Memory frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=2 | -| Returns Memory frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=3 | -| Returns Memory frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:mask | -| Write Only. Sets bit mask, 1's for System frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:mask | -| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| -| upport table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:mask | -| Write Only. Sets bit mask, 1's for SOC frequency value in support | -| table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:mask | -| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::device_id:device=1 | -| Vendor supplied device id number. May be shared by same model devi| -| ces; see pci_id for a unique identifier. | --------------------------------------------------------------------------------- -| rocm_smi:::memory_busy_percent:device=1 | -| Percentage_of time any device memory is being used. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VRAM:device=1 | -| Total VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VIS_VRAM:device=1 | -| Total Visible VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_GTT:device=1 | -| Total Visible GTT (Graphics Translation Table) memory, aka GART me| -| mory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VRAM:device=1 | -| VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VIS_VRAM:device=1 | -| Visible VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_GTT:device=1 | -| (Graphic Translation Table) memory in use (aka GART memory). | --------------------------------------------------------------------------------- -| rocm_smi:::device_name:device=1 | -| Returns char* to z-terminated name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::pci_id:device=1 | -| BDF (Bus/Device/Function) ID, unique per device. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_replay_counter:device=1 | -| Sum of the number of NAK's received by the GPU and the NAK's gener| -| ated by the GPU. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_sent:device=1 | -| Throughput on PCIe traffic, bytes/second sent. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_received:device=1 | -| Throughput on PCIe traffic, bytes/second received. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_max_packet_size:device=1 | -| Maximum PCIe packet size. | --------------------------------------------------------------------------------- -| rocm_smi:::perf_level:device=1 | -| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| -| t [0-8], see ROCm_SMI_Manual for details. | --------------------------------------------------------------------------------- -| rocm_smi:::power_average:device=1:sensor=0 | -| Current Average Power consumption in microwatts. Requires root pri| -| vileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap:device=1:sensor=0 | -| Power cap in microwatts. Read/Write. Between min/max (see power_ca| -| p_range_min/max). May require root privileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_min:device=1:sensor=0 | -| Power cap Minimum settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_max:device=1:sensor=0 | -| Power cap Maximim settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::device_serial_number:device=1 | -| Returns char* to z-terminated serial number string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_id:device=1 | -| Subsystem id number. | --------------------------------------------------------------------------------- -| rocm_smi:::device_subsystem_name:device=1 | -| Returns char* to z-terminated subsystem name string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_vendor_id:device=1 | -| System vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=0 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=1 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=2 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=0 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=1 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=2 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=0 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=1 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=2 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=0 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=1 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=2 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::unique_id:device=1 | -| Unique id for device. | --------------------------------------------------------------------------------- -| rocm_smi:::vbios_version:device=1 | -| Returns char* to z-terminated vbios version string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_id:device=1 | -| Vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_name:device=1 | -| Returns char* to z-terminated vendor name string; do not free(). | -=============================================================================== - Native Events in Component: amd_smi -=============================================================================== -| amd_smi:::temp_current:device=0:sensor=0 | -| Device 0 temp_current for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=0 | -| Device 0 temp_max for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=0 | -| Device 0 temp_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=0 | -| Device 0 temp_max_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=0 | -| Device 0 temp_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=0 | -| Device 0 temp_critical for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=0 | -| Device 0 temp_critical_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=0 | -| Device 0 temp_emergency for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=0 | -| Device 0 temp_emergency_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=0 | -| Device 0 temp_crit_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=0 | -| Device 0 temp_crit_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=0 | -| Device 0 temp_offset for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=0 | -| Device 0 temp_lowest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=0 | -| Device 0 temp_highest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=1 | -| Device 0 temp_current for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=1 | -| Device 0 temp_max for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=1 | -| Device 0 temp_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=1 | -| Device 0 temp_max_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=1 | -| Device 0 temp_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=1 | -| Device 0 temp_critical for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=1 | -| Device 0 temp_critical_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=1 | -| Device 0 temp_emergency for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=1 | -| Device 0 temp_emergency_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=1 | -| Device 0 temp_crit_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=1 | -| Device 0 temp_crit_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=1 | -| Device 0 temp_offset for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=1 | -| Device 0 temp_lowest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=1 | -| Device 0 temp_highest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=2 | -| Device 0 temp_current for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=2 | -| Device 0 temp_max for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=2 | -| Device 0 temp_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=2 | -| Device 0 temp_max_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=2 | -| Device 0 temp_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=2 | -| Device 0 temp_critical for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=2 | -| Device 0 temp_critical_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=2 | -| Device 0 temp_emergency for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=2 | -| Device 0 temp_emergency_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=2 | -| Device 0 temp_crit_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=2 | -| Device 0 temp_crit_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=2 | -| Device 0 temp_offset for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=2 | -| Device 0 temp_lowest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=2 | -| Device 0 temp_highest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=7 | -| Device 0 temp_current for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=7 | -| Device 0 temp_max for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=7 | -| Device 0 temp_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=7 | -| Device 0 temp_max_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=7 | -| Device 0 temp_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=7 | -| Device 0 temp_critical for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=7 | -| Device 0 temp_critical_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=7 | -| Device 0 temp_emergency for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=7 | -| Device 0 temp_emergency_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=7 | -| Device 0 temp_crit_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=7 | -| Device 0 temp_crit_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=7 | -| Device 0 temp_offset for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=7 | -| Device 0 temp_lowest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=7 | -| Device 0 temp_highest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=0 | -| Device 1 temp_current for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=0 | -| Device 1 temp_max for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=0 | -| Device 1 temp_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=0 | -| Device 1 temp_max_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=0 | -| Device 1 temp_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=0 | -| Device 1 temp_critical for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=0 | -| Device 1 temp_critical_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=0 | -| Device 1 temp_emergency for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=0 | -| Device 1 temp_emergency_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=0 | -| Device 1 temp_crit_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=0 | -| Device 1 temp_crit_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=0 | -| Device 1 temp_offset for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=0 | -| Device 1 temp_lowest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=0 | -| Device 1 temp_highest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=1 | -| Device 1 temp_current for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=1 | -| Device 1 temp_max for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=1 | -| Device 1 temp_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=1 | -| Device 1 temp_max_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=1 | -| Device 1 temp_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=1 | -| Device 1 temp_critical for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=1 | -| Device 1 temp_critical_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=1 | -| Device 1 temp_emergency for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=1 | -| Device 1 temp_emergency_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=1 | -| Device 1 temp_crit_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=1 | -| Device 1 temp_crit_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=1 | -| Device 1 temp_offset for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=1 | -| Device 1 temp_lowest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=1 | -| Device 1 temp_highest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=2 | -| Device 1 temp_current for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=2 | -| Device 1 temp_max for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=2 | -| Device 1 temp_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=2 | -| Device 1 temp_max_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=2 | -| Device 1 temp_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=2 | -| Device 1 temp_critical for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=2 | -| Device 1 temp_critical_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=2 | -| Device 1 temp_emergency for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=2 | -| Device 1 temp_emergency_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=2 | -| Device 1 temp_crit_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=2 | -| Device 1 temp_crit_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=2 | -| Device 1 temp_offset for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=2 | -| Device 1 temp_lowest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=2 | -| Device 1 temp_highest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=7 | -| Device 1 temp_current for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=7 | -| Device 1 temp_max for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=7 | -| Device 1 temp_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=7 | -| Device 1 temp_max_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=7 | -| Device 1 temp_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=7 | -| Device 1 temp_critical for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=7 | -| Device 1 temp_critical_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=7 | -| Device 1 temp_emergency for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=7 | -| Device 1 temp_emergency_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=7 | -| Device 1 temp_crit_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=7 | -| Device 1 temp_crit_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=7 | -| Device 1 temp_offset for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=7 | -| Device 1 temp_lowest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=7 | -| Device 1 temp_highest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::fan_rpms:device=0:sensor=0 | -| Device 0 fan speed in RPM | --------------------------------------------------------------------------------- -| amd_smi:::fan_speed:device=0:sensor=0 | -| Device 0 fan speed (0-255 relative) | --------------------------------------------------------------------------------- -| amd_smi:::fan_rpms:device=1:sensor=0 | -| Device 1 fan speed in RPM | --------------------------------------------------------------------------------- -| amd_smi:::fan_speed:device=1:sensor=0 | -| Device 1 fan speed (0-255 relative) | --------------------------------------------------------------------------------- -| amd_smi:::mem_total_VRAM:device=0 | -| Device 0 total VRAM memory (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_usage_VRAM:device=0 | -| Device 0 VRAM memory usage (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_total_VRAM:device=1 | -| Device 1 total VRAM memory (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_usage_VRAM:device=1 | -| Device 1 VRAM memory usage (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::power_average:device=0 | -| Device 0 average power consumption (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap:device=0 | -| Device 0 current power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_min:device=0 | -| Device 0 minimum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_max:device=0 | -| Device 0 maximum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_average:device=1 | -| Device 1 average power consumption (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap:device=1 | -| Device 1 current power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_min:device=1 | -| Device 1 minimum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_max:device=1 | -| Device 1 maximum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_sent:device=0 | -| Device 0 PCIe bytes sent per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_received:device=0 | -| Device 0 PCIe bytes received per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_max_packet:device=0 | -| Device 0 PCIe max packet size (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::pci_replay_counter:device=0 | -| Device 0 PCIe replay (NAK) counter | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_sent:device=1 | -| Device 1 PCIe bytes sent per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_received:device=1 | -| Device 1 PCIe bytes received per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_max_packet:device=1 | -| Device 1 PCIe max packet size (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::pci_replay_counter:device=1 | -| Device 1 PCIe replay (NAK) counter | --------------------------------------------------------------------------------- - -Total events reported: 732 diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index fc9327545..df21f642a 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -79,7 +79,6 @@ all: amdsmi_example amdsmi_basics gemm amdsmi_example: amdsmi_example.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - # Pass CXXFLAGS for linking if they contain necessary flags like -std=c++17 that hipcc might need for consistency $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_example.o $(LDFLAGS_AMDSMI) # Assuming amdsmi_basics.c has been renamed to amdsmi_basics.cpp diff --git a/src/components/amd_smi/tests/amdsmi_example.cpp b/src/components/amd_smi/tests/amdsmi_example.cpp index 9490f3fc9..2380c54cf 100644 --- a/src/components/amd_smi/tests/amdsmi_example.cpp +++ b/src/components/amd_smi/tests/amdsmi_example.cpp @@ -39,8 +39,6 @@ int main(int argc, char **argv) { // --- Step 1: Initialize the PAPI library --- retval = PAPI_library_init(PAPI_VER_CURRENT); - printf("AAAAAAAAAAAAAAAAAAAA\n"); - printf("%d\n", retval); if (retval != PAPI_VER_CURRENT && retval > 0) { // PAPI_VER_CURRENT is the version, > 0 are error codes fprintf(stderr, "PAPI library version mismatch! Expected %d, got %d\n", @@ -48,16 +46,7 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } - printf("BBBBBBBBBBBBBBBBBBBB\n"); - - - printf("%d\n", retval); - - - // For other errors from PAPI_library_init (negative values) - handle_papi_error(retval, "PAPI_library_init", EventSet, papi_is_initialized); - papi_is_initialized = 1; - printf("PAPI library initialized successfully.\n"); + // --- Step 2: Create an EventSet --- retval = PAPI_create_eventset(&EventSet); @@ -71,7 +60,7 @@ int main(int argc, char **argv) { // e.g., "rocm_smi:::power_average:device=0" (Average GPU Power) // e.g., "rocm_smi:::temp_rx_soc:device=0" (GPU Temperature) // Check availability with `papi_avail` or `papi_native_avail` utilities. - const char *eventName = "PAPI_TOT_INS"; // Example: Total Instructions Executed + const char *eventName = "amd_smi:::temp_current:device=0:sensor=0"; // Example: Total Instructions Executed printf("Attempting to add event: %s\n", eventName); retval = PAPI_add_named_event(EventSet, eventName); diff --git a/src/components/amd_smi/tests/gemm.cpp b/src/components/amd_smi/tests/gemm.cpp index fdfa8a080..ea9a9e29d 100644 --- a/src/components/amd_smi/tests/gemm.cpp +++ b/src/components/amd_smi/tests/gemm.cpp @@ -17,6 +17,23 @@ // Number of iterations to run in each stream #define ITERATIONS_PER_STREAM 1 + +#define HIP_CHECK(cmd) do { \ + hipError_t e = cmd; \ + if (e != hipSuccess) { \ + fprintf(stderr, "Failed: HIP error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + exit(EXIT_FAILURE); \ + } \ +} while(0) + +// For cleanup functions, you might prefer not to exit immediately +#define HIP_CHECK_CLEANUP(cmd) do { \ + hipError_t e = cmd; \ + if (e != hipSuccess) { \ + fprintf(stderr, "Warning: HIP cleanup error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + } \ +} while(0) + // Global flag to signal the monitor thread to stop. volatile int stop_monitor = 0; @@ -184,9 +201,9 @@ int main(int argc, char *argv[]) { } /* Set HIP device properties to optimize for MI300 */ - hipSetDevice(1); + HIP_CHECK(hipSetDevice(1)); hipDeviceProp_t deviceProp; - hipGetDeviceProperties(&deviceProp, 1); + HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); printf("Device Name: %s\n", deviceProp.name); printf("Compute Units: %d\n", deviceProp.multiProcessorCount); printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); @@ -197,12 +214,15 @@ int main(int argc, char *argv[]) { size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); double *h_A, *h_B, *h_C; - hipHostMalloc(&h_A, size_A, hipHostMallocDefault); - hipHostMalloc(&h_B, size_B, hipHostMallocDefault); - hipHostMalloc(&h_C, size_C, hipHostMallocDefault); + HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); + HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); + HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); if (!h_A || !h_B || !h_C) { fprintf(stderr, "Host memory allocation failed.\n"); + if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); + if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); + if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); return -1; } @@ -307,7 +327,7 @@ int main(int argc, char *argv[]) { /* Wait for initial copies to complete */ for (int s = 0; s < NUM_STREAMS; s++) { - hipStreamSynchronize(streams[s]); + HIP_CHECK(hipStreamSynchronize(streams[s])); } /* GEMM parameters */ @@ -328,9 +348,9 @@ int main(int argc, char *argv[]) { M_DIM, N_DIM, K_DIM, alpha, beta); // Record event but don't synchronize. - hipEventRecord(events[s], streams[s]); + HIP_CHECK(hipEventRecord(events[s], streams[s])); - hipStreamSynchronize(streams[s]); + HIP_CHECK(hipStreamSynchronize(streams[s])); usleep(3000000); } } @@ -349,7 +369,7 @@ int main(int argc, char *argv[]) { return -1; }*/ - hipStreamSynchronize(streams[0]); + //hipStreamSynchronize(streams[0]); /* Signal the monitor thread to stop and wait for it to finish. */ stop_monitor = 1; @@ -359,16 +379,16 @@ int main(int argc, char *argv[]) { fclose(csvFile); for (int s = 0; s < NUM_STREAMS; s++) { - hipEventDestroy(events[s]); - hipStreamDestroy(streams[s]); - hipFree(d_A[s]); - hipFree(d_B[s]); - hipFree(d_C[s]); + HIP_CHECK_CLEANUP(hipEventDestroy(events[s])); + HIP_CHECK_CLEANUP(hipStreamDestroy(streams[s])); + if (d_A[s]) HIP_CHECK_CLEANUP(hipFree(d_A[s])); // Check if pointer is non-null before freeing + if (d_B[s]) HIP_CHECK_CLEANUP(hipFree(d_B[s])); + if (d_C[s]) HIP_CHECK_CLEANUP(hipFree(d_C[s])); } - hipHostFree(h_A); - hipHostFree(h_B); - hipHostFree(h_C); + if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); // Check if pointer is non-null + if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); + if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); statusFlag = PAPI_stop(EventSet, NULL); if (statusFlag != PAPI_OK) { diff --git a/src/components/amd_smi/tests/test.csv b/src/components/amd_smi/tests/test.csv new file mode 100644 index 000000000..bc29530a2 --- /dev/null +++ b/src/components/amd_smi/tests/test.csv @@ -0,0 +1,13 @@ +timestamp,amd_smi:::temp_current:device=0:sensor=0,amd_smi:::temp_current:device=0:sensor=1,amd_smi:::temp_current:device=0:sensor=2,amd_smi:::temp_current:device=0:sensor=3,amd_smi:::power_average:device=0,power +0.001354,32,38,52,52,43,39 +0.682139,34,47,57,57,94,39 +1.217049,35,48,56,56,124,39 +1.750420,35,49,57,57,146,39 +2.293827,36,49,57,57,162,39 +2.837847,37,50,58,58,173,39 +3.370860,37,49,59,59,180,39 +3.890901,36,42,54,54,153,39 +4.447154,35,41,53,53,120,39 +5.031043,36,41,53,53,96,39 +5.643027,35,41,53,53,79,39 +6.180223,35,41,53,53,69,39 From ecc1027d65d025bc7e217a1219c77ecec74bf8bf Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 13 May 2025 19:00:26 +0000 Subject: [PATCH 016/147] esmi error & bound check for functions --- src/components/amd_smi/amds.c | 278 ++++++++++++++++++++-------------- 1 file changed, 161 insertions(+), 117 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 232d67602..c43e0ba93 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -239,7 +239,7 @@ static int load_amdsmi_sym(void) { amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); /* Utilization / activity */ - amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); /* fallback for older name */ + amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); /* Power */ amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); @@ -421,7 +421,9 @@ int amds_init(void) { if (papi_errno != PAPI_OK) { return papi_errno; } - amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS); + + //AMDSMI_INIT_AMD_CPUS + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; @@ -928,45 +930,63 @@ static int init_event_table(void) { /* VRAM memory metrics */ for (int d = 0; d < gpu_count; ++d) { - // Total VRAM - snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); - native_event_t *ev_mem_tot = &ntv_table.events[idx]; - ev_mem_tot->id = idx; - ev_mem_tot->name = strdup(name_buf); - ev_mem_tot->descr = strdup(descr_buf); - ev_mem_tot->device = d; - ev_mem_tot->value = 0; - ev_mem_tot->mode = PAPI_MODE_READ; - ev_mem_tot->variant = AMDSMI_MEM_TYPE_VRAM; - ev_mem_tot->subvariant = 0; - ev_mem_tot->open_func = open_simple; - ev_mem_tot->close_func = close_simple; - ev_mem_tot->start_func = start_simple; - ev_mem_tot->stop_func = stop_simple; - ev_mem_tot->access_func = access_amdsmi_mem_total; - htable_insert(htable, ev_mem_tot->name, ev_mem_tot); - idx++; + uint64_t mem_dummy = 0; - // Used VRAM - snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); - native_event_t *ev_mem_use = &ntv_table.events[idx]; - ev_mem_use->id = idx; - ev_mem_use->name = strdup(name_buf); - ev_mem_use->descr = strdup(descr_buf); - ev_mem_use->device = d; - ev_mem_use->value = 0; - ev_mem_use->mode = PAPI_MODE_READ; - ev_mem_use->variant = AMDSMI_MEM_TYPE_VRAM; - ev_mem_use->subvariant = 0; - ev_mem_use->open_func = open_simple; - ev_mem_use->close_func = close_simple; - ev_mem_use->start_func = start_simple; - ev_mem_use->stop_func = stop_simple; - ev_mem_use->access_func = access_amdsmi_mem_usage; - htable_insert(htable, ev_mem_use->name, ev_mem_use); - idx++; + /* total VRAM bytes */ + if (amdsmi_get_total_memory_p(device_handles[d], + AMDSMI_MEM_TYPE_VRAM, + &mem_dummy) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "mem_total_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total VRAM memory (bytes)", d); + + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr= strdup(descr_buf); + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant= AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func= access_amdsmi_mem_total; + htable_insert(htable, ev->name, ev); + ++idx; + } + + /* used VRAM bytes */ + if (amdsmi_get_memory_usage_p(device_handles[d], + AMDSMI_MEM_TYPE_VRAM, + &mem_dummy) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "mem_usage_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM memory usage (bytes)", d); + + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr= strdup(descr_buf); + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant= AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func= access_amdsmi_mem_usage; + htable_insert(htable, ev->name, ev); + ++idx; + } } /* GPU power metrics: average power, power cap, and cap range */ @@ -1065,86 +1085,110 @@ static int init_event_table(void) { } /* PCIe throughput and replay counter metrics */ - for (int d = 0; d < gpu_count; ++d) { - // PCIe bytes sent - snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); - native_event_t *ev_pci_tx = &ntv_table.events[idx]; - ev_pci_tx->id = idx; - ev_pci_tx->name = strdup(name_buf); - ev_pci_tx->descr = strdup(descr_buf); - ev_pci_tx->device = d; - ev_pci_tx->value = 0; - ev_pci_tx->mode = PAPI_MODE_READ; - ev_pci_tx->variant = 0; // 0 for "sent" - ev_pci_tx->subvariant = 0; - ev_pci_tx->open_func = open_simple; - ev_pci_tx->close_func = close_simple; - ev_pci_tx->start_func = start_simple; - ev_pci_tx->stop_func = stop_simple; - ev_pci_tx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_tx->name, ev_pci_tx); - idx++; + for (int d = 0; d < gpu_count; ++d) { + uint64_t tx = 0, rx = 0, pkt = 0; - // PCIe bytes received - snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); - native_event_t *ev_pci_rx = &ntv_table.events[idx]; - ev_pci_rx->id = idx; - ev_pci_rx->name = strdup(name_buf); - ev_pci_rx->descr = strdup(descr_buf); - ev_pci_rx->device = d; - ev_pci_rx->value = 0; - ev_pci_rx->mode = PAPI_MODE_READ; - ev_pci_rx->variant = 1; // 1 for "received" - ev_pci_rx->subvariant = 0; - ev_pci_rx->open_func = open_simple; - ev_pci_rx->close_func = close_simple; - ev_pci_rx->start_func = start_simple; - ev_pci_rx->stop_func = stop_simple; - ev_pci_rx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_rx->name, ev_pci_rx); - idx++; + amdsmi_status_t st_thr = + amdsmi_get_gpu_pci_throughput_p(device_handles[d], + &tx, &rx, &pkt); - // PCIe max packet size - snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); - native_event_t *ev_pci_pkt = &ntv_table.events[idx]; - ev_pci_pkt->id = idx; - ev_pci_pkt->name = strdup(name_buf); - ev_pci_pkt->descr = strdup(descr_buf); - ev_pci_pkt->device = d; - ev_pci_pkt->value = 0; - ev_pci_pkt->mode = PAPI_MODE_READ; - ev_pci_pkt->variant = 2; // 2 for "max_packet" - ev_pci_pkt->subvariant = 0; - ev_pci_pkt->open_func = open_simple; - ev_pci_pkt->close_func = close_simple; - ev_pci_pkt->start_func = start_simple; - ev_pci_pkt->stop_func = stop_simple; - ev_pci_pkt->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pci_pkt->name, ev_pci_pkt); - idx++; + if (st_thr == AMDSMI_STATUS_SUCCESS) { + /* bytes sent per second */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_sent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes sent per second", d); + + native_event_t *ev_tx = &ntv_table.events[idx]; + ev_tx->id = idx; + ev_tx->name = strdup(name_buf); + ev_tx->descr= strdup(descr_buf); + ev_tx->device = d; + ev_tx->value = 0; + ev_tx->mode = PAPI_MODE_READ; + ev_tx->variant= 0; /* sent */ + ev_tx->subvariant = 0; + ev_tx->open_func = open_simple; + ev_tx->close_func = close_simple; + ev_tx->start_func = start_simple; + ev_tx->stop_func = stop_simple; + ev_tx->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_tx->name, ev_tx); + ++idx; + + /* bytes received per second */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_received:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes received per second", d); + + native_event_t *ev_rx = &ntv_table.events[idx]; + ev_rx->id = idx; + ev_rx->name = strdup(name_buf); + ev_rx->descr= strdup(descr_buf); + ev_rx->device = d; + ev_rx->value = 0; + ev_rx->mode = PAPI_MODE_READ; + ev_rx->variant= 1; /* received */ + ev_rx->subvariant = 0; + ev_rx->open_func = open_simple; + ev_rx->close_func = close_simple; + ev_rx->start_func = start_simple; + ev_rx->stop_func = stop_simple; + ev_rx->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_rx->name, ev_rx); + ++idx; + + /* max packet size */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_max_packet:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe max packet size (bytes)", d); + + native_event_t *ev_pkt = &ntv_table.events[idx]; + ev_pkt->id = idx; + ev_pkt->name = strdup(name_buf); + ev_pkt->descr= strdup(descr_buf); + ev_pkt->device = d; + ev_pkt->value = 0; + ev_pkt->mode = PAPI_MODE_READ; + ev_pkt->variant= 2; /* max pkt */ + ev_pkt->subvariant = 0; + ev_pkt->open_func = open_simple; + ev_pkt->close_func = close_simple; + ev_pkt->start_func = start_simple; + ev_pkt->stop_func = stop_simple; + ev_pkt->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_pkt->name, ev_pkt); + ++idx; + } - // PCIe replay counter (NAK counter) - snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); - native_event_t *ev_pci_replay = &ntv_table.events[idx]; - ev_pci_replay->id = idx; - ev_pci_replay->name = strdup(name_buf); - ev_pci_replay->descr = strdup(descr_buf); - ev_pci_replay->device = d; - ev_pci_replay->value = 0; - ev_pci_replay->mode = PAPI_MODE_READ; - ev_pci_replay->variant = 0; - ev_pci_replay->subvariant = 0; - ev_pci_replay->open_func = open_simple; - ev_pci_replay->close_func = close_simple; - ev_pci_replay->start_func = start_simple; - ev_pci_replay->stop_func = stop_simple; - ev_pci_replay->access_func = access_amdsmi_pci_replay_counter; - htable_insert(htable, ev_pci_replay->name, ev_pci_replay); - idx++; + uint64_t replay = 0; + if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], + &replay) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "pci_replay_counter:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe replay (NAK) counter", d); + + native_event_t *ev_rep = &ntv_table.events[idx]; + ev_rep->id = idx; + ev_rep->name = strdup(name_buf); + ev_rep->descr= strdup(descr_buf); + ev_rep->device = d; + ev_rep->value = 0; + ev_rep->mode = PAPI_MODE_READ; + ev_rep->variant= 0; + ev_rep->subvariant = 0; + ev_rep->open_func = open_simple; + ev_rep->close_func = close_simple; + ev_rep->start_func = start_simple; + ev_rep->stop_func = stop_simple; + ev_rep->access_func= access_amdsmi_pci_replay_counter; + htable_insert(htable, ev_rep->name, ev_rep); + ++idx; + } } /* Additional GPU metrics and system information */ From 45da1171c3abb1320a6ac9809baa4dd6db51bfdd Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 13 Jul 2025 23:33:29 +0000 Subject: [PATCH 017/147] test --- src/components/amd_smi/amds.c | 5553 ++++++++++++------------ src/components/amd_smi/htable.h | 832 ++-- src/components/amd_smi/linux-amd-smi.c | 686 +-- 3 files changed, 3600 insertions(+), 3471 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index c43e0ba93..a8971a78d 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,2712 +1,2841 @@ -#include -#include -#include -#include -#include - -#include "papi.h" -#include "papi_memory.h" -#include "amds.h" -#include "htable.h" - -#define AMDSMI_DISABLE_ESMI - -unsigned int _amd_smi_lock; - -typedef enum { - PAPI_MODE_READ = 1, - PAPI_MODE_WRITE, - PAPI_MODE_RDWR, -} rocs_access_mode_e; - - -/* Pointers to AMD SMI library functions (dynamically loaded) */ -static amdsmi_status_t (*amdsmi_init_p)(uint64_t); -static amdsmi_status_t (*amdsmi_shut_down_p)(void); -static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); -static amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); -static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); - -/* New AMD SMI function pointers */ -static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); -static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); -static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -//static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); -static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); -static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); -static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); - - -#ifndef AMDSMI_DISABLE_ESMI -/* CPU function pointers */ -static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); -static amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); -static amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); -static amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); -#endif - - -/* Global device list and count */ -static int32_t device_count = 0; -static amdsmi_processor_handle *device_handles = NULL; -static int32_t device_mask = 0; -static int32_t gpu_count = 0; -static int32_t cpu_count = 0; -static amdsmi_processor_handle **cpu_core_handles = NULL; -static uint32_t *cores_per_socket = NULL; - -static void *amds_dlp = NULL; -static void *htable = NULL; -static char error_string[PAPI_MAX_STR_LEN+1]; - -/* forward declarations for internal helpers */ -static int load_amdsmi_sym(void); -static int unload_amdsmi_sym(void); -static int init_device_table(void); -static int shutdown_device_table(void); -static int init_event_table(void); -static int shutdown_event_table(void); - -/* Event descriptor structure for native events */ -typedef struct native_event { - unsigned int id; - char *name; - char *descr; - int32_t device; /* device index or -1 if not applicable */ - uint64_t value; /* last read value or set value */ - uint32_t mode; /* access mode (read/write) */ - uint32_t variant; /* variant index (for metric type, etc.) */ - uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ - int (*open_func)(struct native_event *); /* optional open (reserve resources) */ - int (*close_func)(struct native_event *); /* optional close (release resources) */ - int (*start_func)(struct native_event *); /* optional start (begin counting) */ - int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ - int (*access_func)(int mode, void *arg); /* read or write the event value */ -} native_event_t; - -/* Table of all native events */ -typedef struct { - native_event_t *events; - int count; -} native_event_table_t; - -static native_event_table_t ntv_table; -static native_event_table_t *ntv_table_p = NULL; - -/* Locking device usage for contexts */ -static int -acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) -{ - int32_t mask_acq = 0; - for (int i = 0; i < num_events; ++i) { - int32_t dev_id = ntv_table_p->events[events_id[i]].device; - if (dev_id < 0) continue; - mask_acq |= (1 << dev_id); - } - if (mask_acq & device_mask) { - return PAPI_ECNFLCT; // conflict: device already in use - } - device_mask |= mask_acq; - *bitmask = mask_acq; - return PAPI_OK; -} - -static int -release_devices(int32_t *bitmask) -{ - int32_t mask_rel = *bitmask; - if ((mask_rel & device_mask) != mask_rel) { - return PAPI_EMISC; - } - device_mask ^= mask_rel; - *bitmask = 0; - return PAPI_OK; -} - -/* Prototypes for event access (read/write) functions */ -static int access_amdsmi_temp_metric(int mode, void *arg); -static int access_amdsmi_fan_speed(int mode, void *arg); -static int access_amdsmi_fan_rpms(int mode, void *arg); -static int access_amdsmi_mem_total(int mode, void *arg); -static int access_amdsmi_mem_usage(int mode, void *arg); -static int access_amdsmi_power_cap(int mode, void *arg); -static int access_amdsmi_power_cap_range(int mode, void *arg); -static int access_amdsmi_power_average(int mode, void *arg); -static int access_amdsmi_pci_throughput(int mode, void *arg); -static int access_amdsmi_pci_replay_counter(int mode, void *arg); -static int access_amdsmi_clk_freq(int mode, void *arg); -static int access_amdsmi_gpu_metrics(int mode, void *arg); -static int access_amdsmi_gpu_info(int mode, void *arg); -static int access_amdsmi_gpu_activity(int mode, void *arg); -static int access_amdsmi_fan_speed_max(int mode, void *arg); -static int access_amdsmi_pci_bandwidth(int mode, void *arg); -static int access_amdsmi_energy_count(int mode, void *arg); -static int access_amdsmi_power_profile_status(int mode, void *arg); - - -#ifndef AMDSMI_DISABLE_ESMI -static int access_amdsmi_cpu_socket_power(int mode, void *arg); -static int access_amdsmi_cpu_socket_energy(int mode, void *arg); -static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg); -static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg); -static int access_amdsmi_cpu_power_cap(int mode, void *arg); -static int access_amdsmi_cpu_core_energy(int mode, void *arg); -static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); -static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); -static int access_amdsmi_dimm_temp(int mode, void *arg); -static int access_amdsmi_dimm_power(int mode, void *arg); -static int access_amdsmi_dimm_range_refresh(int mode, void *arg); -static int access_amdsmi_threads_per_core(int mode, void *arg); -static int access_amdsmi_cpu_family(int mode, void *arg); -static int access_amdsmi_cpu_model(int mode, void *arg); -static int access_amdsmi_smu_fw_version(int mode, void *arg); -static int access_amdsmi_xgmi_bandwidth(int mode, void *arg); -#endif -/* Simple open/close/start/stop functions (no special handling needed for most events) */ -static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } - -/* Dynamic load of AMD SMI library symbols */ -static void *sym(const char *preferred, const char *fallback) { - void *p = dlsym(amds_dlp, preferred); - return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); -} - -static int load_amdsmi_sym(void) { - const char *root = getenv("PAPI_AMDSMI_ROOT"); - char so_path[PATH_MAX] = {0}; - if (!root) { - snprintf(error_string, sizeof(error_string), - "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); - return PAPI_ENOSUPP; - } - snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); - amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); - if (!amds_dlp) { - snprintf(error_string, sizeof(error_string), - "dlopen(\"%s\"): %s", so_path, dlerror()); - return PAPI_ENOSUPP; - } - /* Resolve required function symbols */ - amdsmi_init_p = sym("amdsmi_init", NULL); - amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); - amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); - amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); - - /* Sensors */ - amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); - amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); - amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); - amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); - - /* Memory */ - amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); - amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); - - /* Utilization / activity */ - amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); - - /* Power */ - amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); - amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); - amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); - - /* PCIe */ - amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); - amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); - - /* Clocks */ - amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); - amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); - - /* GPU metrics */ - amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); - - /* Identification and other queries */ - amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); - amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); - amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); -// amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); - amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); - amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); - amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); - amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); - amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); -#ifndef AMDSMI_DISABLE_ESMI - /* CPU functions */ - amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); - amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); - amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); - amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); - amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); - amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); - amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); - amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); - amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); - amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); - amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); - amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); - amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); - amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); - amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); - amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); - amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); - amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); -#endif - /* Verify that all required symbols are loaded */ - struct { const char *name; void *ptr; } required[] = { - { "amdsmi_init", amdsmi_init_p }, - { "amdsmi_shut_down", amdsmi_shut_down_p }, - { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, - { "amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p }, - { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, - { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, - { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, - { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, - { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, - { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, - { "amdsmi_get_power_info", amdsmi_get_power_info_p }, - { "amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p }, - { "amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p }, - { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, - { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, - { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, - { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, - { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, - { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, - { "amdsmi_get_gpu_id", amdsmi_get_gpu_id_p }, - { "amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p }, - { "amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p }, -// { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, - { "amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p }, - { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, - { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, - { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, - { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p }, - -#ifndef AMDSMI_DISABLE_ESMI - { "amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p }, - { "amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p }, - { "amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p }, - { "amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p }, - { "amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p }, - { "amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p }, - { "amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p }, - { "amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p }, - { "amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p }, - { "amdsmi_get_cpu_family", amdsmi_get_cpu_family_p }, - { "amdsmi_get_cpu_model", amdsmi_get_cpu_model_p }, - { "amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p }, - { "amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p }, - { "amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p }, - { "amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p }, - { "amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p }, - { "amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p }, - { "amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p }, - { "amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p } -#endif - }; - int miss = 0; - int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); - for (size_t i = 0; i < sizeof(required)/sizeof(required[0]); ++i) { - if (!required[i].ptr) { - miss++; - pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); - } - } - if (miss) { - dlclose(amds_dlp); amds_dlp = NULL; - return PAPI_ENOSUPP; - } - return PAPI_OK; -} - -static int unload_amdsmi_sym(void) { - /* Reset all function pointers and close library */ - amdsmi_init_p = NULL; - amdsmi_shut_down_p = NULL; - amdsmi_get_socket_handles_p = NULL; - amdsmi_get_processor_handles_by_type_p = NULL; - amdsmi_get_temp_metric_p = NULL; - amdsmi_get_gpu_fan_rpms_p = NULL; - amdsmi_get_gpu_fan_speed_p = NULL; - amdsmi_get_gpu_fan_speed_max_p = NULL; - amdsmi_get_total_memory_p = NULL; - amdsmi_get_memory_usage_p = NULL; - amdsmi_get_gpu_activity_p = NULL; - amdsmi_get_power_cap_info_p = NULL; - amdsmi_set_power_cap_p = NULL; - amdsmi_get_power_info_p = NULL; - amdsmi_get_gpu_pci_throughput_p = NULL; - amdsmi_get_gpu_pci_replay_counter_p = NULL; - amdsmi_get_clk_freq_p = NULL; - amdsmi_set_clk_freq_p = NULL; - amdsmi_get_gpu_metrics_info_p = NULL; - amdsmi_get_gpu_id_p = NULL; - amdsmi_get_gpu_revision_p = NULL; - amdsmi_get_gpu_subsystem_id_p = NULL; -// amdsmi_get_gpu_virtualization_mode_p = NULL; - amdsmi_get_gpu_pci_bandwidth_p = NULL; - amdsmi_get_gpu_bdf_id_p = NULL; - amdsmi_get_gpu_topo_numa_affinity_p = NULL; - amdsmi_get_energy_count_p = NULL; - amdsmi_get_gpu_power_profile_presets_p = NULL; -#ifndef AMDSMI_DISABLE_ESMI - amdsmi_get_cpu_handles_p = NULL; - amdsmi_get_cpucore_handles_p = NULL; - amdsmi_get_cpu_socket_power_p = NULL; - amdsmi_get_cpu_socket_power_cap_p = NULL; - amdsmi_get_cpu_socket_power_cap_max_p = NULL; - amdsmi_get_cpu_core_energy_p = NULL; - amdsmi_get_cpu_socket_energy_p = NULL; - amdsmi_get_cpu_smu_fw_version_p = NULL; - amdsmi_get_threads_per_core_p = NULL; - amdsmi_get_cpu_family_p = NULL; - amdsmi_get_cpu_model_p = NULL; - amdsmi_get_cpu_core_boostlimit_p = NULL; - amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; - amdsmi_get_cpu_socket_freq_range_p = NULL; - amdsmi_get_cpu_core_current_freq_limit_p = NULL; - amdsmi_get_minmax_bandwidth_between_processors_p = NULL; - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; - amdsmi_get_cpu_dimm_power_consumption_p = NULL; - amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; -#endif - if (amds_dlp) { - dlclose(amds_dlp); - amds_dlp = NULL; - } - return PAPI_OK; -} - -/* Initialize AMD SMI library and discover devices */ -int amds_init(void) { - int papi_errno = load_amdsmi_sym(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - - //AMDSMI_INIT_AMD_CPUS - amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); - if (status != AMDSMI_STATUS_SUCCESS) { - strcpy(error_string, "amdsmi_init failed"); - return PAPI_ENOSUPP; - } - htable_init(&htable); - - // Discover GPU and CPU devices - uint32_t socket_count = 0; - status = amdsmi_get_socket_handles_p(&socket_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { - sprintf(error_string, "Error discovering sockets or no AMD socket found."); - papi_errno = PAPI_ENOEVNT; - goto fn_fail; - } - amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); - if (!sockets) { - papi_errno = PAPI_ENOMEM; - goto fn_fail; - } - status = amdsmi_get_socket_handles_p(&socket_count, sockets); - if (status != AMDSMI_STATUS_SUCCESS) { - sprintf(error_string, "Error getting socket handles."); - papi_free(sockets); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; - } - - device_count = 0; - uint32_t total_gpu_count = 0; - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); - if (st == AMDSMI_STATUS_SUCCESS) { - total_gpu_count += gpu_count_local; - } - } - - - - - uint32_t total_cpu_count = 0; - -#ifndef AMDSMI_DISABLE_ESMI - status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) { - total_cpu_count = 0; - } -#endif - - if (total_gpu_count == 0 && total_cpu_count == 0) { - sprintf(error_string, "No AMD GPU or CPU devices found."); - papi_errno = PAPI_ENOEVNT; - papi_free(sockets); - goto fn_fail; - } - device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); - if (!device_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for device handles."); - papi_free(sockets); - goto fn_fail; - } - - // Retrieve GPU processor handles for each socket - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { - continue; // no GPU on this socket or error - } - amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count_local, sizeof(*gpu_handles)); - if (!gpu_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for GPU handles on socket %u.", s); - papi_free(sockets); - goto fn_fail; - } - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); - if (status == AMDSMI_STATUS_SUCCESS) { - for (uint32_t g = 0; g < gpu_count_local; ++g) { - device_handles[device_count++] = gpu_handles[g]; - } - } - papi_free(gpu_handles); - } - papi_free(sockets); - // (No need to check device_count here; CPU may still be added even if GPU count is zero) - -#ifndef AMDSMI_DISABLE_ESMI - // Retrieve CPU socket handles - amdsmi_processor_handle *cpu_handles = NULL; - if (total_cpu_count > 0) { - cpu_handles = (amdsmi_processor_handle *) papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); - if (!cpu_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU handles."); - goto fn_fail; - } - status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); - if (status != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_handles); - cpu_handles = NULL; - total_cpu_count = 0; - } - } - if (cpu_handles) { - for (uint32_t i = 0; i < total_cpu_count; ++i) { - device_handles[device_count++] = cpu_handles[i]; - } - papi_free(cpu_handles); - } -#endif - // Set global GPU/CPU counts - gpu_count = total_gpu_count; - cpu_count = total_cpu_count; - - // Retrieve CPU core handles for each CPU socket - if (cpu_count > 0) { - cpu_core_handles = (amdsmi_processor_handle **) papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); - cores_per_socket = (uint32_t *) papi_calloc(cpu_count, sizeof(uint32_t)); - if (!cpu_core_handles || !cores_per_socket) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles."); - if (cpu_core_handles) papi_free(cpu_core_handles); - if (cores_per_socket) papi_free(cores_per_socket); - goto fn_fail; - } - for (uint32_t s = 0; s < cpu_count; ++s) { - uint32_t core_count = 0; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); - if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { - cores_per_socket[s] = 0; - cpu_core_handles[s] = NULL; - continue; - } - cpu_core_handles[s] = (amdsmi_processor_handle *) papi_calloc(core_count, sizeof(amdsmi_processor_handle)); - if (!cpu_core_handles[s]) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); - for (uint32_t t = 0; t < s; ++t) { - if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); - } - papi_free(cpu_core_handles); - papi_free(cores_per_socket); - goto fn_fail; - } - st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], &core_count); - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_core_handles[s]); - cpu_core_handles[s] = NULL; - cores_per_socket[s] = 0; - } else { - cores_per_socket[s] = core_count; - } - } - } - - // Initialize the native event table for all discovered metrics - papi_errno = init_event_table(); - if (papi_errno != PAPI_OK) { - sprintf(error_string, "Error while initializing the native event table."); - goto fn_fail; - } - ntv_table_p = &ntv_table; - return PAPI_OK; - -fn_fail: - htable_shutdown(htable); - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - device_count = 0; - } - // sockets already freed if allocated - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - amdsmi_shut_down_p(); - unload_amdsmi_sym(); - return papi_errno; -} - -int amds_shutdown(void) { - shutdown_event_table(); - shutdown_device_table(); - htable_shutdown(htable); - amdsmi_shut_down_p(); // shutdown AMD SMI library - return unload_amdsmi_sym(); -} - -int amds_err_get_last(const char **err_string) { - if (err_string) *err_string = error_string; - return PAPI_OK; -} - -/* Event enumeration: iterate over native events */ -int -amds_evt_enum(unsigned int *EventCode, int modifier) -{ - if (modifier == PAPI_ENUM_FIRST) { - if (ntv_table_p->count == 0) { - return PAPI_ENOEVNT; - } - *EventCode = 0; - return PAPI_OK; - } else if (modifier == PAPI_ENUM_EVENTS) { - if (*EventCode + 1 < (unsigned int) ntv_table_p->count) { - *EventCode = *EventCode + 1; - return PAPI_OK; - } else { - return PAPI_ENOEVNT; - } - } - return PAPI_EINVAL; -} - -int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { - if (EventCode >= (unsigned int) ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(name, ntv_table_p->events[EventCode].name, len); - return PAPI_OK; -} - -int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { - native_event_t *event = NULL; - int hret = htable_find(htable, name, (void **) &event); - if (hret != HTABLE_SUCCESS) { - return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; - } - *EventCode = event->id; - return PAPI_OK; -} - -int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { - if (EventCode >= (unsigned int) ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(descr, ntv_table_p->events[EventCode].descr, len); - return PAPI_OK; -} - -/* Context management: open/close, start/stop, read/write, reset */ -struct amds_ctx { - int state; - unsigned int *events_id; - int num_events; - long long *counters; - int32_t device_mask; -}; - -int -amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) -{ - amds_ctx_t new_ctx = (amds_ctx_t) papi_calloc(1, sizeof(struct amds_ctx)); - if (new_ctx == NULL) { - return PAPI_ENOMEM; - } - new_ctx->events_id = event_ids; - new_ctx->num_events = num_events; - new_ctx->counters = (long long *) papi_calloc(num_events, sizeof(long long)); - if (new_ctx->counters == NULL) { - papi_free(new_ctx); - return PAPI_ENOMEM; - } - // Acquire devices needed by these events to avoid conflicts - int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); - if (papi_errno != PAPI_OK) { - papi_free(new_ctx->counters); - papi_free(new_ctx); - return papi_errno; - } - *ctx = new_ctx; - return PAPI_OK; -} - -int -amds_ctx_close(amds_ctx_t ctx) -{ - if (!ctx) return PAPI_OK; - // release device usage - release_devices(&ctx->device_mask); - papi_free(ctx->counters); - papi_free(ctx); - return PAPI_OK; -} - -int -amds_ctx_start(amds_ctx_t ctx) -{ - (void) ctx; - // No additional actions needed to start in this design (all reads are on-demand) - ctx->state |= AMDS_EVENTS_RUNNING; - return PAPI_OK; -} - -int -amds_ctx_stop(amds_ctx_t ctx) -{ - if (!(ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_OK; - } - ctx->state &= ~AMDS_EVENTS_RUNNING; - return PAPI_OK; -} - -int -amds_ctx_read(amds_ctx_t ctx, long long **counts) -{ - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - ctx->counters[i] = (long long) ntv_table_p->events[id].value; - } - *counts = ctx->counters; - return papi_errno; -} - -int -amds_ctx_write(amds_ctx_t ctx, long long *counts) -{ - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = counts[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - } - return papi_errno; -} - -int -amds_ctx_reset(amds_ctx_t ctx) -{ - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = 0; - ctx->counters[i] = 0; - } - return PAPI_OK; -} - -/* Initialize native event table: enumerate all supported events */ -static int init_event_table(void) { - ntv_table.count = 0; - int idx = 0; - ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); - if (!ntv_table.events) { - return PAPI_ENOMEM; - } - char name_buf[PAPI_MAX_STR_LEN]; - char descr_buf[PAPI_MAX_STR_LEN]; - - /* Temperature sensors (only include if sensor is present) */ - amdsmi_temperature_type_t temp_sensors[] = { - AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0 , AMDSMI_TEMPERATURE_TYPE_HBM_1 , AMDSMI_TEMPERATURE_TYPE_HBM_2 , - AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX - }; - const amdsmi_temperature_metric_t temp_metrics[] = { - AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, - AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, - AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, - AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST - }; - const char *temp_metric_names[] = { - "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", - "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", - "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" - }; - for (int d = 0; d < gpu_count; ++d) { - for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { - // Probe if sensor exists by reading current temperature - int64_t dummy_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - AMDSMI_TEMP_CURRENT, &dummy_val) - != AMDSMI_STATUS_SUCCESS) { - continue; // skip this sensor if not present - } - for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { - int64_t metric_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - temp_metrics[mi], &metric_val) - != AMDSMI_STATUS_SUCCESS) { - continue; /* skip this metric if not supported */ - } - snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", - temp_metric_names[mi], d, (int) temp_sensors[si]); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", - d, temp_metric_names[mi], (int) temp_sensors[si]); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = temp_metrics[mi]; - ev->subvariant = temp_sensors[si]; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, ev); - idx++; - } - } - } - - /* Fan metrics (assume one fan sensor index 0 per device) */ - for (int d = 0; d < gpu_count; ++d) { - int64_t dummy; - - /* --- only register Fan RPM if reading it works --- */ - if (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) - == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), - "fan_rpms:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan speed in RPM", d); - native_event_t *ev_rpm = &ntv_table.events[idx]; - ev_rpm->id = idx; - ev_rpm->name = strdup(name_buf); - ev_rpm->descr = strdup(descr_buf); - ev_rpm->device = d; - ev_rpm->value = 0; - ev_rpm->mode = PAPI_MODE_READ; - ev_rpm->variant = 0; - ev_rpm->subvariant = 0; - ev_rpm->open_func = open_simple; - ev_rpm->close_func = close_simple; - ev_rpm->start_func = start_simple; - ev_rpm->stop_func = stop_simple; - ev_rpm->access_func= access_amdsmi_fan_rpms; - htable_insert(htable, ev_rpm->name, ev_rpm); - idx++; - } - - /* --- only register Fan SPEED (0?255) if reading it works --- */ - if (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) - == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), - "fan_speed:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan speed (0-255 relative)", d); - native_event_t *ev_fan = &ntv_table.events[idx]; - ev_fan->id = idx; - ev_fan->name = strdup(name_buf); - ev_fan->descr = strdup(descr_buf); - ev_fan->device = d; - ev_fan->value = 0; - ev_fan->mode = PAPI_MODE_READ; - ev_fan->variant = 0; - ev_fan->subvariant = 0; - ev_fan->open_func = open_simple; - ev_fan->close_func = close_simple; - ev_fan->start_func = start_simple; - ev_fan->stop_func = stop_simple; - ev_fan->access_func= access_amdsmi_fan_speed; - htable_insert(htable, ev_fan->name, ev_fan); - idx++; - } - - if (amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy) - == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), - "fan_rpms_max:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan maximum speed in RPM", d); - native_event_t *ev_fanmax = &ntv_table.events[idx]; - ev_fanmax->id = idx; - ev_fanmax->name = strdup(name_buf); - ev_fanmax->descr = strdup(descr_buf); - ev_fanmax->device = d; - ev_fanmax->value = 0; - ev_fanmax->mode = PAPI_MODE_READ; - ev_fanmax->variant = 0; - ev_fanmax->subvariant = 0; - ev_fanmax->open_func = open_simple; - ev_fanmax->close_func = close_simple; - ev_fanmax->start_func = start_simple; - ev_fanmax->stop_func = stop_simple; - ev_fanmax->access_func= access_amdsmi_fan_speed_max; - htable_insert(htable, ev_fanmax->name, ev_fanmax); - idx++; - } - } - - /* VRAM memory metrics */ - for (int d = 0; d < gpu_count; ++d) { - uint64_t mem_dummy = 0; - - /* total VRAM bytes */ - if (amdsmi_get_total_memory_p(device_handles[d], - AMDSMI_MEM_TYPE_VRAM, - &mem_dummy) == AMDSMI_STATUS_SUCCESS) { - - snprintf(name_buf, sizeof(name_buf), - "mem_total_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total VRAM memory (bytes)", d); - - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr= strdup(descr_buf); - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant= AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func= access_amdsmi_mem_total; - htable_insert(htable, ev->name, ev); - ++idx; - } - - /* used VRAM bytes */ - if (amdsmi_get_memory_usage_p(device_handles[d], - AMDSMI_MEM_TYPE_VRAM, - &mem_dummy) == AMDSMI_STATUS_SUCCESS) { - - snprintf(name_buf, sizeof(name_buf), - "mem_usage_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d VRAM memory usage (bytes)", d); - - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr= strdup(descr_buf); - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant= AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func= access_amdsmi_mem_usage; - htable_insert(htable, ev->name, ev); - ++idx; - } - } - - /* GPU power metrics: average power, power cap, and cap range */ - for (int d = 0; d < gpu_count; ++d) { - // Check support for power metrics on this device - amdsmi_power_info_t pinfo; - amdsmi_power_cap_info_t cinfo; - amdsmi_status_t stat_avg = amdsmi_get_power_info_p(device_handles[d], &pinfo); - amdsmi_status_t stat_cap = amdsmi_get_power_cap_info_p(device_handles[d], 0, &cinfo); - if (stat_avg != AMDSMI_STATUS_SUCCESS && stat_cap != AMDSMI_STATUS_SUCCESS) { - // Device supports neither power reading nor capping - continue; - } - if (stat_avg == AMDSMI_STATUS_SUCCESS) { - // Average power consumption (in Watts or microWatts) - snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); - native_event_t *ev_pwr_avg = &ntv_table.events[idx]; - ev_pwr_avg->id = idx; - ev_pwr_avg->name = strdup(name_buf); - ev_pwr_avg->descr = strdup(descr_buf); - ev_pwr_avg->device = d; - ev_pwr_avg->value = 0; - ev_pwr_avg->mode = PAPI_MODE_READ; - ev_pwr_avg->variant = 0; - ev_pwr_avg->subvariant = 0; - ev_pwr_avg->open_func = open_simple; - ev_pwr_avg->close_func = close_simple; - ev_pwr_avg->start_func = start_simple; - ev_pwr_avg->stop_func = stop_simple; - ev_pwr_avg->access_func = access_amdsmi_power_average; - htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); - idx++; - } - if (stat_cap == AMDSMI_STATUS_SUCCESS) { - // Current power cap limit - snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); - native_event_t *ev_pcap = &ntv_table.events[idx]; - ev_pcap->id = idx; - ev_pcap->name = strdup(name_buf); - ev_pcap->descr = strdup(descr_buf); - ev_pcap->device = d; - ev_pcap->value = 0; - ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; - ev_pcap->variant = 0; - ev_pcap->subvariant = 0; - ev_pcap->open_func = open_simple; - ev_pcap->close_func = close_simple; - ev_pcap->start_func = start_simple; - ev_pcap->stop_func = stop_simple; - ev_pcap->access_func = access_amdsmi_power_cap; - htable_insert(htable, ev_pcap->name, ev_pcap); - idx++; - - // Minimum allowed power cap - snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); - native_event_t *ev_pcap_min = &ntv_table.events[idx]; - ev_pcap_min->id = idx; - ev_pcap_min->name = strdup(name_buf); - ev_pcap_min->descr = strdup(descr_buf); - ev_pcap_min->device = d; - ev_pcap_min->value = 0; - ev_pcap_min->mode = PAPI_MODE_READ; - ev_pcap_min->variant = 1; // variant 1 => min - ev_pcap_min->subvariant = 0; - ev_pcap_min->open_func = open_simple; - ev_pcap_min->close_func = close_simple; - ev_pcap_min->start_func = start_simple; - ev_pcap_min->stop_func = stop_simple; - ev_pcap_min->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_min->name, ev_pcap_min); - idx++; - - // Maximum allowed power cap - snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); - native_event_t *ev_pcap_max = &ntv_table.events[idx]; - ev_pcap_max->id = idx; - ev_pcap_max->name = strdup(name_buf); - ev_pcap_max->descr = strdup(descr_buf); - ev_pcap_max->device = d; - ev_pcap_max->value = 0; - ev_pcap_max->mode = PAPI_MODE_READ; - ev_pcap_max->variant = 2; // variant 2 => max - ev_pcap_max->subvariant = 0; - ev_pcap_max->open_func = open_simple; - ev_pcap_max->close_func = close_simple; - ev_pcap_max->start_func = start_simple; - ev_pcap_max->stop_func = stop_simple; - ev_pcap_max->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_max->name, ev_pcap_max); - idx++; - } - } - - /* PCIe throughput and replay counter metrics */ - for (int d = 0; d < gpu_count; ++d) { - uint64_t tx = 0, rx = 0, pkt = 0; - - amdsmi_status_t st_thr = - amdsmi_get_gpu_pci_throughput_p(device_handles[d], - &tx, &rx, &pkt); - - if (st_thr == AMDSMI_STATUS_SUCCESS) { - /* bytes sent per second */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_sent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe bytes sent per second", d); - - native_event_t *ev_tx = &ntv_table.events[idx]; - ev_tx->id = idx; - ev_tx->name = strdup(name_buf); - ev_tx->descr= strdup(descr_buf); - ev_tx->device = d; - ev_tx->value = 0; - ev_tx->mode = PAPI_MODE_READ; - ev_tx->variant= 0; /* sent */ - ev_tx->subvariant = 0; - ev_tx->open_func = open_simple; - ev_tx->close_func = close_simple; - ev_tx->start_func = start_simple; - ev_tx->stop_func = stop_simple; - ev_tx->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_tx->name, ev_tx); - ++idx; - - /* bytes received per second */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_received:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe bytes received per second", d); - - native_event_t *ev_rx = &ntv_table.events[idx]; - ev_rx->id = idx; - ev_rx->name = strdup(name_buf); - ev_rx->descr= strdup(descr_buf); - ev_rx->device = d; - ev_rx->value = 0; - ev_rx->mode = PAPI_MODE_READ; - ev_rx->variant= 1; /* received */ - ev_rx->subvariant = 0; - ev_rx->open_func = open_simple; - ev_rx->close_func = close_simple; - ev_rx->start_func = start_simple; - ev_rx->stop_func = stop_simple; - ev_rx->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_rx->name, ev_rx); - ++idx; - - /* max packet size */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_max_packet:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe max packet size (bytes)", d); - - native_event_t *ev_pkt = &ntv_table.events[idx]; - ev_pkt->id = idx; - ev_pkt->name = strdup(name_buf); - ev_pkt->descr= strdup(descr_buf); - ev_pkt->device = d; - ev_pkt->value = 0; - ev_pkt->mode = PAPI_MODE_READ; - ev_pkt->variant= 2; /* max pkt */ - ev_pkt->subvariant = 0; - ev_pkt->open_func = open_simple; - ev_pkt->close_func = close_simple; - ev_pkt->start_func = start_simple; - ev_pkt->stop_func = stop_simple; - ev_pkt->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_pkt->name, ev_pkt); - ++idx; - } - - uint64_t replay = 0; - if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], - &replay) == AMDSMI_STATUS_SUCCESS) { - - snprintf(name_buf, sizeof(name_buf), - "pci_replay_counter:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe replay (NAK) counter", d); - - native_event_t *ev_rep = &ntv_table.events[idx]; - ev_rep->id = idx; - ev_rep->name = strdup(name_buf); - ev_rep->descr= strdup(descr_buf); - ev_rep->device = d; - ev_rep->value = 0; - ev_rep->mode = PAPI_MODE_READ; - ev_rep->variant= 0; - ev_rep->subvariant = 0; - ev_rep->open_func = open_simple; - ev_rep->close_func = close_simple; - ev_rep->start_func = start_simple; - ev_rep->stop_func = stop_simple; - ev_rep->access_func= access_amdsmi_pci_replay_counter; - htable_insert(htable, ev_rep->name, ev_rep); - ++idx; - } - } - - /* Additional GPU metrics and system information */ - /* GPU engine utilization metrics (gfx, umc, mm) */ - for (int d = 0; d < gpu_count; ++d) { - amdsmi_engine_usage_t usage; - if (amdsmi_get_gpu_activity_p(device_handles[d], &usage) != AMDSMI_STATUS_SUCCESS) { - continue; - } - snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); - native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; - ev_gfx->name = strdup(name_buf); - ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; - ev_gfx->value = 0; - ev_gfx->mode = PAPI_MODE_READ; - ev_gfx->variant = 0; - ev_gfx->subvariant = 0; - ev_gfx->open_func = open_simple; - ev_gfx->close_func = close_simple; - ev_gfx->start_func = start_simple; - ev_gfx->stop_func = stop_simple; - ev_gfx->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_gfx->name, ev_gfx); - idx++; - - snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); - native_event_t *ev_umc = &ntv_table.events[idx]; - ev_umc->id = idx; - ev_umc->name = strdup(name_buf); - ev_umc->descr = strdup(descr_buf); - ev_umc->device = d; - ev_umc->value = 0; - ev_umc->mode = PAPI_MODE_READ; - ev_umc->variant = 1; - ev_umc->subvariant = 0; - ev_umc->open_func = open_simple; - ev_umc->close_func = close_simple; - ev_umc->start_func = start_simple; - ev_umc->stop_func = stop_simple; - ev_umc->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_umc->name, ev_umc); - idx++; - - snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); - native_event_t *ev_mm = &ntv_table.events[idx]; - ev_mm->id = idx; - ev_mm->name = strdup(name_buf); - ev_mm->descr = strdup(descr_buf); - ev_mm->device = d; - ev_mm->value = 0; - ev_mm->mode = PAPI_MODE_READ; - ev_mm->variant = 2; - ev_mm->subvariant = 0; - ev_mm->open_func = open_simple; - ev_mm->close_func = close_simple; - ev_mm->start_func = start_simple; - ev_mm->stop_func = stop_simple; - ev_mm->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_mm->name, ev_mm); - idx++; - } - - /* GPU clock frequency levels */ - for (int d = 0; d < gpu_count; ++d) { - amdsmi_frequencies_t f; - if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { - continue; - } - // Number of supported frequencies - snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); - native_event_t *ev_clk_count = &ntv_table.events[idx]; - ev_clk_count->id = idx; - ev_clk_count->name = strdup(name_buf); - ev_clk_count->descr = strdup(descr_buf); - ev_clk_count->device = d; - ev_clk_count->value = 0; - ev_clk_count->mode = PAPI_MODE_READ; - ev_clk_count->variant = 0; - ev_clk_count->subvariant = 0; - ev_clk_count->open_func = open_simple; - ev_clk_count->close_func = close_simple; - ev_clk_count->start_func = start_simple; - ev_clk_count->stop_func = stop_simple; - ev_clk_count->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_count->name, ev_clk_count); - idx++; - - // Current clock frequency - snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); - native_event_t *ev_clk_cur = &ntv_table.events[idx]; - ev_clk_cur->id = idx; - ev_clk_cur->name = strdup(name_buf); - ev_clk_cur->descr = strdup(descr_buf); - ev_clk_cur->device = d; - ev_clk_cur->value = 0; - ev_clk_cur->mode = PAPI_MODE_READ; - ev_clk_cur->variant = 0; - ev_clk_cur->subvariant = 1; - ev_clk_cur->open_func = open_simple; - ev_clk_cur->close_func = close_simple; - ev_clk_cur->start_func = start_simple; - ev_clk_cur->stop_func = stop_simple; - ev_clk_cur->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_cur->name, ev_clk_cur); - idx++; - - // Supported frequency levels - for (uint32_t fi = 0; fi < f.num_supported; ++fi) { - snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); - native_event_t *ev_clk_lvl = &ntv_table.events[idx]; - ev_clk_lvl->id = idx; - ev_clk_lvl->name = strdup(name_buf); - ev_clk_lvl->descr = strdup(descr_buf); - ev_clk_lvl->device = d; - ev_clk_lvl->value = 0; - ev_clk_lvl->mode = PAPI_MODE_READ; - ev_clk_lvl->variant = 0; - ev_clk_lvl->subvariant = fi + 2; - ev_clk_lvl->open_func = open_simple; - ev_clk_lvl->close_func = close_simple; - ev_clk_lvl->start_func = start_simple; - ev_clk_lvl->stop_func = stop_simple; - ev_clk_lvl->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); - idx++; - } - } - - /* GPU identification and topology metrics */ - for (int d = 0; d < gpu_count; ++d) { - uint16_t id16; - uint64_t id64; - //amdsmi_virtualization_mode_t vmode; - int32_t numa; - // GPU ID - if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); - native_event_t *ev_id = &ntv_table.events[idx]; - ev_id->id = idx; - ev_id->name = strdup(name_buf); - ev_id->descr = strdup(descr_buf); - ev_id->device = d; - ev_id->value = 0; - ev_id->mode = PAPI_MODE_READ; - ev_id->variant = 0; - ev_id->subvariant = 0; - ev_id->open_func = open_simple; - ev_id->close_func = close_simple; - ev_id->start_func = start_simple; - ev_id->stop_func = stop_simple; - ev_id->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_id->name, ev_id); - idx++; - } - // GPU Revision - if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); - native_event_t *ev_rev = &ntv_table.events[idx]; - ev_rev->id = idx; - ev_rev->name = strdup(name_buf); - ev_rev->descr = strdup(descr_buf); - ev_rev->device = d; - ev_rev->value = 0; - ev_rev->mode = PAPI_MODE_READ; - ev_rev->variant = 1; - ev_rev->subvariant = 0; - ev_rev->open_func = open_simple; - ev_rev->close_func = close_simple; - ev_rev->start_func = start_simple; - ev_rev->stop_func = stop_simple; - ev_rev->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_rev->name, ev_rev); - idx++; - } - // GPU Subsystem ID - if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); - native_event_t *ev_subid = &ntv_table.events[idx]; - ev_subid->id = idx; - ev_subid->name = strdup(name_buf); - ev_subid->descr = strdup(descr_buf); - ev_subid->device = d; - ev_subid->value = 0; - ev_subid->mode = PAPI_MODE_READ; - ev_subid->variant = 2; - ev_subid->subvariant = 0; - ev_subid->open_func = open_simple; - ev_subid->close_func = close_simple; - ev_subid->start_func = start_simple; - ev_subid->stop_func = stop_simple; - ev_subid->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_subid->name, ev_subid); - idx++; - } - // GPU BDF ID - if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); - native_event_t *ev_bdf = &ntv_table.events[idx]; - ev_bdf->id = idx; - ev_bdf->name = strdup(name_buf); - ev_bdf->descr = strdup(descr_buf); - ev_bdf->device = d; - ev_bdf->value = 0; - ev_bdf->mode = PAPI_MODE_READ; - ev_bdf->variant = 3; - ev_bdf->subvariant = 0; - ev_bdf->open_func = open_simple; - ev_bdf->close_func = close_simple; - ev_bdf->start_func = start_simple; - ev_bdf->stop_func = stop_simple; - ev_bdf->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_bdf->name, ev_bdf); - idx++; - } - /* - // GPU Virtualization Mode - if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); - native_event_t *ev_vmode = &ntv_table.events[idx]; - ev_vmode->id = idx; - ev_vmode->name = strdup(name_buf); - ev_vmode->descr = strdup(descr_buf); - ev_vmode->device = d; - ev_vmode->value = 0; - ev_vmode->mode = PAPI_MODE_READ; - ev_vmode->variant = 4; - ev_vmode->subvariant = 0; - ev_vmode->open_func = open_simple; - ev_vmode->close_func = close_simple; - ev_vmode->start_func = start_simple; - ev_vmode->stop_func = stop_simple; - ev_vmode->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_vmode->name, ev_vmode); - idx++; - } - */ - // GPU NUMA Node - if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); - native_event_t *ev_numa = &ntv_table.events[idx]; - ev_numa->id = idx; - ev_numa->name = strdup(name_buf); - ev_numa->descr = strdup(descr_buf); - ev_numa->device = d; - ev_numa->value = 0; - ev_numa->mode = PAPI_MODE_READ; - ev_numa->variant = 5; - ev_numa->subvariant = 0; - ev_numa->open_func = open_simple; - ev_numa->close_func = close_simple; - ev_numa->start_func = start_simple; - ev_numa->stop_func = stop_simple; - ev_numa->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_numa->name, ev_numa); - idx++; - } - } - - /* Energy consumption counter */ - for (int d = 0; d < gpu_count; ++d) { - uint64_t energy = 0; - float resolution = 0.0; - uint64_t timestamp = 0; - if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { - continue; - } - snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); - native_event_t *ev_energy = &ntv_table.events[idx]; - ev_energy->id = idx; - ev_energy->name = strdup(name_buf); - ev_energy->descr = strdup(descr_buf); - ev_energy->device = d; - ev_energy->value = 0; - ev_energy->mode = PAPI_MODE_READ; - ev_energy->variant = 0; - ev_energy->subvariant = 0; - ev_energy->open_func = open_simple; - ev_energy->close_func = close_simple; - ev_energy->start_func = start_simple; - ev_energy->stop_func = stop_simple; - ev_energy->access_func = access_amdsmi_energy_count; - htable_insert(htable, ev_energy->name, ev_energy); - idx++; - } - - /* GPU power profile information */ - for (int d = 0; d < gpu_count; ++d) { - amdsmi_power_profile_status_t profile_status; - if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { - continue; - } - snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); - native_event_t *ev_prof_count = &ntv_table.events[idx]; - ev_prof_count->id = idx; - ev_prof_count->name = strdup(name_buf); - ev_prof_count->descr = strdup(descr_buf); - ev_prof_count->device = d; - ev_prof_count->value = 0; - ev_prof_count->mode = PAPI_MODE_READ; - ev_prof_count->variant = 0; - ev_prof_count->subvariant = 0; - ev_prof_count->open_func = open_simple; - ev_prof_count->close_func = close_simple; - ev_prof_count->start_func = start_simple; - ev_prof_count->stop_func = stop_simple; - ev_prof_count->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_count->name, ev_prof_count); - idx++; - - snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); - native_event_t *ev_prof_curr = &ntv_table.events[idx]; - ev_prof_curr->id = idx; - ev_prof_curr->name = strdup(name_buf); - ev_prof_curr->descr = strdup(descr_buf); - ev_prof_curr->device = d; - ev_prof_curr->value = 0; - ev_prof_curr->mode = PAPI_MODE_READ; - ev_prof_curr->variant = 1; - ev_prof_curr->subvariant = 0; - ev_prof_curr->open_func = open_simple; - ev_prof_curr->close_func = close_simple; - ev_prof_curr->start_func = start_simple; - ev_prof_curr->stop_func = stop_simple; - ev_prof_curr->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_curr->name, ev_prof_curr); - idx++; - } - -#ifndef AMDSMI_DISABLE_ESMI - /* CPU metrics events */ - if (cpu_count > 0) { - // CPU socket-level events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - uint32_t pwr; - if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); - native_event_t *ev_pwr = &ntv_table.events[idx]; - ev_pwr->id = idx; - ev_pwr->name = strdup(name_buf); - ev_pwr->descr = strdup(descr_buf); - ev_pwr->device = dev; - ev_pwr->value = 0; - ev_pwr->mode = PAPI_MODE_READ; - ev_pwr->variant = 0; - ev_pwr->subvariant = 0; - ev_pwr->open_func = open_simple; - ev_pwr->close_func = close_simple; - ev_pwr->start_func = start_simple; - ev_pwr->stop_func = stop_simple; - ev_pwr->access_func = access_amdsmi_cpu_socket_power; - htable_insert(htable, ev_pwr->name, ev_pwr); - idx++; - } - uint64_t sock_energy; - if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); - native_event_t *ev_sock_energy = &ntv_table.events[idx]; - ev_sock_energy->id = idx; - ev_sock_energy->name = strdup(name_buf); - ev_sock_energy->descr = strdup(descr_buf); - ev_sock_energy->device = dev; - ev_sock_energy->value = 0; - ev_sock_energy->mode = PAPI_MODE_READ; - ev_sock_energy->variant = 0; - ev_sock_energy->subvariant = 0; - ev_sock_energy->open_func = open_simple; - ev_sock_energy->close_func = close_simple; - ev_sock_energy->start_func = start_simple; - ev_sock_energy->stop_func = stop_simple; - ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; - htable_insert(htable, ev_sock_energy->name, ev_sock_energy); - idx++; - } - uint16_t fmax, fmin; - if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); - native_event_t *ev_fmax = &ntv_table.events[idx]; - ev_fmax->id = idx; - ev_fmax->name = strdup(name_buf); - ev_fmax->descr = strdup(descr_buf); - ev_fmax->device = dev; - ev_fmax->value = 0; - ev_fmax->mode = PAPI_MODE_READ; - ev_fmax->variant = 1; - ev_fmax->subvariant = 0; - ev_fmax->open_func = open_simple; - ev_fmax->close_func = close_simple; - ev_fmax->start_func = start_simple; - ev_fmax->stop_func = stop_simple; - ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmax->name, ev_fmax); - idx++; - snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); - native_event_t *ev_fmin = &ntv_table.events[idx]; - ev_fmin->id = idx; - ev_fmin->name = strdup(name_buf); - ev_fmin->descr = strdup(descr_buf); - ev_fmin->device = dev; - ev_fmin->value = 0; - ev_fmin->mode = PAPI_MODE_READ; - ev_fmin->variant = 0; - ev_fmin->subvariant = 0; - ev_fmin->open_func = open_simple; - ev_fmin->close_func = close_simple; - ev_fmin->start_func = start_simple; - ev_fmin->stop_func = stop_simple; - ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmin->name, ev_fmin); - idx++; - } - uint32_t cap; - amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); - uint32_t cap_max; - amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); - if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { - if (st_cap == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); - native_event_t *ev_cap = &ntv_table.events[idx]; - ev_cap->id = idx; - ev_cap->name = strdup(name_buf); - ev_cap->descr = strdup(descr_buf); - ev_cap->device = dev; - ev_cap->value = 0; - ev_cap->mode = PAPI_MODE_READ; - ev_cap->variant = 0; - ev_cap->subvariant = 0; - ev_cap->open_func = open_simple; - ev_cap->close_func = close_simple; - ev_cap->start_func = start_simple; - ev_cap->stop_func = stop_simple; - ev_cap->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_cap->name, ev_cap); - idx++; - } - if (st_capmax == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); - native_event_t *ev_capmax = &ntv_table.events[idx]; - ev_capmax->id = idx; - ev_capmax->name = strdup(name_buf); - ev_capmax->descr = strdup(descr_buf); - ev_capmax->device = dev; - ev_capmax->value = 0; - ev_capmax->mode = PAPI_MODE_READ; - ev_capmax->variant = 1; - ev_capmax->subvariant = 0; - ev_capmax->open_func = open_simple; - ev_capmax->close_func = close_simple; - ev_capmax->start_func = start_simple; - ev_capmax->stop_func = stop_simple; - ev_capmax->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_capmax->name, ev_capmax); - idx++; - } - } - uint16_t freq; - char *src_type = NULL; - if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { - if (src_type) free(src_type); - snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); - native_event_t *ev_flim = &ntv_table.events[idx]; - ev_flim->id = idx; - ev_flim->name = strdup(name_buf); - ev_flim->descr = strdup(descr_buf); - ev_flim->device = dev; - ev_flim->value = 0; - ev_flim->mode = PAPI_MODE_READ; - ev_flim->variant = 0; - ev_flim->subvariant = 0; - ev_flim->open_func = open_simple; - ev_flim->close_func = close_simple; - ev_flim->start_func = start_simple; - ev_flim->stop_func = stop_simple; - ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; - htable_insert(htable, ev_flim->name, ev_flim); - idx++; - } - amdsmi_smu_fw_version_t fw; - if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); - native_event_t *ev_fw = &ntv_table.events[idx]; - ev_fw->id = idx; - ev_fw->name = strdup(name_buf); - ev_fw->descr = strdup(descr_buf); - ev_fw->device = dev; - ev_fw->value = 0; - ev_fw->mode = PAPI_MODE_READ; - ev_fw->variant = 0; - ev_fw->subvariant = 0; - ev_fw->open_func = open_simple; - ev_fw->close_func = close_simple; - ev_fw->start_func = start_simple; - ev_fw->stop_func = stop_simple; - ev_fw->access_func = access_amdsmi_smu_fw_version; - htable_insert(htable, ev_fw->name, ev_fw); - idx++; - } - } - - // CPU core-level events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { - uint64_t energy; - if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); - native_event_t *ev_core_energy = &ntv_table.events[idx]; - ev_core_energy->id = idx; - ev_core_energy->name = strdup(name_buf); - ev_core_energy->descr = strdup(descr_buf); - ev_core_energy->device = dev; - ev_core_energy->value = 0; - ev_core_energy->mode = PAPI_MODE_READ; - ev_core_energy->variant = 0; - ev_core_energy->subvariant = c; - ev_core_energy->open_func = open_simple; - ev_core_energy->close_func = close_simple; - ev_core_energy->start_func = start_simple; - ev_core_energy->stop_func = stop_simple; - ev_core_energy->access_func = access_amdsmi_cpu_core_energy; - htable_insert(htable, ev_core_energy->name, ev_core_energy); - idx++; - } - uint32_t freq; - if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); - native_event_t *ev_core_flim = &ntv_table.events[idx]; - ev_core_flim->id = idx; - ev_core_flim->name = strdup(name_buf); - ev_core_flim->descr = strdup(descr_buf); - ev_core_flim->device = dev; - ev_core_flim->value = 0; - ev_core_flim->mode = PAPI_MODE_READ; - ev_core_flim->variant = 0; - ev_core_flim->subvariant = c; - ev_core_flim->open_func = open_simple; - ev_core_flim->close_func = close_simple; - ev_core_flim->start_func = start_simple; - ev_core_flim->stop_func = stop_simple; - ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; - htable_insert(htable, ev_core_flim->name, ev_core_flim); - idx++; - } - uint32_t boost; - if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); - native_event_t *ev_boost = &ntv_table.events[idx]; - ev_boost->id = idx; - ev_boost->name = strdup(name_buf); - ev_boost->descr = strdup(descr_buf); - ev_boost->device = dev; - ev_boost->value = 0; - ev_boost->mode = PAPI_MODE_READ; - ev_boost->variant = 0; - ev_boost->subvariant = c; - ev_boost->open_func = open_simple; - ev_boost->close_func = close_simple; - ev_boost->start_func = start_simple; - ev_boost->stop_func = stop_simple; - ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; - htable_insert(htable, ev_boost->name, ev_boost); - idx++; - } - } - } - - // CPU DIMM events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - for (uint8_t dimm = 0; dimm < 16; ++dimm) { - amdsmi_dimm_thermal_t dimm_temp; - amdsmi_dimm_power_t dimm_pow; - amdsmi_temp_range_refresh_rate_t range_info; - amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); - amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); - amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); - if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { - continue; - } - if (st_temp == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); - native_event_t *ev_dimm_temp = &ntv_table.events[idx]; - ev_dimm_temp->id = idx; - ev_dimm_temp->name = strdup(name_buf); - ev_dimm_temp->descr = strdup(descr_buf); - ev_dimm_temp->device = dev; - ev_dimm_temp->value = 0; - ev_dimm_temp->mode = PAPI_MODE_READ; - ev_dimm_temp->variant = 0; - ev_dimm_temp->subvariant = dimm; - ev_dimm_temp->open_func = open_simple; - ev_dimm_temp->close_func = close_simple; - ev_dimm_temp->start_func = start_simple; - ev_dimm_temp->stop_func = stop_simple; - ev_dimm_temp->access_func = access_amdsmi_dimm_temp; - htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); - idx++; - } - if (st_power == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); - native_event_t *ev_dimm_pow = &ntv_table.events[idx]; - ev_dimm_pow->id = idx; - ev_dimm_pow->name = strdup(name_buf); - ev_dimm_pow->descr = strdup(descr_buf); - ev_dimm_pow->device = dev; - ev_dimm_pow->value = 0; - ev_dimm_pow->mode = PAPI_MODE_READ; - ev_dimm_pow->variant = 0; - ev_dimm_pow->subvariant = dimm; - ev_dimm_pow->open_func = open_simple; - ev_dimm_pow->close_func = close_simple; - ev_dimm_pow->start_func = start_simple; - ev_dimm_pow->stop_func = stop_simple; - ev_dimm_pow->access_func = access_amdsmi_dimm_power; - htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); - idx++; - } - if (st_range == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); - native_event_t *ev_range = &ntv_table.events[idx]; - ev_range->id = idx; - ev_range->name = strdup(name_buf); - ev_range->descr = strdup(descr_buf); - ev_range->device = dev; - ev_range->value = 0; - ev_range->mode = PAPI_MODE_READ; - ev_range->variant = 0; - ev_range->subvariant = dimm; - ev_range->open_func = open_simple; - ev_range->close_func = close_simple; - ev_range->start_func = start_simple; - ev_range->stop_func = stop_simple; - ev_range->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_range->name, ev_range); - idx++; - snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); - native_event_t *ev_ref = &ntv_table.events[idx]; - ev_ref->id = idx; - ev_ref->name = strdup(name_buf); - ev_ref->descr = strdup(descr_buf); - ev_ref->device = dev; - ev_ref->value = 0; - ev_ref->mode = PAPI_MODE_READ; - ev_ref->variant = 1; - ev_ref->subvariant = dimm; - ev_ref->open_func = open_simple; - ev_ref->close_func = close_simple; - ev_ref->start_func = start_simple; - ev_ref->stop_func = stop_simple; - ev_ref->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_ref->name, ev_ref); - idx++; - } - } - } - - // System-wide CPU events - uint32_t threads; - if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "threads_per_core"); - snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); - native_event_t *ev_threads = &ntv_table.events[idx]; - ev_threads->id = idx; - ev_threads->name = strdup(name_buf); - ev_threads->descr = strdup(descr_buf); - ev_threads->device = -1; - ev_threads->value = 0; - ev_threads->mode = PAPI_MODE_READ; - ev_threads->variant = 0; - ev_threads->subvariant = 0; - ev_threads->open_func = open_simple; - ev_threads->close_func = close_simple; - ev_threads->start_func = start_simple; - ev_threads->stop_func = stop_simple; - ev_threads->access_func = access_amdsmi_threads_per_core; - htable_insert(htable, ev_threads->name, ev_threads); - idx++; - } - uint32_t family; - if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "cpu_family"); - snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); - native_event_t *ev_family = &ntv_table.events[idx]; - ev_family->id = idx; - ev_family->name = strdup(name_buf); - ev_family->descr = strdup(descr_buf); - ev_family->device = -1; - ev_family->value = 0; - ev_family->mode = PAPI_MODE_READ; - ev_family->variant = 0; - ev_family->subvariant = 0; - ev_family->open_func = open_simple; - ev_family->close_func = close_simple; - ev_family->start_func = start_simple; - ev_family->stop_func = stop_simple; - ev_family->access_func = access_amdsmi_cpu_family; - htable_insert(htable, ev_family->name, ev_family); - idx++; - } - uint32_t model; - if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "cpu_model"); - snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); - native_event_t *ev_model = &ntv_table.events[idx]; - ev_model->id = idx; - ev_model->name = strdup(name_buf); - ev_model->descr = strdup(descr_buf); - ev_model->device = -1; - ev_model->value = 0; - ev_model->mode = PAPI_MODE_READ; - ev_model->variant = 0; - ev_model->subvariant = 0; - ev_model->open_func = open_simple; - ev_model->close_func = close_simple; - ev_model->start_func = start_simple; - ev_model->stop_func = stop_simple; - ev_model->access_func = access_amdsmi_cpu_model; - htable_insert(htable, ev_model->name, ev_model); - idx++; - } - } -#endif - ntv_table.count = idx; - return PAPI_OK; -} - -static int shutdown_event_table(void) { - // Remove all events from hash table and free their names/descr - for (int i = 0; i < ntv_table.count; ++i) { - htable_delete(htable, ntv_table.events[i].name); - papi_free(ntv_table.events[i].name); - papi_free(ntv_table.events[i].descr); - } - papi_free(ntv_table.events); - ntv_table.events = NULL; - ntv_table.count = 0; - return PAPI_OK; -} - -static int init_device_table(void) { - // Nothing to do (device_handles and device_count already set in amds_init) - return PAPI_OK; -} - -static int shutdown_device_table(void) { - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - } - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - device_count = 0; - gpu_count = 0; - cpu_count = 0; - return PAPI_OK; -} - -/* Access function implementations (read/write operations for each event) */ -static int access_amdsmi_temp_metric(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; /* ensure device handle is valid */ - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status = - amdsmi_get_temp_metric_p(device_handles[event->device], - (amdsmi_temperature_type_t) event->subvariant, - (amdsmi_temperature_metric_t) event->variant, - (int64_t *)&event->value); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); -} - -static int access_amdsmi_fan_rpms(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t speed = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], - event->subvariant, &speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = speed; - return PAPI_OK; -} - -static int access_amdsmi_fan_speed(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; // writing fan speed not supported - } - int64_t val = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_speed_p(device_handles[event->device], - event->subvariant, &val); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = val; - return PAPI_OK; -} - -static int access_amdsmi_mem_total(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = - amdsmi_get_total_memory_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) data; - return PAPI_OK; -} - -static int access_amdsmi_mem_usage(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = - amdsmi_get_memory_usage_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) data; - return PAPI_OK; -} - -static int access_amdsmi_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode == PAPI_MODE_READ) { - // Read current power cap - amdsmi_power_cap_info_t info; - amdsmi_status_t status = - amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) info.power_cap; - return PAPI_OK; - } else if (mode == PAPI_MODE_WRITE) { - // Set new power cap (value expected in microWatts if API uses uW) - uint64_t new_cap = (uint64_t) event->value; - amdsmi_status_t status = - amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); - } - return PAPI_ENOSUPP; -} - -static int access_amdsmi_power_cap_range(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_power_cap_info_t info; - amdsmi_status_t status = - amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 1) { - event->value = (int64_t) info.min_power_cap; - } else if (event->variant == 2) { - event->value = (int64_t) info.max_power_cap; - } else { - return PAPI_EMISC; - } - return PAPI_OK; -} - -static int access_amdsmi_power_average(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_power_info_t power; - amdsmi_status_t status = - amdsmi_get_power_info_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) power.average_socket_power; - return PAPI_OK; -} - -static int access_amdsmi_pci_throughput(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t sent = 0, received = 0, max_pkt = 0; - amdsmi_status_t status = - amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], - &sent, &received, &max_pkt); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: event->value = (int64_t) sent; break; - case 1: event->value = (int64_t) received; break; - case 2: event->value = (int64_t) max_pkt; break; - default: return PAPI_EMISC; - } - return PAPI_OK; -} - -static int access_amdsmi_pci_replay_counter(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t counter = 0; - amdsmi_status_t status = - amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) counter; - return PAPI_OK; -} - -static int access_amdsmi_clk_freq(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_frequencies_t freq_info; - amdsmi_status_t status = - amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific index - if (event->subvariant == 0) { - event->value = freq_info.num_supported; - } else if (event->subvariant == 1) { - if (freq_info.num_supported > 0) { - event->value = freq_info.frequency[0]; // assume first is current - } else { - event->value = 0; - } - } else { - int idx = event->subvariant - 2; - if (idx >= 0 && idx < (int)freq_info.num_supported) { - event->value = freq_info.frequency[idx]; - } else { - return PAPI_EMISC; - } - } - return PAPI_OK; -} - -static int access_amdsmi_gpu_metrics(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_gpu_metrics_t metrics; - amdsmi_status_t status = - amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Parsing of metrics is not fully implemented; just return OK. - // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) - return PAPI_OK; -} - -static int access_amdsmi_gpu_info(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status; - switch (event->variant) { - case 0: { - uint16_t id = 0; - status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = id; - } - break; - } - case 1: { - uint16_t rev = 0; - status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = rev; - } - break; - } - case 2: { - uint16_t subid = 0; - status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = subid; - } - break; - } - case 3: { - uint64_t bdfid = 0; - status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = (int64_t) bdfid; - } - break; - } - /*case 4: { - amdsmi_virtualization_mode_t mode_val; - status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = mode_val; - } - break; - }*/ - case 5: { - int32_t numa_node = -1; - status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = numa_node; - } - break; - } - default: - return PAPI_EMISC; - } - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); -} - -static int access_amdsmi_gpu_activity(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_engine_usage_t usage; - amdsmi_status_t status = - amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: event->value = usage.gfx_activity; break; - case 1: event->value = usage.umc_activity; break; - case 2: event->value = usage.mm_activity; break; - default: return PAPI_EMISC; - } - return PAPI_OK; -} - -static int access_amdsmi_fan_speed_max(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t max_speed = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = max_speed; - return PAPI_OK; -} - -static int access_amdsmi_pci_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_pcie_bandwidth_t bw; - amdsmi_status_t status = - amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - uint32_t cur_index = bw.transfer_rate.current; - if (cur_index >= bw.transfer_rate.num_supported) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: - event->value = bw.transfer_rate.num_supported; - break; - case 1: - event->value = (int64_t) bw.transfer_rate.frequency[cur_index]; - break; - case 2: - event->value = bw.lanes[cur_index]; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} - -static int access_amdsmi_energy_count(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - float resolution = 0.0; - uint64_t timestamp = 0; - amdsmi_status_t status = - amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Convert energy count to microJoules - event->value = (int64_t) (energy * resolution); - return PAPI_OK; -} - -static int access_amdsmi_power_profile_status(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_power_profile_status_t status_info; - amdsmi_status_t status = - amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = status_info.num_profiles; - } else if (event->variant == 1) { - event->value = (int64_t) status_info.current; - } else { - return PAPI_EMISC; - } - return PAPI_OK; -} - -#ifndef AMDSMI_DISABLE_ESMI -/* The functions below implement CPU metrics access */ -static int access_amdsmi_cpu_socket_power(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t power = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) power; - return PAPI_OK; -} - -static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) energy; - return PAPI_OK; -} - -static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t freq = 0; - char *src = NULL; - amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (src) free(src); - event->value = freq; - return PAPI_OK; -} - -static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t fmax = 0, fmin = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = fmin; - } else { - event->value = fmax; - } - return PAPI_OK; -} - -static int access_amdsmi_cpu_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t cap_value = 0; - amdsmi_status_t status; - if (event->variant == 0) { - status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); - } else { - status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); - } - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) cap_value; - return PAPI_OK; -} - -static int access_amdsmi_cpu_core_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) energy; - return PAPI_OK; -} - -static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t freq = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = freq; - return PAPI_OK; -} - -static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t boost = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = boost; - return PAPI_OK; -} - -static int access_amdsmi_dimm_temp(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_thermal_t dimm_temp; - amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_temp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) dimm_temp.temp; - return PAPI_OK; -} - -static int access_amdsmi_dimm_power(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_power_t dimm_pow; - amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_pow); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = dimm_pow.power; - return PAPI_OK; -} - -static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_temp_range_refresh_rate_t rate; - amdsmi_status_t status = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t) event->subvariant, &rate); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = rate.range; - } else { - event->value = rate.ref_rate; - } - return PAPI_OK; -} - -static int access_amdsmi_threads_per_core(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t threads = 0; - amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = threads; - return PAPI_OK; -} - -static int access_amdsmi_cpu_family(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t family = 0; - amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = family; - return PAPI_OK; -} - -static int access_amdsmi_cpu_model(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t model = 0; - amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = model; - return PAPI_OK; -} - -static int access_amdsmi_smu_fw_version(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_smu_fw_version_t fw; - amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - int encoded = ((int) fw.major << 16) | ((int) fw.minor << 8) | fw.debug; - event->value = encoded; - return PAPI_OK; -} - -static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_processor_handle src = device_handles[event->device]; - amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; - uint64_t min_bw = 0, max_bw = 0; - amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = (int64_t) min_bw; - } else { - event->value = (int64_t) max_bw; - } - return PAPI_OK; -} - -#endif +#include +#include +#include +#include +#include + +#include "papi.h" +#include "papi_memory.h" +#include "amds.h" +#include "htable.h" + +#define AMDSMI_DISABLE_ESMI + +unsigned int _amd_smi_lock; + +typedef enum { + PAPI_MODE_READ = 1, + PAPI_MODE_WRITE, + PAPI_MODE_RDWR, +} rocs_access_mode_e; + + +/* Pointers to AMD SMI library functions (dynamically loaded) */ +static amdsmi_status_t (*amdsmi_init_p)(uint64_t); +static amdsmi_status_t (*amdsmi_shut_down_p)(void); +static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); +static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); +static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); +static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); +static amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); +static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); +static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); + +/* New AMD SMI function pointers */ +static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); +static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); +static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); +//static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); +static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); +static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); + + +#ifndef AMDSMI_DISABLE_ESMI +/* CPU function pointers */ +static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); +static amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); +static amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); +static amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); +static amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +#endif + + +/* Global device list and count */ +static int32_t device_count = 0; +static amdsmi_processor_handle *device_handles = NULL; +static int32_t device_mask = 0; +static int32_t gpu_count = 0; +static int32_t cpu_count = 0; +static amdsmi_processor_handle **cpu_core_handles = NULL; +static uint32_t *cores_per_socket = NULL; + +static void *amds_dlp = NULL; +static void *htable = NULL; +static char error_string[PAPI_MAX_STR_LEN+1]; + +/* forward declarations for internal helpers */ +static int load_amdsmi_sym(void); +static int unload_amdsmi_sym(void); +static int init_device_table(void); +static int shutdown_device_table(void); +static int init_event_table(void); +static int shutdown_event_table(void); + +/* Event descriptor structure for native events */ +typedef struct native_event { + unsigned int id; + char *name; + char *descr; + int32_t device; /* device index or -1 if not applicable */ + uint64_t value; /* last read value or set value */ + uint32_t mode; /* access mode (read/write) */ + uint32_t variant; /* variant index (for metric type, etc.) */ + uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ + int (*open_func)(struct native_event *); /* optional open (reserve resources) */ + int (*close_func)(struct native_event *); /* optional close (release resources) */ + int (*start_func)(struct native_event *); /* optional start (begin counting) */ + int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ + int (*access_func)(int mode, void *arg); /* read or write the event value */ +} native_event_t; + +/* Table of all native events */ +typedef struct { + native_event_t *events; + int count; +} native_event_table_t; + +static native_event_table_t ntv_table; +static native_event_table_t *ntv_table_p = NULL; + +/* Locking device usage for contexts */ +static int +acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) +{ + int32_t mask_acq = 0; + for (int i = 0; i < num_events; ++i) { + int32_t dev_id = ntv_table_p->events[events_id[i]].device; + if (dev_id < 0) continue; + mask_acq |= (1 << dev_id); + } + if (mask_acq & device_mask) { + return PAPI_ECNFLCT; // conflict: device already in use + } + device_mask |= mask_acq; + *bitmask = mask_acq; + return PAPI_OK; +} + +static int +release_devices(int32_t *bitmask) +{ + int32_t mask_rel = *bitmask; + if ((mask_rel & device_mask) != mask_rel) { + return PAPI_EMISC; + } + device_mask ^= mask_rel; + *bitmask = 0; + return PAPI_OK; +} + +/* Prototypes for event access (read/write) functions */ +static int access_amdsmi_temp_metric(int mode, void *arg); +static int access_amdsmi_fan_speed(int mode, void *arg); +static int access_amdsmi_fan_rpms(int mode, void *arg); +static int access_amdsmi_mem_total(int mode, void *arg); +static int access_amdsmi_mem_usage(int mode, void *arg); +static int access_amdsmi_power_cap(int mode, void *arg); +static int access_amdsmi_power_cap_range(int mode, void *arg); +static int access_amdsmi_power_average(int mode, void *arg); +static int access_amdsmi_pci_throughput(int mode, void *arg); +static int access_amdsmi_pci_replay_counter(int mode, void *arg); +static int access_amdsmi_clk_freq(int mode, void *arg); +static int access_amdsmi_gpu_metrics(int mode, void *arg); +static int access_amdsmi_gpu_info(int mode, void *arg); +static int access_amdsmi_gpu_activity(int mode, void *arg); +static int access_amdsmi_fan_speed_max(int mode, void *arg); +static int access_amdsmi_pci_bandwidth(int mode, void *arg); +static int access_amdsmi_energy_count(int mode, void *arg); +static int access_amdsmi_power_profile_status(int mode, void *arg); + + +#ifndef AMDSMI_DISABLE_ESMI +static int access_amdsmi_cpu_socket_power(int mode, void *arg); +static int access_amdsmi_cpu_socket_energy(int mode, void *arg); +static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg); +static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg); +static int access_amdsmi_cpu_power_cap(int mode, void *arg); +static int access_amdsmi_cpu_core_energy(int mode, void *arg); +static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); +static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); +static int access_amdsmi_dimm_temp(int mode, void *arg); +static int access_amdsmi_dimm_power(int mode, void *arg); +static int access_amdsmi_dimm_range_refresh(int mode, void *arg); +static int access_amdsmi_threads_per_core(int mode, void *arg); +static int access_amdsmi_cpu_family(int mode, void *arg); +static int access_amdsmi_cpu_model(int mode, void *arg); +static int access_amdsmi_smu_fw_version(int mode, void *arg); +static int access_amdsmi_xgmi_bandwidth(int mode, void *arg); +#endif +/* Simple open/close/start/stop functions (no special handling needed for most events) */ +static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } +static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } + +/* Dynamic load of AMD SMI library symbols */ +static void *sym(const char *preferred, const char *fallback) { + void *p = dlsym(amds_dlp, preferred); + return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); +} + +static int load_amdsmi_sym(void) { + const char *root = getenv("PAPI_AMDSMI_ROOT"); + char so_path[PATH_MAX] = {0}; + if (!root) { + snprintf(error_string, sizeof(error_string), + "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); + return PAPI_ENOSUPP; + } + snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); + amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); + if (!amds_dlp) { + snprintf(error_string, sizeof(error_string), + "dlopen(\"%s\"): %s", so_path, dlerror()); + return PAPI_ENOSUPP; + } + /* Resolve required function symbols */ + amdsmi_init_p = sym("amdsmi_init", NULL); + amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); + amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); + amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); + + /* Sensors */ + amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); + amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); + amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); + amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); + + /* Memory */ + amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); + + /* Utilization / activity */ + amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); + + /* Power */ + amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); + amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); + amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); + + /* PCIe */ + amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); + amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); + + /* Clocks */ + amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); + amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); + + /* GPU metrics */ + amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); + + /* Identification and other queries */ + amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); + amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); + amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); +// amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); + amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); + amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); + amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); + amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); +#ifndef AMDSMI_DISABLE_ESMI + /* CPU functions */ + amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); + amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); + amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); + amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); + amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); + amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); + amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); + amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); + amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); + amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); + amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); + amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); + amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); + amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); + amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); + amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); + amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); + amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); +#endif + /* Verify that all required symbols are loaded */ + struct { const char *name; void *ptr; } required[] = { + { "amdsmi_init", amdsmi_init_p }, + { "amdsmi_shut_down", amdsmi_shut_down_p }, + { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, + { "amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p }, + { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, + { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, + { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, + { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, + { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, + { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, + { "amdsmi_get_power_info", amdsmi_get_power_info_p }, + { "amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p }, + { "amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p }, + { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, + { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, + { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, + { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, + { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, + { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, + { "amdsmi_get_gpu_id", amdsmi_get_gpu_id_p }, + { "amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p }, + { "amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p }, +// { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, + { "amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p }, + { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, + { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, + { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, + { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p }, + +#ifndef AMDSMI_DISABLE_ESMI + { "amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p }, + { "amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p }, + { "amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p }, + { "amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p }, + { "amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p }, + { "amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p }, + { "amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p }, + { "amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p }, + { "amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p }, + { "amdsmi_get_cpu_family", amdsmi_get_cpu_family_p }, + { "amdsmi_get_cpu_model", amdsmi_get_cpu_model_p }, + { "amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p }, + { "amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p }, + { "amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p }, + { "amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p }, + { "amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p }, + { "amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p }, + { "amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p }, + { "amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p } +#endif + }; + int miss = 0; + int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); + for (size_t i = 0; i < sizeof(required)/sizeof(required[0]); ++i) { + if (!required[i].ptr) { + miss++; + pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); + } + } + if (miss) { + dlclose(amds_dlp); amds_dlp = NULL; + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + +static int unload_amdsmi_sym(void) { + /* Reset all function pointers and close library */ + amdsmi_init_p = NULL; + amdsmi_shut_down_p = NULL; + amdsmi_get_socket_handles_p = NULL; + amdsmi_get_processor_handles_by_type_p = NULL; + amdsmi_get_temp_metric_p = NULL; + amdsmi_get_gpu_fan_rpms_p = NULL; + amdsmi_get_gpu_fan_speed_p = NULL; + amdsmi_get_gpu_fan_speed_max_p = NULL; + amdsmi_get_total_memory_p = NULL; + amdsmi_get_memory_usage_p = NULL; + amdsmi_get_gpu_activity_p = NULL; + amdsmi_get_power_cap_info_p = NULL; + amdsmi_set_power_cap_p = NULL; + amdsmi_get_power_info_p = NULL; + amdsmi_get_gpu_pci_throughput_p = NULL; + amdsmi_get_gpu_pci_replay_counter_p = NULL; + amdsmi_get_clk_freq_p = NULL; + amdsmi_set_clk_freq_p = NULL; + amdsmi_get_gpu_metrics_info_p = NULL; + amdsmi_get_gpu_id_p = NULL; + amdsmi_get_gpu_revision_p = NULL; + amdsmi_get_gpu_subsystem_id_p = NULL; +// amdsmi_get_gpu_virtualization_mode_p = NULL; + amdsmi_get_gpu_pci_bandwidth_p = NULL; + amdsmi_get_gpu_bdf_id_p = NULL; + amdsmi_get_gpu_topo_numa_affinity_p = NULL; + amdsmi_get_energy_count_p = NULL; + amdsmi_get_gpu_power_profile_presets_p = NULL; +#ifndef AMDSMI_DISABLE_ESMI + amdsmi_get_cpu_handles_p = NULL; + amdsmi_get_cpucore_handles_p = NULL; + amdsmi_get_cpu_socket_power_p = NULL; + amdsmi_get_cpu_socket_power_cap_p = NULL; + amdsmi_get_cpu_socket_power_cap_max_p = NULL; + amdsmi_get_cpu_core_energy_p = NULL; + amdsmi_get_cpu_socket_energy_p = NULL; + amdsmi_get_cpu_smu_fw_version_p = NULL; + amdsmi_get_threads_per_core_p = NULL; + amdsmi_get_cpu_family_p = NULL; + amdsmi_get_cpu_model_p = NULL; + amdsmi_get_cpu_core_boostlimit_p = NULL; + amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; + amdsmi_get_cpu_socket_freq_range_p = NULL; + amdsmi_get_cpu_core_current_freq_limit_p = NULL; + amdsmi_get_minmax_bandwidth_between_processors_p = NULL; + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; + amdsmi_get_cpu_dimm_power_consumption_p = NULL; + amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; +#endif + if (amds_dlp) { + dlclose(amds_dlp); + amds_dlp = NULL; + } + return PAPI_OK; +} + +/* Initialize AMD SMI library and discover devices */ +int amds_init(void) { + int papi_errno = load_amdsmi_sym(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + + //AMDSMI_INIT_AMD_CPUS + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); + if (status != AMDSMI_STATUS_SUCCESS) { + strcpy(error_string, "amdsmi_init failed"); + return PAPI_ENOSUPP; + } + htable_init(&htable); + + // Discover GPU and CPU devices + uint32_t socket_count = 0; + status = amdsmi_get_socket_handles_p(&socket_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { + sprintf(error_string, "Error discovering sockets or no AMD socket found."); + papi_errno = PAPI_ENOEVNT; + goto fn_fail; + } + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); + if (!sockets) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; + } + status = amdsmi_get_socket_handles_p(&socket_count, sockets); + if (status != AMDSMI_STATUS_SUCCESS) { + sprintf(error_string, "Error getting socket handles."); + papi_free(sockets); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; + } + + device_count = 0; + uint32_t total_gpu_count = 0; + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + if (st == AMDSMI_STATUS_SUCCESS) { + total_gpu_count += gpu_count_local; + } + } + + + + + uint32_t total_cpu_count = 0; + +#ifndef AMDSMI_DISABLE_ESMI + status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) { + total_cpu_count = 0; + } +#endif + + if (total_gpu_count == 0 && total_cpu_count == 0) { + sprintf(error_string, "No AMD GPU or CPU devices found."); + papi_errno = PAPI_ENOEVNT; + papi_free(sockets); + goto fn_fail; + } + device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); + if (!device_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for device handles."); + papi_free(sockets); + goto fn_fail; + } + + // Retrieve GPU processor handles for each socket + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { + continue; // no GPU on this socket or error + } + amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count_local, sizeof(*gpu_handles)); + if (!gpu_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for GPU handles on socket %u.", s); + papi_free(sockets); + goto fn_fail; + } + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); + if (status == AMDSMI_STATUS_SUCCESS) { + for (uint32_t g = 0; g < gpu_count_local; ++g) { + device_handles[device_count++] = gpu_handles[g]; + } + } + papi_free(gpu_handles); + } + papi_free(sockets); + // (No need to check device_count here; CPU may still be added even if GPU count is zero) + +#ifndef AMDSMI_DISABLE_ESMI + // Retrieve CPU socket handles + amdsmi_processor_handle *cpu_handles = NULL; + if (total_cpu_count > 0) { + cpu_handles = (amdsmi_processor_handle *) papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); + if (!cpu_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU handles."); + goto fn_fail; + } + status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); + if (status != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_handles); + cpu_handles = NULL; + total_cpu_count = 0; + } + } + if (cpu_handles) { + for (uint32_t i = 0; i < total_cpu_count; ++i) { + device_handles[device_count++] = cpu_handles[i]; + } + papi_free(cpu_handles); + } +#endif + // Set global GPU/CPU counts + gpu_count = total_gpu_count; + cpu_count = total_cpu_count; + + // Retrieve CPU core handles for each CPU socket + if (cpu_count > 0) { + cpu_core_handles = (amdsmi_processor_handle **) papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); + cores_per_socket = (uint32_t *) papi_calloc(cpu_count, sizeof(uint32_t)); + if (!cpu_core_handles || !cores_per_socket) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles."); + if (cpu_core_handles) papi_free(cpu_core_handles); + if (cores_per_socket) papi_free(cores_per_socket); + goto fn_fail; + } + for (uint32_t s = 0; s < cpu_count; ++s) { + uint32_t core_count = 0; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); + if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { + cores_per_socket[s] = 0; + cpu_core_handles[s] = NULL; + continue; + } + cpu_core_handles[s] = (amdsmi_processor_handle *) papi_calloc(core_count, sizeof(amdsmi_processor_handle)); + if (!cpu_core_handles[s]) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); + for (uint32_t t = 0; t < s; ++t) { + if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); + } + papi_free(cpu_core_handles); + papi_free(cores_per_socket); + goto fn_fail; + } + st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], &core_count); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_core_handles[s]); + cpu_core_handles[s] = NULL; + cores_per_socket[s] = 0; + } else { + cores_per_socket[s] = core_count; + } + } + } + + // Initialize the native event table for all discovered metrics + papi_errno = init_event_table(); + if (papi_errno != PAPI_OK) { + sprintf(error_string, "Error while initializing the native event table."); + goto fn_fail; + } + ntv_table_p = &ntv_table; + return PAPI_OK; + +fn_fail: + htable_shutdown(htable); + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + device_count = 0; + } + // sockets already freed if allocated + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + amdsmi_shut_down_p(); + unload_amdsmi_sym(); + return papi_errno; +} + +int amds_shutdown(void) { + shutdown_event_table(); + shutdown_device_table(); + htable_shutdown(htable); + amdsmi_shut_down_p(); // shutdown AMD SMI library + return unload_amdsmi_sym(); +} + +int amds_err_get_last(const char **err_string) { + if (err_string) *err_string = error_string; + return PAPI_OK; +} + +/* Event enumeration: iterate over native events */ +int +amds_evt_enum(unsigned int *EventCode, int modifier) +{ + if (modifier == PAPI_ENUM_FIRST) { + if (ntv_table_p->count == 0) { + return PAPI_ENOEVNT; + } + *EventCode = 0; + return PAPI_OK; + } else if (modifier == PAPI_ENUM_EVENTS) { + if (*EventCode + 1 < (unsigned int) ntv_table_p->count) { + *EventCode = *EventCode + 1; + return PAPI_OK; + } else { + return PAPI_ENOEVNT; + } + } + return PAPI_EINVAL; +} + +int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { + if (EventCode >= (unsigned int) ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(name, ntv_table_p->events[EventCode].name, len); + return PAPI_OK; +} + +int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { + native_event_t *event = NULL; + int hret = htable_find(htable, name, (void **) &event); + if (hret != HTABLE_SUCCESS) { + return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; + } + *EventCode = event->id; + return PAPI_OK; +} + +int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { + if (EventCode >= (unsigned int) ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(descr, ntv_table_p->events[EventCode].descr, len); + return PAPI_OK; +} + +/* Context management: open/close, start/stop, read/write, reset */ +struct amds_ctx { + int state; + unsigned int *events_id; + int num_events; + long long *counters; + int32_t device_mask; +}; + +int +amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) +{ + amds_ctx_t new_ctx = (amds_ctx_t) papi_calloc(1, sizeof(struct amds_ctx)); + if (new_ctx == NULL) { + return PAPI_ENOMEM; + } + new_ctx->events_id = (unsigned int *) papi_calloc(num_events, sizeof(unsigned int)); + if (new_ctx->events_id == NULL) { + papi_free(new_ctx); + return PAPI_ENOMEM; + } + memcpy(new_ctx->events_id, event_ids, num_events * sizeof(unsigned int)); + new_ctx->num_events = num_events; + new_ctx->counters = (long long *) papi_calloc(num_events, sizeof(long long)); + if (new_ctx->counters == NULL) { + papi_free(new_ctx->events_id); + papi_free(new_ctx); + return PAPI_ENOMEM; + } + // Acquire devices needed by these events to avoid conflicts + int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); + if (papi_errno != PAPI_OK) { + papi_free(new_ctx->events_id); + papi_free(new_ctx->counters); + papi_free(new_ctx); + return papi_errno; + } + *ctx = new_ctx; + return PAPI_OK; +} + +int +amds_ctx_close(amds_ctx_t ctx) +{ + if (!ctx) return PAPI_OK; + // release device usage + release_devices(&ctx->device_mask); + papi_free(ctx->events_id); + papi_free(ctx->counters); + papi_free(ctx); + return PAPI_OK; +} + +int +amds_ctx_start(amds_ctx_t ctx) +{ + // No additional actions needed to start in this design (all reads are on-demand) + ctx->state |= AMDS_EVENTS_RUNNING; + return PAPI_OK; +} + +int +amds_ctx_stop(amds_ctx_t ctx) +{ + if (!(ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_OK; + } + ctx->state &= ~AMDS_EVENTS_RUNNING; + return PAPI_OK; +} + +int +amds_ctx_read(amds_ctx_t ctx, long long **counts) +{ + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + ctx->counters[i] = (long long) ntv_table_p->events[id].value; + } + *counts = ctx->counters; + return papi_errno; +} + +int +amds_ctx_write(amds_ctx_t ctx, long long *counts) +{ + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = counts[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + } + return papi_errno; +} + +int +amds_ctx_reset(amds_ctx_t ctx) +{ + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = 0; + ctx->counters[i] = 0; + } + return PAPI_OK; +} + +/* Helper function to register a native event with error checking */ +static int register_native_event(int *idx, const char *name, const char *descr, + int device, int mode, int variant, int subvariant, + int (*access_func)(int, native_event_t *)) { + if (*idx >= 512 * device_count) { + return PAPI_ENOSUPP; // Too many events + } + + native_event_t *ev = &ntv_table.events[*idx]; + ev->id = *idx; + ev->name = strdup(name); + ev->descr = strdup(descr); + if (!ev->name || !ev->descr) { + return PAPI_ENOMEM; + } + ev->device = device; + ev->value = 0; + ev->mode = mode; + ev->variant = variant; + ev->subvariant = subvariant; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_func; + + htable_insert(htable, ev->name, ev); + (*idx)++; + return PAPI_OK; +} + +/* Initialize native event table: enumerate all supported events */ +static int init_event_table(void) { + ntv_table.count = 0; + int idx = 0; + + // Keep original allocation approach + ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); + if (!ntv_table.events) { + return PAPI_ENOMEM; + } + + char name_buf[PAPI_MAX_STR_LEN]; + char descr_buf[PAPI_MAX_STR_LEN]; + + // Cache sensor availability to avoid repeated API calls + typedef struct { + bool temp_sensors_available[8]; // Max 8 temperature sensor types + bool fan_rpm_available; + bool fan_speed_available; + bool power_available; + bool memory_available; + bool activity_available; + } device_capabilities_t; + + device_capabilities_t *dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); + if (!dev_caps) { + papi_free(ntv_table.events); + ntv_table.events = NULL; + return PAPI_ENOMEM; + } + + // Pre-probe device capabilities once + amdsmi_temperature_type_t temp_sensors[] = { + AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, + AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, + AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, + AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX + }; + + for (int d = 0; d < gpu_count; ++d) { + // Probe temperature sensors once per device + for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { + int64_t dummy_val; + dev_caps[d].temp_sensors_available[si] = + (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); + } + + // Probe other capabilities once per device + int64_t dummy; + dev_caps[d].fan_rpm_available = + (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + dev_caps[d].fan_speed_available = + (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + + uint64_t dummy_u64; + dev_caps[d].power_available = + (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS); + dev_caps[d].memory_available = + (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS); + + amdsmi_engine_usage_t dummy_activity; + dev_caps[d].activity_available = + (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS); + } + + // Now register events using cached capabilities + const amdsmi_temperature_metric_t temp_metrics[] = { + AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, + AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, + AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, + AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST + }; + const char *temp_metric_names[] = { + "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", + "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", + "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" + }; + + /* Temperature sensors - use cached availability */ + for (int d = 0; d < gpu_count; ++d) { + for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { + // Skip if sensor not available (already probed) + if (!dev_caps[d].temp_sensors_available[si]) { + continue; + } + + // Register all metrics for this available sensor + for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { + // Bounds check to prevent buffer overflow + if (idx >= 512 * device_count) { + papi_free(dev_caps); + return PAPI_ENOSUPP; // Too many events + } + + // Only test the specific metric if sensor is available + int64_t metric_val; + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { + continue; /* skip this metric if not supported */ + } + + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", + temp_metric_names[mi], d, (int) temp_sensors[si]); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", + d, temp_metric_names[mi], (int) temp_sensors[si]); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) { + papi_free(dev_caps); + return PAPI_ENOMEM; + } + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = temp_metrics[mi]; + ev->subvariant = temp_sensors[si]; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_temp_metric; + htable_insert(htable, ev->name, ev); + idx++; + } + } + } + + /* Fan metrics - use cached availability */ + for (int d = 0; d < gpu_count; ++d) { + /* Register Fan RPM if available */ + if (dev_caps[d].fan_rpm_available) { + if (idx >= 512 * device_count) { + papi_free(dev_caps); + return PAPI_ENOSUPP; + } + + snprintf(name_buf, sizeof(name_buf), + "fan_rpms:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan speed in RPM", d); + native_event_t *ev_rpm = &ntv_table.events[idx]; + ev_rpm->id = idx; + ev_rpm->name = strdup(name_buf); + ev_rpm->descr = strdup(descr_buf); + if (!ev_rpm->name || !ev_rpm->descr) { + papi_free(dev_caps); + return PAPI_ENOMEM; + } + ev_rpm->device = d; + ev_rpm->value = 0; + ev_rpm->mode = PAPI_MODE_READ; + ev_rpm->variant = 0; + ev_rpm->subvariant = 0; + ev_rpm->open_func = open_simple; + ev_rpm->close_func = close_simple; + ev_rpm->start_func = start_simple; + ev_rpm->stop_func = stop_simple; + ev_rpm->access_func= access_amdsmi_fan_rpms; + htable_insert(htable, ev_rpm->name, ev_rpm); + idx++; + } + + /* Register Fan SPEED if available */ + if (dev_caps[d].fan_speed_available) { + if (idx >= 512 * device_count) { + papi_free(dev_caps); + return PAPI_ENOSUPP; + } + + snprintf(name_buf, sizeof(name_buf), + "fan_speed:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan speed (0-255 relative)", d); + native_event_t *ev_fan = &ntv_table.events[idx]; + ev_fan->id = idx; + ev_fan->name = strdup(name_buf); + ev_fan->descr = strdup(descr_buf); + if (!ev_fan->name || !ev_fan->descr) { + papi_free(dev_caps); + return PAPI_ENOMEM; + } + ev_fan->device = d; + ev_fan->value = 0; + ev_fan->mode = PAPI_MODE_READ; + ev_fan->variant = 0; + ev_fan->subvariant = 0; + ev_fan->open_func = open_simple; + ev_fan->close_func = close_simple; + ev_fan->start_func = start_simple; + ev_fan->stop_func = stop_simple; + ev_fan->access_func= access_amdsmi_fan_speed; + htable_insert(htable, ev_fan->name, ev_fan); + idx++; + } + + /* Register Fan Max Speed - probe once since not cached */ + uint64_t dummy_u64; + if (amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { + if (idx >= 512 * device_count) { + papi_free(dev_caps); + return PAPI_ENOSUPP; + } + + snprintf(name_buf, sizeof(name_buf), + "fan_rpms_max:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan maximum speed in RPM", d); + native_event_t *ev_fanmax = &ntv_table.events[idx]; + ev_fanmax->id = idx; + ev_fanmax->name = strdup(name_buf); + ev_fanmax->descr = strdup(descr_buf); + if (!ev_fanmax->name || !ev_fanmax->descr) { + papi_free(dev_caps); + return PAPI_ENOMEM; + } + ev_fanmax->device = d; + ev_fanmax->value = 0; + ev_fanmax->mode = PAPI_MODE_READ; + ev_fanmax->variant = 0; + ev_fanmax->subvariant = 0; + ev_fanmax->open_func = open_simple; + ev_fanmax->close_func = close_simple; + ev_fanmax->start_func = start_simple; + ev_fanmax->stop_func = stop_simple; + ev_fanmax->access_func= access_amdsmi_fan_speed_max; + htable_insert(htable, ev_fanmax->name, ev_fanmax); + idx++; + } + } + + /* VRAM memory metrics */ + for (int d = 0; d < gpu_count; ++d) { + uint64_t mem_dummy = 0; + + /* total VRAM bytes */ + if (amdsmi_get_total_memory_p(device_handles[d], + AMDSMI_MEM_TYPE_VRAM, + &mem_dummy) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "mem_total_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total VRAM memory (bytes)", d); + + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr= strdup(descr_buf); + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant= AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func= access_amdsmi_mem_total; + htable_insert(htable, ev->name, ev); + ++idx; + } + + /* used VRAM bytes */ + if (amdsmi_get_memory_usage_p(device_handles[d], + AMDSMI_MEM_TYPE_VRAM, + &mem_dummy) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "mem_usage_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM memory usage (bytes)", d); + + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr= strdup(descr_buf); + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant= AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func= access_amdsmi_mem_usage; + htable_insert(htable, ev->name, ev); + ++idx; + } + } + + /* GPU power metrics: average power, power cap, and cap range */ + for (int d = 0; d < gpu_count; ++d) { + // Check support for power metrics on this device + amdsmi_power_info_t pinfo; + amdsmi_power_cap_info_t cinfo; + amdsmi_status_t stat_avg = amdsmi_get_power_info_p(device_handles[d], &pinfo); + amdsmi_status_t stat_cap = amdsmi_get_power_cap_info_p(device_handles[d], 0, &cinfo); + if (stat_avg != AMDSMI_STATUS_SUCCESS && stat_cap != AMDSMI_STATUS_SUCCESS) { + // Device supports neither power reading nor capping + continue; + } + if (stat_avg == AMDSMI_STATUS_SUCCESS) { + // Average power consumption (in Watts or microWatts) + snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); + native_event_t *ev_pwr_avg = &ntv_table.events[idx]; + ev_pwr_avg->id = idx; + ev_pwr_avg->name = strdup(name_buf); + ev_pwr_avg->descr = strdup(descr_buf); + ev_pwr_avg->device = d; + ev_pwr_avg->value = 0; + ev_pwr_avg->mode = PAPI_MODE_READ; + ev_pwr_avg->variant = 0; + ev_pwr_avg->subvariant = 0; + ev_pwr_avg->open_func = open_simple; + ev_pwr_avg->close_func = close_simple; + ev_pwr_avg->start_func = start_simple; + ev_pwr_avg->stop_func = stop_simple; + ev_pwr_avg->access_func = access_amdsmi_power_average; + htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); + idx++; + } + if (stat_cap == AMDSMI_STATUS_SUCCESS) { + // Current power cap limit + snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); + native_event_t *ev_pcap = &ntv_table.events[idx]; + ev_pcap->id = idx; + ev_pcap->name = strdup(name_buf); + ev_pcap->descr = strdup(descr_buf); + ev_pcap->device = d; + ev_pcap->value = 0; + ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; + ev_pcap->variant = 0; + ev_pcap->subvariant = 0; + ev_pcap->open_func = open_simple; + ev_pcap->close_func = close_simple; + ev_pcap->start_func = start_simple; + ev_pcap->stop_func = stop_simple; + ev_pcap->access_func = access_amdsmi_power_cap; + htable_insert(htable, ev_pcap->name, ev_pcap); + idx++; + + // Minimum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); + native_event_t *ev_pcap_min = &ntv_table.events[idx]; + ev_pcap_min->id = idx; + ev_pcap_min->name = strdup(name_buf); + ev_pcap_min->descr = strdup(descr_buf); + ev_pcap_min->device = d; + ev_pcap_min->value = 0; + ev_pcap_min->mode = PAPI_MODE_READ; + ev_pcap_min->variant = 1; // variant 1 => min + ev_pcap_min->subvariant = 0; + ev_pcap_min->open_func = open_simple; + ev_pcap_min->close_func = close_simple; + ev_pcap_min->start_func = start_simple; + ev_pcap_min->stop_func = stop_simple; + ev_pcap_min->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_min->name, ev_pcap_min); + idx++; + + // Maximum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); + native_event_t *ev_pcap_max = &ntv_table.events[idx]; + ev_pcap_max->id = idx; + ev_pcap_max->name = strdup(name_buf); + ev_pcap_max->descr = strdup(descr_buf); + ev_pcap_max->device = d; + ev_pcap_max->value = 0; + ev_pcap_max->mode = PAPI_MODE_READ; + ev_pcap_max->variant = 2; // variant 2 => max + ev_pcap_max->subvariant = 0; + ev_pcap_max->open_func = open_simple; + ev_pcap_max->close_func = close_simple; + ev_pcap_max->start_func = start_simple; + ev_pcap_max->stop_func = stop_simple; + ev_pcap_max->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_max->name, ev_pcap_max); + idx++; + } + } + + /* PCIe throughput and replay counter metrics */ + for (int d = 0; d < gpu_count; ++d) { + uint64_t tx = 0, rx = 0, pkt = 0; + + amdsmi_status_t st_thr = + amdsmi_get_gpu_pci_throughput_p(device_handles[d], + &tx, &rx, &pkt); + + if (st_thr == AMDSMI_STATUS_SUCCESS) { + /* bytes sent per second */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_sent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes sent per second", d); + + native_event_t *ev_tx = &ntv_table.events[idx]; + ev_tx->id = idx; + ev_tx->name = strdup(name_buf); + ev_tx->descr= strdup(descr_buf); + ev_tx->device = d; + ev_tx->value = 0; + ev_tx->mode = PAPI_MODE_READ; + ev_tx->variant= 0; /* sent */ + ev_tx->subvariant = 0; + ev_tx->open_func = open_simple; + ev_tx->close_func = close_simple; + ev_tx->start_func = start_simple; + ev_tx->stop_func = stop_simple; + ev_tx->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_tx->name, ev_tx); + ++idx; + + /* bytes received per second */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_received:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes received per second", d); + + native_event_t *ev_rx = &ntv_table.events[idx]; + ev_rx->id = idx; + ev_rx->name = strdup(name_buf); + ev_rx->descr= strdup(descr_buf); + ev_rx->device = d; + ev_rx->value = 0; + ev_rx->mode = PAPI_MODE_READ; + ev_rx->variant= 1; /* received */ + ev_rx->subvariant = 0; + ev_rx->open_func = open_simple; + ev_rx->close_func = close_simple; + ev_rx->start_func = start_simple; + ev_rx->stop_func = stop_simple; + ev_rx->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_rx->name, ev_rx); + ++idx; + + /* max packet size */ + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_max_packet:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe max packet size (bytes)", d); + + native_event_t *ev_pkt = &ntv_table.events[idx]; + ev_pkt->id = idx; + ev_pkt->name = strdup(name_buf); + ev_pkt->descr= strdup(descr_buf); + ev_pkt->device = d; + ev_pkt->value = 0; + ev_pkt->mode = PAPI_MODE_READ; + ev_pkt->variant= 2; /* max pkt */ + ev_pkt->subvariant = 0; + ev_pkt->open_func = open_simple; + ev_pkt->close_func = close_simple; + ev_pkt->start_func = start_simple; + ev_pkt->stop_func = stop_simple; + ev_pkt->access_func= access_amdsmi_pci_throughput; + htable_insert(htable, ev_pkt->name, ev_pkt); + ++idx; + } + + uint64_t replay = 0; + if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], + &replay) == AMDSMI_STATUS_SUCCESS) { + + snprintf(name_buf, sizeof(name_buf), + "pci_replay_counter:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe replay (NAK) counter", d); + + native_event_t *ev_rep = &ntv_table.events[idx]; + ev_rep->id = idx; + ev_rep->name = strdup(name_buf); + ev_rep->descr= strdup(descr_buf); + ev_rep->device = d; + ev_rep->value = 0; + ev_rep->mode = PAPI_MODE_READ; + ev_rep->variant= 0; + ev_rep->subvariant = 0; + ev_rep->open_func = open_simple; + ev_rep->close_func = close_simple; + ev_rep->start_func = start_simple; + ev_rep->stop_func = stop_simple; + ev_rep->access_func= access_amdsmi_pci_replay_counter; + htable_insert(htable, ev_rep->name, ev_rep); + ++idx; + } + } + + /* Additional GPU metrics and system information */ + /* GPU engine utilization metrics (gfx, umc, mm) */ + for (int d = 0; d < gpu_count; ++d) { + amdsmi_engine_usage_t usage; + if (amdsmi_get_gpu_activity_p(device_handles[d], &usage) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); + native_event_t *ev_gfx = &ntv_table.events[idx]; + ev_gfx->id = idx; + ev_gfx->name = strdup(name_buf); + ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; + ev_gfx->value = 0; + ev_gfx->mode = PAPI_MODE_READ; + ev_gfx->variant = 0; + ev_gfx->subvariant = 0; + ev_gfx->open_func = open_simple; + ev_gfx->close_func = close_simple; + ev_gfx->start_func = start_simple; + ev_gfx->stop_func = stop_simple; + ev_gfx->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_gfx->name, ev_gfx); + idx++; + + snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); + native_event_t *ev_umc = &ntv_table.events[idx]; + ev_umc->id = idx; + ev_umc->name = strdup(name_buf); + ev_umc->descr = strdup(descr_buf); + ev_umc->device = d; + ev_umc->value = 0; + ev_umc->mode = PAPI_MODE_READ; + ev_umc->variant = 1; + ev_umc->subvariant = 0; + ev_umc->open_func = open_simple; + ev_umc->close_func = close_simple; + ev_umc->start_func = start_simple; + ev_umc->stop_func = stop_simple; + ev_umc->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_umc->name, ev_umc); + idx++; + + snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); + native_event_t *ev_mm = &ntv_table.events[idx]; + ev_mm->id = idx; + ev_mm->name = strdup(name_buf); + ev_mm->descr = strdup(descr_buf); + ev_mm->device = d; + ev_mm->value = 0; + ev_mm->mode = PAPI_MODE_READ; + ev_mm->variant = 2; + ev_mm->subvariant = 0; + ev_mm->open_func = open_simple; + ev_mm->close_func = close_simple; + ev_mm->start_func = start_simple; + ev_mm->stop_func = stop_simple; + ev_mm->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_mm->name, ev_mm); + idx++; + } + + /* GPU clock frequency levels */ + for (int d = 0; d < gpu_count; ++d) { + amdsmi_frequencies_t f; + if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { + continue; + } + // Number of supported frequencies + snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); + native_event_t *ev_clk_count = &ntv_table.events[idx]; + ev_clk_count->id = idx; + ev_clk_count->name = strdup(name_buf); + ev_clk_count->descr = strdup(descr_buf); + ev_clk_count->device = d; + ev_clk_count->value = 0; + ev_clk_count->mode = PAPI_MODE_READ; + ev_clk_count->variant = 0; + ev_clk_count->subvariant = 0; + ev_clk_count->open_func = open_simple; + ev_clk_count->close_func = close_simple; + ev_clk_count->start_func = start_simple; + ev_clk_count->stop_func = stop_simple; + ev_clk_count->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_count->name, ev_clk_count); + idx++; + + // Current clock frequency + snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); + native_event_t *ev_clk_cur = &ntv_table.events[idx]; + ev_clk_cur->id = idx; + ev_clk_cur->name = strdup(name_buf); + ev_clk_cur->descr = strdup(descr_buf); + ev_clk_cur->device = d; + ev_clk_cur->value = 0; + ev_clk_cur->mode = PAPI_MODE_READ; + ev_clk_cur->variant = 0; + ev_clk_cur->subvariant = 1; + ev_clk_cur->open_func = open_simple; + ev_clk_cur->close_func = close_simple; + ev_clk_cur->start_func = start_simple; + ev_clk_cur->stop_func = stop_simple; + ev_clk_cur->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_cur->name, ev_clk_cur); + idx++; + + // Supported frequency levels + for (uint32_t fi = 0; fi < f.num_supported; ++fi) { + snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); + native_event_t *ev_clk_lvl = &ntv_table.events[idx]; + ev_clk_lvl->id = idx; + ev_clk_lvl->name = strdup(name_buf); + ev_clk_lvl->descr = strdup(descr_buf); + ev_clk_lvl->device = d; + ev_clk_lvl->value = 0; + ev_clk_lvl->mode = PAPI_MODE_READ; + ev_clk_lvl->variant = 0; + ev_clk_lvl->subvariant = fi + 2; + ev_clk_lvl->open_func = open_simple; + ev_clk_lvl->close_func = close_simple; + ev_clk_lvl->start_func = start_simple; + ev_clk_lvl->stop_func = stop_simple; + ev_clk_lvl->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); + idx++; + } + } + + /* GPU identification and topology metrics */ + for (int d = 0; d < gpu_count; ++d) { + uint16_t id16; + uint64_t id64; + //amdsmi_virtualization_mode_t vmode; + int32_t numa; + // GPU ID + if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); + native_event_t *ev_id = &ntv_table.events[idx]; + ev_id->id = idx; + ev_id->name = strdup(name_buf); + ev_id->descr = strdup(descr_buf); + ev_id->device = d; + ev_id->value = 0; + ev_id->mode = PAPI_MODE_READ; + ev_id->variant = 0; + ev_id->subvariant = 0; + ev_id->open_func = open_simple; + ev_id->close_func = close_simple; + ev_id->start_func = start_simple; + ev_id->stop_func = stop_simple; + ev_id->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_id->name, ev_id); + idx++; + } + // GPU Revision + if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); + native_event_t *ev_rev = &ntv_table.events[idx]; + ev_rev->id = idx; + ev_rev->name = strdup(name_buf); + ev_rev->descr = strdup(descr_buf); + ev_rev->device = d; + ev_rev->value = 0; + ev_rev->mode = PAPI_MODE_READ; + ev_rev->variant = 1; + ev_rev->subvariant = 0; + ev_rev->open_func = open_simple; + ev_rev->close_func = close_simple; + ev_rev->start_func = start_simple; + ev_rev->stop_func = stop_simple; + ev_rev->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_rev->name, ev_rev); + idx++; + } + // GPU Subsystem ID + if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); + native_event_t *ev_subid = &ntv_table.events[idx]; + ev_subid->id = idx; + ev_subid->name = strdup(name_buf); + ev_subid->descr = strdup(descr_buf); + ev_subid->device = d; + ev_subid->value = 0; + ev_subid->mode = PAPI_MODE_READ; + ev_subid->variant = 2; + ev_subid->subvariant = 0; + ev_subid->open_func = open_simple; + ev_subid->close_func = close_simple; + ev_subid->start_func = start_simple; + ev_subid->stop_func = stop_simple; + ev_subid->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_subid->name, ev_subid); + idx++; + } + // GPU BDF ID + if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); + native_event_t *ev_bdf = &ntv_table.events[idx]; + ev_bdf->id = idx; + ev_bdf->name = strdup(name_buf); + ev_bdf->descr = strdup(descr_buf); + ev_bdf->device = d; + ev_bdf->value = 0; + ev_bdf->mode = PAPI_MODE_READ; + ev_bdf->variant = 3; + ev_bdf->subvariant = 0; + ev_bdf->open_func = open_simple; + ev_bdf->close_func = close_simple; + ev_bdf->start_func = start_simple; + ev_bdf->stop_func = stop_simple; + ev_bdf->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_bdf->name, ev_bdf); + idx++; + } + /* + // GPU Virtualization Mode + if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); + native_event_t *ev_vmode = &ntv_table.events[idx]; + ev_vmode->id = idx; + ev_vmode->name = strdup(name_buf); + ev_vmode->descr = strdup(descr_buf); + ev_vmode->device = d; + ev_vmode->value = 0; + ev_vmode->mode = PAPI_MODE_READ; + ev_vmode->variant = 4; + ev_vmode->subvariant = 0; + ev_vmode->open_func = open_simple; + ev_vmode->close_func = close_simple; + ev_vmode->start_func = start_simple; + ev_vmode->stop_func = stop_simple; + ev_vmode->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_vmode->name, ev_vmode); + idx++; + } + */ + // GPU NUMA Node + if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); + native_event_t *ev_numa = &ntv_table.events[idx]; + ev_numa->id = idx; + ev_numa->name = strdup(name_buf); + ev_numa->descr = strdup(descr_buf); + ev_numa->device = d; + ev_numa->value = 0; + ev_numa->mode = PAPI_MODE_READ; + ev_numa->variant = 5; + ev_numa->subvariant = 0; + ev_numa->open_func = open_simple; + ev_numa->close_func = close_simple; + ev_numa->start_func = start_simple; + ev_numa->stop_func = stop_simple; + ev_numa->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_numa->name, ev_numa); + idx++; + } + } + + /* Energy consumption counter */ + for (int d = 0; d < gpu_count; ++d) { + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); + native_event_t *ev_energy = &ntv_table.events[idx]; + ev_energy->id = idx; + ev_energy->name = strdup(name_buf); + ev_energy->descr = strdup(descr_buf); + ev_energy->device = d; + ev_energy->value = 0; + ev_energy->mode = PAPI_MODE_READ; + ev_energy->variant = 0; + ev_energy->subvariant = 0; + ev_energy->open_func = open_simple; + ev_energy->close_func = close_simple; + ev_energy->start_func = start_simple; + ev_energy->stop_func = stop_simple; + ev_energy->access_func = access_amdsmi_energy_count; + htable_insert(htable, ev_energy->name, ev_energy); + idx++; + } + + /* GPU power profile information */ + for (int d = 0; d < gpu_count; ++d) { + amdsmi_power_profile_status_t profile_status; + if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); + native_event_t *ev_prof_count = &ntv_table.events[idx]; + ev_prof_count->id = idx; + ev_prof_count->name = strdup(name_buf); + ev_prof_count->descr = strdup(descr_buf); + ev_prof_count->device = d; + ev_prof_count->value = 0; + ev_prof_count->mode = PAPI_MODE_READ; + ev_prof_count->variant = 0; + ev_prof_count->subvariant = 0; + ev_prof_count->open_func = open_simple; + ev_prof_count->close_func = close_simple; + ev_prof_count->start_func = start_simple; + ev_prof_count->stop_func = stop_simple; + ev_prof_count->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_count->name, ev_prof_count); + idx++; + + snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); + native_event_t *ev_prof_curr = &ntv_table.events[idx]; + ev_prof_curr->id = idx; + ev_prof_curr->name = strdup(name_buf); + ev_prof_curr->descr = strdup(descr_buf); + ev_prof_curr->device = d; + ev_prof_curr->value = 0; + ev_prof_curr->mode = PAPI_MODE_READ; + ev_prof_curr->variant = 1; + ev_prof_curr->subvariant = 0; + ev_prof_curr->open_func = open_simple; + ev_prof_curr->close_func = close_simple; + ev_prof_curr->start_func = start_simple; + ev_prof_curr->stop_func = stop_simple; + ev_prof_curr->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_curr->name, ev_prof_curr); + idx++; + } + +#ifndef AMDSMI_DISABLE_ESMI + /* CPU metrics events */ + if (cpu_count > 0) { + // CPU socket-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + uint32_t pwr; + if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); + native_event_t *ev_pwr = &ntv_table.events[idx]; + ev_pwr->id = idx; + ev_pwr->name = strdup(name_buf); + ev_pwr->descr = strdup(descr_buf); + ev_pwr->device = dev; + ev_pwr->value = 0; + ev_pwr->mode = PAPI_MODE_READ; + ev_pwr->variant = 0; + ev_pwr->subvariant = 0; + ev_pwr->open_func = open_simple; + ev_pwr->close_func = close_simple; + ev_pwr->start_func = start_simple; + ev_pwr->stop_func = stop_simple; + ev_pwr->access_func = access_amdsmi_cpu_socket_power; + htable_insert(htable, ev_pwr->name, ev_pwr); + idx++; + } + uint64_t sock_energy; + if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); + native_event_t *ev_sock_energy = &ntv_table.events[idx]; + ev_sock_energy->id = idx; + ev_sock_energy->name = strdup(name_buf); + ev_sock_energy->descr = strdup(descr_buf); + ev_sock_energy->device = dev; + ev_sock_energy->value = 0; + ev_sock_energy->mode = PAPI_MODE_READ; + ev_sock_energy->variant = 0; + ev_sock_energy->subvariant = 0; + ev_sock_energy->open_func = open_simple; + ev_sock_energy->close_func = close_simple; + ev_sock_energy->start_func = start_simple; + ev_sock_energy->stop_func = stop_simple; + ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; + htable_insert(htable, ev_sock_energy->name, ev_sock_energy); + idx++; + } + uint16_t fmax, fmin; + if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); + native_event_t *ev_fmax = &ntv_table.events[idx]; + ev_fmax->id = idx; + ev_fmax->name = strdup(name_buf); + ev_fmax->descr = strdup(descr_buf); + ev_fmax->device = dev; + ev_fmax->value = 0; + ev_fmax->mode = PAPI_MODE_READ; + ev_fmax->variant = 1; + ev_fmax->subvariant = 0; + ev_fmax->open_func = open_simple; + ev_fmax->close_func = close_simple; + ev_fmax->start_func = start_simple; + ev_fmax->stop_func = stop_simple; + ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmax->name, ev_fmax); + idx++; + snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); + native_event_t *ev_fmin = &ntv_table.events[idx]; + ev_fmin->id = idx; + ev_fmin->name = strdup(name_buf); + ev_fmin->descr = strdup(descr_buf); + ev_fmin->device = dev; + ev_fmin->value = 0; + ev_fmin->mode = PAPI_MODE_READ; + ev_fmin->variant = 0; + ev_fmin->subvariant = 0; + ev_fmin->open_func = open_simple; + ev_fmin->close_func = close_simple; + ev_fmin->start_func = start_simple; + ev_fmin->stop_func = stop_simple; + ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmin->name, ev_fmin); + idx++; + } + uint32_t cap; + amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); + uint32_t cap_max; + amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); + if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { + if (st_cap == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); + native_event_t *ev_cap = &ntv_table.events[idx]; + ev_cap->id = idx; + ev_cap->name = strdup(name_buf); + ev_cap->descr = strdup(descr_buf); + ev_cap->device = dev; + ev_cap->value = 0; + ev_cap->mode = PAPI_MODE_READ; + ev_cap->variant = 0; + ev_cap->subvariant = 0; + ev_cap->open_func = open_simple; + ev_cap->close_func = close_simple; + ev_cap->start_func = start_simple; + ev_cap->stop_func = stop_simple; + ev_cap->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_cap->name, ev_cap); + idx++; + } + if (st_capmax == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); + native_event_t *ev_capmax = &ntv_table.events[idx]; + ev_capmax->id = idx; + ev_capmax->name = strdup(name_buf); + ev_capmax->descr = strdup(descr_buf); + ev_capmax->device = dev; + ev_capmax->value = 0; + ev_capmax->mode = PAPI_MODE_READ; + ev_capmax->variant = 1; + ev_capmax->subvariant = 0; + ev_capmax->open_func = open_simple; + ev_capmax->close_func = close_simple; + ev_capmax->start_func = start_simple; + ev_capmax->stop_func = stop_simple; + ev_capmax->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_capmax->name, ev_capmax); + idx++; + } + } + uint16_t freq; + char *src_type = NULL; + if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { + if (src_type) free(src_type); + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); + native_event_t *ev_flim = &ntv_table.events[idx]; + ev_flim->id = idx; + ev_flim->name = strdup(name_buf); + ev_flim->descr = strdup(descr_buf); + ev_flim->device = dev; + ev_flim->value = 0; + ev_flim->mode = PAPI_MODE_READ; + ev_flim->variant = 0; + ev_flim->subvariant = 0; + ev_flim->open_func = open_simple; + ev_flim->close_func = close_simple; + ev_flim->start_func = start_simple; + ev_flim->stop_func = stop_simple; + ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; + htable_insert(htable, ev_flim->name, ev_flim); + idx++; + } + amdsmi_smu_fw_version_t fw; + if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); + native_event_t *ev_fw = &ntv_table.events[idx]; + ev_fw->id = idx; + ev_fw->name = strdup(name_buf); + ev_fw->descr = strdup(descr_buf); + ev_fw->device = dev; + ev_fw->value = 0; + ev_fw->mode = PAPI_MODE_READ; + ev_fw->variant = 0; + ev_fw->subvariant = 0; + ev_fw->open_func = open_simple; + ev_fw->close_func = close_simple; + ev_fw->start_func = start_simple; + ev_fw->stop_func = stop_simple; + ev_fw->access_func = access_amdsmi_smu_fw_version; + htable_insert(htable, ev_fw->name, ev_fw); + idx++; + } + } + + // CPU core-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { + uint64_t energy; + if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); + native_event_t *ev_core_energy = &ntv_table.events[idx]; + ev_core_energy->id = idx; + ev_core_energy->name = strdup(name_buf); + ev_core_energy->descr = strdup(descr_buf); + ev_core_energy->device = dev; + ev_core_energy->value = 0; + ev_core_energy->mode = PAPI_MODE_READ; + ev_core_energy->variant = 0; + ev_core_energy->subvariant = c; + ev_core_energy->open_func = open_simple; + ev_core_energy->close_func = close_simple; + ev_core_energy->start_func = start_simple; + ev_core_energy->stop_func = stop_simple; + ev_core_energy->access_func = access_amdsmi_cpu_core_energy; + htable_insert(htable, ev_core_energy->name, ev_core_energy); + idx++; + } + uint32_t freq; + if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); + native_event_t *ev_core_flim = &ntv_table.events[idx]; + ev_core_flim->id = idx; + ev_core_flim->name = strdup(name_buf); + ev_core_flim->descr = strdup(descr_buf); + ev_core_flim->device = dev; + ev_core_flim->value = 0; + ev_core_flim->mode = PAPI_MODE_READ; + ev_core_flim->variant = 0; + ev_core_flim->subvariant = c; + ev_core_flim->open_func = open_simple; + ev_core_flim->close_func = close_simple; + ev_core_flim->start_func = start_simple; + ev_core_flim->stop_func = stop_simple; + ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; + htable_insert(htable, ev_core_flim->name, ev_core_flim); + idx++; + } + uint32_t boost; + if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); + native_event_t *ev_boost = &ntv_table.events[idx]; + ev_boost->id = idx; + ev_boost->name = strdup(name_buf); + ev_boost->descr = strdup(descr_buf); + ev_boost->device = dev; + ev_boost->value = 0; + ev_boost->mode = PAPI_MODE_READ; + ev_boost->variant = 0; + ev_boost->subvariant = c; + ev_boost->open_func = open_simple; + ev_boost->close_func = close_simple; + ev_boost->start_func = start_simple; + ev_boost->stop_func = stop_simple; + ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; + htable_insert(htable, ev_boost->name, ev_boost); + idx++; + } + } + } + + // CPU DIMM events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint8_t dimm = 0; dimm < 16; ++dimm) { + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_dimm_power_t dimm_pow; + amdsmi_temp_range_refresh_rate_t range_info; + amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); + amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); + amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); + if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { + continue; + } + if (st_temp == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); + native_event_t *ev_dimm_temp = &ntv_table.events[idx]; + ev_dimm_temp->id = idx; + ev_dimm_temp->name = strdup(name_buf); + ev_dimm_temp->descr = strdup(descr_buf); + ev_dimm_temp->device = dev; + ev_dimm_temp->value = 0; + ev_dimm_temp->mode = PAPI_MODE_READ; + ev_dimm_temp->variant = 0; + ev_dimm_temp->subvariant = dimm; + ev_dimm_temp->open_func = open_simple; + ev_dimm_temp->close_func = close_simple; + ev_dimm_temp->start_func = start_simple; + ev_dimm_temp->stop_func = stop_simple; + ev_dimm_temp->access_func = access_amdsmi_dimm_temp; + htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); + idx++; + } + if (st_power == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); + native_event_t *ev_dimm_pow = &ntv_table.events[idx]; + ev_dimm_pow->id = idx; + ev_dimm_pow->name = strdup(name_buf); + ev_dimm_pow->descr = strdup(descr_buf); + ev_dimm_pow->device = dev; + ev_dimm_pow->value = 0; + ev_dimm_pow->mode = PAPI_MODE_READ; + ev_dimm_pow->variant = 0; + ev_dimm_pow->subvariant = dimm; + ev_dimm_pow->open_func = open_simple; + ev_dimm_pow->close_func = close_simple; + ev_dimm_pow->start_func = start_simple; + ev_dimm_pow->stop_func = stop_simple; + ev_dimm_pow->access_func = access_amdsmi_dimm_power; + htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); + idx++; + } + if (st_range == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); + native_event_t *ev_range = &ntv_table.events[idx]; + ev_range->id = idx; + ev_range->name = strdup(name_buf); + ev_range->descr = strdup(descr_buf); + ev_range->device = dev; + ev_range->value = 0; + ev_range->mode = PAPI_MODE_READ; + ev_range->variant = 0; + ev_range->subvariant = dimm; + ev_range->open_func = open_simple; + ev_range->close_func = close_simple; + ev_range->start_func = start_simple; + ev_range->stop_func = stop_simple; + ev_range->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_range->name, ev_range); + idx++; + snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); + native_event_t *ev_ref = &ntv_table.events[idx]; + ev_ref->id = idx; + ev_ref->name = strdup(name_buf); + ev_ref->descr = strdup(descr_buf); + ev_ref->device = dev; + ev_ref->value = 0; + ev_ref->mode = PAPI_MODE_READ; + ev_ref->variant = 1; + ev_ref->subvariant = dimm; + ev_ref->open_func = open_simple; + ev_ref->close_func = close_simple; + ev_ref->start_func = start_simple; + ev_ref->stop_func = stop_simple; + ev_ref->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_ref->name, ev_ref); + idx++; + } + } + } + + // System-wide CPU events + uint32_t threads; + if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "threads_per_core"); + snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); + native_event_t *ev_threads = &ntv_table.events[idx]; + ev_threads->id = idx; + ev_threads->name = strdup(name_buf); + ev_threads->descr = strdup(descr_buf); + ev_threads->device = -1; + ev_threads->value = 0; + ev_threads->mode = PAPI_MODE_READ; + ev_threads->variant = 0; + ev_threads->subvariant = 0; + ev_threads->open_func = open_simple; + ev_threads->close_func = close_simple; + ev_threads->start_func = start_simple; + ev_threads->stop_func = stop_simple; + ev_threads->access_func = access_amdsmi_threads_per_core; + htable_insert(htable, ev_threads->name, ev_threads); + idx++; + } + uint32_t family; + if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_family"); + snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); + native_event_t *ev_family = &ntv_table.events[idx]; + ev_family->id = idx; + ev_family->name = strdup(name_buf); + ev_family->descr = strdup(descr_buf); + ev_family->device = -1; + ev_family->value = 0; + ev_family->mode = PAPI_MODE_READ; + ev_family->variant = 0; + ev_family->subvariant = 0; + ev_family->open_func = open_simple; + ev_family->close_func = close_simple; + ev_family->start_func = start_simple; + ev_family->stop_func = stop_simple; + ev_family->access_func = access_amdsmi_cpu_family; + htable_insert(htable, ev_family->name, ev_family); + idx++; + } + uint32_t model; + if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_model"); + snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); + native_event_t *ev_model = &ntv_table.events[idx]; + ev_model->id = idx; + ev_model->name = strdup(name_buf); + ev_model->descr = strdup(descr_buf); + ev_model->device = -1; + ev_model->value = 0; + ev_model->mode = PAPI_MODE_READ; + ev_model->variant = 0; + ev_model->subvariant = 0; + ev_model->open_func = open_simple; + ev_model->close_func = close_simple; + ev_model->start_func = start_simple; + ev_model->stop_func = stop_simple; + ev_model->access_func = access_amdsmi_cpu_model; + htable_insert(htable, ev_model->name, ev_model); + idx++; + } + } +#endif + + // Cleanup device capabilities cache + papi_free(dev_caps); + + ntv_table.count = idx; + return PAPI_OK; +} + +static int shutdown_event_table(void) { + // Remove all events from hash table and free their names/descr + for (int i = 0; i < ntv_table.count; ++i) { + htable_delete(htable, ntv_table.events[i].name); + papi_free(ntv_table.events[i].name); + papi_free(ntv_table.events[i].descr); + } + papi_free(ntv_table.events); + ntv_table.events = NULL; + ntv_table.count = 0; + return PAPI_OK; +} + +static int init_device_table(void) { + // Nothing to do (device_handles and device_count already set in amds_init) + return PAPI_OK; +} + +static int shutdown_device_table(void) { + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + } + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + device_count = 0; + gpu_count = 0; + cpu_count = 0; + return PAPI_OK; +} + +/* Access function implementations (read/write operations for each event) */ +static int access_amdsmi_temp_metric(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; /* ensure device handle is valid */ + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status = + amdsmi_get_temp_metric_p(device_handles[event->device], + (amdsmi_temperature_type_t) event->subvariant, + (amdsmi_temperature_metric_t) event->variant, + (int64_t *)&event->value); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); +} + +static int access_amdsmi_fan_rpms(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t speed = 0; + amdsmi_status_t status = + amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], + event->subvariant, &speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = speed; + return PAPI_OK; +} + +static int access_amdsmi_fan_speed(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; // writing fan speed not supported + } + int64_t val = 0; + amdsmi_status_t status = + amdsmi_get_gpu_fan_speed_p(device_handles[event->device], + event->subvariant, &val); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = val; + return PAPI_OK; +} + +static int access_amdsmi_mem_total(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = + amdsmi_get_total_memory_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) data; + return PAPI_OK; +} + +static int access_amdsmi_mem_usage(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = + amdsmi_get_memory_usage_p(device_handles[event->device], + (amdsmi_memory_type_t) event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) data; + return PAPI_OK; +} + +static int access_amdsmi_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode == PAPI_MODE_READ) { + // Read current power cap + amdsmi_power_cap_info_t info; + amdsmi_status_t status = + amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) info.power_cap; + return PAPI_OK; + } else if (mode == PAPI_MODE_WRITE) { + // Set new power cap (value expected in microWatts if API uses uW) + uint64_t new_cap = (uint64_t) event->value; + amdsmi_status_t status = + amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + } + return PAPI_ENOSUPP; +} + +static int access_amdsmi_power_cap_range(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_power_cap_info_t info; + amdsmi_status_t status = + amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 1) { + event->value = (int64_t) info.min_power_cap; + } else if (event->variant == 2) { + event->value = (int64_t) info.max_power_cap; + } else { + return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_power_average(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_power_info_t power; + amdsmi_status_t status = + amdsmi_get_power_info_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) power.average_socket_power; + return PAPI_OK; +} + +static int access_amdsmi_pci_throughput(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t sent = 0, received = 0, max_pkt = 0; + amdsmi_status_t status = + amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], + &sent, &received, &max_pkt); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: event->value = (int64_t) sent; break; + case 1: event->value = (int64_t) received; break; + case 2: event->value = (int64_t) max_pkt; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_pci_replay_counter(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t counter = 0; + amdsmi_status_t status = + amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) counter; + return PAPI_OK; +} + +static int access_amdsmi_clk_freq(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_frequencies_t freq_info; + amdsmi_status_t status = + amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific index + if (event->subvariant == 0) { + event->value = freq_info.num_supported; + } else if (event->subvariant == 1) { + if (freq_info.num_supported > 0) { + event->value = freq_info.frequency[0]; // assume first is current + } else { + event->value = 0; + } + } else { + int idx = event->subvariant - 2; + if (idx >= 0 && idx < (int)freq_info.num_supported) { + event->value = freq_info.frequency[idx]; + } else { + return PAPI_EMISC; + } + } + return PAPI_OK; +} + +static int access_amdsmi_gpu_metrics(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_gpu_metrics_t metrics; + amdsmi_status_t status = + amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Parsing of metrics is not fully implemented; just return OK. + // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) + return PAPI_OK; +} + +static int access_amdsmi_gpu_info(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status; + switch (event->variant) { + case 0: { + uint16_t id = 0; + status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = id; + } + break; + } + case 1: { + uint16_t rev = 0; + status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = rev; + } + break; + } + case 2: { + uint16_t subid = 0; + status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = subid; + } + break; + } + case 3: { + uint64_t bdfid = 0; + status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = (int64_t) bdfid; + } + break; + } + /*case 4: { + amdsmi_virtualization_mode_t mode_val; + status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = mode_val; + } + break; + }*/ + case 5: { + int32_t numa_node = -1; + status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = numa_node; + } + break; + } + default: + return PAPI_EMISC; + } + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); +} + +static int access_amdsmi_gpu_activity(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_engine_usage_t usage; + amdsmi_status_t status = + amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: event->value = usage.gfx_activity; break; + case 1: event->value = usage.umc_activity; break; + case 2: event->value = usage.mm_activity; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_fan_speed_max(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t max_speed = 0; + amdsmi_status_t status = + amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = max_speed; + return PAPI_OK; +} + +static int access_amdsmi_pci_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_pcie_bandwidth_t bw; + amdsmi_status_t status = + amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + uint32_t cur_index = bw.transfer_rate.current; + if (cur_index >= bw.transfer_rate.num_supported) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = bw.transfer_rate.num_supported; + break; + case 1: + event->value = (int64_t) bw.transfer_rate.frequency[cur_index]; + break; + case 2: + event->value = bw.lanes[cur_index]; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} + +static int access_amdsmi_energy_count(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + amdsmi_status_t status = + amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Convert energy count to microJoules + event->value = (int64_t) (energy * resolution); + return PAPI_OK; +} + +static int access_amdsmi_power_profile_status(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_power_profile_status_t status_info; + amdsmi_status_t status = + amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = status_info.num_profiles; + } else if (event->variant == 1) { + event->value = (int64_t) status_info.current; + } else { + return PAPI_EMISC; + } + return PAPI_OK; +} + +#ifndef AMDSMI_DISABLE_ESMI +/* The functions below implement CPU metrics access */ +static int access_amdsmi_cpu_socket_power(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t power = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) power; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) energy; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t freq = 0; + char *src = NULL; + amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (src) free(src); + event->value = freq; + return PAPI_OK; +} + +static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t fmax = 0, fmin = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = fmin; + } else { + event->value = fmax; + } + return PAPI_OK; +} + +static int access_amdsmi_cpu_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t cap_value = 0; + amdsmi_status_t status; + if (event->variant == 0) { + status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); + } else { + status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); + } + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) cap_value; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) energy; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t freq = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = freq; + return PAPI_OK; +} + +static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t boost = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = boost; + return PAPI_OK; +} + +static int access_amdsmi_dimm_temp(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_temp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t) dimm_temp.temp; + return PAPI_OK; +} + +static int access_amdsmi_dimm_power(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_power_t dimm_pow; + amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_pow); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = dimm_pow.power; + return PAPI_OK; +} + +static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_temp_range_refresh_rate_t rate; + amdsmi_status_t status = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t) event->subvariant, &rate); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = rate.range; + } else { + event->value = rate.ref_rate; + } + return PAPI_OK; +} + +static int access_amdsmi_threads_per_core(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t threads = 0; + amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = threads; + return PAPI_OK; +} + +static int access_amdsmi_cpu_family(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t family = 0; + amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = family; + return PAPI_OK; +} + +static int access_amdsmi_cpu_model(int mode, void *arg) { + (void) arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t model = 0; + amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *) arg)->value = model; + return PAPI_OK; +} + +static int access_amdsmi_smu_fw_version(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_smu_fw_version_t fw; + amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + int encoded = ((int) fw.major << 16) | ((int) fw.minor << 8) | fw.debug; + event->value = encoded; + return PAPI_OK; +} + +static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *) arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_processor_handle src = device_handles[event->device]; + amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; + uint64_t min_bw = 0, max_bw = 0; + amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = (int64_t) min_bw; + } else { + event->value = (int64_t) max_bw; + } + return PAPI_OK; +} + +#endif diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index 51f6e799e..f42ed6eec 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -1,416 +1,416 @@ -/** - * @file htable.h - * @author Giuseppe Congiu - * gcongiu@icl.utk.edu - * - */ -#ifndef __HTABLE_H__ -#define __HTABLE_H__ -#include -#include -#include "papi.h" -#include "papi_internal.h" -#include "papi_memory.h" - -#define HTABLE_NEEDS_TO_GROW(table) (table->size > 0 && table->capacity / table->size < 2) -#define HTABLE_NEEDS_TO_SHRINK(table) (table->size > 0 && table->capacity / table->size > 8) - -#define HTABLE_SUCCESS ( 0) -#define HTABLE_ENOVAL (-1) -#define HTABLE_EINVAL (-2) -#define HTABLE_ENOMEM (-3) - -struct hash_table_entry { - char *key; - void *val; - struct hash_table_entry *next; -}; - -struct hash_table { - uint32_t capacity; - uint32_t size; - struct hash_table_entry **buckets; -}; - -static uint64_t hash_func(const char *); - -static int create_table(uint64_t, struct hash_table **); -static int destroy_table(struct hash_table *); -static int rehash_table(struct hash_table *, struct hash_table *); -static int move_table(struct hash_table *, struct hash_table *); -static int check_n_resize_table(struct hash_table *); -static int destroy_table_entries(struct hash_table *); - -static int create_table_entry(const char *, void *, - struct hash_table_entry **); -static int destroy_table_entry(struct hash_table_entry *); -static int insert_table_entry(struct hash_table *, struct hash_table_entry *); -static int delete_table_entry(struct hash_table *, struct hash_table_entry *); -static int find_table_entry(struct hash_table *, const char *, - struct hash_table_entry **); - -static inline int -htable_init(void **handle) -{ - int htable_errno = HTABLE_SUCCESS; - -#define HTABLE_MIN_SIZE (8) - struct hash_table *table = NULL; - htable_errno = create_table(HTABLE_MIN_SIZE, &table); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - *handle = table; - - fn_exit: - return htable_errno; - fn_fail: - *handle = NULL; - goto fn_exit; -} - -static inline int -htable_shutdown(void *handle) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table *table = (struct hash_table *) handle; - - if (table == NULL) { - return HTABLE_EINVAL; - } - - destroy_table_entries(table); - destroy_table(table); - - return htable_errno; -} - -static inline int -htable_insert(void *handle, const char *key, void *in) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table *table = (struct hash_table *) handle; - - if (table == NULL || key == NULL) { - return HTABLE_EINVAL; - } - - struct hash_table_entry *entry = NULL; - htable_errno = find_table_entry(table, key, &entry); - if (htable_errno == HTABLE_SUCCESS) { - entry->val = in; - goto fn_exit; - } - - htable_errno = create_table_entry(key, in, &entry); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - htable_errno = insert_table_entry(table, entry); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - htable_errno = check_n_resize_table(table); - - fn_exit: - return htable_errno; - fn_fail: - if (entry) { - papi_free(entry); - } - goto fn_exit; -} - -static inline int -htable_delete(void *handle, const char *key) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table *table = (struct hash_table *) handle; - - if (table == NULL || key == NULL) { - return HTABLE_EINVAL; - } - - struct hash_table_entry *entry = NULL; - htable_errno = find_table_entry(table, key, &entry); - if (htable_errno != HTABLE_SUCCESS) { - return htable_errno; - } - - entry->val = NULL; - - htable_errno = delete_table_entry(table, entry); - if (htable_errno != HTABLE_SUCCESS) { - return htable_errno; - } - - htable_errno = destroy_table_entry(entry); - if (htable_errno != HTABLE_SUCCESS) { - return htable_errno; - } - - return check_n_resize_table(table); -} - -static inline int -htable_find(void *handle, const char *key, void **out) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table *table = (struct hash_table *) handle; - - if (table == NULL || key == NULL || out == NULL) { - return HTABLE_EINVAL; - } - - struct hash_table_entry *entry = NULL; - htable_errno = find_table_entry(table, key, &entry); - if (htable_errno != HTABLE_SUCCESS) { - return htable_errno; - } - - *out = entry->val; - return htable_errno; -} - -/** - * djb2 hash function - */ -uint64_t -hash_func(const char *string) -{ - uint64_t hash = 5381; - int c; - while ((c = *string++)) { - hash = ((hash << 5) + hash) + c; - } - return hash; -} - -int -create_table(uint64_t size, struct hash_table **table) -{ - int htable_errno = HTABLE_SUCCESS; - - *table = papi_calloc(1, sizeof(**table)); - if (table == NULL) { - htable_errno = HTABLE_ENOMEM; - goto fn_exit; - } - - (*table)->buckets = papi_calloc(size, sizeof(*(*table)->buckets)); - if ((*table)->buckets == NULL) { - htable_errno = HTABLE_ENOMEM; - goto fn_exit; - } - - (*table)->capacity = size; - - fn_exit: - return htable_errno; -} - -int -destroy_table(struct hash_table *table) -{ - int htable_errno = HTABLE_SUCCESS; - - if (table && table->buckets) { - papi_free(table->buckets); - } - - if (table) { - papi_free(table); - } - - return htable_errno; -} - -int -rehash_table(struct hash_table *old_table, struct hash_table *new_table) -{ - uint64_t old_id; - for (old_id = 0; old_id < old_table->capacity; ++old_id) { - struct hash_table_entry *entry = old_table->buckets[old_id]; - struct hash_table_entry *next; - while (entry) { - next = entry->next; - delete_table_entry(old_table, entry); - insert_table_entry(new_table, entry); - entry = next; - } - } - - return HTABLE_SUCCESS; -} - -int -move_table(struct hash_table *new_table, struct hash_table *old_table) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table_entry **old_buckets = old_table->buckets; - - old_table->capacity = new_table->capacity; - old_table->size = new_table->size; - old_table->buckets = new_table->buckets; - new_table->buckets = NULL; - papi_free(old_buckets); - - return htable_errno; -} - -int -destroy_table_entries(struct hash_table *table) -{ - int htable_errno = HTABLE_SUCCESS; - uint64_t i; - - for (i = 0; i < table->capacity; ++i) { - struct hash_table_entry *entry = table->buckets[i]; - struct hash_table_entry *tmp = NULL; - - while (entry) { - tmp = entry; - entry = entry->next; - delete_table_entry(table, tmp); - destroy_table_entry(tmp); - } - } - - return htable_errno; -} - -int -check_n_resize_table(struct hash_table *table) -{ - int htable_errno = HTABLE_SUCCESS; - struct hash_table *new_table = NULL; - char resize = - (HTABLE_NEEDS_TO_GROW(table) << 1) | HTABLE_NEEDS_TO_SHRINK(table); - - if (resize) { - uint64_t new_capacity = (resize & 0x2) ? - table->capacity * 2 : table->capacity / 2; - htable_errno = create_table(new_capacity, &new_table); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - htable_errno = rehash_table(table, new_table); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - move_table(new_table, table); - destroy_table(new_table); - } - - fn_exit: - return htable_errno; - fn_fail: - if (new_table) { - destroy_table(new_table); - } - goto fn_exit; -} - -int -create_table_entry(const char *key, void *val, struct hash_table_entry **entry) -{ - int htable_errno = HTABLE_SUCCESS; - - *entry = papi_calloc(1, sizeof(**entry)); - if (*entry == NULL) { - return HTABLE_ENOMEM; - } - (*entry)->key = strdup(key); - (*entry)->val = val; - (*entry)->next = NULL; - - return htable_errno; -} - -int -destroy_table_entry(struct hash_table_entry *entry) -{ - int htable_errno = HTABLE_SUCCESS; - papi_free(entry->key); - papi_free(entry); - return htable_errno; -} - -int -insert_table_entry(struct hash_table *table, struct hash_table_entry *entry) -{ - int htable_errno = HTABLE_SUCCESS; - - uint64_t id = hash_func(entry->key) % table->capacity; - - if (table->buckets[id]) { - entry->next = table->buckets[id]; - } - - table->buckets[id] = entry; - ++table->size; - - return htable_errno; -} - -int -delete_table_entry(struct hash_table *table, struct hash_table_entry *entry) -{ - int htable_errno = HTABLE_SUCCESS; - - uint64_t id = hash_func(entry->key) % table->capacity; - - if (table->buckets[id] == entry) { - table->buckets[id] = entry->next; - entry->next = NULL; - goto fn_exit; - } - - struct hash_table_entry *prev = table->buckets[id]; - struct hash_table_entry *curr = table->buckets[id]->next; - - while (curr) { - if (curr == entry) { - prev->next = curr->next; - curr->next = NULL; - break; - } - prev = prev->next; - curr = curr->next; - } - - fn_exit: - --table->size; - return htable_errno; -} - -int -find_table_entry(struct hash_table *table, const char *key, - struct hash_table_entry **entry) -{ - int htable_errno; - - uint64_t id = hash_func(key) % table->capacity; - struct hash_table_entry *head = table->buckets[id]; - if (head == NULL) { - htable_errno = HTABLE_ENOVAL; - goto fn_exit; - } - - struct hash_table_entry *curr = head; - while (curr && strcmp(curr->key, key)) { - curr = curr->next; - } - - *entry = curr; - htable_errno = (curr) ? HTABLE_SUCCESS : HTABLE_ENOVAL; - - fn_exit: - return htable_errno; -} -#endif /* End of __HTABLE_H__ */ +/** + * @file htable.h + * @author Giuseppe Congiu + * gcongiu@icl.utk.edu + * + */ +#ifndef __HTABLE_H__ +#define __HTABLE_H__ +#include +#include +#include "papi.h" +#include "papi_internal.h" +#include "papi_memory.h" + +#define HTABLE_NEEDS_TO_GROW(table) (table->size > 0 && table->capacity / table->size < 2) +#define HTABLE_NEEDS_TO_SHRINK(table) (table->size > 0 && table->capacity / table->size > 8) + +#define HTABLE_SUCCESS ( 0) +#define HTABLE_ENOVAL (-1) +#define HTABLE_EINVAL (-2) +#define HTABLE_ENOMEM (-3) + +struct hash_table_entry { + char *key; + void *val; + struct hash_table_entry *next; +}; + +struct hash_table { + uint32_t capacity; + uint32_t size; + struct hash_table_entry **buckets; +}; + +static uint64_t hash_func(const char *); + +static int create_table(uint64_t, struct hash_table **); +static int destroy_table(struct hash_table *); +static int rehash_table(struct hash_table *, struct hash_table *); +static int move_table(struct hash_table *, struct hash_table *); +static int check_n_resize_table(struct hash_table *); +static int destroy_table_entries(struct hash_table *); + +static int create_table_entry(const char *, void *, + struct hash_table_entry **); +static int destroy_table_entry(struct hash_table_entry *); +static int insert_table_entry(struct hash_table *, struct hash_table_entry *); +static int delete_table_entry(struct hash_table *, struct hash_table_entry *); +static int find_table_entry(struct hash_table *, const char *, + struct hash_table_entry **); + +static inline int +htable_init(void **handle) +{ + int htable_errno = HTABLE_SUCCESS; + +#define HTABLE_MIN_SIZE (8) + struct hash_table *table = NULL; + htable_errno = create_table(HTABLE_MIN_SIZE, &table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + *handle = table; + + fn_exit: + return htable_errno; + fn_fail: + *handle = NULL; + goto fn_exit; +} + +static inline int +htable_shutdown(void *handle) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL) { + return HTABLE_EINVAL; + } + + destroy_table_entries(table); + destroy_table(table); + + return htable_errno; +} + +static inline int +htable_insert(void *handle, const char *key, void *in) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno == HTABLE_SUCCESS) { + entry->val = in; + goto fn_exit; + } + + htable_errno = create_table_entry(key, in, &entry); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = insert_table_entry(table, entry); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = check_n_resize_table(table); + + fn_exit: + return htable_errno; + fn_fail: + if (entry) { + papi_free(entry); + } + goto fn_exit; +} + +static inline int +htable_delete(void *handle, const char *key) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + entry->val = NULL; + + htable_errno = delete_table_entry(table, entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + htable_errno = destroy_table_entry(entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + return check_n_resize_table(table); +} + +static inline int +htable_find(void *handle, const char *key, void **out) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *table = (struct hash_table *) handle; + + if (table == NULL || key == NULL || out == NULL) { + return HTABLE_EINVAL; + } + + struct hash_table_entry *entry = NULL; + htable_errno = find_table_entry(table, key, &entry); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + + *out = entry->val; + return htable_errno; +} + +/** + * djb2 hash function + */ +uint64_t +hash_func(const char *string) +{ + uint64_t hash = 5381; + int c; + while ((c = *string++)) { + hash = ((hash << 5) + hash) + c; + } + return hash; +} + +int +create_table(uint64_t size, struct hash_table **table) +{ + int htable_errno = HTABLE_SUCCESS; + + *table = papi_calloc(1, sizeof(**table)); + if (table == NULL) { + htable_errno = HTABLE_ENOMEM; + goto fn_exit; + } + + (*table)->buckets = papi_calloc(size, sizeof(*(*table)->buckets)); + if ((*table)->buckets == NULL) { + htable_errno = HTABLE_ENOMEM; + goto fn_exit; + } + + (*table)->capacity = size; + + fn_exit: + return htable_errno; +} + +int +destroy_table(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + + if (table && table->buckets) { + papi_free(table->buckets); + } + + if (table) { + papi_free(table); + } + + return htable_errno; +} + +int +rehash_table(struct hash_table *old_table, struct hash_table *new_table) +{ + uint64_t old_id; + for (old_id = 0; old_id < old_table->capacity; ++old_id) { + struct hash_table_entry *entry = old_table->buckets[old_id]; + struct hash_table_entry *next; + while (entry) { + next = entry->next; + delete_table_entry(old_table, entry); + insert_table_entry(new_table, entry); + entry = next; + } + } + + return HTABLE_SUCCESS; +} + +int +move_table(struct hash_table *new_table, struct hash_table *old_table) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table_entry **old_buckets = old_table->buckets; + + old_table->capacity = new_table->capacity; + old_table->size = new_table->size; + old_table->buckets = new_table->buckets; + new_table->buckets = NULL; + papi_free(old_buckets); + + return htable_errno; +} + +int +destroy_table_entries(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + uint64_t i; + + for (i = 0; i < table->capacity; ++i) { + struct hash_table_entry *entry = table->buckets[i]; + struct hash_table_entry *tmp = NULL; + + while (entry) { + tmp = entry; + entry = entry->next; + delete_table_entry(table, tmp); + destroy_table_entry(tmp); + } + } + + return htable_errno; +} + +int +check_n_resize_table(struct hash_table *table) +{ + int htable_errno = HTABLE_SUCCESS; + struct hash_table *new_table = NULL; + char resize = + (HTABLE_NEEDS_TO_GROW(table) << 1) | HTABLE_NEEDS_TO_SHRINK(table); + + if (resize) { + uint64_t new_capacity = (resize & 0x2) ? + table->capacity * 2 : table->capacity / 2; + htable_errno = create_table(new_capacity, &new_table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + htable_errno = rehash_table(table, new_table); + if (htable_errno != HTABLE_SUCCESS) { + goto fn_fail; + } + + move_table(new_table, table); + destroy_table(new_table); + } + + fn_exit: + return htable_errno; + fn_fail: + if (new_table) { + destroy_table(new_table); + } + goto fn_exit; +} + +int +create_table_entry(const char *key, void *val, struct hash_table_entry **entry) +{ + int htable_errno = HTABLE_SUCCESS; + + *entry = papi_calloc(1, sizeof(**entry)); + if (*entry == NULL) { + return HTABLE_ENOMEM; + } + (*entry)->key = strdup(key); + (*entry)->val = val; + (*entry)->next = NULL; + + return htable_errno; +} + +int +destroy_table_entry(struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + papi_free(entry->key); + papi_free(entry); + return htable_errno; +} + +int +insert_table_entry(struct hash_table *table, struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + + uint64_t id = hash_func(entry->key) % table->capacity; + + if (table->buckets[id]) { + entry->next = table->buckets[id]; + } + + table->buckets[id] = entry; + ++table->size; + + return htable_errno; +} + +int +delete_table_entry(struct hash_table *table, struct hash_table_entry *entry) +{ + int htable_errno = HTABLE_SUCCESS; + + uint64_t id = hash_func(entry->key) % table->capacity; + + if (table->buckets[id] == entry) { + table->buckets[id] = entry->next; + entry->next = NULL; + goto fn_exit; + } + + struct hash_table_entry *prev = table->buckets[id]; + struct hash_table_entry *curr = table->buckets[id]->next; + + while (curr) { + if (curr == entry) { + prev->next = curr->next; + curr->next = NULL; + break; + } + prev = prev->next; + curr = curr->next; + } + + fn_exit: + --table->size; + return htable_errno; +} + +int +find_table_entry(struct hash_table *table, const char *key, + struct hash_table_entry **entry) +{ + int htable_errno; + + uint64_t id = hash_func(key) % table->capacity; + struct hash_table_entry *head = table->buckets[id]; + if (head == NULL) { + htable_errno = HTABLE_ENOVAL; + goto fn_exit; + } + + struct hash_table_entry *curr = head; + while (curr && strcmp(curr->key, key)) { + curr = curr->next; + } + + *entry = curr; + htable_errno = (curr) ? HTABLE_SUCCESS : HTABLE_ENOVAL; + + fn_exit: + return htable_errno; +} +#endif /* End of __HTABLE_H__ */ diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 005898337..d8faef4ab 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -1,343 +1,343 @@ -//----------------------------------------------------------------------------- -// @file linux-amd-smi.c -// @ingroup amd_smi_components -// -// @brief PAPI component for AMD GPU management via the AMD SMI library. -//----------------------------------------------------------------------------- - -#include -#include -#include -#include - -#include "papi.h" -#include "papi_internal.h" -#include "papi_vector.h" -#include "papi_memory.h" -#include "extras.h" -#include "amds.h" - -typedef struct { - int initialized; - int state; - int component_id; -} amdsmi_context_t; - -typedef struct { - unsigned int *events_id; - int num_events; - int component_id; - amds_ctx_t amds_ctx; -} amdsmi_control_t; - -extern unsigned int _amd_smi_lock; -papi_vector_t _amd_smi_vector; - -static int _amd_smi_init_private(void); - -static int _amd_smi_check_n_initialize(void) { - if (!_amd_smi_vector.cmp_info.initialized) - return _amd_smi_init_private(); - return _amd_smi_vector.cmp_info.disabled; -} - -static int _amd_smi_init_thread(hwd_context_t *ctx) { - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - memset(amdsmi_ctx, 0, sizeof(*amdsmi_ctx)); - amdsmi_ctx->initialized = 1; - amdsmi_ctx->component_id = _amd_smi_vector.cmp_info.CmpIdx; - return PAPI_OK; -} - -static int _amd_smi_init_component(int cidx) { - _amd_smi_vector.cmp_info.CmpIdx = cidx; - _amd_smi_vector.cmp_info.num_native_events = -1; - _amd_smi_vector.cmp_info.num_cntrs = -1; - _amd_smi_vector.cmp_info.num_mpx_cntrs = -1; - _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; - - sprintf(_amd_smi_vector.cmp_info.disabled_reason, - "Not initialized. Access an AMD SMI event to initialize."); - _amd_smi_vector.cmp_info.disabled = PAPI_EDELAY_INIT; - - return PAPI_EDELAY_INIT; -} - -static int evt_get_count(int *count) { - unsigned int event_code = 0; - if (amds_evt_enum(&event_code, PAPI_ENUM_FIRST) == PAPI_OK) { - ++(*count); - } - while (amds_evt_enum(&event_code, PAPI_ENUM_EVENTS) == PAPI_OK) { - ++(*count); - } - return PAPI_OK; -} - -static int _amd_smi_init_private(void) { - int papi_errno = PAPI_OK; - PAPI_lock(COMPONENT_LOCK); - - if (_amd_smi_vector.cmp_info.initialized) { - papi_errno = _amd_smi_vector.cmp_info.disabled; - goto fn_exit; - } - - papi_errno = amds_init(); // initialize AMD SMI library and events - if (papi_errno != PAPI_OK) { - _amd_smi_vector.cmp_info.disabled = papi_errno; - const char *error_str; - amds_err_get_last(&error_str); - sprintf(_amd_smi_vector.cmp_info.disabled_reason, "%s", error_str); - goto fn_fail; - } - - int count = 0; - papi_errno = evt_get_count(&count); - _amd_smi_vector.cmp_info.num_native_events = count; - _amd_smi_vector.cmp_info.num_cntrs = count; - _amd_smi_vector.cmp_info.num_mpx_cntrs = count; - -fn_exit: - _amd_smi_vector.cmp_info.initialized = 1; - _amd_smi_vector.cmp_info.disabled = papi_errno; - PAPI_unlock(COMPONENT_LOCK); - return papi_errno; -fn_fail: - goto fn_exit; -} - -static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { - (void) ctrl; - return _amd_smi_check_n_initialize(); -} - -static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) { - int papi_errno = PAPI_OK; - unsigned int *events = papi_calloc(ntvCount, sizeof(*events)); - if (events == NULL) { - return PAPI_ENOMEM; - } - for (int i = 0; i < ntvCount; ++i) { - events[i] = ntvInfo[i].ni_event; - ntvInfo[i].ni_position = i; - } - papi_free(ctl->events_id); - ctl->events_id = events; - ctl->num_events = ntvCount; - return papi_errno; -} - -static int try_open_events(amdsmi_control_t *ctl) { - // No pre-opening needed; events will be opened in amds_ctx_start - return PAPI_OK; -} - -static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, - int nativeCount, hwd_context_t *ctx) { - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { - return PAPI_EMISC; - } - papi_errno = update_native_events(amdsmi_ctl, nativeInfo, nativeCount); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return try_open_events(amdsmi_ctl); -} - -static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - int papi_errno = PAPI_OK; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - - if (amdsmi_ctx->state & AMDS_EVENTS_OPENED) { - return PAPI_EMISC; - } - papi_errno = amds_ctx_open(amdsmi_ctl->events_id, amdsmi_ctl->num_events, &amdsmi_ctl->amds_ctx); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - amdsmi_ctx->state = AMDS_EVENTS_OPENED; - - papi_errno = amds_ctx_start(amdsmi_ctl->amds_ctx); - if (papi_errno != PAPI_OK) { - // If start fails, close the context and reset state - amds_ctx_close(amdsmi_ctl->amds_ctx); - amdsmi_ctx->state = 0; - amdsmi_ctl->amds_ctx = NULL; - return papi_errno; - } - amdsmi_ctx->state |= AMDS_EVENTS_RUNNING; - return PAPI_OK; -} - -static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) { - (void) flags; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - return amds_ctx_read(amdsmi_ctl->amds_ctx, values); -} - -static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - return amds_ctx_write(amdsmi_ctl->amds_ctx, values); -} - -static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - int papi_errno = PAPI_OK; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; - papi_errno = amds_ctx_close(amdsmi_ctl->amds_ctx); - amdsmi_ctx->state = 0; - amdsmi_ctl->amds_ctx = NULL; - return papi_errno; -} - -static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - return amds_ctx_reset(amdsmi_ctl->amds_ctx); -} - -static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (amdsmi_ctl->amds_ctx != NULL) { - // Context should have been closed in _amd_smi_stop - return PAPI_EMISC; - } - papi_free(amdsmi_ctl->events_id); - amdsmi_ctl->events_id = NULL; - amdsmi_ctl->num_events = 0; - return PAPI_OK; -} - -static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_ctx->state = 0; - amdsmi_ctx->initialized = 0; - return PAPI_OK; -} - -static int _amd_smi_shutdown_component(void) { - if (!_amd_smi_vector.cmp_info.initialized) { - return PAPI_EMISC; - } - if (_amd_smi_vector.cmp_info.disabled != PAPI_OK) { - return PAPI_EMISC; - } - int papi_errno = amds_shutdown(); - _amd_smi_vector.cmp_info.initialized = 0; - return papi_errno; -} - -static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) { - (void) ctx; (void) code; (void) option; - // No special control actions needed for this component - return PAPI_OK; -} - -static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) { - (void) ctrl; (void) domain; - // Only default user/kernel domain is supported - return PAPI_OK; -} - -/* Native event API functions */ -static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) { - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return amds_evt_enum(EventCode, modifier); -} - -static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) { - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return amds_evt_code_to_name(EventCode, name, len); -} - -static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) { - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return amds_evt_name_to_code(name, EventCode); -} - -static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) { - int papi_errno = _amd_smi_check_n_initialize(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - return amds_evt_code_to_descr(EventCode, desc, len); -} - -/* Export the component interface */ -papi_vector_t _amd_smi_vector = { - .cmp_info = { - .name = "amd_smi", - .short_name = "amd_smi", - .version = "1.0", - .description = "AMD GPU System Management Interface via AMD SMI library", - .default_domain = PAPI_DOM_USER, - .default_granularity = PAPI_GRN_THR, - .available_granularities = PAPI_GRN_THR, - .hardware_intr_sig = PAPI_INT_SIGNAL, - .fast_real_timer = 0, - .fast_virtual_timer = 0, - .attach = 0, - .attach_must_ptrace = 0, - .available_domains = PAPI_DOM_USER | PAPI_DOM_KERNEL, - }, - .size = { - .context = sizeof(amdsmi_context_t), - .control_state = sizeof(amdsmi_control_t), - .reg_value = sizeof(int), - .reg_alloc = sizeof(int), - }, - .init_thread = _amd_smi_init_thread, - .init_component = _amd_smi_init_component, - .init_control_state = _amd_smi_init_control_state, - .update_control_state = _amd_smi_update_control_state, - .start = _amd_smi_start, - .stop = _amd_smi_stop, - .read = _amd_smi_read, - .write = _amd_smi_write, - .reset = _amd_smi_reset, - .cleanup_eventset = _amd_smi_cleanup_eventset, - .shutdown_thread = _amd_smi_shutdown_thread, - .shutdown_component = _amd_smi_shutdown_component, - .ctl = _amd_smi_ctrl, - .set_domain = _amd_smi_set_domain, - .ntv_enum_events = _amd_smi_ntv_enum_events, - .ntv_code_to_name = _amd_smi_ntv_code_to_name, - .ntv_name_to_code = _amd_smi_ntv_name_to_code, - .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, -}; +//----------------------------------------------------------------------------- +// @file linux-amd-smi.c +// @ingroup amd_smi_components +// +// @brief PAPI component for AMD GPU management via the AMD SMI library. +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +#include "papi.h" +#include "papi_internal.h" +#include "papi_vector.h" +#include "papi_memory.h" +#include "extras.h" +#include "amds.h" + +typedef struct { + int initialized; + int state; + int component_id; +} amdsmi_context_t; + +typedef struct { + unsigned int *events_id; + int num_events; + int component_id; + amds_ctx_t amds_ctx; +} amdsmi_control_t; + +extern unsigned int _amd_smi_lock; +papi_vector_t _amd_smi_vector; + +static int _amd_smi_init_private(void); + +static int _amd_smi_check_n_initialize(void) { + if (!_amd_smi_vector.cmp_info.initialized) + return _amd_smi_init_private(); + return _amd_smi_vector.cmp_info.disabled; +} + +static int _amd_smi_init_thread(hwd_context_t *ctx) { + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + memset(amdsmi_ctx, 0, sizeof(*amdsmi_ctx)); + amdsmi_ctx->initialized = 1; + amdsmi_ctx->component_id = _amd_smi_vector.cmp_info.CmpIdx; + return PAPI_OK; +} + +static int _amd_smi_init_component(int cidx) { + _amd_smi_vector.cmp_info.CmpIdx = cidx; + _amd_smi_vector.cmp_info.num_native_events = -1; + _amd_smi_vector.cmp_info.num_cntrs = -1; + _amd_smi_vector.cmp_info.num_mpx_cntrs = -1; + _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; + + sprintf(_amd_smi_vector.cmp_info.disabled_reason, + "Not initialized. Access an AMD SMI event to initialize."); + _amd_smi_vector.cmp_info.disabled = PAPI_EDELAY_INIT; + + return PAPI_EDELAY_INIT; +} + +static int evt_get_count(int *count) { + unsigned int event_code = 0; + if (amds_evt_enum(&event_code, PAPI_ENUM_FIRST) == PAPI_OK) { + ++(*count); + } + while (amds_evt_enum(&event_code, PAPI_ENUM_EVENTS) == PAPI_OK) { + ++(*count); + } + return PAPI_OK; +} + +static int _amd_smi_init_private(void) { + int papi_errno = PAPI_OK; + PAPI_lock(COMPONENT_LOCK); + + if (_amd_smi_vector.cmp_info.initialized) { + papi_errno = _amd_smi_vector.cmp_info.disabled; + goto fn_exit; + } + + papi_errno = amds_init(); // initialize AMD SMI library and events + if (papi_errno != PAPI_OK) { + _amd_smi_vector.cmp_info.disabled = papi_errno; + const char *error_str; + amds_err_get_last(&error_str); + sprintf(_amd_smi_vector.cmp_info.disabled_reason, "%s", error_str); + goto fn_fail; + } + + int count = 0; + papi_errno = evt_get_count(&count); + _amd_smi_vector.cmp_info.num_native_events = count; + _amd_smi_vector.cmp_info.num_cntrs = count; + _amd_smi_vector.cmp_info.num_mpx_cntrs = count; + +fn_exit: + _amd_smi_vector.cmp_info.initialized = 1; + _amd_smi_vector.cmp_info.disabled = papi_errno; + PAPI_unlock(COMPONENT_LOCK); + return papi_errno; +fn_fail: + goto fn_exit; +} + +static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { + (void) ctrl; + return _amd_smi_check_n_initialize(); +} + +static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) { + int papi_errno = PAPI_OK; + unsigned int *events = papi_calloc(ntvCount, sizeof(*events)); + if (events == NULL) { + return PAPI_ENOMEM; + } + for (int i = 0; i < ntvCount; ++i) { + events[i] = ntvInfo[i].ni_event; + ntvInfo[i].ni_position = i; + } + papi_free(ctl->events_id); + ctl->events_id = events; + ctl->num_events = ntvCount; + return papi_errno; +} + +static int try_open_events(amdsmi_control_t *ctl) { + // No pre-opening needed; events will be opened in amds_ctx_start + return PAPI_OK; +} + +static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, + int nativeCount, hwd_context_t *ctx) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { + return PAPI_EMISC; + } + papi_errno = update_native_events(amdsmi_ctl, nativeInfo, nativeCount); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return try_open_events(amdsmi_ctl); +} + +static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + int papi_errno = PAPI_OK; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + + if (amdsmi_ctx->state & AMDS_EVENTS_RUNNING) { + return PAPI_EMISC; + } + papi_errno = amds_ctx_open(amdsmi_ctl->events_id, amdsmi_ctl->num_events, &amdsmi_ctl->amds_ctx); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_ctx->state = AMDS_EVENTS_OPENED; + + papi_errno = amds_ctx_start(amdsmi_ctl->amds_ctx); + if (papi_errno != PAPI_OK) { + // If start fails, close the context and reset state + amds_ctx_close(amdsmi_ctl->amds_ctx); + amdsmi_ctx->state = 0; + amdsmi_ctl->amds_ctx = NULL; + return papi_errno; + } + amdsmi_ctx->state |= AMDS_EVENTS_RUNNING; + return PAPI_OK; +} + +static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) { + (void) flags; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amds_ctx_read(amdsmi_ctl->amds_ctx, values); +} + +static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amds_ctx_write(amdsmi_ctl->amds_ctx, values); +} + +static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + int papi_errno = PAPI_OK; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; + papi_errno = amds_ctx_close(amdsmi_ctl->amds_ctx); + amdsmi_ctx->state &= ~AMDS_EVENTS_OPENED; + amdsmi_ctl->amds_ctx = NULL; + return papi_errno; +} + +static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_EMISC; + } + return amds_ctx_reset(amdsmi_ctl->amds_ctx); +} + +static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; + if (amdsmi_ctl->amds_ctx != NULL) { + // Context should have been closed in _amd_smi_stop + return PAPI_EMISC; + } + papi_free(amdsmi_ctl->events_id); + amdsmi_ctl->events_id = NULL; + amdsmi_ctl->num_events = 0; + return PAPI_OK; +} + +static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; + amdsmi_ctx->state = 0; + amdsmi_ctx->initialized = 0; + return PAPI_OK; +} + +static int _amd_smi_shutdown_component(void) { + if (!_amd_smi_vector.cmp_info.initialized) { + return PAPI_EMISC; + } + if (_amd_smi_vector.cmp_info.disabled != PAPI_OK) { + return PAPI_EMISC; + } + int papi_errno = amds_shutdown(); + _amd_smi_vector.cmp_info.initialized = 0; + return papi_errno; +} + +static int _amd_smi_ctrl(hwd_context_t *ctx, int code, _papi_int_option_t *option) { + (void) ctx; (void) code; (void) option; + // No special control actions needed for this component + return PAPI_OK; +} + +static int _amd_smi_set_domain(hwd_control_state_t *ctrl, int domain) { + (void) ctrl; (void) domain; + // Only default user/kernel domain is supported + return PAPI_OK; +} + +/* Native event API functions */ +static int _amd_smi_ntv_enum_events(unsigned int *EventCode, int modifier) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_enum(EventCode, modifier); +} + +static int _amd_smi_ntv_code_to_name(unsigned int EventCode, char *name, int len) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_code_to_name(EventCode, name, len); +} + +static int _amd_smi_ntv_name_to_code(const char *name, unsigned int *EventCode) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_name_to_code(name, EventCode); +} + +static int _amd_smi_ntv_code_to_descr(unsigned int EventCode, char *desc, int len) { + int papi_errno = _amd_smi_check_n_initialize(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + return amds_evt_code_to_descr(EventCode, desc, len); +} + +/* Export the component interface */ +papi_vector_t _amd_smi_vector = { + .cmp_info = { + .name = "amd_smi", + .short_name = "amd_smi", + .version = "1.0", + .description = "AMD GPU System Management Interface via AMD SMI library", + .default_domain = PAPI_DOM_USER, + .default_granularity = PAPI_GRN_THR, + .available_granularities = PAPI_GRN_THR, + .hardware_intr_sig = PAPI_INT_SIGNAL, + .fast_real_timer = 0, + .fast_virtual_timer = 0, + .attach = 0, + .attach_must_ptrace = 0, + .available_domains = PAPI_DOM_USER | PAPI_DOM_KERNEL, + }, + .size = { + .context = sizeof(amdsmi_context_t), + .control_state = sizeof(amdsmi_control_t), + .reg_value = 1, + .reg_alloc = 1, + }, + .init_thread = _amd_smi_init_thread, + .init_component = _amd_smi_init_component, + .init_control_state = _amd_smi_init_control_state, + .update_control_state = _amd_smi_update_control_state, + .start = _amd_smi_start, + .stop = _amd_smi_stop, + .read = _amd_smi_read, + .write = _amd_smi_write, + .reset = _amd_smi_reset, + .cleanup_eventset = _amd_smi_cleanup_eventset, + .shutdown_thread = _amd_smi_shutdown_thread, + .shutdown_component = _amd_smi_shutdown_component, + .ctl = _amd_smi_ctrl, + .set_domain = _amd_smi_set_domain, + .ntv_enum_events = _amd_smi_ntv_enum_events, + .ntv_code_to_name = _amd_smi_ntv_code_to_name, + .ntv_name_to_code = _amd_smi_ntv_name_to_code, + .ntv_code_to_descr = _amd_smi_ntv_code_to_descr, +}; From 9a55093cca3bb5eee43f31682d07e38be634c8e5 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 13 Jul 2025 23:49:33 +0000 Subject: [PATCH 018/147] test2 --- src/components/amd_smi/amds.c | 80 ++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 34 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a8971a78d..b5e055d4f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -825,6 +825,12 @@ static int init_event_table(void) { ntv_table.count = 0; int idx = 0; + // Safety check - if no devices, return early + if (device_count <= 0) { + ntv_table.events = NULL; + return PAPI_OK; + } + // Keep original allocation approach ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); if (!ntv_table.events) { @@ -834,32 +840,36 @@ static int init_event_table(void) { char name_buf[PAPI_MAX_STR_LEN]; char descr_buf[PAPI_MAX_STR_LEN]; - // Cache sensor availability to avoid repeated API calls - typedef struct { - bool temp_sensors_available[8]; // Max 8 temperature sensor types - bool fan_rpm_available; - bool fan_speed_available; - bool power_available; - bool memory_available; - bool activity_available; - } device_capabilities_t; - - device_capabilities_t *dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); - if (!dev_caps) { - papi_free(ntv_table.events); - ntv_table.events = NULL; - return PAPI_ENOMEM; - } - - // Pre-probe device capabilities once + // Define sensor arrays first amdsmi_temperature_type_t temp_sensors[] = { AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX }; + + // Cache sensor availability to avoid repeated API calls + typedef struct { + int temp_sensors_available[8]; // Max 8 temperature sensor types + int fan_rpm_available; + int fan_speed_available; + int power_available; + int memory_available; + int activity_available; + } device_capabilities_t; - for (int d = 0; d < gpu_count; ++d) { + device_capabilities_t *dev_caps = NULL; + if (gpu_count > 0) { + dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); + if (!dev_caps) { + papi_free(ntv_table.events); + ntv_table.events = NULL; + return PAPI_ENOMEM; + } + } + + // Pre-probe device capabilities once (only if we have GPUs) + for (int d = 0; d < gpu_count && dev_caps; ++d) { // Probe temperature sensors once per device for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { int64_t dummy_val; @@ -899,11 +909,11 @@ static int init_event_table(void) { "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - use cached availability */ + /* Temperature sensors - use cached availability if available */ for (int d = 0; d < gpu_count; ++d) { for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { - // Skip if sensor not available (already probed) - if (!dev_caps[d].temp_sensors_available[si]) { + // Skip if sensor not available (already probed) or no cache + if (!dev_caps || !dev_caps[d].temp_sensors_available[si]) { continue; } @@ -911,7 +921,7 @@ static int init_event_table(void) { for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow if (idx >= 512 * device_count) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; // Too many events } @@ -931,7 +941,7 @@ static int init_event_table(void) { ev->name = strdup(name_buf); ev->descr = strdup(descr_buf); if (!ev->name || !ev->descr) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev->device = d; @@ -950,12 +960,12 @@ static int init_event_table(void) { } } - /* Fan metrics - use cached availability */ + /* Fan metrics - use cached availability if available */ for (int d = 0; d < gpu_count; ++d) { /* Register Fan RPM if available */ - if (dev_caps[d].fan_rpm_available) { + if (dev_caps && dev_caps[d].fan_rpm_available) { if (idx >= 512 * device_count) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } @@ -968,7 +978,7 @@ static int init_event_table(void) { ev_rpm->name = strdup(name_buf); ev_rpm->descr = strdup(descr_buf); if (!ev_rpm->name || !ev_rpm->descr) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_rpm->device = d; @@ -986,9 +996,9 @@ static int init_event_table(void) { } /* Register Fan SPEED if available */ - if (dev_caps[d].fan_speed_available) { + if (dev_caps && dev_caps[d].fan_speed_available) { if (idx >= 512 * device_count) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } @@ -1001,7 +1011,7 @@ static int init_event_table(void) { ev_fan->name = strdup(name_buf); ev_fan->descr = strdup(descr_buf); if (!ev_fan->name || !ev_fan->descr) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_fan->device = d; @@ -1022,7 +1032,7 @@ static int init_event_table(void) { uint64_t dummy_u64; if (amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } @@ -1035,7 +1045,7 @@ static int init_event_table(void) { ev_fanmax->name = strdup(name_buf); ev_fanmax->descr = strdup(descr_buf); if (!ev_fanmax->name || !ev_fanmax->descr) { - papi_free(dev_caps); + if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_fanmax->device = d; @@ -2070,7 +2080,9 @@ static int init_event_table(void) { #endif // Cleanup device capabilities cache - papi_free(dev_caps); + if (dev_caps) { + papi_free(dev_caps); + } ntv_table.count = idx; return PAPI_OK; From 9fd3545afb2d739f5a854b9b692752985783545f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 13 Jul 2025 23:57:49 +0000 Subject: [PATCH 019/147] test3 --- src/components/amd_smi/amds.c | 130 ++++++++++++++++++---------------- 1 file changed, 69 insertions(+), 61 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b5e055d4f..a7baea84f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -692,23 +692,16 @@ amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) if (new_ctx == NULL) { return PAPI_ENOMEM; } - new_ctx->events_id = (unsigned int *) papi_calloc(num_events, sizeof(unsigned int)); - if (new_ctx->events_id == NULL) { - papi_free(new_ctx); - return PAPI_ENOMEM; - } - memcpy(new_ctx->events_id, event_ids, num_events * sizeof(unsigned int)); + new_ctx->events_id = event_ids; // Store pointer (original approach) new_ctx->num_events = num_events; new_ctx->counters = (long long *) papi_calloc(num_events, sizeof(long long)); if (new_ctx->counters == NULL) { - papi_free(new_ctx->events_id); papi_free(new_ctx); return PAPI_ENOMEM; } // Acquire devices needed by these events to avoid conflicts int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); if (papi_errno != PAPI_OK) { - papi_free(new_ctx->events_id); papi_free(new_ctx->counters); papi_free(new_ctx); return papi_errno; @@ -723,7 +716,6 @@ amds_ctx_close(amds_ctx_t ctx) if (!ctx) return PAPI_OK; // release device usage release_devices(&ctx->device_mask); - papi_free(ctx->events_id); papi_free(ctx->counters); papi_free(ctx); return PAPI_OK; @@ -789,37 +781,6 @@ amds_ctx_reset(amds_ctx_t ctx) return PAPI_OK; } -/* Helper function to register a native event with error checking */ -static int register_native_event(int *idx, const char *name, const char *descr, - int device, int mode, int variant, int subvariant, - int (*access_func)(int, native_event_t *)) { - if (*idx >= 512 * device_count) { - return PAPI_ENOSUPP; // Too many events - } - - native_event_t *ev = &ntv_table.events[*idx]; - ev->id = *idx; - ev->name = strdup(name); - ev->descr = strdup(descr); - if (!ev->name || !ev->descr) { - return PAPI_ENOMEM; - } - ev->device = device; - ev->value = 0; - ev->mode = mode; - ev->variant = variant; - ev->subvariant = subvariant; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_func; - - htable_insert(htable, ev->name, ev); - (*idx)++; - return PAPI_OK; -} - /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { ntv_table.count = 0; @@ -847,10 +808,11 @@ static int init_event_table(void) { AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX }; + const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); // Cache sensor availability to avoid repeated API calls typedef struct { - int temp_sensors_available[8]; // Max 8 temperature sensor types + int temp_sensors_available[8]; // Must match temp_sensors array size int fan_rpm_available; int fan_speed_available; int power_available; @@ -868,32 +830,63 @@ static int init_event_table(void) { } } - // Pre-probe device capabilities once (only if we have GPUs) - for (int d = 0; d < gpu_count && dev_caps; ++d) { - // Probe temperature sensors once per device - for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { + // Pre-probe device capabilities once (only if we have GPUs and valid handles) + for (int d = 0; d < gpu_count && dev_caps && device_handles; ++d) { + // Safety check for device handle + if (!device_handles[d]) { + continue; + } + + // Probe temperature sensors once per device - use safe bounds + for (int si = 0; si < num_temp_sensors && si < 8; ++si) { int64_t dummy_val; - dev_caps[d].temp_sensors_available[si] = - (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); + if (amdsmi_get_temp_metric_p) { + dev_caps[d].temp_sensors_available[si] = + (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].temp_sensors_available[si] = 0; + } } // Probe other capabilities once per device int64_t dummy; - dev_caps[d].fan_rpm_available = - (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); - dev_caps[d].fan_speed_available = - (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + if (amdsmi_get_gpu_fan_rpms_p) { + dev_caps[d].fan_rpm_available = + (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].fan_rpm_available = 0; + } + + if (amdsmi_get_gpu_fan_speed_p) { + dev_caps[d].fan_speed_available = + (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].fan_speed_available = 0; + } uint64_t dummy_u64; - dev_caps[d].power_available = - (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS); - dev_caps[d].memory_available = - (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS); + if (amdsmi_get_gpu_power_ave_p) { + dev_caps[d].power_available = + (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].power_available = 0; + } + + if (amdsmi_get_memory_usage_p) { + dev_caps[d].memory_available = + (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].memory_available = 0; + } amdsmi_engine_usage_t dummy_activity; - dev_caps[d].activity_available = - (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS); + if (amdsmi_get_gpu_activity_p) { + dev_caps[d].activity_available = + (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS); + } else { + dev_caps[d].activity_available = 0; + } } // Now register events using cached capabilities @@ -911,7 +904,12 @@ static int init_event_table(void) { /* Temperature sensors - use cached availability if available */ for (int d = 0; d < gpu_count; ++d) { - for (size_t si = 0; si < sizeof(temp_sensors)/sizeof(temp_sensors[0]); ++si) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + + for (int si = 0; si < num_temp_sensors && si < 8; ++si) { // Skip if sensor not available (already probed) or no cache if (!dev_caps || !dev_caps[d].temp_sensors_available[si]) { continue; @@ -925,7 +923,11 @@ static int init_event_table(void) { return PAPI_ENOSUPP; // Too many events } - // Only test the specific metric if sensor is available + // Only test the specific metric if sensor is available and function exists + if (!amdsmi_get_temp_metric_p) { + continue; + } + int64_t metric_val; if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { @@ -962,6 +964,11 @@ static int init_event_table(void) { /* Fan metrics - use cached availability if available */ for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + /* Register Fan RPM if available */ if (dev_caps && dev_caps[d].fan_rpm_available) { if (idx >= 512 * device_count) { @@ -1030,7 +1037,8 @@ static int init_event_table(void) { /* Register Fan Max Speed - probe once since not cached */ uint64_t dummy_u64; - if (amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_fan_speed_max_p && + amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; From 74520f14c18d3578c615ea95ccab4df502f074f1 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 00:15:30 +0000 Subject: [PATCH 020/147] test4 --- src/components/amd_smi/amds.c | 135 ++++++++++++++++++---------------- 1 file changed, 70 insertions(+), 65 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a7baea84f..b852a0994 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -810,7 +810,10 @@ static int init_event_table(void) { }; const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); - // Cache sensor availability to avoid repeated API calls + // Disable capability caching for faster initialization (can be enabled later) + const int use_capability_caching = 0; // Set to 1 to enable caching + + // Cache sensor availability to avoid repeated API calls (optional) typedef struct { int temp_sensors_available[8]; // Must match temp_sensors array size int fan_rpm_available; @@ -821,71 +824,43 @@ static int init_event_table(void) { } device_capabilities_t; device_capabilities_t *dev_caps = NULL; - if (gpu_count > 0) { + if (use_capability_caching && gpu_count > 0) { dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); if (!dev_caps) { papi_free(ntv_table.events); ntv_table.events = NULL; return PAPI_ENOMEM; } - } - - // Pre-probe device capabilities once (only if we have GPUs and valid handles) - for (int d = 0; d < gpu_count && dev_caps && device_handles; ++d) { - // Safety check for device handle - if (!device_handles[d]) { - continue; - } - // Probe temperature sensors once per device - use safe bounds - for (int si = 0; si < num_temp_sensors && si < 8; ++si) { + // Pre-probe device capabilities (only if caching enabled) + for (int d = 0; d < gpu_count && device_handles; ++d) { + if (!device_handles[d]) continue; + + // Minimal probing for speed int64_t dummy_val; + int temp_supported = 0; if (amdsmi_get_temp_metric_p) { - dev_caps[d].temp_sensors_available[si] = - (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].temp_sensors_available[si] = 0; + temp_supported = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, + AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); } - } - - // Probe other capabilities once per device - int64_t dummy; - if (amdsmi_get_gpu_fan_rpms_p) { - dev_caps[d].fan_rpm_available = - (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].fan_rpm_available = 0; - } - - if (amdsmi_get_gpu_fan_speed_p) { - dev_caps[d].fan_speed_available = - (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].fan_speed_available = 0; - } - - uint64_t dummy_u64; - if (amdsmi_get_gpu_power_ave_p) { - dev_caps[d].power_available = - (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].power_available = 0; - } - - if (amdsmi_get_memory_usage_p) { - dev_caps[d].memory_available = - (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].memory_available = 0; - } - - amdsmi_engine_usage_t dummy_activity; - if (amdsmi_get_gpu_activity_p) { - dev_caps[d].activity_available = - (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS); - } else { - dev_caps[d].activity_available = 0; + for (int si = 0; si < 8; ++si) { + dev_caps[d].temp_sensors_available[si] = temp_supported; + } + + int64_t dummy; + dev_caps[d].fan_rpm_available = amdsmi_get_gpu_fan_rpms_p ? + (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].fan_speed_available = dev_caps[d].fan_rpm_available; + + uint64_t dummy_u64; + dev_caps[d].power_available = amdsmi_get_gpu_power_ave_p ? + (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].memory_available = amdsmi_get_memory_usage_p ? + (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + + amdsmi_engine_usage_t dummy_activity; + dev_caps[d].activity_available = amdsmi_get_gpu_activity_p ? + (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) : 0; } } @@ -902,7 +877,7 @@ static int init_event_table(void) { "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - use cached availability if available */ + /* Temperature sensors - use original approach or cached availability */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -910,9 +885,19 @@ static int init_event_table(void) { } for (int si = 0; si < num_temp_sensors && si < 8; ++si) { - // Skip if sensor not available (already probed) or no cache - if (!dev_caps || !dev_caps[d].temp_sensors_available[si]) { - continue; + // Use cache if available, otherwise probe each sensor (original behavior) + if (use_capability_caching && dev_caps) { + if (!dev_caps[d].temp_sensors_available[si]) { + continue; + } + } else { + // Original behavior - probe each sensor + int64_t dummy_val; + if (!amdsmi_get_temp_metric_p || + amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + AMDSMI_TEMP_CURRENT, &dummy_val) != AMDSMI_STATUS_SUCCESS) { + continue; // skip this sensor if not present + } } // Register all metrics for this available sensor @@ -923,7 +908,7 @@ static int init_event_table(void) { return PAPI_ENOSUPP; // Too many events } - // Only test the specific metric if sensor is available and function exists + // Test specific metric (original behavior) if (!amdsmi_get_temp_metric_p) { continue; } @@ -962,7 +947,7 @@ static int init_event_table(void) { } } - /* Fan metrics - use cached availability if available */ + /* Fan metrics - use original approach or cached availability */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -970,7 +955,17 @@ static int init_event_table(void) { } /* Register Fan RPM if available */ - if (dev_caps && dev_caps[d].fan_rpm_available) { + int fan_rpm_available = 0; + if (use_capability_caching && dev_caps) { + fan_rpm_available = dev_caps[d].fan_rpm_available; + } else { + // Original behavior - probe directly + int64_t dummy; + fan_rpm_available = (amdsmi_get_gpu_fan_rpms_p && + amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + } + + if (fan_rpm_available) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; @@ -1003,7 +998,17 @@ static int init_event_table(void) { } /* Register Fan SPEED if available */ - if (dev_caps && dev_caps[d].fan_speed_available) { + int fan_speed_available = 0; + if (use_capability_caching && dev_caps) { + fan_speed_available = dev_caps[d].fan_speed_available; + } else { + // Original behavior - probe directly + int64_t dummy; + fan_speed_available = (amdsmi_get_gpu_fan_speed_p && + amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); + } + + if (fan_speed_available) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; @@ -1035,7 +1040,7 @@ static int init_event_table(void) { idx++; } - /* Register Fan Max Speed - probe once since not cached */ + /* Register Fan Max Speed - always probe directly */ uint64_t dummy_u64; if (amdsmi_get_gpu_fan_speed_max_p && amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { From 475a8a70bc2d6d95070267333851aff96a5e584d Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 00:32:58 +0000 Subject: [PATCH 021/147] test5 --- src/components/amd_smi/amds.c | 60 ++++++++++------------------------- 1 file changed, 16 insertions(+), 44 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b852a0994..748e6eb93 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -783,6 +783,11 @@ amds_ctx_reset(amds_ctx_t ctx) /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { + // Check if event table is already initialized + if (ntv_table.count > 0 && ntv_table.events != NULL) { + return PAPI_OK; // Already initialized, skip expensive rebuild + } + ntv_table.count = 0; int idx = 0; @@ -810,10 +815,7 @@ static int init_event_table(void) { }; const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); - // Disable capability caching for faster initialization (can be enabled later) - const int use_capability_caching = 0; // Set to 1 to enable caching - - // Cache sensor availability to avoid repeated API calls (optional) + // Cache sensor availability to avoid repeated API calls typedef struct { int temp_sensors_available[8]; // Must match temp_sensors array size int fan_rpm_available; @@ -824,7 +826,7 @@ static int init_event_table(void) { } device_capabilities_t; device_capabilities_t *dev_caps = NULL; - if (use_capability_caching && gpu_count > 0) { + if (gpu_count > 0) { dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); if (!dev_caps) { papi_free(ntv_table.events); @@ -832,7 +834,7 @@ static int init_event_table(void) { return PAPI_ENOMEM; } - // Pre-probe device capabilities (only if caching enabled) + // Pre-probe device capabilities for caching for (int d = 0; d < gpu_count && device_handles; ++d) { if (!device_handles[d]) continue; @@ -877,7 +879,7 @@ static int init_event_table(void) { "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - use original approach or cached availability */ + /* Temperature sensors - use cached availability */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -885,19 +887,9 @@ static int init_event_table(void) { } for (int si = 0; si < num_temp_sensors && si < 8; ++si) { - // Use cache if available, otherwise probe each sensor (original behavior) - if (use_capability_caching && dev_caps) { - if (!dev_caps[d].temp_sensors_available[si]) { - continue; - } - } else { - // Original behavior - probe each sensor - int64_t dummy_val; - if (!amdsmi_get_temp_metric_p || - amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - AMDSMI_TEMP_CURRENT, &dummy_val) != AMDSMI_STATUS_SUCCESS) { - continue; // skip this sensor if not present - } + // Skip if sensor not available (already cached) or no cache + if (!dev_caps || !dev_caps[d].temp_sensors_available[si]) { + continue; } // Register all metrics for this available sensor @@ -908,7 +900,7 @@ static int init_event_table(void) { return PAPI_ENOSUPP; // Too many events } - // Test specific metric (original behavior) + // Test specific metric (still needed for individual metric support) if (!amdsmi_get_temp_metric_p) { continue; } @@ -947,7 +939,7 @@ static int init_event_table(void) { } } - /* Fan metrics - use original approach or cached availability */ + /* Fan metrics - use cached availability */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -955,17 +947,7 @@ static int init_event_table(void) { } /* Register Fan RPM if available */ - int fan_rpm_available = 0; - if (use_capability_caching && dev_caps) { - fan_rpm_available = dev_caps[d].fan_rpm_available; - } else { - // Original behavior - probe directly - int64_t dummy; - fan_rpm_available = (amdsmi_get_gpu_fan_rpms_p && - amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); - } - - if (fan_rpm_available) { + if (dev_caps && dev_caps[d].fan_rpm_available) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; @@ -998,17 +980,7 @@ static int init_event_table(void) { } /* Register Fan SPEED if available */ - int fan_speed_available = 0; - if (use_capability_caching && dev_caps) { - fan_speed_available = dev_caps[d].fan_speed_available; - } else { - // Original behavior - probe directly - int64_t dummy; - fan_speed_available = (amdsmi_get_gpu_fan_speed_p && - amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS); - } - - if (fan_speed_available) { + if (dev_caps && dev_caps[d].fan_speed_available) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; From 69db5f7390a7076de8c8fd103e300536f9f406db Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 00:47:48 +0000 Subject: [PATCH 022/147] test6 --- src/components/amd_smi/amds.c | 37 ++++++++++++++++------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 748e6eb93..69c535a59 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -417,6 +417,11 @@ static int unload_amdsmi_sym(void) { /* Initialize AMD SMI library and discover devices */ int amds_init(void) { + // Check if already initialized to avoid expensive re-initialization + if (device_handles != NULL && device_count > 0) { + return PAPI_OK; // Already initialized + } + int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; @@ -834,35 +839,27 @@ static int init_event_table(void) { return PAPI_ENOMEM; } - // Pre-probe device capabilities for caching + // Pre-probe device capabilities for caching - minimal approach for (int d = 0; d < gpu_count && device_handles; ++d) { if (!device_handles[d]) continue; - // Minimal probing for speed + // Ultra-minimal probing - assume if one thing works, others likely work too int64_t dummy_val; - int temp_supported = 0; + int basic_support = 0; if (amdsmi_get_temp_metric_p) { - temp_supported = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, + basic_support = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); } + + // Set all capabilities based on basic support test (aggressive optimization) for (int si = 0; si < 8; ++si) { - dev_caps[d].temp_sensors_available[si] = temp_supported; + dev_caps[d].temp_sensors_available[si] = basic_support; } - - int64_t dummy; - dev_caps[d].fan_rpm_available = amdsmi_get_gpu_fan_rpms_p ? - (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; - dev_caps[d].fan_speed_available = dev_caps[d].fan_rpm_available; - - uint64_t dummy_u64; - dev_caps[d].power_available = amdsmi_get_gpu_power_ave_p ? - (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; - dev_caps[d].memory_available = amdsmi_get_memory_usage_p ? - (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; - - amdsmi_engine_usage_t dummy_activity; - dev_caps[d].activity_available = amdsmi_get_gpu_activity_p ? - (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].fan_rpm_available = basic_support; + dev_caps[d].fan_speed_available = basic_support; + dev_caps[d].power_available = basic_support; + dev_caps[d].memory_available = basic_support; + dev_caps[d].activity_available = basic_support; } } From ca36d9352a3573ec30201518e01e4d6d4f109fdc Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 01:20:39 +0000 Subject: [PATCH 023/147] test7 --- src/components/amd_smi/amds.c | 59 ++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 69c535a59..7c9b3a1c5 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -493,7 +493,7 @@ int amds_init(void) { goto fn_fail; } - // Retrieve GPU processor handles for each socket + // Retrieve GPU processor handles for each socket - optimized to reduce allocations for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count_local = 0; processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; @@ -501,23 +501,18 @@ int amds_init(void) { if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { continue; // no GPU on this socket or error } - amdsmi_processor_handle *gpu_handles = (amdsmi_processor_handle *) papi_calloc(gpu_count_local, sizeof(*gpu_handles)); - if (!gpu_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for GPU handles on socket %u.", s); - papi_free(sockets); - goto fn_fail; - } + + // Use the main device_handles array directly to avoid extra allocation + amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); if (status == AMDSMI_STATUS_SUCCESS) { - for (uint32_t g = 0; g < gpu_count_local; ++g) { - device_handles[device_count++] = gpu_handles[g]; - } + device_count += gpu_count_local; } - papi_free(gpu_handles); } papi_free(sockets); - // (No need to check device_count here; CPU may still be added even if GPU count is zero) + + // Set gpu_count for use in event table initialization + gpu_count = device_count; // All devices added so far are GPUs #ifndef AMDSMI_DISABLE_ESMI // Retrieve CPU socket handles @@ -839,27 +834,41 @@ static int init_event_table(void) { return PAPI_ENOMEM; } - // Pre-probe device capabilities for caching - minimal approach + // Pre-probe device capabilities for caching - proper testing for (int d = 0; d < gpu_count && device_handles; ++d) { if (!device_handles[d]) continue; - // Ultra-minimal probing - assume if one thing works, others likely work too + // Test temperature capability properly int64_t dummy_val; - int basic_support = 0; + int temp_supported = 0; if (amdsmi_get_temp_metric_p) { - basic_support = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, + temp_supported = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); } - - // Set all capabilities based on basic support test (aggressive optimization) for (int si = 0; si < 8; ++si) { - dev_caps[d].temp_sensors_available[si] = basic_support; + dev_caps[d].temp_sensors_available[si] = temp_supported; } - dev_caps[d].fan_rpm_available = basic_support; - dev_caps[d].fan_speed_available = basic_support; - dev_caps[d].power_available = basic_support; - dev_caps[d].memory_available = basic_support; - dev_caps[d].activity_available = basic_support; + + // Test fan capabilities + int64_t dummy; + dev_caps[d].fan_rpm_available = amdsmi_get_gpu_fan_rpms_p ? + (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].fan_speed_available = amdsmi_get_gpu_fan_speed_p ? + (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; + + // Test power capability + uint64_t dummy_u64; + dev_caps[d].power_available = amdsmi_get_gpu_power_ave_p ? + (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + + // Test memory capability + dev_caps[d].memory_available = amdsmi_get_memory_usage_p ? + (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + + // Test activity capability + amdsmi_engine_usage_t dummy_activity; + dev_caps[d].activity_available = amdsmi_get_gpu_activity_p ? + (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) : 0; } } From 749426e7338dffccdc4d44fa88f5fba00cbe0dd4 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 01:57:42 +0000 Subject: [PATCH 024/147] test8 --- src/components/amd_smi/amds.c | 85 +++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 7c9b3a1c5..d7f0555bf 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -885,7 +885,7 @@ static int init_event_table(void) { "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - use cached availability */ + /* Temperature sensors - use cached availability properly */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -898,7 +898,7 @@ static int init_event_table(void) { continue; } - // Register all metrics for this available sensor + // Register all metrics for this available sensor - trust the cache for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow if (idx >= 512 * device_count) { @@ -906,17 +906,12 @@ static int init_event_table(void) { return PAPI_ENOSUPP; // Too many events } - // Test specific metric (still needed for individual metric support) + // Skip if function not available if (!amdsmi_get_temp_metric_p) { continue; } - int64_t metric_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { - continue; /* skip this metric if not supported */ - } - + // Trust the cache - don't re-probe each metric (this was the inefficiency!) snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", @@ -1054,15 +1049,25 @@ static int init_event_table(void) { } } - /* VRAM memory metrics */ + /* VRAM memory metrics - use cached availability */ for (int d = 0; d < gpu_count; ++d) { - uint64_t mem_dummy = 0; - - /* total VRAM bytes */ - if (amdsmi_get_total_memory_p(device_handles[d], - AMDSMI_MEM_TYPE_VRAM, - &mem_dummy) == AMDSMI_STATUS_SUCCESS) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + + // Use cached memory availability instead of probing every time + if (!dev_caps || !dev_caps[d].memory_available) { + continue; // Skip if memory not available + } + /* total VRAM bytes - trust the cache */ + if (amdsmi_get_total_memory_p) { + if (idx >= 512 * device_count) { + if (dev_caps) papi_free(dev_caps); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1072,6 +1077,10 @@ static int init_event_table(void) { ev->id = idx; ev->name = strdup(name_buf); ev->descr= strdup(descr_buf); + if (!ev->name || !ev->descr) { + if (dev_caps) papi_free(dev_caps); + return PAPI_ENOMEM; + } ev->device = d; ev->value = 0; ev->mode = PAPI_MODE_READ; @@ -1086,11 +1095,13 @@ static int init_event_table(void) { ++idx; } - /* used VRAM bytes */ - if (amdsmi_get_memory_usage_p(device_handles[d], - AMDSMI_MEM_TYPE_VRAM, - &mem_dummy) == AMDSMI_STATUS_SUCCESS) { - + /* used VRAM bytes - trust the cache */ + if (amdsmi_get_memory_usage_p) { + if (idx >= 512 * device_count) { + if (dev_caps) papi_free(dev_caps); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1100,6 +1111,10 @@ static int init_event_table(void) { ev->id = idx; ev->name = strdup(name_buf); ev->descr= strdup(descr_buf); + if (!ev->name || !ev->descr) { + if (dev_caps) papi_free(dev_caps); + return PAPI_ENOMEM; + } ev->device = d; ev->value = 0; ev->mode = PAPI_MODE_READ; @@ -1117,16 +1132,12 @@ static int init_event_table(void) { /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < gpu_count; ++d) { - // Check support for power metrics on this device - amdsmi_power_info_t pinfo; - amdsmi_power_cap_info_t cinfo; - amdsmi_status_t stat_avg = amdsmi_get_power_info_p(device_handles[d], &pinfo); - amdsmi_status_t stat_cap = amdsmi_get_power_cap_info_p(device_handles[d], 0, &cinfo); - if (stat_avg != AMDSMI_STATUS_SUCCESS && stat_cap != AMDSMI_STATUS_SUCCESS) { - // Device supports neither power reading nor capping - continue; + // Use cached power availability instead of probing every time + if (!dev_caps || !dev_caps[d].power_available) { + continue; // Skip if power not available (already cached) } - if (stat_avg == AMDSMI_STATUS_SUCCESS) { + // Register power average event (trust the cache) + if (amdsmi_get_power_info_p) { // Average power consumption (in Watts or microWatts) snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); @@ -1147,7 +1158,8 @@ static int init_event_table(void) { htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); idx++; } - if (stat_cap == AMDSMI_STATUS_SUCCESS) { + // Register power cap events (if power cap functions are available) + if (amdsmi_get_power_cap_info_p) { // Current power cap limit snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); @@ -1318,12 +1330,17 @@ static int init_event_table(void) { } /* Additional GPU metrics and system information */ - /* GPU engine utilization metrics (gfx, umc, mm) */ + /* GPU engine utilization metrics - use cached availability */ for (int d = 0; d < gpu_count; ++d) { - amdsmi_engine_usage_t usage; - if (amdsmi_get_gpu_activity_p(device_handles[d], &usage) != AMDSMI_STATUS_SUCCESS) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { continue; } + + // Use cached activity availability instead of probing every time + if (!dev_caps || !dev_caps[d].activity_available) { + continue; // Skip if activity not available + } snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); native_event_t *ev_gfx = &ntv_table.events[idx]; From f16c31f9821b6fe2f600e0a43b734da815ade20f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 02:14:30 +0000 Subject: [PATCH 025/147] test8 --- src/components/amd_smi/amds.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index d7f0555bf..bc609098f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -838,7 +838,7 @@ static int init_event_table(void) { for (int d = 0; d < gpu_count && device_handles; ++d) { if (!device_handles[d]) continue; - // Test temperature capability properly + // Test temperature capability properly - check function exists first int64_t dummy_val; int temp_supported = 0; if (amdsmi_get_temp_metric_p) { @@ -849,26 +849,26 @@ static int init_event_table(void) { dev_caps[d].temp_sensors_available[si] = temp_supported; } - // Test fan capabilities + // Test fan capabilities - check functions exist first int64_t dummy; - dev_caps[d].fan_rpm_available = amdsmi_get_gpu_fan_rpms_p ? - (amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; - dev_caps[d].fan_speed_available = amdsmi_get_gpu_fan_speed_p ? - (amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].fan_rpm_available = (amdsmi_get_gpu_fan_rpms_p && + amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; + dev_caps[d].fan_speed_available = (amdsmi_get_gpu_fan_speed_p && + amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test power capability + // Test power capability - check function exists first uint64_t dummy_u64; - dev_caps[d].power_available = amdsmi_get_gpu_power_ave_p ? - (amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].power_available = (amdsmi_get_gpu_power_ave_p && + amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test memory capability - dev_caps[d].memory_available = amdsmi_get_memory_usage_p ? - (amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) : 0; + // Test memory capability - check function exists first + dev_caps[d].memory_available = (amdsmi_get_memory_usage_p && + amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test activity capability + // Test activity capability - check function exists first amdsmi_engine_usage_t dummy_activity; - dev_caps[d].activity_available = amdsmi_get_gpu_activity_p ? - (amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) : 0; + dev_caps[d].activity_available = (amdsmi_get_gpu_activity_p && + amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; } } @@ -1341,6 +1341,9 @@ static int init_event_table(void) { if (!dev_caps || !dev_caps[d].activity_available) { continue; // Skip if activity not available } + + // Register GFX activity event - check function exists and trust the cache + if (amdsmi_get_gpu_activity_p) { snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); native_event_t *ev_gfx = &ntv_table.events[idx]; @@ -1397,6 +1400,7 @@ static int init_event_table(void) { ev_mm->access_func = access_amdsmi_gpu_activity; htable_insert(htable, ev_mm->name, ev_mm); idx++; + } // End of amdsmi_get_gpu_activity_p function check } /* GPU clock frequency levels */ From f5ad45420a14aa0de1014982bc9d24880ff1d944 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 02:41:27 +0000 Subject: [PATCH 026/147] test8 --- src/components/amd_smi/amds.c | 111 ++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 37 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index bc609098f..04da2e8bc 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3,13 +3,21 @@ #include #include #include +#include #include "papi.h" #include "papi_memory.h" #include "amds.h" #include "htable.h" -#define AMDSMI_DISABLE_ESMI +// #define AMDSMI_DISABLE_ESMI + +// Timing helper functions +static double get_time_ms() { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; +} unsigned int _amd_smi_lock; @@ -417,25 +425,37 @@ static int unload_amdsmi_sym(void) { /* Initialize AMD SMI library and discover devices */ int amds_init(void) { + double start_time = get_time_ms(); + printf("[AMD_SMI TIMING] Starting amds_init at %.3f ms\n", start_time); + // Check if already initialized to avoid expensive re-initialization if (device_handles != NULL && device_count > 0) { + printf("[AMD_SMI TIMING] Already initialized, skipping (%.3f ms)\n", get_time_ms() - start_time); return PAPI_OK; // Already initialized } + double step_start = get_time_ms(); int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } + printf("[AMD_SMI TIMING] Symbol loading took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); //AMDSMI_INIT_AMD_CPUS amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } + printf("[AMD_SMI TIMING] amdsmi_init_p took %.3f ms\n", get_time_ms() - step_start); + + step_start = get_time_ms(); htable_init(&htable); + printf("[AMD_SMI TIMING] htable_init took %.3f ms\n", get_time_ms() - step_start); // Discover GPU and CPU devices + step_start = get_time_ms(); uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { @@ -443,6 +463,8 @@ int amds_init(void) { papi_errno = PAPI_ENOEVNT; goto fn_fail; } + printf("[AMD_SMI TIMING] Socket discovery took %.3f ms (found %u sockets)\n", + get_time_ms() - step_start, socket_count); amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); if (!sockets) { papi_errno = PAPI_ENOMEM; @@ -584,12 +606,16 @@ int amds_init(void) { } // Initialize the native event table for all discovered metrics + step_start = get_time_ms(); papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing the native event table."); goto fn_fail; } + printf("[AMD_SMI TIMING] Event table initialization took %.3f ms\n", get_time_ms() - step_start); + ntv_table_p = &ntv_table; + printf("[AMD_SMI TIMING] Total amds_init took %.3f ms\n", get_time_ms() - start_time); return PAPI_OK; fn_fail: @@ -783,8 +809,13 @@ amds_ctx_reset(amds_ctx_t ctx) /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { + double start_time = get_time_ms(); + printf("[AMD_SMI TIMING] Starting init_event_table\n"); + // Check if event table is already initialized if (ntv_table.count > 0 && ntv_table.events != NULL) { + printf("[AMD_SMI TIMING] Event table already initialized, skipping (%.3f ms)\n", + get_time_ms() - start_time); return PAPI_OK; // Already initialized, skip expensive rebuild } @@ -794,6 +825,8 @@ static int init_event_table(void) { // Safety check - if no devices, return early if (device_count <= 0) { ntv_table.events = NULL; + printf("[AMD_SMI TIMING] No devices found, init_event_table took %.3f ms\n", + get_time_ms() - start_time); return PAPI_OK; } @@ -815,17 +848,17 @@ static int init_event_table(void) { }; const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); - // Cache sensor availability to avoid repeated API calls + // Cache sensor availability to avoid repeated API calls - but still test individual events typedef struct { - int temp_sensors_available[8]; // Must match temp_sensors array size - int fan_rpm_available; - int fan_speed_available; - int power_available; - int memory_available; - int activity_available; + int device_supports_temp; // Does device support ANY temperature? + int device_supports_fan; // Does device support ANY fan metrics? + int device_supports_power; // Does device support ANY power metrics? + int device_supports_memory; // Does device support ANY memory metrics? + int device_supports_activity; // Does device support ANY activity metrics? } device_capabilities_t; device_capabilities_t *dev_caps = NULL; + double step_start = get_time_ms(); if (gpu_count > 0) { dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); if (!dev_caps) { @@ -834,43 +867,37 @@ static int init_event_table(void) { return PAPI_ENOMEM; } - // Pre-probe device capabilities for caching - proper testing + // Pre-probe device capabilities for caching - device-level only for (int d = 0; d < gpu_count && device_handles; ++d) { if (!device_handles[d]) continue; - // Test temperature capability properly - check function exists first + // Test if device supports temperature at all int64_t dummy_val; - int temp_supported = 0; - if (amdsmi_get_temp_metric_p) { - temp_supported = (amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, - AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS); - } - for (int si = 0; si < 8; ++si) { - dev_caps[d].temp_sensors_available[si] = temp_supported; - } + dev_caps[d].device_supports_temp = (amdsmi_get_temp_metric_p && + amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, + AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test fan capabilities - check functions exist first + // Test if device supports fan metrics at all int64_t dummy; - dev_caps[d].fan_rpm_available = (amdsmi_get_gpu_fan_rpms_p && + dev_caps[d].device_supports_fan = (amdsmi_get_gpu_fan_rpms_p && amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - dev_caps[d].fan_speed_available = (amdsmi_get_gpu_fan_speed_p && - amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test power capability - check function exists first + // Test if device supports power at all uint64_t dummy_u64; - dev_caps[d].power_available = (amdsmi_get_gpu_power_ave_p && + dev_caps[d].device_supports_power = (amdsmi_get_gpu_power_ave_p && amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test memory capability - check function exists first - dev_caps[d].memory_available = (amdsmi_get_memory_usage_p && + // Test if device supports memory at all + dev_caps[d].device_supports_memory = (amdsmi_get_memory_usage_p && amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - // Test activity capability - check function exists first + // Test if device supports activity at all amdsmi_engine_usage_t dummy_activity; - dev_caps[d].activity_available = (amdsmi_get_gpu_activity_p && + dev_caps[d].device_supports_activity = (amdsmi_get_gpu_activity_p && amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; } } + printf("[AMD_SMI TIMING] Capability caching took %.3f ms\n", get_time_ms() - step_start); // Now register events using cached capabilities const amdsmi_temperature_metric_t temp_metrics[] = { @@ -885,20 +912,27 @@ static int init_event_table(void) { "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - use cached availability properly */ + /* Temperature sensors - device-level cache + individual testing */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { continue; } + // First check: Does this device support temperature at all? (cached) + if (!dev_caps || !dev_caps[d].device_supports_temp) { + continue; // Skip entire device if it doesn't support temperature + } + for (int si = 0; si < num_temp_sensors && si < 8; ++si) { - // Skip if sensor not available (already cached) or no cache - if (!dev_caps || !dev_caps[d].temp_sensors_available[si]) { - continue; + // Test each sensor individually (not cached, but only for devices that support temp) + int64_t sensor_test_val; + if (!amdsmi_get_temp_metric_p || + amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { + continue; // Skip this specific sensor if it doesn't work } - // Register all metrics for this available sensor - trust the cache + // Register metrics for this working sensor, testing each metric individually for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow if (idx >= 512 * device_count) { @@ -906,12 +940,13 @@ static int init_event_table(void) { return PAPI_ENOSUPP; // Too many events } - // Skip if function not available - if (!amdsmi_get_temp_metric_p) { - continue; + // Test this specific metric on this specific sensor + int64_t metric_val; + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { + continue; /* skip this specific metric if not supported */ } - // Trust the cache - don't re-probe each metric (this was the inefficiency!) snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", @@ -2097,6 +2132,8 @@ static int init_event_table(void) { } ntv_table.count = idx; + printf("[AMD_SMI TIMING] Event registration completed, total events: %d\n", idx); + printf("[AMD_SMI TIMING] Total init_event_table took %.3f ms\n", get_time_ms() - start_time); return PAPI_OK; } From 41c203a4e9cd1fb9ddf875f6b03da6a1da6c8d76 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 02:51:26 +0000 Subject: [PATCH 027/147] test9 --- src/components/amd_smi/amds.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 04da2e8bc..b1b024ed0 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -983,7 +983,7 @@ static int init_event_table(void) { } /* Register Fan RPM if available */ - if (dev_caps && dev_caps[d].fan_rpm_available) { + if (dev_caps && dev_caps[d].device_supports_fan) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; @@ -1016,7 +1016,7 @@ static int init_event_table(void) { } /* Register Fan SPEED if available */ - if (dev_caps && dev_caps[d].fan_speed_available) { + if (dev_caps && dev_caps[d].device_supports_fan) { if (idx >= 512 * device_count) { if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; @@ -1092,7 +1092,7 @@ static int init_event_table(void) { } // Use cached memory availability instead of probing every time - if (!dev_caps || !dev_caps[d].memory_available) { + if (!dev_caps || !dev_caps[d].device_supports_memory) { continue; // Skip if memory not available } @@ -1168,7 +1168,7 @@ static int init_event_table(void) { /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < gpu_count; ++d) { // Use cached power availability instead of probing every time - if (!dev_caps || !dev_caps[d].power_available) { + if (!dev_caps || !dev_caps[d].device_supports_power) { continue; // Skip if power not available (already cached) } // Register power average event (trust the cache) @@ -1373,7 +1373,7 @@ static int init_event_table(void) { } // Use cached activity availability instead of probing every time - if (!dev_caps || !dev_caps[d].activity_available) { + if (!dev_caps || !dev_caps[d].device_supports_activity) { continue; // Skip if activity not available } From 40f6ab8546eb82fb21f8ce0612ba30315f9d08bc Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 03:05:39 +0000 Subject: [PATCH 028/147] test --- src/components/rocm_smi/rocs.c | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/components/rocm_smi/rocs.c b/src/components/rocm_smi/rocs.c index 267486dab..1dd2eec9d 100644 --- a/src/components/rocm_smi/rocs.c +++ b/src/components/rocm_smi/rocs.c @@ -3,11 +3,19 @@ #include #include #include +#include #include "papi.h" #include "papi_memory.h" #include "rocs.h" #include "htable.h" +// Timing helper functions +static double get_time_ms() { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; +} + unsigned int _rocm_smi_lock; static rsmi_status_t (*rsmi_num_monitor_dev_p)(uint32_t *); @@ -332,13 +340,19 @@ static rsmi_pcie_bandwidth_t *pcie_table; int rocs_init(void) { + double start_time = get_time_ms(); + printf("[ROCM_SMI TIMING] Starting rocs_init at %.3f ms\n", start_time); + int papi_errno; + double step_start = get_time_ms(); papi_errno = load_rsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } + printf("[ROCM_SMI TIMING] Symbol loading took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); rsmi_status_t status = rsmi_init_p(0); if (status != RSMI_STATUS_SUCCESS) { const char *status_string = NULL; @@ -346,29 +360,40 @@ rocs_init(void) strcpy(error_string, status_string); return PAPI_EMISC; } + printf("[ROCM_SMI TIMING] rsmi_init_p took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); htable_init(&htable); + printf("[ROCM_SMI TIMING] htable_init took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); status = rsmi_num_monitor_dev_p((uint32_t *)&device_count); if (status != RSMI_STATUS_SUCCESS) { sprintf(error_string, "Error while counting available devices."); papi_errno = PAPI_EMISC; goto fn_fail; } + printf("[ROCM_SMI TIMING] Device counting took %.3f ms (found %d devices)\n", + get_time_ms() - step_start, device_count); + step_start = get_time_ms(); papi_errno = init_device_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing device tables."); goto fn_fail; } + printf("[ROCM_SMI TIMING] Device table initialization took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing the native event table."); goto fn_fail; } + printf("[ROCM_SMI TIMING] Event table initialization took %.3f ms\n", get_time_ms() - step_start); ntv_table_p = &ntv_table; + printf("[ROCM_SMI TIMING] Total rocs_init took %.3f ms\n", get_time_ms() - start_time); fn_exit: return papi_errno; @@ -905,13 +930,19 @@ static int get_ntv_events(ntv_event_t *, int); int init_event_table(void) { + double start_time = get_time_ms(); + printf("[ROCM_SMI TIMING] Starting init_event_table\n"); + int papi_errno = PAPI_OK; + double step_start = get_time_ms(); int ntv_events_count; papi_errno = get_ntv_events_count(&ntv_events_count); if (papi_errno != PAPI_OK) { return papi_errno; } + printf("[ROCM_SMI TIMING] Event counting took %.3f ms (found %d events)\n", + get_time_ms() - step_start, ntv_events_count); ntv_event_t *ntv_events = papi_calloc(ntv_events_count, sizeof(*ntv_events)); if (ntv_events == NULL) { @@ -919,13 +950,17 @@ init_event_table(void) goto fn_fail; } + step_start = get_time_ms(); papi_errno = get_ntv_events(ntv_events, ntv_events_count); if (papi_errno != PAPI_OK) { goto fn_fail; } + printf("[ROCM_SMI TIMING] Event population took %.3f ms\n", get_time_ms() - step_start); ntv_table.count = ntv_events_count; ntv_table.events = ntv_events; + + printf("[ROCM_SMI TIMING] Total init_event_table took %.3f ms\n", get_time_ms() - start_time); fn_exit: return papi_errno; From de6718fff8ea3364d14e58ec8f3197e6a28711d3 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 03:06:25 +0000 Subject: [PATCH 029/147] test --- src/components/rocm_smi/linux-rocm-smi.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/components/rocm_smi/linux-rocm-smi.c b/src/components/rocm_smi/linux-rocm-smi.c index 1c80c259e..50a325a00 100644 --- a/src/components/rocm_smi/linux-rocm-smi.c +++ b/src/components/rocm_smi/linux-rocm-smi.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "papi.h" #include "papi_internal.h" @@ -23,6 +24,13 @@ #include "extras.h" #include "rocs.h" +// Timing helper functions +static double get_time_ms() { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; +} + typedef struct { int initialized; int state; @@ -94,15 +102,20 @@ evt_get_count(int *count) static int _rocm_smi_init_private(void) { + double start_time = get_time_ms(); + printf("[ROCM_SMI TIMING] Starting rocs_init_private at %.3f ms\n", start_time); + int papi_errno = PAPI_OK; PAPI_lock(COMPONENT_LOCK); if (_rocm_smi_vector.cmp_info.initialized) { papi_errno = _rocm_smi_vector.cmp_info.disabled; + printf("[ROCM_SMI TIMING] Already initialized, skipping (%.3f ms)\n", get_time_ms() - start_time); goto fn_exit; } + double step_start = get_time_ms(); papi_errno = rocs_init(); if (papi_errno != PAPI_OK) { _rocm_smi_vector.cmp_info.disabled = papi_errno; @@ -111,17 +124,22 @@ _rocm_smi_init_private(void) sprintf(_rocm_smi_vector.cmp_info.disabled_reason, "%s", error_str); goto fn_fail; } + printf("[ROCM_SMI TIMING] rocs_init took %.3f ms\n", get_time_ms() - step_start); + step_start = get_time_ms(); int count = 0; papi_errno = evt_get_count(&count); _rocm_smi_vector.cmp_info.num_native_events = count; _rocm_smi_vector.cmp_info.num_cntrs = count; _rocm_smi_vector.cmp_info.num_mpx_cntrs = count; + printf("[ROCM_SMI TIMING] Event counting took %.3f ms (found %d events)\n", + get_time_ms() - step_start, count); fn_exit: _rocm_smi_vector.cmp_info.initialized = 1; _rocm_smi_vector.cmp_info.disabled = papi_errno; PAPI_unlock(COMPONENT_LOCK); + printf("[ROCM_SMI TIMING] Total rocs_init_private took %.3f ms\n", get_time_ms() - start_time); return papi_errno; fn_fail: goto fn_exit; From 1b49e9043435a7aa2c64cf4ecedb3f9798e38a0c Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 03:28:59 +0000 Subject: [PATCH 030/147] update --- src/components/amd_smi/amds.c | 37 ------------------------ src/components/rocm_smi/linux-rocm-smi.c | 18 ------------ src/components/rocm_smi/rocs.c | 35 ---------------------- 3 files changed, 90 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b1b024ed0..60742b420 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3,7 +3,6 @@ #include #include #include -#include #include "papi.h" #include "papi_memory.h" @@ -12,13 +11,6 @@ // #define AMDSMI_DISABLE_ESMI -// Timing helper functions -static double get_time_ms() { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; -} - unsigned int _amd_smi_lock; typedef enum { @@ -425,37 +417,25 @@ static int unload_amdsmi_sym(void) { /* Initialize AMD SMI library and discover devices */ int amds_init(void) { - double start_time = get_time_ms(); - printf("[AMD_SMI TIMING] Starting amds_init at %.3f ms\n", start_time); - // Check if already initialized to avoid expensive re-initialization if (device_handles != NULL && device_count > 0) { - printf("[AMD_SMI TIMING] Already initialized, skipping (%.3f ms)\n", get_time_ms() - start_time); return PAPI_OK; // Already initialized } - double step_start = get_time_ms(); int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } - printf("[AMD_SMI TIMING] Symbol loading took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); //AMDSMI_INIT_AMD_CPUS amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } - printf("[AMD_SMI TIMING] amdsmi_init_p took %.3f ms\n", get_time_ms() - step_start); - - step_start = get_time_ms(); htable_init(&htable); - printf("[AMD_SMI TIMING] htable_init took %.3f ms\n", get_time_ms() - step_start); // Discover GPU and CPU devices - step_start = get_time_ms(); uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { @@ -463,8 +443,6 @@ int amds_init(void) { papi_errno = PAPI_ENOEVNT; goto fn_fail; } - printf("[AMD_SMI TIMING] Socket discovery took %.3f ms (found %u sockets)\n", - get_time_ms() - step_start, socket_count); amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); if (!sockets) { papi_errno = PAPI_ENOMEM; @@ -606,16 +584,12 @@ int amds_init(void) { } // Initialize the native event table for all discovered metrics - step_start = get_time_ms(); papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing the native event table."); goto fn_fail; } - printf("[AMD_SMI TIMING] Event table initialization took %.3f ms\n", get_time_ms() - step_start); - ntv_table_p = &ntv_table; - printf("[AMD_SMI TIMING] Total amds_init took %.3f ms\n", get_time_ms() - start_time); return PAPI_OK; fn_fail: @@ -809,13 +783,8 @@ amds_ctx_reset(amds_ctx_t ctx) /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { - double start_time = get_time_ms(); - printf("[AMD_SMI TIMING] Starting init_event_table\n"); - // Check if event table is already initialized if (ntv_table.count > 0 && ntv_table.events != NULL) { - printf("[AMD_SMI TIMING] Event table already initialized, skipping (%.3f ms)\n", - get_time_ms() - start_time); return PAPI_OK; // Already initialized, skip expensive rebuild } @@ -825,8 +794,6 @@ static int init_event_table(void) { // Safety check - if no devices, return early if (device_count <= 0) { ntv_table.events = NULL; - printf("[AMD_SMI TIMING] No devices found, init_event_table took %.3f ms\n", - get_time_ms() - start_time); return PAPI_OK; } @@ -858,7 +825,6 @@ static int init_event_table(void) { } device_capabilities_t; device_capabilities_t *dev_caps = NULL; - double step_start = get_time_ms(); if (gpu_count > 0) { dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); if (!dev_caps) { @@ -897,7 +863,6 @@ static int init_event_table(void) { amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; } } - printf("[AMD_SMI TIMING] Capability caching took %.3f ms\n", get_time_ms() - step_start); // Now register events using cached capabilities const amdsmi_temperature_metric_t temp_metrics[] = { @@ -2132,8 +2097,6 @@ static int init_event_table(void) { } ntv_table.count = idx; - printf("[AMD_SMI TIMING] Event registration completed, total events: %d\n", idx); - printf("[AMD_SMI TIMING] Total init_event_table took %.3f ms\n", get_time_ms() - start_time); return PAPI_OK; } diff --git a/src/components/rocm_smi/linux-rocm-smi.c b/src/components/rocm_smi/linux-rocm-smi.c index 50a325a00..1c80c259e 100644 --- a/src/components/rocm_smi/linux-rocm-smi.c +++ b/src/components/rocm_smi/linux-rocm-smi.c @@ -15,7 +15,6 @@ #include #include #include -#include #include "papi.h" #include "papi_internal.h" @@ -24,13 +23,6 @@ #include "extras.h" #include "rocs.h" -// Timing helper functions -static double get_time_ms() { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; -} - typedef struct { int initialized; int state; @@ -102,20 +94,15 @@ evt_get_count(int *count) static int _rocm_smi_init_private(void) { - double start_time = get_time_ms(); - printf("[ROCM_SMI TIMING] Starting rocs_init_private at %.3f ms\n", start_time); - int papi_errno = PAPI_OK; PAPI_lock(COMPONENT_LOCK); if (_rocm_smi_vector.cmp_info.initialized) { papi_errno = _rocm_smi_vector.cmp_info.disabled; - printf("[ROCM_SMI TIMING] Already initialized, skipping (%.3f ms)\n", get_time_ms() - start_time); goto fn_exit; } - double step_start = get_time_ms(); papi_errno = rocs_init(); if (papi_errno != PAPI_OK) { _rocm_smi_vector.cmp_info.disabled = papi_errno; @@ -124,22 +111,17 @@ _rocm_smi_init_private(void) sprintf(_rocm_smi_vector.cmp_info.disabled_reason, "%s", error_str); goto fn_fail; } - printf("[ROCM_SMI TIMING] rocs_init took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); int count = 0; papi_errno = evt_get_count(&count); _rocm_smi_vector.cmp_info.num_native_events = count; _rocm_smi_vector.cmp_info.num_cntrs = count; _rocm_smi_vector.cmp_info.num_mpx_cntrs = count; - printf("[ROCM_SMI TIMING] Event counting took %.3f ms (found %d events)\n", - get_time_ms() - step_start, count); fn_exit: _rocm_smi_vector.cmp_info.initialized = 1; _rocm_smi_vector.cmp_info.disabled = papi_errno; PAPI_unlock(COMPONENT_LOCK); - printf("[ROCM_SMI TIMING] Total rocs_init_private took %.3f ms\n", get_time_ms() - start_time); return papi_errno; fn_fail: goto fn_exit; diff --git a/src/components/rocm_smi/rocs.c b/src/components/rocm_smi/rocs.c index 1dd2eec9d..267486dab 100644 --- a/src/components/rocm_smi/rocs.c +++ b/src/components/rocm_smi/rocs.c @@ -3,19 +3,11 @@ #include #include #include -#include #include "papi.h" #include "papi_memory.h" #include "rocs.h" #include "htable.h" -// Timing helper functions -static double get_time_ms() { - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0; -} - unsigned int _rocm_smi_lock; static rsmi_status_t (*rsmi_num_monitor_dev_p)(uint32_t *); @@ -340,19 +332,13 @@ static rsmi_pcie_bandwidth_t *pcie_table; int rocs_init(void) { - double start_time = get_time_ms(); - printf("[ROCM_SMI TIMING] Starting rocs_init at %.3f ms\n", start_time); - int papi_errno; - double step_start = get_time_ms(); papi_errno = load_rsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } - printf("[ROCM_SMI TIMING] Symbol loading took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); rsmi_status_t status = rsmi_init_p(0); if (status != RSMI_STATUS_SUCCESS) { const char *status_string = NULL; @@ -360,40 +346,29 @@ rocs_init(void) strcpy(error_string, status_string); return PAPI_EMISC; } - printf("[ROCM_SMI TIMING] rsmi_init_p took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); htable_init(&htable); - printf("[ROCM_SMI TIMING] htable_init took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); status = rsmi_num_monitor_dev_p((uint32_t *)&device_count); if (status != RSMI_STATUS_SUCCESS) { sprintf(error_string, "Error while counting available devices."); papi_errno = PAPI_EMISC; goto fn_fail; } - printf("[ROCM_SMI TIMING] Device counting took %.3f ms (found %d devices)\n", - get_time_ms() - step_start, device_count); - step_start = get_time_ms(); papi_errno = init_device_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing device tables."); goto fn_fail; } - printf("[ROCM_SMI TIMING] Device table initialization took %.3f ms\n", get_time_ms() - step_start); - step_start = get_time_ms(); papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { sprintf(error_string, "Error while initializing the native event table."); goto fn_fail; } - printf("[ROCM_SMI TIMING] Event table initialization took %.3f ms\n", get_time_ms() - step_start); ntv_table_p = &ntv_table; - printf("[ROCM_SMI TIMING] Total rocs_init took %.3f ms\n", get_time_ms() - start_time); fn_exit: return papi_errno; @@ -930,19 +905,13 @@ static int get_ntv_events(ntv_event_t *, int); int init_event_table(void) { - double start_time = get_time_ms(); - printf("[ROCM_SMI TIMING] Starting init_event_table\n"); - int papi_errno = PAPI_OK; - double step_start = get_time_ms(); int ntv_events_count; papi_errno = get_ntv_events_count(&ntv_events_count); if (papi_errno != PAPI_OK) { return papi_errno; } - printf("[ROCM_SMI TIMING] Event counting took %.3f ms (found %d events)\n", - get_time_ms() - step_start, ntv_events_count); ntv_event_t *ntv_events = papi_calloc(ntv_events_count, sizeof(*ntv_events)); if (ntv_events == NULL) { @@ -950,17 +919,13 @@ init_event_table(void) goto fn_fail; } - step_start = get_time_ms(); papi_errno = get_ntv_events(ntv_events, ntv_events_count); if (papi_errno != PAPI_OK) { goto fn_fail; } - printf("[ROCM_SMI TIMING] Event population took %.3f ms\n", get_time_ms() - step_start); ntv_table.count = ntv_events_count; ntv_table.events = ntv_events; - - printf("[ROCM_SMI TIMING] Total init_event_table took %.3f ms\n", get_time_ms() - start_time); fn_exit: return papi_errno; From 643f8c1de9b7f0c72ce36f7cb99914dc12b53375 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 14 Jul 2025 03:50:32 +0000 Subject: [PATCH 031/147] update --- src/components/amd_smi/amds.c | 409 ++++++++-------------------------- 1 file changed, 91 insertions(+), 318 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 60742b420..677133314 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,25 +1,19 @@ #include #include #include -#include +#include "amdsmi.h" #include - #include "papi.h" #include "papi_memory.h" #include "amds.h" #include "htable.h" - // #define AMDSMI_DISABLE_ESMI - unsigned int _amd_smi_lock; - typedef enum { PAPI_MODE_READ = 1, PAPI_MODE_WRITE, PAPI_MODE_RDWR, } rocs_access_mode_e; - - /* Pointers to AMD SMI library functions (dynamically loaded) */ static amdsmi_status_t (*amdsmi_init_p)(uint64_t); static amdsmi_status_t (*amdsmi_shut_down_p)(void); @@ -34,7 +28,6 @@ static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amd static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_power_ave_p)(amdsmi_processor_handle, uint32_t, uint64_t *); static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); static amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); @@ -42,7 +35,6 @@ static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_h static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); - /* New AMD SMI function pointers */ static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); @@ -53,8 +45,6 @@ static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint6 static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); - - #ifndef AMDSMI_DISABLE_ESMI /* CPU function pointers */ static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); @@ -77,8 +67,6 @@ static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amds static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); #endif - - /* Global device list and count */ static int32_t device_count = 0; static amdsmi_processor_handle *device_handles = NULL; @@ -87,11 +75,9 @@ static int32_t gpu_count = 0; static int32_t cpu_count = 0; static amdsmi_processor_handle **cpu_core_handles = NULL; static uint32_t *cores_per_socket = NULL; - static void *amds_dlp = NULL; static void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN+1]; - /* forward declarations for internal helpers */ static int load_amdsmi_sym(void); static int unload_amdsmi_sym(void); @@ -99,7 +85,6 @@ static int init_device_table(void); static int shutdown_device_table(void); static int init_event_table(void); static int shutdown_event_table(void); - /* Event descriptor structure for native events */ typedef struct native_event { unsigned int id; @@ -116,16 +101,13 @@ typedef struct native_event { int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ int (*access_func)(int mode, void *arg); /* read or write the event value */ } native_event_t; - /* Table of all native events */ typedef struct { native_event_t *events; int count; } native_event_table_t; - static native_event_table_t ntv_table; static native_event_table_t *ntv_table_p = NULL; - /* Locking device usage for contexts */ static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) @@ -143,7 +125,6 @@ acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) *bitmask = mask_acq; return PAPI_OK; } - static int release_devices(int32_t *bitmask) { @@ -155,7 +136,6 @@ release_devices(int32_t *bitmask) *bitmask = 0; return PAPI_OK; } - /* Prototypes for event access (read/write) functions */ static int access_amdsmi_temp_metric(int mode, void *arg); static int access_amdsmi_fan_speed(int mode, void *arg); @@ -175,8 +155,6 @@ static int access_amdsmi_fan_speed_max(int mode, void *arg); static int access_amdsmi_pci_bandwidth(int mode, void *arg); static int access_amdsmi_energy_count(int mode, void *arg); static int access_amdsmi_power_profile_status(int mode, void *arg); - - #ifndef AMDSMI_DISABLE_ESMI static int access_amdsmi_cpu_socket_power(int mode, void *arg); static int access_amdsmi_cpu_socket_energy(int mode, void *arg); @@ -200,13 +178,11 @@ static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } - /* Dynamic load of AMD SMI library symbols */ static void *sym(const char *preferred, const char *fallback) { void *p = dlsym(amds_dlp, preferred); return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); } - static int load_amdsmi_sym(void) { const char *root = getenv("PAPI_AMDSMI_ROOT"); char so_path[PATH_MAX] = {0}; @@ -227,36 +203,28 @@ static int load_amdsmi_sym(void) { amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); - /* Sensors */ amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); - /* Memory */ amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); - /* Utilization / activity */ amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); - /* Power */ amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); - /* PCIe */ amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); - /* Clocks */ amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); - /* GPU metrics */ amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); - /* Identification and other queries */ amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); @@ -319,7 +287,6 @@ static int load_amdsmi_sym(void) { { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p }, - #ifndef AMDSMI_DISABLE_ESMI { "amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p }, { "amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p }, @@ -356,7 +323,6 @@ static int load_amdsmi_sym(void) { } return PAPI_OK; } - static int unload_amdsmi_sym(void) { /* Reset all function pointers and close library */ amdsmi_init_p = NULL; @@ -414,19 +380,16 @@ static int unload_amdsmi_sym(void) { } return PAPI_OK; } - /* Initialize AMD SMI library and discover devices */ int amds_init(void) { // Check if already initialized to avoid expensive re-initialization if (device_handles != NULL && device_count > 0) { return PAPI_OK; // Already initialized } - int papi_errno = load_amdsmi_sym(); if (papi_errno != PAPI_OK) { return papi_errno; } - //AMDSMI_INIT_AMD_CPUS amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { @@ -434,7 +397,6 @@ int amds_init(void) { return PAPI_ENOSUPP; } htable_init(&htable); - // Discover GPU and CPU devices uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); @@ -455,7 +417,6 @@ int amds_init(void) { papi_errno = PAPI_ENOSUPP; goto fn_fail; } - device_count = 0; uint32_t total_gpu_count = 0; for (uint32_t s = 0; s < socket_count; ++s) { @@ -466,19 +427,13 @@ int amds_init(void) { total_gpu_count += gpu_count_local; } } - - - - uint32_t total_cpu_count = 0; - #ifndef AMDSMI_DISABLE_ESMI status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); if (status != AMDSMI_STATUS_SUCCESS) { total_cpu_count = 0; } #endif - if (total_gpu_count == 0 && total_cpu_count == 0) { sprintf(error_string, "No AMD GPU or CPU devices found."); papi_errno = PAPI_ENOEVNT; @@ -492,7 +447,6 @@ int amds_init(void) { papi_free(sockets); goto fn_fail; } - // Retrieve GPU processor handles for each socket - optimized to reduce allocations for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count_local = 0; @@ -501,7 +455,6 @@ int amds_init(void) { if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { continue; // no GPU on this socket or error } - // Use the main device_handles array directly to avoid extra allocation amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); @@ -510,10 +463,8 @@ int amds_init(void) { } } papi_free(sockets); - // Set gpu_count for use in event table initialization gpu_count = device_count; // All devices added so far are GPUs - #ifndef AMDSMI_DISABLE_ESMI // Retrieve CPU socket handles amdsmi_processor_handle *cpu_handles = NULL; @@ -541,7 +492,6 @@ int amds_init(void) { // Set global GPU/CPU counts gpu_count = total_gpu_count; cpu_count = total_cpu_count; - // Retrieve CPU core handles for each CPU socket if (cpu_count > 0) { cpu_core_handles = (amdsmi_processor_handle **) papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); @@ -582,7 +532,6 @@ int amds_init(void) { } } } - // Initialize the native event table for all discovered metrics papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { @@ -591,7 +540,6 @@ int amds_init(void) { } ntv_table_p = &ntv_table; return PAPI_OK; - fn_fail: htable_shutdown(htable); if (device_handles) { @@ -615,7 +563,6 @@ int amds_init(void) { unload_amdsmi_sym(); return papi_errno; } - int amds_shutdown(void) { shutdown_event_table(); shutdown_device_table(); @@ -623,12 +570,10 @@ int amds_shutdown(void) { amdsmi_shut_down_p(); // shutdown AMD SMI library return unload_amdsmi_sym(); } - int amds_err_get_last(const char **err_string) { if (err_string) *err_string = error_string; return PAPI_OK; } - /* Event enumeration: iterate over native events */ int amds_evt_enum(unsigned int *EventCode, int modifier) @@ -649,7 +594,6 @@ amds_evt_enum(unsigned int *EventCode, int modifier) } return PAPI_EINVAL; } - int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { if (EventCode >= (unsigned int) ntv_table_p->count) { return PAPI_EINVAL; @@ -657,7 +601,6 @@ int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { strncpy(name, ntv_table_p->events[EventCode].name, len); return PAPI_OK; } - int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { native_event_t *event = NULL; int hret = htable_find(htable, name, (void **) &event); @@ -667,7 +610,6 @@ int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { *EventCode = event->id; return PAPI_OK; } - int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { if (EventCode >= (unsigned int) ntv_table_p->count) { return PAPI_EINVAL; @@ -675,7 +617,6 @@ int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { strncpy(descr, ntv_table_p->events[EventCode].descr, len); return PAPI_OK; } - /* Context management: open/close, start/stop, read/write, reset */ struct amds_ctx { int state; @@ -684,7 +625,6 @@ struct amds_ctx { long long *counters; int32_t device_mask; }; - int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { @@ -709,7 +649,6 @@ amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) *ctx = new_ctx; return PAPI_OK; } - int amds_ctx_close(amds_ctx_t ctx) { @@ -720,7 +659,6 @@ amds_ctx_close(amds_ctx_t ctx) papi_free(ctx); return PAPI_OK; } - int amds_ctx_start(amds_ctx_t ctx) { @@ -728,7 +666,6 @@ amds_ctx_start(amds_ctx_t ctx) ctx->state |= AMDS_EVENTS_RUNNING; return PAPI_OK; } - int amds_ctx_stop(amds_ctx_t ctx) { @@ -738,7 +675,6 @@ amds_ctx_stop(amds_ctx_t ctx) ctx->state &= ~AMDS_EVENTS_RUNNING; return PAPI_OK; } - int amds_ctx_read(amds_ctx_t ctx, long long **counts) { @@ -754,7 +690,6 @@ amds_ctx_read(amds_ctx_t ctx, long long **counts) *counts = ctx->counters; return papi_errno; } - int amds_ctx_write(amds_ctx_t ctx, long long *counts) { @@ -769,7 +704,6 @@ amds_ctx_write(amds_ctx_t ctx, long long *counts) } return papi_errno; } - int amds_ctx_reset(amds_ctx_t ctx) { @@ -780,32 +714,26 @@ amds_ctx_reset(amds_ctx_t ctx) } return PAPI_OK; } - /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { // Check if event table is already initialized if (ntv_table.count > 0 && ntv_table.events != NULL) { return PAPI_OK; // Already initialized, skip expensive rebuild } - ntv_table.count = 0; int idx = 0; - // Safety check - if no devices, return early if (device_count <= 0) { ntv_table.events = NULL; return PAPI_OK; } - // Keep original allocation approach ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); if (!ntv_table.events) { return PAPI_ENOMEM; } - char name_buf[PAPI_MAX_STR_LEN]; char descr_buf[PAPI_MAX_STR_LEN]; - // Define sensor arrays first amdsmi_temperature_type_t temp_sensors[] = { AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, @@ -814,57 +742,6 @@ static int init_event_table(void) { AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX }; const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); - - // Cache sensor availability to avoid repeated API calls - but still test individual events - typedef struct { - int device_supports_temp; // Does device support ANY temperature? - int device_supports_fan; // Does device support ANY fan metrics? - int device_supports_power; // Does device support ANY power metrics? - int device_supports_memory; // Does device support ANY memory metrics? - int device_supports_activity; // Does device support ANY activity metrics? - } device_capabilities_t; - - device_capabilities_t *dev_caps = NULL; - if (gpu_count > 0) { - dev_caps = (device_capabilities_t *) papi_calloc(gpu_count, sizeof(device_capabilities_t)); - if (!dev_caps) { - papi_free(ntv_table.events); - ntv_table.events = NULL; - return PAPI_ENOMEM; - } - - // Pre-probe device capabilities for caching - device-level only - for (int d = 0; d < gpu_count && device_handles; ++d) { - if (!device_handles[d]) continue; - - // Test if device supports temperature at all - int64_t dummy_val; - dev_caps[d].device_supports_temp = (amdsmi_get_temp_metric_p && - amdsmi_get_temp_metric_p(device_handles[d], AMDSMI_TEMPERATURE_TYPE_EDGE, - AMDSMI_TEMP_CURRENT, &dummy_val) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - - // Test if device supports fan metrics at all - int64_t dummy; - dev_caps[d].device_supports_fan = (amdsmi_get_gpu_fan_rpms_p && - amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - - // Test if device supports power at all - uint64_t dummy_u64; - dev_caps[d].device_supports_power = (amdsmi_get_gpu_power_ave_p && - amdsmi_get_gpu_power_ave_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - - // Test if device supports memory at all - dev_caps[d].device_supports_memory = (amdsmi_get_memory_usage_p && - amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_u64) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - - // Test if device supports activity at all - amdsmi_engine_usage_t dummy_activity; - dev_caps[d].device_supports_activity = (amdsmi_get_gpu_activity_p && - amdsmi_get_gpu_activity_p(device_handles[d], &dummy_activity) == AMDSMI_STATUS_SUCCESS) ? 1 : 0; - } - } - - // Now register events using cached capabilities const amdsmi_temperature_metric_t temp_metrics[] = { AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, @@ -876,42 +753,31 @@ static int init_event_table(void) { "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" }; - /* Temperature sensors - device-level cache + individual testing */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { continue; } - - // First check: Does this device support temperature at all? (cached) - if (!dev_caps || !dev_caps[d].device_supports_temp) { - continue; // Skip entire device if it doesn't support temperature - } - for (int si = 0; si < num_temp_sensors && si < 8; ++si) { - // Test each sensor individually (not cached, but only for devices that support temp) + // Test each sensor individually first int64_t sensor_test_val; if (!amdsmi_get_temp_metric_p || amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { continue; // Skip this specific sensor if it doesn't work } - // Register metrics for this working sensor, testing each metric individually for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; // Too many events } - // Test this specific metric on this specific sensor int64_t metric_val; if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { continue; /* skip this specific metric if not supported */ } - snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int) temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", @@ -921,7 +787,6 @@ static int init_event_table(void) { ev->name = strdup(name_buf); ev->descr = strdup(descr_buf); if (!ev->name || !ev->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev->device = d; @@ -939,21 +804,19 @@ static int init_event_table(void) { } } } - - /* Fan metrics - use cached availability */ + /* Fan metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { continue; } - /* Register Fan RPM if available */ - if (dev_caps && dev_caps[d].device_supports_fan) { + int64_t dummy_rpm; + if (amdsmi_get_gpu_fan_rpms_p && + amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), @@ -963,7 +826,6 @@ static int init_event_table(void) { ev_rpm->name = strdup(name_buf); ev_rpm->descr = strdup(descr_buf); if (!ev_rpm->name || !ev_rpm->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_rpm->device = d; @@ -979,14 +841,13 @@ static int init_event_table(void) { htable_insert(htable, ev_rpm->name, ev_rpm); idx++; } - /* Register Fan SPEED if available */ - if (dev_caps && dev_caps[d].device_supports_fan) { + int64_t dummy_speed; + if (amdsmi_get_gpu_fan_speed_p && + amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), @@ -996,7 +857,6 @@ static int init_event_table(void) { ev_fan->name = strdup(name_buf); ev_fan->descr = strdup(descr_buf); if (!ev_fan->name || !ev_fan->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_fan->device = d; @@ -1012,16 +872,13 @@ static int init_event_table(void) { htable_insert(htable, ev_fan->name, ev_fan); idx++; } - /* Register Fan Max Speed - always probe directly */ - uint64_t dummy_u64; + int64_t dummy_max; if (amdsmi_get_gpu_fan_speed_max_p && - amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_u64) == AMDSMI_STATUS_SUCCESS) { + amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1031,7 +888,6 @@ static int init_event_table(void) { ev_fanmax->name = strdup(name_buf); ev_fanmax->descr = strdup(descr_buf); if (!ev_fanmax->name || !ev_fanmax->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev_fanmax->device = d; @@ -1048,37 +904,28 @@ static int init_event_table(void) { idx++; } } - - /* VRAM memory metrics - use cached availability */ + /* VRAM memory metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { continue; } - - // Use cached memory availability instead of probing every time - if (!dev_caps || !dev_caps[d].device_supports_memory) { - continue; // Skip if memory not available - } - - /* total VRAM bytes - trust the cache */ - if (amdsmi_get_total_memory_p) { + /* total VRAM bytes - test directly */ + uint64_t dummy_total; + if (amdsmi_get_total_memory_p && + amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); ev->descr= strdup(descr_buf); if (!ev->name || !ev->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev->device = d; @@ -1094,25 +941,22 @@ static int init_event_table(void) { htable_insert(htable, ev->name, ev); ++idx; } - - /* used VRAM bytes - trust the cache */ - if (amdsmi_get_memory_usage_p) { + /* used VRAM bytes - test directly */ + uint64_t dummy_usage; + if (amdsmi_get_memory_usage_p && + amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { if (idx >= 512 * device_count) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); ev->descr= strdup(descr_buf); if (!ev->name || !ev->descr) { - if (dev_caps) papi_free(dev_caps); return PAPI_ENOMEM; } ev->device = d; @@ -1129,15 +973,16 @@ static int init_event_table(void) { ++idx; } } - /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < gpu_count; ++d) { - // Use cached power availability instead of probing every time - if (!dev_caps || !dev_caps[d].device_supports_power) { - continue; // Skip if power not available (already cached) + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; } - // Register power average event (trust the cache) - if (amdsmi_get_power_info_p) { + // Register power average event - test directly + amdsmi_power_info_t dummy_power; + if (amdsmi_get_power_info_p && + amdsmi_get_power_info_p(device_handles[d], &dummy_power) == AMDSMI_STATUS_SUCCESS) { // Average power consumption (in Watts or microWatts) snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); @@ -1158,8 +1003,10 @@ static int init_event_table(void) { htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); idx++; } - // Register power cap events (if power cap functions are available) - if (amdsmi_get_power_cap_info_p) { + // Register power cap events (if power cap functions are available) - test directly + amdsmi_power_cap_info_t dummy_cap_info; + if (amdsmi_get_power_cap_info_p && + amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == AMDSMI_STATUS_SUCCESS) { // Current power cap limit snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); @@ -1179,7 +1026,6 @@ static int init_event_table(void) { ev_pcap->access_func = access_amdsmi_power_cap; htable_insert(htable, ev_pcap->name, ev_pcap); idx++; - // Minimum allowed power cap snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); @@ -1199,7 +1045,6 @@ static int init_event_table(void) { ev_pcap_min->access_func = access_amdsmi_power_cap_range; htable_insert(htable, ev_pcap_min->name, ev_pcap_min); idx++; - // Maximum allowed power cap snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); @@ -1221,22 +1066,18 @@ static int init_event_table(void) { idx++; } } - /* PCIe throughput and replay counter metrics */ for (int d = 0; d < gpu_count; ++d) { uint64_t tx = 0, rx = 0, pkt = 0; - amdsmi_status_t st_thr = amdsmi_get_gpu_pci_throughput_p(device_handles[d], &tx, &rx, &pkt); - if (st_thr == AMDSMI_STATUS_SUCCESS) { /* bytes sent per second */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); - native_event_t *ev_tx = &ntv_table.events[idx]; ev_tx->id = idx; ev_tx->name = strdup(name_buf); @@ -1253,13 +1094,11 @@ static int init_event_table(void) { ev_tx->access_func= access_amdsmi_pci_throughput; htable_insert(htable, ev_tx->name, ev_tx); ++idx; - /* bytes received per second */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); - native_event_t *ev_rx = &ntv_table.events[idx]; ev_rx->id = idx; ev_rx->name = strdup(name_buf); @@ -1276,13 +1115,11 @@ static int init_event_table(void) { ev_rx->access_func= access_amdsmi_pci_throughput; htable_insert(htable, ev_rx->name, ev_rx); ++idx; - /* max packet size */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); - native_event_t *ev_pkt = &ntv_table.events[idx]; ev_pkt->id = idx; ev_pkt->name = strdup(name_buf); @@ -1300,16 +1137,13 @@ static int init_event_table(void) { htable_insert(htable, ev_pkt->name, ev_pkt); ++idx; } - uint64_t replay = 0; if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); - native_event_t *ev_rep = &ntv_table.events[idx]; ev_rep->id = idx; ev_rep->name = strdup(name_buf); @@ -1328,81 +1162,73 @@ static int init_event_table(void) { ++idx; } } - /* Additional GPU metrics and system information */ - /* GPU engine utilization metrics - use cached availability */ + /* GPU engine utilization metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { continue; } - - // Use cached activity availability instead of probing every time - if (!dev_caps || !dev_caps[d].device_supports_activity) { - continue; // Skip if activity not available + // Register GFX activity event - test directly + amdsmi_engine_usage_t dummy_usage; + if (amdsmi_get_gpu_activity_p && + amdsmi_get_gpu_activity_p(device_handles[d], &dummy_usage) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); + native_event_t *ev_gfx = &ntv_table.events[idx]; + ev_gfx->id = idx; + ev_gfx->name = strdup(name_buf); + ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; + ev_gfx->value = 0; + ev_gfx->mode = PAPI_MODE_READ; + ev_gfx->variant = 0; + ev_gfx->subvariant = 0; + ev_gfx->open_func = open_simple; + ev_gfx->close_func = close_simple; + ev_gfx->start_func = start_simple; + ev_gfx->stop_func = stop_simple; + ev_gfx->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_gfx->name, ev_gfx); + idx++; + snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); + native_event_t *ev_umc = &ntv_table.events[idx]; + ev_umc->id = idx; + ev_umc->name = strdup(name_buf); + ev_umc->descr = strdup(descr_buf); + ev_umc->device = d; + ev_umc->value = 0; + ev_umc->mode = PAPI_MODE_READ; + ev_umc->variant = 1; + ev_umc->subvariant = 0; + ev_umc->open_func = open_simple; + ev_umc->close_func = close_simple; + ev_umc->start_func = start_simple; + ev_umc->stop_func = stop_simple; + ev_umc->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_umc->name, ev_umc); + idx++; + snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); + native_event_t *ev_mm = &ntv_table.events[idx]; + ev_mm->id = idx; + ev_mm->name = strdup(name_buf); + ev_mm->descr = strdup(descr_buf); + ev_mm->device = d; + ev_mm->value = 0; + ev_mm->mode = PAPI_MODE_READ; + ev_mm->variant = 2; + ev_mm->subvariant = 0; + ev_mm->open_func = open_simple; + ev_mm->close_func = close_simple; + ev_mm->start_func = start_simple; + ev_mm->stop_func = stop_simple; + ev_mm->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_mm->name, ev_mm); + idx++; } - - // Register GFX activity event - check function exists and trust the cache - if (amdsmi_get_gpu_activity_p) { - snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); - native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; - ev_gfx->name = strdup(name_buf); - ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; - ev_gfx->value = 0; - ev_gfx->mode = PAPI_MODE_READ; - ev_gfx->variant = 0; - ev_gfx->subvariant = 0; - ev_gfx->open_func = open_simple; - ev_gfx->close_func = close_simple; - ev_gfx->start_func = start_simple; - ev_gfx->stop_func = stop_simple; - ev_gfx->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_gfx->name, ev_gfx); - idx++; - - snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); - native_event_t *ev_umc = &ntv_table.events[idx]; - ev_umc->id = idx; - ev_umc->name = strdup(name_buf); - ev_umc->descr = strdup(descr_buf); - ev_umc->device = d; - ev_umc->value = 0; - ev_umc->mode = PAPI_MODE_READ; - ev_umc->variant = 1; - ev_umc->subvariant = 0; - ev_umc->open_func = open_simple; - ev_umc->close_func = close_simple; - ev_umc->start_func = start_simple; - ev_umc->stop_func = stop_simple; - ev_umc->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_umc->name, ev_umc); - idx++; - - snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); - native_event_t *ev_mm = &ntv_table.events[idx]; - ev_mm->id = idx; - ev_mm->name = strdup(name_buf); - ev_mm->descr = strdup(descr_buf); - ev_mm->device = d; - ev_mm->value = 0; - ev_mm->mode = PAPI_MODE_READ; - ev_mm->variant = 2; - ev_mm->subvariant = 0; - ev_mm->open_func = open_simple; - ev_mm->close_func = close_simple; - ev_mm->start_func = start_simple; - ev_mm->stop_func = stop_simple; - ev_mm->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_mm->name, ev_mm); - idx++; - } // End of amdsmi_get_gpu_activity_p function check } - /* GPU clock frequency levels */ for (int d = 0; d < gpu_count; ++d) { amdsmi_frequencies_t f; @@ -1428,7 +1254,6 @@ static int init_event_table(void) { ev_clk_count->access_func = access_amdsmi_clk_freq; htable_insert(htable, ev_clk_count->name, ev_clk_count); idx++; - // Current clock frequency snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); @@ -1448,7 +1273,6 @@ static int init_event_table(void) { ev_clk_cur->access_func = access_amdsmi_clk_freq; htable_insert(htable, ev_clk_cur->name, ev_clk_cur); idx++; - // Supported frequency levels for (uint32_t fi = 0; fi < f.num_supported; ++fi) { snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); @@ -1471,7 +1295,6 @@ static int init_event_table(void) { idx++; } } - /* GPU identification and topology metrics */ for (int d = 0; d < gpu_count; ++d) { uint16_t id16; @@ -1607,7 +1430,6 @@ static int init_event_table(void) { idx++; } } - /* Energy consumption counter */ for (int d = 0; d < gpu_count; ++d) { uint64_t energy = 0; @@ -1635,7 +1457,6 @@ static int init_event_table(void) { htable_insert(htable, ev_energy->name, ev_energy); idx++; } - /* GPU power profile information */ for (int d = 0; d < gpu_count; ++d) { amdsmi_power_profile_status_t profile_status; @@ -1660,7 +1481,6 @@ static int init_event_table(void) { ev_prof_count->access_func = access_amdsmi_power_profile_status; htable_insert(htable, ev_prof_count->name, ev_prof_count); idx++; - snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); native_event_t *ev_prof_curr = &ntv_table.events[idx]; @@ -1680,7 +1500,6 @@ static int init_event_table(void) { htable_insert(htable, ev_prof_curr->name, ev_prof_curr); idx++; } - #ifndef AMDSMI_DISABLE_ESMI /* CPU metrics events */ if (cpu_count > 0) { @@ -1859,7 +1678,6 @@ static int init_event_table(void) { idx++; } } - // CPU core-level events for (int s = 0; s < cpu_count; ++s) { int dev = gpu_count + s; @@ -1929,7 +1747,6 @@ static int init_event_table(void) { } } } - // CPU DIMM events for (int s = 0; s < cpu_count; ++s) { int dev = gpu_count + s; @@ -2023,7 +1840,6 @@ static int init_event_table(void) { } } } - // System-wide CPU events uint32_t threads; if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { @@ -2090,16 +1906,10 @@ static int init_event_table(void) { } } #endif - - // Cleanup device capabilities cache - if (dev_caps) { - papi_free(dev_caps); - } - + // Cleanup - no device capabilities cache to free ntv_table.count = idx; return PAPI_OK; } - static int shutdown_event_table(void) { // Remove all events from hash table and free their names/descr for (int i = 0; i < ntv_table.count; ++i) { @@ -2112,12 +1922,10 @@ static int shutdown_event_table(void) { ntv_table.count = 0; return PAPI_OK; } - static int init_device_table(void) { // Nothing to do (device_handles and device_count already set in amds_init) return PAPI_OK; } - static int shutdown_device_table(void) { if (device_handles) { papi_free(device_handles); @@ -2139,7 +1947,6 @@ static int shutdown_device_table(void) { cpu_count = 0; return PAPI_OK; } - /* Access function implementations (read/write operations for each event) */ static int access_amdsmi_temp_metric(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; @@ -2156,7 +1963,6 @@ static int access_amdsmi_temp_metric(int mode, void *arg) { (int64_t *)&event->value); return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } - static int access_amdsmi_fan_rpms(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2175,7 +1981,6 @@ static int access_amdsmi_fan_rpms(int mode, void *arg) { event->value = speed; return PAPI_OK; } - static int access_amdsmi_fan_speed(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2194,7 +1999,6 @@ static int access_amdsmi_fan_speed(int mode, void *arg) { event->value = val; return PAPI_OK; } - static int access_amdsmi_mem_total(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2211,7 +2015,6 @@ static int access_amdsmi_mem_total(int mode, void *arg) { event->value = (int64_t) data; return PAPI_OK; } - static int access_amdsmi_mem_usage(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2228,7 +2031,6 @@ static int access_amdsmi_mem_usage(int mode, void *arg) { event->value = (int64_t) data; return PAPI_OK; } - static int access_amdsmi_power_cap(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2253,7 +2055,6 @@ static int access_amdsmi_power_cap(int mode, void *arg) { } return PAPI_ENOSUPP; } - static int access_amdsmi_power_cap_range(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2275,7 +2076,6 @@ static int access_amdsmi_power_cap_range(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_power_average(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2291,7 +2091,6 @@ static int access_amdsmi_power_average(int mode, void *arg) { event->value = (int64_t) power.average_socket_power; return PAPI_OK; } - static int access_amdsmi_pci_throughput(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2313,7 +2112,6 @@ static int access_amdsmi_pci_throughput(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_pci_replay_counter(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2329,7 +2127,6 @@ static int access_amdsmi_pci_replay_counter(int mode, void *arg) { event->value = (int64_t) counter; return PAPI_OK; } - static int access_amdsmi_clk_freq(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2361,7 +2158,6 @@ static int access_amdsmi_clk_freq(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_gpu_metrics(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2378,7 +2174,6 @@ static int access_amdsmi_gpu_metrics(int mode, void *arg) { // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) return PAPI_OK; } - static int access_amdsmi_gpu_info(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2442,7 +2237,6 @@ static int access_amdsmi_gpu_info(int mode, void *arg) { } return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } - static int access_amdsmi_gpu_activity(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2465,7 +2259,6 @@ static int access_amdsmi_gpu_activity(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_fan_speed_max(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2483,7 +2276,6 @@ static int access_amdsmi_fan_speed_max(int mode, void *arg) { event->value = max_speed; return PAPI_OK; } - static int access_amdsmi_pci_bandwidth(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2517,7 +2309,6 @@ static int access_amdsmi_pci_bandwidth(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_energy_count(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2538,7 +2329,6 @@ static int access_amdsmi_energy_count(int mode, void *arg) { event->value = (int64_t) (energy * resolution); return PAPI_OK; } - static int access_amdsmi_power_profile_status(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2562,7 +2352,6 @@ static int access_amdsmi_power_profile_status(int mode, void *arg) { } return PAPI_OK; } - #ifndef AMDSMI_DISABLE_ESMI /* The functions below implement CPU metrics access */ static int access_amdsmi_cpu_socket_power(int mode, void *arg) { @@ -2581,7 +2370,6 @@ static int access_amdsmi_cpu_socket_power(int mode, void *arg) { event->value = (int64_t) power; return PAPI_OK; } - static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2598,7 +2386,6 @@ static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { event->value = (int64_t) energy; return PAPI_OK; } - static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2617,7 +2404,6 @@ static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { event->value = freq; return PAPI_OK; } - static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2638,7 +2424,6 @@ static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_cpu_power_cap(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2660,7 +2445,6 @@ static int access_amdsmi_cpu_power_cap(int mode, void *arg) { event->value = (int64_t) cap_value; return PAPI_OK; } - static int access_amdsmi_cpu_core_energy(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2681,7 +2465,6 @@ static int access_amdsmi_cpu_core_energy(int mode, void *arg) { event->value = (int64_t) energy; return PAPI_OK; } - static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2702,7 +2485,6 @@ static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { event->value = freq; return PAPI_OK; } - static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2723,7 +2505,6 @@ static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { event->value = boost; return PAPI_OK; } - static int access_amdsmi_dimm_temp(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2740,7 +2521,6 @@ static int access_amdsmi_dimm_temp(int mode, void *arg) { event->value = (int64_t) dimm_temp.temp; return PAPI_OK; } - static int access_amdsmi_dimm_power(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2757,7 +2537,6 @@ static int access_amdsmi_dimm_power(int mode, void *arg) { event->value = dimm_pow.power; return PAPI_OK; } - static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2778,7 +2557,6 @@ static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { } return PAPI_OK; } - static int access_amdsmi_threads_per_core(int mode, void *arg) { (void) arg; if (mode != PAPI_MODE_READ) { @@ -2792,7 +2570,6 @@ static int access_amdsmi_threads_per_core(int mode, void *arg) { ((native_event_t *) arg)->value = threads; return PAPI_OK; } - static int access_amdsmi_cpu_family(int mode, void *arg) { (void) arg; if (mode != PAPI_MODE_READ) { @@ -2806,7 +2583,6 @@ static int access_amdsmi_cpu_family(int mode, void *arg) { ((native_event_t *) arg)->value = family; return PAPI_OK; } - static int access_amdsmi_cpu_model(int mode, void *arg) { (void) arg; if (mode != PAPI_MODE_READ) { @@ -2820,7 +2596,6 @@ static int access_amdsmi_cpu_model(int mode, void *arg) { ((native_event_t *) arg)->value = model; return PAPI_OK; } - static int access_amdsmi_smu_fw_version(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2838,7 +2613,6 @@ static int access_amdsmi_smu_fw_version(int mode, void *arg) { event->value = encoded; return PAPI_OK; } - static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { native_event_t *event = (native_event_t *) arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -2861,5 +2635,4 @@ static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { } return PAPI_OK; } - #endif From a6f417cb308ce12bc3af9b8b1f81eda973c4fbfa Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 13 Aug 2025 20:39:27 +0000 Subject: [PATCH 032/147] change rules and define variable --- src/components/amd_smi/Rules.amd_smi | 2 +- src/components/amd_smi/amds.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 1b33117b5..0dbbdff55 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -3,7 +3,7 @@ # There are four other environment variables that must be exported # for runtime operation; see the README file. -PAPI_AMDMSMI_ROOT ?= /opt/rocm-6.4.0 +PAPI_AMDMSMI_ROOT ?= /opt/rocm # There is one library used by the AMD_SMI component: libamd_smi64.so # By default, the software tries to find this in system paths, including diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 677133314..ff1783c1f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -7,7 +7,7 @@ #include "papi_memory.h" #include "amds.h" #include "htable.h" -// #define AMDSMI_DISABLE_ESMI +define AMDSMI_DISABLE_ESMI unsigned int _amd_smi_lock; typedef enum { PAPI_MODE_READ = 1, From f73229d4bba77e94161f336ff808efd4b407c0fc Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 13 Aug 2025 13:44:00 -0700 Subject: [PATCH 033/147] fix # define --- src/components/amd_smi/amds.c | 3 ++- src/components/amd_smi/tests/amdsmi_basics | Bin 0 -> 1142624 bytes src/components/amd_smi/tests/amdsmi_basics.o | Bin 0 -> 55648 bytes src/components/amd_smi/tests/amdsmi_example | Bin 0 -> 1141456 bytes src/components/amd_smi/tests/amdsmi_example.o | Bin 0 -> 51184 bytes src/components/amd_smi/tests/gemm | Bin 0 -> 1202424 bytes src/components/amd_smi/tests/gemm.o | Bin 0 -> 128464 bytes 7 files changed, 2 insertions(+), 1 deletion(-) create mode 100755 src/components/amd_smi/tests/amdsmi_basics create mode 100644 src/components/amd_smi/tests/amdsmi_basics.o create mode 100755 src/components/amd_smi/tests/amdsmi_example create mode 100644 src/components/amd_smi/tests/amdsmi_example.o create mode 100755 src/components/amd_smi/tests/gemm create mode 100644 src/components/amd_smi/tests/gemm.o diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ff1783c1f..ab8ec9ee3 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -7,7 +7,8 @@ #include "papi_memory.h" #include "amds.h" #include "htable.h" -define AMDSMI_DISABLE_ESMI +#define AMDSMI_DISABLE_ESMI + unsigned int _amd_smi_lock; typedef enum { PAPI_MODE_READ = 1, diff --git a/src/components/amd_smi/tests/amdsmi_basics b/src/components/amd_smi/tests/amdsmi_basics new file mode 100755 index 0000000000000000000000000000000000000000..925e851333c2ea56f8990e0dc3dcfc8913e3e93a GIT binary patch literal 1142624 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%0DO7A!2c36x!Ex8xDljY77m)qZx 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

1N17KUxV1?6S5{pX!eoL0_0gFW!5 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 Pv%lJZ;0iAKg!ca*OCuPl literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/amdsmi_basics.o b/src/components/amd_smi/tests/amdsmi_basics.o new file mode 100644 index 0000000000000000000000000000000000000000..787fc8a7d4258776781d3b8b9f240b5157ae8559 GIT binary patch literal 55648 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 JV#w?Ne*pUeU5Eex literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/amdsmi_example b/src/components/amd_smi/tests/amdsmi_example new file mode 100755 index 0000000000000000000000000000000000000000..339916c13d70adff8c405307a84a5ecbe2070ae4 GIT binary patch literal 1141456 zcmeFaZH%K?b{@uENtV=c>{T2kYgu;QopEb=W~!^Zs=9l6xjWink*scRlPnI&>h4iu zaarVBRorHg9Da0luO{%?0g_GZ7@HtA^uvf32omX+ARscJz(TM<07riUEfB=n{PF-s z3?Xm;#lIB8K=PdX@xJ%mkC$Y1^-RxfwY0W3fw`Y))za=G_%cXNLh|Gk;p%>5Zae;WULPyPB{E)sv~&mVkI{-8g9 zPL=y9d{VuS)$bpFF%rM%&tDebayk8}M@XMkFZ~y(Kjr6l|6kdl{>*(z{!I0L2LID= zJwN?<^S_Zj=ufjA&GC2tzU=jP|KP8R2KDEAYWxkF5dAayqk6f2pho*gvR+Poe(Uej zkGb6U|GE6s^?nv#sYa+jngjhiksrERj)p<~{h=D?AF6TcPf>vCsPXE3X#St`epY|> z{PaFFRK1UXPd51R@4ZH?=k({_zaqZo^ru>d-212})Jg#i37 z1>jc$@T~y+ZUFv`0Q^A!eh`5FwE+A$03QY5ivavL0`UJR0RK+{@V^s)|J?xmzYf6v z+W`D`0&o&9eE9GO0r>wEfd5ed{=Wy{|1<#q;{g2s4#59a0RGbuG<@^A5`h2t0Q?sN z@V^p(Uk$*o2jI5?@UI8py8-xv0K6H1PXq8L;E%tM`=#7>|KU~qmCI>4_MhPI*YLj| z{MKJ3aPsdrKxe4@_pI{2hW5Xd`-{16^<_J{LRY|l$$_6L`1e&ix;#mXU&#Fw{!9Pk z|M%0@cmAvV_A{c)p9z$dzf#HcFWrg@(Z4MF{28OQpUwR&T9^Noy?g=lk^lGCG3WO% zQ7I#TA@}#J@Bbb9{!_U>P~T~77QZz3`5fB)&j3rm|4j0|@hi{&jU3kO_t@`W6u(n{ ze_=5AH%X)U$M~JT|5yLT--Ful)43n1^4Qkg5&nnch272N{$}or-^H-6d{2t=KS#ga z{g;31m%sGGfATZe{_@}c<=yiC_Ah??;p1QaNB``<{3zGyKr85VX7lcJ-Z||KMt~fj zjzR{{#v|$& z|1Za(2Jkc)FWT;5qL{;I+(A>_`Cu%n05YEDx`*TGoYrOjd=hsKsRX`tXR{a!d(<5a zsoD8>2;eiUHch%eUd(9*y|aF9J~)kY)ap?DHH}AD>l~JBh#6AV-ia94eEcML`lLUY z=Ef6@_^3CU4|7L-@#VuA4PlO5>F0XG@hryA@5W?1es8ru;DGNU<(NfA=aP+@eGJCYx?cTiEEh-qW@53v_wITqr-Gc-R&X*4jK zj07fhkK-BPA|eCNt)XDsNa1~U#5#0DvG72v32{o;Vh0tw^(MH zC6-<66!21fP6!$ML%FK`;q3WoE}3J0C|0>Yl=#qz``vjLyL~vD$-|WEU~q&XI62+9 zKzy9N{!nV*_o|iMVrP4Ed-HYf;+fDj@+`}QIZ(F&0#bReiLVEA&uoBcjE;529b?^_0(`q2MQ47ldS^xMRMgApYEo*8guA`-uS z*MNgDB>%o=!2fIlh26}6gHa^^e$#;exdfWa{lI|#c?1622Auee{`b2EJhgo0a=&lD zP5JGI2Apg_`rjWK@PAta@%bYI{)-0u#|He^fPZYj{~ZJV#|Hf0HQ;|@z`tz3|I~p0 zMFXBYO!0^Kss8tK2K+B+AU?ljz_pE*e*Urn|I0@C$bkP91Afhb|9b}frU8!(_+113 z6$AdB0Vg?7|GRI%U)MlK>F;Z_@6i6KWD(d zX28E>z`t(5zihzYHQGOFBp`0pC_i6I(s9UkE1euYsK@;E4fCYQR(b94?2}nReq_JYn^8C1Nmj|pxUYE zFYWzyr&4LKLPNKmG;`u^oC^K2Qy4@)io4G1_8%Em^$=^}0+dGLPp=-`^)vbyG zNQEROEo4lZ-{J8jCx#XE$MGy0jpq>r^w~T&`1;nJTxm>@lfmd%b+m<16>`-b-JEJ) z%m$-q7w_j>C>__{%+;^*GI>(bm=M-wopf{6Rxba&&il@iVJH7E@1QifUS*Hj6 zx^p@hbxxjR9yBzy4WbO@5@GI>N!;Je)iK@KVlsjH7(*2uPoj6?w=?Cce)xz-%o9tI69J?cI04Y90ZC0gxjr-|-pJ*o zwSJV_!;+mYpd3$z&vVWA2<8ST_qw}xp(jJxYSb#7W}*H7>pFkh9nvgB8~YDZZC1=W z5?VY~Id?A}Ee4~wGMdN3T$C%3&bGOE}_zS4~4^gk$eD)p9{;*Jj=w>1JKb52n-!C4z+^^(oUSaXz5c6<8F2lhkD{+!!`|UL>HAOP=*?VVF+af>9rOydQtk#R|2M7<`!~pL zv6$s(#yKeR@iTLg2s=dsgZcB^WPApLQLj7c;IJOYv|jms{B+QZ-^HTW$3Qn6VND34 z?o${@x`)HqI8&zs*iL{TJG5iKAN5@>EijAd!u{^Ff7TVq1q0P|F@as7LUbYOjZY_J zI_b;3XqHDnz04yl&5q@Gj?b>+f6>)jGhh)u z=>un9^;&E_?35pt>+Q~71wBgp!nN0~&R%;HSjP~Q*8ZqF>P#o6*l4lNL_*Nu(Rdoc zdIHN3Vf$4O6p0~3D)ligbc)rwu^jisX&a25##7jkfHy87i_rEJ-~ccJ^yWX@khR5V zTe+*x1cf7e5=?x(`C=O9#7~kijgOAVN~8=C`FviItHl&YdakkLW?qi^-J7!MLbba8 z2wS*cE!Q!PtG(RKuMeVM`ISfzXkhtK2V{RV?<__=U`wvLT~bFw+kBckA_LU5t22Qf z9?o$(o<3JZEX5I^O*EUtAm4*g)NIt$(d}aMVI0%j0o+NBv?Q*6z7Sj#*d5B zUP2HIu)x1*d^&y_cgUXCmm3FelgHTw*&g(x?(}$Ziru8cyf``<^al7s`~@?}9gLog z#%Cj<;lS$NxF5@ndRT7m?zbSR%Z=GG39d$hWM>qB=zTPqf}h|_3KApRs_x)?+?Rjv zHaqPHbziFq)s|;!2Q=w^LhjA&O-YH64j$#M_OIUD7XQ1h|Dey@l`GWL_50Ome=&!t zHlLfFbrj!=pKbPXz=NoE|2w%tv(_mV9##%&h&+3E+Jf~npPOJiVEP^}j!#gxgAgmG$ahy3$>$>QRqDi8NIJ;MJtwE7w5b)O1@-s~65%~zTRFvX(1pdANJ?%$dk8W!I)W0!@f%?W( z$)+@C0;TCBn41bl0~n|c!3bu~X?OZOnw>1>kN|;P;7??-7DDVM2oA7QP#xNy=uvk% z!l?66t`3=0t!r)%JPbpU+zJ-zey%OKi4=*d$#QWr;2|G+T{SsTTP3N9pdQDG zS>EduKPZ|q5`@YpT2e}^`l$#+sC2*5s#Gh*{W`3blYu;uv(4V@DVGf)lnTx|9?{_} zg2#%#q6!HE(O@=u1A-)I`|iQLuS5qU;^-vsL)M+e5pk{r2`lxz%42m_wmB-cMq@~z z&G^Fw@I&!JuTTp&)dMV7qq$$Kl$5{X+B*@j^i+`D{*_#{RBjbD`f0J9n6sd= z!5@T3X$bUE*cT*QoF=;>KkGSpqKXMI6f%xt@Q|H_enl({+$m9l7*!HdklqOsLpiF+ zU-m#N=5%f+WBB$=DO0TM{z1EOfP+zKmW%EE<_Edg$SFo_3m70uG|P?sW;+MT2rC!S zueno1 zZgX=}txkUdPvo&=^^3`7E|nS*qHiLZNe?B$YzriWZ~#Iv9>afkHku{c&lIw>(tbcp zrQVqkMp3^c8T-}QbxdZ`il>8kmJ<>-Nr+NBp52gZasz~({s+1Z9D=L!+MAr}Jv_bt zsFv5nPYLIzCYA`XO6rRym=Ft|Q}JsIN8d3Nsps&NJ%N8W{;<>Iav1ebq6cKk85Yyv z;{-nJ9}W5jtV|*p38z;;G9hqo=v@J##~Dz6WJAc@@c{i(z)(I!Js)kJgxSg z@}T1am2jvxk|hs{FGSa&^#&XBl6=jy`vEfw`>T6!ZR%!-iGG|fn% ztREds$ES&I1|tob2L_~0kw~T~DWsyJQX24Qz5PI*p@(Iu^a_M0iw*H2eR@diswR>} zayU|uNpq>CQX@yAZvHoN4N@rU4^7H0o5lHQk=nn%-zGLKPZ5+%tv>*Pv5$SIg1xz9 zZlG9D#=1k2rUw0IkRb%m8!b*@K2bP>bJ?fuhBXCBP{OqerBVl?d2+s$v?S(NEMW5< z=8D4LG#p{Gg)B?_#i1mG5?UK2D@yC22yQCa7}>Vu%!IuQ=pb50Az@2M(8gRUA+0`2 zIhjByvY7M-PX`c>UlS7~bq^Befj@TBS27x9de9!MhLpdHTEBsn|I6;GK2g8 zG3o>X17zDt5vqPrE5I_Q1n>l9A|=?7X-Ny6SUGjjHGfrWXRH^N8uUX+^MZjj<>dED z55?>id3}wTP>1m1H8MrKmIf_Y#vQV=rHDHfTB$w&xdyBnkno^DMGv7<42}js?T=)K z2d#2b>fSA>eCuhn4tA3%HTGL=A;csM)e)W*AUXO%6ftzuRAX|6yOs_|wj zAxcG)xJI&i5PZufj!3ekG&DtBaTcM2IPy2Cv#Cu|i{1)5NdY+}1IbsS^0NufEF^01 zk?0sS=qjWuC1gXWgk?FRWiu$)rk*^Q&oz>Tz>4~BUdgpj1~a8Dj*k!_1WmF#nnkd2 z$rh4h5AyioVgM;pFeqWKz7}sDZ*D|yP$UHfPP`$0B2p?vkT)S;3VU&4!`cvEDMV#( z4DNuzLrtZ=L-iDt06z)BAipR0AD z%n4aV5v;_~kr1rZ_aPU`w}eSyiGxJZn&8pa8s-#9lBjoeAuy2C08O$|l@->;DI7Bt zfro=FY#_VM{X(g@U(4Y;;pb8JbN~+lM5w`GUg`T%q7@6I&YMxS&#sgMyl7$5PUV6Ppp>-Kzj-l zAc`OvVaXH+oaSm32qwGZx?}EC)U^gd<3@sd!Gi4e4_5=<#eHt6hqQU=CI)sxbjAsd^v7ZvLU+57{ zY;UvG%ICDb(>y+=wqnB*nVwkLmFw59M>H%cw?x9769JeL)^+lN{p!2XcFOLRBqoF{ zZHlm*6LLqnDNPXQ#Kb7|LQSg$-C>>~d72Pl*n1-Iy8w%(gyXCzzTypE@0P07;q{z0KijfvUq9elIW zZXIA=v`TrQYBGgVjD^Toy&+MEr0n)XGGCfZ5MLQeifS~ymUhO05gcfJ1?GGqPPU$p zdeGUqrwH3i{zlOPsUYAUqo=1svQ8JOjaH}7XmlE7XtLe@BW9h%ia?g3|3UmwA(k2e zNea?Bnucl95E*g~AzGge`tuX}M=02dvYz;Iq2@%1EMO21ja4^VeB-4V(v%Tgyi1Q8 z=_61*3??8HRQG$K&XL>IP(t?vp$pf2I?jVtXK_;%4#bog(gUnT7k^t zS$1hdXpzr!mUBIKavvM$s89vJ64_wi|W!n~GJTQJ?~LumQ1a}?$zMhXL?67)rvL_;9gLEeHj8NO>ty%+Pr z5Iw{CHXJ;Oqc?BcMGP;E)Ze{VcyE)6Zd7MK?y`p8T7z zNXBr?K3tHPIfeOD^0y}V+o|t_B@r!f0m4g|o=rU=3ZS9pQ@ew-4U2#lc{bJWk^v=S zslZAn1u=sr3V?PQq&&g0bbHPl1rtC~*Jh1$Ysg|%>-KUmaZe^NJm(4pc*O4@GG7K% z^l!w^V!=of50~Z*@M0`uVLT?fz&(_NzZ9*VT9R`Q=Ud{bTicQ_bV!9SNV@lAnKSeb;dN^Gm9{ z4cFhVE%{xSd(SHOL)HI#@2K&r-}U$RZcF%g)#vxE@4v6Uf2=-}da6BLPs4L}WP1(u zsek{L`u__?Rq33r!Q@5&Q>H zP)d(AkEi02%gZS<41yI?5=JA}!o1O_Et-f4ruI+>7=zQrX@qb%9R5DMV;}*jGl{M} zdeg9*!UDEZIjH%EXaJsuBsx#E2?}xqZ}W@>AT`X4l@O!M!MQ#!4PQWDH!SBfO$(SFfs|{j?le#b9qn;24al)99M|rBV_l;i)5TL%x%t zU};IHB@8B~1H+9d``5uBzzf-h*Rkjf~P+l z-X+r!?A^2E3V@7B6uN9Im06gF)s8DRDF!C-V#{Rks+3~9a`=MXkU=(y7AST{bV$IH zA;?hoiIjrxkT2A~HcrXWm{5qkl|uTUl8NI<*&7p-$g7%k77YV1eT9%F;?fd(5bPrq zqyR~(pLBRI0!ECFM=&+^F)C>5G`#K{^3*6sLBc-(pe+xMM`LoK%7K=Ib0NIOkc42= zg|sTx8HZJ1YYrUGa00@%Ib6&r>QFLHu`D7MOKQqA2DL8A@^UtqpMcn~<(FnERnD^x zwD&<0MIP6H_x0uth)v_+`1tt^b)|GRIK+^SX)2lZV2dJmD!FjUlts!U;vMqynp!S8xPu0}vRAd~bp!1S&R*uv5+7ZS#)h3b%e zIAp5||3^&Qj&8z8V&IJ_7|L>Fx%qk|&|d~5Le|znI?|~l%Q?D{mj13uY=MD(xabo{ z6Q({z?ezNl&cD=3^}5LQtI42c5gsFWWO8mbgVg1P#+a7_PeQ(6RR?91r&d+)l?RsK za3;q*b!4ilwA8v@vR}pIQ1rmDWXBY9L2(TTH<)1o;%G)e70Mw1)oy@-CkPIVri&59 zKq>kJ?JuEVuU~ncL~?{vk@KLtn2+Jmp@1uJ*b^{)8V6Yz$Tcj8aRPu&MAR|vU!gV< z2c5}NNFhTJ&Fzkc-D7n8dPGE%#A@NuGb_A>o5i&5Z-EAk=3OZ3q=SQ=p5k%h;9I~(4B}y*I=q6pZNT?@=T>y>!8>n?udw^vxz%~{ z&J}5M-7x31VMK~;G|O#-#t22d-8?9^EBp19QwgiXDxpKf=|1Qj)bAIn?Q)4#fN2(5 z4J(hu)Q!UdP`qF6)GDo3nRg`W6_(W7E5kQue zAJw-$di$gLHe5>e9sI{^XZdK&(rO%`0Rs6Mf{RcWwm-nC5>)F>p=h z*PNC%0AHoI0W2Ptyi_UT+jI%gyFNquuI=(U=s>q-6^gTrGSKlB{Ve zcQ@@o&)JSkl2A7Ign!;oxzx}$87O5 z3Iz9FaWhtFIlWF#F~UkVjK&o)RD{Iy3xa$r)hc3Bn)~o^e9&r_Ys*Six7h)rLt&9& zcL09!gR5_BqHeta1w@GH`6^yA4B|fSIx9kL@HYRBfqf^W^3!J+;0QJfHOucGlv_lb z_Q5dn#!NYl6;&;sv2BPBOKRR zlc*1$v{*s+d2#EKp-HJ++=raqDc2h94;W6VE0?@9B6CJMlRPv&*mc4aPW&!TTHV4X)^Gu(-S326FU+<+IxoXI@G zn1%AbQ>u?Cd<1qzWj~S49Kd=sog-rxE>=I^zzrE##b;#l#K6e#kE4A z*LJPte|-0ye5+Wf77(CqY=M7UZoK7g3oNy`^wV45f+lScjhJ?7hG1($#&qT#NH_b`HI3qV!nXurP-$ZN`B1q{n7@2RxZ3c>ng<%F8 zhAkJ?q0Ki;og^afwLZF>Ghip}5idJPYwRSS8QI13iLo3~X;UBPRuerz_ z^-LZY$(v=q)q0!96F7ZjWHwCLpgVd`iOg(9`!dQ{{RA5+^QnCel#P6TD2J77o@hN;8g-Hli=9;J<nzimZQ(B?OfP1GBx$!ITKYa{g@dSvTI(NLX@rP6*Yyt zP9Y8m03{X*=PDeKNwlqyNrZHL9dZg}e-RO(Zm8%u#0@Y{5nu(G6rTVqFMbyq7Wc`b zCOp0*(9peKYVx{>!a!Ew>$6F>M?O(g?G`cHoP3GgNXk+r)^$gczr3*PxV0_3Ri%}K zGE~X7i$Pckbh&{cre?NsOSZ^p@EYbNQQKSqs=JQo%GUY zpv0$bZjx4r0)Ihzt?IiInOLDlk&7z}N%jpBbTG-+=id>P8|F z9GRpLhauxPl!fD)lM30L`g&2CW{V5V;}-;ztL%b&?v*^G=b${hKu^RiH?9Y z1PsEY0>g*Afm)qXqaI;S*4q$3z%0WbT^jSNM;OKr6)C9Yv=S=-(vYr>FWFC znVIT@MhjKEK&DfLzpyDT4(AlN1W0OieS@v4%9yamWYwZsYp5|pjYHY{4v`F1huD%u z&$!f)H71!v=~Ew5z;-|(XVP>)di3^5G#qvzgGJF2b3>|@Z=ZBTol7-ZW}5TpcYgo0 z?G83nmrFJJG6YQoNHT%mI$@V;w2JQZy5{Xr$e*N$f=e~pR9uDTeyK(i6LP{!FV$!f zu6`M{!Q|-kL~W3EM3K+3)`w<%^lhR&lk$ z%(qFaldz`E!e>~2Rtj_kH~7}AlW2E*2z#J#+lMu1{9-wyZ^5@MYFg-b>5PV* zkt;z=w4-=_?n%7VqU8-dxZ5u;a;a;E83=S4l`n5dUh2^LuBg{E)VUfcX0;sV=nZ*>~`Dsx^Mp>9V{c-&T2^kt#W!|Ag$ zEK5hQJCo`8ykoX%F89u5c&MnGlK)<&)y>)xHru-k@=vita8Z6BC8nv+N=SG}vKnpO zmf?^xbTRdV+&)3p0^F*{-TX0pylg<1V%%p?jLVmhGn9;GxcXc!)QA>{0BW|g5VPzH za>m6(eFNRC!tIfsD(=?K z@g(C&?$v_T0dH5%w(%K?QzZSsy{Vfeg45Mh85x%f{g8SYs>t6Nf^oyJ48S#Mfk#hR zR%K~CS`u-W5roIZd^1FkDysWPdMq5U#EL&dH^A_LCW^_PR-oh33X(pwFWk22cF{NaP^IU3@&;F&xil-}uHi zuGni~rZRbXYS;^?TdreAg;kOVu0EdQy7`D6bWSs>(gpniQY7H%7WqE5x(#&Y^`A%9 z1iVB+zf5D~DL^%OQOKqYZaS94D9eNakJP$y3b&-ijkF49j-OSjl+VH^F`AnyZb8Z% zDQs<5F$eRWvP3&FUKSochSZ~PF|f{-NOjpYLkSv|^tnXF<9%xB&6K?idBV7Yq4+49 z-jaI&XvS|5PLg5;zlE82!;K zi`*lyUctIdL&_Ua*tR^-;(h^%zKXD_H468X=iaCU3!A5s?BIT-?Y3_Lt>&#?W$OU4 z?WgW>FIcCs0hQ(MYO}}WZpIZ+s3i3(IKU$uo#9C>3ZI!}& zCSC>|FJ{pb-2TKx&m(%M0TFfYj0mXDz}q@ku1Jq4%w- z`3fFzqdyRk`+?QUdZJMt@&c?UZDF*5M;!M%0UK zKqRV+pCMZo>ggO)Sc`2z1k$f+;oo`>nB%Y z-2^>^JW08ZEUrm{y%X7BCfwF^&uxf}hnhL}4q#~XD1cC(?2X0K+UKRKx>-R}NuCy+ z(6<&@o8z;H*uB!MHMvB>s75oowixx1`UQ`yiCit)n_HV(w>Nh-@st>@Y(-?4xqVq{E?P#~&_`?KrB%)8kmseEpK%Ms#*EK)zLag)m7BgSL5$|JRao}Oi zi|kyKLYbO%$Duovoo!Glj28_d^~5orO6?+$k`i!-6lbj-jI-xj4csmepLCH!w>5j+(A`_rq z7x`^v($DLZ^fOJ-LrH#AI#tR8eHK%0W~3$-9tt=gq!~tLea6tIGMicY#1pDRNQ3eq zx{wmNa#3tXt?@=wdE=CxdL%;*7Vi|fl#zEAn`WLY*#bKPX1IYhTeId0DuA(07_5FU z_WERuAXw%^kFH5f6E>&u=sKQvjHiQMq!SB!s!$rYc=LEOszI0|R1+8!weXr&cN&#M zmeuPGkz|eoD_LvQH z3`q%(G@AUj=CJDR2g$Hjoq2G841cgW=Qhz<+Y^erTQb*VO+4$xO@d~B9*ykhFIBP( zl`OGt-+BNmGqX3F>q={AT`Gm@uP^lEtH^QCPQQvP0qIx#s!K8?6OD2y*DrNzBZ0OS zJT~nPomRehzfgzeA5R87<{i8mwvBTQ``lu>VUoepq~DY=#DSP)oaMVPWrq9s{M-Dw z(}}#2rB)1P9vy(^oFus+B%$f>iB#k?kLwDqfnddD*7-oiC3n_R!8$dBv$ML2VOVvo zGHZ%&yp0v?zp@R#wSAS40=vFzTa@zHEh`S7E2OmBY`m|E^kf=ZHO?N?moR91CZ>#J z3L`;*BjNCCcXcWE*suPsrNnzEg%)n%TS>M>wn^a)lzBG~YJ{g!DDWXvLcNfL5)3!8 z$XKus*1}$`APC{=qpTH*OGb$jRv&oM4C?S2eH<)X36MJ8hl-Y8y^oCj(5r2|E~fAK zuHFY|;gYpN2|f>%zjgIKTJJa8OFE$kQ?mYY#@D4Th*g+IdjWn8xnEM+3AnhoikS4d;b8oS3*5{2d85{;rVf?0u zv&P_4^$9jbM|CpwP^n&-Wgash3IFD-g#E6~`NnweeX;%HT83pSNj89&uCA{WG_Z$FIes+v@$8*``oTD)1%^BRm~;GMK|Fhqpq9QKNPsej7Zydxw6pe48F^#b=vS z3Iv;ShB?uU?(H3px2?Gl{dcJRp#!et?!$86!)G4MKv8Ccb z$~R@%)bLWY(PJ&#pei(;>N)sEQN?$D5E4dLMw>u6VLwK>_t%HyVevh2LL6o>R=)J9b+ zb-YDfsVDtx>>l8a^JbwAsEBJ9zt}C=__0zY&yqOZ+a1xOEFChYjR0(OCU!HPg<4XB ztjfA$vGMM15Ta)7PmkE+~v zFu|H2B`zwodC~$@ELOQEGTqGP-oAS>QKQm+$S^3aQK>&HRAn7LC#6c5k|y#4IX%-*y01{tX zbinoxn&9%{h5@<}R}2_S^jPF6c%ryp6Co{~^5Zg9>lB)7AwAVvm0C$mC)rQYohhkH zs~X$RP-pfaZR@}2?Ep|3VKMIxk1Ci1+&jFDQ1@)q9v1>EXilFVBR>pOb}^sT(H)yK zYT^i)GA2St19R}Oldt^!)9vjC23_AinCS(iFOF%)sHa7r|!KRuy*!K?O2JgbgHpQOoW}DT}`7 z!f6YTpMpowPW71dC700JWGbzhI6rQI4dcXu4!}B!rXZiz7Kg}Z_}0or*5WYc<6vOfKNmO1fjTZY_hC zU2_GCmtE!JOkQF$%F<3^qPfrPWthBdk$`?eI$INOl5AnJ^^GVold10bmO(QM8OwyZ zBWNkpeG;A4>Yp@_)IZpW7{uF#YaNq#r`uqNh34#Fd;-A&r;IX|sDvK_8mefX;`;3N z=?;a7f@}t*N)xePb`?9WpH-ng#5$y-6y5UW7n)Iqxz1;*^C`7{`gy&P_tNR;m%B+ z=Alw~B|yxo(8CR@zPKAVj#~40a?%~e(Y0@ON744pt($LdM1%PoblGqob%(?887{+% zJ9(#v1C(2g2J`5&J9{#Vj&S$PT7$2leO%`|>EdP@D&g{8G(V#YeG7X0fv#2JGH18X zrDeHN?DSgAimBN1+wc`~=IdEVePl@{@U^kmaKL2g06x&Zs_TaDMrupbeVoY~c;m?| zdK<|k--;&P-V>}I0PM)9`-6HI{2I~DM{m(BBHy@HS^!jR6p9bZ{9vogj=Iax%TqGDqVIv?`nd@u(JWyPZdQ%Ek^PhFQE73X$Z@~a!g$+a#mJ61P#CNj64 zHZgIEE=Fhxs@j!LURhxhvifqw=cEFRJiZE!ikMVTJz!dTc&smva+p-reWk8|7V=3y z-<=Nn#|W!IYU#>T^-VejMu+;d6HmmSgQpUNPXh6kc}0zme2`-MECF6&NTFD+mFrvz zKyh2eNR&V6YOB%nx6-P^NfWAi)IfQ044L&FXe*EvOO9%`HBEUce0l}fsfqlt!U^{4 zxmk&JyY`X&y*&{fr*HM;OXcvnzesaQ7{xN|C0Ug|UBk!9o8z~Wkrl-`!WMPm z$N`mYS=a|Dg==ZB+P6sPD!rVRwFjMsv{`RmK4jAQ5sz=`s;16gEF8eP)G2fx6{>c| zOno!PtXqIZ_I{ooL$U9;cvDM?d(N0yzVd!&@4)6we)|tRn~6DzB0N?$0ofH(D^R4K zosg;r(rqG{{nsc@40JzA4MIs_kRL|sU;VE^|LP4FePo59?C%TYb{{;A8SR4DZJWY; zlDN8ZB=v=mmY@nrwZ$pqIFE(Cyj%+`7OI7&(rcYYrRv^U-ZRIgOpWXoG%}=ixGNO1 zfNF*{%I=c}CiSw8S`QI|f_mGx@8sDpY(Ff;jq8fra%42Xw}VRKD(j{CSKH|snf!%~ zOeuU?r8Gt+7Hmr`n0JfVd^bG($u)BNgO2FwPb|aMM{*gw{b89`ouXgrr*ox+eEsQ4 z_7Hh939oIoM0ry!V?GLl$wPvK6qNFKBKiPue+P(Zz;dT)sd0;!Ei7uUKoGu23J9x3&)rX zL>0B{%1wxP3qu%Ljya|(7qkhLo6Um;h(L;G_q(&RcsNWRYl#lXL&Q1PhdWoMc-Z^iE5Wdgv4w|(d^0dA$}1ZJUJYS&)Jh_p{9ym z$U1$D6m_mY4!3vxv1q9`e8zCgXMDj0FvNX7=(O)stW-ze*~zQ#4W|LyXTxbFBs*RO zYT_CfgP29oS2Z+TD*G7oz{*vz(UkeGAI;|DDR$AsC?KUh0rE4lxH}><>xiexH7XHU zt>jbIX~4(o?{&jFAT9Pr)vc)4?VTV8BI|;TJUpz8nh_M7bpz88Sry#MT$>11CUVbL z)U`!{CQF5jR#Mv};Ct!!;Sj)K*sJZ@O@w0YyapcEprsACnI;CH#A5HTXdl_#D2la!RN3MVX)-R0 zBv4(xj{#)d@nAAl<~tdzEVeQWlRZ{fww&pXgfaQ$8Co@hc#$h3JS}UiL0ZKsabmRt z_t6^L#ZZvyuCrTKWrs?#?cq$?MU2o@5-ORVi!1`RWD9}@1-l;d?$)^6Nnv5u)ydRA z-)ijFVUxOlvOkyr?(1|E*?$1MAJEY91n~ojADpYT_%B!g2bnKRD zRc;}tp9}-Cr#6;&j*u8GP7`T(RQ!M$qU|uG7N6m&kxS;5kQKUUb;G1u5cGWS-L3rK z-7PjvSf?SUe2^Hn}JFU%*M5v`65vB;;l*;&bi$x%UmOdjmutwRjem!4ICp%Mzgloh}m(?*L3ty zR+Z&;0~5pjF$5wrLZ%rsRn_qbWO|@fgQ<};s`QD?FHr41)vd@^^Qe$;~XFbpuWc-?F#j^IS z-npj{q#id@8x5=ZEIt)C+ zAU}cxyF*BS^Nhm|6HMA+4k9s&H5I$ciAjG9+9P9D=|yyw@Qc1hLM8ZA*8>V zv-FIEJVAcXOnplxMVDT)i(F+B1;d`GjQ-_3(mAd~vv- zg`A(BYvfHcllD-V&$tdy5|%sMyaZ>2KeFmyMaj5;d{E|3s9j}U^> zAqfU=oWXYi=MW^w4G14ZYBxY$qahyPGdx}uJU}GeO35oPf*=oik{}OyLnanvIe$KF zug|%BHjencvd_k;xrWcisVjOFJ{#vJ*JopLZch+zA~XjLly34#%k{zb99@txkDVm$ zh)6APW|tS{DPi;dTzeZc==fGLgbbqrfZOr~?wXsr6F}GP#aydTb1a~<{5f)~v zKigy(s!CQUj?csyoJ@HsN77v8vtsgR>+(t%%Y#-CM#j5z|mB%`+upj!1x_j&Ez zeuJ}>crUdqc+AEx(KyJ?%xYFayGrOjuwGxXl=&l~m)ZP8&AK<3dKIgmJ?Pv|8_aVzrW7`VHGn|2^xXL&?lwME(ym@ z)${r-sKE8xA5kzc{xXs$H%kwfBrXgO?wUZ?}Dlh1&{DFdMcxjxyu+s3x z%;9AgG>4a2&>Wse;l~CMrO+ZZ-ym!aHU+zZy}&Ni-x0P6X`x_N3Odj1+22rDPpn5-6YL zZsA+{N|N&zG>3a6JKRPhH;k?MViOzl|;cyi9$J>`C&2-N+!KF z4@zc1^PnigZqmAC5=Djp_o<8(31@;*=!#>_q$}pSW)?Kp)kAp~xg0*P+C2-CV#018v=^K1Bv$9;23CLGJ&C36 zyc@tR=Nb_A^s$45o%5v7GPAU}#aF*5#4Y_7bDhPWonu?~Mlg_@iigK%`kMH_FUldq z@8PUA@E5-IV9z_b#Gx(t+Cy?aPljG?M6iz$79K#!b2*ixh>uiVvr4$dN??XuNu}h9tFIK) z+0+!2GyBa^Z$vSB#K@Yv6Yj+(2EsL-t+3LmKsFj`=dM1PI zmPeE$5F~W@1czPN72b-78uT^miQ>~mNl2o^i_AffaVd#cZ?fs@Qc%_<5R9cL0w8q16qSEviV~C|+B)eLoB=XxL zI4kzH>Ek1|j|dx^9exdwle7XyVxe>KSw#@3VI%bFTJ|#m^y1_)!Hv{JO<_r=qdL_} z9r?X0c;={F6)&FPm8pYPM`UL(8)Va?zAOvdDz)StGV^q$?_`SZJrCTvwmk2s+3-BF zpw$r=P<};W(3lvmsfuN?JG1X*8dZ=YqEK}!ku+x|&54Y(>#PHh!7Y7-jg-=&xCoCJ`%dX3AO?Xp(Ij9nyAGG>OR~-9cNY9Z5QxNIU`FXb?iwIzfh9guGcLCibV2%N+wJr-c1C>t&#YH?v6I)u36)6(lKC%~+9Vv^x*`_L1lXv5q9&D@^lr9Uc zZNr1zfZHLrI%FRk>HJ~G#!F+xFqaW=+k!z|+jUl=;jT^6q+8-KT$gZBXO<&xVM?jv+d&Zx^*0n%NcpPFYgTu4!W$N=rnm<;(e2 zz9P(PYSc_yP|G88LP-Tefg%Z;oUXMb`TctJgAUjm@xwBPm9OvD&F?R|W=lJ;mnLIT zm$pUAc0sGYv@gCbcT8;cqOb(AjSFBk-&P>L+jhi{hiqG8fE>#N#u`y^G8o8D8#6+V zE8_KdWtQiZ^l6fC&xx$<+E2!}(oGUUaRT}*+GTB>06VEDlsXc21RGy~tN&?%M(;T3b9`K`%%6SI{r)7iIJ8`$-3Yf?r`MsXy?i3xY-3I?Hsro&0tGj zQ5n}YVB<(saXuiAGM?z-Y$H5crC+J^DORLcA?A;=UvR3tf?vQA2Ryp)Zd*p%ST-+c zhpy{HjKs$uNF{yXyjz}VsSZCud0WQ?$ZVczxxV_gri=Qd=#nTyF$OLVLjhag_4K*4 z4GfYg{Z<>+g8S@$NZY`%)o1f_3)PTD*y?)~8C#0j%+nJ;>z+>Nx#XkhbTOO{=x@ji zO2Qs>PvPS^?aq5A;*D~+bY=iWb9!Rg6-I7(Ku9Prph`Hsb%SC;Zp0~JH-QO)#JB|HEyMA4`QS93CKbh7EsNvhc!qe@H{PKB z;tv;tr`;jME1uilCk$nc&D4T?b>nAv3Xr^Q9dT(lKRO&AFJ?E@=a%~1R-Ze0^|Scc zlHa!F$41LxVxbM9Doff3 z)Fk?{q^9cK?vp6XvYKMZ&S;6gEUPKz$@9c3J1ws{=^n?Ov+nRoXa0N==Syv(Ol+u% z`(#!_0%2dZcGViEx3|2fwhGFKv`wm5Ym_#kqv?1w@5H0NLScza8_{AsnaS}3uY&O! z=V>e>UEX<`6JyI`ke+rG4Y!)LPpzEt&5h_8T-K<9sZ)w~YV#&BjPk}C!V4^0lP`kG z_d+9e9;l{RF_2miqP}#m-`tEUN73`~BI@>$k`W|q8o^7CcSF@3e_op26pIH_-ToOO z?4!e2zdPE;A2MH%9L5_Qp(vISQ4AcT26Uq=IkPF5P!t36%O|8m{soX|qr4Hlv5$uv z>6N0>aUb+}TfB+YJsdxcdDpP`k`Bmw-i3yF6oXu&_YW7K%z3DNHad%%1*;|&zk?bJ zoS^Ao9?$Z7&HWl=&Cc#Y1=6YhCX!~Bn`{x3D};|^8c&AZ=M1^?qM(pDczu$8?U{J% zQ$cTivJdh8cU$jw#EV;4iKBQLk9u()uTpN0`c+D92R@j7DVtw7iGs9Diu3AiyQ@tt z*sGm2I%>fj5c^^cRo(<)29R4MN|-zWSB6$zo}H<&Jo=01Q-86RN8Wr{X?a8o?($Fz zD=tsc0xgdokXRo5#Tu%2dGKIz6nM#ZC4#l(BUoD&!Ggf52}&ld+S+`B8^)w*>J|cW z4(LVXPKz@>5Fv7QuR2iq$TAu+iR%huP3nnPnTaPcnz?k;rHdFf0%;7Eu==P=jdP3| z81eGf+r!~jm<};FA!H*0tUJXfzQD9z%7$FXw9d6#@??k&yO5dL2P9Gl;Jhe^y)t%g z?I|McDXP`D^IQi^t#tIaH=;YY4hQoNS}_k1;K+L6{lO5pR97|u6D^8)$u?++uJpAX zqG&WJ>>J}v>rQIY?LCS67CpnH6r69@wn>u%bCMM!dUX~mJ?&Y4ynxnDF`2!=i~>3_ z=FC|ZuHV68_&>7x!JP1(5kJe+3uDpHaOG)_!W(n+kaS%y{0`V zCE1#tRJYZo5pgf3RI78d9%}fn<=|~xk~k1`<#ZwiJAWrs$5+F3y69o~Ye?yc^|7M{ z#I^wJQimlI4hr#iMgwjb zl)SN&x$=&0$s8;O?4P8^sgaD8W*Mv~FZr@<5Vxvmd0XW+e|!uQzwKtKZj*g<4{r$6 zi#}A6DF;~lG$CDqZ#4~uyNvXLg$84l=7aIvYjd*@B*-APl&XXm%jcwF)0f!6Cq-Ra zUWsID3^WSv5aGX-m|UYo$v6N|-2A9P^{r*n^^NKo-8(*<@CMSM4)m3Yg;X!JMp+d- zF^ND(f=bfHc0yUWOk7O-D?nXIM?g(cj@47fN3))aL>6XayDXXQcv%{Za3qw{Ehp&RoZZ*LGXDbBp;)*oZtgr-Xsa z+q~y~xHN)!OM{@eKFEqrN#Q-ePWg3^nL?>7{AAn{xW=bWoX|o{PGi)Gmom;kN;bA& zL!L(KW9; z)zHcL36-^I^Lg|eF+lN1YQn(8jZ+B%%M>1J>0qrDAX*9xPJo~Rg2-6TQAlWHM>F?` z&V}2IV$6!Rxk8wv4g!t&(_>PsT zy#(2kkBfM^F*9+ARnwtVj-Z*+JpD4G-D0NTM@`ukR+dhAMJbi)O%X$P5i7yjW3Z~!@RY+STl zL9<~Ukih07_zTHppAC%$`V$2~n3zr=S0{SZ+^^rm^T6%<6t5L5&@MFZS@#@6N|V%> z*aDwVTQUbetPzToRkJXC@%Q4faHA|iTdf1j z&qZOV-Zdd84QRmvgG$DGL-@|g4y}nCv(j@5O_+H8^B6A@lL!1t~<}#f0gqpFk zmom!%$t+xBycAkUz_}D!v@+vAI+sEV<-2`lgciC-ciR?OJ_Q{YJjx?80EGgY^rx@4 zF0({cw`u5%Z7dUvd{tbx3KMTbRUCGoieFX8ti%RWNYk-$Nc^-^lC;7qO{^(rlU$Y| zXZz+!Rk9@cZNB)f0hLMez8@*`h~W3C)xt$M};i+6zk! zxcz%+?y%J5OLNDIm^&b%*wKK%V*wSW5@g=vD7?fztLy`U)xLenYug**4(vKM;!9qe z&8{zbtu&ghC82!Ac`diXZh!O^8DY1{_3-vbx5PKia)Ydxtogc->jrpHAH*eNuD4l8 zIhe>LV}3;$v&xt^K8vSLM#)Qcm{LzA=2O32=aNNVD2tXJ5lgIx$b@(c%IWSiEqq?| zXKT`igJj2<_AAB1EprKi2U6ev;{)OQN2)3D+KTbIN^eZ5wvasMRHUZ5wir$0Vcea? z{Wqh^ZY^rmaDlhCI7J!-WPBNqxauL3C+MCHnSkE@sBcN%?AtmPp#$H36L&A+@=y3a zSJTA+^-%G5O)&yg$#31*&0-KX8bP-H4& zgUN`Mz;iN4DlRPv)EF}4AP?8{Ig*Es7n83=lu~Rk$411n(Hrv!scWW3SfD6>jSW1| zgHIB=j8ka3u{A16!J+^Jr6>iq)R{^;E4eIu%23bW5qI7vBn7;4p^Ey;wQcL;Pgiw- z$B3*@AxEJY3+d{#swI4#+6Y_T%_|B9y#cK;B0)mKP)(;1Z=rtVB_sFCWEk^zoeT6Xfq4gNH@kNSFlh=GgXI+r)_R*R8j1slV>N zbyxkhb?2?EJAzRY14Kh-aWq}vK{#+j@OmK{#9+eL06*y>8QrZ7!6`>E64%{+b2Exs zV~7&SRX0A{h`zm;fp5=d5M|JmcukISaX#$=eA@l?7)jcYCGIF%%&5(?F)>JZqXxYNhSU~8!v`^Wc%zrAx4kgy4jI4 z+XR_sLV_i+a0-`LS)_plwwAln?sDs+tviX$g^(e!xzHD}#zgw)i&$p;MXa>?qK9-L zBhnqLGY&@d)H+yagOI^4<`dQIVlP!N(#L@Bl?=dDq8Ba4R-=mh*a*|>II+UPcuhO_ z7wn3rt9w**eI?Eb&f;0ADiID6YE7xRs>-g`4b2S|?4d$H^7Oa+3QApfQ>p9jrPQ_j z=75doN&Ib!3F5hQIG+UOX@+EX>m)7} z~GqVh==LL9tNHE7X~%?_wFX_0+3D zYDnaPl1Bm$2#yeUAph)0k?3tWorvaO*={m%=O&YPZg#u^k2#(2gSMa006xp2ij7n2 zi7T()7;(D(s)#Hd=e}09p~zc4BcubZ`FgNlvjBdhq+QnLi|teb0V8Y6LNBShUBSb?!>v;yHBHrCiit{$kW0{H;Yx3& z8f5H+?Nq+yF#Gc91XvpfVZdeW439t8lBZl+ z&o0(wmo2ZEyp#mF&#A$U#5U(hU95m+uA~;utOG*yTWIf5eLRoz$*T%T5T{*Ii7$#C zK$xGvx73~DQJpyqSBq)933nj(ww)dh=w$~K9?W3iO5dL$+a2CniO2*q`&x7YCk4Dv z;;DyO@(e_;J0d?A%w~8f0!BF0Asd@`yGJ}M6V2i|Y+m%7L|0haqTb1PJd0Tf&4* zOvAP$Oc<-&ZH0vEv1HIXxMh|6YV8xC?>9RB8cN`_Y5?jl{#h0eO^jBep*8KqO2ElI z$hv0-wC##DtBPuV@8gE(#4t>t!bO{|q=-f`B8H|!FLRLiB`giHnUiE#w}lr1B7p$u zJNQ$|cXloFWiwm)P!)|f&L>maefs59q%74LOGC2j8e-_y%~TG>-~1^&5z?DwEZL%c z=e8*}3BM?6h#{f@yUHgejJjt9vW|0|pG%%T{0GK6tV>CQ`q*%kkvcZ5o3Ru^JS3PD zyM%qmL~?*l%aze0HK!`7qsUiOW~KHF#i)om_vn$8y@ z5h0vC6PpcVzK&2sopWawI`@`J1#ChIIYj!P!p82)*LMXX>Ui_2;<7iA)R(wy6H-DZsPvW>VYn*|`w=VIO5{9_62_Tzj0)sxQ z_jM@wF_3h-ZsQ@X6P zOK8Oo`xhX0KLNIFSOVmh^zaDvsL>vR8}EztvH(1vAsVpxf+}xpoDIRY3FPQbPdi&% z?|3dq+EGNIYihono0Z*zJz}cXBR&^{^wu)hUNwljJR~3|< zb_Hs35f6T2!b=Cuqz%y=fht)j;<+{}sgOKGp27}BdPP0tYEk*t(@pO7?CUQfvIrjJ zK33)NEeOM<`!bX#@K%)cy!7C?FjanBEH~Pf{kmTYBSbfsrS+&&ykDr_D|Z?z?0BJG zyiW&^cAXK7C97y+oFrXr5Mp|yllZsNR*mR235g`W^5ll+suVr!msQ?oiMWtnZq^HU zP_bOwZ+?L7eE*=_;yCW5sk$4;AeH4Om!?4n+EW^>+teeSw5L2ZV?VWkmvBO@yHOVD z5~a|v=kl6}yo*u2c z%4?8GFKH*MBWP3epwZ?G&o6g}2clnOHd#Tv45ksTa(On>j1T9LJVIxa3+CpbGf{Wz zb|P(dd$;ACToOGYmG~^0Hk%hJhfgf=VX`QUhoOtE9JmGodr*=$+!+qrR$ro@QQwb`wzJympECmDL)_F%#j}RzvZ5?eZcQl&%!OXKGih2X*ZBF9ZCOam z`<92==k|9hPhy03H>tR_JSZMs9-nTkn)i>!RgiV_s{HG|fAGu}nzg7np3dWEQQ`JZ zgnzj4>HCMW2*yK9TNfd2hm?RLLe7l=vT@*A>InB|4<|>bw^YiDxlAuXHJ;16uQKi~ zMvz~OY#2y}F^Z;fcZeUS{WCOa(zKm`iN)MbakN8Z47{K1Jv}w7v^Z1$@K6jTI66Wj zirRjSRK|2ldt^8|4$H(i`?SmQz72QXlb}q#)$kA>SfP9+Jz`&`q9KmhdfL@mN6aHz zXQ)Z*sXbnaiYv<|$MuBVQXwW`>?5EiE|g0M|=wv%mu*8j}y6FMJV?}VCEFKx)LyM-eBijLgql6Ep}xuyef z0g8;(-OvaHsEo(V!61B9gj8)=+Jd~x7e|laY!blPd_4j+BxtvsM_dKSY0l3ioMMVqU<_NoNc4ZEQEG_UsMeN?|mmwQD9S)_5=q37!onwfT; z{*^F|WZu3}N!OZ5O%g7@1TV>XYpsN4k4C#nHB$}^^&&=m7 zNaM25G{q>_6b`=9wy`xWZ($X+ZDIC~WfNs}x4JOWT;&rE60#W_%IEIc!~#c&X{Gmi4ox0E_Yf z?}Nr3YTlwgD4sPO8?94j=08?8KBwjVZ06DyCRbmrj?cUWtCz5awNDnKems4=O{TD* zEsSD;$mTwmrJud9;eAEo?x7Z5!GC1|e07=LuS@u(f4@56E2-q`z)6%Q?~o|y7?ToK z>aH-jSmmN|uzh z<*3z61m2@ZKz01~7T+GsXN#zC=hoiitRpDu=wsNubL;4t#jqRAJqm=-xW!a5C4E4d z-!la58uCdas0Bc_!sOd&*%9)Pe)nsQ&LbgyY`c+YFJzIR%0;V3`R=leLSw_*JCKFV ziKh1M4YS_HmJlsuBOBZ1mmT8^Yo0RV*{`dEXe6^|h4oEYb1Y?;-t|&#>|w0>3$FZ)Fx{-S3xhoQTUNGSJtX4x2#o4fn(vFxy~_J+Aeh@rvB1f+b zCEtu4WC_72b=j~96WDeSZ3hEBskH4KVr^qvf|WtYkz6OiSYvH(Zy_t;_T7(e$UKF> zBqI97LbXgaBv~U)RC$b)AR5A^5l%hmZ`;>A<&6pV5YDdX?SVWa&IACodRQiM)?<3F z0)Y+nEg^6QwLT_tjwtHiB*-BHAP9>a0{&v``jb-mAPcSQ?pjZLvc((G;qq|Z7w}YMw+r5K@_zQ zWeHbXUzZJX25qr5Pm+o(VOx}_o#fs~zSwjBZ0W-0oL@*^Tu%mGQz2SY5H=^ZoK3Dy zo25N&McVwTn&V8AZapkZt%g*O4f2i)<<3z=KodP=(#KRT$u+V~L5}7wqC{eM$?qk( z_G&#D-rh@cEnjE8B-fmBE9-3{NjitcRy0${ z5-~Iu%S!}gpZi$aq)gmS1?o%b+KmtW36QQIt|MJPeIe;OE5!A6QnM?_9b2xI5w%;A zyjB=iaKo}$HE^qJNYu~FHL`Ey!UN4>@QFlf|k5(Ga86MgTHbXX3q~g#EN-4nc%r7m-wb`3u zMQ3uNfnm@iy~c*%kz6D*N9yp&7<;qY!fJ=CT9U(QchozvtC|c#%c`agOJcBDYCS4v z*_p{Xwu(8~zsbt5yvG+~Jc*|w(>t=ck0D2uTDSC1vT0M0ynm(kaJ`V4vPO+$ z_KdcKYL_1RYWD|E@hRzHbn-4;OT!aXQAs0IU^r3$L3SbaXjjSc#lW8wW+91aJ~GdC}p%V@5*?+BdDDbgOOAT4wmu@ zE*Y(O4}IQ!5|0Adf-z7Mie=3#X@atv9*lZRRxU7+b^*!FHg+X}pLeInF&>ER_ov`< zc!;7$&rg8)gIAgR>krd&G__Ykp|iaYsq254`FF{M^qFGwriI86JrkQ1^^WWjjy6hR)4taH2BEnA8@6Nl5 zU$b~LEIJ{mioqm^|u zsIER5zPi~*gKF!e;j6u5wbG;EtGsN{Qr^20t-yO_-UPkMjQ0jHjaaI#Ve+Qz6{Rz% zYcc6Hqn~sY&3=}wU&;e_@W5NjIz2??RSJbL&!{hAkR_A|C@oa4RoZAnWta`+GkL@D z_(^w03jX2Z=m^HY86LEo_s3@=t~dC?4iRHSV96*2=S;r_Mo`4NgVp**6A$wt&(AD6 zf}JmZ)*CKngQrLxB#d>iAxcuG&=!EivgExqDX;8Nniz4lg{SR=vU7>qfKDcsvQ!fVQ>=tK(jGAZ%X3 z3TrBr26YUv`y$$C9TYcO3$X`Bi(w>B`#IWyrG29{rras600r~Op8 zkT>LcjJ$_kTNOHVVO?BdHfacEVg^0?Zn-WA^CJbp5)`bStvi}|w9jABH4~4*cu2Pl-Gd%VStu!w zz+yWax^|J7t1K@->D)(@opKkiu~X*+3r-CE6ayR4n(|<_otm|b zqU(mzzqGr8J{LT}93!!ET$u;nZqM?kth8x9JN!>cM_`PHG(vl14YnDZwUp`yMw6b!z?aDSp z5_c>kiBA*|H}}~I6O!Ai7b<8tR@t-{%futC9&B?{dx=$+*27Kx;ZI>eW3b95W3aiH zw4rE1$#zJoXM#6~j?7ef&hS2^1X?fWdL{{|E1LvuW=mDsrY4J@!EA+4?WUel>#ncQ zaJ*dE&b~Z(R=UY<7ptSQW8Dm*GYx%p6s58+ilTceQo!69@SGZw9JuUB#WPrCOO=P7 zvdZ~ym2JJ>^z*&TTa?x$(JTx@RpdjUh7Ni$`@kX03el6v zx=sg^S?8TwPdryKo$$U7idFkDK8iN9L=BP*n+HXDHHSZ|fRk_EpJzG8thPmQt_!Q; zq^P@vZKj9sX+ASwao)Bn?r+<^V{f&+v1A^$6@krTBco>@;ZynaWL&a6FRH-j1@%oX zglA@6=@j90^_I1D0eQE4uPj7OtF%v=rT0+XcD*qa`%Q6?%W9NVbn6QEHw6rX6{Z_& zDLg8@C@-H!axn-Jvh_-@c%N6LD0hdB@^*v`Rv71xUhu*N@L)wUBa$i7Jjr{7N)>fl zB4LI#aVk&dLbJTLASr_s?rIh+9pL39O!lC>YGiJGU+j~wxYjn!4%&}o`IfFA$x5x# zXjO{kuNGFJEB@5-q&{HT*>p&C1&rQRVZ_lxT2xW-><%yMW`3u#^kOe7=fO=X*J=Yl zSwY{1ijqazR;Q@Fm$E1;<~f&CY7b-N4`+EaJt`=1k2UEzK2(yPP9?(Nl(q7~P+1gh zHw*lg5zi^3qV&+J)2!#jP+4_q*a$qdUyQcsG>Ve8HCPP5EvcFNfQ0n zTXdj+)A+WbaeVg@$4#-rN3Uq{TKvd{aJ*4yR@(O&He6!)r-J3?rb3Fa1q<5K>NXun z`(aH{m|GxZVZ8mP&d%;V`s;PPo03Mv$}mlYt36f;kb@BqbgP!_f(P8Pjaiv}k@aHL zmZR6BI^wct3q)uSj#SujJnM+CTeyGWSnlJN&B7C63vd_rZ|K2Z6BjTT+Yp;InCvB_ z2w}a1$+XV1KF)i0ge7i6FJ(C>M%iR5)^Z&1<�lPI*1n=DiNwJdiG>G^tTfoE8zX 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 {!`Z1sdEoyoj1aoq`qrO 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%0A4=?s+Nj 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 A761SM literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/amdsmi_example.o b/src/components/amd_smi/tests/amdsmi_example.o new file mode 100644 index 0000000000000000000000000000000000000000..aa03cf6444169c70e3f4d34c3e7304fcbd6fe3fb GIT binary patch literal 51184 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 C?QV$x literal 0 HcmV?d00001 diff --git a/src/components/amd_smi/tests/gemm b/src/components/amd_smi/tests/gemm new file mode 100755 index 0000000000000000000000000000000000000000..44b48a05898584da18eeaabf3ae91f25e2628a6f GIT binary patch literal 1202424 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

@8z++02Ujh5!SYg;Sn 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

nAqclce4@K?ia{oQ`EADJJWD_Ls$bu)55Xr^K4 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

B%Z{yu&sMAU!K-vLBlFT0eTAH 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 DI^ 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�CE@<(i8Eh$}LaVKCjl6W1N}F?c>TWw>6IuDE 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 z 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 Date: Wed, 13 Aug 2025 13:53:35 -0700 Subject: [PATCH 034/147] add gitignore --- src/components/amd_smi/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/components/amd_smi/.gitignore diff --git a/src/components/amd_smi/.gitignore b/src/components/amd_smi/.gitignore new file mode 100644 index 000000000..800a4d90f --- /dev/null +++ b/src/components/amd_smi/.gitignore @@ -0,0 +1,2 @@ +tests/* +!tests/*.cpp From a277a524cba86db83593ab25cd5923dc49c81535 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 13 Aug 2025 13:59:52 -0700 Subject: [PATCH 035/147] remove git ignore files --- .../amd_smi/.nfs0000000086564f6b00046031 | 3967 ----------------- .../tests/.nfs0000000086114a7e00045c08 | 371 -- .../tests/.nfs000000008614393300045c09 | 575 --- src/components/amd_smi/tests/amdsmi_basics | Bin 1142624 -> 0 bytes src/components/amd_smi/tests/amdsmi_basics.o | Bin 55648 -> 0 bytes src/components/amd_smi/tests/amdsmi_example | Bin 1141456 -> 0 bytes src/components/amd_smi/tests/amdsmi_example.o | Bin 51184 -> 0 bytes src/components/amd_smi/tests/gemm | Bin 1202424 -> 0 bytes src/components/amd_smi/tests/gemm.o | Bin 128464 -> 0 bytes src/components/amd_smi/tests/test.csv | 13 - 10 files changed, 4926 deletions(-) delete mode 100644 src/components/amd_smi/.nfs0000000086564f6b00046031 delete mode 100644 src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 delete mode 100644 src/components/amd_smi/tests/.nfs000000008614393300045c09 delete mode 100755 src/components/amd_smi/tests/amdsmi_basics delete mode 100644 src/components/amd_smi/tests/amdsmi_basics.o delete mode 100755 src/components/amd_smi/tests/amdsmi_example delete mode 100644 src/components/amd_smi/tests/amdsmi_example.o delete mode 100755 src/components/amd_smi/tests/gemm delete mode 100644 src/components/amd_smi/tests/gemm.o delete mode 100644 src/components/amd_smi/tests/test.csv diff --git a/src/components/amd_smi/.nfs0000000086564f6b00046031 b/src/components/amd_smi/.nfs0000000086564f6b00046031 deleted file mode 100644 index c93348927..000000000 --- a/src/components/amd_smi/.nfs0000000086564f6b00046031 +++ /dev/null @@ -1,3967 +0,0 @@ -Available native events and hardware information. --------------------------------------------------------------------------------- -PAPI version : 7.2.0.0 -Operating system : Linux 4.18.0-553.16.1.el8_10.x86_64 -Vendor string and code : AuthenticAMD (2, 0x2) -Model string and code : AMD EPYC 7413 24-Core Processor (1, 0x1) -CPU revision : 1.000000 -CPUID : Family/Model/Stepping 25/1/1, 0x19/0x01/0x01 -CPU Max MHz : 3630 -CPU Min MHz : 1500 -Total cores : 96 -SMT threads per core : 2 -Cores per socket : 24 -Sockets : 2 -Cores per NUMA region : 48 -NUMA regions : 2 -Running in a VM : no -Number Hardware Counters : NA -Max Multiplex Counters : 512 -Fast counter read (rdpmc): no --------------------------------------------------------------------------------- - -=============================================================================== - Native Events in Component: rocm -=============================================================================== -| rocm:::SQ_WAIT_INST_LDS | -| Number of wave-cycles spent waiting for LDS instruction issue. In | -| units of 4 cycles. (per-simd, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES | -| TCP stalls TA data interface. Now Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::GRBM_COUNT | -| Tie High - Count Number of Clocks | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_GUI_ACTIVE | -| The GUI is Active | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CP_BUSY | -| Any of the Command Processor (CPG/CPC/CPF) blocks are busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_SPI_BUSY | -| Any of the Shader Pipe Interpolators (SPI) are busy in the shader | -| engine(s). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_TA_BUSY | -| Any of the Texture Pipes (TA) are busy in the shader engine(s). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_TC_BUSY | -| Any of the Texture Cache Blocks (TCP/TCI/TCA/TCC) are busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CPC_BUSY | -| The Command Processor Compute (CPC) is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_CPF_BUSY | -| The Command Processor Fetchers (CPF) is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_UTCL2_BUSY | -| The Unified Translation Cache Level-2 (UTCL2) block is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GRBM_EA_BUSY | -| The Efficiency Arbiter (EA) block is busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_ME1_BUSY_FOR_PACKET_DECODE | -| Me1 busy for packet decode. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_UTCL1_STALL_ON_TRANSLATION | -| One of the UTCL1s is stalled waiting on translation, XNACK or PEND| -| ING response. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_BUSY | -| CPC Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_IDLE | -| CPC Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_STAT_STALL | -| CPC Stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_TCIU_BUSY | -| CPC TCIU interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_TCIU_IDLE | -| CPC TCIU interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_BUSY | -| CPC UTCL2 interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_IDLE | -| CPC UTCL2 interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_CPC_UTCL2IU_STALL | -| CPC UTCL2 interface Stalled waiting on Free, Tags or Translation. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPC_ME1_DC0_SPI_BUSY | -| CPC Me1 Processor Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CMP_UTCL1_STALL_ON_TRANSLATION | -| One of the Compute UTCL1s is stalled waiting on translation, XNACK| -| or PENDING response. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_BUSY | -| CPF Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_IDLE | -| CPF Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_STAT_STALL | -| CPF Stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_BUSY | -| CPF TCIU interface Busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_IDLE | -| CPF TCIU interface Idle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::CPF_CPF_TCIU_STALL | -| CPF TCIU interface Stalled waiting on Free, Tags. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_WINDOW_VALID | -| Clock count enabled by perfcounter_start event. Requires SPI_DEBUG| -| _CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, source | -| is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, sou| -| rce is CS3; default, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_BUSY | -| Number of clocks with outstanding waves (SPI or SH). Requires SPI_| -| DEBUG_CNTL.DEBUG_PIPE_SEL to select source, DEBUG_PIPE_SEL = 1, so| -| urce is CS1; DEBUG_PIPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3| -| , source is CS3; default, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_NUM_THREADGROUPS | -| Number of threadgroups launched. Requires SPI_DEBUG_CNTL.DEBUG_PIP| -| E_SEL to select source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_P| -| IPE_SEL = 2, source is CS2; DEBUG_PIPE_SEL = 3, source is CS3; def| -| ault, source is CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_CSN_WAVE | -| Number of waves. Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select | -| source, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, sou| -| rce is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is | -| CS0; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_REQ_NO_ALLOC | -| Arb cycles with requests but no allocation. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_REQ_NO_ALLOC_CSN | -| Arb cycles with CSn req and no CSn alloc. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_RES_STALL_CSN | -| Arb cycles with CSn req and no CSn fits. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_TMP_STALL_CSN | -| Cycles where csn wants to req but does not fit in temp space. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_WAVE_SIMD_FULL_CSN | -| Sum of SIMD where WAVE can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_VGPR_SIMD_FULL_CSN | -| Sum of SIMD where VGPR can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_SGPR_SIMD_FULL_CSN | -| Sum of SIMD where SGPR can't take csn wave when !fits. Source is R| -| A0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_LDS_CU_FULL_CSN | -| Sum of CU where LDS can't take csn wave when !fits. Source is RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_BAR_CU_FULL_CSN | -| Sum of CU where BARRIER can't take csn wave when !fits. Source is | -| RA0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_BULKY_CU_FULL_CSN | -| Sum of CU where BULKY can't take csn wave when !fits. Source is RA| -| 0 | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_TGLIM_CU_FULL_CSN | -| Cycles where csn wants to req but all CU are at tg_limit | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_RA_WVLIM_STALL_CSN | -| Number of clocks csn is stalled due to WAVE LIMIT. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_SWC_CSC_WR | -| Number of clocks to write CSC waves to SGPRs (need to multiply thi| -| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| -| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| -| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| -| ; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SPI_VWC_CSC_WR | -| Number of clocks to write CSC waves to VGPRs (need to multiply thi| -| s value by 4) Requires SPI_DEBUG_CNTL.DEBUG_PIPE_SEL to select sou| -| rce, DEBUG_PIPE_SEL = 1, source is CS1; DEBUG_PIPE_SEL = 2, source| -| is CS2; DEBUG_PIPE_SEL = 3, source is CS3; default, source is CS0| -| ; | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACCUM_PREV | -| For counter N, increment by the value of counter N-1. Only accumul| -| ates once every 4 cycles. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_CYCLES | -| Clock cycles. (nondeterministic, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_BUSY_CYCLES | -| Clock cycles while SQ is reporting that it is busy. (nondeterminis| -| tic, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES | -| Count number of waves sent to SQs. (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LEVEL_WAVES | -| Track the number of waves. Set ACCUM_PREV for the next counter to | -| use this. (level, per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_EQ_64 | -| Count number of waves with exactly 64 active threads sent to SQs. | -| (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_64 | -| Count number of waves with <64 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_48 | -| Count number of waves with <48 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_32 | -| Count number of waves sent <32 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_LT_16 | -| Count number of waves sent <16 active threads sent to SQs. (per-si| -| md, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_BUSY_CU_CYCLES | -| Count quad-cycles each CU is busy. (nondeterministic, per-simd) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ITEMS | -| Number of valid items per wave. (per-simd, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS | -| Number of instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU | -| Number of VALU instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F16 | -| Number of VALU ADD/SUB instructions on float16. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F16 | -| Number of VALU MUL instructions on float16. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F16 | -| Number of VALU FMA/MAD instructions on float16. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F16 | -| Number of VALU transcendental instructions on float16. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F32 | -| Number of VALU ADD/SUB instructions on float32. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F32 | -| Number of VALU MUL instructions on float32. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F32 | -| Number of VALU FMA/MAD instructions on float32. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F32 | -| Number of VALU transcendental instructions on float32. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_ADD_F64 | -| Number of VALU ADD/SUB instructions on float64. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MUL_F64 | -| Number of VALU MUL instructions on float64. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_FMA_F64 | -| Number of VALU FMA/MAD instructions on float64. (per-simd, emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_TRANS_F64 | -| Number of VALU transcendental instructions on float64. (per-simd, | -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_INT32 | -| Number of VALU 32-bit integer (signed or unsigned) instructions. (| -| per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_INT64 | -| Number of VALU 64-bit integer (signed or unsigned) instructions. (| -| per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_CVT | -| Number of VALU data conversion instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_I8 | -| Number of VALU V_MFMA_*_I8 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F16 | -| Number of VALU V_MFMA_*_F16 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_BF16 | -| Number of VALU V_MFMA_*_BF16 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F32 | -| Number of VALU V_MFMA_*_F32 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_F64 | -| Number of VALU V_MFMA_*_F64 instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_I8 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type I8. (per-simd,| -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F16 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F16. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_BF16 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type BF16. (per-sim| -| d, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F32 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F32. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VALU_MFMA_MOPS_F64 | -| Number of VALU matrix math operations (add or mul) performed divid| -| ied by 512, assuming a full EXEC mask, of data type F64. (per-simd| -| , emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_MFMA | -| Number of MFMA instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM_WR | -| Number of VMEM write instructions issued (including FLAT). (per-si| -| md, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM_RD | -| Number of VMEM read instructions issued (including FLAT). (per-sim| -| d, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VMEM | -| Number of VMEM instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SALU | -| Number of SALU instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SMEM | -| Number of SMEM instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_FLAT | -| Number of FLAT instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_FLAT_LDS_ONLY | -| Number of FLAT instructions issued that read/wrote only from/to LD| -| S (only works if EARLY_TA_DONE is enabled). (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_LDS | -| Number of LDS instructions issued (including FLAT). (per-simd, emu| -| lated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_GDS | -| Number of GDS instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_EXP_GDS | -| Number of EXP and GDS instructions issued, excluding skipped expor| -| t instructions. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_BRANCH | -| Number of Branch instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SENDMSG | -| Number of Sendmsg instructions issued. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_VSKIPPED | -| Number of vector instructions skipped. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_VMEM | -| Number of in-flight VMEM instructions. Set next counter to ACCUM_P| -| REV and divide by INSTS_VMEM for average latency. Includes FLAT in| -| structions. (per-simd, level, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_SMEM | -| Number of in-flight SMEM instructions (*2 load/store; *2 atomic; *| -| 2 memtime; *4 wb/inv). Set next counter to ACCUM_PREV and divide b| -| y INSTS_SMEM for average latency per smem request. Falls slightly | -| short of total request latency because some fetches are divided in| -| to two requests that may finish at different times and this counte| -| r collects the average latency of the two. (per-simd, level, nonde| -| terministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_LEVEL_LDS | -| Number of in-flight LDS instructions. Set next counter to ACCUM_PR| -| EV and divide by INSTS_LDS for average latency. Includes FLAT inst| -| ructions. (per-simd, level, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_VALU_MFMA_BUSY_CYCLES | -| Number of cycles the MFMA ALU is busy (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVE_CYCLES | -| Number of wave-cycles spent by waves in the CUs (per-simd, nondete| -| rministic). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAIT_ANY | -| Number of wave-cycles spent waiting for anything (per-simd, nondet| -| erministic). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAIT_INST_ANY | -| Number of wave-cycles spent waiting for any instruction issue. In | -| units of 4 cycles. (per-simd, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_ANY | -| Number of cycles each wave is working on an instruction. (per-simd| -| , emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_VMEM | -| Number of cycles the SQ instruction arbiter is working on a VMEM i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_LDS | -| Number of cycles the SQ instruction arbiter is working on a LDS in| -| struction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_VALU | -| Number of cycles the SQ instruction arbiter is working on a VALU i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_SCA | -| Number of cycles the SQ instruction arbiter is working on a SALU o| -| r SMEM instruction. (per-simd, emulated). Units in quad-cycles(4 c| -| ycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_EXP_GDS | -| Number of cycles the SQ instruction arbiter is working on an EXPOR| -| T or GDS instruction. (per-simd, emulated). Units in quad-cycles(4| -| cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_MISC | -| Number of cycles the SQ instruction aribter is working on a BRANCH| -| or SENDMSG instruction. (per-simd, emulated). Units in quad-cycle| -| s(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACTIVE_INST_FLAT | -| Number of cycles the SQ instruction arbiter is working on a FLAT i| -| nstruction. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_VMEM_WR | -| Number of cycles needed to send addr and cmd data for VMEM write i| -| nstructions. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_VMEM_RD | -| Number of cycles needed to send addr and cmd data for VMEM read in| -| structions. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_SMEM | -| Number of cycles needed to execute scalar memory reads. (per-simd,| -| emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INST_CYCLES_SALU | -| Number of cycles needed to execute non-memory read scalar operatio| -| ns. (per-simd, emulated). Units in quad-cycles(4 cycles) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_THREAD_CYCLES_VALU | -| Number of thread-cycles used to execute VALU operations (similar t| -| o INST_CYCLES_VALU but multiplied by # of active threads). (per-si| -| md) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_IFETCH | -| Number of instruction fetch requests from cache. (per-simd, emulat| -| ed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_IFETCH_LEVEL | -| Number of instruction fetch requests from cache. (per-simd, level)| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_BANK_CONFLICT | -| Number of cycles LDS is stalled by bank conflicts. (emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_ADDR_CONFLICT | -| Number of cycles LDS is stalled by address conflicts. (emulated,no| -| ndeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_UNALIGNED_STALL | -| Number of cycles LDS is stalled processing flat unaligned load/sto| -| re ops. (emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_MEM_VIOLATIONS | -| Number of threads that have a memory violation in the LDS.(emulate| -| d) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_ATOMIC_RETURN | -| Number of atomic return cycles in LDS. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_LDS_IDX_ACTIVE | -| Number of cycles LDS is used for indexed (non-direct,non-interpola| -| tion) operations. (per-simd, emulated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_ACCUM_PREV_HIRES | -| For counter N, increment by the value of counter N-1. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_RESTORED | -| Count number of context-restored waves sent to SQs. (per-simd, emu| -| lated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_WAVES_SAVED | -| Count number of context-saved waves. (per-simd, emulated, global) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQ_INSTS_SMEM_NORM | -| Number of SMEM instructions issued normalized to match smem_level | -| (*2 load/store; *2 atomic; *2 memtime; *4 wb/inv). (per-simd, emul| -| ated) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_INPUT_VALID_READYB | -| Input stalled by SQC (per-SQ, nondeterministic, unwindowed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_REQ | -| Total number of TC requests that were issued by instruction and co| -| nstant caches. (No-Masking, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_INST_REQ | -| Number of insruction requests to the TC (No-Masking, nondeterminis| -| tic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_READ_REQ | -| Number of data read requests to the TC (No-Masking, nondeterminist| -| ic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_WRITE_REQ | -| Number of data write requests to the TC (No-Masking, nondeterminis| -| tic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_DATA_ATOMIC_REQ | -| Number of data atomic requests to the TC (No-Masking, nondetermini| -| stic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_TC_STALL | -| Valid request stalled TC request interface (no-credits). (No-Maski| -| ng, nondeterministic, unwindowed) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_REQ | -| Number of requests. (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_HITS | -| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_MISSES | -| Number of cache misses, includes uncached requests. (per-SQ, per-B| -| ank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_ICACHE_MISSES_DUPLICATE | -| Number of misses that were duplicates (access to a non-resident, m| -| iss pending CL). (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ | -| Number of requests (post-bank-serialization). (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_HITS | -| Number of cache hits. (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_MISSES | -| Number of cache misses, includes uncached requests. (per-SQ, per-B| -| ank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_MISSES_DUPLICATE | -| Number of misses that were duplicates (access to a non-resident, m| -| iss pending CL). (per-SQ, per-Bank, nondeterministic) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_ATOMIC | -| Number of atomic requests. (per-SQ, per-Bank) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_1 | -| Number of constant cache 1 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_2 | -| Number of constant cache 2 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_4 | -| Number of constant cache 4 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_8 | -| Number of constant cache 8 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SQC_DCACHE_REQ_READ_16 | -| Number of constant cache 16 dw read requests. (per-SQ) | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TA_BUSY | -| TA block is busy. Perf_Windowing not supported for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_TOTAL_WAVEFRONTS | -| Total number of wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WAVEFRONTS | -| Number of buffer wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_READ_WAVEFRONTS | -| Number of buffer read wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WRITE_WAVEFRONTS | -| Number of buffer write wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS | -| Number of buffer atomic wavefronts processed by TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_TOTAL_CYCLES | -| Number of buffer cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_READ_CYCLES | -| Number of buffer coalesced read cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES | -| Number of buffer coalesced write cycles issued to TC. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES | -| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES | -| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_DATA_STALLED_BY_TC_CYCLES | -| Number of cycles data path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WAVEFRONTS | -| Number of flat opcode wavfronts processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_READ_WAVEFRONTS | -| Number of flat opcode reads processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WRITE_WAVEFRONTS | -| Number of flat opcode writes processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS | -| Number of flat opcode atomics processed by the TA. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_TD_BUSY | -| TD is processing or waiting for data. Perf_Windowing not supported| -| for this counter. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_TC_STALL | -| TD is stalled waiting for TC data. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_SPI_STALL | -| TD is stalled SPI vinit | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_LOAD_WAVEFRONT | -| Count the wavefronts with opcode = load, include atomics and store| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_ATOMIC_WAVEFRONT | -| Count the wavefronts with opcode = atomic. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_STORE_WAVEFRONT | -| Count the wavefronts with opcode = store. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TD_COALESCABLE_WAVEFRONT | -| Count wavefronts that TA finds coalescable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN1 | -| TCP interface clocks are turned on. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN2 | -| TCP core clocks are turned on. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TD_TCP_STALL_CYCLES | -| TD stalls TCP | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES | -| TCR stalls TCP_TCR_req interface | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on a read | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on a write | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES | -| Tagram conflict stall on an atomic | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_PENDING_STALL_CYCLES | -| Stall due to data pending from L2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TA_TCP_STATE_READ | -| Number of state reads | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_VOLATILE | -| Total number of L1 volatile pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ACCESSES | -| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| -| READ+TCP_PERF_SEL_TOTAL_NONREAD | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_READ | -| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| -| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| -| L_TOTAL_MISS_EVICT_READ | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITE | -| Total number of local write pixels/buffers from TA. Equals TCP_PER| -| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITH_RET | -| Total number of atomic with return pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET | -| Total number of atomic without return pixels/buffers from TA | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES | -| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| -| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| -| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_REQUEST | -| Total CLIENT_UTCL1 NORMAL requests | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_MISS | -| Total utcl1 translation misses | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_HIT | -| Total utcl1 translation hits | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_PERMISSION_MISS | -| Total utcl1 permission misses | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_CACHE_ACCESSES | -| Count of total cache line (tag) accesses (includes hits and misses| -| ). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_LATENCY | -| Total TCP wave latency (from first clock of wave entering to first| -| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| -| atency | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_LATENCY | -| Total TCP->TCC request latency for reads and atomics with return. | -| Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_LATENCY | -| Total TCP->TCC request latency for writes and atomics without retu| -| rn. Not Windowed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ | -| Total read requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ | -| Total write requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ | -| Total atomic with return requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ | -| Total atomic without return requests from TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_READ_REQ | -| Total read requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_WRITE_REQ | -| Total write requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_ATOMIC_REQ | -| Total atomic requests with NC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_READ_REQ | -| Total read requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_WRITE_REQ | -| Total write requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_ATOMIC_REQ | -| Total atomic requests with UC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_READ_REQ | -| Total write requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_WRITE_REQ | -| Total write requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_ATOMIC_REQ | -| Total atomic requests with CC mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_READ_REQ | -| Total write requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_WRITE_REQ | -| Total write requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_ATOMIC_REQ | -| Total atomic requests with RW mtype from this TCP to all TCCs | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-15] | --------------------------------------------------------------------------------- -| rocm:::TCA_CYCLE | -| Number of cycles. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCA_BUSY | -| Number of cycles we have a request pending. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_CYCLE | -| Number of cycles. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY | -| Number of cycles we have a request pending. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_REQ | -| Number of requests of all types. This is measured at the tag block| -| . This may be more than the number of requests arriving at the TCC| -| , but it is a good indication of the total amount of work that nee| -| ds to be performed. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_STREAMING_REQ | -| Number of streaming requests. This is measured at the tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NC_REQ | -| The number of noncoherently cached requests. This is measured at t| -| he tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_UC_REQ | -| The number of uncached requests. This is measured at the tag block| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_CC_REQ | -| The number of coherently cached requests. This is measured at the | -| tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_RW_REQ | -| The number of RW requests. This is measured at the tag block. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE | -| Number of probe requests. Not windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_ALL | -| Number of external probe requests with with EA_TCC_preq_all== 1. N| -| ot windowable. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_READ | -| Number of read requests. Compressed reads are included in this, bu| -| t metadata reads are not included. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITE | -| Number of write requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ATOMIC | -| Number of atomic requests of all types. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_HIT | -| Number of cache hits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_MISS | -| Number of cache misses. UC reads count as misses. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITEBACK | -| Number of lines written back to main memory. This includes writeba| -| cks of dirty lines and uncached write/atomic requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ | -| Number of transactions (either 32-byte or 64-byte) going over the | -| TC_EA_wrreq interface. Atomics may travel over the same interface | -| and are generally classified as write requests. This does not incl| -| ude probe commands. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_64B | -| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| -| er the TC_EA_wrreq interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WR_UNCACHED_32B | -| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| -| e due to uncached traffic. Note that CC mtypes can produce uncache| -| d requests, and those are included in this. A 64-byte request will| -| be counted as 2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_STALL | -| Number of cycles a write request was stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of IO credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of GMI credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of DRAM credits. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL | -| Number of cycles the TCC could not send a EA write request because| -| it already reached its maximum number of pending EA write request| -| s. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_LEVEL | -| The sum of the number of EA write requests in flight. This is prim| -| arily meant for measure average EA write latency. Average write la| -| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC | -| Number of transactions going over the TC_EA_wrreq interface that a| -| re actually atomic requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_LEVEL | -| The sum of the number of EA atomics in flight. This is primarily m| -| eant for measure average EA atomic latency. Average atomic latency| -| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ | -| Number of TCC/EA read requests (either 32-byte or 64-byte) | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_32B | -| Number of 32-byte TCC/EA read requests | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RD_UNCACHED_32B | -| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| -| equest will be counted as 2 | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of IO credits. Stalls occur regardless of whether a re| -| ad needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of GMI credits. Stalls occur regardless of whether a r| -| ead needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL | -| Number of cycles there was a stall because the read request interf| -| ace was out of DRAM credits. Stalls occur regardless of whether a | -| read needed to be performed or not. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_LEVEL | -| The sum of the number of TCC/EA read requests in flight. This is p| -| rimarily meant for measure average EA read latency. Average read l| -| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL | -| Number of cycles the normal request pipeline in the tag was stalle| -| d for any reason. Normally, stalls of this nature are measured exa| -| ctly from one point the pipeline, but that is not the case for thi| -| s counter. Probes can stall the pipeline at a variety of places, a| -| nd there is no single point that can reasonably measure the total | -| stalls accurately. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_WRITEBACK | -| Number of writebacks due to requests that are not writeback reques| -| ts. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK | -| Number of writebacks due to all TC_OP writeback requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_EVICT | -| Number of evictions due to requests that are not invalidate or pro| -| be requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_INV_EVICT | -| Number of evictions due to all TC_OP invalidate requests. | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM | -| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| -| d for DRAM (MC). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM | -| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| -| ed for DRAM (MC). | -| :device=0 | -| Mandatory device qualifier [0,1] | -| :instance=0 | -| Mandatory instance qualifier in range [0-31] | --------------------------------------------------------------------------------- -| rocm:::MeanOccupancyPerCU | -| Mean occupancy per compute unit. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SIMD_UTILIZATION | -| Percent of time at least one warp was active on a multiprocessor, | -| averaged over all multiprocessors. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MeanOccupancyPerActiveCU | -| Mean occupancy per active compute unit. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TA_BUSY_sum | -| TA block is busy. Perf_Windowing not supported for this counter. S| -| um over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_TOTAL_WAVEFRONTS_sum | -| Total number of wavefronts processed by TA. Sum over TA instances.| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TC_CYCLES_sum | -| Number of cycles addr path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_ADDR_STALLED_BY_TD_CYCLES_sum | -| Number of cycles addr path stalled by TD. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_DATA_STALLED_BY_TC_CYCLES_sum | -| Number of cycles data path stalled by TC. Perf_Windowing not suppo| -| rted for this counter. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WAVEFRONTS_sum | -| Number of flat opcode wavfronts processed by the TA. Sum over TA i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_READ_WAVEFRONTS_sum | -| Number of flat opcode reads processed by the TA. Sum over TA insta| -| nces. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_ATOMIC_WAVEFRONTS_sum | -| Number of flat opcode atomics processed by the TA. Sum over TA ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WAVEFRONTS_sum | -| Number of buffer wavefronts processed by TA. Sum over TA instances| -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_READ_WAVEFRONTS_sum | -| Number of buffer read wavefronts processed by TA. Sum over TA inst| -| ances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_WRITE_WAVEFRONTS_sum | -| Number of buffer write wavefronts processed by TA. Sum over TA ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_ATOMIC_WAVEFRONTS_sum | -| Number of buffer atomic wavefronts processed by TA. Sum over TA in| -| stances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_TOTAL_CYCLES_sum | -| Number of buffer cycles issued to TC. Sum over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_READ_CYCLES_sum | -| Number of buffer coalesced read cycles issued to TC. Sum over TA i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUFFER_COALESCED_WRITE_CYCLES_sum | -| Number of buffer coalesced write cycles issued to TC. Sum over TA | -| instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_TD_BUSY_sum | -| TD is processing or waiting for data. Perf_Windowing not supported| -| for this counter. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_TC_STALL_sum | -| TD is stalled waiting for TC data. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_LOAD_WAVEFRONT_sum | -| Count the wavefronts with opcode = load, include atomics and store| -| . Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_ATOMIC_WAVEFRONT_sum | -| Count the wavefronts with opcode = atomic. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_STORE_WAVEFRONT_sum | -| Count the wavefronts with opcode = store. Sum over TD instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_COALESCABLE_WAVEFRONT_sum | -| Count wavefronts that TA finds coalescable. Sum over TD instances.| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TD_SPI_STALL_sum | -| TD is stalled SPI vinit, sum of TCP instances | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN1_sum | -| TCP interface clocks are turned on. Not Windowed. Sum over TCP ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_GATE_EN2_sum | -| TCP core clocks are turned on. Not Windowed. Sum over TCP instance| -| s. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TD_TCP_STALL_CYCLES_sum | -| TD stalls TCP. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES_sum | -| TCR stalls TCP_TCR_req interface. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_READ_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on a read. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_WRITE_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on a write. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_ATOMIC_TAGCONFLICT_STALL_CYCLES_sum | -| Tagram conflict stall on an atomic. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_VOLATILE_sum | -| Total number of L1 volatile pixels/buffers from TA. Sum over TCP i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ACCESSES_sum | -| Total number of pixels/buffers from TA. Equals TCP_PERF_SEL_TOTAL_| -| READ+TCP_PERF_SEL_TOTAL_NONREAD. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_READ_sum | -| Total number of read pixels/buffers from TA. Equals TCP_PERF_SEL_T| -| OTAL_HIT_LRU_READ + TCP_PERF_SEL_TOTAL_MISS_LRU_READ + TCP_PERF_SE| -| L_TOTAL_MISS_EVICT_READ. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITE_sum | -| Total number of local write pixels/buffers from TA. Equals TCP_PER| -| F_SEL_TOTAL_MISS_LRU_WRITE+ TCP_PERF_SEL_TOTAL_MISS_EVICT_WRITE. S| -| um over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITH_RET_sum | -| Total number of atomic with return pixels/buffers from TA. Sum ove| -| r TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_ATOMIC_WITHOUT_RET_sum | -| Total number of atomic without return pixels/buffers from TA Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_WRITEBACK_INVALIDATES_sum | -| Total number of cache invalidates. Equals TCP_PERF_SEL_TOTAL_WBINV| -| L1+ TCP_PERF_SEL_TOTAL_WBINVL1_VOL+ TCP_PERF_SEL_CP_TCP_INVALIDATE| -| + TCP_PERF_SEL_SQ_TCP_INVALIDATE_VOL. Not Windowed. Sum over TCP i| -| nstances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_REQUEST_sum | -| Total CLIENT_UTCL1 NORMAL requests Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_MISS_sum | -| Total utcl1 translation misses Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_TRANSLATION_HIT_sum | -| Total utcl1 translation hits Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_UTCL1_PERMISSION_MISS_sum | -| Total utcl1 permission misses Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TOTAL_CACHE_ACCESSES_sum | -| Count of total cache line (tag) accesses (includes hits and misses| -| ). Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_LATENCY_sum | -| Total TCP wave latency (from first clock of wave entering to first| -| clock of wave leaving), divide by TA_TCP_STATE_READ to avg wave l| -| atency Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TA_TCP_STATE_READ_sum | -| Number of state reads Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_LATENCY_sum | -| Total TCP->TCC request latency for reads and atomics with return. | -| Not Windowed. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_LATENCY_sum | -| Total TCP->TCC request latency for writes and atomics without retu| -| rn. Not Windowed. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_READ_REQ_sum | -| Total read requests from TCP to all TCCs Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_WRITE_REQ_sum | -| Total write requests from TCP to all TCCs Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITH_RET_REQ_sum | -| Total atomic with return requests from TCP to all TCCs Sum over TC| -| P instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_ATOMIC_WITHOUT_RET_REQ_sum | -| Total atomic without return requests from TCP to all TCCs Sum over| -| TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_READ_REQ_sum | -| Total read requests with NC mtype from this TCP to all TCCs Sum ov| -| er TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_WRITE_REQ_sum | -| Total write requests with NC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_NC_ATOMIC_REQ_sum | -| Total atomic requests with NC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_READ_REQ_sum | -| Total read requests with UC mtype from this TCP to all TCCs Sum ov| -| er TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_WRITE_REQ_sum | -| Total write requests with UC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_UC_ATOMIC_REQ_sum | -| Total atomic requests with UC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_READ_REQ_sum | -| Total write requests with CC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_WRITE_REQ_sum | -| Total write requests with CC mtype from this TCP to all TCCs Sum o| -| ver TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_CC_ATOMIC_REQ_sum | -| Total atomic requests with CC mtype from this TCP to all TCCs Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_READ_REQ_sum | -| Total write requests with RW mtype from this TCP to all TCCs. Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_WRITE_REQ_sum | -| Total write requests with RW mtype from this TCP to all TCCs. Sum | -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCC_RW_ATOMIC_REQ_sum | -| Total atomic requests with RW mtype from this TCP to all TCCs. Sum| -| over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_PENDING_STALL_CYCLES_sum | -| Stall due to data pending from L2. Sum over TCP instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCR_TCP_STALL_CYCLES_PERCENT | -| Percentage of time TCP is stalled by TCR. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCA_CYCLE_sum | -| Number of cycles. Sum over all TCA instances | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCA_BUSY_sum | -| Number of cycles we have a request pending. Sum over all TCA insta| -| nces. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY_avr | -| TCC_BUSY avr over all memory channels. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRREQ_STALL_max | -| Number of cycles a write request was stalled. Max over TCC instanc| -| es. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_CYCLE_sum | -| Number of cycles. Not windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_BUSY_sum | -| Number of cycles we have a request pending. Not windowable. Sum ov| -| er TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_REQ_sum | -| Number of requests of all types. This is measured at the tag block| -| . This may be more than the number of requests arriving at the TCC| -| , but it is a good indication of the total amount of work that nee| -| ds to be performed. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_STREAMING_REQ_sum | -| Number of streaming requests. This is measured at the tag block. S| -| um over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NC_REQ_sum | -| The number of noncoherently cached requests. This is measured at t| -| he tag block. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_UC_REQ_sum | -| The number of uncached requests. This is measured at the tag block| -| . Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_CC_REQ_sum | -| The number of coherently cached requests. This is measured at the | -| tag block. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_RW_REQ_sum | -| The number of RW requests. This is measured at the tag block. Sum | -| over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_sum | -| Number of probe requests. Not windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_PROBE_ALL_sum | -| Number of external probe requests with with EA_TCC_preq_all== 1. N| -| ot windowable. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_READ_sum | -| Number of read requests. Compressed reads are included in this, bu| -| t metadata reads are not included. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITE_sum | -| Number of write requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ATOMIC_sum | -| Number of atomic requests of all types. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_HIT_sum | -| Number of cache hits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_MISS_sum | -| Number of cache misses. UC reads count as misses. Sum over TCC ins| -| tances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_WRITEBACK_sum | -| Number of lines written back to main memory. This includes writeba| -| cks of dirty lines and uncached write/atomic requests. Sum over TC| -| C instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_sum | -| Number of transactions (either 32-byte or 64-byte) going over the | -| TC_EA_wrreq interface. Atomics may travel over the same interface | -| and are generally classified as write requests. This does not incl| -| ude probe commands. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_64B_sum | -| Number of 64-byte transactions going (64-byte write or CMPSWAP) ov| -| er the TC_EA_wrreq interface. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WR_UNCACHED_32B_sum | -| Number of 32-byte write/atomic going over the TC_EA_wrreq interfac| -| e due to uncached traffic. Note that CC mtypes can produce uncache| -| d requests, and those are included in this. A 64-byte request will| -| be counted as 2. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_STALL_sum | -| Number of cycles a write request was stalled. Sum over TCC instanc| -| es. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_IO_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of IO credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_GMI_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of GMI credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_CREDIT_STALL_sum | -| Number of cycles a EA write request was stalled because the interf| -| ace was out of DRAM credits. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TOO_MANY_EA_WRREQS_STALL_sum | -| Number of cycles the TCC could not send a EA write request because| -| it already reached its maximum number of pending EA write request| -| s. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_LEVEL_sum | -| The sum of the number of EA write requests in flight. This is prim| -| arily meant for measure average EA write latency. Average write la| -| tency = TCC_PERF_SEL_EA_WRREQ_LEVEL/TCC_PERF_SEL_EA_WRREQ. Sum ove| -| r TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_LEVEL_sum | -| The sum of the number of TCC/EA read requests in flight. This is p| -| rimarily meant for measure average EA read latency. Average read l| -| atency = TCC_PERF_SEL_EA_RDREQ_LEVEL/TCC_PERF_SEL_EA_RDREQ. Sum ov| -| er TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_sum | -| Number of transactions going over the TC_EA_wrreq interface that a| -| re actually atomic requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_ATOMIC_LEVEL_sum | -| The sum of the number of EA atomics in flight. This is primarily m| -| eant for measure average EA atomic latency. Average atomic latency| -| = TCC_PERF_SEL_EA_WRREQ_ATOMIC_LEVEL/TCC_PERF_SEL_EA_WRREQ_ATOMIC| -| . Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_sum | -| Number of TCC/EA read requests (either 32-byte or 64-byte) Sum ove| -| r TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_32B_sum | -| Number of 32-byte TCC/EA read requests Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RD_UNCACHED_32B_sum | -| Number of 32-byte TCC/EA read due to uncached traffic. A 64-byte r| -| equest will be counted as 2 Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_IO_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of IO credits. Stalls occur regardless of whether a re| -| ad needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_GMI_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of GMI credits. Stalls occur regardless of whether a r| -| ead needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_CREDIT_STALL_sum | -| Number of cycles there was a stall because the read request interf| -| ace was out of DRAM credits. Stalls occur regardless of whether a | -| read needed to be performed or not. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL_sum | -| . | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_TAG_STALL_PERCENT | -| Percentage of time the TCC tag lookup pipeline is stalled. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_WRITEBACK_sum | -| Number of writebacks due to requests that are not writeback reques| -| ts. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_WB_WRITEBACK_sum | -| Number of writebacks due to all TC_OP writeback requests. Sum over| -| TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_NORMAL_EVICT_sum | -| Number of evictions due to requests that are not invalidate or pro| -| be requests. Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_ALL_TC_OP_INV_EVICT_sum | -| Number of evictions due to all TC_OP invalidate requests. Sum over| -| TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_RDREQ_DRAM_sum | -| Number of TCC/EA read requests (either 32-byte or 64-byte) destine| -| d for DRAM (MC). Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCC_EA_WRREQ_DRAM_sum | -| Number of TCC/EA write requests (either 32-byte of 64-byte) destin| -| ed for DRAM (MC). Sum over TCC instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FETCH_SIZE | -| The total kilobytes fetched from the video memory. This is measure| -| d with all extra fetches and any cache or memory effects taken int| -| o account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WRITE_SIZE | -| The total kilobytes written to the video memory. This is measured | -| with all extra fetches and any cache or memory effects taken into | -| account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_16_OPS | -| The number of 16 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_32_OPS | -| The number of 32 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TOTAL_64_OPS | -| The number of 64 bits OPS executed | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ACTIVE_CYCLES | -| Active Cycles | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ELAPSED_CYCLES | -| Elapsed Cycles | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ACTIVE_WAVES | -| Active Waves | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::BANDWIDTH_EA | -| Memory Bandwidth measured at the TCC_EA interface. In units of byt| -| es/cycle. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::OccupancyPercent | -| GPU occupancy as % of maximum. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MfmaUtil | -| The percentage of kernel's duration, the MFMA unit was busy execut| -| ing instructions | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_avr | -| TA block is busy. Average over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_max | -| TA block is busy. Max over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_BUSY_min | -| TA block is busy. Min over TA instances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TA_FLAT_WRITE_WAVEFRONTS_sum | -| Number of flat opcode writes processed by the TA. Sum over TA inst| -| ances. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_sum | -| Total number of TCP stalls TA data interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::TCP_TCP_TA_DATA_STALL_CYCLES_max | -| Maximum number of TCP stalls TA data interface. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WRITE_REQ_32B | -| The total number of 32-byte effective memory writes. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VFetchInsts | -| The average number of vector fetch instructions from the video mem| -| ory executed per work-item (affected by flow control). Excludes FL| -| AT instructions that fetch from video memory. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VWriteInsts | -| The average number of vector write instructions to the video memor| -| y executed per work-item (affected by flow control). Excludes FLAT| -| instructions that write to video memory. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FlatVMemInsts | -| The average number of FLAT instructions that read from or write to| -| the video memory executed per work item (affected by flow control| -| ). Includes FLAT instructions that read from or write to scratch. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::LDSInsts | -| The average number of LDS read or LDS write instructions executed | -| per work item (affected by flow control). Excludes FLAT instructi| -| ons that read from or write to LDS. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FlatLDSInsts | -| The average number of FLAT instructions that read or write to LDS | -| executed per work item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUUtilization | -| The percentage of active vector ALU threads in a wave. A lower num| -| ber can mean either more thread divergence in a wave or that the w| -| ork-group size is not a multiple of 64. Value range: 0% (bad), 100| -| % (ideal - no thread divergence). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUBusy | -| The percentage of GPUTime vector ALU instructions are processed. V| -| alue range: 0% (bad) to 100% (optimal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SALUBusy | -| The percentage of GPUTime scalar ALU instructions are processed. V| -| alue range: 0% (bad) to 100% (optimal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::FetchSize | -| The total kilobytes fetched from the video memory. This is measure| -| d with all extra fetches and any cache or memory effects taken int| -| o account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WriteSize | -| The total kilobytes written to the video memory. This is measured | -| with all extra fetches and any cache or memory effects taken into | -| account. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemWrites32B | -| The total number of effective 32B write transactions to the memory| -| | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::L2CacheHit | -| The percentage of fetch, write, atomic, and other instructions tha| -| t hit the data in L2 cache. Value range: 0% (no hit) to 100% (opti| -| mal). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemUnitStalled | -| The percentage of GPUTime the memory unit is stalled. Try reducing| -| the number or size of fetches and writes if possible. Value range| -| : 0% (optimal) to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::WriteUnitStalled | -| The percentage of GPUTime the Write unit is stalled. Value range: | -| 0% to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::LDSBankConflict | -| The percentage of GPUTime LDS is stalled by bank conflicts. Value | -| range: 0% (optimal) to 100% (bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GPUBusy | -| The percentage of time GPU was busy. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::Wavefronts | -| Total wavefronts. | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::VALUInsts | -| The average number of vector ALU instructions executed per work-it| -| em (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SALUInsts | -| The average number of scalar ALU instructions executed per work-it| -| em (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::SFetchInsts | -| The average number of scalar fetch instructions from the video mem| -| ory executed per work-item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::GDSInsts | -| The average number of GDS read or GDS write instructions executed | -| per work item (affected by flow control). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::MemUnitBusy | -| The percentage of GPUTime the memory unit is active. The result in| -| cludes the stall time (MemUnitStalled). This is measured with all | -| extra fetches and writes and any cache or memory effects taken int| -| o account. Value range: 0% to 100% (fetch-bound). | -| :device=0 | -| Mandatory device qualifier [0,1] | --------------------------------------------------------------------------------- -| rocm:::ALUStalledByLDS | -| The percentage of GPUTime ALU units are stalled by the LDS input q| -| ueue being full or the output queue being not ready. If there are | -| LDS bank conflicts, reduce them. Otherwise, try reducing the numbe| -| r of LDS accesses if possible. Value range: 0% (optimal) to 100% (| -| bad). | -| :device=0 | -| Mandatory device qualifier [0,1] | -=============================================================================== - Native Events in Component: rocm_smi -=============================================================================== -| rocm_smi:::NUMDevices | -| Number of Devices which have monitors, accessible by rocm_smi. | --------------------------------------------------------------------------------- -| rocm_smi:::rsmi_version | -| Version of RSMI lib; 0x0000MMMMmmmmpppp Major, Minor, Patch. | --------------------------------------------------------------------------------- -| rocm_smi:::driver_version_str | -| Returns char* to z-terminated driver version string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::device_brand:device=0 | -| Returns char* to z-terminated brand string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::busy_percent:device=0 | -| Percentage of time the device was busy doing any processing. | --------------------------------------------------------------------------------- -| rocm_smi:::drm_render_minor:device=0 | -| DRM Minor Number associated with this device. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=UMC | -| Correctable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=UMC | -| Uncorrectable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=SDMA | -| Correctable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=SDMA | -| Uncorrectable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=GFX | -| Correctable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=GFX | -| Uncorrectable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=MMHUB | -| Correctable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=MMHUB | -| Uncorrectable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=PCIE_BIF | -| Correctable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=PCIE_BIF | -| Uncorrectable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=0:block=HDP | -| Correctable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=0:block=HDP | -| Uncorrectable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_enabled_get:device=0 | -| Bit mask of GPU blocks with ecc error counting enabled. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=MEC | -| Firmware Version Block MEC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=MEC2 | -| Firmware Version Block MEC2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=RLC | -| Firmware Version Block RLC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SDMA | -| Firmware Version Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SDMA2 | -| Firmware Version Block SDMA2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SMC | -| Firmware Version Block SMC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=SOS | -| Firmware Version Block SOS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=RAS | -| Firmware Version Block RAS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=XGMI | -| Firmware Version Block XGMI. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=0:block=VCN | -| Firmware Version Block VCN. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=0 | -| Returns System frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=1 | -| Returns System frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:idx=2 | -| Returns System frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:idx=0 | -| Returns DataFabric frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=0 | -| Returns SOC frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=1 | -| Returns SOC frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=2 | -| Returns SOC frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=3 | -| Returns SOC frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:idx=4 | -| Returns SOC frequency value for supported_table[4]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=0 | -| Returns Memory frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=1 | -| Returns Memory frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=2 | -| Returns Memory frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:idx=3 | -| Returns Memory frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=0:mask | -| Write Only. Sets bit mask, 1's for System frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=0:mask | -| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| -| upport table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=0:mask | -| Write Only. Sets bit mask, 1's for SOC frequency value in support | -| table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=0:mask | -| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::device_id:device=0 | -| Vendor supplied device id number. May be shared by same model devi| -| ces; see pci_id for a unique identifier. | --------------------------------------------------------------------------------- -| rocm_smi:::memory_busy_percent:device=0 | -| Percentage_of time any device memory is being used. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VRAM:device=0 | -| Total VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VIS_VRAM:device=0 | -| Total Visible VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_GTT:device=0 | -| Total Visible GTT (Graphics Translation Table) memory, aka GART me| -| mory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VRAM:device=0 | -| VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VIS_VRAM:device=0 | -| Visible VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_GTT:device=0 | -| (Graphic Translation Table) memory in use (aka GART memory). | --------------------------------------------------------------------------------- -| rocm_smi:::device_name:device=0 | -| Returns char* to z-terminated name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::pci_id:device=0 | -| BDF (Bus/Device/Function) ID, unique per device. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_replay_counter:device=0 | -| Sum of the number of NAK's received by the GPU and the NAK's gener| -| ated by the GPU. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_sent:device=0 | -| Throughput on PCIe traffic, bytes/second sent. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_received:device=0 | -| Throughput on PCIe traffic, bytes/second received. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_max_packet_size:device=0 | -| Maximum PCIe packet size. | --------------------------------------------------------------------------------- -| rocm_smi:::perf_level:device=0 | -| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| -| t [0-8], see ROCm_SMI_Manual for details. | --------------------------------------------------------------------------------- -| rocm_smi:::power_average:device=0:sensor=0 | -| Current Average Power consumption in microwatts. Requires root pri| -| vileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap:device=0:sensor=0 | -| Power cap in microwatts. Read/Write. Between min/max (see power_ca| -| p_range_min/max). May require root privileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_min:device=0:sensor=0 | -| Power cap Minimum settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_max:device=0:sensor=0 | -| Power cap Maximim settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::device_serial_number:device=0 | -| Returns char* to z-terminated serial number string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_id:device=0 | -| Subsystem id number. | --------------------------------------------------------------------------------- -| rocm_smi:::device_subsystem_name:device=0 | -| Returns char* to z-terminated subsystem name string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_vendor_id:device=0 | -| System vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=0 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=1 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=0:sensor=2 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=0 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=1 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=0:sensor=2 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=0 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=1 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=0:sensor=2 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=0 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=1 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=0:sensor=2 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::unique_id:device=0 | -| Unique id for device. | --------------------------------------------------------------------------------- -| rocm_smi:::vbios_version:device=0 | -| Returns char* to z-terminated vbios version string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_id:device=0 | -| Vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_name:device=0 | -| Returns char* to z-terminated vendor name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::device_brand:device=1 | -| Returns char* to z-terminated brand string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::busy_percent:device=1 | -| Percentage of time the device was busy doing any processing. | --------------------------------------------------------------------------------- -| rocm_smi:::drm_render_minor:device=1 | -| DRM Minor Number associated with this device. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=UMC | -| Correctable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=UMC | -| Uncorrectable error count for the GPU Block UMC. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=SDMA | -| Correctable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=SDMA | -| Uncorrectable error count for the GPU Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=GFX | -| Correctable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=GFX | -| Uncorrectable error count for the GPU Block GFX. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=MMHUB | -| Correctable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=MMHUB | -| Uncorrectable error count for the GPU Block MMHUB. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=PCIE_BIF | -| Correctable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=PCIE_BIF | -| Uncorrectable error count for the GPU Block PCIE_BIF. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_correctable:device=1:block=HDP | -| Correctable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_count_uncorrectable:device=1:block=HDP | -| Uncorrectable error count for the GPU Block HDP. | --------------------------------------------------------------------------------- -| rocm_smi:::ecc_enabled_get:device=1 | -| Bit mask of GPU blocks with ecc error counting enabled. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=MEC | -| Firmware Version Block MEC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=MEC2 | -| Firmware Version Block MEC2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=RLC | -| Firmware Version Block RLC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SDMA | -| Firmware Version Block SDMA. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SDMA2 | -| Firmware Version Block SDMA2. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SMC | -| Firmware Version Block SMC. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=SOS | -| Firmware Version Block SOS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=RAS | -| Firmware Version Block RAS. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=XGMI | -| Firmware Version Block XGMI. | --------------------------------------------------------------------------------- -| rocm_smi:::firmware_version:device=1:block=VCN | -| Firmware Version Block VCN. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=0 | -| Returns System frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=1 | -| Returns System frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:idx=2 | -| Returns System frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:idx=0 | -| Returns DataFabric frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=0 | -| Returns SOC frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=1 | -| Returns SOC frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=2 | -| Returns SOC frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=3 | -| Returns SOC frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:idx=4 | -| Returns SOC frequency value for supported_table[4]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:count | -| Number of frequencies available. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:current | -| Current operating frequency. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=0 | -| Returns Memory frequency value for supported_table[0]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=1 | -| Returns Memory frequency value for supported_table[1]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=2 | -| Returns Memory frequency value for supported_table[2]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:idx=3 | -| Returns Memory frequency value for supported_table[3]. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_System:device=1:mask | -| Write Only. Sets bit mask, 1's for System frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_DataFabric:device=1:mask | -| Write Only. Sets bit mask, 1's for DataFabric frequency value in s| -| upport table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_SOC:device=1:mask | -| Write Only. Sets bit mask, 1's for SOC frequency value in support | -| table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::gpu_clk_freq_Memory:device=1:mask | -| Write Only. Sets bit mask, 1's for Memory frequency value in suppo| -| rt table permitted. All 0 mask prohibited. | --------------------------------------------------------------------------------- -| rocm_smi:::device_id:device=1 | -| Vendor supplied device id number. May be shared by same model devi| -| ces; see pci_id for a unique identifier. | --------------------------------------------------------------------------------- -| rocm_smi:::memory_busy_percent:device=1 | -| Percentage_of time any device memory is being used. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VRAM:device=1 | -| Total VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_VIS_VRAM:device=1 | -| Total Visible VRAM memory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_total_GTT:device=1 | -| Total Visible GTT (Graphics Translation Table) memory, aka GART me| -| mory. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VRAM:device=1 | -| VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_VIS_VRAM:device=1 | -| Visible VRAM memory in use. | --------------------------------------------------------------------------------- -| rocm_smi:::mem_usage_GTT:device=1 | -| (Graphic Translation Table) memory in use (aka GART memory). | --------------------------------------------------------------------------------- -| rocm_smi:::device_name:device=1 | -| Returns char* to z-terminated name string; do not free(). | --------------------------------------------------------------------------------- -| rocm_smi:::pci_id:device=1 | -| BDF (Bus/Device/Function) ID, unique per device. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_replay_counter:device=1 | -| Sum of the number of NAK's received by the GPU and the NAK's gener| -| ated by the GPU. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_sent:device=1 | -| Throughput on PCIe traffic, bytes/second sent. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_throughput_received:device=1 | -| Throughput on PCIe traffic, bytes/second received. | --------------------------------------------------------------------------------- -| rocm_smi:::pci_max_packet_size:device=1 | -| Maximum PCIe packet size. | --------------------------------------------------------------------------------- -| rocm_smi:::perf_level:device=1 | -| PowerPlay Performance Level; Read/Write, enum rsmi_dev_perf_level_| -| t [0-8], see ROCm_SMI_Manual for details. | --------------------------------------------------------------------------------- -| rocm_smi:::power_average:device=1:sensor=0 | -| Current Average Power consumption in microwatts. Requires root pri| -| vileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap:device=1:sensor=0 | -| Power cap in microwatts. Read/Write. Between min/max (see power_ca| -| p_range_min/max). May require root privileges. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_min:device=1:sensor=0 | -| Power cap Minimum settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::power_cap_range_max:device=1:sensor=0 | -| Power cap Maximim settable value, in microwatts. | --------------------------------------------------------------------------------- -| rocm_smi:::device_serial_number:device=1 | -| Returns char* to z-terminated serial number string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_id:device=1 | -| Subsystem id number. | --------------------------------------------------------------------------------- -| rocm_smi:::device_subsystem_name:device=1 | -| Returns char* to z-terminated subsystem name string; do not free()| -| . | --------------------------------------------------------------------------------- -| rocm_smi:::subsystem_vendor_id:device=1 | -| System vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=0 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=1 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_current:device=1:sensor=2 | -| Temperature current value, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=0 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=1 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical:device=1:sensor=2 | -| Temperature critical max value, typical > temp_max, millidegrees C| -| elsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=0 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=1 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_critical_hyst:device=1:sensor=2 | -| Temperature hysteresis value for critical limit, millidegrees Cels| -| ius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=0 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=1 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::temp_emergency:device=1:sensor=2 | -| Temperature emergency max for chips supporting more than two upper| -| temp limits, millidegrees Celsius. | --------------------------------------------------------------------------------- -| rocm_smi:::unique_id:device=1 | -| Unique id for device. | --------------------------------------------------------------------------------- -| rocm_smi:::vbios_version:device=1 | -| Returns char* to z-terminated vbios version string; do not free().| -| | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_id:device=1 | -| Vendor id number. | --------------------------------------------------------------------------------- -| rocm_smi:::vendor_name:device=1 | -| Returns char* to z-terminated vendor name string; do not free(). | -=============================================================================== - Native Events in Component: amd_smi -=============================================================================== -| amd_smi:::temp_current:device=0:sensor=0 | -| Device 0 temp_current for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=0 | -| Device 0 temp_max for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=0 | -| Device 0 temp_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=0 | -| Device 0 temp_max_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=0 | -| Device 0 temp_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=0 | -| Device 0 temp_critical for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=0 | -| Device 0 temp_critical_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=0 | -| Device 0 temp_emergency for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=0 | -| Device 0 temp_emergency_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=0 | -| Device 0 temp_crit_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=0 | -| Device 0 temp_crit_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=0 | -| Device 0 temp_offset for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=0 | -| Device 0 temp_lowest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=0 | -| Device 0 temp_highest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=1 | -| Device 0 temp_current for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=1 | -| Device 0 temp_max for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=1 | -| Device 0 temp_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=1 | -| Device 0 temp_max_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=1 | -| Device 0 temp_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=1 | -| Device 0 temp_critical for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=1 | -| Device 0 temp_critical_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=1 | -| Device 0 temp_emergency for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=1 | -| Device 0 temp_emergency_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=1 | -| Device 0 temp_crit_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=1 | -| Device 0 temp_crit_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=1 | -| Device 0 temp_offset for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=1 | -| Device 0 temp_lowest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=1 | -| Device 0 temp_highest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=2 | -| Device 0 temp_current for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=2 | -| Device 0 temp_max for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=2 | -| Device 0 temp_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=2 | -| Device 0 temp_max_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=2 | -| Device 0 temp_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=2 | -| Device 0 temp_critical for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=2 | -| Device 0 temp_critical_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=2 | -| Device 0 temp_emergency for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=2 | -| Device 0 temp_emergency_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=2 | -| Device 0 temp_crit_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=2 | -| Device 0 temp_crit_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=2 | -| Device 0 temp_offset for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=2 | -| Device 0 temp_lowest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=2 | -| Device 0 temp_highest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=3 | -| Device 0 temp_current for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=3 | -| Device 0 temp_max for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=3 | -| Device 0 temp_min for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=3 | -| Device 0 temp_max_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=3 | -| Device 0 temp_min_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=3 | -| Device 0 temp_critical for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=3 | -| Device 0 temp_critical_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=3 | -| Device 0 temp_emergency for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=3 | -| Device 0 temp_emergency_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=3 | -| Device 0 temp_crit_min for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=3 | -| Device 0 temp_crit_min_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=3 | -| Device 0 temp_offset for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=3 | -| Device 0 temp_lowest for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=3 | -| Device 0 temp_highest for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=4 | -| Device 0 temp_current for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=4 | -| Device 0 temp_max for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=4 | -| Device 0 temp_min for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=4 | -| Device 0 temp_max_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=4 | -| Device 0 temp_min_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=4 | -| Device 0 temp_critical for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=4 | -| Device 0 temp_critical_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=4 | -| Device 0 temp_emergency for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=4 | -| Device 0 temp_emergency_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=4 | -| Device 0 temp_crit_min for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=4 | -| Device 0 temp_crit_min_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=4 | -| Device 0 temp_offset for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=4 | -| Device 0 temp_lowest for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=4 | -| Device 0 temp_highest for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=5 | -| Device 0 temp_current for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=5 | -| Device 0 temp_max for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=5 | -| Device 0 temp_min for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=5 | -| Device 0 temp_max_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=5 | -| Device 0 temp_min_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=5 | -| Device 0 temp_critical for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=5 | -| Device 0 temp_critical_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=5 | -| Device 0 temp_emergency for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=5 | -| Device 0 temp_emergency_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=5 | -| Device 0 temp_crit_min for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=5 | -| Device 0 temp_crit_min_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=5 | -| Device 0 temp_offset for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=5 | -| Device 0 temp_lowest for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=5 | -| Device 0 temp_highest for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=6 | -| Device 0 temp_current for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=6 | -| Device 0 temp_max for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=6 | -| Device 0 temp_min for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=6 | -| Device 0 temp_max_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=6 | -| Device 0 temp_min_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=6 | -| Device 0 temp_critical for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=6 | -| Device 0 temp_critical_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=6 | -| Device 0 temp_emergency for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=6 | -| Device 0 temp_emergency_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=6 | -| Device 0 temp_crit_min for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=6 | -| Device 0 temp_crit_min_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=6 | -| Device 0 temp_offset for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=6 | -| Device 0 temp_lowest for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=6 | -| Device 0 temp_highest for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=0:sensor=7 | -| Device 0 temp_current for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=0:sensor=7 | -| Device 0 temp_max for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=0:sensor=7 | -| Device 0 temp_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=0:sensor=7 | -| Device 0 temp_max_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=0:sensor=7 | -| Device 0 temp_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=0:sensor=7 | -| Device 0 temp_critical for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=0:sensor=7 | -| Device 0 temp_critical_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=0:sensor=7 | -| Device 0 temp_emergency for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=0:sensor=7 | -| Device 0 temp_emergency_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=0:sensor=7 | -| Device 0 temp_crit_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=0:sensor=7 | -| Device 0 temp_crit_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=0:sensor=7 | -| Device 0 temp_offset for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=0:sensor=7 | -| Device 0 temp_lowest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=0:sensor=7 | -| Device 0 temp_highest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=0 | -| Device 1 temp_current for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=0 | -| Device 1 temp_max for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=0 | -| Device 1 temp_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=0 | -| Device 1 temp_max_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=0 | -| Device 1 temp_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=0 | -| Device 1 temp_critical for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=0 | -| Device 1 temp_critical_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=0 | -| Device 1 temp_emergency for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=0 | -| Device 1 temp_emergency_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=0 | -| Device 1 temp_crit_min for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=0 | -| Device 1 temp_crit_min_hyst for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=0 | -| Device 1 temp_offset for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=0 | -| Device 1 temp_lowest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=0 | -| Device 1 temp_highest for sensor 0 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=1 | -| Device 1 temp_current for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=1 | -| Device 1 temp_max for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=1 | -| Device 1 temp_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=1 | -| Device 1 temp_max_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=1 | -| Device 1 temp_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=1 | -| Device 1 temp_critical for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=1 | -| Device 1 temp_critical_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=1 | -| Device 1 temp_emergency for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=1 | -| Device 1 temp_emergency_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=1 | -| Device 1 temp_crit_min for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=1 | -| Device 1 temp_crit_min_hyst for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=1 | -| Device 1 temp_offset for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=1 | -| Device 1 temp_lowest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=1 | -| Device 1 temp_highest for sensor 1 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=2 | -| Device 1 temp_current for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=2 | -| Device 1 temp_max for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=2 | -| Device 1 temp_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=2 | -| Device 1 temp_max_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=2 | -| Device 1 temp_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=2 | -| Device 1 temp_critical for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=2 | -| Device 1 temp_critical_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=2 | -| Device 1 temp_emergency for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=2 | -| Device 1 temp_emergency_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=2 | -| Device 1 temp_crit_min for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=2 | -| Device 1 temp_crit_min_hyst for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=2 | -| Device 1 temp_offset for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=2 | -| Device 1 temp_lowest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=2 | -| Device 1 temp_highest for sensor 2 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=3 | -| Device 1 temp_current for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=3 | -| Device 1 temp_max for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=3 | -| Device 1 temp_min for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=3 | -| Device 1 temp_max_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=3 | -| Device 1 temp_min_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=3 | -| Device 1 temp_critical for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=3 | -| Device 1 temp_critical_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=3 | -| Device 1 temp_emergency for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=3 | -| Device 1 temp_emergency_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=3 | -| Device 1 temp_crit_min for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=3 | -| Device 1 temp_crit_min_hyst for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=3 | -| Device 1 temp_offset for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=3 | -| Device 1 temp_lowest for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=3 | -| Device 1 temp_highest for sensor 3 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=4 | -| Device 1 temp_current for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=4 | -| Device 1 temp_max for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=4 | -| Device 1 temp_min for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=4 | -| Device 1 temp_max_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=4 | -| Device 1 temp_min_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=4 | -| Device 1 temp_critical for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=4 | -| Device 1 temp_critical_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=4 | -| Device 1 temp_emergency for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=4 | -| Device 1 temp_emergency_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=4 | -| Device 1 temp_crit_min for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=4 | -| Device 1 temp_crit_min_hyst for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=4 | -| Device 1 temp_offset for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=4 | -| Device 1 temp_lowest for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=4 | -| Device 1 temp_highest for sensor 4 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=5 | -| Device 1 temp_current for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=5 | -| Device 1 temp_max for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=5 | -| Device 1 temp_min for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=5 | -| Device 1 temp_max_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=5 | -| Device 1 temp_min_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=5 | -| Device 1 temp_critical for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=5 | -| Device 1 temp_critical_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=5 | -| Device 1 temp_emergency for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=5 | -| Device 1 temp_emergency_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=5 | -| Device 1 temp_crit_min for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=5 | -| Device 1 temp_crit_min_hyst for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=5 | -| Device 1 temp_offset for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=5 | -| Device 1 temp_lowest for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=5 | -| Device 1 temp_highest for sensor 5 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=6 | -| Device 1 temp_current for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=6 | -| Device 1 temp_max for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=6 | -| Device 1 temp_min for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=6 | -| Device 1 temp_max_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=6 | -| Device 1 temp_min_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=6 | -| Device 1 temp_critical for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=6 | -| Device 1 temp_critical_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=6 | -| Device 1 temp_emergency for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=6 | -| Device 1 temp_emergency_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=6 | -| Device 1 temp_crit_min for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=6 | -| Device 1 temp_crit_min_hyst for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=6 | -| Device 1 temp_offset for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=6 | -| Device 1 temp_lowest for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=6 | -| Device 1 temp_highest for sensor 6 | --------------------------------------------------------------------------------- -| amd_smi:::temp_current:device=1:sensor=7 | -| Device 1 temp_current for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max:device=1:sensor=7 | -| Device 1 temp_max for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min:device=1:sensor=7 | -| Device 1 temp_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_max_hyst:device=1:sensor=7 | -| Device 1 temp_max_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_min_hyst:device=1:sensor=7 | -| Device 1 temp_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical:device=1:sensor=7 | -| Device 1 temp_critical for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_critical_hyst:device=1:sensor=7 | -| Device 1 temp_critical_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency:device=1:sensor=7 | -| Device 1 temp_emergency for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_emergency_hyst:device=1:sensor=7 | -| Device 1 temp_emergency_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min:device=1:sensor=7 | -| Device 1 temp_crit_min for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_crit_min_hyst:device=1:sensor=7 | -| Device 1 temp_crit_min_hyst for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_offset:device=1:sensor=7 | -| Device 1 temp_offset for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_lowest:device=1:sensor=7 | -| Device 1 temp_lowest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::temp_highest:device=1:sensor=7 | -| Device 1 temp_highest for sensor 7 | --------------------------------------------------------------------------------- -| amd_smi:::fan_rpms:device=0:sensor=0 | -| Device 0 fan speed in RPM | --------------------------------------------------------------------------------- -| amd_smi:::fan_speed:device=0:sensor=0 | -| Device 0 fan speed (0-255 relative) | --------------------------------------------------------------------------------- -| amd_smi:::fan_rpms:device=1:sensor=0 | -| Device 1 fan speed in RPM | --------------------------------------------------------------------------------- -| amd_smi:::fan_speed:device=1:sensor=0 | -| Device 1 fan speed (0-255 relative) | --------------------------------------------------------------------------------- -| amd_smi:::mem_total_VRAM:device=0 | -| Device 0 total VRAM memory (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_usage_VRAM:device=0 | -| Device 0 VRAM memory usage (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_total_VRAM:device=1 | -| Device 1 total VRAM memory (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::mem_usage_VRAM:device=1 | -| Device 1 VRAM memory usage (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::power_average:device=0 | -| Device 0 average power consumption (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap:device=0 | -| Device 0 current power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_min:device=0 | -| Device 0 minimum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_max:device=0 | -| Device 0 maximum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_average:device=1 | -| Device 1 average power consumption (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap:device=1 | -| Device 1 current power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_min:device=1 | -| Device 1 minimum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::power_cap_range_max:device=1 | -| Device 1 maximum allowed power cap (W) | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_sent:device=0 | -| Device 0 PCIe bytes sent per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_received:device=0 | -| Device 0 PCIe bytes received per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_max_packet:device=0 | -| Device 0 PCIe max packet size (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::pci_replay_counter:device=0 | -| Device 0 PCIe replay (NAK) counter | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_sent:device=1 | -| Device 1 PCIe bytes sent per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_received:device=1 | -| Device 1 PCIe bytes received per second | --------------------------------------------------------------------------------- -| amd_smi:::pci_throughput_max_packet:device=1 | -| Device 1 PCIe max packet size (bytes) | --------------------------------------------------------------------------------- -| amd_smi:::pci_replay_counter:device=1 | -| Device 1 PCIe replay (NAK) counter | --------------------------------------------------------------------------------- - -Total events reported: 844 diff --git a/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 b/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 deleted file mode 100644 index 026cff0d8..000000000 --- a/src/components/amd_smi/tests/.nfs0000000086114a7e00045c08 +++ /dev/null @@ -1,371 +0,0 @@ -/****************************/ -/* THIS IS OPEN SOURCE CODE */ -/****************************/ - -/** - * @author Vince Weaver (adapted by ChatGPT) - * - * Test case for AMD SMI component - * - * @brief - * Tests basic functionality of the AMD SMI component in PAPI - */ - -#include -#include -#include -#include - -#include "papi.h" -#include "papi_test.h" - -#define MAX_AMD_SMI_EVENTS 64 - - -#ifdef BASIC_TEST - -void run_test(int quiet) { - - if (!quiet) { - printf("Sleeping 1 second...\n"); - } - - /* Sleep */ - sleep(1); -} - -#else - -#define MATRIX_SIZE 1024 - - static double a[MATRIX_SIZE][MATRIX_SIZE]; - static double b[MATRIX_SIZE][MATRIX_SIZE]; - static double c[MATRIX_SIZE][MATRIX_SIZE]; - -/* Naive matrix multiply */ -void run_test(int quiet) { - - double s; - int i,j,k; - - if (!quiet) { - printf("Doing a naive %dx%d MMM...\n",MATRIX_SIZE,MATRIX_SIZE); - } - - for(i=0;i 1 ) { - if ( strstr( argv[1], "-w" ) ) { - do_wrap = 1; - } - } - -#endif - - /* Set TESTS_QUIET variable */ - tests_quiet( argc, argv ); - - /* PAPI Initialization */ - retval = PAPI_library_init( PAPI_VER_CURRENT ); - if ( retval != PAPI_VER_CURRENT ) { - test_fail(__FILE__, __LINE__,"PAPI_library_init failed\n",retval); - } - - if (!TESTS_QUIET) { - printf("Trying all AMD SMI events\n"); - } - - numcmp = PAPI_num_components(); - - for(cid=0; cidname,"amd_smi")) { - - amd_smi_cid=cid; - - if (!TESTS_QUIET) { - printf("Found AMD SMI component at cid %d\n",amd_smi_cid); - } -/* - if (cmpinfo->disabled) { - if (!TESTS_QUIET) { - printf("AMD SMI component disabled: %s\n", - cmpinfo->disabled_reason); - } - test_skip(__FILE__,__LINE__,"AMD SMI component disabled",0); - } - -*/ - break; - } - } - - /* Component not found */ - if (cid==numcmp) { - test_skip(__FILE__,__LINE__,"No AMD SMI component found\n",0); - } - - /* Create EventSet */ - retval = PAPI_create_eventset( &EventSet ); - if (retval != PAPI_OK) { - test_fail(__FILE__, __LINE__, - "PAPI_create_eventset()",retval); - } - - /* Add all events */ - - code = PAPI_NATIVE_MASK; - - r = PAPI_enum_cmp_event( &code, PAPI_ENUM_FIRST, amd_smi_cid ); - - while ( r == PAPI_OK ) { - - retval = PAPI_event_code_to_name( code, event_names[num_events] ); - if ( retval != PAPI_OK ) { - printf("Error translating %#x\n",code); - test_fail( __FILE__, __LINE__, - "PAPI_event_code_to_name", retval ); - } - - retval = PAPI_get_event_info(code,&evinfo); - if (retval != PAPI_OK) { - test_fail( __FILE__, __LINE__, - "Error getting event info\n",retval); - } - - strncpy(units[num_events],evinfo.units,sizeof(units[0])); - /* buffer must be null terminated to safely use strstr operation on it */ - units[num_events][sizeof(units[0])-1] = '\0'; - - data_type[num_events] = evinfo.data_type; - - retval = PAPI_add_event( EventSet, code ); - if (retval != PAPI_OK) { - break; /* We've hit an event limit */ - } - num_events++; - - r = PAPI_enum_cmp_event( &code, PAPI_ENUM_EVENTS, amd_smi_cid ); - } - - values=calloc(num_events,sizeof(long long)); - if (values==NULL) { - test_fail(__FILE__, __LINE__, - "No memory",retval); - } - - if (!TESTS_QUIET) { - printf("\nStarting measurements...\n\n"); - } - - /* Start Counting */ - before_time=PAPI_get_real_nsec(); - retval = PAPI_start( EventSet); - if (retval != PAPI_OK) { - test_fail(__FILE__, __LINE__, "PAPI_start()",retval); - } - - /* Run test */ - run_test(TESTS_QUIET); - - /* Stop Counting */ - after_time=PAPI_get_real_nsec(); - retval = PAPI_stop( EventSet, values); - if (retval != PAPI_OK) { - test_fail(__FILE__, __LINE__, "PAPI_stop()",retval); - } - - elapsed_time=((double)(after_time-before_time))/1.0e9; - - if (!TESTS_QUIET) { - printf("\nStopping measurements, took %.3fs, gathering results...\n\n", - elapsed_time); - - printf("Scaled energy measurements (if applicable):\n"); - - for(i=0;i -#include -#include -#include "papi.h" -#include -#include - -#define CHECK(cmd) \ -{\ - hipError_t error = cmd;\ - if (error != hipSuccess) { \ - fprintf(stderr, "error: '%s'(%d) at %s:%d\n", hipGetErrorString(error), error,__FILE__, __LINE__); \ - exit(EXIT_FAILURE);\ - }\ -} - -// THIS MACRO EXITS if the papi call does not return PAPI_OK. Do not use for routines that -// return anything else; e.g. PAPI_num_components, PAPI_get_component_info, PAPI_library_init. -#define CALL_PAPI_OK(papi_routine) \ - do { \ - int _papiret = papi_routine; \ - if (_papiret != PAPI_OK) { \ - fprintf(stderr, "%s:%d macro: PAPI Error: function " #papi_routine " failed with ret=%d [%s].\n", \ - __FILE__, __LINE__, _papiret, PAPI_strerror(_papiret)); \ - exit(-1); \ - } \ - } while (0); - - -#define MEMORY_ALLOCATION_CALL(var) \ - do { \ - if (var == NULL) { \ - fprintf(stderr, "%s:%d: Error: Memory Allocation Failed \n",\ - __FILE__, __LINE__); \ - exit(-1); \ - } \ - } while (0); - - -#define MAX_DEVICES (32) -#define BLOCK_SIZE (1024) -#define GRID_SIZE (512) -#define BUF_SIZE (32 * 1024) -#define ALIGN_SIZE (8) -#define SUCCESS (0) -#define NUM_METRIC (18) -#define NUM_EVENTS (2) -#define MAX_SIZE (64*1024*1024) // 64 MB - -typedef union -{ - long long ll; - unsigned long long ull; - double d; - void *vp; - unsigned char ch[8]; -} convert_64_t; - -typedef struct { - char name[128]; - long long value; - int flagged; -} eventStore_t; - -int eventsFoundCount = 0; // occupants of the array. -int eventsFoundMax; // Size of the array. -int eventsFoundAdd = 32; // Blocksize for increasing the array. -int deviceCount=0; // Total devices seen. -int deviceEvents[32] = {0}; // Number of events for each device=??. -int globalEvents = 0; // events without a "device=". -eventStore_t *eventsFound = NULL; // The array. - -//----------------------------------------------------------------------------- -// HIP routine: Square each element in the array A and write to array C. -//----------------------------------------------------------------------------- -template -__global__ void -vector_square(T *C_d, T *A_d, size_t N) -{ - size_t offset = (blockIdx.x * blockDim.x + threadIdx.x); - size_t stride = blockDim.x * gridDim.x ; - - for (size_t i=offset; i= eventsFoundMax) { // bump count, if too much, make room. - eventsFoundMax += eventsFoundAdd; // Add. - eventsFound = (eventStore_t*) realloc(eventsFound, eventsFoundMax*sizeof(eventStore_t)); // Make new room. - memset(eventsFound+(eventsFoundMax-eventsFoundAdd), 0, eventsFoundAdd*sizeof(eventStore_t)); // zero it. - } -} // end routine. - -//----------------------------------------------------------------------------- -// conduct a test using HIP. Derived from AMD sample code 'square.cpp'. -// coming in, EventSet is already populated, we just run the test and read. -// Note values must point at an array large enough to store the events in -// Eventset. -//----------------------------------------------------------------------------- -void conductTest(int EventSet, int device, long long *values) { - float *A_d, *C_d; - float *A_h, *C_h; - size_t N = 1000000; - size_t Nbytes = N * sizeof(float); - int ret, thisDev, verbose=0; - - ret = PAPI_start( EventSet ); - if (ret != PAPI_OK ) { - fprintf(stderr,"Error! PAPI_start\n"); - exit( ret ); - } - - hipDeviceProp_t props; - if (verbose) fprintf(stderr, "args: EventSet=%i, device=%i, values=%p.\n", EventSet, device, values); - - CHECK(hipSetDevice(device)); // Set device requested. - CHECK(hipGetDevice(&thisDev)); // Double check. - CHECK(hipGetDeviceProperties(&props, thisDev)); // Get properties (for name). - if (verbose) fprintf (stderr, "info: Requested Device=%i, running on device %i=%s\n", device, thisDev, props.name); - - if (verbose) fprintf (stderr, "info: allocate host mem (%6.2f MB)\n", 2*Nbytes/1024.0/1024.0); - A_h = (float*)malloc(Nbytes); // standard malloc for host. - CHECK(A_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); - C_h = (float*)malloc(Nbytes); // standard malloc for host. - CHECK(C_h == NULL ? hipErrorMemoryAllocation : hipSuccess ); - - // Fill with Phi + i - for (size_t i=0; iname) == 0) cid=i; // If we found our match, record it. - } // end search components. - - if (cid < 0) { // if no amd_smi component found, - fprintf(stderr, "Failed to find amd_smi component among %i " - "reported components.\n", k); - FreeGlobals(); - PAPI_shutdown(); - exit(-1); - } - - printf("Found AMD_SMI Component at id %d\n", cid); - - // Add events at a GPU specific level ... eg amd_smi:::device=0:Whatever - eventCount = 0; - int eventsRead=0; - - // Begin enumeration of all events. - - printf("Events with numeric values were read; if they are zero, they may not \n" - "be operational, or the exercises performed by this code do not affect \n" - "them. We report all 'amd_smi' events presented by the amd_smi component. \n" - "\n" - "------------------------Event Name Found------------------------:---Value---\n"); - - PAPI_event_info_t info; // To get event enumeration info. - m=PAPI_NATIVE_MASK; // Get the PAPI NATIVE mask. - CALL_PAPI_OK(PAPI_enum_cmp_event(&m,PAPI_ENUM_FIRST,cid)); // Begin enumeration of ALL papi counters. - do { // Enumerate all events. - memset(&info,0,sizeof(PAPI_event_info_t)); // Clear event info. - k=m; // Make a copy of current code. - - // enumerate sub-events, with masks. For this test, we do not - // have any! But we do this to test our enumeration works as - // expected. First time through is guaranteed, of course. - - do { // enumerate masked events. - CALL_PAPI_OK(PAPI_get_event_info(k,&info)); // get name of k symbol. - char *devstr = strstr(info.symbol, "device="); // look for device enumerator. - if (devstr != NULL) { // If device specific, - device=atoi(devstr+7); // Get the device id, for info. -// fprintf(stderr, "Found amd_smi symbol '%s', device=%i.\n", info.symbol , device); - if (device < 0 || device >= 32) continue; // skip any not in range. - } else { // A few are system wide. -// fprintf(stderr, "Found amd_smi symbol '%s'.\n", info.symbol); - globalEvents++; // Add to global events. - device=0; // Any device will do. - } - - // Filter for strings being returned. - int isString = 0; - - if (strstr(info.symbol, "device_brand:") != NULL) isString=1; - if (strstr(info.symbol, "device_name:") != NULL) isString=1; - if (strstr(info.symbol, "device_serial_number:") != NULL) isString=1; - if (strstr(info.symbol, "device_subsystem_name:") != NULL) isString=1; - if (strstr(info.symbol, "vbios_version:") != NULL) isString=1; - if (strstr(info.symbol, "vendor_name:") != NULL) isString=1; - if (strstr(info.symbol, "driver_version_str:") != NULL) isString=1; - - // Filter out crashers. - // NOTE: These filters were for rocm_smi. Review and update for amd_smi if needed. - /* - if (strstr(info.symbol, "temp_current:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical_hyst:device=0:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; - // if (strstr(info.symbol, "temp_emergency:device=0:sensor=3") != NULL) continue; // Duplicate line in original - - if (strstr(info.symbol, "temp_current:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_critical_hyst:device=1:sensor=3") != NULL) continue; - if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; - // if (strstr(info.symbol, "temp_emergency:device=1:sensor=3") != NULL) continue; // Duplicate line in original - */ - - CALL_PAPI_OK(PAPI_create_eventset(&EventSet)); - CALL_PAPI_OK(PAPI_assign_eventset_component(EventSet, cid)); - - ret = PAPI_add_named_event(EventSet, info.symbol); // Don't want to fail program if name not found... - if(ret == PAPI_OK) { - eventCount++; // Bump number of events we could test. - if (deviceEvents[device] == 0) deviceCount++; // Increase count of devices if first for this device. - deviceEvents[device]++; // Add to count of events on this device. - } else { - fprintf(stderr, "FAILED to add event '%s', ret=%i='%s'.\n", info.symbol, ret, PAPI_strerror(ret)); - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - continue; - } - - long long value=0; // The only value we read. - - // Prep stuff. - - fprintf(stderr, "conductTest on single event: %s.\n", info.symbol); - conductTest(EventSet, device, &value); // Conduct a test, on device given. - addEventsFound(info.symbol, value); // Add to events we were able to read. - - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - - // report each event counted. - eventsRead++; // .. count and report. - if (value == 0) { - printf("%-64s: %lli (perhaps not exercised by current test code.)\n", info.symbol, value); - } else { - if (isString) printf("%-64s: %-64s\n", info.symbol, ((char*) value)); - else printf("%-64s: %lli\n", info.symbol, value); - } - } while(PAPI_enum_cmp_event(&k,PAPI_NTV_ENUM_UMASKS,cid)==PAPI_OK); // Get next umask entry (bits different) (should return PAPI_NOEVNT). - } while(PAPI_enum_cmp_event(&m,PAPI_ENUM_EVENTS,cid)==PAPI_OK); // Get next event code. - -// fprintf(stderr, "%s:%i Finished Event Loops.\n", __FILE__, __LINE__); - - if (eventCount < 1) { // If we failed on all of them, - fprintf(stderr, "Unable to add any AMD_SMI events; they are not present in the component.\n"); - fprintf(stderr, "Unable to proceed with this test.\n"); - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(-1); // exit no matter what. - } - - if (eventsRead < 1) { // If failed to read any, - fprintf(stderr, "\nFailed to read any AMD_SMI events.\n"); // report a failure. - fprintf(stderr, "Unable to proceed with pair testing.\n"); - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(-1); // exit no matter what. - } - - printf("\nTotal AMD_SMI events identified: %i.\n\n", eventsFoundCount); - - // EARLY SHUT DOWN. -// PAPI_shutdown(); -// return(0); - - // Next section is pair testing information. - if (eventsFoundCount < 2) { // If failed to get counts on any, - printf("Insufficient events are exercised by the current test code to perform pair testing.\n"); // report a failure. - FreeGlobals(); - PAPI_shutdown(); // Returns no value. - exit(0); // exit no matter what. - } - - - for (i=0; i<32; i++) { - if (deviceEvents[i] == 0) continue; // skip if none found. - if (i==0 && globalEvents >0) { - printf("Device %i assigned %i events (%i of which are not device specific). %i potential pairings for this device.\n", i, deviceEvents[i], globalEvents, deviceEvents[i]*(deviceEvents[i]-1)/2); - } else { - printf("Device %i assigned %i events. %i potential pairings for this device.\n", i, deviceEvents[i], deviceEvents[i]*(deviceEvents[i]-1)/2); - } - } - - // Begin pair testing. We consider every possible pairing of events - // that, tested alone, returned a value greater than zero. -// fprintf(stderr, "Begin Pair Testing.\n"); - - int mainEvent, pairEvent, mainDevice, pairDevice; - long long readValues[2]; - int goodOnSame=0, failOnDiff=0, badSameCombo=0, pairProblems=0; // Some counters. - int type; // 0 succeed on same device, 1 = fail across devices. - for (type=0; type<2; type++) { - if (type == 0) { - printf("List of Pairings on SAME device:\n"); - printf("* means value changed by more than 10%% when paired (vs measured singly, above).\n"); - printf("^ means a pair was rejected as an invalid combo.\n"); - } else { - printf("List of Pairings causing an error when on DIFFERENT devices:\n"); - } - - for (mainEvent = 0; mainEvent 1.10) { // Flag as significantly different for main. - flag1='*'; - eventsFound[mainEvent].flagged = 1; // .. remember this event is suspect. - } - - if (pairCheck < 0.90 || pairCheck > 1.10) { // Flag as significantly different for pair. - flag2='*'; - eventsFound[pairEvent].flagged = 1; // .. remember this event is suspect. - } - - if (flag1 == '*' || flag2 == '*') { - pairProblems++; // Remember number of problems. - flag = '*'; // set global flag. - } - - printf("%c %64s + %-64s [", flag, eventsFound[mainEvent].name, eventsFound[pairEvent].name); - if (flag1 == '*') printf("%c%lli (vs %lli),", flag1, readValues[0], eventsFound[mainEvent].value); - else printf("%c%lli,", flag1, readValues[0]); - - if (flag2 == '*') printf("%c%lli (vs %lli)]\n", flag2, readValues[1], eventsFound[pairEvent].value); - else printf("%c%lli]\n", flag2, readValues[1]); - - CALL_PAPI_OK(PAPI_cleanup_eventset(EventSet)); // Delete all events in set. - CALL_PAPI_OK(PAPI_destroy_eventset(&EventSet)); // destroy the event set. - } // end for each possible pairing event. - } // end loop for each possible primary event. - - if (type == 0) { // For good pairings on same devices, - if (goodOnSame == 0) { - printf("NO valid pairings of above events if both on the SAME device.\n"); - } else { - printf("%i valid pairings of above events if both on the SAME device.\n", goodOnSame); - } - - printf("%i unique pairings on SAME device were rejected as bad combinations.\n", badSameCombo); - - if (pairProblems > 0) { - printf("%i pairings resulted in a change of one or both event values > 10%%.\n", pairProblems); - printf("The following events were changed by pairing:\n"); - for (mainEvent = 0; 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%0DO7A!2c36x!Ex8xDljY77m)qZx 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

1N17KUxV1?6S5{pX!eoL0_0gFW!5 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 Pv%lJZ;0iAKg!ca*OCuPl diff --git a/src/components/amd_smi/tests/amdsmi_basics.o b/src/components/amd_smi/tests/amdsmi_basics.o deleted file mode 100644 index 787fc8a7d4258776781d3b8b9f240b5157ae8559..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55648 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 JV#w?Ne*pUeU5Eex diff --git a/src/components/amd_smi/tests/amdsmi_example b/src/components/amd_smi/tests/amdsmi_example deleted file mode 100755 index 339916c13d70adff8c405307a84a5ecbe2070ae4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141456 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�lPI*1n=DiNwJdiG>G^tTfoE8zX ztRn+(d`9CD(ms!)qwdr>PX9l9?;js!aV`EoyUAiC>F%n~qD8ybpixm1MFj-Sk_~Ji zfk*;kK@&&d#=1U@xtd+Ll&Z(fVU! zu%?PY{gv~0H@klm{ z5`D@P6KPTd#6I)tsRh0T)75E`QZFxjCmRtOPhEhwT-Wf39p_qRm(E#On&;uXiMqP{ zQqTOFn(7ugY{IXL>$grNHbMVZ)(BO`MK7<=eV|xUdb|PAMUOIKV%aWFE=wG>6uA~v zcu`>a;Y?p44+ZgS=0q+M^QH)0CCO-ZnVyh}Vvk5NIkj@Ch50BU@R`av)XZ>^^=gRU zpjT_I#7a=X!!*}Umfuef?@ zZmvkOaPkF<_-Xr6F_a4=y@>I#E(t~CFd4;&NJbTulqRD}7L1@OUN9$#Y8EF?E=UlR zEc}vVPpTmxQwE@t-W?k43|TnhI z`xUwBlOT8LdnI@=Or~UFxR^}iaEr@F(3N;cqN1{oWsP-Y47Z@%KO!$1@*{EceV&Uw ziJEbJu~p@0E6U0*&=ZlGsl4i-R6^&Pp6m!o#?1tTkHo7iEYos~OTnt>l#whGWA~~n z<1(rUn0FSx)W@#k$jpfW`sB=INw0@Zu{gCfzBYl5LuZhYbnkIs3y7}>H!tC(VeU=f>LCJu~G4y>ip z3LTRf(cICxa75d+9E;}ri)PWq(dO{n_*(Ux8uM3EV@pdN51l5}8=VqEU=^L{#+&=e zsf)ApDRnAb6Dl);O4KSr-V&f#m=wRW6lW1VZUxJfparW~|FfOd(e)vV!APLDu^C6%o z7bXSrgm+SOdt~N#-U(w|a&u^TMC;6=ixzvARFutMu%J|gG$Lo*Po*A5`xBZGUz6jv zGDWJHxkw2idZ=`?3;LvpA6=;TloS7Qpw6>1Rc@1@|YB?ayyH^`(npH^d z)`lv2G2Yiq5f9MO(ZaInt5?m;o4&esW?piRJ9n_7t;2!2%!QceNWO zws4e;DO5mZEaiRa{7QcDyixM00+XUGQlPwCWt1$bJS>UO6co?nrR#ogF&h}8WgU4^ zQthamu$CjE?keALYMH{ys4VJ5B%@RhVI+rxqs8a}x?rLC9+~5Gh2oMZ(ij(u!6-FI zZZ;x73(FbHZ~6t^AmT&@_AaArjB>rl$J3D*c2+Ln9$1c<_hsj7V&2zo#=?a`xPgCvM7TUv8 zqWls=E48WOwaS;8g5enn9>!3=PEys_+zdyRu~99XZf$4~q493#Xl1D@Iarskgv)ZzDr7`z>gvXuK65N2%vbXZ zE9mZu(nYz9lc+_STpGoz<7l#PF2f_iE-E_{`?+&9{YA6oTCS{QOJEnb*PYBRd0RYI zi<7EdTrvN8@jMnIkC2Qe9BJ(Q#opo~#ytla7=PCRvUr!G&ZXew+j5g?)_&`wE7J0+nNW{~N4#nLh!kC|1GH-cTN z6kR+k(()7;MxbMrJ=uoI5vGwfNycivtbsYlFrRLg&0U#pS8}pQ?PDG`7S#2Fz z&r~UKQW%**Ng*B`lfo!n7FTCYtG543i%MzHNwx6=^a(0qp7Iz?CDeo|o9c;@jG+^l znRESdnW>%k6x=jEft_`p__+LzSGfd9syhEGrHc`bovNhc6WM9Q%NjZk9ksj34<{%q zo_Jm|rkPPYIXbhrGNRNYjC9;wkSIr~*1}P(WUMpeN+FB4+^f!0q?kZP7mGPjB)24n zPOcd#qt+~zE1_m7(f|77p{Byo#geiVb@)vt*2D(>4-1bS6HV4Gv+&}g`RcK)qWPr@ z7tBc|ghYyD;mX-w%aL>e4dUbKOU?M@KK$iheOSyNS$xury(OxY<0)A5E!s+NtQ zH~Sz7A02*)l8@sUH3EqgBgHei?xmDNly9Qc{uhX6WYb31Y_n;JvN^Hz;wYjGJ`RtR z<0qk-=Ju5}I8w$;)DtK?b9FiIiXn)2rFC)Dy1Xki>gwp#RH2wAUwOF}U0z=F>hkE- z7166H>!xTfc~?fSu8O8!ZC)j`T)aKY1sUlWrAmo&PDW<Ql!JBg7Kk7~bSK~^^qP5d8FIFmPm+`$lsFkmv6i_fPkNH&D>HXepA>nJM#ajT#8Zqe_iE9c719CIJ#C^6TV3?Qo9n&P-^Xr=aE`N4P)i< zhKlB<)h!jgo??1+&24p6H8UqwPj9JdXlZPonQQnI$}_3jvv{Gm#ClspYs>OgHJ+Rm zYdKMSp&_3Fwj9|S<^2V94Q!%vP`|~~w7fY`$69Btr@F3XIp>zDCwp3Icy&aeuD<26 zrsYj_6|z&QvQ;do)YhaAbSJ;(Q38zc&YF|>0c}pVm|RtWu*9>^4KqbYjVSU zk%BmLso&*b(s`>zMAJQsXrgKXKd#&msHo!i^jbK7%sJ!66@lf*fFHJt-xyY8wBB+C z5l^)3vO1L%b*Nd^<3+suWXa6DOUD|9;4bkObAV)J<8;r0)&Lv3o>euR7Sa3G@Tsm* z9w*z+)#s8!f2@2rEN_j+aZ`#ec^P^q!zOt z%U4&otgfrzSJf+4HMLeWRn;MZruyY;QBAdRZ_-HuyW)+lt7_>187&n}%d2j!3B(4C zNvVN|)1w+WUH7Zmu!=ff6T-s|>Not|Tg#w;ArHedO zsLQRMmCf?Ql4zADr^J7Uu0TTh6=t5e3Rq8^D0M!mA8ynVNXVyuo={X7*~Wf!QYfwQ zW_Gzb+Nu~foWp3;!&XFda^t6|RoWbiysK~T=g$#? zH5^=#AuOkT#N1kR@k5>8!)!7KDwal%Xp8QDV2_s{&k~=UKEw=fk=9!#jb{3o@WgUL z7?U^`w30(g<|8iHOqYW>5pVV|e`@X#%9#BsEhyq=cg0g;I8@arsq;V> zGrs)js^&U^Ue7_E9DdC7LTmUbQaMQ4EH7WFkqLCNhqs4e_+h4|bv!6M5OHFdnrrH1 z^q3Rf=yKA(h-}rv(o?PX<#5vN7hiz)m@xx!4qg4=YqdOCDZe?pyn+8Ujjd*YOk239 zo-b;kD|x{fzln=A<6EXxrBKx}(=BSawSk`@=H*EZ)$}fMU#(vVCWg;+06E8|0_M%0 zHB+xr-k@P5^#dcWu>yTrUa@>7egJcm*&x#{jrImM6pk0CL3;u^?X9UdwQ0sD@-LZ1 z(T3_eIk+b|EV)MIV$KkzD;J$3s#_&YsNB;eFReuh*5VUyZ`98yw>DL%o>DHRauTAp zC%$}Zerjy3*Re_E*hP0XbWl>^w6m8~UO_aU^`pP$>BbQmwV1S>z;ZTR5QsOP_3Axd zYij}~nI->|c((bWwvWkfiH*r&)t1aC;-qHP);q*4*5< z+B|T|xWguk7a_Je?+RWj*n$&Ua~(0I~&wfG^`b#hQu-VZ3D^qMtw zE&9EIF-J-T=JD49Vl6PRUu-2yi$~P9!ndHLVo_P)!i%GK^9mQvFD#DTmn|wST)4QX zY{9~@NM0-(%P?$^vY?HtWgT~WEmNUB6>K^!RHI=PJBIR{C99&zxRkBbZqj*cjyoSE z`ql9dX`YNbUbdDO{53Z=)ZJmO`(h7yCfKIY$A$jcb@A2YW7&#Jt~Jm4PHOVp)^e%G z^0s4G>a8r1&Nn*$#P;c520xjWX}(GNmg04Enl9D&lC#^F$=9T6gV+KZCE9|ja3yPA z)uGC!MF)@!8TBb?tq;^OiK;n9j%nlSD0PWnuR-azHi4@fQ7_@z(%RJ2*c|Yn+iIq2 zsEX|a8AhS_(Pd~;wN@jHPFyBtLv1jz`_|ad_0e*(jBCs`$wb@S%FYr;v4t{8Ua8)I zrx+HlVL2#=#}`=TSW9T_@mYRgU~N-P^stnE4A>3xg@e!~%~Pri8O#;Y zF>5;H*80n$H~o8j+JLN9(1w;vFNG+To{fxeShb|TEjcTPTFaIv6HdmJR&r}?;spjZ ztef$K8|y1XQF%x}hY2uE%{7roriR1F5-X1WD zJmZIiS+{7w$&zQvc``Z}MCs!kcq`aJc}e;_+WQ!z{T%h9ytsy9_7M+SuFV>QPK`DZ zlsNPvEaF4U>0PV;XDym@uBVaLMy}*>k&4^YEF-Ir+{vD5p5|zhEa*f{b8~BxI4LLA z2h|NHK__uB<#St0bCppmY;CK0DTfXjNp-aOlI5oInBwdTiKeYq&xqiLQDxRcv59@u zu_6V=`~}P6s|X5au*s8i!-b?114E#CtxMs0+KG0aZmnVDdS=X&*p=t}^A(t(t!Lq4 z-rZa#CpRnuqA-TBF#eq&Rq7FIGoFI1#b#pQg!f6lz2rFSyTth}Nk5giM=n{T>KrE@ zBIFWNLl!x?mt213m1vv1RpquC6?js5WG!MWV~Uhk%M>&T=Rk+|M4fV_U89dv?YAb? zll8P-?^O_*t>#71&BTIgDs(`J2qZ3`HWF6Nt^CpPaq@BBRB?v7>Y0h_04x4oP+LPJ zj$h+hE9aPW&{#iRWG!3tNGoeyp`NvhtuVx&O$aNASYr0mlA)TA{?({Nyk5txyICEp zc{*;*9n*h_rLU65tQuNcS4%IiuB&QpoXbK-_BNuXD`C9Jur!}@Qnfe7rS?#XA;^PL zxbZ@UQ>oit?J?JO)|ABlfxNg=SudQ{YJvpOvu4)3SH_!*WbK^djoFFo_R;k!kuKJ5 z(QCrk>Ye0Tzwwh6mX_!SsdkI!#2ZHu3-U9q(Q+B)tmAd8!(d`Z%ZZ!JYF%}%#~KKj zO=an;t#E(TZkzLi8h=b?0ST(hTPV#nzMAkvmrrbO#g4M#UqRTpab*Q_z4D7rCN9on z^nuu3f^M(rXBp4P8jE^j%imv%`AR6GLSSuH^s zYdK@hLNUK3I$l+vCF*3VC6D-Fru0px6MjTk19B*7H8vEJU~#m@zxHbusi{wjjy-Rv zr^xBDSmk5UN6SBXdm&p#srQMZRwI5qB9vy?H8kfLHQackH|@~#jqIyQ2vCh%*|5?3 zE45+NJeZiSIQ8wrGlj9OE#}fFAx{VYkZ#}kUJrO(7V{E35uc_ZAip0+$VD>n@$%N~7B-jE2CXdT^-p{-zCDsuR#IfP9%o$T z*8y0yjH_mktilW_Sv%VJ2UZ3tF z+ypu+*rAN=HMd+^)pDD;f6BI{-aKtA(NWXr#*cCs#p{s4&m+97%cLj~AQdPmUC~;{ z!k33|Wfva(^_dYdnS`V+W_(qesyqxWKN?vjPIFzuB8f0FV&yO-;<|LcT4zTc)k}G_ zuDFOF9pH3askhv3gCrG#GMuUb~{%Gm{xACR*y4^|$ zeBrwx_}bg`)-$rKSRM#Oqjag##UY9j#q!t4Hil_VjCh4L)eecZG&~D;CGhN^37HODn;y-KB?U_huJI3V z)p&hp7&#_BQKZ`$*L_62LdZ_qOLl-T#|RxWywUm|z=Oco zfSyH$k)CN7O~7nm&l1B}1~hIoj80%Fut(B?j{^4rUjVwlU>JvhZNLdxz@>&!4=i0~ z7+ZnHO@`46^Z;K1ZU=rO@MiS$Q{XENqZ?QW+%9m1VN7v?XXmFI*bUqPbTiou0V{zM zT$B&=0rOWv18f3r2Mz&W0#@Dve+EeDt<)dbwwij%eFOYYBVQwVfR$+P3&5r?QpV{( z>_`)^8`ufl2iyj9e~EenOM&CgARRav*aOT5ZU>eFOYbs_O~5wbR>1@J0DIT7-X90N z+c0(khk!2ujUd;+TwvCC@&i4j$oLH9Zl+$qAz&r2=PQQM4$S`=d4RpZkAS6LM@|#C2bKcczCpX?{+q}P=>8UZ zaVF&fCjgs(xxhA{57+}-BI(~Yj3 z^MTuerNCXlO5g!t6YvmlJJ9$n{DI?uL%9EHFR&Z<0&x2;Nb^viCmEN(wx`fbV9(RY5Lnp@ zuXFi(#xQ08J-||6H*gEEcNg^#xEpzYp0s}Y9oY0MXn>yoHjKT%p}pwkdEEb+Isx;6 zK43R+3DDR_R{+~yFpR^%?SDY-*_8h$@&k>R(A!Dm2WA6@{zChJO@E~xz6F3pr_L^Z-1G`^`2Izhh`CR}WI2AYqtOl08LtbDH@FigH z$HbX(D0djW0(xvV;}KwfhRqlP9t4gfdX;~w&6o;o1C|1fESs?o=yBVOJ-~gy!@!=? zY{rC(z@Kh2%7Mms=zu*FY{oXA`%LJ8L%`R7-DlYh<6`cC6M>bVg+I`kXfwKj-Dlg3 zUBH9D*MPYmn~^)2`hFh1zQY{m>=H?UUjFSQx%z+T`sU{9XSn0y)eFQ*+q&y_Z#6Sxn!1DJo6&DaNY zUroIv9e50w3mlgV-Bj`cjcaVi3&39BG2lVqxIFmJpdG-{nUpX0*V>FN!0o{8!0tIV z;}Fo}M=qDcXRght1bXICPhdCjQQ$$~9$?!d=)$hjK+_t4M4Uf?F+K41^;VRV+ku_HUf>p>u?hJC-CgJvuo8FxSb8u0GL3vd zA8;SA5}1D<`G7{Z&FBR-0S^FsfW~zA+)q7#J-{h){{a0CJOg+LIuEd(`&?ifFdw)X zSPI+<><0D%-4CKCk`5dKRsz$np*f9%)F0Rj z+ykuKf?fmn0X^3Ozlq#{rQbsC!2EABUVz;_$V2YGL;qh#eqbqZ`*+bFVCnae2e1eD z0&pL22$=tU#z{W(z$T#Q2j~m13D^s){12Pq_Hqx*2D*QO{DB@|Eif0j4p{mI;}p34 zEy|xoeGbtcU=OejXuM6kfcd~}!0o^Tz#-s}q`!mQ3*ZA>2CM`&0h@sBKw}8`%RMm5 zM}2|Wz}$aO4lp0s4wTP04Gh~I3k};Ex9zi8r(}pa34S7f2aAYl3XSg+w*dK)A$SbD zLlAs~&d=XraH7_R*XiD9FZk4$7MO7>>9zcgn~UiHM$_$uia_{v^5-M*+%%m&%Q?a8 z^!S|l!Ss96HrmsAZBCEZIboL5?R92&o%v81IsEnVH>1QbZU!2Dr+bqfs*P#n4W`>m zg^7EXlS)W?4)NCnZK=>MbGnz2Ani$~y<5Rg5Ii5LFH?l^D7Z>N%y)X0j&)|t$*dGs ziWer;I81uJq?bG0i%60Bl!Bi)pK=6$z0)1E&vWKBj#bt6WfmzoyHD3)9ki9uzAv=2 zEWYkOXRh5pRwQ6Hp(wL5@pg6mtuGT6BKv*t%vt~xo=c=3;1Eok4Z9o1DqhI1AhVe3 z0#zA*<`QQ{-)@mlmK_}=?^elcZ+E)OoEajMZ17VN+Bt$pph3GxPRl8uv>BuYC2gM5 zZC`?*3Nz;kfykqh^lhZ8Hmbb#yP)u9+VcVa%-M<@e*oG|(6(J~7!9<+SmAWvYoFts z(3Mu`^lVD^I&(HUik!K@G4=<>I&Gz6K^xpOk@MM)@sW~rj_TQuIj-Ftui8`w(U z9;Temg-oYh8$PE;s_e_WUbU$W)Hrl-E9pn19+YvfowDNVQ6Tj|H|^WUI&-O6Qf;ci z`Vz6Uw`wGIR^|fDfJ#K0Gdpt$#Xd|OvdazQ7b)rh?~M+x)L{;F_})mqg_-srXvXn1 zD-s>a=I=1PI~VCODSZ}1&YoMfj?Pl*pvU;cbo2HUKgnC6ZHKl| zXk&dcE2WOS#FWjbCYV0s@FIS+YZw2Fw-}R zO$nyKhx(brrhv9ez4D>Wx`FYIOr>7;iLTt6M!mYyXE}2=Nk45I<8@9Ap5k*>+Jj@A zQ_&uD28w8x!)zJZH^D3S3x@Hkl&g3Z3NQ4(E4@&7VH7r^ckq&q{|da|p2Vv#vn&<5 z5|)SH-wXeX(Em6Y#>SVDVcI+!Qj8ZGqbX^8c{63i&5diq9OU7HZRr@=L1X@#Ybhh% zrrCX3RT#5{nE|fns7@-#`~uf=)wLHk%8oq@pK&*_evIbFVeEHkedf2keZqInB5 zZ_ya!Kpwcw%3KJBTu}_Q6FdF_{Exw3*=wKEeIp~z1O5h&Zf!QZ2r9mEvoh@uC!tUXsY@mNvTjlCsbS1<_Sl=98G>H} zehT<2xmNhq&I~t~-Qbsj&k{Tz!94CC z+s!`TBy;OV>GNPZT^&_P#)f%aEaT*a*LOlgcc@{}O*xw>r}I|yL&m9^GrvSVW@X|= zU_Wd4o~N#_&n)1&B$Jti0j0kesZ@KR0(1B-$}CgK`dee@J~GttJty;e_05!pgv9Xr zGsV@xOzUqk*3w@&W0^Nrn>JJWak=iVeDGNfj00%oBQh=rmjO=65&e@QWZ+0&Hjy@w zw9g4KpKSix!R3J4Ac&hq8*9h*IWy*FddWB^^9HV!t=$G)H+0SE(4m|6$+$6XZOlFv zXj@yF=CG$Ukp4_R*^j|%SF>T9iA_xAH79CoEnfDcuwqmu*;*PkmF(htJ$yTRA5pzv z)NV|}wgl7ZGqeBwnfCkjjbA21@=4pZ(( zm_CV`|6=}ty-iz$I16TfR1eG|%WM>6=D_b5{H8F$t>;>gA9Ie&S5{h&pIMp8re`x4 zJE479%3dh;YJ^S5O>37~!`p|&+D%D&QRiPv3vLnTa__Izn3dSHXC3pt@KIw{m5DZG z*uSeqLu(5}F-2xd0x~WiAz$s641*AaIUe-56r1G%wM*(p`XiE#Utf>f_%m^LQJzLq zcOuY?yUQ>hiq6xc&aFOYlYMte)nT3%*-iNr_1Rz;urrJsoSqtI4o?1JZHp;&Hhw9xKNpVJ$|qcQuk_j9Dv7lT+2svdJVYrjhy!ogxFJ2TJnnGNczL1PdQHd z4$`YfNtZGYkiMDpF~XmZ;0}T7PQppTrX<`raGgmw+0SWD!p#8JmV_$>w+>vs6v~HN zqnfX+;Bpm4l9t{2?JHg4#ecpHc1HP<|1ixb>aZzi)^LKmBIe+hm) z_r&59+!{lCZHdEqz@?vtyusbZwO$X|Wg2C1%B)$(Zg0pANoS5X3Q}{)|T!%BG(ASk9QP4JxW++e^L~ zA-hoE0;_P05otM!grJE`@Kxppd*MdZ|x z>z&z|_RT31=4Og7a*#5z?lp|7q)uvn4Jg|zeI|Q~xuj)C8XxH&_ZhSWoLU>=8J9yX zv^n5?7GCK1n*pv89K%X|1Xl`f88}rQ_c{DkgX;w6mv$<9O>C^_zO;MOyBwRw1W&R5 zdMt6U*{Z(X&~CdgKGs5bhHQTRwvo1-G^S9~elripuQlW4m2W4;BW4=g7Qfak)PC?W zc)bQMwj?A5;!Zo)7M0651aYjJ?Gh=6k7_@-^!xQ1&%(_Bmk+K@5PVeo!EFPVtx*bB z4Q>xOOC}!D)_^+j5`fnUc>%O)B0(0pVdzu3(K)V0ihVc`#ocI_)+7E1&!>nZA1MS|P*m(|- z*Q4O}fNSDfw^6O1ahx}%qwPV76W*?;glH4zNF<2JRTM$iV#)s*^rD9`Z}y`puX(}? z*#{lP&fK(Lif@ZMAI%ImF!AgpxF+&1h2P%q8peky7e&!@)zCh~Sa zVi-(;;uCadm`;JTc`Iq@-$$RLHa(^zNpYq*&Y=wZ8^_U+!|*!r1LQB|pd*`P?QE`B z>=Kv3d%;etwV}*Bbek-ZmArB>s>NFkW2f1^_&GYZ4oO>Twvb9v0L;9ZOaM8=842m? zwQfnKjIB2K?fs!)oF{eRBe>1rBH*mCE4Z!T4udNdB0eIMC&1<0wW>9@ zrF}{2Hga+!kh>yfrLp4JDgJsXr}(Fa@o#21@%<6=nPkwHjEo4+$y@`H=FzBVPZeaQ zT|sSf$sLcT#Ho~*dlr7$qu6G%yb)_b;$CT0I1~wj(sOY=d53;s7)-mST_{#_j>uom zqZ}q}SK_!)@~0+h+}QsD+xTJV%_J})1);xM&E|<*viXzqD}fz`(ZaRZAafr?{Pr5l zheCbSxt6`qEs|@-CU!%`DkN>Ep$(#lD@*-TU08OmeQI=qDR zM@ScwE+5h1dT>49915f7(l&5gz&&m1-6s3&sLwP6lBUqs}`HdAUnupdtBRBc1kX;6f`>qnP;ewxc1(Q(SZJgJwxvaOV0 z6;omKT)c)d4>Lhji7eFIj%^?gtXKWoZ`uM)ey?HNV$y6B*{C=?F))#cb_0|x*aK}l zv`bEb7+pAi96s&rw3NfjuVN$PnEW5^H+>y=ZIXScjcLp;!Sn{JD=0?BUp}-?K>Had zH})0BEm(q+X|qy~bZ=(bKgNm;=wsyV#%0^fko+}j{Tn*|d0852nQW)L`rjMIkEE}Z zUeh5;CTV$aHl;F0wc{mdhyGv~Y+onR=Gv>Hqy(?TmS&v8csW2jMw6fNEzLDUsXd%h zeDLzXs~lebm(gpkjT(vP*=4!p%bbt%-)HteG`pa=L1Z%cf!umyd$a0slp@K?yQY?TW^(q+JK0UH2;fv^l=w^&-i)@)7gE!lVdo zFs`NC$)98XdBZTi!?o5~%n7QfC&=IAV3hs;Bt2OP5*tZ?z-9_HtMrFX#FqkHhc^MYeLa)gVLbvWM!}x~y4N6w5 zJ!ajPR(NlEv0irUT&!gnY7&6OZe2!x4WWOYS22(PTG7po#mi+hGxKZPqF=Vb&sh+(f-sF-C(_-YD zi@g6qv$CNyu_MTx}oyaR` zA28}WTqG7{WIRsCc@M(t(EG^VM!i)3Bg$YJ{;hpORKB#al;o_>Gd7Q!bDEk%V*BsP zx1*5Y7^1TYV)bP*KQk*w9f;^&`xJOq!gDe_Zxa1evZj1f)^nZvY-vBG_MYejr~I0H zNFOF&`3LxYQtwoKOh@VcZvtn@z6ucrDf=aO^nPd#xP7_LZhtbR{AXu+;8h8)Cq6ceKXPqUC|metG^dXck}Or#xN3)H z%_o>jp`nk0q8-fjVsm;(+e=y?nr4@s9G}|yv36;2&}Dq?h1N4{7`Ml0TSY;|UPMT1 zC+)jtTAV-hkTtf}k>-Xt%di=LmdYjR@m$##VQm#%*H#iWpzRzkK?UN24D1IUODPmz z=FQ+oI=X6oA@%I$tDX(E8_aqJ?QG#;Em%G9O+&%U7~TQhBhY;&jT@y`u`x`2(k{aV z6}J#^s@2D2$PSUG+rgPCu9NfFWfKmwRiaIkntvuvLLOsmMxD@$=UA;{*;ByRf`3l% zeBAu`!DX`!4WH_kNi9FM0^+;jg?ozxC z4nVQj(YM>Luce>lJZ>PvW?Y=2pOn3c^%ENcY0lLBMDUCqqZIuy`*{82q5P@m)84VR zXk1*KA+g`5XCHIESO!fmG`QkQesV@iKBB8@NZUo)&jq0z-5;q`8Mm8BtIgyrp`@w4 zjqS5?!o%!S)<$vXyF@4UlJ6k-W}D+SKCZx`*k*qnoq(0ri6XWBlugQyvTRYGd@6k8 ztnx8%znAJ#ewV#m_UBpdNB8zi({4ec35$`rnWAH*1Z{`A9$YQciuY%@8vvAHlrKTZph_^^7*b8yBIk;5~8;ekpj>|KJ}1FYT0%&`t)o9o$udm_rZW>dctP zr4Rf8@G^FEKQcM5bh_u5WmJ=XjPxQ&rwrMX^>Ha@@pJPylWXd&X#(*q-D;~GkgA}hJ=w3Z51{j zHJ)ZnrvK(MpGy1Le~mxKMEms_sP~i1B&Rj+ND30j0fB5-Y=U3+0-HfN#2n-5Ob;4k z-)6aJqGOLjms4spt`IskKPVfE4;oA-%4M3^SsX$&FNKbe==BhJCzCgRyrf^E`HfLj znr;HP>?FF$;5^`@x$+Ty`QRpk)0(CAu^ik4aOS+{mXoD2e(KHqpO(z%^IQ|(4qn<5 zj~Cusz~_RO(1OqlPM#l;`p4IGmzm$HgU}rSmt6lt;H3WXbjGE+{#Tg-k-X!;`O9nu z)3f>rE(e^i+#JK)OFzgnD{bIj5h~RWF(1s{6YYqi%z1ju;)p5Tp$m*PTsCGEUSdp^ZGJ-R=$p_#haW-J#P&Q#w;$s&^(;Jd-+ z3Z9SPO2K_@iOo1wVf5Z{HMobNQ}x5uBOW4Qj>1fwP07Mt;(i{*&zHuNGW6IKnaNBe-?oD#0ne=U#B# z;OgV(a=<+TZVkBETr=;)=6=sDma5D`P1KriAGBMbZ4=rgom?4J$pTqVn8snYT4!bC zAt&t8>jgs|?JMX!lHN)BIG&SA#Z%I^l3q@_m0#9Fg=U#P()Wo$1^DdHptLVpEr-z7)p3xUDuHj2k8+7$2LAO=PI|;gd&`rGQ_~oJ^#xdvu z&~26aHA($A@vS%*mm=*1S7l4r|ubB%qwZc8b9SVB2RLYZ2?%m{KZE0ZNR z(Ay{S+C*OWisSd4(8)7_wa~rBbxdBSVCQAlN^PXQFF}`EmDpdowUkWt{js{p(ptrL zv#!McL9gtLvK_It8{#zWg^qVlg?1OTxK!p@YV6`!c~IiE2%#+?sen7H~>K{xV>ZGM6Le)2Pg8%EkR zo725m*(T}JA<{Ojv>9HmwVflzr}ht)=oTUyd1^w==5wk1ylf_ft>ig0hCH_f&<1%{==oA^ zgQsj9v&qrLBWU;8(`FD-nmTeZHa9aL)_(X`Kf?2P>D(Zr(bg0BX`QkZNHV~)6c2g! zw2gr0Z%w@!oyQX?*CZl?eejt0BU{3mq}RYr0JoTQ`HbW5nA8{CwSrizpM{gT*3BT^ z1inG=i)8!~DmKT=oXojSH&d4E;Rufz(C$m(Q4GEu{4wxj%yyXitIlVry!q7Ls z2)Nh4eOYjnm~u=Jo0NGmS|_$I6Gxf0aZ}ik%3;xSi}1oM#yzRySx!SKHbn5R~mz@>49Zdn< z;Ro~dqh5~@alrEFFJI>|o@zYLW90Ql(m{lwRrisVsF`HI0WzNUpB*Fn3lbBu$YGO0 z&WAmH@M>88l%%JBaWPk0MXXd%bQRt!`CMwr!*xUNyMEV2z5Xu0&2__ba{b)9uA6th z>smsFcU`CP?GN_aEjrTnkXEeH`1a2MHDQw6PkZ~&7wI)v+aRK)%}7f-|x`>gAKH+-Ac=hrv1=M+CtK5 zt+aP8vg&gnpR}t;E4I>p7fpNmD$>p(E!Rr>uV~t;Nme_M)xZ@Dh}h6oS7FE3Im+cN zUsTr7d)F*~=;OQ>Loa(nFGb#Cw&>_>z04n;@|WD_vkia8k-+Eup?4zFX=X=nV4^?R zXPb8RGIFo~bxeP~PrO4RzRDS(Xl^pRbKCrXVL?w^sRJ#4ui)S z%?SP~Jv9DzBu8#LAcY0Sgd9(BOaEtJAlm35qu=pwV20qiL%vW6$Aya_fjWKo;L2`) zfA713x5iJ{akrG$8<e%-VssFjL5j(s~Y?*s8}Q-1W&?CP`yFq9kSgv_^%OBKm7HV3V~}`h z*-FBljkxX&JJLIcRdKTX9u;Ui+jL-I;!q8vE@OhtZ_6A>bw_X$cFwJ$3!be*d zlUIp9>^tD`hYF=%+*Z$8@(I4@4!unN+i#0pPYu1HU5NM(A;;k^C5937mb@SNol-A1 z%(F8Fw;(J%AA}r_krOtFh0(5WftSwoJ|W)&jeODme#b`eT!WYIfgAXWv!`K4GwD{l zgTplRYY2d8=l!zKhokApa({5<&N57Q;JRPRsE_G)=vN!ZKT1mb{?^0(st^64`ePnZ zsF@Ea@>6y@z9JXYe!|k5(0_|Y5P7|zOue?`uw}oJ!}D4Wo!$M8U+@^bv_$tG`p>J`{--3%S6?^CDWMNS$2Ppm?fOY=e6?2jtM>c5#yuc^ z;c>rT$7t@@|CrFbe9xHUV8ff-UKbqBTffa;#ax~KG=FX3^k=tJPmL|Z*&2rh>om#@J+aT35Zx!McSc~#B~F2bM6g}UQ8SNpZxc^CguTubkwBJ4*w z!|3CuKgPQ$^N0Ta-oLrN+B=a`c&_$)A@PMLy&19_g&nWC?)?MzOwIR|(j!v9Ztlb5 zw{Y9B-_^c@yT|=ClZ?W=BZIlxZhC{eZH3bgyV}2@vRn#km8Z!TQZ}Q%3+4&a-$7}uVv-vlC*an%a{YF^OE#JTp>fV`Q z_RetNkHWT5v;A-H2E2EptuRy*V{6K}IP`a!6l=8By|VPCkmH}77%*LSzazqp2-zCV z2e^-oX7pcXDZH|*$laf)_Bcb19ngrqU=V3%@|2Gxsr7Y*jO#4Yy^EzQKBg-$XfSh! zKgV!eyg-!Q)%l$CSZH@w;Xi`MY_~arAKPy~SFHYq*Jw|E$BSz`(mfqVx$Ae#G^=VF zQVf%^vYYhQTZ13lT!9l^oKisCRmaF|q$t$Sd!o1h4BF#BWX@@ubC4>39W-fx_GBOd#(WSC1z+uQL zs@m76>QFI-y<73jtc%+eS^M$5RmJF|uEG>*LuG`yR zNNrSgRO?B!6jjaNW_sH|84RU=pHP;jkUQ;K4NT`UHXljZ= z%S)6FbljqP!qxe8iY=~sZ*DmKeQ8d(P1ei|pi_g#-f(qDe{Fajl6+VD4*=fqjBMmm zLL1~Vl1{sPae}efSW?+7Qjx>Qkw5#jRFp`Rn;!WpRq^7)Ae6nNYM~58dtSyR4!n26 z8&ZD9i+7z`C`R}{xkLDBwn(b&LnJ{HIFtFWLk}?TQ^;j_@O$RC^rAX}6&qd$x8AE1 z_Spo5ebyHIc>VfbOJM^m3R7t7pEmrOg3#6>Z)kFMg0@=oo3}q5eK*<$E}$goucyTS z9XM0n`DnJP*1)OUd!JHW`3b5M>%XvLf4k^=U_K^P{1JD|XU+A80^+mMPS!h--`=kJ zi&^)pWKp&0>(<`u;$KM;1_E`=7~D@i`W+1r#Vn0g-$iB0*UX5N)goQWT_j!fY$Sc2 z;^4t1WQPlcf*cBeId_35&rTe z{AYsTQk!Z)OinCNk53tIvRc}I7enrF=wn~kEyH;)4xVB80bK>Q;%S3{t7)1yJY`Gh z9dGEbk;Sm3$**?2*oyt#EwjY$?v`0XRLh*C+Nn2Mop)p@NXsU4i<25Us`Nt563dRM zsUTDA4m$BM%A_^HEMIy1=*)27O7tmwUF6o4THFf|h%GQRTsyVn?N;=uKXN_#)So6T zRy`e2{%XJDDk>((C*^DKHIr|@;~elJswd@ZaBsikQy`>spHw~kxH)g%pe&MJb>y&s znJBG_yk4Vf;cB0nhIOcwj%U`q4`U#9<9X9W2`mm@TwL{fakwR;C|sC7H#p;<;p+Gn zE_Ha`RGg4||0dowE$@RPB4vI0c#o9O_XLLf8JRe)hf8RD%LX+@a&R+EVR|dX-$aTN zCI9!xA1;^coqkLcE7ULfs|u!s%S!#>mL>l1ot~KCFU9Z+@7AqH3Yyvi#o>YgYq!F} zyy3yqO!*WA`)$5ycLwgFLcvZdL>aTf<92Y@&E2f|*|X09;Xc_Jp~ii3hR1ud79QxP@xY$R6%C%qqIt zPoYa_g2KxbX3-9JXFx+Sv^py|WDo5OK4*h-Xr9~EF$tM%ZF6<(LZ6h}`_m6no-yz< z5MrOnM}>lW?4bhpz#|ITCIphHff7|FYBsQ(8|=fAmYuldt@YT6w+5P29wR){sqUYm zKqK<^pO~H2F^^=*kj6yIv3Oc7kXGrIiqd=+2I290?y?) z&ipn=5kq9fb~?qBi^VZnCc!;6+7~Z?(D;j}@4!#trN+PN0ZTX!DQp`R!CrkrK{7NR zldpjdDhavGJVz?P0{&GhCej~A1MR5_+6m!6k(m$s$1R+O)jT?o2fp9&b#OA;9+R(u zv%z_9@P?lEE-ngvV!Grdp}mWWL(ejs{0^&;LFi+~q#mgIMK6XUo0x+{dS9i^q@}C0 z@YKSN;k(xOLLc}sR%d>wOw5|p{%`?H{CpyBW(B^d@wnfE4`Ua?S32*Mv6{tqr19US zA6h>fp83x^xb5Ah${qMLifZ`_A;*uPqTsB;ab|FX4io`xYGWIcpWrp^UY?Hek7f>gcdzZ&93!o z#TLE58Cq7t>aJblUE!PD!N1vC&-GU=LKR!l&^J}L<-;&`uq7c@%j24k8>aE^IH*0 zzvBnsL_AN*S8{Z7Ww&^vUbXZy{rWqXnG))!{dihMD8@UHN!Lkrbrh@P?KSiK9WT1t z#cp|z6e5}Hz2U;CxHOZx{LJL7{=DA7Q!Rbihw0kww~b@LUuyGD+tYeThR!2|Bv5dP z*TP(7tc4>E125z;>RB=k~hk)=D4#Z-;a z@rtrGgWv3TeCPH!$qYWw@8|{*70ciTDy#J`swy)1MH-fx!cc3;Dr=a0=33JNx;oY& z14hc1l&17>qvVmt%&4Q3;V~Qw8J7#$xQ~N=z_&cu75J&3gR6f=|M7AU*>Ta1w4xumMYa{pHNQt3m zm0>@N(#5cgYEGM>b^Q&viDkbrTF>seH{^3M-I9D?CwrD zGRIB3|3i`s(({fW6*onUi_}YDUFF&CryO+g+;Enj_n7nUUxJcr;dK6un#zvGgivkm zz;te+78*YPQFlW{lIB*S9Mo95%SLWv9DrN=!(d(#g@$J9lE-oP0+*NW9o`y)zM_J z3OOF-!RSyy`oKgGw>(h(B82GpO$q)RwjWh7xz1YTM6Qr5O_a zdoNu|ojGGF7g~xxh5i-`6Ld{Y>*FSBnt9_ng zG0W|rwy*Wf!HL?=T$AByzfvXSOG3cGsA(Ng{4?Oc+wpsO>{g7J2wNRo$cP+aKGLe) zk)f(hs%f`~^$sjy5o7w<$orq=OmwDQx|@E^zN(hU z5nDqACP-UFq#nF#w_M~z4#7MsQ5lD7HjNHGQ6|EM1rwxz_TCS~WuTPU{1Bd>Kb*CEF|bs>!Iy$MDk$1D&7 z3%Tqz`ClbyF-gi)oCVuFI@@tAWhJnF3_4{e9K#Kwv>5|gV6=Vz&obS5ZPz4lBo1G= zjDhuLi26oKuhIhjm=03{ttW3$)k}VJ^41zmf6pXuRD-v$P+}1*X8n0G5=i4fO@BsY z;m&9uXTwL)69K%#*PzXZBO|Fd$u=i=rQ_YlU z>BIdT#T4s&tyTShCr{$&bGzCJV;SZI=HXHexYdFavy9Kd4zx1O6C%Hra#T$xQq!oC zB-XTZ8v#V=#Ev0|2EN6ewv*RJysDnoJhF#YST%ifimvHqa7xf=BWj8?|46DOWmV1H zAVkcy0*Pv!OJV--Ju<>AQ*m~*&d`ij=Z?)PBQ@L5q|HQsn=p~jz)P$GMPJ4QkJ(-K zJjGqeaVG-uqlq{R{*dEO-?AA4KPSPAUAIZT(Af(i!tomT1}SmlW2;Pt17D8HMc+rH z2BCd$yW&dc41<&^)o&2?KNj##zMJ;i2e( zM-s}9MgP^vmlG=lYhXXnEaO<#zx4^{AYLNeWbO>Dh7;#MNS6?l_X!nVKJ4@xH{ev^|uV*zz5v*J3KI;!ElxDft8ADCdfgBl<$G- z74irI`ny8P_rMG(DztClcd((K{2LC5SqpuT*Za$Jm25cda`Zj_kFgH9-{b%l;xt0z zvc=kEMDC@|{tde%hZ*lT^Ls=8G#M0y4i<;{VGx>?q=ueAUu%$#J(<47*SKi9pr?Mj_yp#e)=k$8{>*C+%4M!H~x}1sB-jcI@ZEAVK>Vm~c8@!Dj(oKVJbDlw+znG-yPqR$p zQk|o(ThXb_ly=F+Nic~o_^aMx8^Wz$@Osd$6E{V-MdwU z;Rj%>09O&6XN3fOg4S^}L517IjirVo@Zz(j!jBsTFRj(|lpnbG>7MW;7V?$DJfB8b za>v)?$cn4I6%m9Sx70B=-NL0Rx8Jdtd+vsp?vQUQuA}5IPyi+_`anOFvCP2_7K7`^ zAtwrOYH)bGtK+{w1&1fP?jZ!iSrL{rtY`9l)_R7>hy9eL?9YiWbAx2RHgb?Kzl`Vh zP2Bs#-D1Pom1%Qr?)8VtGF-o44W{TX(Dd6a`ekz8HUv4ALsn{W`X&62GCttnX3mm>t|K|4}>3{@?{po7X^`D%ls^* zt2mgHyWXTb#iIL}qN`7)Lf7@{TG-QP-UrPwk-t{lPa8D#1+0 zH>yF0f***IUHBn~tuFlQhCVqRuyZgi^r!dy-;b9^*zwR}y~U^XS+(bnlC^)#6KF|7 z{h!wO&iiBdu;ctiBl3S0I^^qNk5u*FUdgBX54rA)oFd(~R0ONeGu;|?T(Xk3jtM)? z6*xOR?C@~WKRb(z+$$+Y*S&#j!Va6FOTwQ=ncL>7G6T!};nEBW3!lC-l0ivythtZ5 zk*uQ0N}UDQCWX-Mz~91-FACo=2=Rrl;^mnobN&Z(bZ=M|{$3DbWz21DKY_qzqKq|BPjxE&tasmy%-p!72>%Cd+0qq%>fvgg_{8Urk(rgKtIGhk3mn z!|Nv;efgT1{{h8%aZta;g&c$mryuL<=DaGm9lh&sJ9^+6$Crhsp2NMZLi2DLI}bYv zZ3Qm$vy~B^`8l=~WI5pAZC9;l`$KTjR-hzbl8Ht>jq*dc2l`Kceykd(+|5+Ee= zs}dMDGYpKk=o7ai@(pwUg|LVm!YB#tS`_-doWq$AdDpKR?P?#BE}m4A4mux=eEni= zQkOCZ$T^438@Z5O0z9R6xtv6NNtTKku8w=Tl|vUyK8G(;xjNqjC7T*8D(RoWSMpmk zxbJv`OawV`82h*iw*&;amrF{xSAKk_I2@LUXyG*%y4uSnbJtzNC0*C2tMiRM)|pwd zg*kY>*^kAcKNfeTcS$!Fcim_!=~|fXn|7HtUB#h4g??2u?fKR}Py2(beE?$<{JX8V z>KU^L4lQKO?aF#q@)qqpXrI?L!&V&rMw_q-KiCQIhkw=$n8rrrUFE@NY@AQD>`zfR z>vym!3KjqEm^YmDfHze9z(?V%heE{9!+~5CE_|AZzY+Vb6yY3jC_RsadN-mCB zAd>=&g8p=B$M$P~I!k(fxY<1X(l5(#mJ@e21#b=5ibGXvyhqw(V}?H9fj6R}{rRpA z9?50rQXGnxS+?s9Tf8HYZ&_f&yrwpI&~Ze+?)8FH`V`#bW(ScaO$Lh25m0NRD>^Q# zhB$`#z7+4j@LiU^ERn|j;pnVfe79j&2TvKOZfreGO{`tqN(j3{%4`W()%Q-@E;FF( z-s>ct4t_&wQr0Ag^v(md;ng+}_?KKGa^3G2x!Rk#r`y#Unl+DY@C^3D=W@=j{>vY^ z+ILEwLca?AwzwhfzHnjM;aYOo-{Qy$?qA**`dADV(| zq55`KX!2MtrGICI(#QHjcQz%+x1)#I2Kjm0-dvCHBpm_XCmYYfA$Na46B(K2I0jR& zMlJ`olM=H>dC%qTFU)&xV6}(~|INSim9&9x5w@`G9wFL+DiZZUoNiy}%DUyUPsPEQ zff_Z@wF%qctNE_>gWUH!3Q5Pkm($i60tc>DWP1JxIW8huhU35miuyC$LZqk#4!A+* z?H~9DR#ApQ=y|DNZ{Bk<3Po_Cvt_Cusa+#Z=(H;|l#_ z(5$o+THwGVpcDNQu|G%6Lx7<_ddmyh{tf+FSs-zPeagdJg`rau*OQnc_P&@$#M<1( z-4DguxH^7@NPOWI;-^O=|2!Y1>UDKAlA;V$6Bo(~!7M9s3-&8qoSg+pr-V2B$J6M* z81Io?`GFf`do&=M%+22Lq6uBipKRb56u-Ehv4LsbZnR!i$Y3t&S~Rt2=PQmP+i#=u zLGiR-1+EQW&T#j1-Sx?aVU_Ex4WCG^z^na^&I&VF{1oz$gDev`Jrg(VIHN&0laSh) z--XNE!B;(}eh_%h7k=;%4VG2hBfz4nKj6LoUbc6A(;ml#dCp^WSo#g}?8qE$v3 z<7$`RoRW~YKy2PY(!63;7jy5$A|;P6@3i_5?%0C9Bl^qA;1di$R@ z8UP5zaJDst_^$4qKBnJ z#HjlyH#opqnw=acO)9^r-!~pIHVM+%!9iU8@>)s-rwi<-Rp@c%_f&WNSXkP;M|T-C z%+;}vvEvK9!i*U>iyqH=&gye>OP)u=cD^#k7kV}L>QoFddA-5C86{P_eIdmU32ErR-e+$qdzj7MfQadX7u}?H3&!xCd0;5iF>f{C>w*$taf7`;@YuV^v{y zgA@a49I<-IT-!191^Tz2UOX>D^Zdn_HbTYbDlmc*!o%gUl@?zbfWd5u#I+c z_?2krk)2q}0q&0MbO)~R(su#Q|6NoRZqJsv^_mHRH9V7-9(;@OHLiOwOX3{dPh0X) zphAMr?*?D-NWRV4%IxgF>jKGoP-k5opY>EL-wi}!THg)*m5usHtzQ{rwdEv72Os`| z933>*zqlG}WP%C(mF0Q^G7-}~U1T9Omx3P~xSLz6zmMd}gv1Pm6Zcl+Nu;I=Niz$< z!VV99t>1AOg-F+^qYat z;%d>6-qu&F1a*Gh+`*3Y&NRD7W}aewp2tV4YCU>FlE)G_rt9kDck{&Y3O&n#4Oa)h z-ePb}rj+@MDdx!faf5|1e*tUgo%VM&1j0e-Dm63b?I(g9&W+>~c%iN@g&eb~t2Jq8 zxx$`fJIjlzo@L#k#=Yqv21>#|R_5jP{MK2%@Xw@2rBvtO6wz<9yd26qsLB&jqrRA) zSHl^R5(WcB{%J65`78ML$JB;pYdNuB^Ni7*oO8>;j!0kLjKF0Da5{@9?%UOmPrS|2!YhL%MD) zr%qL!I(6#QsZ(m6TVr6a#fy2+U? z)SX~JAF;C|yO3fXgZq^l@WI4&5Wza)lznNTky!c)g(t?QJ945Ev({beR*Y=)`cIBk z=Q?WgtrB*Pwy_Q(6HVE%6Vt|G41b~0bTwqlS|#=#ndvLDF_X>8+|&o@eo~-QiH4c} z&t~U1b~omJCE0-=c8m7J@yHZMm=C_8{BO1$rF( zhtNA9QOub|cNgzM^{nf&-jRz5_E@$R*v8D0u%W{Z5+0$$vn5=l!=>DWu?q-WZ>Vbw z`)URhug~m{4D0O;o5`%OXumPX;d@Rp&Db7@E#YFzQpKT%54;^@9*iyYoGz;NCWXOb zGACS>B*;Izbtr#o{=h`)@$@Wi&n&MgEM716Noj-o26a7PW%Q`_hWSvU?zdl&bH=~X zAMh(nalYPk=S#!7Bec{qVrtd&OP3zB4JMC}!A>6+r z5zQ~1%GNu%g@^{|Yv#^eCusG16h%zzyPTSVGOwCSelMBqx5?DRKsfAUX^++KHl1n4 zCTr*|Wf(o=NtY~j*F7#-`VY}lD3=2EU7X>;dM-hGx_z(;mf2_0e&R0B5Lf8vA+e!- zfSNO3RCo#3nGyzC!gU?yd=iJsLoihK(xz(+v38W2ESK2(#fGjKO97~Tjp_P|U`KA% zj;9BBx$k-d)IgSi)ngS|>X%1PGtBJ^{?m{9#FC-7x$%@z^4%c$=)cMQCWkWP?CeMHB?oCmpyb{^!pj-4%7Wx!&g@ zWKMS9E9N+N066BFFY)$q!1GHT+$6UAQ55Lr;>L!@WRQiDl7GBTG&GK;J*fc>`^{FN zpXjk|u6w1hWXPNcSbm=_JMC#jAX6!~a1i6vD1(J+=me6R3d_BaFkr7Exf99_fvYOS zezwAFOIr@fJsLyna7y4N^XM1D3>V~1jFlh+yaUWy|2LO+Vbi2;v1PfHk}WQw&e($m z)4ICr&PfNI+$uuerkq{crdlyITV|1<=x(aaoh)*b!IxEnQe;{*&nk8L$|<*$I5AoG z*j+zWh0n|uhG90bnpBtvE6hFSTEpCdp^}IT$yIu?-6UmWOG+{eo3ekmk9k0m{Fk-< zA*vNhR+#_7pXG)(Gc=DvjVnR}@PqIiZ0Lt;b7*fDozp{KEb{*TXf-a~rA1$<P0wA#Cdgr*ry{dWL4&QR3;w(aP>!U{r{>pc z6q~$K=us-0XqZlATda_M4`hq?sSclPPD5d4QBFblX|JqWsqxrBmX3NrY)*^B=PDTkW-YLDeJ%s{@~`$J7+(ofkwC|*9< z9Fwagb_LO}uH*o7Wh5am1-yXkDSs9NbD6+&r~Vqy+PKv3=K~ATh7RxGDe+lP$&Ev9 zFXql{=NP&+I!Uyv=qsJsBTCVAkCb{YFzS~_&aHs47Kz@OW5)`)-Le1HoRGQ9V2>6L zYmd6i9S-(x!-$O;sY@Z@XO!-+PMhOyrL83&E zIOlLAy8Hx*8SGQCNYp_SKgHun{%XuWoBD_IAK=Jg*xN`k3FNDQsH)`p&w0`-#e&cf zLFjbBC1frSnJaGXD*fOUQ-OT@dyZul3Wc5eA+k=rI@MSbX7f{NnAhpLYvgJ7WEi}w=4uv($P2(*Dk$P)#gXTTkviJwC3Ymx?2~=d}K4I~n zW_4sivz3bT?GR_9ik%!{!b*nzth*x*k z^=Nr7ei!=GiU0UM(pQd}KQnxXqN$*-&0UAsibCWwBR=F)fWQzMn&n50mo;LreKzW5 zF(JWffek~D-P?HCHEc0CjHp#v6V5_PIPBb=GWWz=#+CVHt2nRga(&NH8=q>@hy3@T;}GLDNw*9+C~Js<(WS8J7KHl-Q@u7CLyD z$Vc38f2Fhh@!!LDc7{JQ3;(JA5BN;MV^CHcog9^r_Hh19;cUz0yg7pOQFF8CkOOj& zJYar;0Q8?LWY1BGdDL@kf_B@lW6Z%I=F2`H;QRNC?U`{*%VFGX>@B*9??c(mr!QlFNUQ+l!Zj>QKX~ z&S$An<%8DIf!Kleh})?87!?*H@r1*7OawhjqQqyE%-CceqXkOEC`v`zKij@a1CE}M za2cQ^V-9iV>cdZAD73q>MEO;bBiZZO9eX>Yp88vszsNx&+_u=zihZK^jbQC^I}b3S>j4t!!-4xtUY6s@V(vzAnj%` z>o{tKj#j3>i0`~c{NLd97I^+6Bi$!AU^jX+HlxgDy>2927x83^jD;Q$ zDSx6+jK4(}0an{Afg%PcrLzAyEWhPCmhX=9ZZ(bM_N&-O$i7nuTBQ5$>9CNAAuDHe zdk9->5%s|xo;2*GY&|nJf?`d>LAgld34+BdLy0AV;NFn??N5W8*NI~E>h=ovq7BGy zH-$M+DQ?c_2Lkh{(~&wk`yD%Q^#0WW_wy|+yZeV?%{hU(gOO9ptPu|deBVX4lv`tp z0<-tl zq$eKo^7X4o;UE$`1he)M>09Ov+RIMo`p?$&pD99${lV+P2CI8vgAKz--atb%A5!Hd zF3k_qa2k?RIhp9xp5&q*SNm8ZB3guNhaoi%S~f4n9p=M8+R#*e{czVfv{}=~;jG5$ zaS1`(C6w~NCCFY>iM||WoMu=(xf|4{qko_YBi54dI}qs;^yNhN48P17O?9#_(sFb_ z{iNn|U+F5Nsx3W9a2_KEl}6YaqBN``GZY4_da)7uGUSdV?7#ERTZcLE_TwGyp)*gZ+%^zJ!IkW@Z_qqUPm&;sXU;;W&^{vj+GMqF!{^|g|xWqVh4 ztOfQq;=_n^-mv8?;PgSH*j$l}JmhR9Co*x^x~?GKU3VvRizkCjU?tXJ74`c{-H#`_ zB`Q!bKHl6dAsmI@0~iTNLTT;+cYQa=8Sz>+UPaV2LYsww%m%=t_+A-`J5k5hE9%MF zLr6%+P@$&@kvxLPW!cCT+0dGFD1ib4j&Ig)CITiYSWYJ>=N<78%HYEolz?as8Hv(D z5*&%rBKa{)ME7Z|jMHfEw0v`#HxM7irfjj{YrS^~M?L$Bn?s4k0zIP_hx!)EH)vsi zQJHHV%K0dqb0};Aq0$q-C`a~ll>Uqp_e6Q6sthZ7ego}K7-%dlHfh#$FG4=@Ao}=> z7nf_ zJa?w^Fs^w83|Zs^E(&)fUw(LUyCfsFW=fxPc=GayhlYiPc8*smPC#Nog{`ZdON7`x z^0D3iE+k5X-S%F7^#=MBdM#{j63`GdBo@v#<3ln@Gq`gh@tL+HkD`d?V@B0zoD}p{ z^HD7&nR`%q#m%v%SLmS}D6eC^L(_gW6f0WxF$>q8e;Qw}bzfiy!WDDjCEd zo8|iTNcdJ&zq{qf8aja=v#sUJ?!JvR=SyGRq53MgK}nV95&RomfR5m_ZKDJ%*9DXi zs^F%h*=Hyptuxyk2;suz(EL~JGhL?(?3ORP+Gi_ZOEC#QfCazEsmD>Zgj0`o;FoZH zP7GU#_S9VA;~9Gmxvwv_w(lzeIG+*9lRfg3pf&UZ3UJI-gUR2}rGz=W=#!N<5x-dq z@`Jb-8No$fk4Va?;P9v;x-B?-x--hKZ?~Tst=wU)GS@)sj#6m-@Es!h4jRANNt>0~ zK%@h{+^bnhg50aIdR$2LR=*Ma<*dZVkNIxP=iPnlYO0N@Rh)HR&Te)E^n?qfDBFbT zPP05$C^IBjB&nJ^gLF%q>t^{l0>^B7aWCMZkR!D~ z)91{^YCKvPj|668W{+n93roISjmh&goB^3DamY{gS5kqR6scdQ`HEUqEx%voXpea8 zMHf*d;VL9T{)zP<~XS}$Roa=<4J^p4DLm5#-~UwdST@)6fmUEuTofm&)# zQpS;eek*9ioiq5q*ecD+A#yC<2|io9ZP1|dVx#&(IhPTI3jRsZxr}m$%uo1gHe#Fi z7-n>tF=&ZlPI}G0LfU0+;$o9+5R`M+y4|#>+_w`tTxM9~5NAImg0+$(ivWD8lmlC_ zXQ&hV*+z%YD*)^h1P~J3z{V5L)G@i~nByA1=Kw_V?4zX2sAA5e#=Qm`pI^MZ@vj5C zEIOD5*rO#mK50$RJaBEsz%H!^DvJlt>>BiKo_>*(LX~2OqGDa+iG`WM-6@=E=@>tO zjql?$csqqBtkfT}^cQGSbNA6q{y-DDsP@#%%=Zr-UnEdxdIEuiJbow-f#1-$qlCblUCvi3X)Juac=CA5M= z7yEGu^&LdquO&3ToKUTV>}N>5M?#L1iIXc=bv#aXHd@{CNPVAa`l;d2KxM``j~%%_53@5aCZK&MXAp7xh@1ijZ@~o z+8?xPX}Gie9WoDMwr8%e{|H%8C?xW?7FDbUk$}~<6s^a(hJ_1VBYsJKaQH>eXzvuq zqCp3g_o2w&!Qp|OkrP>_uo~H^ce1)h+)Jx`v0vroM8D>2f@+Z9`kGhf24aJ9TGI#S zsPM7>D;>`|J|i!A72T2MKf-i6eV2f?&Rs-YlL$NZof0u~i8M{N zm390&>N4dV6g;*WET)YFv9+w zWLfGCHeNCm%+2j#%ekVsdEq;QY2XMji+%S)q`z>w?e=qUtC;_ON_2_7p6oGHWb;}o zaoAhQ$dTbrX$j6h%*EFE=*XP$Iqg6G_~ZW1PWgJ~mRkNrZ1cmGuRQx(YANOperUw+ z?P9otKQ?x|!0RxVIhGl*O*jj%myCo>T9X@4TrC?&%DP5Dr>RN)II87gyNyL%#fe?^8{M^2idG#bu-9bw050b06pCS7y zC6A{W!t4%)uw2xjSLF{sJ2C*P$r3i@JvF_E*5sM9}7TIhuAEHbqIpEtE z{gW`_PCK$ReTWup899|d|H_Ww6>mIMLzwCZm4jv21!?kV?(tSX=$-7zH$zTCh zyi2yiaO3`|OVi^SvYg98rZXw}tPsWt0pIN16t z4(7P$d=1Nw2YwXvgm9lm7?&p;mXz|qL+}&+_985Z*N>4+OMQnCf+7NqMZWI$*<+nWQcRTQkjZ&Q)d9{|A(6Ww zkvd^CJdWatu36yu=c$f`SLU+#Y(>s(>LX(By+BXT7ny8DN{G|_qfnWBL42A(y^ynQ zKt3QKdqA;bKX2}d{g{P&>)~+wcfidO9{PJByd#Nje3s~v%Q2P6(o43S+#vXwa@Tc~ zdz5kwO0K~P&Z}f^3yvt_0Cb^J4dG$A=x1iwBPAUj+cC9b2N}7`0KsX7d)8Uf)Ti|z z%Auc86^uE*3AqP5n`QhyDNTyKVeA0jbW)0>_O%6v6~S5o(n5qnfb05#0<-!EEbMNe zpn><+GaVw~{5vzvIo?x*qbhn83yyS`)KvaVcU;}k9S@O}`(A}m@Wq3?ohUf@Ep(^n zu~4ugoDL4PvaN1Srb;_HYH_!H@SnEVm9lk)ulYEzOCXU|oy? zu~%Co=6&XD%xskdF=*H|~atkuA$k}<7+ zz~e#fIRhP8Tj_jz(g&=k6ca&gn`%U#KVV*mawYK2*JpTfQ@04xLB|~(kQBXsr}>}A z!7)xm z@p|fhycHF({q%Cx#_PsdP6gM>*dG5T=-V5Oo4eZ^N{}s(BW7|5M`a0E${}08QX;YM zUH2T(B_e_k3Ggn@YnX!CH=j*!RjA$y>c&bxb&Pl52K4?7S1c6Y0mbVVd?`$Y-Iuvq z=Dykqa9rPH|8}5b!DjxTBOG!Xyi!`0aP>Pq9n{DBGh3V#*C+f<4wBrxT<`Yn;;=V> z1PaMF3ClJk)U<@!7RW_(V}2>11-B|EqzT;onkCk#3`vt^kpQ^&Qf zYK-wOpd6uI)kaavKdn$|LAH4TP*#uI<aPC2w1*UbhjwLw#$d*A5SsRnVzmX;kqLmx+xtJy{*T7OY$dN1(`_8@9M+g zy+E{D2x9)%cj=}b?5)Rx@%@~j93A{oC0YI*r>fqMxNLcQU6GX{DtL^t7m~eAYeQ#c zijw>F>kT;FXdK4AQ_g)CO+X}2C%?ziJ{rfWVIwY!s-Goux4ni1kje0cQMC*4;C9{s z`m~fH0g=zMo2c|YQX`M{n!gj9xk6WO1DM z#EYyH=5sIbSJcgZFkd*09#P7?;^nFQ4*66p@eWY0)dgWGpM@M@HM*lS0<$|IU;}Ys zyP!E11UMSFLvn`WL)f=%>l(7&Xx5pz7cV^#kLR;6D3+HxS<`dKdVPb+G_%DaBqZlI z^udIHRrlN@QrP@RRbbXV_eD4A**TQHGFyDAG55A~M$F608kzpf@0;nFMN)u4&REuU z9(UQ~rN=!p-;Ju}^mIsi+7L2}zcWwTsD@%1pp=tAMT)7dnm+aIEKM*Y<-8un;rGSv zS)b7yjb4U&7Nwuyc>8~Ya@3ubjYAaW$nBU+%R4Big~ZPNBll@CxjHE4+0MD39D$oA zn=HWy^FEAVevw`8gkGBeTY8z-soD;DDWF>D<#LUnq6^e0X~JQhmhl(8h0w=lfzUw* zHgq6#VsAb}(So5#CruJ4l=*lsC?@C-Spd+<7PO0DF45R|C4-_YvAnrJBTzeCmsi`P)f< zHFIZ)g2dZ|YSl}^n&lwIq&ewR8IG&k?7#4Bo%^rL>CAYgI-YR{SE++>(R|ILRPp+N zT!d^-^$>o`y7n-cYaZlQ*anevuy)R~>eJ7qxOgrlx>mvGc;5~KTr5CX#%|-gV$goO z8&MVbD>1(s)#fY#CH#qVhQ>*L`ye4_vFCHwt%BxQtJFZBKbT8P{d!U9jLf}2f$b%l zK9N>(weK+9n4_^5BC%w8k4$L()hH25_FzNWpQr|iE>qtXGz_kEcpRnfCzf{d zU#{<^>22E({p^fLuYUs6M8S!ghiKa3zD!Y~RFh`)Sm;cRVta$o87;c4v~E}Amx3;W z1Y1CRcA-2V3C7W9G^EP$^($vgBEt}X=7|k@(L&H_w=di*?LgNhsl%hH6a=`cx^xrN zS)Ycm83=)Q1fk>x0oGAF^8Q%!ptzv1uh=Hj)jj($YTn<%pHg?-EPnpG>3gfMM_Hvqq~(QM);IDIG9I{dk!fn<@J{i<10 zB)>jaH*gJKd ztn;%5lp>YyBu-?AQC6@}yb)vUk*6;IhU0fT6&ag}u(_}O(KOMH0M6@_nO;NTzZ1w5 z1X*3si2qBidct1C;a~%prwX)PWBQDk-PT6c@e04lIgEo;hm5bPzBX)rL!H+z5D!B;mysXz+VD38C3!3)*opdtZ^PqH^7%i+812E{VEPULbwr5ornLU9vjjZ3 z0YAf~k?zU*^;!Mi;puYzv2S#*oCv0eSLGVk7!QMkk0-3!Iiv91?{z=XV)iu5`@I^z zVf}(k@S)C`j7%n@wbS|`_h&kvuGA`nLv#adYv=4_v@F-C6U8bGGKIx1BRp0?D`Z@uGI^&C7~$bztytQF?g zur(1D8o#3Q()evJbE>k$nU%K!)^Ril13de4cr6nnR~{OnHK^H8D3i6qw;{Ur|5cw{ zH+R>G^OUCMKc0#-B(E^l!g@0L6V}~IhA}J-h|3YwhNSha()a4AgH85L8i8(QiQp4X zjlp8>_NzmT@htyCXu($5ZC z<@o{2;cJVWE~@vlL-EoQ{UlYX!}9n(;}t%R;zX-{ibyx;)8`)mX~sKk7S`Hvzuc<8 z+eIlQ*k|rpt?;bpnMMv@27*H=64UIj39wd{OL=w7o84jr@rBW6ObA0nw3qGEpXd4$ zV7jS$E71msG0)&ANxfi~;U`Ei&-_PMGo1Ev^WGEjTNM%7#dF8%NfR`$c|IJQ$-xH= zaf+%so;O>bUMfXU#?MA2-gQKNHGC~meD!1TS&^?*9T@G!PZ9+d3|gum)T%bRIcx2` zsAFZZ*~cJpFqkj3fUVg(KUQ9nV}J5Fqxv+%n5GM|){CJ*!2DWICIiO^mB*qx?hqQ+XC`;0ZRDFt^5Y9NfCKA49QS92^x*|P|MaXxP+~_ zAl>Fs)+0|fu)g}>C35;A%^VXSmY?dK#z(c=pxwoi%E8}P>G{k9P*eebNc~;Ysv_RdJg&ZVKDa7l^fwst}TL&%Q+pRjudH z6Sn2tKoU#%8iI>uc+$qirbkA|DxWs6mUMUBFewC`wXBed$jAKcv{}85B(%_p1O~Or zD23w%O5G7^`JyXcjq*eB*9)Ytl|7MQu@&l7y27s4a~Qtc?8;`XpjtKpWkn%^N<(0l z6)Hk`87`q-E%`}Z(#t4{08en-o>RNq@g#2UVJOu@mC1w<8EBzwBp*h8Jj56&iKLMe0^Eu zc%LV_cX+ik`ju6k7r(0Atjy#3aUh11s92jbjCZ-0DCeH@t_*p+e1&1AP)5tTnkzJq zFQxdi9aHvE43JdRs^iR!X$4CST%X*1t*%v1#lwGolU9Sd>}7m-2*3W z#eMT0R=5N9gp<aXk_$36DU2v*-51J<|gvJ1)s65ji>?COS*Gr4u%n$7J8amFJnF zi?o2&9(glXU4*@^QV*uvt;{HLVsFnBrCfV-kD9z}&xNDMhb>k7;Wg%#)F+NOGV7NN zMv06BPVL%#d#7I?+ri_w?+sc<$qyhsE?B&44C078PutAIoe5(QCN$xXN>uxC!e3g# zAH$GtBv9$a(`ym;Y?rxv8Ef3VDsApN9FUdm6Lv%J#){m38E#;nbrYts9`-;&! z3vbhE(2DpQ!qRkpSmmqoML#L`iek2^$oFo&-qwqgA2I$gVn5_YKTf_4M8N|&;L%;W zd;1WjS8rLeg)Yw5W$WgWlKeXWI(EEDzEVbGqP&J+saW}k8t!Vr)Xg3LPR1ZZz)Hj? z$DDr<%V`2ODxn0vCbGGPXy*u%+s$`>0_9xo^LH+m8 zo_aH~44pyEnc4*y7CK{Bb5Pj4g=-wQK>oL2 zYjO+27ATbTL_n+$VGm16!oF?p`Upj}EWQJQ6DtXMeM}yyG+ST+%6DP$$}9(P*H?m< z^s8Da5@nSFjCUc1iC?QyOoj9_WODqGYtR1$3NqqPH2s^O{#6_5()vBPn zO2^j=`m0(0tk6H3`C;;8G^*MCijnrORdf8vgz97C4D(j z>L6ZO*JOX7wCePT-Z!$j#eWgw7aNJWk41njC~tf>9smb@^X*~aU>J_x&0QBE1BY+N zib63_I!tIx&7K7By;2~8n2cO5=W2&mrqB6YXCGq3hZgczAV~jk-vnE;9zBSXb;`#g zd|7Vv7g@V4tR6Tp;dto&1CGcjF)myhO;PQ$z;wJL#-4H(_LO|dhH(&CUTEc7&a+Y@>L@I3`iv%CCXMSn$sj9ze1ykd&|6;gJHu5>q&ake{B@ne z-{b+t3`~}NOuf>Ycw~Ej@0@fzK!$1mULi_+f3FjI{1W!r7=8GBl+oijiwy{cd}^&-E|F`oPQvvIW$NqM?RC3Axppq3*$+w4B@~~8*`K`i# zIq=yzb-))ZJi9^FvEzdOcSBy2I=W(&(5WG(QiuJ+aXFoD+rIz4VI6(OQJv^Xe|AjK zz}TkT;hf8gEo3to*^7?V^p&?jI$*NdV=yYNCUInCH@}{7Y1MOb%-@T6JVs5W9Zh{s zr6*^mOZLu~K$!{qIq<>mJ6fXsTzyzAOJJmg;wy7i@lU9w&EznXDit}byX%)}1-A!P@?@{|<=Yxx&R znu}X@c>Ypb3zH0DMSGQ4fgdtk94%r1ZVcK)p;Ei20_VB|yc9306_rJg>*Uj1hvH(+ z4`50iji;U`*Kh1Oy@bk#j+6{y*rvD{qOAQAfRN;SBRv}f9k6M?qg3{GatB}dNFNF| z)xJ1@N%6zcbb|eb8;XhfUy%=Y-NR(Fx7;gJ$<-a*ThmbKaF5g`3~n)V*#5jhY{I^B z*L9=a?zj5fMNvuQumnhlFsOW%Yzxl-V|6sqR2}w$Y>&^;fZGG%rO5|`KY+|^K4i|; z@(T`y8V6dyNImvDev%IgSJ3oK<0qf58vm%k!0oY;cNWSjuj}#t`BbUreyQgj-K8U#304`a(zlJs@{cNFYUbHS=G*qezu)AOa7Mx>S?O~ciYQA$B0*#+H(oW z0hbJ86^S(MK^YrPbr6Nw)Y;Sdw5EB2mVtF>X;FC4V@NU$<6l0+fMU3 zDp~R<r$vSj==Yv2!s-2j+ISkQ+k1Mp zy_HX?UikycdV5At zk%dOKhAA(r8cHQoOlr6dx)TchQa)~?I_zUyzo%SwTPIzmOxidck?NZ5)k*eETuu%7 zc1Bl+aQ22-x5vJQRIysQTymjlb%o3gDRiFacB7(&wT}-_$C%&Ji*lSfL~>cKU0u8I zqfo5Bo<>=&_lQBUaB?x)Ay=D99>Fbcj>!+AA@}urnW!0G(7k^pU~eOi@MnZGo5keE z#3}nhedX4^Ng+fZOc3g8MC?FWv^4NGUyjl`WUvnjGz}Qc;7=C1fKLZv|5lq9cVkqt zM7M;hzLz`xwo71{t}_KM>DK>Hv{8!6Xp~54iIwx90IyAQfPi<KZ$Tw1Fn zGJAsHWxC89HAs=sO%)>G+zOJ^jb96DN4`&=BUSagTJl*#ui;1Kj927X`>L)Hj{ z>!syXVm8e!@H!S?sX~voh0JET=fAjiouguqU58px>@G=YT7;Ft0+_8s(wk4BQFYWW zo0Mc3f5d*zb+8?nmjC`=Q0IK%XyAj1sTX=zQlhJ34s{Sdt*zB0=^~gM?%zwqbsaqTlTLFm>(rSq8*v_ zo&H+>qdgZ#sG<5jaF}YGH6FxutPY%jU)+-Uq(4({yV9wq(fT18=@_vAS&YaRV3FW2PCMBz0O*Wbw#hFs(fSy!TWDOk)ex|bmjg{m%*IIm$YW9^%44jB{R z?WUM(s^Fdclr8P#hMeY*RpTK(S2W(kl)lJ5ogqf~i!%mpu7;}aVd1OEXE)l#?x9oA zjWkF4rBl2{&OZBFT162r3GRAP73+)U$*oLL*(WLqR&})px_4_@}Z&**q~C{sS6Pz#zp<~=I5Mx1^P3(;VweNqNl@Pya;f#t6A(mv?1 zkdNd-hOZW9jYP|XykS)LxfN5Ji!O-|b0kY>eVUIlX1u;x0ryW+lDqC{8pD*E|DBLg z{rBWucpgz&ik_$C)nUiMpYO$>PnAlpmP{Q&ZSE_u7psR`GF?t4%k?jKiun146Q78-KS;W#?}sBoN0?e^cgW*Q=%X9Myc*snnGtv+v1R5mS$%%=AI)j zu5x^n>Mjp}l>2_=tf`R<(LEsx!nFJ+0#C6fSgTEQ$^Z?Z+W?ee7wrG87poo0L_8r> z8fw3Ciq0`6T~+jng*XCD_x5bE(2;Evvb&KlVBO;c+R5Zado}lN23+r{{)MZ(KUyE3__jzysu2_^T}JDUYfSxK&`kO2*{1q-Xe_Sfipi`BC&N>RRm; z_Ce||$LR=O(pgW;05$9`riyI@d9>XZ8~3>v1xF-SwxDJQ-=zU3VO5h#*oxHk^N_8JYdg zN`b{wKF6`h{M_!HUA181IBXYxh3w)vniyL!!BkuM^2`6^4D`^~Phx{J4u5obkrwRLsa zw}WwGGkCC5N)RthYN>rb^|f_93!cdB;OUND5y)=4U7VwcV(os2f<~X9dglb`0h->M zL^L1LgPj%)-Ag@Sf^@4#7(tusSt&2-yB_il?R`vy{fPrQZ=@Q9jr|6A@nN>wi%4Ks z($ii{4Y875?s{}7?M?Y8ee91&Qz2oxb!|vH_S-~d?vEitZ=jH}HJSZ2sUV7EZx;%# z@#^08ZZgY06ty|!P0$p369ZS>S^5a(Y;7D$T?kk5B!_*Qz<*J77!i#DM!?PoS>C!h zfPVNhYQYXi29VUF=nc7mJ4HH{-wBjc5z{2X-UA*~Twjd66v?r1 zU6FJTmptvcKLX{}S4FhcDy;Vh=t&Xp!iE3+wf2KCr8oR4eN{(iK<*uI& zT=$z-a^Q1Oj%>JkChwLQ_!?d~@#$u}*BZCGoY4Cjuq`W%JwJZ%;u2uEbFmh*&J^SCC5KI<Eu2`NIgs^vTj7MhMR45}rzrJ&}aO^sk7xLat-UZ(eqy0IXIj8hm zs47SBtdzSvY4@6f1$mcqRo{pcAj>t9++(bum-R=)Vf!PTV5%39Ww_1;A_j+zAJTX| zysvdmK29p6v#&iPll-V8r;$?rV1$mQgQUHm4na&^vKQ_-M~uECWr(C~ASIbkOoksD zG2{){3%%m&@st#pyOyOjJ2byzt&uL5dQ@c71=9S1Qg?>Xs?&L3P3b({XtkX~9x>#T zK@qu&>#_0%dZ};#yw|$tc+?(+2iis8DpaZu)F53z0(06uh9x&`j<#=wmell;*B=cF zsSPiC4-w9`{lEca33~2Hwy(P9?%|X(+p%j&mL_zdSB(PFzL`8>Yie%lXj#`_!y%p( zr=sY$^4$n-Y8E|9Y2IjaG}bAtrHoX*Kxfyf(jOo_WR1&hw6f_34s}YuR+o1+j)bep zlHYExA)R+szsYgL$9JJKa>G?y$HYf$lRmQF12`Wq$%m0}{Gr&(j9SX+b?yP?z5NQw z(t-4<#==LE|=R9)r*P$k^FLy} zhD_BDzWG`5{2pULQB?N-nMqoUbfC6}@U?8!>w%S>8uDgXHl;;UGW_I4QkcAj*yWbi zT<|l%2LN2yMxlW{n?bgcNSO?AVRDdc3^VtE-yo zPUG`@GDudV@$C{mO9UCD2&5lBL9rRl`d>h%@u}oZ_9;3ox>MJ8YC3uc^#UuXgb>w# z(3Kbgs~Xx|Cw_(eWlxkUWBvzUXKuLbMnMd1F7=T-k1&4!lfR=I_+99wG0C~oCnECJ zUrh4C(}~mEH}_&MfO}kz&fI=sA34vE^#0lOBE4JkOM0!OfAB5o<=ONXo>iNPev&>x z(pS-;O{a{Y8@}dKg@oJIp9U!r8^d`ANJOw5yFlt;r>T zVmq{Hr)-C`&jQPT!Y;(teu9gP+)rfRWEYj>FGGti>*Qw6U>Jzo&^#kNZva$s30(o$ z*&6KY^odZ^U=U8dO#CzzU%yT|Y;d;2YM)RYwo|m|X8|m^P(vA|q0AwpLdbrI#4H`a zGGr#%(;4>USY5&+C8Cck6orEx%qDmigV`XkSA9!PIj{I>-P0ufUy}YG*&3gjE&l@E zr6^x1>5obJ5X#%#=mLSCgKdpV~HqyCfq9+CWi88Ylu-hpqt{grf`$i+5$_KX!{)7(0!eO@?)E zt~JuW_;wMbBge%K?2pK?@Sz=QkcR;Ss7?jdf^PP5JV`#uvRY?p0mY7rb2iyt1gvzH z*L9Xgokc@YR#n!6`MLIXggf8R1?0(=ch40gKl=kxCSqWqs->{Z(KWBBIr^pvs;*htU zY-S<@^4>Re@jw}nO!`cn-fXB9>Sak6RiaLhxsplhPCeG4m$^*mujY6Scn?Vae?liZ zzdqY(b3GxYCc59$7_u#`UrGCF{d;Sq1tV$8mcJ9y+xiPS4opxGh!&$zszO8qKKNK%Vp4|}@CNraEGm6kK7&wJ)(k-){u@DMA{Ji3 zqdvNSkik|)j@mcM(1*AUYhB=5Gh-PFX8Q%ErY;&;N+(aCEaUiFL~Z*G z`cww_C--6O2dMHLojD4=QUVhw;_6OkG>Rh?bybMF&KScq01t9ZLSj}px|+zDLEXjfMU>H z{|7cVO&;*Iucreto?W((*D&)Lr5V7{ql8q%&V!unm!Q|6HSiA7%F%Ch303ial%PFg zsaMjE1(dApGMJq45#DW|NnAKy%`4#T_BUTiTp7bi26eEMC=(pumSy?!JCVNoH$841 zH_@odQv)o{&vGYPd2tyy^J1ReJ;bodS?#yG(DUOE?sR>&8^=mcd4e0eDt#`W;l1L{ zZiQ%l%cbTBcUs2hs}Eie4w={I+Q0r?`o%6a+Gbga<(m5iBW+&cWt_NPc$)%NK0PE=3Voxa6!kDg${v+l(fy!k}NBvcXvQC~VZgZ)RWFcYu zyDOkk%O6H>-{}2aW|@!fgt=UVATH<6HXj-K1JZ%N04Xv#&`5D$?UPTY`<+{5y4Uxj zko_kObpIiMj?V)10*8!-&S;~ISvZVw)7*8!JS8?Pp@@C7)V_>#?%%3fQva2yze$GL z{*nxe4&XTL>78tb&|2^ zgltt{3`g1EuJ_YZ$-ltSS+7yM-^auk#uwrI7I*ZwLL#638JY+*k`M0Lj(Vrf^-)Ju z@7T+;Xg ziq@vW=Lb5}8;$m;9a5k{@4`lsau9%zglr#E!PD#INrgI()i8U^Zu|9dHSMdYGde}Mw!&q`g3q%6*SJ@!SF?3LCV!(F$N zIeHB4u_>(jlkRzj?ShU8;ygvlq&8;jqx}M3RTvpu>u=s9SROBKNNf)~Gi|lefnNr0 z=2y$_wf^rSl;gDu{?_^*P(X}Y|1=3iMH*c7lEA%5t>_|0DfyQ;Ee9H^0G?L;FH62? zQLX>48sHE8Ps=;Lw{e$eaoEY{a+W6`F?TGsQ{zjBCetMOFZ4)Oi z^FGdp{ImD7%&1d}`j_~mvMZ@fM?6l1S{mD2Rbu zq>m?Ew{kSaI!U)eM_RtcdOvOEpU+hlVPQD~z2 zAC`K6`He_CM2p0nC9&*8b203*=dekX_Wvj_(Oco{;BE@mgp_zFQb5?;#@!gFHKNe& z#qLIkDDp4+VY!onxGZxZqczUAQyZ$xFwU|gPJ*8%)>BasSwycTzPO{YcA6rjF?)nu% zCGG0IuTEvH$9qk-1M9`Zf31JrG|62jeQZ?ur&E>_W@WTBXq$96I4CJ7E%Bi(;Le15 z&MyGQT3BKJDC;JQ>~j)F6V+}HxH5yyM&K)Rj!WYOGwcVxpldmaf%wohW1CE8(7PvT z=v`gMP_tDuCO+gGxdu{Cs!>&q>m2u-H>BHkr3zJh;R9RNfg>BUY-u@@A+K+@dyXn+ zmFADKMx4XzQ1+*3Y$6GJ-5%zn_UH;fvCnuYjc486tWe4GKvw8>kqlCD0AG6CpbpG2 z8pkOnbq!4FY-(rk@HyFNM-~U8t1Co`;IAyaB%qECw{Dd=r-V{>-4aT%s6$`=GB zw?p%vi>0QFav;4-x$7<<7UtOPD{wiJ@FG<9?a2Z{KeaP?e~&y9p{M;1h>+mo64YQ+_89EB5Lln3Kx2_;GnHOy$rd);pNPM6j3I0N*ZqqAjtrJr05_A?UD!dQ zk*Ulrb-L}iHu)aIC-e6R?4y@R9$7~9c!5vD8t_q#i*8jHHS8usP{ClT@dcD8O7f8R z3oZYTyXmQ7L1}?%bn2h0gfEXK8$2xn1zRrW3xu>cBVs;0H5=_Z>i2&G1ts zZv$-;b@MT7FEX=wV$3;k4e<#5x&ey5k8EFL3mDz86O7iVblUgY>TLUPuSBctO)y~H zKF@CsYv0MzzRNb#zTfKhp-!p;J%?QEkc)$frHX%IjF1zZl%+PcKv;dIQ4tE95%Lg^ zQZDqnftZ>h9r;AB`#DO#6^1n}7hU9)SF15xNt3iisbgZIT-7Hr>eh~Sq_T0GQI)*H zux2%rDo+Jkc{X3m_~LmtD)oosArF@~7tup7nw1q6M^Jn2KBmIABIq8yrougX1ssz7 zlb3z|=YiOF?UC*kRqOF5;0ougHLQTgx=a~<^<=+wcP~T~O&@qtj~(j5g}*^^ zX!)vF$lOEKE2L_6cvX4xtXZt}j(NF}QJ8mO^8VS~%|_Q^_gg*ZG4W4?0B-5?m#I09 z9+QuE%v^lq-d~L{`#i_@Rg(wQ!ZanCy&@M!7kGkZ@=~M7Odx6wcws%RDAL+ecF!5u#j&mHhdq?IJTqaze&5O z+Mw>IsAirsDyc^aUNZ_wNbVu_mOj--K)X$<^L>2Js-&z_A>Uf}BTosag)`+E4*$Zu zi!6r+Ygk*lhguGfG@db9+K&zo`pDSdp3{M_l*`Unz z^$(4zT2FUcj*mXK>P+4r8nh$?y_;V!5#4pahvInpwG>HU!pL4e?SL>_y-eo3gR_dm@20rML=;8Rj?e6a%W6wTIUPF^Ia%zd@i$@Lp2&%q0Vl=&IAmR#OFtB0pdrNq?c=KP>F7&aK>;{XEK6xF{SbG5%0aqy4)FZFT!69xAngXnZ3#U#B9k@)w_$4 z^YKFIEW^wjO*cD58~JB*6;=|{g#2cHUQ42RpxZipoY02kYNkY{y&;%_voO7Mjai z4)zzvjA><%*s*xP-LZd%qLr3IM-6({9bCa%G|J>#{^0rA4*gq{%GF1!t$1Opecw8E zNw538h_S5M$4H$tqCK@m_%YWg=K+#!;!UD7jhwhZdbWdp%w_ohB}M7at3I-vadEy3 zZJX&38XGx}8K6qD$t;inRnJ@^a9i;5MNvdh8=wk>sl`bqua8glA;@{EI%zxby{K2w<`aE z)N1vY+HPW}&GR3)_WB})d%IHgPUh4QhB@P{2lDJW>?d#$m}h@FM)*oJfV!9yTl>w= zz=+EGSTKvJKv zccdQg=GO-P> ze?<|L_WY5?8?NqED$<$LJ;Tu!zyptBLtvQWyb+f&kHZd;Z<*Y%n70|q4IbKP zk;e|2)x)#prOJmO-I3*&I9v6|Q2mQ#D5(@GnoiQN-A1guFemx%4F6KiM3V5*)TDIyzhJ7h(52d)sClL7(|(!7xM^Xr zp8t}N^gYHz&)}Omzk~v3?kr@^1+7^ge!`so2Vw{MyTz9~(#Q?@0rLa%Q(S4|@kUXq zQFT*(@xSy)~up2c^6J*#;o~`-iCqf;01wv7DbzQX-smd{@a=tnBBn}%q`Z5XK z$8v#gFJ6|%DODlm0l<-1nO6l9WhLofBmG;de-XGOC#+ZaseO969IUGQRtZVKY$}&A zwTkTu-cCxVyqZaw=@SBs)!V-DiZt}-75{CaqbVdeTy&{Hx>UT>iFgw|Ui!P-O82W-#@o*~@QrtneI`RA#x9Qj(EzUMOr zfPtnY9iALX@Njxkg7V=myJG(0xiV_jS>ln&U01+|T4B=bh3KnKB!@nC?l%-7=UK@g z=V&H8SRRh9b5JJGzFN;GUst!%D`wd3S7iT)?E1>kxik<`fneNq&rnR2uhiuY6DH|; zZ#kgTCz<>zK>-W5N2Erx%xjqa{vtW#czYS$E$2nzZ%j6TZLVqL;;D*8$A9tmLc4uB z^cgh24w^fZ<%B4LUqp2xdV@$`9zDWkJm&GcZ1=~g==A!SF5CnhhrJ!X7&3O{V_7kJ@}(Lca0QMof|pNzE(c)%F#9XXXu~CyV9APJ9G_mOw5I0!A z7LFnI$Xwf%v?KOtq>xoo}X{-|UD$I9LDdeO)wEw}yNQaoS`p9uvz-$hSeTsP3 zN(8_0(2)WHzc7h>d)fg6R6VGATrQP*GYSvQPtiLBKnD7DEhZXvoc1WSug>{zwjowNaK^Ic^yr=yqp>w_(;gCPTGdjQ>hZN{fkQG zD*WXIuEf3=7kT>ihH`VsIP(Ks{p^*;pK7HXdLq2q?Tz%e&Iy`Z#0%DL+Y41u=@(fM zg7y2_;^vHVUU>=;|IK<*tYkq^FCo4rz^prRnI;a%pT!n|0q?g~jVOid#o$2%wp^(c zsYhPOOUv(8Obs;Krj4YrZ3@d05Wj*w$b+rj2_HjV5tAWCrYU8-O1haLb14`Z+ zPRw#8Z}A4!a(M`A1@hLrSy3yTv#euCl2Zg+_C6<>F3OBr=Uk)6CHObh!lLabKXf>r z*}q85QFeb;a259W<%;Ie>3eYL$Y`Wx1J&!&ZT6m#s)2R)0c(LF6Rj`fsVCZd{h4TU z-_P=MyNqzt)90u6S)ZEet%Y);Yx&nUs~#_v9#4J%?B0_7!jb9hf68WmFk4qEs?$dLncsUvzUcl{j?{A*x+1&)J+Wz12 z(d;w#bIzPObLPyUsAZR9hl&s7fx!tD-m*tjjhtK@|1oZ%#9G$i zC&gW;>#nB0$}0F+r#2*Xc_?!rPSG9K^A%8l14;2eTgj8cu0)ob!mWCNJ|TJBW#Cmp zePb7`wpZ`4k?Mk1+;%!{o>;J|;}M_!%x9h;EYdJxiF6b_ENA^VvE#i6BIR2wyMFLm zMOvD(=SX+?%b zHA15v6fl;~F$>!2C{U-5HBwtwjw&Kks?y_Ky`izSDpawedgR*pA!dDBH`-s@?%9#a z)-zGlMHy>wt$OR8n>g~_y7kWCY&d5o(VTHTm#O9p+Q8ov?F+!=s=m%8qg*y|Jwq=U zA@Q>pYFnO2D1HLp7-o-eZ`H*Ao$h3x6OT>iyvAQZ2uEQ?8~zpFi4i&{%E!slwm$dO z*qW8fwsTUBp0r_fs5$Bz(|r3Jr{(G?Kze!N-~#VNMP2XYsjTbkrg(#^?ydA(m31>- z?rK$gvYptaKRyL)p1pDk+WAeJ8B&LKT>Z+t^b6lD7B{0^cxZ$fH&jWLL}eZKD}>sz!wA>Uz-x(M?*!uyml^c7*1_MHO5|-#YJV_CE&4xue#KZ5%%uP>6FA69G{tYvdE@ zBhqxW*sd%!SuT)TUOVPMWl{QbDr;8)JLRiLOqT3I8i$=$&p9+BQ$Yl} z*7l{Nwk*@Br?nhl3(dcmjMd4jILGVetY$S+yVzvA&_Gc5CTpK4S~1p4T4cusZd(Jz z>h7vcP3`0;AU^X`CwES)eWz;hKjamBLTbRj7!{ozLF9d9sr;-|X&rSP%~s<^V7;l3 zE|^UObS!o1^nr?hKEG8tdX^dAK)$}O_Xb%xPoJaV1M`i;TmUl23P8EdFLSx z7|!8I?lJ3U(}bCC;vwiOyTLm|xpsr#%Tmg({lS(JdXne!JD}kyrW6OsACdkz!bB zQ_Ho4U3rP&c<-9Ofiw?69kuOYOX7{>@iFD>U@b6x&|^L;P*=5pR+&} zCQAmYIQ8~Wx{iIO=C+f#1uPzxt7Otst@1P|0kWlKkZ5BT= zyJ-K?8r8#ncFIbg2d?Yu24(gk+NFavsxlC2Xf|z~uTyE}um3SWc1JN?;viuJ} zpGkiG!}YY$%RC>IF8>bOkogjAG)rGg-em0HP_^+7Y7zhQ%|#&@x^5+F*Zj_vk5Th2 z<~0V%FY49Tj8|4C&nEIJB*5xEtCTt(I)@|aD4$3cC-k-=TGw!J=ILf(%%Cs-ir6+#?`e#wS{+-G9lb5^S zEZ$uZ#!#x`X`@HzU}+TY`~ZnM=6A{%-`((@(SyZz3y2i|cWDCu!|GQm|JOpdaz20L zwd34@$&BhIo9bY;GxS0Cm*(~X$Ba;%E3x~T{lwu!c=G!9)M?eC9}ZhtojRdV6o_?P zBK(s&2vcnr@*L7^EJmI2I^NF3c1}cMc2OXH^vGRiPZ0Gum3=m~#K#yj45}9|DR5Vb z>G2U2)tMGbzu2X89W%-7;y}D*EV9gyXs?ub~+^gn= z#6~RclqYH2zz~gg@kGjK&_vBl@-TCteOhIP0O^huofF=ji@|H_z zSp#~TJ~X?c$l1#zf0WCzOM+_G-QfNX=98zg?HPG*R5dd@pUJ@~W6CS_mUQg;t}*?I zM;BFq!iZ~#YBXES>eUg8>n}%!2J-|=XmE9;CN%hz$c)h7+avXq2@U>Tq{;l=A6a02 zABrqAzmG;*`L$9Fk+tU6?5lp(9AJ93sJXahEw8y-Y>S44yG9qkea$E&xzsrlmLImo z?3XCOJV;|mAHEemA&{mCL4Wm-8vcbWo)EbdKo zA(`DhthyICoG67I(Gd+aA0>#nN^#i3euns)&dsVs>$hZa_C6q?P;<{M6=Ms+bsshF zWQx7%JgUJ&x7~+q@axS3m;Dj5)4s}N|Nlet4^7>?d=1&ZIn9@YuW_&8lKll?>|QaM zrNbz`+;Wl}p~>$L2#X=`TjyM-v8n0dR1HH+1G;eIwEdMCKcRJQp#I7Mfl%YL9?T2lN>h_MaeNrM zTJPp2wzAE=nE1rjXz03QXf}CC|BmnE@J){Ek8>~klKz~myJAR~`w)mh*!}&MtyP5f zHla}C-)V##^YAO-^l@|4B`<-QSvH#T#Vw9|#;yYiVcwE`H+futvfxW}Tfyv}w|=rM zc}bz&lPkQtaT&X@bN0^m6SscSNxVI-FJ~(?NaybYjzaqChd>c&?b};r+;jUsc`^pW z*$oB~h_(S(ZvEuSLJn;huK-QW$)jAl?MI4e-FTyBZ4?0{a%blE1dLoZ=uyG_WV1OO zvoER5*Hc#fci9834dMJ=NS1M>lR(~Yzj@s-xBlheseuarnttrt+RPRN$9nTJ)hE6_aWAh$dx)lK>Sp3AnSbI7G`UB8fA)%&@*ByYW86mI_ESb>*z z)&QPiqk|w^6*Hl!PY>&M zFLPYBjIR1+9wUpd|~DT%^cDy~r!zzUG|=x{-T(kv~@C zRNz(4A~&)zDs;wa|21cyZH{>3;A9ub?dg5*gWc&ZK(q9|)#C@_PmTWCj^0;b-DcEe zUV#&^=ROc|iSoAAq2ix;#5Z5!_1fS4*ozgr*vtE{VvVp1HLMn97Z@6(or9^HHVxW z@Tu9?v_J!ey?wsG(~TJ2IZVyUN2gXPS+4$*mwh`b_veB@a~lO!=`~)i9D{me=M6a9 zWl%A7v)^~8dHEwg5dK*Eb2h)mn9J7c%OE4b)my=b4hdxRtXI}=Pm z9;}TrsbxL~>*nJJxt#VOJ88)Az7T+UAdo4f+UAR5ZsN_k#F!EfP{{}A9Sz6J-NXwh zIaY~%l(^cX&eK~w>e%8(<}Xa~>1I#9>bkD zWXe@N$*X#VDiEYXaet}%)6y_*x?b0gAjg!-DyIDDikzBMUi z`tqHx-$>te)fv|FEer8>b+Yq4`bC5MJm@2()?V+A@-tyvcD`7-tU2f-?~u+!gGp%K z&lwK(xKi9EO_!iV;WC#l?sI}{>*JFbPdkUT+T0JCs0q82mNhy} zHzrPW-A5Mh%)IIx36FSc?RzbO+gWwJ`v)(krJkUbdMNTU_1iNA%65&c#ThmIX;(vJD=j@NQDB<~}Yu zXrsjI@5%0PI(ZOO+@L+hQY~evCg5D}fy1oFkaU$ye_XC$2*`OysTg#MGV183dk~~v zr8R>L+tAn=4c)n-(e^uTmTMe7!Sj{6_GU-+|t=u#QzGewH6oi84i?#NJYf4 z7Dod$f%-t_90flNJzOzsO_%laX_~$s9u3F2R}rdH=N57;>C2NtcY)0`3Pm~6E_eAB zYqd!MR!G%W>blo}(MnxkX80&JFUz0q{U}(Zzx?8)$Np2uq{n_?exe_^KOee3Zd!D! z8!}n6ukk3?@zxN>ZbsehvJzAnMRkd&stLe*sUy_<3V?;R#dMv<3)9%n0}nzgS zHu09i#xnLE-Gs1RH;HJg%^5*_xm{Ufr7BHYx>8yR)lRWebu-eHLl8d!dvbZYa<~9V zSB^FjS4Gp670Q^dtd>oMEmk-A423#+Nxx4PbBmQMb-j4Olcfng!uHUIb?(|$Iz z=%aMyIlED+%>lSg#dh6K+t%)6P^g?{UlqrG+)GQl${CglJY%(G!s$vGry++6cWBW{ zx5ySdRZqNKIm`arJU-ZM>vQWTpW2NL1m>D8r%=NSv^95|APP0eH}+zdX7zM}{e}j| zD!QQUy)eFS!&aZoR-d-eqO{G-{ARo+-S`@X3|W?i7Hw{I3e%165F`4xt%KZK=dKGN zpbI{J?lb$QwZuDXPzTeE;wM9-M$_SeaNw4L)pnypw0)CO>_+!U)*65SDRok@8vP{x z!*t^ZWCKhb|EbeVtA<^7*sA#1`H^Y0FBPj?y0O0+_gfW@+cy=PR;8e08Zyo_oieL! zeORr&6d#>#96%EP1?+a1%rt5kf?jQV&!GCAi>iH7m~74_G`m~uMspU73fnqhDD>Mm zqeW@eCcV?(@CwY_+5zE)t8&#Q!hP-$Zk63wuG)U%);5A~x^P0eaWr3eqhxP3wCKyW z^}V94n+hrOMQ2aLC^tn_>L)4%KiQ3D{`s326YkmBUM2o%vk(?3=W*U@$oMpkv-*#%5!LDEn`^ ztg1a39n13Y2oseVO*q{s9@mh{j9^AcSH|`2v3BGBM0LEzJSm$ELI&|uzQ4F0Q8hef zuRwZ^K$MP-S8MIncqX|PLm|NUX{3zjFBlQNVQPPlpN1$O(K&>o`dNjC1uoy$xc@FR zF`QQ_#xVlsbRLH}Kakmix?!cxh?GBu{uHnZU@&Z{DqG;x?dh*at;7Z#6@1wl|C^f< z=bkFr5O)L0V)dW1fBClQG46E@TS?uKj@^yDg}dQp+>e^cNDDR0AxlN_fwklI4^)nP zqwekG+;{klja*R?s&+W2%{Bh2P=k~?cKY$M#ogA{Dju<}NX~W0II-ZZ3VRtH0Vlc+ zM7R|*j1!r~ybu%bEAF7b6P>}j50VdjKmql|mC(K-d3|984JFowtlD%%a>-T_jTyee ze!i_^--?3gpZh#EcN?opoL=9Eh{few!4n-vkK{ww zs~L~=3e;R*qGP(!5s0jeHS~;nGb1D*j&$_rA!n+lu6s=Tx#k=u&dIp=1Y?WRI&y{5<|*5=HBW z4Yn1;=UAx$zsOe5rYCay-)0r8Z)~lwpNR4FXJzOw&sW$#`YBvxe`=47SJ7;L zo3lJ$lTTwcGlC`=_F){B;JF2X3h6W70|fl54BKJ^g#8iPSaImC#+5Ti%LZhndtY$j z1wTf4OCO7BL#OY0ESsmthWVe@*N=_z|0Mpe;r|&3M|O-1pP)VlqV`8frc)w2YX#8L zDDH@-p2()&sCXgXhr6ATOBvI0-r+ygP@@{M9GDU&i@#Y2>;?wOF2;sZkSYELIo+5t z|D)Xh7~y|J{SQkYPA>pxE*%&~#hewHWYw<1__>?nWXCsg&S5aJyLRQS0aWzqY`@~} zd88hVOac~XuRF=d%+jzE{nosc6@}#|El^SdM+6ObEA7uLlCo(!Ge#O#H=QnNwhzur zo0d(}A&chwM&_keXVX?I?Mm4L{PxPT?Y*b8-^yC;r}fX4`%G!q$}-@mZ565pmR(@0 z=BH)n@zY-O(;9ogJc>RQtYz4VHV=k?5UxsD5b{y>Im`AC zCG{T^mm~EPVh7YTQSo`8Q|%*Q$D-z$$AwkXNmabA&41|X(MiKvPtxVZ5zbq8kTvmm zSQKv5AtdJ*(`Rq$uvz6K+_u0ZRBEM~j4>c&EyKGwUIQw_P9;sk+jAcmpSez7q)n>r zMf|A5Ps)Csll_|Me?_lVCY^?9MdYx2 zGndHFzc_RdaW?&mG_}TRo7Sd%r{&;*tPp7$KsIWTxV-*V%)+m7F#H+q4==b8U?p-u z`>tPh83fCrjDLOMGQjm#^rQV1{buNiWte%>nMYPlPNBx*$p~L?FQ7USMlo{LAylGP zCYH9U)cBf;WEl?|#>+J!N^AJMSKS8&_HlxpvSl*J+ViB9XY@#9R?e+&p7h%swEw)h z3$!H$TD&!a{7R%Fj(D2`VG#kb$gfjqz%?d=V&|n>)Yd8Rug+TDO8%C@FodExN<3sr zK%UKaxBUJPqK(zni#D%fHnbXbw<1)rcJtllxy+U?hJ~|5{XC!$aPu_J6IY1PewyY% zr9t??T~V0;aFtl@uoHdXfFA`Y6dHpLj8*K65Ys{?`~zeDeAX$Vgt_qBiMVV@j{)SJ zd`u`zWuAQ?mUyZhu>2Yz?U4G4QwXceux5`Ues_<8a(i2lduEx2HeN~NWaU|K$`hM~zFucOt7txhUbr)Nt!kWqap8pdHi17D z7w?wE-g*I#za8)9WPVKcLVMd1+Ct<@6OB#QLg5q+iA;V>5Xq6mwEjR;dunO(X~%@Y z8Ebeo@}dU$tp2Luj_MNGIe0L;8i7=UoKckOr2EZrBR{MWUsFUm#CtjE%4q6P#0W*` zBkF%x`XJ&U{i4hs5^!F*K93`6oX_bnUzw5Pc+G|H(;tYJQRZ^J(Z9+8N&9@SQ`mp8 za4^z@+8GUicD2zl6xh&N9iCHS5#aj%5D2N#$rU@anSUWEGJpg&0?s2}j zPNc$NOSS~k#&r=AXO8Lp` zLX=qtsUeTGoGGwG=I18Gg~CcME(HZ0QVlw%)4G9;?yj~MD51i>C(Ms?C){DQRPlS4 zffs05h$KY%Jw4G?x8h_q2P!*OnfBEIa~YRD1uhY+UrB+h=Zorfd%JMtQ`~VW{vkhl zI5jiWjPC4S4|>~PB1Qg_LGy}{{62W4_niRN1|gxTHG+zKViwK zAubNvKI_fhVtmbD`2`$cO)qpy_B3Nn$K?I?Yx~`CG22jmR_Xrrr@+zx z2$Y!n0kf~3wdCsX*{T9mi>;oh(bHEMAPARQroOq4D=S_+^V-*zR9MX)X3Cxc9z6#{ z%>I|tB-EzA>Y+j|+$XL1LAUmyhk1T1k0ct8-U@N5pBT|6)F@jwqIMum>K(s#f&zj3uO|`ii(xU%3B~ryX2IeRiJ2J& z)DH1&@QF?)-eg*7`RmBAdN#d+!O`gq<;pKprvS3d_M3c`(boRJG51TshW;#~)~;x; zC@eNElb<4NEF;5KPi-2u63c8TY}Ib%x$}Z26QA{qhHh%-F3_EA=<@~9hG*(tBQn&; zJOPmEJDtna^7ZKvfL)MANc;iJ5?g!JUFq^Moy%p_>8++?YWw}E9=;G$a74)&05)9! z_UPJj$v*jbO|D|i_olNE5_ZYm!~_!ptH5KOy%`yYLxYy0-wX!L14m^3=D3=Wx6}j_%;{WdaW9_hryT_SbM#8q$$s;v|3S8G) z?ex}QiW%X78mgf#y$B^EUo9vU_r@)KyQ*E|uQ7iOLztE=Bs z+gmh!pGm4^znt6^gX@l7A@1_}@QHeTm;p}p?D_@T7tf+Px1q$#J%@EpwF{gtz|Czg zeon0Z=;P~dcD@f-RiS2{Yjw}e7R7&NHmG@Oz5oY#r<085pxDUA<9$LYt#LU3YFM}V z3e%@fsVxNAtQW-h(SUJr>FKAs1^e(kVR5Fhw)oSKr^j{C(R5VWe$hM9Uc&=lWzx06 z`ctkyQKNe4^2nY`k1`P@8Xd>c|ZkD{p|NE3h)B_L4mWG z@u{n=b?;UuhevpmClWR=(Q!J0_7F@;UmJ*=hp%B($7C{jY7=Kzk~q^{R+yUGxoz9F zPo5k2#Qt(a8_(EnZJFXf*4G1bMVpnHpw4{G^rMw{rKkKnEdEmeklAV6P9rp}FbcFzN5}vZWw)&NSKIQ^}8!N&<3W zW(s}m%XgJI{|L^VP2d=Rw%7r=VvkU)BMp(<@u&RHv7#k^$1~bz8k&W-hX=2DF3!*I z-*-XoCO)t#(5=GSXPZBm&WdqJIyua;pE4Ja_E1bJ%0%;Jm5p1O!g~GBT}NhxO-|%$ zceZ^Qg78Qa-F*{E7+>K~Lr;~|3898}NKK9#VEp)Scwu(DsWN%l0J+&XbZm0gedV!{ zbIRkF#8St1nq3; zcnwsKs#Mt(FV&1qR#2l|@yqf``?3L2Rw_pRWWbyhU1J&f?Dr4%mWQqOFE3b zVFFMQ0p-cXD>L5(26r5K!>f|<%K9hCWxMp(%Ei+(ls+>8iIInqvKsx4cNjEa`=g#2(+eJol8WxheBGO1p-aU>K82pm)NNKEnym<{EoAlo&@AmlU=?RC!YRUZ?{ zi2Tkeb((3PPNDlFtkCJN2+h=8ka-$Px&0#`ivQzonNR&ox^#;>Q96}w!&;HndMq%O z;bwa0TIZKQ+pTwWbsay&Okt*XoEyo)bARDb>U2`*qR0-q=!BoqMMse?lJ+1VY)YN2 zbM<93c#zAHrJaf6exPs{;7s2V(7yeXl12Y99j>O7%oChIsA7g^xwXkz33p~LHH^2(nMFP#mCIRG?^3MDY3D0*1BIGok8yP-ZZvY4 z@hKJzi%Z2V7Y3W`ZJh}G@+Dssh}#~GtSU106Fe{u4-IaJEF`FW)7V#*(3%E8xYgAV zX(fShjl%f$Jgy}k$b90C{R593N?ud4{v7W8m^~6e?s4%ZZc>FVZNW9m) z9w-WW6uQ96UYAK#n*J+o?;&S&ngGFq#XVCuOE5DhHl&{rj1s2WXTX9{1jhF(E_J`T z0H>8SH?Itoo1EJOJL4*b+45VdCh2G(E!D&tygt+z=}9f(EayNtf(6Xn$JNbwQ=CiR zN34k)&#o6VKK=CpEO3l2zE{|mW8i^j1>k309{ z*qK;XK<>iPJ8{1&vAjon!*C77!04T_D2FOvMorLIn%2DEfpqa^(2nUShj*{ydCj93 z$)B370o`6*>p+t$W{+`>qT6DrQ=x9Wq@bg}2VZ+77?_Lk|KgE{P&0?Dlf_#KClugU znK9BxEmToyZ;T~27R)@<`KPL_{l|n<_0VmV==KHcs|SD7(XWY)wB*KU&dt|6G#r(M5C^dFCPeOb?(3**B;qi|kdiM>rD!Gly(wYSY)?c?T8b;dzwP z*T-{K4$n_IO6Yu~2LH17zGUz{)Jhg@DZB`L>#51}qk(j0By4gfApvDU(K)6rs2mB4 z`Th25Ditc<$wS3;MLK(=Gn>d9I>n5KufgZKQngHOIv$j3{X&)mQGOq z9-=Sv^@Td-4|dNu)3kuDbbfG!>GX!%)vt3`NS0NN+)($DF3irm%Pjg!N9w56Ig$RE zebAu1dQvwUIa^_GYpG}75!=8=99uEBUEF<{TzcuBP5N`ByVbnJOy$qpscXG@^fD+{ z61Q3ii@R0T1DemAB=E6qjWEq4``zMtZ)`mY*)>i6jErV%t<@|78wFs<4Md6|Aw9yR z7=NT$8o7y`%92iOOSjbvGg_L zE9MR`ow?Lny+)P4i8{)I8X98{1LM8Imdn*;)wLgL(y=h$3)eAD0g!5{k$n5c_*PRFHQ_Hfktskqux1|NEGEvXr6Q0% z9Q*roAkBf?!O!N)&+hWX#n+rMmA?ip(fTBtR?87SN37WD+2M0# zKfY|oWm|cN5^hUm%i5I9$~&3VnA_1jSvF?IxJebRUK6d~*6FJdpMvG`% z%H6A_y#|K^&3(dQ;@@-@3Ih90Q^a{*MA3dS`OWDE88aFiDU_)Uo7FLLk(D3#mZ!(8I!v%uk%H zb*_k6pvYrU1{C?W7nxM#y+^r`&v=p27n{+YJIQ$4A!3sAODpZS(3oP2>*1v((j%#* z0=4=;oZM+dJxP2;GC1z1JPc^ElDI@#qgo4knSM{EWaR*&7?h3W&Q;iZRhS(g#V2Pq zmdi$^zI5I?)ZCoDGC5iKD^lkb=+XmcYX>-6fKww4Zg{cA^iND$W8%x+p{q}lV#8wv zQ5o?PU+}EW8ag*!aZ|YvV*M81$upC4unVZG<<48ZA%MpG>?qMveFb`S=Vca4E$7iVESfRCk$cWc1L%rzAw ze>~u_H)yh4oTF_TJ@13!lBqN;Gfqq!0(;KMdDWxwgc@Uj@0P9OQ44>FA4elQ8sbx2 zq5m30bcO!9e;T-XzjmuAl+VvEAtn&rhM(6f5h3>=^)j;x(7zKk`ygi^MAvK49!vN8 z_pE#gFU9mj^gY*iVLkX1wx)~_;%(v zV*L5jNBpEq@)6I@VyyI-#ma8sdgR(+KJM>r7E<({cyWme=Aq9-=Df&2^Yw^Ry%GHY z`Jjp@Fp{X*<<7ps$(_wmBzDs{{5n12r&MAury33DQO@fGaS6kiwqIsc4+sBs8q;4t zpGhg%m(rD?MZ-B-w+w6E8FCO}Ikw;oH9sSBcA-@muQZbo2Xw1ar}Xa(E$UG*;=}lE zvHERgp~lx(wu~MeYJ7p;YI`kIHwb8J1iCXIsGemnq~JI;!YwBpHaQPm{5k7e#RNt;|5a`OyIbGo0Q8E4tTV6L?PX{__3KVq0% zMzTMqGY1kQA`ViWV}*SrotE?saRj~%p{gB!fkga^;13x2C}?B_(RiS`FNmtntT zQe}WUBQnW;-o)wYnx96Z>EQm_zTsbca4HUS_UovyTI9H%e?5%3Rxf!qZmm1>p5jpB z>txl#eH`ZB#tME;iLv_DwpZAPuY(_=^A-vkvp@YlI(EgUs<)wIa{X!0Ne3*W=L+z)UK{Kz|UflRQoE-*q%`GEEGTM7H%Sh7QGx=^b0l7 zQ3W|$$0z$XMjsl45ummH)4eXOsvOxi`*;FawrB1x#W7~Ds;b=5rze!K}XK3RB&D(?7GlxHG(gI-V2^RN!hmq)9L z)H;@jVPwTYZnK=$6hN%LH zeh}B0GlS9B8RetvibfypE|myfN$9FjLoo{{LO;N8!Pn?BLk-*DzRVs3T)Fyn{qRg^ z(e;A1{wxA(@>>u$Ol{nRj5o^{32r(13UB ziT5uzdK+p*k{1=p{WN(toTMz=h3M>@!UDYF&d^QE+{n6Tj!PB(&fAz-A&tnMG=TS$Y^zkqHt(c_ zn_+mpJDzX?)|9MH6tc5^?bX-HUPnbKt8?UY7dwg0qPmN5N5e)4-UsI{H#fjS=c|hT zw9)?;Y}LIuk20~jU)ED|s8R1HTAtxAagPjt_3Voj`THW?eq(nK)6oHx4&e61p2U^j zTyn*+eba@F!ou*@Mf?^0av2J{qG*Jl-+o1b0f6naP~&BS3qZ_+q^><|x%oEdIVQWe za_O4}!GXT>n6T1vrP!JC6Un_sMR;l9ReoBno2Cf;OE%6T7Y2iUeLu&KzTT>e5H8M< zdPhBGet|GJ-dSUs3zKw4+XueShlZAr%ooJ;^N-==^LttGFh^$@%5G!P6c7?ckMq|2<%^5-oZ!FTi{DZfL6;>X7!8 zXbJQ)X@7S^MQ-RXZm8G|UGIiU-Owd&DC~wNyP+~Sbfg<9cSGNGLnGYK=X59S$;~ma zXr3cvxgkv)geJKm^ImA8Wr`b0xM?+R=*Mnonj1RS4b5;v+S;X-nQmxjH&pM2Hqa_* z^W4z0Zm7u(J>Z6JaYHw_p#=)XFQUvn=Ib=R7Md^oZMG~nU;D8LPPDX|@7_Kiq_0uL zLX1*o99rpXlz9PRoq&U{u2D5g?^xu9)qqLA-3_a0rDx{A4q5(7Un2lb{F%g4kHA;C z%rS0Q$eHwkZn)kL_jJQE{qVa?1eBlQhtqC&njik78?N!gNjE&j51;RbC;4GLN=|*2 zAC^IxaFnot?>laIgdf%`wxpN)`StE5;W9sci5m|4>A!NrrGEG-H(cz8&vwH_emLfa z1AcfvH!Q|)6}^IPSi@qK!tXQg7DJ4VSJJQkQ~{;iqGZK2-SZY&cv@{!B$STx{|W_QSnR zP+FHu6IZHg;uvQoPvfBBvAQn7dnt0fYy#|%Sj=+P$T3%QHa^}rv+s`?5{fC&t*SR?a5p zyY=Ig!uUpX<-b-N78BdB4L{((oKie`+rjHqM>jw^{+y>gnfZi9$8m{}117Ozok`)y z@uuQ9N7~QByvYHfr<_}Bqs$Yc#>GSM}#rePcOfO-^QpUku}p3uFXV)}W7 z^ViNojV}%{QWi44qBTm|N!E%;oMCywyt5#rf50=&_P^vg@(TcwTfpZ9h*M6(7?D7c zyFzSSt#{7K)yNZW>)CWvm1SO)n&7AwBE)d6AGr?L3-b;dE+vF7ycc+9mgCWCKXVA`s?vEz|kdFE47u;XU0 zUsd1fqS|CtD)z5-du>dOfnx{$%TFai_&CoZPyqNyAK=j*z~+*H%TL?s8;MTN7Tqeu zG;=rUBY7;W@flZ{LvUF0?0v$4q=nv@iT+UNk6E)1nNE&RH2awH$NCQOGLem|v;_as2K25Sv74bniB|Y~9ni!_U$ekId7_HIY6# z$291VFWNmT+ipoCWyyLpF=m+A+wh_Eevia^1zvv4f<1fUwK;iGamtbnvJ$>sUFWFc z@3seb6C?lv93>+S9INXdp>I$iU(Xv+_(KQ(y}RR2gp2=}FR_lQ&+_m;yVyCBwHP{M z7JpS>@Yjcr|ClznY*+k&Az8S;wv$6UOCoX)*|0swstsRt*T=etlO>1lj!XU3@dJ{< z@NRk%pl*N}eB-8Qt+^|S`ls=3`e88-<>b#tI(k&A0He@ zq<2P)ZR=MMSp1$O_~76&zLoplbGLQ!<_o!rSHco6;Ws4U%lvLH#U3+naskI5f`24E z9h|dkK|nQiWl#WP@~azYmVC)$oH1tutN(^gdYtHD2pI6-Zem_5R3yAWJ83;L60nbj zdp&w>IkvDz9G~0xIOpl|`DbY7V&4i57`u2kne?5Mo_UMJrtb9UTE6)QJ1l<`0{373 zDphqkjbw!M-%ZpOeu+7#*y&FMfo+(9+?m7`xZAa-`ATipUBGLBR_av1{xW$fd_2l& z`@YsGSa9R`OIT}Wjj2uPO5=TnGnBrRIUDh<8-CpkMF za_JF!R0Qd`dvc5TO%q3{vkE5-_|g7OK_I#J3nB4Ryv!uqd#@mv4lXB21b5yerv#-O z{lZqz*SX|G8A_qS#AapD8IdCYpal1Oes`J(6b;?DqNBIu0jp%s6TV}cr1%DV=#|uO z51nrQp3C2kxlN`XJ6K8k&LlEg7~G0lY9{X=a6YQR2zLfp73W3bJ}f=0WPA{$$Brq$h(nlE$dawg1~wbM42~zTSsb+X`_1Y)9>0NSQq3 zM7LzWv8Mjvsy`pU{QC3p+v^+Pcdmi0o^AvFbqv&G@C62K7x)u7_$>}RF;jy;vov1y zh=)NRLpdYwMYj{ShhJx_c#~TX2fZLoVKW_4oD80?Mu(oQMqA@o^2o>!lhX?m@Ae2a zCIPCd_KRk5vGZ#<-reYkUxis{_JL>+#=<;oWd|k+^_Sh2>}4O17SzrQ%Z2k%i*#5; z?_YDU`wa%fL_FM7+CL_T|ENan%-C7*NIfl3p4$Y@dzxr94rY08dk>l5&l(nt2qqSwl>JSm{!3Pt(k`-j%ZkK?DAS4cpfm(SbdgV`YH=x69ih}V2hLM7&D28P$h#D#?gh&vzN zq=m?s!1If)#>%uvx`bha&|$ntq!gp*q}^B6+~h1i-RBdlc6@1L>&&x81$R5QAaK>G z%$EgxXwv0%h{9!3recZCg1RF#%UG%7!^u;Jpu{CFE$=M(B{>0cXQ@^B^G(NxS$Gz2 zgmBAUscZ0a+q+;?@UE$}Hh=fu?eF@Zw0|vyK>fdH|1NA0F8+Lc9sWbQixl@Ygtl38m&4zU^ld&{IRRq^pibo$HKW$e=#~mLyC~c=FEl1xKZSMW3A_awkE<2UBP)ouLd#?vJ3 z!gZG1MmC@-ra_k79vqYM22ed{26o(DXx=)~Mg`yak?8RczM;oT0?;GWz^O69Mt0z= zjsSECHQvid4u)_ZL+jchqZ*m!9ro7&AlBqif--^5k~gUtPB{zBUa_Xqyx*tOCv%vc~KEwwn`Fv0% zJ~%put3k}Dwg$1zlHMLZUoE`4(0%*%L-VvxH!64*O@~stl?5DCE*!k#Wx^i)WtBAa zzl)C?Z_fQd3u(ii7f}xC)+NVr%prcTSTvS!ddxhBqc?@K&%)b zb>|zOd%OgfvhcCusf}rjK6Tlvg9kTI_Q!<*B)~%KLCps)U*GdJ^F?T$JnxMPUQi=^ zjlaHR$@d8uek&CwKEKIcYw-P;RuZ#^1Vh(sb=3uUEguHNq6}+C(jH>dFyXq zp4|pbMg{kwa45wcKJiZ<0*0Qhd~@giI`Q&(IbKGhAv-Q`8}$d|QS|fy8jxHAd_3w= z!KE+V?+?4Em;=$9FWs85{6j&d=a0Lt`ohI$dGqBD`OtX#R{FvV6p{$ZBdU5VPu#iu zyyNym^Hv*rZ9G%-a^+je%LEL)78&|^p1kWz*J}@jwUh29 z=EU7CR1B;<^`o(ac6OlrL~Q0!W*$`dK85%k(wddo;e7iFiezGKf%03=t+)CtQ>kT} zLsMEi9(RY@Gj6}+`nju#5*ituIOkTlIy=J@zsRn07q8J!N^lx zU3=e3{-oGB5miujm6xkce_D2j^Nc=0?By78$hc=1>0I_GAm+B=yDpHLu$r#?K75}J zwx2F$qkKB}VD584?lYD9ydw8`ZtnAx+-EHJd2sG?uiR%*?(<)??=}2N?(?PG=cBpL zKjuDf&V43wpEGiwXXZX9_g*9^7P;oade0iWS2j9u_gEKSxk}FSmX}*Y^ z*7Cq1;hZ-$eCh0lAt87i^`&l))UcPlB)}i!By|i!s@`X0_yL?b<>a>UeYo_P(P2Ts zsp-EeFM5|@ ziVj|3P;7|YL!UZldT9$e;7!`8UfKes#k{l?Lrl3ty|i1Dw!dF)kkTq5Gb!9hjrH{s zCLZV}%pk!5T4%G7YMYv;dI{4=NGstL5}FS^EF5S_cu6%R{Z2_|Ga{R(9z)Wqh+7@B z56)Fmg_1&Hl7lXDMm0#<9JrdDanbg7(M8C}D;N!a;|-2~$YuuLRzY2sBR+ z2+w@aO`1effs$U6#fi%9^k55bTTaI+FV zl3b#yQ%vvb&Yc~sQ^FcA;bwM5R8=_%rzoMtOL)!n02kIsI7|t5dkK$>REgjo#94Mj zq)A=#b1&_AH*GUUaiwXI>s;WaO*0?_pY_t}m3ESs)<~Lh#1_1VWM`BY{UQFOWD2u` zwxT0m^k0ElH#_X$d5Z4mH=yIsDfc>^c0%poI3;hC{KL*QvpRXZVL&U*HAY$&3s)y^ zj4a^0I(cnGOh%zz6te7VBU=@u+@xyz_Q(?^Peo)(wS8k`jR~B=of)z@CcsLrTDCM5 z9HF5@AZ$@^v1*~gR({|!fQZFvdueegcnzaJ?%84_4$9I%(!)Sa@;#-VbO&2kK46v3CvmnCY^-aHeKFHZoP>7~FUH%1nFDdn2pYLvW2F{C`fZ*|gT6$?U(Ei4FMuU{Ht zhb~}Pn(unP7ixg>-Nd&$rXPyj!nfiU@aqoeM#-d|Ivj%z2vBB`_V`# zFTW09-C`Izl&Ies#AKm*0ftp(2NFP2=guO7d+*Bi{58lV$K*uiZ=dIvn&UfR-SV?xi*`VCWxl$`R5lA*J z{gnjsV73x*+qU*W9pzk6?5wW>JT6+s3fd`HCsz^Z9XL>~JB3B9W{(PctGh`ZI}29` zqCzjI5NnY+Djgh8%LiX_p&$zJspKQ8w`rrS*b6#ta94sI_oGnERwiIz$&Rz`)R$N9L03&RF2bjPJE!h?d$jtotm>99sRQUT$Mc_Vl-_} zUo|av{5G539p3KY{MI`a6-X-C~{s;MC)ll52w^n(#+bu`w-R(3IT0~S$a<)K)!$_%Sk}h zTT2W18`KvQ!ZcriTZ@Z`qBPNR9><@V$$pQkUdDvPzqNQL{_bpYG`M1PabH6HObm`; zbqAnEJ1R3I4(d%bLs`GDx5VA^M~2O}gzopk?zez?ZH)U}#CI)|rScc^{VQ+Cl=A)h z2sb{=_uHCF$y3JnMuxk-%lUrSt7in?m70o)kMjMbH^eNyYxi^Gp>SX}3V`xV;rph8 z!)!x^=AR5c*%hm<+uA-ABe#a;zX=Of*l#WU6pA+2gDO0m!XF_S zof|4S@;~VhgOmXemP%FHTBTh^T2(DC+PHZwT>Rr|KWOy~K2}{ofe}pf&a!B(M3p_B z>6BT%Fyh>+czZoj*aq;ra}+=r*oWyOIdnGwthA?=R;9;>1N`GxkOyMv@#S84#Egkt zrcIBJ2F@|RR$;bItxGc4K%~<@=Xy>-K(ofR>J5*k z)%FaZrauA>16PdJ>C$^aZP*sbd7!!3NDVGo2a(MFDXBhL=TV`^I-+UNc4QrmY*t#? zy}H%dm8@aXx{!4UWPKO14xP%ym!Sjy+7OxvP7sYCKh4X#I;dt7(M*M(rZ=img zj|%(8+y&mhmD23%hlMr2hMMV0Lrj8(nEV=I@@t66uOTMCQ^Kc4IPdaKd<0hu(TY4$ za$;T!)qH|Rxey?N9-2o`pGlJ?X9)^c;v-)P&A;E|2%bh1ZwCNx{9VS!n(EXLcf_#> zW0xbiNkzoga(V6YbJQhzkxnxO_a)sY`gg#WY3F1FLU&evVysE}AQIk=Q)t7RJ65htg&%C1q!o_wg`4Y=BompRR|%M^Kb8D3=1 zv&&evc67@@A(n_17C2Y%%0Z@r#$7uP>uU*Y{%I<0;)(P@#%|huK*Bjz;`3cX4a?!O zWH3Va_+2l}&Ft!PH|BQ4Hh1&H>B-p&dWyudp`G6;O3`+!&By(*sDrqsS$>C z=y$F$c&t-xb1cYX9Q3%btCwn19EHwmdmq$3%|B-lOZJU;3?xR}5eK~=V~T`@j>KDW z<~>9J_X7Y!9vr17by0Hj?XMkg$q^h(RQ_xU#;>c#WqsCc`9~EIGP;-GX@Bl)c?J>5;78+f zM3;MCX3M)!hr84KHpCK1;hVQ7`5Z~CoZgow>Q;=+in=F{$PwKWbw=;|EAbL{M#@#{ zz>;7c%|~@|=-$8>Y}UM$Sqg3Ka9M2BX7gu zqG#Sri6{y+l$r_=4jYwh&X1W*i`+cfO*rhAT`&H-`O*^*RXY|C4EC6j5LFyQ&D;c? z^5ColknR#`woT2yuf9D(eiitmw>KLWbzi`RISUvH&w63wU) z``0Dl=HB~vo8p}Zkpm>$a{u;hehW!?Y@R1s-Z;jSEbkr$KzVw&;qX;NRwoZX5%i`1 zNk9D0b-?I};^r+n%io{%=;}CbD=$S6#F2%k-=KO+&(S|;1-2ZB*0?kxLb(aP>YdTC zO-a#xyAwecR9~z;$A%3_lo0!E`b0T1tHD8^vTw7DT>u(Lw690I{R0>6E&B=dJhZC^ zZZF`MARmNwO;@z-+zU- zmhXoN`GZYQYa!2)lWxj&_A1msb@m|x^RUJu(lc4|5m;oJwZKPnna;13f-1v!6$Ry0 z-%)*)c3@@=J|~P37#d8PBm6gwvm6O^vfL%Eo7RSU+dQ|CI@U`IWEP0&L!a@Et5l71o=q{&r9&Y4R(I2;$Qy(I4 zzH)dTHYztfk358S^Hv}37#&C~EPEFj&D7g%jEZr;4YMvZ0&7G3=Q|!S34G7swgt(7Jn+KoWbmkw z-RW?D-TTD^ zhI1`PggrA{59SDvji@+@yue2K1y%2Lt||ANe1WLUobcaVA`e}x!d!@A9xNc==uY`%JRxaU_d z4Zmv1>MaZb)+nTlUq#)UionVP=%E84QS?Mp{!J-wwWiIUO9I&dQPC22;n#CR6edkVTIx~lcNZx0=}3}pbe zk~-*P(gCkHXaDlSyXYH(S7+Ayz}J1f@4@G(^H;nAe7kq;&PxYxM?K*CGz*_e{~y8k z%FDnvo2E5&9*h$&^!L90oL6O}RPfh_cU8o-1bq$Jv-=Uq9<=*aIR!jf@?$c?(~mN} z?S6E(>8;w=KqJT>GEBK~5K3iM0o{ezyby z`M;RlW=wVmahJ(0yS30=b8wD$+ZAOky9)|erSLV;NxlfnvvVAP$dO7`d~7%${g9+n zGC1w9?h-w3X8XbSx?w(n2rz$&LR~d7N%O1{{w+1pZ;Ssr7ymPNfdA#O?PvD`5L?23 z0Z!!dx<5p;@ISOG{w!OvGa7fpohb(x5?IE<)9zFe^lUlpD%oW!%dW_n%D%-Oi13&E z9-}2$ZX-k;Zw&KhBSaznbB=t=MgNPET=#pcF?7?(0F}9q`Ah@s?;lDxb!UL=d%9Xe zb>MoxFj9~V9$>H^5E;29G=ET`DrA2$8QhC#j6Cki%h79C7I&7MOPsmW_&6sr&SBBhGx%HU5%A-(lx9w-R#Kfz<^YSPB|T z+lvtZ>#`nZchhMh7X2zZjI#bpnBGVhMhF@^HttZrMK6?}?5>B*C}i`+EQ;L~Ae!cO zqj2GyZZ~|oYu9cNr+qnOJAyb1kQqu_g%IjS4X44#li=%zdT3#D6H{eX>grYj z0pk^S9FQ-uw83n)UP!4KdAlhYy84H*_1J3>*pK)YM4vf0bT|bG6tmZelvDoXsjxnC zkUUZn3nN-FMugPCIeN;FkQ$UDqiaoA;apA}MEs1bzCcTj>yedYm=i=mc1OO^j)+IZ zP=oPjr48usqRIHCLc>Ga*)-O|?0}y7x*=u5I`o-5rKe>e(7H;GTabNx-iwmbgB`9- zsZ82sU!zo*`a$+@uV2XxOd#H(u&VbW1XLt`fCk zMtrR+GWlzWk{QplU%N1|7FIp9+o%_RVXefdZpwnwi98`;1hZuK@%au(d746XZWr#r zA>x}6+6gUohK9vUeEIyS#ZQ$TEpoo&r?3jTjv_=B$LuLsq@$#0=8U?0mX4NtVQ=>> z>aBmG-Z6xzxBiJv37_KH@WxsadFVwWjSehB9_M#u%j>fKc~z!xU=s~Oy+ta2SsXQo z5;8~9xf)gX`CBFapmW|u&?u#B*!HAZNm>`u49AN19vhU0huCb?sM}*-8tY;oSmE>} zPQ#5&$a=En*2Zkz|Ho>COOSWsN6ET_F^>g-yD7Q-VS>%5p(4bzyu$=ip(KzpzeoNE z-9zY4vqH`i;x&YYi6MDd>(aolb&k|Kw$e&k7eZurYI_}+$0L3A`6?dSw6~W6kNkup zRx>PaPF{&yD(#vax7agSDgXcCl$X}zamt-$ly>8ksi+qs(CuTp6X+47Qa*u@-&q3P zN!pGH^e()g9YoH6uOiShehLJdfFClKKu8HQoc?zNTJ%yLf&M`!Z8wx6EO11i((O3t zws02$y_8R&*`)25K#zYfk3i|YzKTG9@>3wtU})+RNL=)P#X;ysuB`Eg*A8XPP5;Oe zDBsxN$(fEW+tHGoWzO?^LdC8N{Nng?W^unpNm`vsdhKAgi+$rI^fz1Kk9dlS?&L1^ z2N%Xeb^v3jp|9p+ZS9x;kKt^35;*50s&XoW3+FZ8-JX`AhH;Ep1Lr&?{}1WutOU*# z42T?@&O4>uK-7_;dUo`r*}Shrj%$34V)Ji}Im69i53D7ub#`dZ@ed(P5Olq0IR~9f z#aMR`nL0xa&vO>aP;smQ@_)ybcRc}|lWCn33=NSAc@X2gkl(1?nf=UF4kSvKZ~>>p?n8>2M>|d zMUr_-x}HNn<3OXajTY=dFK4v^ot|iSHkbwd&0iVAY;^= zp?l2?Rv8M-hR?^{4WzF<=W62jkT1s&&f$V9Upk3ho5-URZX*oP?Bs2?X`egV=Gq?r z%d}I2{ag66THH zUh!Q;(vEl>n<0AuyM;YI|8D>72^Ulx_J8vHU+}p|X83#?vw`7rIAN)-G4$HVYj91-j<=x*r>U2%8l%yNArM+U5<9_KUZ z&~7^w#`+eU6yI>M9$yB0m(X-x&(4scrfbiZaYd7(9WHz({eJ}C3vIx+x+{FEinoIg z&MRXBQ}7izCVj`e_f2tlyV7tTbT@{i z;&TJS-3*|cLk)7){r}ke4*05y?EgEH`;t6DLf(Tw9+2b(2!tL2p%YRdkkETkq&KBW zvn!&gh$uF6)m5;fYr$UDRa^_!U3Ay7?poFgmR;AiH~!yqX6D|xFVXe)|Ly+%y#Fun z^Lg*wbLPyZb+!k=u!(T0BAo zx#Gr>EFr0ep;k*@3m{d(Tu5(rdUu3K*tuIs$>>a$4S)WPQ^(58{a2>y&)aQ0{Sc(P z3ped7>7K~c(vi-fI81{}STvdjPf_B3Z=hA0dGN1pCUz&`+M;SpxX$&3`-dl7xBo%m zw*7`i8>+URaku{89nZ!OnH<9!zBW2+OK1|Vdf`8x_cS|i39ak@#3b7MIM7WqfIdty zgo8P$tyP5ZJ&JkI(BJMX(H)og&wx&+?Z;ojemG|9g2&VK`FT9gh?}jU{f{<5L8m>Mj{mG)NAc?YcMxH3 z=zT~-AJqB^2?plu{o7UAqdE=m6GQp?-$eh=>n%3(E1vnSg4_5tB>Ue3zj*=m*(i^q z)1<B;;_B(=LK)Iq;X*+qvu4ogq~npi+u-ks13-_ zgffWGJ)q+apaUS{F&EQ0i{W9Ct?X>j_l8cyFMakOeB6xLTY#c7F3SZ_D6nzfqkC`*%P7r!9#=W0zgV_4Sxyfg+TYe4s9LS0WZcoPs}fJJg`-fhN)q@ z1m)dN!X z@gd@%XYIC3F6Q&4i|~I`>*kK!x&|IPEi-sqvKdhOr^C0z*yu<1JXA`JGCx<{%nA8) z+a;Y};F*WE(d5jbHo_j9bRXG+(007@RaLe5eBGiY4t?;quWmV zL9A_q|41LPB@HLadqgo$_lQAN>1#S}PQwFbc>hf(2I7_qn)XrqW!0*^>Yrl#_whiY z!2720FzufrFnM1Ms7zmvCqMC|E4}Fjw{GUYpq_cfzk;ty-~XA*53ZcXuMr)F_YSIZ z@Vp$oxV#)9kmNJyp7msYm)q83@Xp7N>{shynC<@_s~(0{Oz(atrf-REZqE9kN61m` zX2XAMtUdjl>@h(3@^)?2p|1_^{1$viILY47jP!OgA85OWBbSr`HR^ z@%GyZ=%I76p^43JR6aoCcJ!7e{5IUtTMxg`?ezln@0Mo6H}Avy__sE#rDqH)w~P+w zR{r75Vd3B6vF(w6z}YZ&^nf?ky|U@kbsfSlZ7yp{rSI81C0@IEIfg5}Y)8M2|8!J9 z!r=c?$y>lA+(r;A_k9IjX+C~_>_Z%+`}_W*k*v^r{qaD(HfYk85%DcKJ0be!M+%=G z@Z`GmUi7E_+tr7)gv&BCpIGoY2+5?!w&pjgHR<1wOgj(oFYue=-l|o%}qa` zzs#;2usr+Z5~QSa$8BkG)5xuDCyspNZ9H-J3Rd!i zVuDjfZtYHR(&*0b^6;Kd1Ll$MQ`Db4ZJ@G7Z~g{<$2kno;v7Uv(CCo^URwt>n}McY zsp0o0)yEZ6<@gYe#=M5f)a#1_D_|xyjo%j)+NxsMYvsXxROX`&^HUmQa8}EnegMBk z&*GQn$H5}Pmyl=&5MVrbu;{mh(`-6`NE`462q$;>0Bi~HI|#?HbPnuh{3gONP2pHD zel_8AQ}@6lra^epI8NYyVEMLxnRg9laIL-M3a~R)9INTxUz<9=wCmi0IbD)Cp z)r7d36C>Ak8tctoCDd6&mM-^Tc5gm)x-1LGGE-ih#4jGs+7hBMmF_(sAz6F#2t;|cFVcm?CD3CBS`w4d=K z3GYUDobh>tcPBiX@tK5^H+#Tgd?MjJ3IBxFxS~43O9+3H@hZZ55x$S{frOV5&i`Ci zR7yCW9zgp!y$j)Zr~>V0ydB|Xgl}WKHQ{{;-@tg3a6AZw_A}mu@cx9)VO$bEfbj8* ze{&!3frM8u{wd*u2rps$1H$p_D%#KZTZ9iGJe%=X2`?wyVf+QchZ6qDx7`1PR}lUt zargYas?cQbwy;ll{u!T8mL4<~#ZWC zD#p(yd?ev>7~e>EE#c!CKc4V9!YdeGP53CnOBg?r@X>_F8J|b^7{ap|pGo*w!X3sZ z5iAf z37<+h-R?YC6eWBb;j0*LLilvT=P)h_pF#L|#=p52_)Nkp82^;;!w4^7`~$)dCp^yh zTZGRdJe%=X2|t2xhw&E(pH28D6qP7?n(#S&KE@v)d>-L@7{7yXTGB;fG`{Q89a4{DqY zvi+e2h(7V=afY-2(Px(e{7xgf%++`+4WHEfv>?)F4y{!9=xUtexn%krhZY3-n0jad zq)$90&X5)``k3-*!KBY;S#gH6;L)dxZr|rW99&8GeL6ix2tM~c*nuG}2=p=Spap|I zdvrQ25cDzWv|!Sw&-E%lEtvEfuklX~s`@H2<4niW!S(0r`qAx-Yw?)p-}#e{Kfk2U z-yizeh{m`XCyd}{&LpL8gMYHPy}4`?CQ&`|Xtc&$UTz}JVAU>9>rwCOkiPg%kE2b6aV6)q3H^~I?PyV;2{noJScg*;t+3u7B9Ur&R0)rf4vwFD%qcS;>Oud zJcO=CX#eUSZKsNHKsWG-2e3mHnWWqCaitP?cjA6fkq=qD>|pPm+C9TWxoLt=n-;;yx-_+M)ITz24VWC$8s7vL8IDT#ch*-7lLp zZst$2#IN4e`tPsX;fxH!}LC|;#bMpj*s+uQBT%VipK4F;<-z_)mUfKR^Lw`57ruf&IJ7^>(vI@D z>W609{#GPue?+xk^0l7tcNVI4nLbH37l$}}MXw)IwcWk1CfJTWhq(Mkyv{w9+^1;& zr2j92^CMZ>(OmoOqx3#%cS1ZdS=!M@_s5lbKbw7ia`wmX%hb5KPsd4CCD^NE>5o}@ zJoT$o?Rh0h$5p;wH@a##O8f7Q{$y8}t3w-JuKkh)+U`D+5Qj^a^?ZxAw|fiYtneQy z6=VcI$l!=JUERgvH)#w!kC;Vsd|=y5es$9D}hEXgvi>h!v?TF>|N zgm^oiF-?lksCb;^{D)rG-%PlFo|_b{z(bmP{a&u)KGSsnc;Y9?{n`zBJT2AxkYf|i zizdnasCNqEtojn|9~S8Sdb0J$Ol_~0>iF)uM870S`r{lut`_O`T&i)eKa%8p;^tmz zT+P<&$4U*ob|lF>e^C2{XKDFM68-ih8CNIjdGSx}pR7(i2aqJ=>MlJWuGRaHqZ7_q zCd>05f7AZq7A^mi3Hy&^IVW?s?uX;Fy_z0Z^WK~1Niwbu>gNsK*ZcEN67D-E%kzWB zYJa3w+o@f3!T!ij5_>gB`yr?6_UyVLxF4iTIM{9lm{Hw(MV3LfhPYP8#rt5iLJX+z7{v^w|`a;{=C-nLDuP#lP z=SgC(KGbpQ?&e$u{x8%1B#XT|U+3Lo}GHy4+NtSW-k{(Z2X#XmHSwep#$+!~w zoNF(=jyN|Zv?EFE)meJ~@s{qF?+SzCDp~yYD%}s4>iuAK!hN-5@!MDGxZ5Mze;<(; z_eqj*)l9GF+qJzKqV2C|w2~ywaG~~d>-7DPU5WdsB(YalXg_g?j`NTz_qp5Nc-{kqqVBpFv%>2W2yDtjBz&}&DMjH}v8CI6S&&$={8$JG?wjy)BsJxdbf ziAgf9=IHg}BE7C(pBUdwl5zF8wzH{vA9Ag3k7GVbVy|{-yZcM+zwb!6f1X`o8gyvG z6ZL(;eR_Uu!ynw*pJZvr#rpoo@3numCo%3*VYlkgy>6-J#oWp`3%MuZIj>~tk2cy* z%xJIL@kzq-QOVMdPxSujd2P44CamYl(vH*gy4OO#?_+$z`x%m@9fxaw{SDn8PbR6| z&D3#*v3h^|W@3D|f~Wr>|8us!57kP~^Y|snxqdvN{i&Pudj7iv|0-F|UmfxTrcuB~ z4K!+?Q3H({Xw*QX1{yWcsDVZeG-{wx1C1JJ)WH7&4e%e<=>M#tTQ-URFR~}rA)tkQ z8h^93qJPp>!FZm=TWJ38+jG9%8vmq;rUy!MoSq4IBig8eMh!G-piu*j8fer&qXrr^ z(5Qh%4K!+?Q3H({Xw<;}e;N>I5`XbxHP>pMeH{l~T733P*bbiJXCj^y%_o1NybAD8 z`BX3Q+2z^w(iw};&)|!LhmP%0U+`5RojzIk8u@aWqJGRV=L$_L1T_7} z88qFr$?&xUo%)!*oPi)dBsjpm4-Z-w!#}r+m2_=BUN8dQU=99=b00~Af8w?X*VtWT#e0wZDGcGGMZ4h8XjfaZ-WYrL59Dv(Z}5%_w1aiXY? zDY`=ABLO}6Xp-uWxvbE5EuhC|)oU&dUmf_odaa3>Sl%d`FAhY163ZJ6x>sI_;ZpX5 zunJ8Y1L*M?B4~-_jRnnXhb5o6G+D=ikA|H<0Yy;S`IHjf!rlU2htArfR;QT8}8}G>gw}uYFB?Gk%26u9x^`T70&Ac6o8| z9A@!xS_AE<0MFq+gKqEeUz9xo!;PckEpXiV0Z9c0Ib6J6O`n-UzSDxuC&=UDxviVFRXeLVquIckKz73U^ z$oGoPr*%U46Z!sP^O4i1KgJeTX#6!muU?Y~nz=N5uiJcPv2TFyEt}5>1)34H0@w6; z8(*(plL(r*tiUyW-oe-7ixWkC68Sy=+2boQT#jQzt(pZ{+Cm1Bm*M~t5mpLE=swF{TW z$IM+Zck#mI3s-lO3Y8os3Adm4VBVd@R4oR%7P)UdCHH5yLUaFK@V zH9SMZ?HXRM;XN8Yq2Ws!zNg_A8m8{j^=sHs!@e5UXgF2FMH;Tx@C*&NYk0ke_h|Tp zhA(OOo`zp&n0lkGU&D?X_SLXP!>JlB(r~?oXK1)x!|OG?N5dyHd`ZLiH2gxt)SGnu z8g|sMuZA@mPStRchU+yvL&NPFUa#Rj8a|=nOB%kX;TIaF{z})cVMh)7YFMM;R1Ftt zxL(6EG~BM?^%~xz;S(CZq~UuSexYIN&ANUKJ8IZh!x{~zYPd+l^%|a`;dTwL*U+KB z!2D%%S1gXNU$}bB(v>UXy$19s=~1$H>DqYlnl(!X_UyTM;p){(*MiV<+0w;J)~;B( zVsX!f^Ls8^wtji{RjXGXxp4m4c)YYvp8+NDMZFd*SlFlk{N5#VOG`=@%`NF)Rpk)5Sk_GeTE}Y-5vom_>ilY|dE&Npf=+VP;t?}ZX%T}&fJbTsLwM$ma zUA}Pknw7KHE}6S__Ucv3*UX+jcLh@BAB7MHs0(K=SU7Lp;@L}AELz!f&FY{)EZu)W zoDtR41LMUb#!l%R@86@WM@byw_bMst)hAv&ap8ja$hm73y?bdX-3sUP1RNWKVI5J~ zLG)hLt5>hyj&obMJ)0f_3ydLBe4*9rR*?SUi|5ZzsK{{=dFQTJv2xzh6%F#{C6v2r z*}BDGC7lhV4Bd5RVxzMU{9zfoj2Jh~=@LS0)(clEI!9}p1$euzSqpW~#`svX#BrJj z(z?uFG#kCY7QK&ALxE8`6Tu%nd8A$6oVsvd)_4MhpD<@4F4z6)y zCm}sSo;32i===$PxXeP1bS9Lwa{1D=vlp$V(XwjgQi^&ZLqb`pQP3i)Bwh?hR2HhX ztzI}6qk07;k)9gr)7_1Is&&>S>H3t$B=xCiU`(2Ry<7J$jVqtG;W3(+hX!O|%*^fO zY)BX{4e=QJU|>T$MlJ&z;_0LPlR6C>;u){grfc|P<9x?;YK_U!e2MnxP_|uUEB*tv zi)~_pz4=+Ti!%OC+O8iN=PbYJ*O2blpEJ%A^ZZo#rd%^_eopy`d46n6#Z?0U^3ZEn5h4R%}jcK z&#bowHuh=q`|xIMGBBC?^nbf=^JBKx_yh(v_9-9Ha+1Mc{jokZ>!^Xr)TfQ>X~JGu z$HdG!YG7lZHm;{MSLmh`VyB`1={RTOdfM$uv(J`?TRcHS4H>$<(Kf>uJM% zYSvK$8~e0zJ#Ac1jX%*P?SDG<{$qO?vyK{=O!KsHJ#E zjeXj7$+9KPq_do{lI;rk4}u9G9CxH&sh-D|{@tAMr^lik*gP6nF(j*!P>yWfZnQp|HV z$epP`L2jKAajtS(j}qhEBTvT9IpRtIuuDE50X~x#qyX$pxs$+iDX$QCCFNj>nCc!( z`J*e2aR2DO>jHb%{l-PwH|{}KOmsJgE(!s=D0E#2Y1f5z6Sh0_2w{(eo+a$r&})Rf z7TQnP{?ONieH}VI71-&iJ5$9}$IafEO5!>0fJ#sUg%XWL-;6pG(>dZI5yt1HDT6G|raU5%44iCFQc4J_VOmg!tmClbc}fsO(Swx7r`Y`5j3HxOeSdl zjLjPba`b9WIhq;-=Z%|T%G1QpLcNKZngvQm-)AGEL#5y#a1SvwW^#0j)ix(_DsnHW zict+wHKCgKaE8VP$5vz+M$B_e3a=i_^FDr?TIwX$h2yjes0Ov?+Nx=b({wQ{GiRWR zU;@Y}k_2rs#FSQa(UuIzL~&nLXi6*CkkGUYqUMp+>y5u`Gzr;}GPQixED61^&P?{yAz4u(?~ z)q@vT#Yp(B3ZvZJI-ozxGg9!*yzX`;rJWvjqcSowGn!`fhhls7ARBAER&+r3~@J;-1DjLZz2Oc3+=h8>*%b?2WBy$EmEBoy-mfuoqTEbC1-5azkN?s0=lPVTw%uY*+JZ z6s>eTsO=sY&Gkb?V}e7@amK=SWzqZ?X9=SR-1r=agur{typGW+6V-Irqij-QH>nY$ zC7P^<2un}y$rO7e;N@gm*}8Spl#QHTh~;HQtHAh}Nt1&VcbGld@LDjthM_U4V^+i6 z10&=(M{OfLUa-InH9L%eGQW%s6tKrL>szYR-$vkv(vwwC^}a!C%a3jv3!3i%8k9Qp?Dw zJI-=#3vf1bg>PCNXJsp6>vTV_vZomK6Sm%cE3ukQCd|beJDu#uT6CZ_pVxWi>*2oM zE}t?S<296Ze5}_A*syqd<;kI1skM51Fiq+3gy38XWH?dlm%E!*-;)x1QyYnsZBsxa z>lCcS~#_*K>P-V^vo(nCxXUe+bZI&knA`5wmVa0}VpG&FvC(z3i;lTT^q) zn%dGH)@tQx1(I)tRa*n=Iac$;zR^o{YrElC*!{J$ZE!p!_#k<~fuTlAe&TXlpvR`y z8{ngrzR+Vt3QhQSz7f{LvAybEO6*{dA1wK5iRu_M!?f~uvKh5Di>d#yJ@A+AF7^=d zXJA*ea&-$73<0s)tJTu1@Y>Awv~{O?!Yu9FU|!ls@Ro7_Zz@Z9_+kR|4lde#ytP5A zqbyPPO22)1lw;WR(|Tn=Xq5N2MWHD+z?=2d`hi~W8v}?X-lNg1Hh#w7V9kLEKg4)_ z<<>f>>oN=t6js%<`OKmr|t)($t*NO|=&TANyw5rGmR z3a$NFwaxqRs#XicpDReMV*`PUQA%ZwGum1WX!lXi6&Y*SfMwsT|KlyapglBpCz$nr zqSwbdWs+TpT5%_PI@4Xk27C%peI-sM)K34uS?wG2aApPPbfE8#XrfFpbR2;vIve_O z=6GWTO{%v_&()KWJJxaL`77y^RuMrf>3p)1WG)wY=74p!P_3|w{1tYwZ(bc|iMIl3 zO)j-(gX0{jQHWaG+@Ie^nH6@KolXnpa<4!=f>vmsNuw+6@+rfrJ`PW7q|;nG+UgN) zR#*Ew$TbaVRr_^oJq@C$PBAsh*ZCO~VZE<=tnRj2^&C2u;!haf%JLt_4TV~d*F#t=klWjtvr)e=adsQwWFlsgk->&N>pDLQLf8{tEh3{#x zQ+XP5Pif_CbWay*h1EVXNAD86G3k#C8c8X>nRor+6Ef?5s3Rk+r}pNvjZC|-z@rMwUbA-eBUvszo^@J zX?_%1c2G;&&Nyi8jX^}54?zJE72}3XB}MvtwWFAhx?H3yL*L0NS7*ZV?q^a~v~zHA z?LvKqZM=)>yse_n-ObKTQ@Oi0m?3vypp%3>>>kszjhp~~JyA2TL=9V7d3))ljC)9D zDQ(dD_EyV}@@M;4(XBF*;5dB)0zlq=Dvc)yN!Z_8LCiu=ROpwyu7Q>-JjkqigFRtP z4(#>4=?<}J{+D~j>V-#}Ijs6#(2N&+dtJh6Pa3H5^7?C7wZHuyW@|jb$s8Wcib}EJ zH@h}!n6=e6VFI(!XN6;RxS?#`zhP^&C&3 znhDxWYcVGJOf;$#Bli5p0Mr|5lkNO8GN;&mLhKZ9n5s8YTnly7G}2hGkER>Hc82nV zXX;up1v=%%tl`CDG(7r2nlMc9}D0V1ecalyG)bdOPGD> zQI=1*j0QFpvz+=Q7=c|8Ac1FPkU+bM2G=ov;Yv}flk2Z8WWPfGa+a$6qcpRsrK?p9 z>zKW~{G3(HTTjpf)PGr?C!`4`NX55)h~*w4Qm3D;1chYv2q-P@7e2sibwy z&w?rgQEGopEVN7V$?c4P+1_6&JJ_t$iXv+T(~@>HD}(xV!IYU56r=rk)rc?nq2 zu%4N9w3}6=?zQe-H|jdf#+4h7khCopZgmCsPrY=ir~1->UBJBUt?uIW3A(}cHmw2U z(pS$}7C{@Aezxf)BiG+7b<~9etTk|;GP$&#=+HD>4mL&zdlIvSrJO^oWr>$A-*zEF zt(GNkf12UXb}vY+XnK*WGSi*5rHM;DqSEzf!##Th71p!tHMa56iWs3wW|eE&$N(Rd zLpxW`>S-oyUj2EaX`}q@0&Uesn_c^uL~ZHt+*q?fj8hB5c-0A{$O+1K!s?|1_1vI9 zzfMxV1tQd*C%_w43SfDvrLv|PN5ga$Z*HgA=3Xs})9r>MfNeJ$XEN*zW_>u!4=5`8 zuL9bhMZtPyYgosxJpPDWebAiyC3YC}t9#3{t+8AoM?a)TyVZ9V9&y*4_*tq0UeTMuvk zkO^+?Ui zGXCG1X|JuiSGwzpfns+9!N^E^BbLi!Ll9>g?1BQ;ZiK%J7^w^& ztg>hL>by#V>rr5fLESXk7o1G=7%l_!u~dL9;5fBdjc=e}SZCEA7gizXM32K?&L)|K zE3lcMtwcbzs)0H@W9=wtzl0ryZCZ&iUFXJ_^E>9JjI`?d!-7`*@Sr_L=rO@pKSHfS zdXqKV1dZm@x6*S1B#4DzW03Tpv*g|kMYUvV15P&%d<9+drhzFBIWvQ%ILn^jbnH-v zowC`kfgeY{%%m``bTnv%n4Hd&$r5C*F7^!#;>5hp^cjb&A(fuwcO5MW?|2br`$m+2TVpeMdT@W zG@i0L4Pr%{igm*{2T9Rci=_xqRu@YwU3pip&$W8G+3G)!t#vrczsO;f=Rxu9AozoY`(1l z+)UD=nEMZZi>LaWZTy79I}-Man3cnP}DxaKT^ zW*TkmY#@HY;S+la8mm^iarL-iwLO}jfs{4DcXM^$PNek)Pn4J#%;fqe@n40D{qRF# z$XLaRISN7APg8N?^q|KWwnviM**B^0^<)@lj2>Umy<)tqOiqJq!#6~!rUpD$&ziAI z=^cbpH}-t575zYpBCpk}g}qkWG#xl>)||6o^6C zr6X9ZZfEq-R8MAX6dgH6DJ)5*BPn%Rde`g?PoTOXL|1MDHJCoyhz`a)58xZ~+J zS~Cr{E!hyuAeWm2ev;xReDWW0SCtXP*(T4K^a2pZZEPq6;oDM*5_?^wrTr0q)o&)< zlcFfGpAqe@BUxzlz|=t+P!JI&_0dV@Kp;RlelTl(0q{q)6=ki%vf0JMpxIhR6rv%M zO`a%8q-O*LBfP1tJW(rksxDA72g1X~ebtqhqa@Uc~ZsM0tp%8RC z-Lr0Lq8gbds$rgv;f!hpYDQ+?GPk!R&e`IR5SKwr6orBekx+oir9P!&takhE7v9s-otfyQs^Z+~6${5L9-$+uJ*qcgJOwei~mw!q_tD>#FLg1_+oio(W zO9h;6van<;J)KbT_9;VMo`1?v+sL0ZiFlB}7g*1PjTq8-%N%z1UA`V>3Lr+T=P37xE-zpdX^!^t=9E7p)Ds43>fw<=ii_fu zhUbJ@){yQy^);>`9uhRh%{R(Wx*?LqGfp;CP3S;RwII|pGJ~{gnOQdgAqBq!Nwwzo zpUqTWe?krokih)k^=0&pd1{5(5_?ku#sAznss{#3uO?omJysOyU!JH6t`w2rvO?Qr zZ_MLqp`iCu?^eCn3O#Luz76z7r>eYhN^|Ic{=6{FWP8>Z8rz2RQ}Auf^#3=V4mK`W z=fpiLZIQicjnh=NV(_4^G9Ttv4tFuxpdKo0(6gbiK?&D|BZSxvtEfgP`Xg}S8@J_u zVk?P>>Wif3Oz_q`=1gDTNc6MJNd4!3^klOw$UxsB(d_pg05S)1wBr`s6#MpxyckPm zLyh_ILWu|lDw9)bnVc%K7zZ2`<5eX_0LlHTq4{nsPr$O!fnU!iDMLj;z3<42?dw}E|ff$=Wl zzIS1EMm(TtF4{XIZSUH922d-vgKcSwjHT&FmZp=jG{v0B+LX~vV9!0LnoKy2yNEjB zzj_N;S(9KO4dt2@U3a}X%%i3(=6b2UT}jx^^=`mJXwZO|C7$AIp6S=trJtF?2{9=& z+H)B&N>#8Z@brMOLNtO0TXtxOWiAX4HauQE##5nu##nfXdjF`m2K?NB&5xT0@7KWVu~tETD*4Nmj;nfd;% ziW`lypIpF00(8=c^njZJ#;%%p(nR%665JKQom)FOusOs&hj1z*a0AyESGtAk4P@+f zY@bY>tF(LzoU8m1t4rlK_-KG`Cl6meqUe~VSEZ);4+TKGeh)No-ZFT&2j$|G0YOv# zBd(uyc>ce9Hzd&@2exMjVg(IyM!+~gKp1rU)IFJVORHJNAS0lqUWxJ_32Ny|dGwNj zQV)t*2H6~^R~)cC0i*6)-hgTM$!&~5ZtEN5;DLG+S^w#8+xo_h^)1vZ5)T`-A|-|E z_mlI3Hf&zE)83|}VJ8N6{oo+lX_j4w#Scs$6w}*g^(H?yb+$Afoo1^2w3ua>`vv9^ zhCy&9nMZPe;&Dpl_k`41hWDWHn{e>Ni{YWSBw3z5y;@D9 z38#q>2lflo=3a+7crm0VH4yF43uPb_tU{M&9iQ?Jw2l0wMq-p+c*~9 z28G1wWBE2^#6jhl*Wclw9Jv^tU*sJCu%4_;*e%hE7WAQLKO_Qq0~;5rm_j0+QniQ_ z5=o?aC+Dn+aQMQW@SS4TL(+Jj#WFoA^kdFRtD&H1{=+SPi%BkQ(1?IYvbAd)7Vu~i z9%u<@zQM;?f|}P3-M=`kp?lC4*}rw^73j;3`0|xCRbp@FSW3@~oO~>}VJH|LPW-Z?l@IgA&FM;g+jqSUsj* z-(WR22CGG)uVikoY4zc;KHC>+6?BbE@JTbr?6I!|NPMWzSaJ27h_xjRY$s_+32Y>Z z;NNP~R@dBWV^czwnKqQ(-1A)>bAE&Qd~$nZ{p&x{XDoEbL<`+1(L&St4bMv;DLY%r zhFWMGcky(r1*g!ICnwCQE`#O6$qlt02cI25>u}1LbLs9?E{SEvEw_VeZSXO5Jyp0S zV^i%;)3iR``|1Dr{%&`t`mlhxxY(@d* zF%z2!&jk9q*BN0{jgou|5wNG&rD}1xESzz(^$O#utd4G4wdHUPqrDrQX!AOp_NQ2H z0uRPvcj_N#qo5p~DxvmLpU_DTQj}^1npI~^9Hr{F)zEU~pI7s(BeCG1vA2!)Z?v(M zM``2hhtjO$Y5I(Xy2GXx5H^L_kJf7h)rGw%-E5d@?{V?y2+eE#f=V=_!TW79f?Pqr zlo~{@ijme1FKAHh*L}jTKW5Z!OYm0}IZ`fg?wEvoa>Q#;Yp^h|9 z-0`SmOX};J&b~o(I>qrH*~KYaMt9e|aj#$LVUx&abg>Bt$ORXkZnndkVClLC%#Rw` zJpvX;(ToALt)B_lDH_D+rDh~HZr04leK#|ODI({)rN~fboUI1KacU0Xq?;KYzEwi! z@C!Wr;^0x5*q-+sv=dLMlE}{KrGp=#K_avPOifZ>2!8qj`Qqv{}Z>7Nc5!D=C<1z5$oL-mc8E3t0_#+_k0XjXjc%IU86M?0Sq(R)x%p<=PoMJPBi`>yUw(b#a z^P7c-==2=p*3b>-`3-0cZ{IL_ah!#^aF$881@GK2Qq-z-C0YXAj-`Go-o8=q zP~1_xq@kOa(b&QpIMis<>u>Po8<4x<*KZu%pI-GZ=wH! zGkj_jUESynPi^Vo4;DZ@#wWGbEjU36`roav+!^r`OP$n^n;uS0bJCimJ86~RXwt+<8%{7o z<4qOJz|))AbyS3t8V9n7Z(HN0yr88|MuA(XFP9Y^n+;!6FKv&I=kr1n~Tx#&LD|i4(IFAR!lGgQ(9M*#wB;- z-|qa|gMWMSZ;6wiB`$HPj|%9=$!{i3R_GGc=wuQxKUcAJ3_#r^4`W=TbHU}4!g8yz&g4(d`HnBu42}%qQNH;<%r!yLr$WL+4mJy za9wlu6jg2}%Dl&%%)Yqj*eR1#)1IbGcXxYgw@`X&&or6ZD^>VrKscH6klv|JN>^s= z>t2$%hBEihJf6V7;`W;WhlZl5ZUHkyQcSfxCI7blS#j0u;?!g zj{AVYIbSi@nSuY1=-TA27=yjIp$+WSG6o-419WTR2)ut3u(_Dcuvn~SI7n<_I96QB zaIUzX;aYJQ!wuqDhS!NV7~Us7X84Twmf`CnjQ?=&*5n_e6~oSM5yLKScZS_v{Hq1h zd$=PQ_H?H(?B(K3o}iby>lpTSPh(i-p3ktadlkce?kx-lxW8sN(0z*GAopd4L)>>6 zmb+gu9O`Dk7wp!g(#>aB<#uCO?G9u(+#SiV#+}M=gu8%Yt-G3Gox6eIDEC~3W85nk zj&*NhIL^I~;RN>yh7;Xa8BTKl#&C*Do04u#rn+qyPILP(oZ*gPIMbcW@Gy5B!&&ZT zhDW%+WH{Tso#9;fafb8UR~XKBKV-Pj{ej^kHxqlWZcP@uZ5b|gyD~h|9l-D?cLc)~ z?i7YA-31I+xoa4%b~iFy)k9B{;@HqDwh9|gxVtAtaKEspT&l#TL zreI;{)?|YlVR))r!0BYlfG)JsAGNtzvk&JC)%T?vV_C z>7LB+D)$10JKSF}-042X@EZ3uhS$0uF}%+Gmf;O!Sw>pPS?yE@)_*v z%izYb41P6>!Odqg_@qaiI6ocB;IkPFK7WJLzF5N8S0^&~`e6p&Y+>;2H4MIc0iefs zHRK@8p)&*064 z4E}mNgSWOYczXwfckX8J?&A#J`!j?0|G{8C{(A~#9>`_zK@SEW4rB1qOa>nx#o%uz zGWh!i3_iJKManN2=A`_JVat@?Fl?3b zdxp6wZvytbN|fvnU0Y1Pi~iTEYl~r51NPb}t`;rE7tl4%-&Onrj9pu8t?o+TywMD{ z9nRqV;~8A=3kDb7%HX0$8C?7dgYAD~aEaTEvR~SQ!7uU|Tvo;4^0^GIIDx@0uVrxM z{S0};6 z@9D(g-a!oR8^_@O4GbPQkHN2ZF?jG12ETcg!9yuMDf`2%7(CLK!K0%XJhp(r<0mtC z;!*~CZ)fo2BMhGUGlQo;XYfq35-RN3&J3O#$l!OQ82o-VgMDilJbxyG7cK|r)+$5X z#jvS(ieaXBn_(M4@^ovJFGxAvS``XXOSe`X1SzCjt74t6v(DFr^L1_8^Lu3P+P0)w zF9N+fGAQlOpidoxvPlg39?qcOLIwj?Fc`Rj!JrEm48E2@`8^DVKFOf+c?MPc8B~A6 zU|7>qs;?%W!H7-_MwT$B9l&5z6@$@}8H`!PVC=CB#-Gh#!W9Gx%C2M3cNc?x4-#ls z@ic?VKQXA<&!GBC2E$T&6U*=%1~nZRjOfi^WEF$j2@LAyFc`Ix!RV72OxsGJ{XE*s zb!|WY3dR=R&S24R7%YC4!IHl)So#rzBfn*E6wWLo-!cT)0hZ&iCBO>WMt5z$aynzH zmNPhdBZJk~Gg$L5gS9U*Soe1Z>$A!z-!b_Nj;&&F+(ZT^AI9Jm3J7#GMM`^gL&^UnEyG01#W+;Z((x=i#jn_+?TQ9jn5E@x$IZ(r6D?*`4dIQ0nE zEu9md;&YVF4NsxO0{U@E=Y^;EK4|KEH@kE}c$&q%Fg(rTUKF0@bC)g-&#*X`glAZs zOT#lP&LhK@TAW9PFSR(Ag)g-@mxmwoICU?q2tVerYpGX;AM^4k_qlXc_#H2!Q+jmx z9WRelx;p%h$L^G_3BPM`t_{Cyajpx$YjLg*Z?rg%32(GGj}33MIFAb-V{slIKE~oa zA$*L_nSWxqMtH2Mh509e=4DV#%s&}4FPmy({wd*c33+t^8;}qzK$mhV5`v}ZqBe$W z6N+;3PXjGjij#jjXu$%U{7vD}_41wpT4LTaK}*P6dRF+tgw~gC4qup%v-Irng$Wt+ zw}f+5{ExCb`R5pvvO4)&4NBRZ(sRS_d9^sD=Y`+%DsW1-h2QhacJj{;4;B=k)QY^o zpsLsl4a&vlUlgvgnJ+e|V%~00CBr4*<1HC34IgjG@Qd*Az6_<8g*RE8mxni5oL7W5 zS)9KNpJZ`f89vG4yefQ>&zZj?JWx=~Pq%BQL6xXi8TUsc!+z%b`c~ zt)O|?^kBX%9J2DVnEAUw^Ybd&?Vu&*y(64$<)xN6`FDcm=cOwr|1QuH^WGiqoshSH zSBd<4kPs|DC)|sKU@1D`zOdsL<>cQF)GNTre*mbL&B_0DxQosFAW)0>H$W}shr;cA z<^sNTlK(JhUJgy$1Dcmj(;f-8u=4V9m;YPP{Je_xC}@6OwJbgs{?Hn$kB2|>GC8GB zgg^Ayo&3G{`)Qvw|4E=eZ~jw2edaDt_ij3HR}=I|`&@*Do=q$7)4mWFzfY?v3uUKO z6+K5SOdIAD{f;k&r#pT3rHz*P&!>%$6f`fOfI0s-`7fl6mn3Y#T$JEsF2ZlW{6C~k zv52LA%!>KLJ^#hDrOFDa5&lxz3N>-m@PD~k3$EfZ6jZ=JUS$POa}`hFxBq}Y;P;iZ zqLj>6a50c2@Ul4he@e@%C+Vwc6H+Lq#?F)Spa%Upt+y z3QvC3+pnihN})&`cdG8$H`3bpl{ootrd^_(Gir#|&R^56PGR{sBRa-+TvS5gxxh0o z#82v5Avgc+w98c11hzr%qzy`8`FxctEp&c2ZJEAlF!;T+$62BI@23?hfxJ#~2JKJV zD+<0xMNaC0G`IAFv~}DSbn~a61%ho(A>E$Lq?VU{n6{gn>?LYH^P{x8HgS)eOp2cW zaT;#hQe#z5{w?h~)!6kYvET&yp|(4GE2wY-RkH~{A!>I1-_x#Cd0FQ~a=LudHS@_H zarnZSzZ=Wog&7Q9S;FA$6B)d-g~7YmFnIrA2K!$C=<)5VnJ-cS1-u;54>q&ks;#N3 zx0oTd#cY3@+5zlVJAm8O4&V;81GtlR08ab9DC!?+<7rZiE_#lNOB;(x!58Dwoz9=8 zt=4^z|If7A6u;8^&(fx)BnXoKdD=R)@~MITMcR{`AyL_1rakv-YC-}%^{ce>(y!A_ z;92dZIi=sEoy;@aCw0y4$id?5P8=o9F6N+bc2^D-XZPUXZFX;tE@$`Q=yG=7eHqYH zc0UdzXZPnoa`pfYBxeugKyvmV4kTv}<^XN>5RM>cmvaO;dniYcvnx1)oL$KgI4d&Q zCo0a?VoPMIpL1v%(N;tbdkFz?C0a$EkYZ@QC=ij^9#tg`jf+ANIUHI z+CdbF$P$mBGj|l7L}YOywODi(ks}kST|`$AS?N)oq1{Ax5jol-^bkEoWQ|AAYAq43 zMb`QYO?fXdDYD+z05#hwFBRuTj`fI6d2jL0$Z@{8DeoiBkDS1`(pZ_89I-s$^1fn9 z#PV~?`-w{;rn7nem&weSJrmyy#fe4yA7Ig^D{myrzXP|tjxFK>bbFx(|uMjszws|?7@=9@YYYyMV*M;;PtChK1xiF+~{#R<)g)n$geDXjF=g@#lpvm!y>m?_&9NRn#IA)+gNiqc@^ zOmUcquJ*}J)!|}Ebe&C@C60<7YY{4s5VJ+}1dCENN34jR>=Sg^bHzLnJ=G^WmGi{{ z5k1|aR4o*1quXr4B5`!|7dBzBI3{|vMW|dNmWt?g7NzP)aeQ=_MW{SVEECaRS(K{f z;-u)UK0!;kLaY?gyL_@!wMuM=-s=;XPcc^=El!I*n2_XDtrllQA5NrJt`TcR^tbiM z>%@8yecU4RV68evY>qx{QK|Ets$<1D(dU#a&4kM1#PK5fnZ?HgwCV(LUi3?!>QtR5 zE{J}kd=XXBN#f$@_ZFe@WO0g!I?^9xRU5>m(G;6-s<=FwY7;h!E2CkHP zRMvmxh2kO+-Q$y;%8SKz5q;FATp}(N(Wh+6FT`ac`m9a4TwEcdzqcq=zZ8#0U$6;R ziYKElT7>FvaJOuiXqj4_g8N=Kh@70VP}&xqKOJo0EW zT0lQe-LoQgS|aT^5u28n_je-pYaS7P-kRTwShc;sH@#4R^XM2gYw(+SEPg`xUu9?1 zK2i5P#+p}%Q}=?1EezJ9cFc8uz{m{>r4#-rVuv@Bqvl13Y$@VvRA>*cA4n9EyzV6t zd)N~}>7eFi5j#$Wk9f#*>q*l0!fz(kRr897>BZYmuKSaS{V72b&R6rQh~2CrIv%&4 zrGFN&+r=hNNyM&F>i!~PXR=T{nmHe#PR(nW*lIq}uytx)7cr@DuN#zRYTgjBRFNQ% zD&tKN%TOtt%o$b6Uq!5$mBOP(rMx9#qx`{!S@pJvt+fet?}*s7et8_gsC!q$p7Lo_ zkyH1ch~4Vb6yN(I_D7$l`1Xs~_dd-M<$#E7P|-V2pH9sOB6h!8usxzy@`oa}M{ooo zA*DJM_qab6ZE~yW-0Vlf?NFTy$|s^tthx{ve;01Yioc1FtnLZyQ_-e%H4VXk2)DSp z5|qzGn>N+7cK=hjUAc_UMczQBd?E4%^Tn4UZwOy}CGyIvk3p_)L|#{}`D@|!uHFpF zcOtJF*Zi$;%c?I27x1{z|v)YteVaWr%AU{bqa2=H<9_RdHo7Yw{vw4C{1O4 zn`#=78Pe^>Wn{{{5lqRFd9{4eOyIVGwM!VFDYMSenx9brTkvaNQL*7@}Py+^^x*bi@i+B z50&Lm?0u#Dt77NV@Nt}5a0-j?n@J}pYWhhzP{o6JVc~*^(W&b%PCo3Kv-gP5UIVUT$R?3S! zR24g>PRa-MV5k`-MaW-Tkgo)3lQ4E}mz}@m6IA`g;(rN%m-O|&B9}VE9 z4cLI^9@D#t^zGB|aA_^2$+Y)J1Bld(=MWa!i1L@ap`|O9)ik3m&T3+y*2$jhHoATBJfn#2&7%ce3|Jl zfrgsnN8m;rU3bb(!_BzVUg=BG0{5C+EXlpos07D7btRC#;eEJHcT*Ms>BmU6yA*P# z_Gcv5ExQ`X07l~OAe5Urkdb0{8H7z8#7K$z+IS#?8R_rtYX@WqBNgtoQ6LqJjC4P` z1V|+#+t%{N9?$kSh3~RX&a?WudyaGr~i?e_%aiX_&hfDP^ulxJ+S!+~sc?;r`rrJsw^PILcx1CR;Lt^{(HdoJl=+2PJ6*=DggyWGzy<%lq}?(BB2I|In&IWzqvFl44vLTl0SF295JGShFvCG$RQc$f_k*a?I zQlTQnngGe{kVOfxyO-g*RMnJmEw1~i>vlvRq$LI8A5oT`4>7qAZ*09P>oJmaT?<_A zPl%jZC8CU?c?(bP=jjmY_<$;-X%R6JiQizktP z8%4=EvUL{pEKj`^&vnYlXm+lggRY6m6;OR^c{gNhBk!-o+t8$g?$49GPsFWWdC7WM zM>z{Tak=RzxLNY`E{@Yq#`@tVtNaBd=^!8aC5D204zr`9jG%;0GK{*4W!o$9xTYM5 zTDr)u2jMQI9F7j|CeJEBm&(f^TMv2kR`MKkpp6o_x;2iB%h%BAQn?m&^_KaNvyXfZ zlrs4$wA5F&MCbRDEg)5YIbt1jF3-UAK=}<)2gwx3Ias#9?+|$sBq^7F2hUJB6t!2# zGXy=eeFk&|PiO`fL^%xQ50m$tg|{Kd3!1|#kXhgvA^RcMNcleWSu2N}hE+u#4Q-5) zouH-B^5s+EGs)wj=dtn?^vgI|hIWmYH&4J**z)%%ZKC|N1ODJZ?%s&E4#*o&<`lUZ zGE9}NP{K6%IR?jcITL+>^&Rw?vJ$xtlg~g`hsy)IaEMVJei_~dAR`zdvt<^>%pCbC zv^`h82>Iv98<2Otd=x#qKwg)Qr}*W1&=<+SlsV2~xd7T*B3Gy2KV{_67$--{O>-RQ zD4BIP79*!d4bJQXB6U?724e?|AxAc;qS5&vSo?WIm0^_05RZYkf&2^H08Fv#;WN3gKpE&#HCk#uK9cJzqU`@vHZgC?R2)2Ql_ z*U%x+#aYlG)Dn-*kRMPfr{X7iSW{KX3A=#I%AOC7boZ`b09n$6>dK~Sm&vR!GW>us z8(q9g=q|KFK2cM16Weg41wd?vY5&YU@O=FBPg?%h%w*Nx9CMKtH?S;T0(4#Oyx zr;zk6b)liPk!TAO^Ztat6Lwo8dL!g&Up;fGX16ogZCdR~<21Xyksyxc|9l-vbuhxq zf!UY>JL7-Y>Iog`Pau`p9St9Ti(E^eg$CH2jkJfDzYBjadmVq$CPR|v_O$-U0BV*` zAA(_KcQqoUChxgsXolV0h~)+`h@adHRu4l(ntugGn%&c|%OGg^ABD&4UPdY@w*B|R z{dRA~OK9l}ZUNfQ@VyUa-X?^rZI>IdYe;7ZBh4Nl&GVlv1U67%p4wMmtJ#ATV)@hV z0&B3sLR$Kk;XsENzJ^ee7eUgs>|sW1JE{EnHn4^pL291npNBZNFH@LDOaBW4${u0( zZlH2kpj^lvX~ce@a_=MF>``tx)>0wm{Nt#)(F(J)^d;npF@|p+X&HgI4%y?4SgVk$ zWx{z{u5`7WrshpdYT1muX-_hIXQ8F_aae8W_7o$wg4DbOrS?=KM2P0^g*}CRwGny` z2p(ca2D7Ir-lB+O0;^O!T~`ab4JgH-w?IojOf9~~@O1^P^;Ls3?L^3)VZ<^c&^s0( zYtJ--s+I~c?O8^USPT9COb0ec@eW0Nm|5((idUvb##6vvC!%_!AL+SXp@;OyYZxT< zJR?{PMR*g){vAN)OCS3pC&48XpYQT*OO#~v@n4RpK6q*x=(6^iIn-!WLi0r}Y!oEeJbx=_% z(4`733Pip|=CGG3v{4|kkh){JLQ4XX&nSjhD70lDvOf&;RwL97?JW&N4qpuPHY3mn z=>AZXLP`%S4bF8QJ@121lL1Hs_U$eu7nGD`psaE!wLlq817o#I$pPhYO#1d6E+re3 z2ay%+J6%c^C`T(mS>sYNL1{%EyUV2{KzR$xFng^_iGy-4Qn`J%OUVFb$Qn@AxfJJv z&^2Q#XKMC(my!+{9$6b)N(_|l$h3BqP-5B#Ar*}j1{{r@6;5uN-WH+pmx)Y?|KunZ zxI`uB%UnD~OK(D9c(38xhVU&VM*2k*Fb^1MbAg1d1^CN5m6f>Ql&0lfLc`PEZp03N z=6{R&{ULWmE~XfH*vOdz7Dnn7;hjC;V8S=Qn z8BX&=22!u?R;cBP+(mBQqfpxud4|xv3Qc$-canqmDKy^`8G_VgKcUbfB&Dk;yX-f7 zFOw1L_rM6tK4`?|kP%TVf$XPUBZgiD>=`4A?8AyB{V2u6vxcuP@KTb`TTO$_e%^@f z1y+0N=t|9g!N?{=^Y5n^f6?H~Xu)@+CH*ALA}<-fcGB1)toD6blk!zhz?oKm^{ ztr07TLc{SpfqkbmX#U4(fPJqpkH0ewnNy{yJuFlu7G_rpcovMc46lQDbOR0w64PO)J%$v9prxo^D zBlZ-q+B2q%(d<8r96~hzyX1vGjhr`tRcKk%F1q9Z^lDjT)6sKy`diH){+Hof1zPL7 zF?Pn8wrR%FaTeeoPkF#&%2dOF<~8HQ@@QG4qz*1wv55v#!oiEBPLiVMknUgg+5t1R z3aQ1vf-+{%RrF^AU?GKh{4*$>gcWA_k5leQRanS>IofGQ6lVK#D2vz%OZOijheQ>Y z@P9~J(oCLEa{RwixtQWr`PX5YW~VD&b)*qRr(=f6uzWo-01Fj6Ly6YWBhR%18dqqM z9{I=snowvXJ(5dPT9!gf^vFuYvYoBamU?6hjmuhQ26?4aj~t*l%T?SePvkYSB2TRF zM4qH+qClbf-fO2$yiT+6EI3(J?Tw_|4sJbFc8gb~++s6GnPi(6=V_h*!aDs?vaX@& zYep5`jgol{sPpY6X6y*LohSLGN(;h-R#zpaL#YX=p+^Noo0-1tRIU+b8q02JW`vLi zRJm4Ws#;<^xCnx+&3GBgVN5orQPIZqe@f*h@1Vs&J2N&QS+2cXAFXdXD8!@IHyss* z%AdamN;;XoOccxOhf$DkcQs?XlS;aY5`Rl-;zcH>C9C%MtI>q+3bXxR3;?f(l1%u2 z#;CJrN$wh8#wn5JbHX2JX3{Dv zpVu;j%v!YQ$^U@@cCaA4RvKa^Xi=5lpHkbUg7C~U)J%}?NAQF)%yh`1`Rhq+xS35} z%I`qa+GS>f7Kr(IG-^heF}CgKVj!2B89T|)L*(`=%=Ep4)b0mlq?z>;A^(GZdz6_& z?#j<6PgaQ)AJ^L(E1rP zD3N79XU3k6!|Xq=1Mhh=onln;TNDZ}nmn_4B0r1+_L3Q*b)Ux*=|L-xR}}LiPh=Z~ zz&}*jTx3PIQhxrY67FS1zM;N)Q*oDCkq_ZM`z?juYDF&F3G}c+S6Pt`|EDA_Qt2zH z>whzScVyr^NKQ%&Pij#DOWsyU=bABMFP)T(M6Vb|$E$Esl9a3ENxhWh9^FH7cOy`A zBM%aW@rF((Dz~rUOfr$2Tj()Kr&~pdC-tXHNbVa*MeAS;=*CeldMC1xX?!^zMU8#% zme+W(kPc&hDWSudEjZq>jQ^pO-`KZ~4r6M=yr6L>Am)@iEN; zMmgl8#^%;oS{ZH7nK9!E(9?}Eh%U#dhUN_87o@nj@xgXFDm*rgjtakmRar(8bZ@rt zSUd&pG;R#jQDG;{;(5k&l+8CT#egm_<_yCmjeD_lRJi&cIx5VCwz@_d#zj5j zl4f*N_zZfu$k>FI78_?^Z382OvJH)a$PbN-cVK5@V+k}jF^*w|YHFldSVkF35WLNd zgUEx;jZV03VSEam$eFOPmGLxWS{qNIMQw~%QE#c?gC%W^L1=F~<2sDk_Qpk-bX52N z?CFSCtI<(mZ}n$%TT}Op#c()SZEu@bVGDk+_q?Tv^;6(-+0tdL!~HAVcxb4`3j$PUg@=u+&0>etPGJV@p=*hFEsinp;S$FE}1&o&9eTqbc86@1rP!whm%F3~b( zkkxz5YoVb2!F%9*=b%krdh*m;2FBAYhT~uI^s|h3JVjlBJjaOTxfR{vyue7vGn;(# zQaT1Rodq7DpnAo8j#Rg=0Ll56J%CixFmT>hYY7#4?}#=Iup>&Fma!Je*?HH@L7DnJ zF?uVU_w5*}@cc^Ve86Iw=XcWfAtN5oyD30E5^XP07#&sG+Ez}|oR7m)zpZ-b6E+~< za}opDImSql=M2K#InGFl=KuzmbApjl&xa`Ke9B0f=Ru@$=d&Og)627)#6C|<0#feT zehZK`RT1KPKGL1;->>VC!w&G{(30jWGSrFpRoj3 zj-E*aqf1y~&=S?-@n;f!x;eT&+M`5(q??-c7Xs=b2GW}QZQg0lHU zKM$kEdM!%YQ~Wz;L9&USbq#8$^wTcGX{u*$%*P(mPrDJPL{CuK+*O;lBTh5jq3pQd zZ*2vyxt>X1s651H$W9A9vkl&9JPLt1s=|odl*^8%cFZ3I+?n%{wZ`xNoK&N&g1l+8H$v_9*qsj49B=v*^tcCbTY)|x-%nO zcY^EAw9~2Xe9u&vm>CUI-_y*q1WLmerP{DXDKdRGO$;q{^Pzmi)D@^Y;k40hYJ`8` zQm{&OhY-!buN|85idu#5g0%Q@#F-JAl+ys@y`c6#Xc zTfqE00ru3@l%dM?N|sxQq2~0~%`H^!4B|QA^wsTj3`X9kI~OY}ad!rjOFvb)rIhqn zN^l@mkD~Mv-Tau8EWC#*AEMjz20sZTO>l-P%%ijnOPVsUF0>5S%>tCm>t>Rc z5xQMXS~%1%KTpdQ=V=+4)bc+XccXOkO42e9@muPQ*6j~~srtq!Nlguyv3fQQ7&!3I zVw4-Fn~zetdT2wbGeNg)*rdu`>6YUGGf~f?0fTa9&>7Ao-TV^e(#LEDa+RJ-`}w@P z7Eu$f(d{8gCD-a4@akTTGehTyhmsGspxjK|Yyio;!aX#P%+c+alI7;QmGctrI@NTG zPeh#S^&sDh;u8^Pp28A*BI3+flKFfh;@qIHI$HX2OcBmP-5i4&X8r-B)LE=Y#@54l z;5@Pf-zq_S^0}=y>Irf~KG%Jd9;bfI=ah1@9;e9U0}kgFJ)Odh4>+8qdKSeHA8ew+rmETH%52|58PO4ZV@p&5UpZq7m_jaSjosMcdtV`C2u+56?u7RnXr^<^$A z(;D}n+`B~&c|dD@>N+HD-FZ;A_W|V_PtG>ouWmfi%_V2M!WKqKsTmKcUeWXj-4k>k zR;Wjh&<#W95rtZMWEPh7&Z7zq>5-Y6f$mVKjT=$@fbLXiy3VJB&MrNTOi18XSzB2A zvTHH!HFTl2J%+IcTI1!Ix1HU3oCF%#p5Ka->x-;Q z7|s-u;rko(_DFThmK?2RHbyEn+D8_!)F}LIyfz&c@7Ifo-*|ZkAO{5bmZsL1^;&e( zqyGLa7=bx{`xMIXbdVEJcb7f+urnvfh{rPz-Io)R+x0`yCplq8LR!YV6hx`!BTz8l zVoVgThI7*FjSZlVj^T3BYf+ll;&fD&6Hib*CqnVjVPIK--4Ht+ir-0s*{N>>`z;iw zL(H6<(09PJa6C$t)nd#F$1iCQEH{*aDbEha&myDe2L~{;)+IM(Z(+Izh1y15@|V!qx#|PX>W{MLi}!!U)n2T#k*_o#Ui2N+lpe zOS-W2A6JrksD>nQ!KSYzhOKwe`CJioRT@RTnhwHN7Z8|3ouP`;0#Mm1#*A=f)+J@g zgfv2-oU%7=61qavbF5wI5M#HvZ0bB!k8oaaIX@DI{|Kjy)qmphscX~dsYw<>m4CP# z>gF_(POItNIH=q->S@K62DNrMxKj$iL z7TBvm&4~3ve3Tkz;OnfHK_H-oB>lv=RM+di!Oz>5|1$j z$VH5ldZzCM(mlEfoH9=@_%WwP^l2cyv~t=Xg)Op%owpblY4is~nvlZQwJwWFr_oIV zH=b9zoF|Awe;`f={9$Vwkc@veKt(;x56A^EB=el!nJ*B1)gTbkOj-fgH!jAM%!mi~fPj>xjztxgXAR8{U3i;odv0$Aq$?u{E#qZ)TJL6l zg=#KehorA}FB%Tbfm9nM>2m@z0tlDyuK=@$Zzit&<|FsgdH|D>Zrrj>PP%Rdhxd@p zw8m4AKJ~sv#yrp(&nF`U&oP6t8RR}{1^19 zkxgOIYpqx$lVa2(tRgHhP^>N$L&s_z0fFbkEZCOLsBZuP)4o`tYh0z3g| z;FX&4sp0w%^C$dXhdvnp2J89&{2QR_1Mv@w=x8^n*N^0|fv1OEXy6w~1CQk7QWd`e zeg-IGj^wnbvv&HSn`QuI%#oa)Bsm>~s{sxED_R@>-;9A3hr7Uvdz2L?{$@r05>$9K z=1hnr$R#_W_hEqY-90%?Xv_5-2qyszz7z%R{#GGsdIue&k5x5Qi(n_Hq>oQH zl2eOp%Q3N11f(vcfzmRkfF$OFa6O>;szo@(Pa5oAVacJ?wa*EpY=X!p$W{YFtwgrx zX10)i8ioe-l@T24(=QF^zh$#W^tVwyLL`rx^cpOA3DCeRvV)a16xPr-8i_;SptK#nw2&;+8X^wp zqgT<_;sTsbHe}Z!Z9a@K0}wbqlgpJ--s=fMXCj`YzOTx*>A-jw2oDhPVM;(%**Qd{ z9}1*z<$Gy6tlyW-v&17HYyqTxgf7#ol}|E!NKpXqWFkeV?#F;WN+dc)1(EaTFCd%* zq|%wbe!nXGXo{xY2k>4+q$m~cXWvsy=rtz@sdC12`~nZ|u%l7t>J#%*ODPEs%;H@03cT?GAoQFR-iGN0=~FMm z9B0giCVUeohJMXm1A4tIy$UMJ|5g!ERYgS?R#dDi(gT|I2UT><1r=R%uA)~FnbCPj znYxvwd*K)DZxs<$RTQ|eqM)j%Jt}Gg2o+pVQI~TS-9#02qQv=bCMV8AgOz7HCtWuL z6$OgBut*Ut!sbHfHGnz4i)?a|iN1LY#O_v_G~qsx)O2$xG;z|rJ2O5RfLZ;5-UK|W`Ad!$AH)Q&$ zl7&F$0IUbZpr{y>4s&SKZ_IQPTwPFTFx{^xTDFEr=?Ws{u&s*tDO4Q?XxSxTjuPf} z#k7!XeE=<(FO^X~n*$-&NA}zr4E*XF_Tu^g<*t%Tx2XCwF$jUnAH8aPJNSqW{~*F&rECYwTLRQdXG@|U)qN`nHv`nzdLWU^76sL4 zKeheg1kVHXu;7P)P*bUCPG4@i-qIajTJ(dJAdOT8m5Ugrelci&(x8#bBSsoty8x99 z28%5DOdqKs8v;wXrw20Xk)d2(NOwKxKP?YGY2KgxYu~2)6-L z8*^*4u~OPtsM`1$giZiLZ%IvV8(W`iV`T+uI~wOsJ}qMB+E|q|=x98f>h>dtdI1f7 z7FqJb1#L9;f;3L4tSDD)?1a@Hee|jvEUb&h%$z_XeD}6L)O7^}b`RxpwaXy)83^wY zu{{m3aq(ua2k`5ZXx?N%pf;tv@$poWOvO0pxdRU=lm%-p|C`blxPzHB}v1Md%_ChrA z7hzV%dE`w3<4QoNw1&}Wh+e{jYW}r2rc4!0Y*6(3E#Q3Q za7dSRR1V9;LYzK&)fX6U0rvby4!>Zz3bxz|2;5qS%N0{tjLyQ^8la-;BZp(9b2dgJ zKt1={TnFUbsbP%IMG`_j@pO?{R_fLv0dO1uW+U*QI9 zkdhr--H!-iU%Tj}$q-Me4OTXM83WWQsUc@-l_ZC61f_HZ`FikY144I;9(P}V11ivh zlY~lR?k4EPnDZjFQ0mwxtfgRWRxD05gYlcOTEq9spcJ2{Yj6e_3s6y5d`m+ysg93<7=0HbBpf=||HG=)tkau}OOfphoAhbna279*hI1 zv2-k*pGqGDLSG{CkUgeMdJ2S{02;E#(s=?MULOZ{0F?xer}HFpa}mZn!1}%eY{dt& zi~4j^{r*Kd2kx(sp&u#JtO^mtjKQA*2vW#@qXcmbDt+T>>LZ$dPy)Hd2p)iD?YyAM zYen#9CDKKUA&h<2pxoARf}$S)jUmf zk5Ve`gx=Mpn}^vc2|+{4r{VKey8mAg=VA5?g!Tb=n7MLZ+$x5gJIrz$Ao~MCzlfgm zhuJZq(lGl5dND5eC@a{gZ6P^Eqd{gN=GB}>qh&s3qaE!O*QE}ip{LFD(#RT=u9t|` zMXUm}s&Ap9XzI0B5<82|sM3Qyu-WLkktsatwd<~F1?6u-3)mbdSrVuV(4@ z#4=e719E+gpSD3{;*w`r6NgRfV?48}jm!EN&!{*%7zK6FGwYzPGR6t%L>o}>!BFOp zUUdf5tAtb;;~mmgIOcwU8tT`^c&L8{!ZCpLizvW`fj?iMIE|j!F&-;3wb0ihK_TIW zgLcJ~^}u>7BMys1is;a*+DwLS9nXeM21(!46W%&Fg(=*uGCo9cVojODYXK)#O0vEs zkX5a27~_f5Hxm>ZP>o}1Z1Q%kM45*IYlPjhCc9J+xQxzeqCIw?^1*3rPIXJ=vR@E& z^wF!j_kqjUzQJiRvZ8+@H~~<^b`DN!NOr!_1S?a3^5f7n_Twq6;g12V8R7$X47cc| z^23NU_T#$dnzj~z^G`6SIiu55bF7;#C^-QF)C1#`z)a0ITZ&vIMSM$zaJ5UgM+h@r z!b3us;}V_{!a|qu4Y3C)GD-z9Vt z!c#6`un?Ye3FC$EqDz=1gx6fcEkbzHC9D&|5tp!C2=5EQD!ahRZ$p5Wma2Q6Mb|t{ z-D97Y=%8q~^ING`~py%TNnHX3_E8A~f8nXQnayMix(|12P-v?kIJ$X}q+j~9m8OT{ux z(dh+TcKjA-*%4vWcGXv=bqpxm^r}vmx#M|9gvaxWmS`?OjprQ^9?yEIrqOTq6@S|r z${vq6^vr;{des8u$K4V3V@5kXSGcF5z+^{NfU(3gHhSWS60Xf9S7#Y1r(`9kBQjK%EJzaTl|Z^1Go` zLsExG$`X)22LEk9%4{G*up;RTC?Jszw}WD?Ub?{9fQvUlei6`d2M|}62U`zKGuCCi zkBU>C1*dOU+}{8c5F_^uP;%eLpDt9YmRNv=2$dSGbBX66{UntjqC+L>bweqDLnYVX zVlkj2-9@P{8cb~$X}I3lN%hh_l_6M-4FHTLu@Vu(2<6XtH(pAUI!=?0b2nbP&`qaX zgzM4rL*TAb_nhv6=Gy@L2|Xk-n>NFbSOLOC#PDgCsE!ZVYVPtyg%EWKwS|!G5?Tl$ z(8%g#sf{sT}MukXg#FcsrStu%*i6=Ai_O!zO^xP?2yq5A#UU z?krTA)`CY$l-*AODMf{}HK2_(9YDALUYLYpLK?up10tFEQSWtTwqhC!~$k1CU! zU~VY_SWjJGz(Q&q4A`j*m_7}gaDNU*#Y4#e zN&>E&nY>Ci&^!P?TERH>kgvC<836W>D`#r%)!#hS39=mkp}$1uc_CnbB~*_1OPZ=`DdI<= z!t>JPWMNX=UwqDU6_~iU40S!%N_md9O``$6tU*-&yYqm7Ud6>>_8~ib}{?^W7wIu`uB*b%HBdA}R^k?WTW9V=h;X zDd>Z5nE+H{=E}+fvl*=+zlsFf50l39f=~|tM}aG6YVMV*KH0FTki7~JS|mEpYZ%8| zdx-=S56Yvqh#k1st?dq!Tm@j)xpF={?q0)n2f*J;HI)6I;*4v!Um^(oKqX&_1cJk* zJwKx44*+hDD`#r%)!*8a(HBqe0YckF=Xvc37D+3qZ)&3smAV^t6>FDlUUlj9wBG4QH zlrhSbz;Np=tn!y(?#;HIQ>N#%tie1PJXEJ#HXg zOO*$!g-RXr2=uCqss*1B`Vr7yJVy_uNZZ_}5|Rfb(Qy?heLR&<85TdcSA!KIyA={N^P$V>0cSktOov2T^lB_g^aqsQN|6mIwa`nY)Pc_f zO7BqU9RMhz@A#u!gSL>}4#H+YgLxNJh9TlshB~npxIUbY>L#k{N<_L=Wa5G*Zd<=9jf^gR6v{WVzzN)jY?{tUy0rvE$5T1Xa>Bj zr-_5zdAB zL~Cv6qjMG&O1m8S%8zJ7y9P`n~q_;w4PLh1nQjWEYvxk%(D zoA4U6sAH=;zM4N%UxHq6eMj&0He+A86$#tdZ^z3}8`fJ#O)!u)K@ zY-~8D0a9-sg-U0H`SIfqL7=y}s8-Dg^R0^#tifvotfk$RNr+_rtVT(4_jO@*_bZTj z34jMZY&;hYCMBmuVObGBA%w+B8l7^1x(^{how8I3%)g!^1Vs6y59 zfLlu~Av`R#WS7I1{veW}JCyrR!AROz;GK!8LEpjql%TGK@jPMYi}MYxC}qm!w<@ktR*e{9aXhZvee4Z6ruaJaC!6E zY8}lwvIAIc3HN%+H@}d{_~=#fv2Og;4)ch86-|5*5ZE5(a`ot&Wl=2a>8X1aZ1q$G zz6!$gMC3;R>xKCnF>x$-qW~4Y^;P&@4Z;|JI_WJ6^GWZ2KsXJsa%5aN$|fx~Ms;i> z)!T6_Djk4kc}37Kf-NCP(OBXJU$YA|T?zpTz7|Sgfr^9a;sirGk%DG53H$d$j^m&Q z>gfRBIB?~>+G&z=H;^z3QIvZf_n7ac}+#Lw^9M z-aHoK-W-XQ@TCCNN1ui`#k>N-(*V^+pM|)OO0i694WPX9d5F{DSfC>SDil5sao+g{ z2rm+mL*erf=bc7a>l6XJqc#1DP^iC&2k3#0Ard;}i%^6}w*$S6NMnh_?@fLZ=zf4z zS6Uxc?b8~MQ$kiIAP$>oZ{!3kUt;Y!*SLX1=|5Q z&RjXKwyS2GZ32HIRdAK)apP_|`BK{kM_W&v^uUBEY8H*NLxTvt4r^2#6X5P906@&9t zU=9SK4-q*A=Z82QJqf}NfEAP$y1hAPf(oTYDge4-4k`m^*_G&n+rXsoxycQmybDV2 zgaFTKZun%Eq1Zn}=bb8qCPCkoq?2c#ZsID0DE0D^kiQ9B#nG@9Li8gZ91X6VSF=gZ z%{u-H*b4~t6+Lb=%tHlQu!T@Zqj!5kZ!+sF5(Z_RQHnu{Bv>tU3X|DFM*<7(5ITj) znj~GqDO1Pd zI~st{K+)3^T}jzN%}*VKN|AC6^d=)^i7+TqmMI1=VActpBISOeBLxK?5IRN5GfBEc z${t}-qgx&lX0-T3DpnCOSkY}jxKsW(Vk@9qqr?+`fJRP7S<(VK)Z{LIPEfG0Vo>j#&kpFCe6&EYr zuH1sdJ`eKNU@X*)0;v9-EA7Ji!;99w z6!e#(UEIH$AhaI9{p-qM{XueW{~8nUI6P!Ri$qV)&D@LRS#--Jp;G@2fZk;PZWTuB zE%-7UGdT6{7czD4LM2a;5`08g9}v%>5GU0U?eqo}4xby`V&A(?@fN%B8* z8g3fM@Gc7S@a}*HlmgW7E(-GSz6k_;Wk5Quq3X1*$T6(}s?!>&PJ11M7m3K7)>w5~ zCI(atpaP+Bkdyx$5XJzk?qaUH!n}Hl>d9uwp4>QMB(VIf(@2a|?K)EGFc}4qGR1H!Bi=k#AtFoplBSr<)?#Rj)Bd`_W zPcsOR5tEg`gDAC?N^Q874%RtTM9=+h)!QpCN&q!jU&FmHfPno_iePYXAO z=%M6w148msp;3lvD0Iwa4O7LrotehvgR_O!53)mr4q00lcMb>LwgnjvM2q&_jjH+w zIQJZ;=c@6kH2ELG*q-i&asL44o<(rfd_eKP5bFBC0OuZa^}z+SSRSO%=fQsxpu%!c zfS>*EhS5|2Q2A+afb-L41jGhFYS%r`HY8xv6OBQ*qRBPN!cJ(wB|Ca|i$Z!gIqLz|yqwID_&{!C&BsA;Q zTqTfD{?PVAfWmOP67T>u0GgG!psr6vaJCX`2(*|4egDBTs`w>E90)Dtq%WJkx7}Zu|5D7^V9X?@H8e+=?*l>~debRs`CbWDL1;Y* z@+dkZo$t{qp;I3n@P7z#9z`!f=ve@dB3CX2ziJ0LH$kUCI291mrPA|9(YKGU+9F>&U zf_~}n`A|Ch9KGSiLcdkfl!8hj-d}?lG$bOHL&G!7kgpXXSu|`d%y(*(u!jh7ElSu| z3qoVB;f;bAh;Q--nQfn{A%Uk&k2b~_ZFn67&iZ+bmWv}n;*VZs!d+@5dDdTxP8!SM z-(CPU)bMoxdZ=VK2s;7RDpBCZ^sT6!g2Ef%3I1Eid=1d710ooensz{tRswz{i1D-S z0*UuURY*ys!3{P*^PL2PqCTP+SZPQ}3I}_EAe-P6E&5?G8vBZB?4fS39G{N-7xb!^ zlZ}1FpNkx$bwLGf0D+5d3umHvMqG0`XKmXc-v3g4O ziHN4%0lnmfH~qYJ=>fT}06cagCM1xHAA^tzT)bOkFp6rSpM>px!xR!)^ro93H(fO$ zUmAy2@kg&BQPp45{rugD#i(c=Ks8~yzZo^*2ncTiR1;>YCe(rYe1K}gtYi~{Eu|K+ zawzm)U}ZO9H$jwwMFUKWe!mmQ8B47?yDCSI(p@V_R9Sh(N|2)`pwMLi^*xj`Ry`t~ z0pS!th1wq$huSI_uoys7!k-rVzIZ0~t^hS9{Aux&FcyT-0PA6KV!EnaOMpm`=JCs# z)4ECQLr?Li3nZw!f=Xg3(3=68b@v6TCX1l01a|^`lmxS@q3T&-HddYf0nj6WV38=< ziGbV!0=bM<>paPZZmYpPkAs;@%%re>UkbvH!GThQjzj5J=BOB-cA+PD6TpX}T4;&L z(RnCjYMh0V^gx!z!708vi1Q0Ay3B&u2GxUQS*iyy#qvk5s+{fi;0BBDe5ApYRO(iK z;m8K7kb01Qm7p&`_25R;gN;zM4nTF+~Px!S{e3VZliv7*MU#x{Ba#i^uC9K>tUA!CoRrT`&R^ zxRLLGgj@{=(W%mvT6APrAnlb0PiHC*_K_;|svG9G9&B&bCTG**JOJ_pcz_3)Rn=f$e1HijOo@k(hU zdF6NQ?qdZfq6j}W_6;sh0_=du_k>^YWgTfNdCB#V7G1d%n611~DH15lAH8bJT-O`6 zRhPUG1tCmC-jmo?3nC5!p$|a0C{4NOFA#nLsCbGg7cIjSwg_OoFI7cVO&WLd$P5MwWVhiXm&Lbr+xd4UEYQWsViLL_Ib zL=o2^4IUN-{SFx|Hu&~uv_}tMZ>MnH)I?&U7^YVhUGIA7?G%2AP9qR%15&@OK)Lr) zc#T^P!bT$U!OZ(9oFrcX;RS#-OtiWKtO%x)Lq1C30amG5Ekwdy*$sdM#m*;6Lc^~3 zPiWGt`XU$-16PXR@f036bs<;?2sIVC_qeIbG5ip8sxS;~p$YqsrUdyR=!;RP7l0pv zUW$tw0R<$&4?!ENC#q+lL46g#&p^AXJlbK%;Th;COynn;>Bpk!N2Uviaqbyt*wsg> z-?W*!UX#tA zLqrbW2`T)2p~o?SJ_4Y*Ym({~YXO`IlIp9;iZ~y{*??ktW4wNqA{whNPHo!^_>>g> zy4kA`co|@IPAC&I*--p}fz(|qRCj$3nQsA_FA4?)_GZ;RT5zN^jsmtAObOcHW}$zM z{wiZSoom>S2>CR~4PO@IN-4J*k9_e7xBZ@Q{(xBUYe52Au?$L9foaL`|E1YK3pWm~ z7CkipCam;v?3X#JQNJYpPOA^)_m#dl`Muskydn>v{Jzr1YlhrK&;%eCul8}|Pg;zl zB7k!79g27igb#?w{d1=xwpxN4<^bjQHHw(@`&~Zv`#&J?I>1^cCdN@CedeIM$?pe! zJdl2b%nty~w+syO`|my;7FzH!DLHsE&i}x4{k|fjkTsFt_cNXSzDCIG_g#V zT9GS~8$|F!rRhcpE#@j7kt#lxDzZ<&^{;y?lUz{z-^LLTdd0 z64XC)yu84l0WH%3n$7dd;@p!>ivxS$!82 zsIRp3P~ojbXKw^OSGqt_Msu-JuNsQ%r8afB-nukWL(5;|k3ZIN&ze;Onxh(1;l z7eObzAw$cdZ@JwdCgZhwIt)H$2BR>U7kN`5Gzq|qyzRKy3Me2kS>z4lMcxmfehuJ7 zo~sUvJjh{@_X{fLMP7$nar+-oK#cPic^8|)Htc%=s+X6mUS7WvujmG( z9;Y0$LiO@XAUsV(?)nubpS?G{9fv3Yt4OSM)9xk6>eRn0RsYU`%q)Orm5HDu9=QgB z6e??!ATs#t(v&oj*deO!RucC?&AouoTOv0ONmABAh%-^|m%{H$;f<>BizxU!*})r$ zm7>9;l~bIpH`PYsdkB05;27(?3Qr^h3P|L<7`qSDy8-j*Ymu%hU-Bv_79ifHqboSx z{(|@)fX=SCD|BA$ofWhG9(!7JE!OLL2i51NQ&pc=N=v+~gcX2JoY6X&8LJ>^tS(nQ+gWvY0YW(sV3mtC5vip%>Yxtm?siyq zK0MPIRO;`+CTG)LC`qr?)k2NW?`YRWEYN?Ecg&5(~&P^PP(Tmp3q z0NJM@^PE%{S4KPq`T;=b4c8?c6Fgw86GC$vKr<{gAXAw-U29Gq=vrVTuiU=T)6Goo zy%VV67@)H&>q^w@JuSKy*;7AdaPlpex+{|H>XuBYrwvZ2zB_R^0I;eruyX}GKz9CQ zND?h5ffjP|&jvfW2}(5pa4cUYrSZxkNRbHV%Sqsm2XHKJ#l`)A0uniIQ~WKcUjjH^ zx~ja|A;=+q>%nIBK{T1;TecMi4}bYGvV0G7PvJVC9P{TZw81VJ11O+I5)qjc7xn z)DAspDYyRsPjwN%}T!J2m6|} zLBsTq)USuAL&Bp9Y0)f3`zgPX?&V1aZ`DWV@sD>oAn=RW4XtOzy%5?fjaUMPYQ$c> z*11OP)tjDc#9qBKH-anPr}OGxHDaIM>|7)E=^d$zGHJguNsE3>KDkfTwyV494eVF= zqgVZi>Q(BxUlllt#=Qe5=B8}YQ>iJ&>ayTTDNB#9d=46|OmPNk+dY&{dgL50L&v^L zpQ~!CzC>}JNY+NbkQEq<851J>bY;i8u$lz~9!6|}$R4;8gk?m0yn=}hsa4^%7`}j_ z>Ep2;oU3=FcFzD|3LvmEk0tvN@e>fGnRJ(lc~p6(t)9kCK=`KslxN!N z`9vHA!f-$lhjm-MIkk5;2oE!n+S^v|M3Pze;P?ih8r@z`r3#GI6{^wri7kvJ;KNj# zJLDzD8~7K1f-($NK z%?otzPwe zUJPV%)r-*=^9T9l;dwx`k{t}G8c~ofj)ZG2aw<&YUqzX>jmK7XxM~{ z^@PxGG&60jriAthajEPSW}*6~bPQ1< zyF5&p{L!l(y%QSg>~{pT^#fR)MJ6gTg^+M|K;jQ@{|C^l?IL1`NGFKo-U<;dhicg+ zY)z|%1RZ*;acikpjXN=bg*u&Y>;l`l7Z;;J8U+X)kfLjp{S8$|ZdzWAyCQ(lw<1&1O-KW8(*Kx&b+bi+=;IBn>v=pU#Efzzp1uMB7o}0wS~Uz)g5O2+*AldWWYM zQZ32PLKJdt24e*zmI1Whbo`r-!h4BzCy>WL-U$f3A%*Wxb}LQj^HC_&M_4zIhRo{ggQ&LD`K1^Wz(oDz|USlt*R7mb5Rr53vX|4?sJ zdOP_pxz{;O3h7mEl3!Qps4Rdi?}j*GVHUYExWKFNU0Cj+bH=eAf+Xc z0dQVVKuQ-NhjH;TA^m||@&Nh|kTL?uo49z9kcmM0J%}U(aApE|6&KF~a>xU>NUewv zFCyd_J@&y`6ry&`T7k@nR6r$S?2cgb+ z5{ws6;5mR6x?Ad`7^c|ZM;qwHsIZAVu_0+w8QFvd?I!XBHSs$rI0@iZ6=N={3*h!n zz{MCs$Ss?3aUUV%uoJlWm=JPht%q;}5l}#?JCHl{^1e5=La$1tdh*KWcEqcC?Y{Jb z7au3>a<7siuj#c1x-F+Cdg0C)B29P0wWjpGvWgaktg=4;Ma@->u#n<+mR$~$E(P#A z%f^Wu5)jSh?mNqNfWHmE?<_lui!+4KJIiW6jKK&9T_q)JCJ?O;y$5ZTa132lu2(g^ zM@o-D$sPdK`_LmeH39Hj(ms9^gAg!=G?cYe)}Om7aod5{Et;;j20M`R0j!`L7ySvL z*R0LK#Vo+Yfi<+bI-H>(-V5#qlAt#)4wL#4Qj0SS#OJ|11i&ZzP^wyZI(LEb6^LIF zBeeMfAMmt7ukp0y9h-SvoZLT*jHcIkrtL&QfYyiJuUR4+kK;*SEygO&$pq_42#p3f z^?>Zb#V$Z@3m{Gz{`>~)8)EkbvUV44lLB%tCH83ic^lZ9fE+s7xI}8vwL>r{;$KN;2;>iQ|2r?_yb6Ku9iGmP;0$v!oQon*egj5{E3<3G88_ zkR|qaQv3BtWcF`05l>Im&&;uFA~`jYE;W$g)q>E&^N+wRjA}Yk8ej(O`kFmoxKD0H zU5f>I1<1e;1$hSuc&H1 zv(Rx<@Ec*0vYtt%7W`A_zd_jqMfaOW8|ITaSieMiDPIs9_4v(0TWc$p)|Bp!*utNe zjFfg*{5t+6=q0%N-++{}kQ@CtRt|vP4}g;&MI@ju=RqJVKwSpVy3SX zm_&W<4Pj-Ff(mIHa#*;u1fY*z_1Z>6z;Liy?8a}y06LOfexE`mpp{1l;*g0+2Ed$b>yOV+5qk1M(RzJ|JWnkcoS-)dQrg1u}Ra5;-7cGmyi$ zc$tu0K>9p^b5B6-(?D`x!=H=a#UI1@41XU7;~_u}ZIXA3NxF8J9PzoHUbh-P$^q-< zzN(LOtt<_!1t~#r3h26fXRy}@yG&D`v)GI{Wng6P$1xTlxLG7tqeD)D%Mt2sP1!$g zxM-p0MRud=JiQ${f9u7{016lcds9IlRwDR44DMJognavUvLTgZEsi)N~&i6bun_s0vkc#06}srpah)&!t{>T$@y%YZEb zIOOQ}aPc-FJ=X~Fs?Y4FylrUi zmCqH)GeY)h@h@#D?Jva&M$Xhgf>Wg;vX3@p|4%js|KoNo+ODD7(00%2bqnzH|3R@z z7MnAru6>9Bjkh)xgOu6%uCZ0yso!b&-sEX4(Ez-#Ux=_HJR4aWq%{{k%T==Nqdu) z=Wm964>iL=_Zip*xR`!6QvF_J14qQ^#umJ)Hsi5pus9@ef`&Inr#=Ku0LT%PByjvd zN(bS~b^zxa-5dK0d4|CG7D!zSn+t&Rlpc+py%bwbK&@;eHMSO}6Vz&9gk!^oVWkRi z{(&;uLg)opJ@ioBvJPk=z~~r?U!%g!dW&!qMkQaZ#*8512{)ey4ySq5P65+&Y#W(DpR-$F8VN7cb#1|*t#>pr>^x0?ZpM&7#DU5|JG_oTSV7=CtNUWZD{(9VaJ~m89KjhDz^S zN7D%kW`ttnVK{+v6ebp!AOeiCP~ElY9D>@deRaFS>ja4=z8D?)5IC>H4}1Dy-vMx5 z0n#4LCb0VJq1d1uc$*HO){RCewj41{5ITr=;cr9D1fdy*9V;G%z5_V#!^qlMs1D$K z0A%PjNbLaUJy`ts#qb@#=oE@|Nx`>g0JUZ#`Ym{e!1+-3^=qApbCE3^a~Gp?2nv6I zEp+3OAoLGC)NfA+i@C)tR8)e@1F%2#SlT=2Cy%x%2z_HVAeutOqv;eA`{deM^3!+( ze(0&&WeDM-Y>YW=Y?HfiiyRm9&K0dcz@a~AlaJTyREYTX05 z?zN};eGBOt;|AY-Jqzp9wXGF$|i0x+7X(t;?kJ6v^p{>-9{xtP=D;YRVsph@|UWdi%i#{$|z-81csD1j4ID z3Ki3gMbm(^_BVi(WtiiDv|+?HCc#dBDI*D^)g~Zq8Ob-=L$ALbBSpp(80T-#NQv=D zIgk#Flp2T8G5(H>lo?ynfRr)P%lPhYAYB+KH+qw{u8a&bE`_iB7iD}5J1dNXRX}>A ze+FctaVd%QVyi2S7l_lFkr_sp>wxqLo^QV|+vHxg0Oc(s1lMifp@r&Dm!B zmpCK+6cxLStv3T16@X4{zwy?kKq}a_Lq;}8{xMcM6uhWKrox^;N@fRCbme*~(=hdt z*>JOEy$?eyix^SrFtSS`)w13Ka>-(f0qak?JPYqxmLDovwhk^>HU?@N6mCqEZ0g=l zxCoMoTE@GJak(tD4=5IgL595@l;upxm`mIh>iQu>RVXV&<)aNCz5p;xYdi!0GU&w` zq3kRoWjMQVoy&3=IYiG>^bN>X;l`;HQ5k2_aovQk%TqiY%uV$?4<0~RL@Ot~^@!&9 zXSBX=FaCL2H-8BKtk%c!@Xu~t2Nh`ftv^IA(#l$YM*kLi``nIV-mM!^%3BwM+v80c zjWSv!V;SxskB+9HS`6+b!+9wEvjR>~7299yzIRZww@zy)@&>w+p8t=r_kfe4$l}Ml zx_f4NdS`ZfXLoidY#27V{7aM3!piJ=@ zAP;h12iY*+nF?gEL~Qe$CLl-Vvs{N6hMKEdl^&C=^jM`-WjM~ykcka9|K6HmWOjy8 zIz#sqN*FDRbIiT>02w3qHJ-T<7LJXTNP=ZgwhmI&5m;_xr$?o?nm~wQBGyDqAkIl^cjB3m~n}D3FDovSr=FOCui=K%s&`NJB0J2aw?BUCSEaDS` zMg$v9bUOH$ho!R*)_0^aXUOoU1WY;Z(?+-ESXKB;;O0ee)>utgb@@sn zwGy$-K~sUWlZazpvK2_3L?Y(m=|CGxi|(j`JA)PIv=v!E?{G5E(@z&hGg9uZuH5#bFrJ(}7H-i4NVjb<(td%>Id_ZY=X;Jx3= zfu3LnKL)wY&2THv8(|hKrq0M2z($&~_l)4rmB2{W0ZR5D&9rmIHpZ+ zmf{JaX77)YOZFlzQD4C@@n)OB6)feP(KyP8c=ODHChU2Fr=wfE`DTtPr3p-Lftf>A zbMU1?V2c!QSD4Q`d*>-$g9uNp2710072y-8=K_W95@EiA<}EgJWYm2$zAGZO$NSn+JPh-zstWeJlpH&5PnL-QQ z@Gv&u5``w*a2hkPcd0^4-0*ivpqD8$2r>wP;F#@m556BRg7p<3NSeOy>-PYy4(mHb8&VP*PyHnuKoh@sQzlq8r{| z2LHtl8A4zAgBg1a0*><}{>mN6D@e$h!06ryJyU0UJIsPc>}`~T-)lysCx&-W*L`Y$ z8+LdUJLZ0cI(B#?E%ksN{&x5Yq7N!GVTZ4xjUG~H#tx4?8|cFdt+fsB9FFBj%pj}M z{kjKG3CG)M7I1?V%*RUYJ?>ZHq;r5hVWwC=EUexhcI%(a;8@^o)^n(MPniXO1Xj*y zY2MRjnurm6gdV!vlnr&zd@AtvZNi^t%-|Kw{Q>4C&->CWD1<`>Ke!6mS4!Rp-p9f4 zPlegRfwbn=T37H>Op)Hd6oz?eJ_q-HGx!p9{yYmC4DVaBU_q!?99>Tqs*^uAN;4;v7Li;*;>t2Rzp*Se6Gxt2n#m_= zZG%^+cw539=!S7C%8F$~cqA51uSkhjiSUzsfEFvXR)pU%fhH8%L4?b&HT6;otrOw3 za9S^|(C#9<^%kI|RuQdIFT#(u2U@1MEq3??)}mb3!VdqDQ+gYPW&+b^OgrE3s#UGF z1j3;!z^zevw+7Vo*w)J7sNWXA1+VSWiSJ_V+FQXY6zDiB(V#YG!SGGqR4ads2fOp- zfA0({mkYfSl)iVS!kpli%fXwbFfX`^);vpLiC|||{cMG0f;%{coTISXAW!?f=?be0 zF5w`ap|JYk-;M@0Q(+CkTiN1s71kJxaWu_R*og93^QK~nRoFQA4ZD4gW#51{bbsOm zoCT!3C#{0j`KUJE!1bQ83c2Gjf({0kx7(7_lO6uo6kyL-5w5?s9X^^Xz;lW@#13zR zUA(_2D-LnOw{q;gq=Xxt@E2SP{;Igko$%Y7>0VaoY9~D59-yx%be$9KM@#-qp&Oj= zv#iCd3f<&{Pb2p=g|;|hIqkfyYP`h>mv9)puh6YdcqA+Nk*dZvCwvj@ve$~Rt^1rX zKVIT}ZWXo=4Tt4+<7+E&Cs3@T6Gb#?vYuq!kDxIpH4;A zz(cTBAh5d92R)%cAh=Ge=d%51D~N* zsX!-mZ#wWttOg~4w$pKh7Puse)0@Bm%+Te5Imnv{oQTz}O<>VD9K{9tU?5fo)?bS! zK>}saRvn08T+{@Hcfk#oz!T`<+Q7|dY1_a-)V5t9g1qemqcCH32=F7;9Rtgtxl`bM z%s!n1AqQ(=U>TgZOJL_nyi6MyfONOON6^_lV4#LQ0*^zcXW)-$QLn)BD7QWkL``}J zMx(ub0_S7I_6-b4;)YD%52#Q7z|jKz5I6?82I8TzFbp)?wz|e(giF!Z!nX4GVB|1# zOwk80N@2Uwuh3PFvj=~R#^WkKo>nIe{6crUM5Xtmn0Tp5Kd}vIeG0J;9TqQF^!s6g zcqXq8+}d%tbIJP$3M_I9c$qZn2bi@^6i2)pz&AP4i*uzD8zzTIah~%!s$`q((P_n= z!}-rK`K7et{4fVhZHyzLIObAwtuXSs!m`B$*6~nR_6p{-=ZlNI-f`&WyiuHxa)!xi zqc|xM$K<3@oRWxVzS09oT9%qHIgX1vZ+oXO`ntTQ=a zi`%#?v&oc|tB_*5)V}Q)(DmTVTgWO^TDP;VM{R@;7T0&Tn$kUM-iymW5Iu+f9wByjE`7G~ofGl&VQFH+QQQV{GE|AKuxB#Y& zFY)#QF{i+};!9PTM&3?1biCPmfnp^vw;jLO%PE4`evHfbGGA;LMqvCBYd^(iVN+HY zzszf<7%$u6m+KZxM>+B360yyTM*~?=vJJiOm`gDN;w$r*#WOFZr>qKJ1|(r_$B2!u zmPp3r%dGJ=5~)SQxSBaqUEb3hz*%b*BTw1Uc_7EvdG`b9#iw)Q>+|W*aJiQrfY_DR zCW=*{7(2efdk2Vl8wOK+qr8}fSOdmI{A%k@6gv(aJHE*i#Sr7ZJ$_yAb)~HzYkj@- z4~iXubX|P2w}4_dW3a?;j5BRW=ZSBTm3CCyZjy+n+IF)<5~^*tNF<}owpBI_2f8%d ztrF>g_AZ82$Ke%u-Y4+O_#dn&C}s1PWAMj!c(1Sm96<4V)d1=>>)g3U{60Bm>|W>2 z0&>50SPrfD15$IHkvEUEe$ZM=Z96fQB;q^0_6caKSpml5QVhpdwDg}OVw<&tfjlV@ z$6SpKLHucnM9hV>%`=5i!!wN6=~T~I?^1Q&CXnKP^QKcZ2UGl2wJ%Yw_nOuw9qe_b z&B(j@LCC#f^+KMqp_l`j;%|DLl2GtHtMir=Gt3{U?QMzJCXXWG?`Un$(2e#eZM|ll zWyIf&vV2eV&U>-~8I#{@j=wLFTJs>>J^q12>dZ$mMB^Vyq~3g+)7nQ8X)tfYvJn3` zhm~nG`SG>*Cy7gdj4*G%9LV0}N+9EK1Zux`94gOK;@bE=k0Q!Bzbcf@Y3^ZX{!40g z%xd&z{NMR4kn+rJXmI>ni6oTP?_?1f_(2ayIL;!pCGV6vh<$1??ch!Ys-O;96R!0* zu)qg!86&WFD3)6z@1Zs5U^jC!7^B8v^w!!5&l`=!$7C#vM1C%_7_vc$f@0Rz=`~~O z0yssIQeKSj93_h7>8K}S_Yg})IU*Ax_7F-+B#Ve;L~Q4LV5#Wo$W|+2ONgZvX2woI zk0nYJhAUdyigI$6DmU_}VeTP3FH{BbQtJhXl}*5U<|WF#`@uImT?a-cpJ}5P4vrFS zWX-TfU;;{1NF)NYP+8tnw}4h@Ek(M`1hn>tI8Kk85^OZSgm1GwGUam4DG;&|wZX4?fLEmQ)dhJd6Hh3t zd$0zb5l<o3`7U@S}h%G^$ZN%$Dg45=X za-LblyNEbv$47$Bt>ASP$%`?7cLn7v*i9rkCGN+)thHR?iai=ly0n?pF8viMWTqtI zNXIqPMU?VP2E{c?VmG5z39|#X6=tb(Z3T>HZh(QzvVys2S%Z1^53e)M(Z=gPAgN*#w&t>bWt^zP@v&|O&1pj{m! z$kOIil%I(A5*}L;Y+eq2y@(Srf)Dip)?28#DL4V^RlJYFBEcLkrF|9V1y6&%I9|YF z!G$P{wQ(F4;BDs8++SE_KsqkPpEgtBKVE#0@OA=IUN~69&W(>OcF~WL*`3}Of6Y=AO*Bc7t32pp% zRaJwBxA7BH;f_)=Oew(;Mh*RSxUdAWwP}XedhxNsTS_I;c~8_zf(I~3#ZOY0t+b45 zt;(osFvkn)XlgkU)2bIgS$NM-i*))^ey8Qs-)WiHs^zDl&@xF_tEpu%Jh?tTS$Mwy zQ{|neBn>rmP8Vqo9T;%e#mF~BSg$f)4cbs2KSOvuuz0)ue#m^CCJPL2K5gQFJK3jO_wTcWTk zoZhk@nuT>aN|^Brkox$=B5!#HBTUXH%S4hEtCMZLL?md2I$8FmqL}?!CnuN7L@_<{ zWI4B7E(+;xb#f9~E>iTNx_+3A<10k*U@DN)%t}#2d(_D;T_sZN-@0Osrqv?J7URT= zwOb>s?}0f^Lm@7Xx(|j_Ui=#2nQh^mBBCKvJ z@YX^6c7-*E>)DL$s#gpV=G~I`9SXHYn72~mcPi8o;RQW`-lfop2+yah-K|g$w;4_V zdXGX2g*;b^?+`IoA%PnqoHM@kYmAfRL2TQ-7;B()UO6Ag{i2uxZ9V&kwyisjR88&? z71(3s!F`Ot49tnxX><3};(yr=~G6%z;w3kX(klt6>8{)?8ekqob_wx;y^=m9H3n!6Y z^z#M~+Lu3zwBtNTN)qNV>$<%qDU^|iX>0Bp}a<(z|h~st-Qm|H3mj=(NDr!4MC`JMiG+e(E%iw&OpD@EKqR z`RTg&k3xD4-t6$=Ka21hGG5?D;uj&8c_a8#6xgq#f`>2;#e^AtvQ^A9l~_4_-7=*z zN9D22Ql7pMq9&b3w<+jXKxBJWtdcQ13 zBDT30gQ6@V5yw0UU04>CNW{o{1Jy0dwT^&-QOBdC=c8pYFIfY16>#IS!cyM!Fk(E` zEGtg1oDUzfO z09zi7ZMp|oCyA|##yVh(mUWIi1Ky@+Yzn-&tghfwU|XWGODWkUauC?IXlxAa(nHpI zM>N)aF|eMIKrMEM(b)O$=dxarDqy>!#su124V#S_q&OTg&e&mTrr8OK&BGcsv>c~9 z*&Igf6?I!$XB_QwR{f5XBT?pna&DO&XNE7y9y+8Whg`6)0o8FjTe={2RSrjd4tG`H z?DVsM>hE>QR3Kh#U{Cm(BV$VtKN{6m&IjFL!?7Txdka2*| znNE)Uqw`!T)sOS}?AjbYRwRXxbCJ(sH|J0~C)>JL`fT>JV(SLo>vKM6f z7kxhcz_-+wNRMRA90&Vh)fo2vAydg_ft>?tUO^-Lqu!j4k(oaT1Ohke?eM?ov*lp+ zDej4MS#TLfL0LcV6CmapNl^Od??c)!XWb5DfJ7Ygg^Pd;l!#~c8V{sFA_?Pim(K%6&Y9H$aU-b?LJ&`@hM6ciPN zkv=9l0Q4?Aq$>~Rg{`KSVJ`f-xP@3JdIZAOTl)3)E+r^i^aSN~pHhaIR`e*DHRm3R3!j@)u2!$Ao)P4Y@#fF-A{^mmtpS>mY@#<|#_k z=nG*>(Jw#;2wTtl+HBTgK!ux&byog9?2=E?K#*{aq)27E8@a_8>MTP0P5H%7^$a0S z9?^24o*}f&zhhe_j@1|O@>{FN$tMy$W9UbiZN!L*wNMbY_UY0crzh~Cd~QLEl-q!? zwO8|oo`-Fe7^SHn`t|L^){nt+d%JwOZ_z$6R?EGssiPk_1Jsj498O{D5lt;Rhze!` zMRegVL-8jQg7xdP^=Ey9B}=Rb!L%7o%D)=T8wl@`rge;tyth{WUJ7#eIi+Nv^X|iJ zgkK3CeHRB^K?{2uU_|^T%D7ir zIDm`(+aSC_B2Sh$@s%>xj;oZh(BbkYT2^=TjrEmV$>zR{R=fyM zhWW~E;0`LX3j-6N4D*$HJSB&Na1=lp=Ig@@^Q|il^E?E01EgVEP#DISZW{-mtabx51g&Hn?0P zqapKOHW*_>Zq@w%2j}>QvVmWYwgC&5HYheavVo<)-j0&~rfeWy1trQGGoZBL>Y0)g z&}*s{Mi0K$A#QU8J6|L_<1U{33e|0HTka5|G8E2jZa3bUNUaP*X1gmd$rGo~LtyPY zT<#=sQ;zR;kK6>jS{|>A{M)X*ee$)hgE+;Z@Cs32J++sA{p6*V~^p} zEMke9AkS@`(QhoCI~89tTI$MEg8!fc4gj#gtcK!}5;mqz)xv02`kxf6AWQkK3p$$j zQy|ir+lBT|;e-oNAio;h#ZAgxz|)B00-`HFtAfY1Sf86fydI$DhaQS}5QHyCOihN) zo{D(qZfqR^g`drYbLcwYg=s7hVvrl2T*n*A=i)0nkog#39e|ws44MEi3VTmMSO%R7 z^B@`}8eMlga~%g(HwbkEWXK7P1LYE6O8}v%K=_n-7=S=QnR7DDYh-p+PU<9e^ zbjVExv_D)*s$B)n3V>9*1Btr<&dQbK+BN6f?cq=V6Wo929W4htS7RT(9G2}ihkPFY$hTY8WD z3wp~H-F&Zd-H!CC6VQ;O00qyU0e+4vpIO@p!rg!)rccGkt#jORdezkDadi$*UX|;r zrT+zR0LuUJ6mc2|Q%IDq<|*P95H*{vg? zirqQ~-TI8CpCf7hhcz%m_x?_ER9|GhqKD5bjl#M*663u+2lLjj+%wcIRy|W-u|UvU zUa05x0OsBr?!cLE7pig};0XD}?ycb-oYW@0h_|!=%G}$+a&mhfgzbQOIdR?|4)K9N zYyGZ;$KWGOcZB7kI>Iw8R2_Gx$`pMGpYr(&G<{Nt((ek(JO0mu_!OYoY32#^aIut5IIxl8m@K^^4lZWHY}~q$admSVew3S z_N!I-hgAM#IOOz%^6p@*hMLO&RxOY{NW1~aP%P8{N{5&6Tm~R?ERb{XVy;;*)L{W0T_jIG2X7wxrDKfx%P*1PwoZ% zcY^g3guY|08-X1ED#k9rx)R7-BxV!26v%Z*YyxDcAoM6GPXhZB;FNdJC_@ibth73% znuNl7nbF97y8JP7K@ejD>suCXu=x^y_%{w^3@eByS<`^dj=(QERjW0L*TRwS{96A5 z1@8sOT1Q{QwI)E;x;qkGiLlnEATa^Z{%~c-vISy9q`fZW|6DP9{g#D66mOrD<-JkN zDRhImpl7mNrdrdNU{3qHrXQ(jQV+b-UcU|cDqU@jQx%uf2$)!wEBkBC!ryc1jLKP> zbCu-aW%6CfgR2FsX7+N;y9f^bfS;3m6vzfdp40*yMrw3o`0}MsajBX)w_KoH{4(Fx zEs;L{ns#Zp!<8Vfff+9Xs0nd-IIJeb{dxvm8J0IuQdrcA0BV(5rHG?I7y&4r!;RZ@ zintJj`2e|e-KWbJhM$W2HQ5lhuj-BN&o$JUHLQ6 z-6WlDh!Yek^Co%>P*~p|-Eh7t3g2>ITc?N3{pc-g3RovY<|Kf15|C?=*hu79ARi#{ z1|Y*cq1m9!eG5<310u_Hv)5c8n`|xEmd~;245UpebYW!X^;I@mz_Dw&zgdPoFpJ$u zv8@G{aHqxm_S7u)FrTeAV$A+-7Jr7%-=~WI4dW}TW|vAf)c$5f#%0mbN!Ef*9sC*@ zB{LsDEe|+yOE7DpGF1nY9SnL44XAqMfK$U>*#i^&4WN4EfO8ak<)pWq7Q!#m?@P_F3$`K0B*d?#$v_u$MIP zps##jHRj(YCML)b(O4oCv_MYk$aUpU=`MLopavvP!Ls>xD^Sr4_?vUSe>S=Za zOb{P9a$jteymtbmo>xi?ZGu@4;!m`E1Fc8M50O9blvB~rck%Eipn%UPB41l>_nrk| zCxBi1XQg=1d$`;OMC!Fp&ZIQyh0t4CxgE#`NAOrwln+4trY=C<4Nf^9gNgp!Ua~vO z$mi2qFZy`MC_OohQhMly z1u)v916D{%Dea^h*2C$_x+bJqdpQxd%P4(%H00`Z&aSOF>zw4FoOMnoWs)n{wQaTV zBnscUO;Sp!EXv2v!0x0p4`mICweY>Inv0$CLz;`7?y^pN#7`vE=%kgBjy#4=$;AnZP!5@zF1}mR^DBg&%$>zw6thVJ*=`}rU{u#24M%}i};MtH^}!e z6x>TCf57TGvsHP>yohp$fK;e5K z^Phe_M?%?fz=^D9KuZ>D$=}u4(@aFzKCI4BWL?@?+!oe(Uno$7p2%IH$*iSn+{3Mc zuTb#okU0>7vT+MhkNL83em7jp#vPxf!ycc7%tl7eKZ_x>C5xW>Ru*EE@RJzgPa(O| zHP2HH^C#aHE%uTAHSJR&xq{t*8e9+PbM|TYYL1o{Ml5(B>bbk?a96qU3!Vmh04}#L+8rCYywU{UvKZI8p z3d_kxeGu%#W8SH#)2RS<=SM+#f$%KQ-6X+C9|h&?`YX^c050Fv1yLIFoxS+_7C;&O zqoDk}NXJhxM*v(oYknM*PkT%S;dBz^x$Y;bnAIRGCy}pCh`qrWZ)raZ!c%}`yQw&W z($zndDpc(-#HT^`$D?4{eh@SMfi6HEBgvETyLBefn#%PveG`lfJ{p|mv2HAG7t(Ly)qBk#%S&$$x&aV6m>@Ka!r@B;td+%+=l?m26E!(_-YuSkej{{t(lsc=_V&~!SRqA09KnXaPt~qbpg_d z#1KG+Vxi+eSqW?j;Mj3Mto8es96MDenwN&=AW`=vPWb_$3xO>A3SZ<0gjNDc{nIf1 z0;F*Fxw!V4r7De}GA#d8r)*~<)cqZ-n*C@KAX2Dhf><}$Lnw=LHa}|0Z}3Sy%e0Iz zKBS&GPK|wx)^j>^OroA^{{Qvl-luI590?zp2)(F9*ov2Bq(7i8 zhu!Nu5f_TM*V(#dwP$DL-~4~ifA-<|L$g)+i%!RjKYsq>+N$ymyN718dcXMW+&=%S zdd-KcAC{HB|FODx&mZ@{^3Ogz|Cw3&FZA=@Q~AI0pL=-z=B)gW`}r6Bp~B$rzs)=8 z@ch?i<^RRc|G(=$@$mfjW##XGoNoXBuK&r0=YKIP|Al`3|84&Z4$r?gEC1vF_xuYE z&;LtS{$Kq3|GWKD4$ohtmsk2ve++-=-v7J)mmZcs(m5-?%8CO}zqrwf@P$&V3S!fc;|zdR3}g)ws{nm?ap-5mw+py)>FVTI zBSC%u{QH<;2#`;a_ymA5d5OA9mxhQ0$ zdSVKQ69MkNwIEIi=J62b9uV#V^l!-EcKQf#Uv3ZXbhUGQ3!GO0ksYg5g;`Cs4A)|q zV7uTmp^@Ky`)z5;$y7O+njU5UMd(^p(XGl_ryqcVk>+e!qclxpyYXAXGUe`Mx!Rp{ z`VqI^0Fi%c$={VJZ>EjpRgF=&;8c7ZPFvD8wv?l4rv|Mbq0rh0)@&%50kD<>xdVyY z02zvfZU*HuU>^ZOcLC{n5Kao{!;1@FX9(iZdBDn*7Z$6*pANuJ?td+96U*>Zxsr)2 zQ-Yzvu$0{YzWo!%xPe*FboQ zL_SarWqs*<)xSU*pe`c<>M~*>2(w9)``Vzo3V8~IT>x%GL&}rB1^OvT@Z6BP)VbzY zOpO5db@V2P@=_=M8>S9`a_3Mm!IIAdVJ@J5bD3ehJ__7<6ObiWjeuvt*$wE!hcWKc zEyfK$$U-D4Z+rX`{LcXyQsr%rYC{;60D0SE1QLw^{Q76g;aaegTZ%bNR0rj0>uxZg z02I$X-w-v5R)p_Gd4SwqE0vYY79)S*!SUEEYp)bW6SRqu!RXo0Xhl%#smL)2kRhiw z2}-C6f9?nAUO?}8IxAmN*K-K8+MP6+*GbEvi-WNBI_bDketEcV;?OAJ$64`Mr@S`( z@Df$Mc{VusiI(jr`A*O$Af4bdl>8<@O*VZ3b+r05h%~Vgz+M~>kXH`R0{tUN=*0m6 zc?>(o62>rqnra3FQ0idqSxm2(^6yYL@zwBAy4re3tifR(b7_^>^j%(2vVj z7?Cd8F|*4neDYLGJC~{o<90Mk7bgeuUxym&L$K~g0rvo`*MR&JiO&HUiiQ3OO4|@z z7!dja$Py&x5eZDheQYGY2lVB1<`)oXO|{Nbd-T*c$Pq>t0Df|6Tc_(3F#ME99)4nK zAgA<1J+*y}EMEa4TeQ4Cwb2KYizlP=S{vu5{6j}EJdk*fimr!PK^Siw0j#w^>XGOP zXn%N?+HK(0KFB{$@z2Zr^A7$L@(jb54&zl5)YG<{d#Rr17NH_739G1N4(a)(PD8p^kUeJda`Tr1K;Srumgpob&x zs~!)vbeMVAl7uc(e!vOezEC6d;>B7>da>zG^mdCDp+jwG6~RNKy41FqjiB3FumugD zd-Zj|UbE$dFzaGf(yZ21fd){A5U<%)Tov}9{x1U5s_>fKi!UNv=L%yrK&=X|+j4I1 zog<7M0QD5n>vntYD$WOC4!~{T_1) zv<0{cl~vx+Sp&iaB+9!PZz+8vbA@pnz%{tyy=8lxPd0;a9f=QY2Jvkr`3?xLlPDLd zcWil7c66RF1^^~*$I*c(4v24-DYM9j4!_Vg!hC@C2qO?IhmGV~vK5(b24u*QYsm}1 zo&(6W{yA_#yBL>a9FUOFf*GbC#xY|N3{86OX{(QlT6^a$}Za zR$0bif%i(K*4!N^ymbF;H0NREPogUdQ_smhY**5KcmwKDWqWnI=uumqZW^T*EWSS=ievQSXUs)|EoPmix-Y-gt6zm} zl~*^|U8w$ePZ&c0^uQsuJVSdB=p6tRdK4duV#yuz;m?5Lb0{bM>H?q(Ny77ULu~m8 z`iFtu4^ZpS5Sx#B7~g^LFA`--hS;?vj>jiqhXdRlbhV>Y$@@Uq3+TV47>}f(s%o&z zQ0>YT2%`)T`ODd=S@fa*ni;2e%F4@G>tka$+}0EY?_Ra0h$|ZO|>qBIkq_f^|WR}>;)9{ z48XRpQmy@E2$pAX*<yC`FB-{Z?-xQF-+LZ%ckLlVj*xOL}_h08jr9CtgEqPPu_99{21W;?hJ*vE%Voc3| z!hb+i1g99dZ_i1@pQ(R&JU<= zA!|FiRp}Ng-EHOUXoAv?V7-g%e+O6@ARY12bTuGDu}~jS)&N@p2n_|Y2Z=X`i~`aw zDU2F`^kTn&fMK*j0qZRDnn~J=r$Xj*fV{ih0PgQRcbcvl?$nZX*xlvF57nD$Z?nu@ zRLi@|tDtfPK;5Y=ZXHFhQ1E8U{@fS57ee9|f^D zk>L$M`@^L|Bf$-%U@t&uB9L}S)B^0WTJ>P`!89mB7q|-$h@7Vi-KvbpLd_p8`-t(t zaDc?&vraS2)>H;8{=`PhmaQF*0!{$n*Ox>3HEoz+YpQifKWkZXIM0XpT-IxkmgR8% zp^5d9x2+XfS`d~<`(u0Xbsll|$%AAL>7X6Y6R$1NY;R*RV#~MpcbsVH? z^ZJQm>HoSThK`pG-9i(ESzvC$obrO@Z6DN|(edifG|2 zl2SDn?Mld-oL`&ryCOzu4Q5&Kwic$_sA|1!cH)eJ=WMuHdtCE*@4afsAQEah>8I|1 z>j`|$Rjw~sYIm9PQ!Ga58>7M4sLTaQ&|s0rJ%KWp}xU?1hPt7|io3kR2hyTky)eqRgDf#4J=sGs|1 zDMsX9n!Qx|{#f3->h}Pr^2w&yKebY-JJbN4fv5&dHe-C2YCkIf#i0hAp4EWU&rrG9 zfcN|w9%{gL&1M6FP%GQ_`k=!a(9f`+(1L70wG{ka176nbtOoR8AQ;i8yNi!HNBO-n zP%5Rrep?9SI8z?Iq*h)BO&7Bx)kNhRq+QJZ67lFE zUCdEc7W_;W&|T{+VaOnnqjc_=qKq;`8W!{xUR)N)>gAa7DU61+F!}-Xdn!uHQV`A~ zQC2rk5#I#iHGt8hp8jj=Y99-Ys@k^lPotkx4gSYMG@Y)BXV>v3T0Wl!XPT+Wzn+ET zALN#O@#3HiMZjK^#lFpFFRRW-u3=xC#eUXjZ)jz&&SLY!n^O5JetMXW>hGrMF z^_6eQVpsa?aYy;=?OE)>K6@WO^u(Y2Ko)zl&o;_3k_*?$VmJG2?=C<0^I7a0efBth zyn{dc)hzZCK6{@Z0MdRpi~XL@KD$kZd6D}cS?r&E_K5Ai^8H!t^qJZ$O*i@MgIVl8 zK6_iM&28;w?9lN(yJ=`f7H!zMS?onVdsBNvAediTN^eei#^h3Pa5DWpP0p-<+IB> z`Rr*~>??e>cY|-1Ia%zxef9`_N7%3zXR%-M+0DMU^j?|8mW^s&rxhC|)7bxr#l@NA z!_(9d#cU^kqUBL^VnH((wpT?JM=n0$W<&w*&rKk{uD;r|1cZ5jLW=uJETe%}YJV5; zt)N;j;?EC|IRMCz6M74jo~6R*1h5V5R4Y;TaxhR$J{A}0q3PEE!O|jc&y180?Ben8 zEJxJxM(MlN5Zo!$=7A4QMrHMP3i+roHv$O1#l{-*x673m4@%Kh$@zokoVtZZS)r6< zCMu)+MVbWk7F;iAqpT1mG|G)=!A8Kus>$HrAjAbakK6|P3T$HpE(^qJVLo&=48mtA z8J8p0~X3x4G)YUtppEA76As0;*rCF@vQG$;Aa5_ zM`@w|NDurR_@|^@#WMaQ?{Buv2%{V@cmVT$A7UN00N(^yGz^Mz+hDX1?$Y(;hL$tk8iJ@-xf*mBP z_q6`IBq=_M*J1Lz<9y-rJlcID zEM}bWI_-9snp`db>qxmpyGy>@aHMpLyX3nK=fflKk)1qDI?xW4em#Zk_p0>46Og`7 zzB@Y1rc*p4=|)rMUO?8$GU{}1^hDYGi59+vH)wetC91Ck_!juT zNs}A4D`?Z9ek(!DPt&rEwvn7K)id zEMZ_nah9Ny?`TrP#h->m%hGq-gL|r&r8$Qx&1q@SsEy=y;<%fHii`*3UaCcTwHdiV zBbb8B*n;=;y#b1IR09c0~<#r-0iD;f>^zAPqR1JwOwzozMY#=4E7hu32knrl>a ztupK{v)B!qJ=f?`1vbugDkq$xT6m&j*@y}p#525_DxbQ2ISaAB&O(;!S}cLHMo(3G zm}85kV=Bu%B8#3|pM}^*Wg)NX95AzeLKgiCO_bF%101s{K2rzuA$cYr_e8!uh? z$g>!0RNUGL&p>FANv$G$wKlXHtW;ZJ!~k6%2I5+8cg{$e8;uHH4e!^Rit~iZDO!%2 z4`1V3yq6)<`2hKTZwhk^KZ+>d{Jj&2n~CsE<}U4V90`zbCqIV7qkuwgMGk7+@M{i- zex{q62i-S;wGT4y1FQ`|rgRX-1b}rpkPnggJ0Qb6p}Rpjv7<0X0V3lkDckc6a(V@< zh`SNo{VmcQVeDW@1I?&466C9pYYo5}0^}nkJ|NNyNTic6f&i->kcmi)17w&vG!c|L zfo%s|B+dc$t=2AI*YS%Awia5YEQezfVeMlBxs&`Ga=#2vuj@dszk8Ig>#Wln@wyIn z-dP8#a>wYGXSSA%?V0?E#lk9O|8U3nJ=A{(FzgSsI?mKRz}Cje9i?Y*?ilf_;Ht7q z)7nZBWLst;NA4S0Grv*67v}f>m*5)^?8>jEh_PMyUa%M=->moaqKJuEr^3E&{bqe> zXJMoP@@?Y5NHhQtl~Zu_%;-#cex{ZRZZ&u5y+K(kdB_4ZoS$r%f!tF8@@oyRBJmeM zo;4^8j14ZY%~mrJH2%^8mfC z)kOUkzIuo->w6y~vB8ty(K0G{*tbKA_iVMxQ>-c9^mUSYz^y}ktJjM z8MYp8=Oc{PjvL@Q-=fp;SVwCNrKNtiZSvT$Uj2E z0|5C9WT*%3r2*taL%s^DRawke=06YF0kZ7?D3t4=aj~-PAxjQqp=v$souj$_6GE7@ zj0!&MkkO10zWSDbGTUCTP}hI+-q&%o5fjN)R=E!J=ZP(#rS%8XTMQ+W4WrjhhxGlG) z%@q&;RIG?}@PpUe2wq>~hb6C^7pb}L7Cin4sJJk<=A=gKJpsjC0z>@h-2tN}jh#KA zY*?UXKG=k^69OHKW;76xgRu7^%@~>c;%2bb-08!anH}Fc?bJRLgI)(2iAvRmzud99!X&L3$Uxr z+#yyIUR1f989EFK;bI72BVzdwKS(*~0u3bOj1`d~^S9wWwsI-|I9fuexJcyH>;sKZ zxhT@XkFcJD2 z6}OzgOW<27EO`i%reUcV<`8CBa!Z9JHy`YQT~K41#hANSAbmwrrWuqxv@W@n^d)eS z(0Y~L*#YS*wG28cv>_#BzQ{v*qte45=Ao;Tm`)6nLCizfq-B~x%tM=!LrKpWgY@PU z>G|6rG-FON9FWRhz|K#*2V^wmf_cm}NY4VQt`BR#_dsL{31y^&rL@mvN{kJL*f;r6&0NNgTNQjZLh$O!isY8xz(aV`U?M}`y) zLp__^oh?9)E*t}7n#(}ykw#hTSuO*qM~;!mJePsgBgf|KLvt3nY*gfgSOfkwy9}fr z8J2e$kc(XgQjZLGCP3RVmx0tHBlFG%vfO1L^~m_>0f?=08Av^Ha`Aj{Hn|L>9yul1 z3}lPTK45S{J7{=oY#txT()FYGJj!^K3%RuUpCRw*#ZW^S>Y0hO(u-h;h zNIe=#-i=JT45S`upPR=(>H+5%2m~B5WEZktvI|Ka1SIcbm^t9gVv>Q>1I`6VO4+M@ z*#g6R<6>xDk$W>p0omD}cRMI6CBuS7?)nYL^5t>29UxChf}RP2!q6n z=Wzn5Gjiz6ccNm_f_MPkgi!vCxvZ-MPZi!jV4M6uD4F-8NZ+kw zzFv#;JyNFN;7Ld)gfbd?K0lxfv5fFnSd`YqIyoPM=B`FlV|CFj&}_JSz=`#U?nc^i zAB9n4{qx=hf_R^>d~87OD?k#ic?^(-=$$}H-03h+Y*6$OAQ|_Ptw4?pv#+Y$cGz6S zj*_Zt-EDJ#92=$U*SQbx~5*l-_4j}_EN z#B_V0=>@g2N{)L0y04(EL_GJZ2|zkUIo%=L_4Vk?!j8G@EAJpWrLdDsn@dLG-q0CE z8=$!0%Lcrzg;;8Kq-17{LdTE?{8r1OkJTQNY092?Pcw5^&hZg$t%)IY(gd?I zRO}^g!rvqUgOisq3YT6E6oJ93NLEq2lZfK|B+vw-cqb9Xn~0HM6z?RWcykqKPB4mh z5>dR#yC@Zh<0TQrn>-=Z)bTfPq%D>jg^c2zL=^8upe0ol?Uvl)*{o2dR# zjkqa(86b%$-b6h&bygKnMDZqC=%$9T0f^#FG~uTBHS8p!coQvgQ{N?lB8oTBjGKC( z94MlA6Rko)xj+%cn`o_@VifNrqIeVS;HDVGJBcXXMC;rXqj)C~#hYk%H^nI4Nks9U zg%;JjDMs;5B8qo2&_^QaN(|p5qIk2{Wfbo;qj)C~#amGj#XB8Z0ScmcD+;1`ry0dN zi74KRf+*hU`zC>cDBg;KDBkJY27!Vo-im@K-swF}pdgC3q9BTQx(6+WDBg;KDBfuX zqe&u)x1u15clrj*kx4}HRun|>PBV&k5>dPr1yQ_97_}yeDBg;KDBfuXs7WG?L?~}n35N1cB9u4lXCUXENx<>!*D=70*JHeRNrdud@Dv%! zJBd)$N+Ogu<&6YGc_$Id zo0y$oDDNafc}rahhVo7#lsB;mj!QYh5z3pP(u-v%?<7KbpWUhxp}dt&z9yGMC~u{+ z+cIDX<*jrwly?%LyroW60z!Ec^Y8#BOF$^^ICK`vP~J&|^1d0E4CS3fC~qQ0f}y;V z2<3eruqGpi?P5}TOu)!tot`>`7c!K05}~{of|k4n&OXITB9!+}Kobn*okS>aR>4TT z%ozcpyveeS94g7dP?m}<#4axf8=<^krXm%}JBd)<3sIfKDo$|-<*gL`+71{(c@wh} z4CS3fC~sm;f}y;V2<1&Ik~n28Fog0Z<|P=)JBd)<#0nD(<()(*Z(@nW+th+k-kg6+ z65lf)LV1(dlGrpK7(#iIwL_K0p!5n`o^_F_d=_ zp}dK95GjW8P9l^y(K?Y@`v6dc@+R6{q_%QtLnv=rrCy{M$~%cr-sHB}DTeY+B9ynR zg`Hw3?<7Kb6U_uN4CS3fC~wwkOCS}(9wdoS-pso-pyo(~^5)P-C~r%J@-Ad3?<7Kb zCs1H;33AE_WD63qQ+_jYIJfNZ@f@Q~$R;I;xXo{YTG0djVpPbu%@s0kbA^iA>@mJ? zs;%5ERC4a|7~eP5uJk+P3OIZ5*BieXCj@D=yI_3ZbcssuN1fB9D$V%5X}xXUSB7-C zqBFj4IwN;4RVtcqNyOWLt&q!mrX{)gtfk@d>vko14vk>TcS%b;hbC}bM)NJn53fT- zYO5JAwU06o*Eh+ZuJgDQ_RV4{2XSj^!TauKB;~vd|QWEi8 zM)NI6%Tg2ab;6QTS)US@0Z2>AB$9D2!t78|u1a+sOp_&d@Sg{)GgwFPzc9;1#w2lEM zT!CWj^agJg5cjr=z}P7FhY)MP(v-g1nnkhWz_HVty!$A|l{bA|kX{5a#^Ft0Z(Tz% z8HYE$**hWzv751JN#7V}TD?V@-XbgQsJ7iC5l^-4W{D(J+isCaMwxA^Y#Po3XtrA= z(gE%52(1B!8(@=hc+-Edo?r#$W45bL@9-{S1?c+edzI_g@RNG!`=qzqHH^cXzF)f< z2Sxe;skzQD8HYFhpfwN*!aJ{p@zXoKcd4xglV$pGDQ39u(9(aBi0v{CZ~94zIPPi- z$kP&uxQxS_ex{IHbI&jthd2G4wT7zuHi4A>n^%hB=Yu=Y`bjKiCL)BAu5zGrpbl46GYBL-FaZHd?}qYb9t(c1V5QF@QkR)aXa>35?n z-;;wf{hq8q#^r|))9*{9);)-MA^m|w>RiU*O@AnndiQNkKOae?!DSrY^v5}@Orv{0 z#Xd>&D8y$%+}ke)vNzcm$T%D=$vC`WJgZ~WruTUiQO@~Qp>$4{ad^}Jl3E?N8oinR zcm4^G@?6H@O@Awqgwpz*EFuFx_y@`jIBoIQWE|e~rxw#V;y}(L)D&InS~G!F$T++e zDh{v7IJ~89W;7U8Dh_X{=h<;s^pip0ut)r`Yinu-=8Tdk;O9NyBj!pv&M;Vmsu81|&J73Jid zR*oQ3&{uT`H$znrFSX8xSXjp4EiLz^fbTL6Z)qlZbkS?Bp*8Y&jQ~8e;q3T~Y!GwszdrUDK!Z^HX#NizS%tDrV)pi?ylnSrV)pi{aTw~9NskI@G@Urf|pfk#Nj2@JyC;yX~f|r zR-Y(Z1`Kg{ISn=>p2j?yMjT#ZjfodRzz~O*k|Pp~!<$AN-X@ejE^)^wV2H!Z(wh=; z0!JKP&gRn+au^{FFDLEk2}aFKBMxtW=$w_fj-wKBc+Z9*wj_9Ul13a}PMazYZyIrU zIXga*V1Ugu;_!CE_}i6`vmoN|a!TB9ggvZLO?I(Iqe+*xliH=fLS^lgL>%e3cDjgC zxPVN7Qxe;Y*+1cS!18aGIwAn$xf@_0yR6`Oh&8x(Uk;=^_E#W{ZX^8L&dAAkgnJxD zr(GpyxG^r{@Y>aKbdN(Pvn%uXVYYxX9619H=fr@+xvY=@bJGZzyMUc9W96n1E0?7u z7%Ml8Sh+-u1Y_l<5i6GlcM=n@hNclKmsljhSh;D$$|dF{7%Ml8Sh>UsQ4VVxaL&Nr zLdMEXBUbKQAW0P*G>zb(jR_R+#kJreIOyvvP6h`}BRJ>~^kE{w;Gk&)2jxbrB(>`z zU)*1yy&RpnS;p@#YJO&3Xuk_9X$z%vmyT+nNg*JlVF@&exzWhF< z1I|sPB+&@FuG?-&p^UsJejf>SpvBf09z%HAee=GMQh&zZf~zr!r4hoD`~rsXOe2J+ zL>R&|jS!wUV}BaH0ghTHx_Qm$JolQ(uyGG*Aj9o421rkd*zOl-kmw~5$K8b<67@Oi zMDGD2z4b2R`u;%r~uF&XpN~5{5 zg2(FS$}bZhFZYO!VV0$9I9W^FGz~b^QTy#OFh|sKC2?~{ z_{`enC`XL!uv+G^eX=FY%Q63iE@jTAY0^>cm&%;S`y#c|I)FS{lN)`qygYgt*`#-d zjan8i#i1#zwK*7A;#99|3FzE7h)FS~4Y%D4AWaf+ zTp2!XvfLwh=!svT+-$6Yz-boKZ4+Wjcs^AOq;H%d1r7JF?3FY1&LVsakZDm$QAIue zo2w>(c9t~+>F@zKKt`P7eFDVYP7};f`$+d2R(+=Sw^z3VIalr@)zmI#6*7ybDm+^v z*sVk%HYf5qI2n|7IsWHdfImL~+Vy7Z%`fN&b1kykdSZUKwiL_AIaANWGp;cyp<2Bt zj|`r?Ft1revz%wypanbO53*hyJ{<}7uP~*!#N}dWxS!HBF3lr@St)7$Ot-$w8i;i5 zBXpw`-YTTSmecCuX8~`2TQ7KmyvP+-1RnyWV%>i`NaqS$-}%%#+5U~1dcdbz3qieFQ@{18-(kNkuF=$Q zG_^wr3dJUQXdkxfbsai<#im~?C;PC~-LF~L1NFKP$2x+g`Fgpx5!Y+I)AYFQFoLs9 zi`G!*>z%+B-=L`-e7zkqpl;4%hlQ;st)XLW9jMD4L3eL{wi18wU;d@$j#%Y7$&YKS zbfjCoi6{dq-zKVJ4^@%jn;umEs-GD8{7Iwa}LOlFb+BKtBh z1d<7mum_^-OW1>epn&X)%B~`yA}9zVDk>=A##Qm+jytZPUR+TTm)Bj~?!9jJ{-39+ zdKjYL|NXxFerHlo)u~gb)~>GZ(+9QxQVD_Gq6*=vBL4IlK6m0171^;p-sp$)PV!}( zPOzx#sKq-d-A1>>T0KO8F;KK@wgS@tz>E)VUfo1U?Zi*CO~Cm_i)LAs#hhEWe`mio#X&R14rZf#ZXz{r!l}aV9Qh-Wr6s%Be z=ho8|i{GTUSShXTlbrlBrIyDJ$_6i1>!!XV2NANtXL_4b%Vrh276!=%KVNG37$WWj zl|O?9AN`~hqH9Mu_^$RAj%unGw_ZFUwCa54tn)sPi zscXYP$q<06tFHY@PztaRU=k>CyArVhg}o}Y7~x)|bt=^o@2iySk@AI1@yyqj7MxdMeXs+ayMPF@9z|Ew$Z`@T-NOmbLIHIqRTEKRT0~+!Nsl=yoZAr{hpb*9ElbqyPq;#OP_@xT` z#A3IqV#RcLO98?5nF3;N{H{Q1Zp3S2)DwT*mh32m^X)8 zuSorT80kIQ$U}Ml@Y8MfV3b>%vJFmm^aJ#Oru-V z80&&=y+9?K$d67t!K5Psk3v0J_F|D?qj4 zb?M+-1*m=e!t^}-RB@tSXDdMcC!y`c#7gO3_LNHIY!FGG@4{%t9|wI0EFdmlPoVNr z%!rMu5JTI^&Ioy9haoVrMMZPoJt9lctF^NIY0;33D6KpD{)mdl8mB@r6u>_{;>~ko z?22(vU5%j$l9`%0EvPvmY#YR%ZhP}8oJ{8+!xUzUJF>rQ4&dY=(0aeYjoq&qVj~h$ zogns9NYr;+3R&@L70vmn^}c}np>Je{gOAD186^s51}+EjFI6<>aNMhMi;G0>QM`&B4o#NkZitRNQI^#b3WYnAG|!8Dc}D?}NY^ z@okC28TsPaL45JyNJhR$!M^0R40%6-FY*<_uBcHAxwmEH=xp!-19}P6hFiQEFmIR4 zwHHi6{PqlS)2*FZ$;EAIMo#^8QqKT-k$?IQHX}Db(`3GrsPC7cc1O=a>U0@d)dSZ- zP`e-tn~@8S5pzj9P9iaBYpUgZN`6(hkX7+t5 zdrW12y#=y+{3vKiMu_(eW=~!7f!a-DB`%PWqY*I*6hEZ0a|&zm&(cuh+cfYmNJV$h zRydKpT{c1|WQjmo#xKV&UhH<>eALSF6%*x328i#M78xI#1_sVf1KOF_?1QE?896)e zlO^p& z7hDp6#Pwo>;={3l_&fc2p%Pu%ah_W>xL(|uD#GH8=EMwd8y3Oq#kUauB}j{Zs;a`x za6Culs7B+&;|iQbFxrttFh30>epZ0j-YXzq%$v`zm+PUHD0o2DlgW2F$p>p^EBdZHJW(XRS;bP(Z4Ct73rcYlxUHu!gD4w)$)`<@9Giv^jiNL*g{{sbM!53 zrEXul6Q^|h+FdDh6M4RN59KOWTfmO|)-BGsYQMtnMgPt%&bVsDT6xkfR%vSey$a&v zLf^Z^3S6tRExvb)K{>cqEN_-4kIP%_?;L!#9DJzSZyZ&JpxJLqvqSChoiEx9MZV}3BXV#pANcA=-L@EcjXCz;b~mR~_U{dTl=bv}L_UtPy0??9 z@VL7x%fc6|5Zzm}!N*GlPp#7>2W6pJKjS7OEOX28bN~Ws$M-_aO1C(osX2QgdVI6n z;`^0@YyDW4^lff2B5U9fa;MuI%vp$6Q1zSLxtbf<-@Fk#x45&nBB3^evTk?hj?Mt^ zv-S2!fRWscB@b04bMG`{%DMRN(NK45QB|>)4wq_<;A`+O?)Gt5qclwBkxD@XN2#Fj zJy++>V%tc?CrZV&kuR@9{(h>gp$ECtBovy7k_U(jUBca+B@f8KFOo-X;&>5ilsT<+ z9rs1WD(5Z8$$=769f)3wsevML#pFQIh89rZaYMGTfgQ^bK3zsk7p^q2@Z(0!slq=p zlBWv)*bqaqb~d&C%n+CD+IP89{L7H@VCW1s^BYE(Q^e?&D&P&HFAJ!>cRP}gs+{~p zK0cx+&$))4z(J&bNaZ{)mGh8MBXa)8VqTOvwW0gw0X<@bIgyNAU>-2HnTYAd7+H@; zj4`Z-Eb}o(!BQ%?N#*=!D(5DnuK=R?HyPtaPEjVl(MFkU-p#81Vt#Is07IY2Lmy(z z>Wn-NYhxOA+ylPiWT-QG2#rKf)){qdOo|#KbJw7!#>f|2Y8K#op<@kk#wn-wILV`? z_YA}0^hQxLxg$W>KQ@J&kIDTA_7sL!6I7J93Te+6`Hfs^3TU;n7pvK^w5- z>CF}D*N4LK>JaOp^NfMo=BtW}!IUrctrb4^3Z%kXzkkgH|1p=$$D2Xs`@kjFFx2t` z`RxMadlt^P{dv-Lgw2mg$%A8MxF0>sS8rSU0VPv zl$a21(U`OHRN@AR{8vJ| z!8P-zV$RpN8r4%*;g`0*RH;^cn16sQ6+JeP0<)BUmqEV);%g3BuFkxo4iK7Tx%#rr z2Z$oFUF})KfM13oW45b5A7HRfW_oLwPHTv@xT&jDuEj&Aa%p~3J|xq5!#Y6J?oGY5 zC_u=3Q}0KavRU7j53ICd+qpPhCv(nGJJ1!-kbn9P-l2AQlhgD%y)*l#6(0391GQVl z;dQ+(7V7zkm<+1T=P28uTjXpvZ4$r@vYa#ezUrDGPWP5wC+r*_|Qz`lk57;koz))6;tL=}xeLDnnvb3;ZPe;iM5%*N}B| zPo@sS&k`ih0bwt{Le-il1jir;TXk`tpV+Gs#vtK0nUHBTZ55N{CSFp>ysa)mJ0YKc zsh0W@W8!m_eh#u%%XFAoik)XlNW816j5wYcp#XEtl{xhI=@}9$6%TJJ)}^Fsi96Eb zZ%&Ipm=^!gsra(D)8ct^G9R_-*MxKPd^L$~*Hjl{(8tHwLf+BAGv%FBLgIck`0g+$;ol*L9nVHx5Y0y0G+j%aq2lMGLt-jk zbhB&IOfBA7rSe=f-b(@A^OOxyfcHE~mezj_FLDt*N9TQh=c?5}FiE%^%4ZtRX~AH2 zN>g2I3gM=_f-~xPj&pqQ1hzr^(|0V#3>_<$?~lcj{4#3sAZY9uZiT)TGxz@f@TCA6 zw*>czKRG85sSp}Z{OR8{&M(L0S`V(b!Tu(w%-A9uWTmJ8PGE8S%d?8{+zAd;iTG4M zZqM|87j~`0DK*2%!AQ;>pliQDNac6{W7Co4-TOfFFDlciP$NfyE$+-aslgPm{ff*# zfvQFU)Yjr_$e^;UYo$6@$oAyf7(G0QBlaW9@iCV3P?QCpkhrJ0DcJL@2Rm zdGcZeJZHiXnXy-i*nP{BI}msdu}^`LcL2E0LWh772UMAyj5hWxY9b{Lrp32Y@r$t3 zly8$dUI%{ej>wPrcn=lNr6e(2f!n}zo@Bzwbz-uLz7NqC%V_b{%f!_x;c+C~;Uw%^ zF4m2i&0?|z6L+U^9aTjyg#vhpGQEvt>I7@~P5YK>iRTnAtMyHaS4;d?#lM7j4_c8e zjIDj5g*qkS8D)DBk7omi1~^ikbIPPvc2*iEDvz@7ly~nCrA{+(u}Rdafxt7-g^s{J zt)05eNK4-Qr{ws2mCQ9Y{*(fuX@5|FP4$MXK&H{8v!f`@;I%~Sw9flVN*D3psd#4g zV>FAlJEx1I)CF5*-@b+9W+HinSiI49Wn6Sf@~V?@*I=rWz_?)kjv*v*JP6apuI&>8S8y_1u(`i_zZ(HLSUo{gs$2y#`+Z&F87FwcL z8t0`B=b`=$Wwy~0GtxNkbvOtA>72YJu99h-?>L+_f6}v+mN=TmNnhq-wC+=%(>yg= zQTlIboNXP>Lw~AK5+h5^AJ%OrT|md)|mj;UL)wq7I-%AI3J z-0O-zeaD9=VIur~UlhC@%auN2BJOW5YA(XV>u2Jod07Ejx?>^h3aX!p^yMOIGTqIA=)jlRmDtkyJa|t><30M9(Dv?VP67el6 zZ7Oesj;Q!LucPn!-YAbR3XQ&&KR5H|9{fyy1V1azIfP&BoTK9R1b?Sd%u3b)cScK* zxq=``30()`a~hx|CB+8eV@RMRCH{fHN1#edHa0!FB1!2jhhWDJO0tmW5I9J{vN{gc zwIC?TA}0^Swjb2%I{-cdDnhBrlK|6(W2*s5{sHhW1b!y) z<~K{xT)-ZY@oA5&6C+eIyWtI$%{N#}Oizpd%87@#i_+p<(2-r&TT3*(MV7*c-60Xp zhtY}ADw=b>m*mbg_WWt3>8vI0QJg%so*@Nf8Y@$)*AUO9T`M-bwfLKgPdqXIS^+*W zFKcqERDorQ(WWT}C8yS@RvMlW@-}(QPN%&Ovc1>3^2&PgV|qxc>Vu!3(W2jhs>%WS zj>0oOP*rPyJqX+as$jBah?504y76Tjy%TGPQwgliF#O?vbJ1ISb zyksm>fYlxiR&hCP(=-M}@t3$MEqS?E<$g zt4`hg7UNwKEq<<2MLglTOab2QBtA=1a(M5CU0=35ZR&{O?7Pb;+UW)k=lBn4>nNPX zwL_HZK*$t-`i>@jFs=hg`Y#6Hzd%)I08AN;Z|j1R9RUs?un$xf1_+ITFAY$lpAvN@ zs`pQ!BOb)Em9bwhJFnqDxw||j3Iv1L#_AohnI@|?m2Vk2JFG%eaN*{R53c(#>1rhk z_aK77EpQ$^#Hg3%qkUhx`;6Ad4ZiXkE;;)vDbeU+8v8y>w-gC3xBd9^+Q z0jE96+o!U+uu(-)gGYJKrb>?UG@y5e_g@stM|m?KavDfG? z0Va;c1p$;i2`~ho8t4K_{sC~&cgK{4=3&(FYMz=~VC zk5&9APN-iLm<-TIF^QWm!+#KCEpVHxKkv83r;>5SQSr>SG!>6ACbM0dmThw?S&MH_ z@hrORYW2`HwWjU4vEgK@MbnG7enzQ`_|kTBw9Y4;R+f**0)RzZ-Qjr5X9_%IZxJC79}P|T-7xvIDII^CR!jN)A3eDKc%l|8Na8=fm9 zZdM7ro?nh^Vr>XI_e*i79404L?2}DO@OOu|acXhhnwHGtO(E*3l9*JiY+qWkNIJtg z^~2n?wZNgm*=U0^0B%KHHi3F|0N96=y_1mA5#a2zvHE~2 zs{o8mcP%gf7J-eoOO4U^Ezzc>8Npry&@?$X-q{Q0?Vu_RVCH1JLIXL6}7DN&2xr&7gz@8LAo=OwFq)5_%;97^O)oKy_UAnV7|7>4NOSjsXD=h>~6_~UO< zQI4nxR1^*LL`T_nsRgjNR@SZI(A%lLKIbsGeC;rx_=sEEBW0o)Sozi&c}4Z8{NIpt z0(CtG>ah!;>N@$?ld>YH+ zZc+=8ydY#v)wN8JxCW#EuNxf@+a6TcF#l*?JIWd;;uk1wZji3tVkv-8^Rr9nthz)hx zB>VtnuSABchF}tY2=D?#JPk^I4bb>p-0OmbR@;>{T{}pv-f;W74pLgp1kZUOq1Dw0 zY$Tvo2M~A=RKYw_tGoV6E4||>rNk)xK2@3%%8_l4C#!D%Q%=e6L-uZ=9gOh=P$KLG|`mEMOu%<53AM^H>gg7a`tE#H)%7-RTh)IlyK@xrq-u3y{e`e?=HDhbd)0N$kSQJ zwwCh9%GuptY08@qdNgOzzGb+wV42X$Ca0x}lr}0wF29$hn$ZcRn(=eDyMXig3^Z08 z4b=`LnlS~~j3W^{oXyxUzih_Mf7y&_m%K!|YDVr5dZRojiN{w}P94=PQXk$Tu|9Vy zfvGKOvS|ZWaW@54>=yXOn3KV!o#YgK*yH~91k`E?l9oa53s|eG0sfA_eo&7~0jg%< z=Qz+YPz5t4Z$eD*OdVhDQdeU~uqRbSs_7KsW< ze%W*f{9*e+e z0=D}q1Xh6R8s?WZ-tw0Qr50rkv^bQ~!U?6cIMd^O+tH$Mj;` z)q*dDexB082~|41Kgi<^jYV5DZi~kVC}#}|&Ifn~fu{&E0lq}wb5LEw{K!1|){h@w=Q$xD(2eBNZ(u#rXd#EsmtL za6&09ntH5f94)q^oNX+aGwvV)j}uUf&k*6X(WAX*c`^$|^ zKP84tCVDuH=~H#jq9x|1F;$$-bVrAn7>~|w=t{-PEzT&#>T@`_Y?d+iyewK$^4G%o2PJ48zyN@M!sbf(KwOwJM}`X3j* zwEnNEbR-Q{3UMdbO)_N~|Hs{2*;K{O7C*h0W&1hlhUSD)?Kj`!|B#now%<~;(1mO= zPK{d-*h#?lJA}Yh2p~1RfSSoEb{oLj#pZIgL1xN!D1`2 z7+VpL(4qo?E}*)G`K1g<;!oM0sg#e{Fl&_Rh3&_8IJfCnPIg#8AEH zoV)3jYU`bFG-40DuOz2#G!l0!%_uAz8&Z_}|JR-GEA~Hkr9ZmIzT|M)jm9yjKAGxX?oW+V7FGiP zTpu|+ophJxg#4KK{L>%vxR*~<6}kf|-|kfCFaoa-utGm0@FS?MVSZVm(!Z=w{M1z} z;hafQ!yPD3Od|NZ5ci3R4r#|sM^&nt{O`tNLQxDGy$c2dpI6oK^msI$UB^4CjMqYJ zqC;9MX!Q*yYFYQRRFp0sk%>FC?xV05n5dHB6$&* zL$2gJr1nBe6)3p^U>O1zfD-2_fww}*>!e;-)SAVl{KOKKd=HWj%4GMZZQ{r~(|9zs z=wGbZ9tPXnl8rBW#kZ>X=h*}|r7`_+iYakV8dE;%A{sy|dr(Ecj=by<$b*m?70U}q zZ^)<9i6n>H`s?B-O#fWfyQ__pBV zX?jE@n`mh*@rFvFfZqQ{0r7t7IRT$n#Rn?zFMzTs3UJ{Q%GKS_L@K8x@>Lc1I^J$6 z+IFP; zP*!%cVq*P-B7fP`sO{7T@x*TM15HK6Z`H*=JcfVs930oahNRKQ@H6un{OICA`(nik z*Fh?Tr|9BO-;?3(G8GFKAGAM&mFRwuc+g&rd&biqv~N^d@tBlJX%E_|&5l$NJCRCr z>_gC|iaKOnfag`9ihW2)Qoo5nqd=9^)3s@wu+-n3lHi1L9VK7L@ZLiu`Plv-@;wg1 z<5*<=NM-V*LYL&t~*lTaJ)YVMbPz#bbb6Elss|MZ>>-k`cXjq_56^Z1!Dq3x-GcD5G3T5EPXT@NF6ZV?PDOCjqAN^CH@VQc-@bn}7O_v!HTSZzT0XrQ3t5h5(dZ z1Se;pGr&9q zW`g2cbHRMXJL24ON5}>j#l?-0r zxPIUr4XvET#2=BxU~)heeYO#P)Db;~VnG#55#m+@t)#dzl`CCbAByYvs3UF;#Vs&m zLd!dlX*WeNR)~W4cI^*}>Z)?2i_+p3sa`m5E>v9fkQ7P)wfRw%o(G(A_OTqp?LUjX z#O1jPlDmMk?lhh~H^u0L@Vc@1)4wsAzr##}z;-h-+yts?$d%*=bq^us8Bk)rl1618 zL|!&!wN`ecie3x_5heCbr#}iPr-iM<=Fu!5-RCa-bSBDw8o;$)*ZzYNsvZRB3Q!KJ zAY1YXewG3)0wv!Ecpiag2|fq-4uP*g9XZfFs-bYTQz6@_>>i_W;_)=?SD|F6YA$yy z?1~emO=DW(b;ZLC(shzYJVN^*E$`n{JU7*CR6!S`>W4+VvJw)HqUzMJ>pAqZr`>)x!F?!aXY6uKR3wfDmY3>5l1fa8zP z1%G_A`u4>I2NYV4lpbhnk_%4qX07w#A_WR9LCS`;aQ_JkT?DYI7|&5aq4fZtqjXZ} zKDYmT$FW{hZPphq91wy+FS&iQ93O)&_!ykM=whtLpxEu^EZ&oo8h;0szq&@#NcPM4 zR_%yhnnr4}-kkMN2%AVyXc-D@eIXtqgF-9a{@DW;!-@_RJ7Lbsb;D#16dSCYv#!At zRZ{2@a9IoS&JM`6FL%~elkkEA$hZJ}r2!PW9x3^y_!=%Kw9eglmgBh)F6zu#j_1Z0JU7l-(G#0{Q0O3<*zr-=RGa-2 z8j+NLM$W9m*!z);Zm8C^Xe(0aIu!EK8Yl*GRT??7Z-$i!smU61*0vH{??9oo?(q2^ zR^!dXOihE>sv9s(LFPZrS!v2y>gMc8 zXj)R~z1g!IkBBjNM4a8S2=g9P`gHcJ-so47JqgP0!L1?5Uf{B3y|)yfI0Lyh>p8PN z4rm(5wMoyNMN?l=Xg}&S7z3LWx(&VC_$rJaP;6cHtPIqR6x!f6XMZ&e;|bJcm3e;S zIG+AuI5x$wz>eLm@l&_T9b*U^&XF@Utied-Ka6_*&3y=EOGk=ETVR*;!|0O!6kXCe zqf5F~bV;|0?nRhB?&gsSuzRGxM)%9@5!KSJrUajG(&%1>QSNS2)DKZ^I$U&b3^Cb# zA%={O{uiZtO7m7!$mb7w z??A4=e;0x~>}Bl&5zJYCQRWFsaG!VppqN`sEz_4(?s|u16k!BrB~8{t^FP-Lpwiqx zZhWph3!flBC;JOA6S8{vDG_cBaEq7KQvkRBhkAfsxh&Vm4E0EYpRz;2j0i{&6>vd<?pJb=ZjVt>C3U`bvzGG}YnoUDZBQDg{gU|W}Ei12Hp5bm0>pIzLf2g1EG*nznd z=Pl5(&dl&bpTOsR5kE46eGquIHNxl0`fl?gJST%S3w+G_UXVehQ4jpQjF1?XMHszV zrJ03T^!=;OLTa;2+2!jAS_t6w_n=O#1b|<~T>x9a1%WK}KA{Rc)-)>03p zyLVrOB5JJmknHu9;kQvWe)5EL%a>E)IU6uwtj7dslG~KwCiuxI&0L0mTBF7I70h`e zbOLdZLp{Ad=FAzf7;A4%k?&am|GXGtnt51)=KpyNKs$?b3)(gV=peLR>o1=L&?);l zux-@xy&`Yc{{S5WiT0@0d@m#H^?eUXzK;+rpu@gwSjUs6U|UZBIP4=3-(0snDkmH? zaLH=sU>8OMaAyZ2ow%=q3$;vqpFVRju%C@&MzTaD{qJM(HKVGrpW#)ZINOD~pndZ! zpb`&dxPQlD6gcAy+}CSv|APp(v#v*c*2Va_6C|o*YdL*xLe{`k-*LqG@0|q3X?6y} zC>5;{m`;0gw9^2Bb8S|~ujRDHQe_2Z`hFuku?0!zo2(hGF~4K+&|HDJzU>(>Nu0cR ziWXQ97{{c-`2-6Ea21}jV6hfhB!Ii{oY`}T1c($)oWDQ|EG=Z2F@KY3NLg067hq>lD84+vcHW8a;IryX5Y_i; zS*-TM4#pz9i!HFan!Fy;6I5<2i7+u z*Fi0d3$=;qrOI#@ptS;*8!sc(-nkpMMMhwQbr~4^`RtgD(ty>!CI+x6$ONDNM|R)U zIqZJRKNNiwxCSms@#aPF8T5Z(v)KcMw9tdYaG?ln39}>i=)t4=fUa$IB^dV@s6ZG2 zq0S8m2z3lx!JtB5D|}nAiX2m6`joWbQ}R&}^%Q;^9m9{DU*yQ+Fv=6-FFXR*c?&)z ziHe@=fCjhVQ!?(uTlf#(iX`}y6pRu2l(gVevKoxO2z^Rg@F_{bR^(>>!lxwDf?Ak9 zB`x@r`~uNMw_vrltii6liz$;%5Ue3Cu_$Vh-0+*C4cRY?JsDhqBZ znWkg-@c$P`5pB6b3)4-d1vix&5m!887>*yZEx4(imIb+V{9wUNr7VSRDlNFFWYWqA z-Bem|Q^~Z0C3Fg5!A&L8s`V1OskGpxQn2bJbW>@;O(o$$y@YNmEx4&%45+zE=%&(w zo66}xT1E-oR9bLT$y9en3Efm$a8t=tx4-0ibfdLWwV1zz{!}cusbp%lzhpXl7H%pD zEq}?mrT7Oom4x~J61u6h;HHu==r5t0N(*i(2_ycJpF@CfQ%M-}m(We61viz1r6|Y* zgqupj7XA{tskGpxlCX`xWF@-;ZYl}m{t~*WwBV+au#>-pZYnLfsa%U1mHSJMoCydw zmD>OhWXI^H(t?}HYA_2ol`*=hwBV*v#=uQwjBY9|xT%yea8nr@%|Qh>l`;lyDr5Ie zL=4q5UW8kJT_Fg?=;HFZ>z)fYWj4cK?l`;lyDr0m6W5G?OjDefV z7~ND_a8oH`;HEN0H@;O{IvD zZYnt%+0kM&!c8SHo2dzUUAU?I1pnDkf&p$S*`#|M?A5|_Q)$6XA!f#XZzlDHU3AAGAq0)kf%0bvh%K;7#m0~28&_ksK50#wY@H;~fl@>fy68hXF zTi8B10137 zP{|tmP<;vr(?g{N50%$4xA0JD!9!&c24sXDDlK@ZB)=A+he`_`Dv8{YDjyI$R0>&< zPdfm?LnRT`C3>i|;Gyy#lqoz^TJTW0EF}{jD#@uu=%Lbrhe{%MBylkiJX8|-BJ@yc z!9yicwk!c2Dv2yDOb?Y7JXE%T%%bU7Jl?k8p>jV^bivHCH47dp3A6}3R9f&*`7BVq zmc@E8CDlK@Zl!EA?(t?LdB6oxyDlK@Z zB=SY*q0)kfN}}w@xD7z?P)TG(BAoH?P)U>@p@&Kf9x91~5qhY!@R>O-y^+Yjm=7K* znYJTB50w@?R5ER62|ZL=@K8y`VtNTZR9f&*N!C)m@q z7`uK89x4grdI>#LTJTUw*hw$hbt@n|RI*jd^^%8L1HwZkQ+K#aUZ586P${%kF;6KyR9f&*Nv(EzO1xJg6&@;?cb7*lkMK~*Sq~4DF6p5%d^fd&hsxF{(CgcT ztVQRd;p?rbM($V(4KaQZ7|tn8?jjX0a;NHjP)XTellVkN56 z!WnCkIL~nJLLG`9KMOq?ww^TduE~Yk^xS7XW#m_*4qAk6Caq@-u`;+z=x5S;*2v~n z)a@>zr%CI1nb_N1vIp&Ay)0X?x36UP9>7;5bB(X$OI`|Im8oleCGT*hJ1pT9zLGKb z0v?fYqpzeZTk2LTO<2^KwO{c@6!6w5F3G@Ew2sa z6q67hN!dnZ6*x<#zmUR;E4+bS|8FB>I>yKuUNV8{HbCc0UY2}*13i-4MF7ix?iB##0tEeKw*XWK z5c5~!d?hz20NgoZ)y%CFAnt#EFhExU%Kb;00CW?e+P|w2K(zoh{;#(J^blaMzdxn* z6rj#O@_vBc_Knc9-v8(hfWG;=0H*s#lC4H)J;(nvQ~C?Az~2L7EO$WGc2r@BA3s{| zS;EuKO8*4r85kIdxYhpqsKFrLUP!yx|KsfdLjn&2to3hT8;s7m4Qw0zK`bJO#H<%FEiYi|i!G`7W(seyx<-m zLpUd&cU1PjaRr0dzig|b07IS2PteS*Mh@vSHyH4-j?!mt(DHFnmOgWXxtW~BErOh; z!A5?T(n8nV9nng`JmYf|ox=|%910d%M=6_&SuiO0q|e-7NC4?GHy9Q``pgX$iBhG{ z++bAbBYoxuiv@@YpSi&jS*q}v8;s?0agaW9gN^+xQ~JyeHW6$GwJhrRDdN?N;a*IY zni_o&)sjAQgYE1;5cc}m7+K`ZvlaIWttEZt2Fq*%Q8~hAuD#q!0tlbE_6nggn(9#( znsud7LN?(u*IsQ+BHPKPNVwQxqt9IX5~DBKgwI@ijrAtkco%42CfS7ZS9`4h(r2!{ zE^;sWP5R8W*9VwI`pmU2&pZYoedgL%2q1mt+E)tD0u|%M(JRH#XRf`$m_-GI&s=+> zm05_9!LJ(In{qiUQ62iswXZh5C7bY>Yj3vVU=u!b?JeT|7i{#IYhP;=ASI`E6(a0y z)+n;^Ho)GV!BK=*`pmVjH@cEd_{_C$v|c6~edgLX6)-G)=Gr@j($Z(HeX{`4XRdvV z0Mci!eX9V{XRf_VR89KKwRa292K9X%QoTOj;JfKF*S^h|Oa+9`Tzj9@3=6y%`u5-C z&@ZIVT>CyT+TDfpnQPy#h8izu_5(t49CjJhdcW}rr3s(8_M_G+N~6zQ`!T^LedgLv z2q1mt+D{4~edgLv3m|>w+Rx^nKnvg`>>t={*v}gsAuXq}9#Qsd)>9PCE3Eyx+~&xk z_lA-t2G~EOG|heOe()VNuB3o|*k#n)Z&{aMTPu9#+HVUsP58{U-w{Ci%(dTD(&#hS zeosm(gwI_2SPsjVK6CB&g#yxNuKj@k(r2#yp#ainu6D1>q|aRYXHi59Jw?8!)_WC|Ud>gq#pu71nHV7YL$Y{-^&s;Zs z=7#*Se}m1IK668sbqCml&)iV1$t==mZYZyi+WHFVGdENaB9|59cj7~Z;!0=f!F!29 zIh>I}JxHIqp^!}!(}VPx8w%$kwmWGIP`xgA`y;U*;eEeYZ`p!Qo;+T zu$w+};Yz*)Q8~hAZm7h{#AR0a%nikI8P*DM4i#!FG?PAaLrnz8Mzc_u`zdVqLrsmN z2p5g%fyZPveCAGwV2}D0#-ZeCGZa zX~776=GyR?%i$i2iZus5bJ?#gBJ`PS!)Gq@#Uni9vEeh9s8fVKb8Yy{B`S~D7X!g( zE|;4_z;gCh$$oZ&Oq6UEqy&}Xgr_eFUGV#8-HSH}Yp`pmWA zGxu$vgAuU`!e=g*#FJW%@R{o>wAg53NV`I6NPi85TwwvEV?|eyO)lv(*A;1W2WlmK z=DMQ3=bNDMgwI@8ao#M{O!~}ql{A_UAbsY#Vq)=?K672AVuh1Fb6sbM*>bL z&s?wXCj`Adu8CeB*Rn8u=GyR?TZB3n37@$(eCD#W$jY@yg3nw6Ekd8UHhku?!F`c2 z0U-FyCCZM_XRZyOxkOfkK67pO%q7Z4In>tc%ffG%K67pO%nbq*O-1)wb`Rb98;~3% zJ@rN$BwCbidhA|$KJ)st@E3K+*IPH%FyCbCg)FX}47{LSt6S|LK%B?gXG$$K9@W}s$-;e7$UrFs2NumZoCfK}KPhD8bu4^@ zZY`h?F}6l3A(5Z3hS;Mda!V<7DOHAIyJU~njY{Mz>V;L$vd8My!;~V%L5l1!}@Zf6Xo1z=fGhZ{*q1--4 zw_4$XE%Qxt@`;f>T@Q0)Bj2y+4EtQ&_%HH>&&E1o&(Mo`@LjY8?QYp~b!&D?$b4Ol zOifOR1-clT5c1A0?$i@90yf-E#~ULX-A>zZJADB()uMB_ z)q~sVe*y#}bUSUs?KBTpA|(eoYv6X8XOy3NO6YdlhTG}q0fS}<-A>zZJN*Uz!|il< z?o42~oqhpj7SQdqy;IL)i3M)Xb-10Ljxxj<&osn}t5vmDK)2I2+)j@|T(NXJZNu$! zW)o<@;{Y3Or+I3mMfillhTCbPl_hjLZNu#}g=%^UAF9}JJ57i)bUtyh;dYwPr!J3ypE$Ot;fE+)giG z-RO4OhTCZ}xTM=@wSx#ZGe;n@nQ%MZOuC(RcgRHVv^0`P$Z89@a~-)^T1%Rk6g9Ob zA*$f3YIcB2+`kp{LRBM;C1~jfh?bhXk!iUfO&;wiZ}_q>f1+JvxC!GcWqY3h<6BNC zcydOE)~;p-mwSWpE$PtO)w<*-guT9x852VDxZ;TnG^y7|o~CS>7@#;qmj~%B+hUBk zDg$i;JmwsLrdDyL#jnf@Kk&tV@tj2S z$It@BSpvBIOEEBtvjy<^N1@imIRa#B?xWar7n{at2(Zt*5qFq5#f_|5teyTQ=*r^! zD4!2#L7qMr7Y13*@$BHF9H6kj9&9JGgV&I;$Xo&R@9ZE~k>W`9bwFB9Fqefz1@h$t z2UP+UXFrWJD<}9nE;7X>A}yE`bRn`hmVE;MVmZNASzcrR=RhrTf}e$enq<40VfN(& z%P@+Hn`ZO5M0rl|rg%b|5EsVNakg*&~4t=4g%B=5pw8pO?Z96jt6k;ln+sgv^9X(@REG6#fnJLvV@ZYd_<61A@4Z+Z}~rKk(ex;j&M%K#h3-fU9Ex^nB3=ZMs>>#Bdq!7U==RzE`ZPf z!YY6&0W5!)(E!x~1pT`?D|!eJ^SA2(&{KdG{x_M@E4K{N;(ixa%;Mexl>6uH2k4VK z2r1S6n$`e)bI${)(OS#X6KW%>*dBpA{y=wL>byRFw@@T8cixRyBc1VF>7-0y3V*=P z=N4Yy2mtphcurK@&$yILkcZ1easSX9#CN>C8?JB73#!4NY0OcMwR673rO{W?$@d&s z{5f~x6E&U1>ol5wKln?!2;he78^MquSI$TCuu7Fo_x-{wI^mA<*Tz<0>Sci-EZiuRo z&SWZJvauLoh#uFH_bHw!;Hf;Qz#ITDXBrQ5iz#Kwe(Zn}ACa0Kc~xq9txANO9dxo( z>JdFcr9Om0?}57VlYS1r%L(AxDgN}wbk}@zTes%m3SR-kTTpjqc~=$DNO8LQ=v8E@ z?u4J?D$#YM6KYyxRPnJm{(A6p=)b5$Lj%xX&|TNFfJ|`oq;Qbr8=)$z4<_GJy8BV^ z^(3E5D?dXe@`J~3BOYz0$5oT{OK&nqN~*~|Z4nc?pmTrh0m0YECOi3xY_bnjqP}Bs z8>h*x(W7j#OQ70?pw17lbFYzCe*H>(v5t}LmWs$qa?U{HWKfq6CLwZ*o_8_UEqX5L z!KQPHGOE!!`c~a_6rCel_%QOk0un8(t9HUpSNxsU!j{v*b53vJu595lr-hvWmNoH* zabRSkTB5aoMnOM$4gNADcHIU9HkB1VFG;f@uu5{$bZ_!^L$X7f_h ztoK6j%$K)e+Ewsz4xaMoRl%HkF%%*voH=HRAXSau{82 z$QtQ8n#J+H;BA+Xqctx;i=o0)P~W!u7+1ynx~h#Z)&%ukiO$yF$>AaQWx$IW_vIGG zHRZxQXcPEAeZRs=r@t%qzZF;OT1!wrI75234NLn2=o?Ut7?SS^F4rclzi{vKeg@m> z{%hdM2h@Ki*SGgg#(e_(CTIXW2E8u^{JPDs%>(ssK8;*4a{UYVe?S9xeyqRWo^c1Z zz_bh0|IXdu`#_ZN<+Zx@0cZeyyEP)$)~&jBIjH}wy}5qNSL-S(8;+j%?j~pw{+;y{ zX6z9qMRx*OG7+AtbKiv2Zf}6;CX{yrXkbI8K_4P@5dBSHFR@pN`avk;s3E>8Sl;wy zS)+9r^?oSKE6p-oSLXgny`7GFULV^~9J#WQhV)}0Uf-iJc<%aaFB)pM?$`^w=3*M6 zb{s~7^%Kp#yB&9$??daSLH*{y2kq`8hx~tTz$fTHeMOJn)@Uhubo!0DRuAecM#ydA zI`sR)ja z;_ei2>wqt193SfIcZpH>0q{Y__2THdTf}YL1!vqK&W3wL%!felfvS%}g$c?=Lf_aC zSq{3oHA3qbqb+Puw+w)15O|#6SFpFd4WI75f^Kq+W=Pk@mK3?LW?P>dJ&ablp2m7*T}POGzz;9s{LNVpFi z`#{|`0(_0YX9Sl3blVFfMNqdTWJ6#VXc+Sk--DQCcVZ0!joc6Lm{VmZfN3ZG^xi&E z{;@-Hbm>+CQYAV>wfP(TDT0PEuTbs+poJj*3Gs`a`tPLp>!L!)8{l{iB!uMLr)yr2 zC~E=&BMDgd!w5VJ8pgareBb*q+(DvhD;&+8K&oo0?mHa@Cy-)Lb${GpV6QlJ-vRko zgM>Z>4`7~vgxV_+SW3XUzm34_pkd4_lsjX;t~Ca!Kd+C6wWHqQnlwSz$0ARixWrDd zxfay%>8m~=&b6YB&!6>);;^Oe$*UMH;`&o}DfiG5+cG@*@IHhmHKLr+T~HJKY>RiN zqc6g(gg)7x#Q6Vm&o{;5nmGC*BBDIblnv7{}8Ai3SuxS%s#txBGvNC(ZQx{9yyx18z6CXGWwsj!;c|BtS zEk8)vC$lH^p9=pyAp3RQqn(S^bZhNnJl4D(XHnT7LKMx?j;L*YAxh-mAJ0J1|3|Yl zX^Q6gvniS<&HT)x%+F?{5RWoH6Jce3HjeSi{7l3v^D_}v=4TAk{Ooo7cg)Wi_9*i+ z98hVVhURBE7%qn6i2fG&7;iE{>kjh{EW#d^Rw|3u?4$Ln4jH836A;M z;|TxB{7gOx4s?RGHmnVbvER}HQ}4w93$#Pn6*vc-0{6yOp+^E=-ijgvYtRuHffbw4 z*?~*uLS*1E>>x8?NrIvR|LzNw1N;(vc3|%{P%E$*Cx2$(6~qJrdqOy14CEkhZea46 zcKksdS(bBo_q2xGLL$RrlbTVPJSZjyMDLI9Uw^&d1&&9M})tiUJSy zz-e(ny8|r~NMHsQ2evN4XbX%7Pb_fh446R%K4^s(tOFrTmZpL0ph;=q@f+}RT;P=? z53F+`p?M$^Wwi)IuwQ5ys6i>M0>4z^kSEXw^P^2*Z3!Nm1hzxBc7eH9;sHpY0Id-Z z%nRc~C4u)*>yCj1C@T>thMt`QuOOx@@Ge@ZbHK(l>=MX_R^@?y3$f1%tU)*#_!X&@ z0Rwt=4dmmuTVNS9=^pqFJXL`zlwKWJqib4^z#6nw&wy(*z8@0k4f(wT53YqfkigY> zxSI%=;OQ6Wf?PF$|3Q294|Kyk8xWX_)~F3MM=PBfcxx5*mVpb=&I1E)qhAIE%22Pt zfxCua7Z*4TX+r})U^Wj6>|2c$HGs{AHX^VNI*beyLc*xP&()aUfidWd(E%6Y#{_yH z*Vw>IXsdC7FZN(<2#ni~2_MMC2$>i#F=pxmKcKZI1&%`hvjevy@8rPK=-DZO-98+T z1QsFwoWL=xRnr1f(0bDY^9+2)ATSr>8&Mty#Bnc)>QZ9mZy^vW?`_ z%T>0KFCwgYlx-vju&|AsfPiBg3EcpcZ6rDX>k4f8s$5r*N7+VFV#+p>AY~iLa+Pi5 z!IaScW}46erV#4bMyd?7jm+{mS`10gFjQqwwvj9@WgB@LK*~0fK-osNrzm9`DXQ#O zwvhxrtr2Y_hkz$n*+#PH-1j?UB2F_WgGCdzk*g_1*+xn!e`OoVvXpJ)ZOou-BWF{L zV;d=ymbQ^^kw@7^N}JrLhJgB_Ts zY$MrGxym+@eUPhcBSn3cZ6s@!t862ww3fxvhoB^}W-8mr9l(xlB-1s&vW+B2*+xpe zm2D(J$~KZ!wKR{ijihvsvWb0J~!w$r4hwkzDvwwvjA0WgA(GEE_f3>to)mnfRFmQV%43 zLlE}*-a!W6IS3Xywvps1bZjFDygq6bq~Vzf!?PPj)GqwyKaL+!(*kl7Oo1jMqy=es zX2S4{@u4TNpNg3AEx1%3Bxl{)i4duOvmsnOv5u1hG!IPg=u(ZrVP)5G(0n5 zc=i&aL&EUPgyGp#%H(5E6NYD^)x&&7YQpf0$X$f9ArppY1immgS|$w7h_bcdF08C3 z49`j+BotT*4ztdccLPQ8{RMNhOAI3|%;(wW7>V3k@V{6Y&9SbGdCWH+`LfLkuDp+# z@2yctn&{*cQtDN{@Dvs|Ng|&XyqGOK2A5M zr=;A9D~@@tE8`@jM5OVY3FEmH6vKCwO&HG+Xki-9nJ}K?4rFDR#&af&=a{xCO5-^b z#&b-g@f`nOg%mMbR%k&Q&zUfu>x{UFG@dhIJeQLVxqN(W!gx-WLgP6T#&b+s8K&`^ z3FA4Y9gOnPwh7}ord8`v8qb+9o)fHkl*V%=jOPds>QNfcnJ}J<0&1=(jps}l&#~*Y zj3|xgOc>8G)twQg@tg_cIi|Y(Q5@iCCXD9@ef}t4tTI=rZuduNJZHjqj;WSEO5-^b z#&d-E{wR&-Oc>7*2K`YQ&zUfuBaHZ?G@dhIJVzMwM`=7~!g!9b6a|@pFrFi9;g5cW zJ~3fDN7%+6rSY5z<2k~(KT6{{6UK9do&3=QIe;*pYlj+@`=d0TGhsZ}9q>SQF^%WU zbmO^V8qb;O#&g9qo-@;p=ZZ&jVx$|-71MamOgEk@z8x#BnQlB+{9Zj`(v9beX*_49 z8_yN zT(?7mFf%Rl4p-hD#D!@hW$tw*<7y6%J6(~nNWvt(WhvlYt_@18=uRws?kJ7!Oc>n}2HjB_-I*}DBaFGD zG`cfkbVmrIyC9A3Oc>qmrxMcW&V17X4fPs*ePo(T&)DU%j>CM@uTOj!af@Q5reNDDj@7I=A(84?zFCM@uF z0u|8$&x8dYffl9(o(T)QefVFmWwBliiV+73JnD4t6b{k?&x8fuLc~S3VzNvzOjzJ? zfe6zA&x8dYRZznV7I;j81s;WD29#h!3(^A5gazI!6eKP1OuV$a&_dSBxkSPOPYR+1 zo(T&)B6pY;cqT0HhTo(T&)!WMdz z7I-Es@Ce)JQCi@cu)rgX>rqrqJE357I-Es z@Prob=)=4&zygmj=4nC;JQEgp)M}?EN((#_7I@6N%OlrVSm1H#IAwtsqy?S{3p^VI zhFYQBEwi1G_W)a5T+rJ~0T>}TTruN@c$pV#LEn1h>tJN8181lWt|~sWlVN|I%2#HX zELaQkJx#N-QCJOtN!XSXqKlFFB=enj4|>Q<8hIUZo$@N3^0=4jDuG+>Wx7d(!k^+6 zrMr>w3x%A82@o@TN?SXrbT1_&+=;d8ZHUFgSHxEd%{~%YVZKUe_LZE$FkdA!`$-hh zf};(<8Y81S6l?0!&4Gr0T_g1FK1@z?uu;hULaBk~GKUz2Tscd{;y%;}aYt1u_ASGV zC^tBz-*K!CS3vBGMi@bEph^dFEgPwTxXO$&f^7RU#Koh|C}4w@^4&vov{A%XD(%Wk z*cc?5n8gK{oq%BYz74U!gK57~$&)cz$J0G$J(gDUHnq zs5hG4hk9Y9TZ-bmzTE&`A6Hbbk5`u9aOR(6xOXB;NEm3EFwmR|L17wbnlRAhhFA-W zr3nU_M85FO%a8^GO(H9NkdqAtnnb}c4Kz&{XcEQ3`}zUFK$ECNmbg8 z2AU=eH18(NjEXHS3^X4D#2%2AUnUGRSwR|TzK#OPDHeZaph;GNVW7$MH&R$}1!0BN9URSO^uG_4*2 zNCQo)rvTDG)9P*Sfu7Pp)9Ral4}dh#v}%Ob(m>PdFMu@Av<75hjw%C9E8RfTN;lB7 z2KgRMH*;Y<3jHONCQo4yii9PXj&68Uql{h zplMC?e+eKBG_87}n>5h0&h{OLfM+xh4K#DTA@-Fp(6mwpnzw=hug4)lbUXDD9nRS6 z0hEE}iwyq0m9a+=6uc)L-aNSj{V%Y*fffdujnErof)W`|1I>b1;2%O7$Et@0nzlcWXB=&$ zQD$Mb)deG4Sf&-G8)X&-e5{u=$}F^eyiQA_%);DE&fFGlIW-F#`6;;tz6sh9W2rFD z_zcBKqs+oW>kZ200#+Cle9|bhFeHF9$}9{EAdNB$i$tl?D6=r#D6=r#D6_CcmMV-g z3uC!l5TsFNVPikblt!6_O$6IPEsHvSjCi$5cotKorbaJB38T!ycJ^-wdwpz-EOO?C z6t^(VH*V5Jcyn=r~OSZz%t8!x{F7dvb;$}G6V z=uI|Zlv%LG`Ulx~LQ-&SX2G?>lua6C7HqRdkc~T#g6$b%#ne1B$}G6vNFqfVWft6M z@$NtvWft62z_2vREZ8ZOmPVNcHwz$*G7D}IKpJHh+$w-H%KZP>dlN7zs&jq3s=H^V zrmA|TX1Y&T*Yxzzz%(?-z<|Jv!#3=LxB!Bnq7Ei1MvcT6HE|nU;;v}iqNpgKxL)GE zC1TV>vl@+Yi;4?|>xwZ^V@&dY-|tj4JqB~{{XO^hfA0VP+daXH>$+NBcK|?pnH%9WK8g+-v z_QXhnGS!{oRO3lZ-6fXWjVgjN)!p&eY3-r!qx026-YK+3P^S8!sNtzLd-`D!G$>O& zB7z2Gsz*i8piK36n%g2CaT1iNej0CwH4VyCzwtKFG|#H)X}N$1r`|K6HJM<))z*wE zf-=>!aUwJ{C{sP>o!SfopRhX5i<$;ysux7ipiK2*XpNvu^^&$W5}-`=`y|WPpiK3$ zR6v6=)hi-sP^NlS1P#hmn?=x|O!b-w8kDJCcUTz>%2aP;pNF79nd;5p6$oDdWvZzZwc~kwJ5&EErjJpt0h(0=XlCs~3<)DNKr`!kcR~_?X11Y@Su{X1 zoAOz6Ya{`hSrt&rYa>82>&uzWGusHz%mzuW&aBx+fMzxTK#KQqZ3Jj$o05+rTghxA zKr@@uQml;t&1|!l0MKN=QBU?a05oagneB2F0h-x-d>EpV``(0VWCwUDoGJvM2~<0e zjgh#=$qtm7X@F*SkO%~5(pc4x*TTx+_^UV$_MHk?g91QvITm))JH6;U05m^^U^Ee+ zsQ}Q77ts190yGr>noE)7H4&hx0MM*OTDFM*O$C4^r+z{1=~M*JY$8BY0ielz?M-}+ zr~uHUG`497Pk#VtQtE6XKvMyr$t|(Fi2zMi&{9v+lh`vA0GiaC*F=D(0zk9AfO*z* z%K}IMXtMNPc|@!L(B#g(yh)Z60Giyuk7y!ZO97xsAnb}J-T)~8Gz0Y7nkL>TDF8IN zg>KC8PDufv$({1PCVn%e0MPs$q)qZDTLGZS?Xd!&$xf5${VxHU)G7ls&qb@s0L?3K zCsPJ!9*35d0h%X4C<8R52kg1)@I?0u08OS4pvj>O0h)iuVU5N8vBu)QmL)(_0ian# zn*#x8DgZQDS`z`93II(CMiT*=3II(SwVDXfQ~+pFa+?UyQ~+pF@|pnQ*tfaVj-Cjdm@05m^`q{{<9lbY~_#hDF&CTBKECqNT# zlj6T&J^^Sd05r!Ait+)Vsq@Lq20)WD8~HwiEd_w4AleSXKA`~67gIOFmi2*5!$_RKQvCDH3p&S>h}eaF$o1 zCw$^86>yd;(I?JQ0cXh$lzab9#L7vh+wf;`DgkF%LR_=PSt{TxUu0EzSFeDx=>dEzV;aF#S`n0dZKRKQtMOqhATU{t_aQnbwcvEv~EXGzgD^Tb&y;4CS6 zcyYBmMBpqbrcHUssDQI%6|y1D^6jX`csD_ur2@`!CgObJEERB;R0wgF;e|jjq;3dS zWxe1m>ov}@ia5&v4=|A+ILm1`2yZV0XW2B^8-pnSooX=+1MO5CUlahBY*MufBcn`pg^U!OQj1)L?7eBvw>aF!wvXQ_a*}@>xJDImmifB)a2Ob&ahCZ;uek(sd`Os2=lQ_T zXyb#tyq{$`o830zEb~qFXsB&-+laHw=j!G``qXXXBi4MgOE8s@Y$MJxpBKqWwh?EU zZ*ea{nwM-N&N4qh(z4067@D0gxOXD0kZk+a21o<#`yrK*ZEppT2D#5bYEQNiXPF=D z@)cHRvh7cOkXl`8b|>42v&PfZ{XPF=3euA`l$#&u_^F!U{VK~_)+laHwm)r@E zdXsI$S>}g{v^?2HoMnEvy9jA3l5NCU=67~lSJF5xoel*C-)fDPm^2SF$Q0+OCyxT$6`XAeh3 zf3Of{+&fCSpkIm-kvU+TS9LYkib#_qwB3ecDw3~6Y>maII#LjaN^#b!lM0glaFm^c zp|kTEP}eoA%nOlD2Hm1{SOrB9#(7=Z$i}yc25%lKtUfV>tTTyGojc*f*?4{{G^6=aIA5b`N<+^oMnEB2pVUZ?-oJhEb~)E&^XKdG!Zn;GC#ec8qe@G z&N4qk1dX%I&ul0lMdK{SI1~Og-VikW7$x|J;%cCUbR(z!q&1V-8 zl4%@M_ycvmegLHjgeu}J^Rwf7Qi_Xn^%)cnpt(yGy&a}axFU|}BD#=Aq^oi|{bm?u=3-A`dL;SUDo&s;sL z4fk~$u$3cuFoiSlW%)@6<9PRMo>W!O`}_A1@g~Cf53%tfQZe$-d*F>7Vf@sDL=Iu( ztB80GVcapxk2cJctLoV6Q|<+P3t_wqQv96gegVJRe7Wx}qyy*Hi2`RD^%#>gz{gicMxe z^(BNv|6YvxzadP&YC7gysBiXlLF2qcjIR2+&I@CY)+0=aD?BV_V$S={CI?Mf(Sb-A$MO7BjRp^ne$NJVaPK6 zfNPQE8wsx)S;pLN8Y2<9_6{pmp5mWgqgOcA$j4#Pm!ZPbU;*uke`GE)y3%2$wbBxF z*qreN80FurX?PrD?vXJ2!psNjc+|TcDYMsv(amA>6Rg=yXClv{gyI@L0=4=Y!Z^S! z7bS9x`X0m!5jt)PGjnko)90hFz8l7v1&+#sM2t_eJAW3&ZiL=nq~dUaWpq3nMn8n; zt~WxV-0+tN6v8@nL{{}^%>6!0x9QPXvssVEbD^ra`g>zA8nW=)5-k*-K~0}TkXiRw zsBdoC1x6+&VjEDuuBXD-e?9B&#^iq{)HJp+|I|cm7nCsLQKZa$0Aq{L!<0EsA?9*O zmm+()Bds{kpL&Wv#Nlttk^p6`TND_ z@W@;&I%tS`VtOKW1}fLp5tb1(ZuE|pRL7K1ONO$>;zl#=wzJU2U&Un~+Wd;{Xdsg0 z&s;qW&kJ=&|0>=@{ePf&e?}O4Q&RGc=C$Gp51Pg|5XNCwd@3$G&}R_0A&mdzQs_Mu zm!0U?hfHGyf<9IJMr*!+h({3S#;$_q({Yz&!msj4bMyBg;+eS1hp_RBHk~xS$htlo zm%Zzi9|A*$FkZH;XXAr-YFPOrK>HB%3F>!oIYIp$5!(=U%X!E?IALD)s&1y72I_1ybH?L)R&=VI+}Rn}z7}#* z$7V1x)Oi6nKwUqp$UrrWFs^rb3Aqch%gGXt7hXWiI7T8{hQ+jL2jXJVyh%^mLO5w3 zjJjYoYoI6XP4OHj?LrLIt_Yl;x9C~-8;DOL=&5*%o}c3%F^zVFxiYzLjb`5FlV%n$ zEnY#%dImfYmuYbZR8K+BV=^zShZ!A|$Ko#uj%bYb zip%?|$B=Rtf-!q-*w%@Nb>zW6 z0hkp*pKk1zbtjq|Q2}#$JnrLvS3?;4F9%x|;EPfI=pYl;&^#+1{|arr^95Tw9{6IY z^**+ka1S!3O}_wjx+^BzyZ3^w=>BnCfVq0(glM$yipfg339Y&gK@ZqH@LmDc^iNI0 zLg2vOtD~-h_oI2pJktbOI`$CYdjE> z9r}ETXCuglya{!xjrT+wayvR;308q#dC$gVDEo|HKBJiOU8Z)i<0I!@{mc zxv0vIVzHfYsnpdT#{S21V%dw~oQe+0oARi5>^RywI@E}4?Ql*^-*-A(X-BsDSeMap zXFv3C4~5+iM>6)^lRIw?b*$Nd#KXMak5AUu;+>C&sf69Wrc<}yt7@H&WY}fA&g;yD z0k z19?&UIi}qtfTm!hVm4-!W2d?$*cTYH94xO{0V` zR&Mgv$K?L)2}C@Ez_oazUW*HV0q5KZdd=RbGhc>?^ANhWh4r+i$S??v2c6)e!Lbuj z^v-mE2Sy}wb9moY%+;g}87rJmKQtRzP4}1B2oQ8h59@bKa}Y5TK`+ovrd*w! ziHK9EDOYEkOnIj89wOe*nuhrZ+=k*zbkMI%V=2PSKAc^zMS*j-EJN9YV|Ba?1fP^X z0kpl^^Pbasi_6`@p48)fy*ZfU{20o42x06%Jhwx> zo!M7AJ!Kk$5#){}G7?*Xla9I0jCD=M1U)P?9WCJc$vBH%?mo`pf)^DV+Sd=S;&#nE%aClm51+{}??xCXA@shB`8XURjavtbduW^V3k3)mXE=8XZ+(-8&I)Ou37Tpw%>a^JH>QT!#?wTfVi6b(LuS9*dn)kk3J#~8Z9E!gB3W8o2^`?-FT!)CO z8OfLJW}qWqK*Vzh9iN5-8B(#mCuL9?{}wM}xu2Nkl0p07;1&HGmCp?KS-A%yHmCTM z+}O953;)Na$qj73=36LaxLp{F&!XCcW_3=&>+fUUK{<6!?-Oj=pQh<<1{9OavI=)_2!p04dpF&N358I1KPoc!PD}@cx_cqay9pZ@ zLLFSV_a;ulHzx>%pPTNo3Wl6zzrfQ`hL%3}pu1edc<)pIv5el&_r|3&LLnEc>)miH zDus}P1Nq)r=rxAAlVSF3)SIF1cnGhaiMLY-b$2FgW6o$4X#AzfZ(D?H$GJ?C?Q9Dl zp%-fP>~DSvOZtBT*$zo{9zdNUQXL+D8L3XJpR@JawYZ?NYO*zrI1AY%6sc*F`(B%b zA~m_%JJ?hq6sc*+yo+PUvN~hapzYGxy46*OA&2mj;SeThDi6c)tSPZ?Qip^h)>L`( zWVm#;ZcP&*;r_7~!t@4~Yca#@*t)XOkWfS$4GBebhPhFOg0*MtgK~zDP()`42}N8I zidcI|ah6MG>(;{54XCT<(%HJTNQ5lQUKUSbLvu+eVtpkkO?F8rVtrKv%Sd|G0oCK6 zW0O$CI=F^K+awgRLP8OzVC@q-gjQB!Qd#@C+6oCptkBuIOK0oWa+_s&EcS@lIm|#p z5$o&X4%%>UWw#uqD@~naVh>V>gd*0lp-~cwSjUA8BcX^DIa^Pzuy(F0#!)vCidf^S z<(Pyb*2L--)_KrW9M7oc0M?OE#M-Tz17&Z;y0G@H<`~!{6tND|?IodzwW69Wvq>mo zeY={KHsod9IFuyk;GE&~S*^8wkX<@kw}!|qsNs@O#43r9aHq0P!$q*%)7L?07r}Mu zY~4DcmQ4)_MXVF6XubYM{H%_O={BtMa9m?Of*M%Y;jn=`9kuXbPMrqwbkxF!Ifcfl zSitu9SavpaQ-4R-XYE~L4Nd|Nq`v;GBMrMtQwWwRqYho1#Q&kl|6zmwgN8jt{tvs%|ItYP4;%a+LJf00X0B(0 z|Kn5It^0x)gF}*x=4!QlBDsh7IlvrfmxNxuOm345oFP0l715aA%0B z8IU`}26qO(}T??NhF#{)2*{mbm$@?n;@|Bu zcSb<&47<#o5s*8>E^}uDuVeh}GIvHm?hG5;8Gl2II_-em88)~xlCW`~+cX%bFT0XE zqlw%Zb|rU4Q_b0kspQUR+J}>>k~^b`+!=NycSh5VQxQ|ioze7CFJdaWGn&S+$11rq z;Px#$$-o6C4~EG7|%GVA$Zm-~u-i0XZ;ia9~ih62YbHDR5xO@=pZhz_7uA zK{1;MzQ;ZS2L{DLA|MBb4Gs*7;J|1k2Zjv}3|1wpIWTN+VEmnxXt)w-;K0z8AP0sG z4h+^0*FBBoz_7uA@f*k~;lQxLfiWI+OOpe`1_uTOe2dB%TET%q1C8Xsu)%@hKqV!# z7dB`wRzXsvy|5$N3q{%sJEFZ%q`j~s+6zV63%g8v(MZ}08?+a5Xj5n}Y|vi(v1~J< zy-@rl)sAQ{)Xt|tifAtc%w|Wl7rKNp?L{MLFKp0WT+I@M_QD43#c&&KChdg{+6xMR zaIwvxy&%nCuTjr-@lYm9l~K<+?YdoVB<+O_+KYc6K70Aqq`j~~dvO|6)WKY{5$%N{ ztBMWU3nnFudK&p&WGD_oGj0x`y;zL6>?7yH`AL-x+KYcUFhtr5JEFZ%q`j~s+6zV6 z3p=8{P^7)EBiai^+6z0Py-=jRup`@u%GKwbm8%xe&k*T63G8UzP1wajY}$hPxB#A^@`foYd{4FWI2@cT!bk zN2gCN%b`{yc@1pv8oZ3&9#E5DCL6p4--Kd8cnu1|YfunggM#KY80ewM=bh2kXZ5&( zUYo^jR>*7MlGnf)UyH?HSZ*96;&h1Mxrdzxp;LscOUKjBE+Q0MI-YjAL@2pOpdQWy z5!&6C=Rue#LZ?f|)6OIjy4`h+5V}R^ap`#4nJU6OmyV~MX(B9f>3G_ikx6;j|J;XG zLztBgAS`$3c-jeh4O}{&c0yhQmyV~MkkU+(MreD$+PQ@MNEy1eXDm9V$PA6 zRyv+eo~w_^Yfz_o4dkBa7Gx>nJ5&5?rQ_+kToa>O>3F(M6A!e~@pRn)9Zz0^dd+J< zpr+AE$J6!0^B*EpjkTFs$!p+gUV~Qh8hD!5pmiJcJEm((Ys`wC;d1|K3`DS8?p}>eB6#jo z;~<2*1}-<0#*o**<#y5-@*23@JsJn-QeEyHjfDno2<dsD%j|Wfa)U%|lfHo5 z1MxECjv>4Tjf3O2qpq!VHr+Tfa|n`aEOtgcHBXGRPcd5QY`Sq=<_JU$yzm6Hn;ccQC@q1oBUIXu{_UpE!|tt-N?W>Z*NNci zwp}kmR<~`f2nF43A+Le%w(YzI6JQm@Na#1=HSlhT|AH0x)>$}rdmFtASpiOcFXS~C zMqUH&4w>zVVdORN?hL0I7lqf4*TB0wzB>#I6kY@GA@6NkBd>uM@*240HSj`S1Gh8{ z!Xq*ZESHZ=yhlZF-Qzf-kEicI4}`o1-cRFK(e#8~M0vmQc2Y3SW#Bz67ZBmp3waIn z1nb9Z;5{4vmAt`X=`|6$-5Za9@Vdjw^tg9Y z?Tzg846cq`e!1+u8O(uD<~10I56F#@x7DMHo}3}Cf%_5`y!U}vwOoEq=6%?(AGAD| zA18PpiICM+|13omFc1EOa`9XUzrt(aZHe=^#@Z7(hwH0?lpQ}2QbD*33Kd)iDZ8)? z2}3oPLCW(Qee~!XxS~om)G>=84N9ea*47$EbV5o6)bdLFE+iFk8I;InkP4Dqky*1u zE`wB%p;RzSV ziwZ@~re)&7*)+90mw-_?n{L1^mUTzqf&k8@Kf$spxR;=V;B5MLQ0sPY#}b0G>EA=> zaeLY!6y#ICd2S__fqMe(bl_}yDT*VP0f%z1b~e2~a)QYT)vmF)mo<{hzyp`T=^T9F zGVs7a2Z_Ad~zm^xD5Ds){D3dv=ML_(1>R=lFPsYm%)KFB3uR@ zxC~yV5t&;Nmw_THqZe@*Xe;0{2&+Oa0}osV>u6;yd2AtW*_Ze(?;4)Ya%|>z=c;GVN!|v3jyh8B6W$=922)GQi5m^vr zE`vsL8F=6_xQ&Gimw^W^gP!K7(%>@C`J_7|E(1mQvIi~$K3enAWQg>@Wk4yb$Pnp8 zTn35^kzSe0ppje#UY{A?g7S6}E&~r-25+If5z;N-GGLF5khX%$fZZ@c$_AGK$906P zeQ+6YX12-F2bTe-+X&esz-7QWG-4t)OAlNIYiK|k4K4%r#|Rlxa2arXN07_F1D63? zY&5b$9=Hq^L8`H4HlR70%fJJdL2n*oM=k>oTn4XmB-8x7!ULDVPatF!xePpT8SuGC zbFhhn04@VQUffz0kjuaWm%+qZsMZDKGVs7t$1DC-%wvAi{9=Hss5ONuW7Xs-ab!Q;5AY2B83NC~6u=v-IP~Qf- z*F|<6qm@3R)nM-;L^ZtAjaN_LGMIt^Y#^6G23!UdT5Sk^Yu#PQ+)AI(zUDG$C6|G( zxeQv#W#DTr19>}D!(nAJwsRS9*N!v3HS`(XiesRE7!#m-;4^x>#85{bf6v2#ei615 zmWM@~)IkjucO z&**H(W#H0hbT;HNaOpET+mFj2TNghY28L=bgKVRB!a$fCgrUr)^L(^#l=$E{>t|Wc zX17ExgKU$%3ToTj61fbrxw?OY^r>6oW{_=mpM+#2OXM=h=0&oSC2|>LTilP3<|Rwy zGRO{)v~03OE`uy?AO>NalO=K)WCz+=NTp=ytpL&>cMPQVWQkk`*}*PfDRd@Ff9iwO z>Qb{iSt6G~wkT3hvUJ_~kcPN>BW+%CB)JT-L){Y~ElHNhWsohoS3>GdmhQa-(lC*h zCrjiq$PRb!LfVRCiChNRo!s9-IzCyt1+z3e!hIi7U$R6lgKV3d#F9BHSt6G~cBDwF zk|lB(WJkF}k#u$rI0oxOXM=hj+0t%OqR%HkR9(HinRNZ zC2|>LJKXO=+LSah>~lSJKEmdppOOG=kJvn~qBsaTnX_7sFcmLjGN&3xMZbKdGE(l2 zQr_#A;)^Jgv&Q0eT#fbXNRuP9-Gx4;+HbEE#G&#z>wP(4)L1QukQ5Gv&dzH< zUDvQOosrJB$~vrqPZ7p>Ucg;*q{NXE>)J+G*_BZ;2Tzw1rqDT|)ZkZ4k)JT7Tg*QY zrE_R~zB?Bs6!~J5!eREQ?N|2hpQ2=rv`!8iltP3QIklX^Bbek6`~qPwkH5 zA*@-Abx@Sf(cj)x(kvt&iCEz>$acn_LtodgMFc|;iRa;e>mSa-O={Q`$A-HCyKr{02$uWgN(fU#@Z64lAask6b=PxMOckNvj+_c%ng}JA zKBKeK8xDrGc9%Y*vol2KbdSCp!pw$KkkakaXLNQ}!<7(vj3Ha3iL8xu5g}(je^7Ux z>T0ZcQ4(|eDL3o_q#Pcl@T)+dKZxWjhZ^e)2*PEMogKfMT|l4F**U=)#E;6NlgvW4 zHoo;L>^ArtHJmZU5q4d#$k^T5w|IzZtc~}6RqKp?a5^GRi^<8$co#PD2Oaq{R}X;J znA$M<&+UjE?VN-R--^jc$=lx18Bn<}!(wFE`SUP3HX0vf^GnqSkgshm^6jGG4~0fB;Ryum^1QgtTLAULf$oq4IDFP)OsM{91Xn8lQxG~J1Fg8y{?!mEG4Ed!ge?*>b z2ve!|qfjpsmea3UPlSmv!|UIyUD&L6xzW)PE-K{D+&LEOU~z0_b~BLl2*$KX?WZI3 zpkK6nEFDmzAzm<(9QheAHxZ%ZNRIpqW&8eJt%$f1p+f-bFPe%|;_I)Q#&U#?zo2gBOZpq( zhY;}qLid5FV^pmwV0|<#cl6R=1y#g{f22& zBg~$U5kv^vW9Lkje!W=tiX^z=xPDnIuR+OV-804aFnL~0r(|^9*))q99)AihpVC^v=BE6lVIV5*c6t_<(}ILkOhJ) zp6*Z$mp1a(Z}Ie$ZS>N{_B~-&E}nJe)aZ!U5&Vm-(%Zu#l(H9s{K-~zZvx+TSqhZ~IRN#&h4u_R%dM(Uf z%esvz{<~JH$3~7hK4%nu!hE)jgSl+rWnpSn z`KY{sIY1n-p)aGDmk{tbQ-w`kkDAtDs`9*b(Gp|KmN5R$&^LB_fG43dHQS!~b*Sww z>+4K&^ifFOL)bjd*3S|4e5V(>=a`LLxO?#18S`8-%{+Tx`JJa3@o;kB?e*xy;m|!) z?*o0|KCl=T`Dd=?mOA_3Geu=2U)eeDn1+ck@1{_fBp+iog@ROdRyP-wuT8FbLysdr zxzHx3qnWdZO%;`q6js4pAA$x~_-5x)D9(Qu{ej+X&q)=(;<@8o(%S2h6GYm@KH#5A3B>6rZc679CEg60g z3R9T-$Cbj*D}BO%IH1?-T(D1 z(Q;hD{uyh=+7R1y1%7TqQ1bAI2=^=Yq1f;iQ2e z7dLBQz27403k!}JPcdoxMmC9y=&>+04(cFS{jFX%BVla>0yf#|uqj+NXm%VP-g(8t zIltho4rF;lV{6#Py$-vU5d)aGP)^!gqX;l4rcJ_YY5p@SthZqR#Q4Bk(s%^h4Xp|>bU@6Urfv!ekk%oLX$hx^ zjQW&HVSc4>T7_UN_~Am7(rdD=<^q(ZtJN#8phZ&dLDHy&DDNv$p0VGH+%-CMM=S^( z6w^SQUA$N5pqTAi$To%!ilv9(pjdikK_$9~L%+BZU9@0CuZ${9#CgT4Q$uvof)HKA zhfMJgSYn7S;xWc*EPj_pNQn%P5=#%pg%?AnkZ4%?b&NBE_cOD4{|IQ&WGsz<76E`3 z`^S5M{Kf`_c;ZPI0$@sv1=!US23gQTFvVt^8tA#$3-2jz#-%a;-rR~7{4bb-UGcwQ zivI;u{LcbY)L4AvQwBY}fU`l3^(uZ-f5A_h+m3uvklqp<^#?tuM{r^k(8KOn?wNj| zhfF`vLnZ<}(6E>J63|06tf(^RVGV8e13hH=fgb!y&_m`+Ko9%ENCoKOW7>>B4-||{ zKhQ%a0zEKo$DoJmDzpH%cSZ&1;Wn1C9rSQ|4eUms2VF`8dSFstCIUS$Z9C|JX%(Oc zQQZ!DpjZKVxCG*tgC3ar|1Z$PdbFql^l&%C{{=n3Ul{s9W@89?U^n#xJ+PxhAp|`< z9?2D;hZLrC8T7!f`|+_Ce&uP*pKu^MK_%$n2rHW406oY|EQ21nz$-ux6e~avvi!G$ z9w=6T9w=6T9w=6V9$1wM(8CR^Lz;ZEi*gC08ZXg1Ri^pNQXddTzxJ!HNF^zb2Ve!c>IOVGoWWt$P`A=3}^ zkm(0{$oveq&1KMoF5#a+4>Ms?l|c_rL-Hfg0|g@!fgWCm)N9nUT|AV@0?-5NMBqax zmq8CVBCZ1TuoJ$c&m24v6^cL)nF#d2B!C`hWC9MwPzC5g&=cE14>vk6)DQHK=?8kq z^aDL)`hgxYOD{kLBG5yoALt>|5A=|UKo8t{n=_vYpmOmRh2;x$GhnFexL_E_ae|kX3d%CqX_hn z*@PDXWza*WALt>oaW>K-&_kvl=pl15Udog~51D?ThfF`vL#7|-!T%D_!y{-z1?Yj^ zIWznWvkZF3@S9=fF4+l3eW@FS^;{%`_)R&!&49| zKo4wS1bU#REW!}55K^5WEu3pEM?Hcdl1T? z2MT4-1BD%f9!^F|8T8PE_dh!ZJ^X`e5$Itm)OHMd7=n~C=wUh4+y675 zhd4umr3 z;X?@j40@o-e++tvSd~E!N8x>L=AB-Y1<=Dk_;NQBfgYCOZK0Lv z2YSdvpoc?|md*47J@|Z~;6=rXT1bGh{Z(i$D*V2=u^husieUfk*@Bfl^PV zALt$nKPWz8R57a7y9)5z|zYKc#81G8TpoeGCvNGu5 zB?$io&;y5ZAVCl9Y1`xA$@ZRh>$@?khM+If$&`$$eBzp}OS2-L04~z?DVCiTz(v|i zv+RO<B%nsJ(zr#Iu@ocFm8y)TprK5JrJ!JB`e7+D{je07eprgk z7qJwq2;i{zEn_MAAgD5yBEXXeJ@+Ckg&$!ln70B;@jmmFu@v)>FLUEcbU=iq(D{I+ z2=hf)iXqTcWh}*I%-0V~!Kc1uEQK}#ECr2JU?~oukusLz_cS6?Ho{V5{&YU{BP@ls z0xU&Xl?Y3*mR8DGia|M8>4&AzRw68gwgN0gXeGi@{5!3bu@w8liq-^{f|`b2Fu+o9 z!Bk)=MnO}Ru@o1V^8rht^F>$+E|>}|#i7tFV=4FyU6rvE&y|e;OQDU(I{RlV#jPy7 zjHQ^}990@v3Y|~7Gs042A}obG-t!|Yg*@HMyg46T9bqXlUxKB06Xk8kQfxtaWh@1I ztc;~#H|If-|#>rQmccV<|X?%2)~#xt6gM?2j^*g5z7pQn1C_u@nm-)mZQ0 z3cUhLabO-}7hx%0<4F4buoRgHOTou2+p!dUYFUA$coSj;mVz%ADzOxwqU17`f+hYl zmf|wR%DJn1JC@?Rh^xR-bYj<&_YuTW@Hvu^iLexu{@=h-unG~Dq6f!P;|eUrTDC31 zQc$5kmO>4wI~|e#jHOV+;)fwYuoP<|yCIe$GuT^&D8W+rz*6vzPOua{uoM&oOOdU> zQe-Qz6!?67DSAq<6xj+aMKxaVOYOH~DR?r7Gd{vn48}2>p))4LQjC)r>c~^|J#nDl zud$3WmSR8AntH1o`e7-8y7*Zz5Mn8U zM(;ZVVQ$dwc-x=O^NoSVQUrdM<%C#@pvk@vY9W>)$kp8rDa29)&F&MB42`7-@*-Ip zOA)lVe?*$6u@u1oNy}<1MNn`X@L_sEV=01xwhyVKu@u1|cQmASjim?%yL=?ysj(D6 zt4qypjim^RBK2r2MKHu>QP#5e#*|18IrIQUoRU`;dAymLeD?(sGTZ2!^|KH?Tru zDT1BcXCNJ~u@u1w_dQ5`8cPwhx$fXHmLeD_(khLm2u8U>kamT}QUvX(S&-IfEJZNd z-4D_Rjim_2Nv$_(EJZNhJp^g@X)Hz1;hq5rH|#0)xt=8z3`nvvlL@*Fb zaW4J~mLll#FURq~>eH|af{EUYRxEB}DS}B2b8xJ&6v1Q>G?pTmB7(+J1l=NNEJZL? z1dXK#riq}j6v6a{ufm$fQUo(Z&{&FKX2Z!y(O8OLR>Supl(7`7jdalgI7sscb?2!L zsQM_0xzi8gJQ~gCuSF@}V+wzu&Nmq~*69!gOA*YD-^DHt4w1Gmb{u*zhAuUi9G)ml5)3t{#DRAftKr0+m+g{|uj< zeauhK?hJKvLjjlIm!`|{`CJVIcy*TV#5TUCjqMbRjQtfKk&TltHdE$M3R6EcjnN3> zc)g5#UENUq3=w}s(Dd}a{>t>gKbpoq2pv+FtXa>x@Jr1=r{9INn-O+7A2oO^EZNuy zd-#^K;fE-z>l&nt{>U_jB1~Y)#G4UwJER*BCf);~`A?={BTU)^Ve%9B`RV(*5tE;S z@NgtN58<>>nDTU38eM=+LP6*ZbM(&mJl<+IrhHhDxKI)onw`d!#xOJU9KJpJkc#M2 zBU48AJz+HQIa8td3t_1foYC7!$-3HT}itcDL6I+n2s}3n! z(AL)wj4>C4I^k$WA3?I0r>dQi?IY7<+BEq9@}qzW#?(J`Amv9OBS*?~8JQpX9M>5b z7|qu)^R10gc~q!gX9_svQSlyV%zAP?5-!qT6mrnC<%`7f4EeP3QW@l#@@eIz%~Ikl zvkkcxn-t8~m`i5P;${q|F+*ywpX6cZa@4#+noKxbo@Wloc(YC z|IffDx;NM0V1m?SbJz{{!W{qLKX4cjvFWwcXk*ic{@FAJAk2}1CvjKE%Mc7rU zJw+;j^)Of3+by;D7|GiZb~_&S{t}iFo5ul}mbkry@i-d^(?7#v~}9yQA! zzIok)N_$?0A0u3Su|AljmG_;A=h6k!4rChm@y zTOeJBfbDW$hzEsc&FCO1+?KilT_V~8W_`vDC9j8wHuVtY zTf0$+9@v4>L&mJiFGAVk>6KrE&Kl8+mW6!tY_d)bzX+Wbei6z`<@jAJCHx|k$JiRj z;&(nLZ1k1p8nzLC=4!6Ft`d^wpbb+I7L0|kU^0Jp#g7b8l&$KiDaiA9V*c=Oh;BuO z4G1zsg?IJJ!ZQo`>o-KDFfrzJ_a7p5%8W44Kdjk3*aLfg zF<~ORVk0uHL)hLW-F4wM#!aVtRHZPrQrN#jKrsvXtt~@SK32Cd`l_~xU)4S_lOIgn z-H!WtO;LU^Rwuuz-4sr#8}M3;@@Ovr8ZTSv51i!L;gA&%?i1 z)v0kzg+$e1Uq8l3{9+W2hh-+fK+LMzuNQ@V>uN-;3K*664(b%YEchCa>$-4!c}|We z!C?G~U@_zQX;J)2iLbJ%t-BEyvXj^FIPoC{EAhNP4aZjIY@BctX2YcrYTxOGzk4H!iI3vxt!x{l;<3N3#>XjV>7g!kz5%<2!djGwXEX@-uMeBBsgtY#C5R&Q|1V zcE-bI-uW#`Z*lm*Wq@g_)NO<_8^>+VZm>VnX+x_=IhP-YYZT`iYv z`CA7z8s|XR+{<|nxfVLtq5g}U{m;M(a5mz2v9sVDtbONF)NmhXiU&6y&L#NW&v_K1 zztlMuZQS1(fF3)*sYNLVIt>`FUgveRVwrQ|Q0(K*PSE*^^FDgutImnAcCd33Vh(ZW z-|$f9V$^)OGY>UC%xOaE*PO3lCLHd(ffA2!c7uf@ogbnVUw7Wc=pW_Kqu&Z=Hgvw> zypQ;!ofmU(Hs;Wc(=pC|=+$pIdn4De&RW#-IOizXIo^34ZTz-#2I~AB=V_FFg7X>1 z;zZ|m#GK^(^>o8H*?9{+c8YT@^7c7b!`e#c8Kj=-JdA!g&AA=(UoCKauq!9 zI(4vlrgJFje3o+wdhcu}kG?&}c?u(Pu5&T;&vSZ^_k3q2YIT8gQ^qhZbcVpfD#t=E zUF6J#g^Qij@4=SoT!gYNaaN#RmpXlzb(cARLyukVEJ7=;aK4IKecxG#)GM9OP|vHJ zxfr9>&bu28<7#IrEL`Ih5p%86fZsLF!|0RioW_B;F>ySUxYpSfbzA4OVWieOZ=>xu zI6p=yH#)E3cY|{ZO1a6|7sod{f5X__;_Q!B-0Eb%X&ARTpTpYi&eB6c8sIqSnT^iJ zXx9&%73j%3oQI%!r?WFg|1ReMjLzN8E-3dNXCPX4uX70W?{gNT^!uIPt~ZPaoa>K&yZ3yn~oWohLDlk2!xm5{{^x zq3H9UILBsiQS1;a@{ZGio_W`aHKwT*lYw%h@`p;Cl~;n;48juVa7_VM^OL|cuYe-tP ziB*3MVRU35H=jRY#U{PO9 zH7uz<3^C43RLpP=yN4@xcl^eTmbKsD^2*j+i1Y#U57XFGL%Rc-7vMNoE8U%V{VoVC z85${Asm|ELI7rh!OscEyQmF;~!=xtE!J3gU3SMeTY#VjxA0{=`)-|PnnA9{866rto zLYUsbaxG?<9UJIGM(0!--Blaa8RkYA3aLF~N0c+nugtI@%s~GzslB8)D^33}sfDTQ zP(LqC|1haVB4kBZj zdi~dECVgu!grjt&sdG%MlRESdlR7puO8+pa23)|t z9#<{L^beDoSbY_`dcdHmIG$0>0USjCFsa?DIZy-WA11YTHOF88{llaV)9s~ynAD1D zwrl|X!=%1l%}N{f9MU^*Boj1e6#7!FwSQw(=^rLFB%GY|50fhC$(g2qnAC6)tTg?@ zq}oMr)ASFMI-!isRV0o{!FdY}dqv`y6r8s(Eo)eG-lE{V<#;5v3XVy^c}rs*tPsbf z;JihaM3Fcq1?Mf45<~DtTfun?1*^!H-3rcID7l8U4ySGf=Pkd0$)VbLi-Pl(<+Mp0 zlY;XW3PzDQCI#m$Se`~-aZmhHaNfeSl_ffFQE=YEG&9_0jz@}&;wgqj=Pe4(TLvI* zsKzlVIB)sbgI(g76r8u{Qix+xaNfeCz9Ml<3eH=YwyDHzPQiH#)4I(Powq1BZxL0q zMCUCE&RZyMGD~#cqTsxxx&d{HmFT=h!Fh}HPj!jTTNIqPFf~zKx_UN5IB#KU!Yo;A;NhJ#k5_b^A-i?EflkMDTkp`aNa_( z*)IJ#fC%R;6bp8V&RZ0mw@_?FL1?Ce^A?IFyTp^1g7X%NBkWQihXc-AD7M?B*RicA zIB%gi)-KU`i-PkOA1&&%OLX3%;Jjrh#QWS~bl#%iyoD1fVGelS9Y*IZ3eH<}ObcS@ zyhXuzi;l@7W*<%}IB(H0&4{7%76s=mIwpsh8?o{goVVzhCd9ndix@a>(J=vH#<9oX zyhX=k5yKC46r8u{7#}fLW4lst-lAhNh@tZq1?Md~Mm_Hi=c7gi=Pf!W4IO@7py0ek z$D|N56T69m^A?Fo8PB`=q{o4l*$5mHXDPdBCoFMs-h$a_u%ko)I3{*!MFlcHW}kyyX={>In`Ulgz{towq1BZ{Y$r z5~T$k7&vdCXeCOQvZvs@MV5b}^dpLJ-a;{(DA9R~g7X%Ng+z(YTNIqPPy~+2qVpC7 z=Pj(tQ0=@$!Ffv-*KtMSm=v71=t>aBq~N@T^}~tPqVpC7=PmC*ZWSDpg7cPn$T);J zCI#m$6pSKqObR$A_K=0<(||?iEeg(Cico2N6QgGfPwu;0tDL8MTgnfz5TNIqPe1$eYUxB5ifMas81hh@yn6ypem=v71Xq&__ zDL8M@Hi=_WaNZ&|bqT;RQSuDyES3Q0E%&kn!7(W~Z<&D-h7iZ3;Jk%`Q6!E@!FkI< zNWDfq+r>kfEWk0bPG8+FTXf!{;JhV3+)(YjMZtN?)ewusF)84fSOud<9Fv0c7A675 zL?gE$h~cq~N?o8zPQL!Fda%M3Fcq1?Mf4tRitt z3eH<7xkcib6mU$GydrT-3eH<7rHjNdDL8MTlr0j+q~N@TTW@obI3@)g6Vp}~iDOc5 z-omssB|2|WaNfd-70l9ntSSZPEmUnaOLX3%;Jk$*_@c=qqTsxR;s~=u=Pe4(TPU`h zB|2|WaNa_3tXW#O79yOtuva?G5}mgwIB#L<>O|>D)&kC3q!x+N1Bg~|-a@fZHG!&Re+Zx8s;BI&V>M-tqtnthNfs+A26E1?MeqLn;!- zq~N@TCwikOa}PKsN>*_V&(6RxQSyq!F)282kxPOiaZC!%TPPKZ8@Yu5$3&@AB#ueJ zc?+fXB5_O#&RZyT7Kvk0aNa_xyGR_9g7X$iJw@V}6r8tEnm2?vCI#m$l$ID4owq1B zZ`m2O9;%(UC^&B+8+VbQ0tM$S+#=zK6N^g$$Hbi>QKIt$1?Me1izX5!x<62G-onHg ziP8r2t%CCw_Tmhyw4Q4Z&ReM5W0l_KsQ}Jfn0l5~qVpC7=PeY^vr2T{qTsxR;wq~| z=Pe4(TPR*)m43onzsIO4p;5$7$AcHZI=W|A2u zPgO=@%@{6yYh;G!Z$_?a>-+e12{Z9?`XLN`YxvFjcpD~=pV!Cqt>L%mKfQgBh8Ks>aE2%PNa9*9fD_Zg;;5N z)d(7D*`=i%`z&a*dDbkMMqUehMQZe_;h!Eqh-v~b@xSZ+k!rjo z_s`U7X?oT0&k`Y#K6Nh$XE#sA3EoQ6tA>A0J+pXede!jHt^E{2HhnXi>7OS;Ax*Cu z{`n%5&@k=?xJ==YK6(jKE{LDa3W!$?f0b9nDRLA)_VzDo;3S0FFYkid#c>-cDFK-H zmw3BDNb}{Zf2rJzK&=~BF8*cl(Nvp@l!SkU_f4wtn#{klnnfa(#J&Di@g-CffQf&N zx0PxHnE2N!9vd?3{u-&YrQ3F$2%c`+^&(_-+t!Lu(A~C9nue!p?6&nHj6i$eht+C} zcUy@!Fr)k%;-|0z;#I@n=uOL^Oiq3O2YTv{qE`+74w>zVQS_?e-x*FdE(-rHvD|JX zh*R{!@l6ZDnfgjUN!v9B6OzdRl|QxgzhxGYWS}^tV~auUN!tTvL8d3mnPk! z|7P$xgfhS+Rf|q4`CC1z=*jtRS|(?jUN!s=#Hy7p;vDCH*ie^e9XDXR@;?$GtF8W7 ziYQ*4t=HVre_nw#0c{ZN-o?d^6Z&$45bO#H)s*y=o-xIUoC_T}UILNqg03 z^1R0(rQg7*uBoApSqy1VQ_5#;tx@!<(WC-udASaBe3LIvzC1HWuNrusz!jM_bM&gw z6l5qB%pARHG&LokMYfWeqgRcloR(s_r4u1FYY6}o_7(MHPXoY&7Pf4c6E&?+&&MYq zDkWYung)19j7FLOlcqugkBw1yD9|)eYKGk%8&K0A5nOZ&jU|4(7IA~)AL6)mU$pj9 zA6_-Sg9%%F2XoU0z{D=VPLTi;A6_*SB&$e(i4U(DT>M^<023cxHF8MH76~x%;Z=jv zy)Z=f8~{u>uB9RYCO*7sFkgF-H{3qFYET+mB*4T6z=Tp~kpL4PUNyK4b{7dS@c}TQ z)Kh$tvl(7Bs5!4lfQb*U8UqWMTSWp)e0bGh>AgkSzyUDfZoa%I%LraIxM?3zB*4Un zSB<|zT2Umx#D`anozQD*io9?2;Z=j%=EfnsANAo?gS+E>MSd^u!>h)hAZ;qjE(m}L zx5RCDp@4H#Z_fAFX)>jAK{%z~MTK%rB3LqUbGZz)yfo?ibIpyNN$&9@u7QxZ7UHt9 zkfv9STubU~sCB35RU>;@6^A4If@L#zJU47{lxN@T&1kNP3b0 z2_lPs2$3K@ylOD7Wmxp8;lr!O^~@(o5FcJOss^H7a;5?jWP*V|oexNmFdva1KD=tY z$b5nX@!?ftSLTy5F}!N9mIj}j`S7a2!YyqCNDvyq-6Oqf`0%R1_l~WC1o7cjV-=0a z+yW9rj1-9k@qq-Pl+ady1PQA`B!~~M8jEQ~kRU$1YW$8?WKP1XMuin1K`N{O2@+Z% z62ymBjjL(p#0#)We0bHU8x%DiNDyiodS(L&!kLW@q*o0eUNzoeK0$)`@TxJZoDWD4 zolj;qylQY}Bj0DR<-@B+4w}|M*e85=)!$kRU$1YW%gF4@eN5Pr4IG5Xo0062ymB4S7H^gh&t{UNz+TNb$}2NCOgt znuQ{fAU?cmP--N6`2Jvg;vfqiUNzWbqou9zs=;m;EoH;2 z2FG=@tbKUZ;LIE&OCMe}INe6e9s#c!oI|7ORl|o@jlF0<8V#=+?2pkhr0}Z2@f}UC z8a}*gu*HVO3ipMeBWd)ktAOFA@pj!>h)nDBT!BB!~~M8oz{) zEfNXh!>a~wSer|mRziYT4LW4uarhDEO$KD=t& zijr$racQhEQ!KGI!6gf?8tg!MBt~9zIq7s8we+gt!>dLY;)ZIk8a}*gyvwTcdfW#R zgm>abkxy-Xc-5fPSE5%9A6_+R)G$kYQ0>F32E~L~;!|uNUNtCMW{F-ke0bHM=$a*Z z)$rj}gQABgyt_k$R}G43Q*P;fc-3GPvUmoK?lV4*YK(_?^s3>*tHxr))e;Hf!>a}r zLL^9dA<#Uet`n=$5w9AK_NpQ1j~>K^w-GKqY2*icRFnt&Bt@6BxRLlAr-8@cwKzb7%&ktc|^;XuDjV2cd54clpMLOmbL;C2wdwe)}C z!~X@-Yw7>OhyM!^=>Nip|BD$7IO&W3iQ26UmlFkKf;>2cgqj(s@1|HFA9Z(c))W&Sp19 z{}(My_Ips<=H}@Cq9s@7mWbKNaoM&syF(xu$y@^q%Zp?sbM$}F(&ElTnwQMc|3%9H zNy{d4^ncM(aF0S-A(^B9i9~Hc5+8UI{yEm>`lO=sIK<$s@|rmr@FeP_vsmCnq`K9VHx%T zh8>Yj76ri#QDkui1$TjwMFABVBZ`WO0!rc%G@776MU7DtP2A%yaSNXs*SJJu{J-zH zRXsg?e!u7W&-2`#d+t5=+_i3P?|Uj%#qVF#^spvDYKc|x`xiAmty3Vai&gRa7d5>^ z+7zqe_b+OCTWgTFC051nU(_@vcR<<}tK#=BYWi3YK-v|n;`c9V21u)S$Ex`Ki<*Jf zACR{vR&@bZcg-N{JxKdvT4#>AS~|DkfKo5BBL*iddlyEWlc2Iufr?>CeZ_399?pt- ze??{FB#9GP(qPlp*Qk@-K!wD|ptnjzV* z5l;$dqo&!p6$+^ZJfenG+|B~2CBK9)Tm&QaG|nkCBSdgggN}kQQiNP;Cy$CzA{0{m z{zc7b5!@8Ne^E20;xSljO!4~{HDg6+N}Y8-ghMLcM9#<*(XBP(D!zpU$B%@ds_^NeORa{VbNw^~4!Zh5$KF`8i)Ohd)TEs$TNZ*A@Y$mFXt5Df(7wq^MD@P&;qWLr;3 ztYW!9>#;)@ELfoF!JtX>$(2x8kAP<@%HWK#IM<=>Vfsunctody*dM0PFoS!Wl%O>a z^>pV#w=1fJZeS^Xq4e+|zr=J@r41kNsh$p1r3ScWC!9$1=K?w#wEw?2>hM>o%RhAF zyJNjNra(G&pwfw0{T512~(K3WEno@@M55x zhtZWtSdTDd{sa_%DUiAq{SLP7zi8x3W7_HuYXvk>|63sZ6?!y^!sri>|29g#iU2g} z=McyJq?)T2W7u}(Pd^aIkHScg4WQ`Q|LEFigyAzi{qv>&Gh~>i>q9(irxvaGF>ZGJ z(?1U6H~Q92hNXqHc0qeIjtSIpUwH(BdJn>2p^Y3DklT|bKkC}C2tx+{ z7RKfT%J_Bwi|^c_yzbVI4;as)s@eYqS|4G^2k59iR}~GmzI5)8O&Li@aLET-Up;ro z)tC@y)To3v&mH+Itja^ZgD9wRjp~02RK4CCi}3dlZim@h5JoX)^pp7c9?~}m!;kPv z{SJeG2?{RVivvSDByGCd_j% z`cqJAzQEJ^2wI09tfe)t@v^@`_Ni^zTJsh!gX``xFJtL}WYO;JUViWpKz3C=jx(+K zYcG9cUjSmg^o!6OtiG4d#g6B7pA-46U*D_jTCnv^;`p4*j4YiTyaDb$S42p@24Cj^9(%;{}{wH2qXvXdurc^Dcx5d?Bo#rW<@AOs3sX zoKH{J4W3U&1q0e3gdtP$XjMN$FJs+-*3lF9;mA9^ANU5sF}p{X_mRQYy(@=5|GjFj zi}fTup3oVs!XFnn6f|w*(YQw6`;Ah=EdwO|B|W%v0FLo9Av}xyJU z%nxmC`mDXuUBwemzY?Vs#=T@P7Z3HTn^vMUxV_SMuCG+(tzY(TPJ5*jij!Wc6-YJpK2L{b#p)uYE4)-^N|$|2ec5v*rOpFg~$;I zqo_9NETnMpjb4e!E+pTIF#2)`6_J4UErn|#@gQJA2t|&g1QE zOz!O4X!4Xsp*aUUCGP+^VYII_yTnp#P`i$uQe3fTdP?kAKT$%*4nB;V*Oi!>-QHAs zfM4Iv5>qSwPg58ETdi4MR&Mi5Nz?sH!scr{4UWJQ?JN7NI3ag>N>kA8w^U^T!_|h5 z_Kq7C=F0MBvN-&>eBF-OFL+0@UW_f#)E~aN5)2H+GJ6=&8zC*;bKdj*m8P`MOg^t%x5L*#CR=AK@KY}fTz#U*X)($62kah?(9kUl(@=JSIG*)ruFm*dPapD>*wbH$ z($Dqu#S&A0ZEvbLq0OIoO6=*UN~xr`&Hpa3kwgzmn)B!&zc~qSHL*E^Md|07)2(D- z&S`I|ZQw_jm^%0>Kz0dScf9(Q8hc*O-0m4_9WB~z*D+ssN*u>$+Sj(TxVhW^QkK~8 zFa3tkt5N-uvoJm>)LiFj(NuP5yD`WY7vBg^iQ_oHQ(9Ur+fs|xyxGeggsJ8;ISiv2 zyr6gr-CmNt)X)BIf9o>tj7uC?Yd zUiu4Y(*eI&o7Lk=cHlz4{S=P7yn`WeNs{;EXjgZ4@{_V(Kp@|Haw_z)~ujFJ9$6i*l0$%WIJ>&~d z>1Y@n9`de(c!wlQ{6BrYiWTaOmnHI!Bc>fz-w|77xw>-Kc~Y5zi|KMb&x`4)a?M_@ z_vAJEG`VoL)n)ngvB#iTTo+K?G+d%P>Jok0GDa;v_R$XSi)~&1OzsJEZq`S@@@LgF zJVOkB)|+-`irp{eZv99x`;}Oo39J8->wfL<`S-xm6Uq{gU0Qmgs?E|9z1l22Sz_s_ zqNS&mrCIBH!qV@>lFyXCpN++zzLkgI?7DNQQOW1Sqs)Ld6yd0&`RTrgq9h{*TX(H! zKI#j#VJ*M_--ALj$o`{4Om#4-Ih?<*^qIr-!&yWdKHn>|)Sr|ReZ3K+=g89PBfs+MmSb( zN4JaC{gCfKI2yydql{*Qt=FuWxd0v9DR)rP*W0|lZdq|0p`cHB?ST&tNcyg_<@h%? ziH*2>c>vV(fHtQL!tp;KIa+*BdGm2~NPM$N=?KZ1+&+96cI zbMpO2IsAOC<&CN+?_rht#91Q*XH)&Q{K~bo#)vjuu4wrz{7b4 zUta2`)$vYUoAvqx2vc=tw0P@!2jcwGxAKYD2{=NhRV)EWZnBCuDnNBP--@-CQ z82HT^q)oT^P|gf)^BgN3gGvvVD4qH!E7%dI`m69H?SKfdg@*JnI-HN2YeT))5)5yrtJahvrN? z-0Utd#kF}qcEWRvlhr;Qbg-nR4%w+vIDy(p9P}1%WrdNzKYc3?7I_T$5Jv0)g!y~| zsV!LRY5I>Iu~EUT!H63%VhFKs>_xwrj!gz3hEJU?{Cf*NJBbi`*;?qFjireY*j=%3 zZU!$`5uEAP!h5%a?uSsj++I`>!hI@2?KIt9v>y?M@Tq}{g`Z>pWhex~i~J7`hVj9{ zMMGn_N=JxI(XB=APr>H^5yEcJS@;H8%usuQz35o1JBHeS==Q>=VTYk(Fud?zIEgZJ zgx&iN!z~L!_DMam=%e4@XhMixiGG-vPKHj)tVO%7$Bi{Y?L?TGf&+!2_Fa47W2^DF z5+Pm}TXa1}fFZU3t=bL+hH$NJoy^ZwGj#41Tlfu^|C_Veftbk0I3lXlpNGYD3z81`;T7!)(0LnvTh!FPA0W%bR6bLHxV! zzZmu}y5Z;5EbbAspmO07RDNAT%6CiHn2W3kMo$ask-{9rk78VTeSzCO?-Ps4?@Q40 z`=Xq@1U$zs=)D&39J@$-*qN}frSeduhYgxDgjOHwV+;*oNJ*;?^($kxW|CGP8fe~4 zEi-r$gh3)WCTaDdCJ}NbY4xGOA{0#0>O(_Ba81(cLqkPqG)b!uHH*+>l2#uYCc;RQ zw0c07SO*5QGtkbtCTaDdajByrEHX)}4~>^rFEL50 z4^0qZnMqoGXkz&Wm_83%7=*(TBk`}rB&|L)C64v4tujfg4^1`Z!rE$+wEEEW_!0=~ z%#9p_qhi-UZIek_edw6%g~-`rl2#u&w(=4P+f35xL&r&TcA2Erhvt}=cWt*xT7BsF zXio@xOw#H@bER$jOl%%n=tSdk82E!0Agw-JM$WMoC9OWxV3(6tA2y~!A#5fZk;_z^ zJo>V{#YJGvz|UJK64xRx;Gaz%eOXnWNj7=(Wi_H_lSf}xE9n6`0WwagxD`dQu<3{* zsN7PBwZ@>={*hXwfVe}7uL+7TGn_4>A%NmbA#896D@gH;g5rCkBrU>kf*y{NY+sTZ z$x4chX%#aYp$v*IrIb*7qoDY{0)_O0+mQu|uPCPdPZh$rW~52+je_D!!%mtM-zX@) z%*$yNr1(Zb@x2n68O6tqf{)t+TVdM&t{?@FgmKVE!N=u1wWO!s4+(r+=3SgkqjVH} zT;}PznxAIm$Xu?}D#*u;f{*(i^h8NMW5|jADX7UHpWibg0)#$yzWM;VP! zmW;^Wlp)47XQ7|4U7D8Dv9;0A9QUv3%f{e!~7>{g9Mll|vU_1_IBm6J7sYdu; zZe#nfZ&r};7zN|80&=SO<+gJm<^3|@3t%8ilC>W1#v4%yMqgSI~Jf4CY^8T0G zC}?T_%WW4xnyXpt7o)Oz!kWc4ZD^A#$asu`@i+o$8O3;vg7Nq`#I*nAHZ}oluu5ox z@yM)@X3@xt2x2&>Rgm!*1>^Brq-7N2F$%_`5Jky&jDqo~4EbMfqZCT}Uv8shr2Q|q zQL@sW0v8}%$1k5Mol zDfZX1WIRT}c;u)w=~*%!qhLHTcWWs7G+P12qqHKFeQ*{;Fdiuu!c~016$Rswt=bmO zlJOV?i%(fel+Ci9Y9faA|Va__7{5vRSn@wh0c{kZdYPhM`WVV%e@304@!p80RwaIL= zs?>f?W}8*5;$*g29aNmmHp|=d$!xP~RXUk%Rv{k2MiMq)S*ul?wwUD{hcuJKo|s+1 zwrVEnJF&RIQ3#pjw8b2QV_=x%w8bjSBhVbTK-yR=5v4V7+5&yC@5GWp3+4>rw8gT{ zziFGCwpdQ|H1o5QAXJKAnB=s@@*+4UIc>2jsWoSE3yF1*_EeiB^TcXID4685#cEZp zCOK`fLIo$F(c~5y>lkI7b4_VnCsEs{S!|<;i#wU6axFkkTdZ^NWT@KYw8eU5IwCu4 za4;-t4)V2EYBo7-u>qN`NHT=eX034MKro4QwpL1$F_n9hsG|6eRE*GI-lGA2gA%csJ@f?in5sX8CoHlD?kS@gx;j~$soSrbyk^B;? zwSvnJYUH$8R|ONuF@)1*UG2<(V3H|dZI-hy)W~VGt_cpNnsC~zEzX5hBaYj;KEf)Y zMoyb`LvSwDgwtl-jO1u(C}^ud|cZ>enOVAyLyza@wp%LkVbCBRFl= zn=#h!sM&c-8c;CFX|vuI!8OTgv)&P*(IltM+Al(rNlu&fcM(RK)|- z_j3P*FwG>V&3eBwgh`r>%hAwVlhAnKv{?rns;I^JNlF%{Nlu&fnOHSUa@wpfDl$lO zOmf<+uSCcxt6xhM1+0T#!%o=v5`77f(`J1TWISv{QL>ZTsO@NQ5Tp+8U`Nq9C{9~| zoHjdJs76Mu;r?_wD8Y1 zIY3UE-61#zNrrIR>{_R19PK2h%`Q|hu5|=q$L=UC!|sj^$nGS9g<+ww06A@T=OEpz zq>e^!zq7z;Tjk)wgr_BPVtpg+@O-`EyP8$z?C*7OJ1UPM-k(W!8 z(`JFwhP9v-^0McE)5dvq)1M4L9yo0**O(@!%>t*5QvWnLZ5B9fl$z3+)sVnx<2E=l zO-`EyP8+51>8Hyefzw9KX=!rWEO6Soq4wEna@s6#+F1MCv~1wuv~f3Il$OH?oHlOS zr=>}8vA}7IV8>XJzMe-VIBoqfYTMG}wOHV^aogOTC$Yr>r;WSgo;2Ao7C3GHfwV6z zyC67i+!8;>-TX#W8_zl%G+EN|N^ePjf(FI&A{er8<5d}IIVR}{@#@4>%x}&lr!C&W zxET9S!Mqv+6t79PLJjxlmqMsbTnk~mNlsh5Ae-+rlbp7A7un%vnB=s@>*VO3jY;NI zmXp&KHgYH#Hn=B-4en(X!^uaM~!qzse9u;IwhTjWjuJ z7C3E`tTZ`o7C3E`oHRLY7C3E`QmBWm4I91jTR~2n1x{Ntgp6YHSYYy0;NCy|(RIiJ zljlZOmnWjo0+T1g5lNHDV}Z#t&cHQjmP{TCOdj6P90+I0v;&XUPvfyu)g zJ1}`F&crgXz~uQA>^fxfSYYz7Mu$uu3rrsA1b@aORSvb0nnNa!1tw1u(lUz4V}Z%@ z5u3`Z5DQEmUSYx)$2j%Rfyu)r_Rcm@hIU{QHjNH*y@PG_eINzTV3F+Fe;%&SL-E`lrIBA9|5g^=iC-;Kid z{TRzcUv;@zjun>}q~i31nHZ`D5>c(yuO+AjNc@S{2e}A4GuLa_a?5oJb+Lqr~HSk&HC&D1n8G$d?l3t`Q(O$;+jC z-iExzN~%utZc|^Pq(b`c;gHT$QWy2y;8xTu!yW+09`Sp9`9!Tt?;D`LOz%h?yh|BV z$KHbJ*b~X`g>|-bZnTReu907)Z=IbXjd7-^)NpRT#{=na5W3Dk;XF-KQ2tt}zV z8IRlp;oy^Lyt|53;xRMIyo=Bsqzc?!1~dbq`&TH`h)6FAA3``9k=YbpgRlmXRTQ3q za5o}%B4`b)X}8yFy%@uKlt2B`aCjKnB(=VZ0mBp~L28|b$P@~! z^#VlBqrh5sAaW~$*5fs=#)mq=VF})Dw9f0PK;W9(1TI3AGK-eh>n{t@`DfJh=)Xor z@84b{DK#SS1|Qiycrn{3uMGbhR;RqxCnD!LCEx(yEp4y$8<4itGj>NqVEcB!fG#ymnmz!DBe=9 zRnbP?(dn0Xf*d`Udcr+8`t@~67%+V)gg=C_g>grE2)cf9ysNBpQ}wN@tZy?c>$~fG_RS2-x^DauJAocmWg0i!BSMb7Zsf(O zUhYj%;7$lJPq?$I2nimCjaxX*v2cwDwa1FkQ-s@@V|!)N=ZTP!oWN8Ox{45;C_-Nf zUGciv30Jb8SO|Q4H1OiJ$o@105;4~DAUTvj4P}(T>H9R)O$nU7&q9t8*u~F6ohkHw z1RJCNc}Ncb-qOX-LtWTKRKb4(`;CRdgCSl29jm~*$_GRJB|4eW2@fH)E2ejENG4qk z%-)bGt>=R({UMdp6%+q(DDyb=(UC_&Id-I}@h4na>5r)fG_L6gX2-5>RNy z@o-64Vke%D#$Bq8hGCArI!IRp9eFUU^=<+=m}}Lc(2--gRvif)Ih1R?17Wxv28hF(=SE4WA-L@{16>qhib%Ymq-khfjWg6z0@(6xgP@#Wu~AHnANi zsCJAEvmJe91owGwzi#q&P<`t~*y0Y6A?@3l#@@vS_zc20d5hX#%xXhZ`hdV0sFq_p zB+S^M^6q-5yfe`-wu6GZkSb$4xMXYxmyGS;lCd4^jqP|D+vd;|6b`m-TRDO4+3&Ry zm-Jj6;{y3=?D4lF=f#SE_B=xO8zKCF$iFH40z&6RKTlRiPp!;tnOO!@}G`-r?tfi7;MNu1gc zVDxFs_?>zeL}5H5MdIpn^&a* z@HY+NGzfPhavO#7ApC&Hw+J#&evPJ9z{=9E4vgvG4OG8$K7a=-Gj)l5hk*{4AdKtUPI8d!#EX9LDi>FF@{TU`O`lMJml9F&IGg|g4EUr7HT)K@Rvzzfp^~2Z%;-|h{H{y?I^(CjHq{QP zRx$rSD&JfR4<}ys#UXxuCY2=3WiQS_+ukH<9%kbY4d2{#OVcD#7qTm`Jrr|AUm{ARU1)=^F?y zAo2`_AU5UB`2c*W0H^FgnA8D3mqJ>NFsVC)ClGmv!XOCUt8mSPFlj7=7DSd&m=3|I z4roz?$#Wn~J{3Qc&cn|@hDW--6B?2y$sx6nJSDtO;m3f?V45M5KWNFYRU_GLr%??Jh=S zC4x4c7nFbX#x|fevZk7FSZcWo3cq9tUO*l|< zj=|3l$omRm(gFy_cLX{OVe**}4!;OL`f-!i6ze_&Sw}_3z9Y=OqvFvtPA#X3dccs z5W;;3lTU##`E2~mY{5?pOJ0mfx-Ot45hibB{tf)ug`er{>bl}_^Bmjphfq*X97CZ# z7(u!@ACY+!*v%^uxq0D-nwS4Z~u{?rHZ~k2s#cP`Xzn>`bKTEW? z2d+S_svHeF@>!z5HI;K1Cwe7tZI#4{UJ0nr67f?+HzMEv6cOXbf=zrn5zH9>hGh1? z4ePoxCcQITalswT$6x@@ePg&P4%X)SLvYOVaTX31lDOm566T=uAmAMjgrpXwQB%hQ zEVc?S-^NZjT+6MjP9rI{1D8>y-#!Wv_7Fa#0>41*?Z9tYU+CHVsz9WteJv7fepMjS zOXA)qI=l~dM4O zJb@qKxbj)6mN=FoW12%`gaKp(rKBJu3?L)0OKT}2BMcxTL@`BV1b`*V`FV=S2m{Cn z8g^1dMi@os=MIq(29OaiATzCy5eASEi)oa|2m_wVDQGDoBMcxTIHD~nA|nhSBbaw_ zhR6s5$Oz^E86l&-5;-#JD>aA62m{E7dZbC_jfiANLmS8lagV|`rlMV@IYdSnKt?=> zw1}|}zv7JGuZYONXlaFvFo29W6g7*hN(0CU0&%nqkr4)v5$vxP$`Bc002x8i2xW+j zFo2AZ(FkRTj4*(VpqL9~h>S3RjG$NuWr&P0fQ+CBWQ0RxgaKp(o03+@2m{E7i`fVw zBMkV0R*fJs!hkPmwhxD%Lu7;jWW)@}NkK*!j|GwsK&m7%!hkPm3d(1rQQ`}l2Al(1 zP#VaHjVvw52m{E7WC;31Mi{;?=oFC=hVKhH#dp?*?+ZFbWQ0-l1?>Vj?4nKI7j%ku;)d@FI>l#IhVKhHMP!8G`+`5 zdn&{C1)bszrvYRHvqD;wMly(s;h^Ra8DRh!@j4ADWP|}^#Ht7k5gB3lzMxY?Mi{;? z=oFC=hVKhHMP!8G`+`mp8DaRopi@Lf7``v)6z_cu-xqX>$Or?zpm_*Yr-+O&d|%Kh zA|vo29Ld|3Au_@MGJ*{&=$YxGAr^f>XNZh2ioT#Tufv>C^aY(EGQueOg3b^bVHABq zXNZh2fQ;a%H0c>4BaEUi=nRn&29ObK;kHnQ$Or?-2#SSpp2!FT$OyJ-TR1~xgi-Vb zogp&905XC{I*<_og^X}`oEtz!bVh{{V?Bx{#TT>zU(iQjYf8}KZI@1HPasHKynb+JG-; zN=+&Hf;Qj_n$pM=eL)-W1x;yuioT!?_=2W1t&+Z=4fuklG+T4%3)+A$=&k5O6pGps zG+$O$xmG2ROtX*iEsj8eWSaeifUY2!=0KAt69vgM2Z^8{nP!s+3X*9K7C}KW%^@Nv zNTxYd1O>@7n?+ENOmmnB3X*A#6hT2U%~2vKNTxYj1O>@7$7URCk_wV(j!R`AC`hI` zURtdnndSr$6eQD}Sk4o%f@GTBmyQIIX-@XXIBAZ8WSVo#%_yTFndb4)JZ3^cGR?WtHU-HvPc+8E zfcK@NXjvs^rkapUv%!w3FCCRb0e-`fA?G8uOXiNLK?pHIG9yM`MhVG`7{d@1-Pyjb z2gxj7Z=Zyuh)lLXGRrqeia;{UFH>kwIuz-km2Jd7fn-`$c_s-Y6Yv}y zYIu{2lZI8R(uw|wDZkb=qnSzcPpo@~cckjSuqe?#w(@Ij6a8Z=zt%R=t zd*+G$v6WwI`#0EA?Lxd~lpT@9sn9=h%UOdofk4DPkJf_ziF+Qc1^p9u3?AnS{S&V+ zdGY1e5?~WgL}|_UXdO=m`@vk5pnvd^vw$aXg8qr;L{FiA;*}yO^iMo5fCg1tp)ZF_dHq)`X^qiY8CWPyihS0^Q_Q6@s3f}sn9?1PNKF?lYfm!_l{rjXdUky z+=R9Y`X}BiGalIygM$&J<{V$!L;u7FWTqggO3**{3TG_@LI2q8JX+f=!BeOv=pTEP zb0^jKR@rXn(b`@UY^9o@f9y+~j#!QA<-6z6T3{@;=h0fwKlb|SEjS(&`p4c7XAy<| zu`e^bLQv=*`*IN!`p3RP1bVdQu2$mF+TIx4!v+ZY$KK@3fPn(v#M|vWTH99z2P3CS z&_DLo&V>*J{bRTDXl-8;oJ%!9|JYj`e(6ZiKXyBh*7gm-OQ|O4ANwXJ8-p6rKlaUO z#ufU<-X@J!=pXwQ5fu8zzEuQ;{;{`jKd~_Pw&&Lj|IL?B94xZTbSJwex6g-yiG^166|lvG+Rs8jzrW zY|o>$pnq)7qqU%a>_>%TqR>CK=h0fwKlT$T?tPv|Yx~LIa+)4G7fJT>P7GI2av0bz z$oa`zdY(sXwZPhWw6jKa}_M0)*uh2jCThai9{;}T{L7{)_cSKO=AA7$D3jJgMT?B>xvEMCcV-)(welJ&t zyDx?QvEQ$3fKc>kT_xxr`+!3gwKzSG)`I@AKNG78{bPSoF$`J?{bPS6f&_9mj{0owx zf1C=NMHKqSNoLtvqd@eJldhzeQ#%L)@Aw|AYl;4GDq}n%b9yb&KTc(aQbDgJ`p3z~ zLJs%TTB3iPDkTMKiT-h_m4w?WjurJ}Ppj3Uw2*3(#iO;;A$SVZss#Px)H*YeFX$hq zP{FuX0Q$%2C?{8i{&CtoTGN<#w01fN3y3EL{bK|D^UDfU^)c3_4fM}oUr_2Y zbG}FG6wyC6&_CP;N2ZAWv4Q@fG(JW2kL`Q3P7(cM1O3Bq@yt#U{bK|D!`kP{Ckbqz zf4G}3k}nU~K>u*lJ}pJ`j}7!sPuN_NBKpS$`sZj2#I_XCKQ_=m+%|Vt68&QX{lndH zPm1Ut8|a_TIR5sDUw<3uA8v`C71xWPe=0f{yHY4G=%0$3?uikDdznM@j}7$C0#3f5e{7(CSX+wd9~6?{LwJyGCrzd*Sr=$}Mq zXEc)HACJWR1O3CR$2ieHNuYly2>K`0MLjwr`X{BngKHE0lTzQowL39geFrznqi&C1 zi|6*YqCUt)*qP~q{;6oFeHn3lu9PW6|5P;g`-h}ZM;;dGY5yr2ucQ_Fr($S4hUAFx zPiV!7{;@r`zj2~}Y|rg)oai4L=pWvzb|I@#|1m6_(a%#|XiR$q&kOjcZyj9;sEv5O z`!U>=LOC9Bl_As*$74uci$wW2DA>AhR@Y1~J{yZ9Ir2w9V+=yq6K6_dfr){x0qws` z+<2lS_H37U@lr_~!o=~=9D?AUcs97bfk<>bYDOiC>yM>YATsbMNw{p5dlF7FNEmUl zB* zkQ>nUqb>Ef(r_r!hlzM4JIh_Lcrg>2Rl=@W-Nd^;b$SnD}u4z^x~e@DTA z!7Q!eU!H+?VBkw-pse-4k&(^^%F*(`O4P9^s~Sj^bWZ9xSmh~C)nm*epqzK!1BBiC zUY?8(CvuPXnu^Wsax%;SvLjsqSXjD%CwuazZ@mJ!y?LsIige{3)OH6#S3aTE9}P*X zgFWF13W@as1$s2(uz#V}JAYc5NlLxa*$d-WG39Y(=SLX+H$vBG?9k(?#=*S;+5m)ZC!Gw) z+8;tu_UAk#EMcO!34S6Z+f=YOkPb+!Z=8tYe+)%`0nJeBKGeHzt)x_WDUYn^I`%xI zJQ*s#7M*&a5d(ryUvUN!pK2?(qW(|Z@tz9R`vq5a!;brOD76Eo=k&oVP=v0>Zi3RE zR3F|#!plrNdnpqCtP+px8_-4~bUj%mrrG~P`vtTS2;G3}c{Y^!6)Zji@%IP=rm}Uf zhV>=hyblQD!d4#<)}O3U(>tJweLOa-Uz1P?1E*m@jew1=0&>fT21-Hj@u-E+4Q|5;L(!t7YJ9^Af zZ5oBj^bS%P-ld8~-%%zk%Hq-*a-K5xugapb)^NF(&W4Rs>1_?0w!MABZt#@Zu+tA# zZfn?HPmSk*tBY!ntl(x6)e7t;cj%`}nslevB&N^u2A@rOtyui0<Mbu*ZvPkF0DPt8nW&X;>#ulMQ>@Z zdCDBIz6UF}HSB<=#?^JaQp2qM@70Ap3FqUIwvnoZ2FMiGC)E;V!*(28*OIH+H*A2X z%!d8>VCA-kP50E;u{qKfhYt$N!^OQMgPNA(~SC=$wm`ZP3Hj5@A1%LkWxV@xd zCn2ld@U}JVk&=eBDz%>-G3?Md4V5(Pmqlf*A>?gE9I;mpuIss9wI8vhr_2%i@nGe) zhV}N;IAYzgcX4)>;ul*_yNv=T3a!^*Pnjd86mdxQ_I9KxNSvcAn8CT;p@>oTj^v|} zeXhz5a@*^*&NIdg7?VU?N)V7BR|?$U)ulu&l5q=$U%sRqv=?{O`UW}G>aRnoNzSYr zy7C%9In};gT?GtzZ6P%Ks@oGE@D2<7)3=_1ffkrHgQG9n?)F>|(+)7U`=Jb|Ycgd8lX5P?fL; z2`8Pvgt01N9}~_#UDKN^mGBf2PCFR@nWnT#cn%4R&ZS0;N_h2=l|7FxS4ZIj%tFH% zp1=jxr?a=1F$l68avcjCIH)c6)VQ=}AFS54w03%GPe5&jQsW517}xfaXf+?Cb>UE7YjTO!i3e$IAL45*D$!bZkk;kiCAQYErbO%RgS4I*L__~VXpwNmqUl=CK)v=8eOcW|Lr`9C|=AO8#74Y_ zTNj4hW^1_bMJx#~V#80wX^SC~*5kvw;68#O`CQN%;d}Lp)WwGHx*zZmgv=GXt!?X% zbBXrU2)rRsFvZw51ykJZ-I8A))Z~x&J@LL3Z0~)`^QWbpaCvUF;CXA+Q` zuD~E?>qv;?;*EUS&Ry zxE6T#J_t3Lzd^|{qD=wZq9YS)BRa&sg&O7`yF(aiFGn1ZItMPL=1?cQ0Li1GvvcG&-Tw=tN~y6`14~C`6|Q2&Yo5m|j}oaIZjrJVJ>c zA=Me?`@e=TLuSb_H!p!OQ-mDrJ|XyDn(Eq&M@qGa^Wrr$2rGB!!Yl=4#J`+>vCA_X@Rp@ z;J>Sod`6tJshM}qg|JvPnmWq@w^3&)W+r-$XY}?Ygmb-){q9l-=OuY)z^BrZXuq(7 z1sUJSu^teS`16?lXmiA5n>&p{d~Adhm^l8dWm|fD(llk~&9|c#0kU5HN>Mnv| zuGs+rzz=9y=0&GLxX@%*;X~s`EZyiuVOoziV0~QbS2I#8I~Va7p}XaP?lL2`Wi$jp zcPT^+4ttW&T?^3N2PBEF1X8czC(X*z)JQ)Evl7#iGaI1{=q}SU0^PL$-R&91MoZ|f z1?aBKWtPxg3(#E-wUH%s*8+5xhMg>-yB46k%*$y>LU%1dcRxgC=2k2#$C?&Mw$P^V z#HR;j{4_-(KU_(n9A4;JM<~I_ibI(hO0u-%j-z05W*{;IMk*B=*a8~(71|^k*a8}u zf|ey3*a8~(0|+fyqJaSml)Q`cL<3tu12d0kVE+FQrDPUY;v9g(!~z=l3Zzw@dIX4D zmbEO9JPB($E8O_A1LdlgxyZE636wLdCHpLPC+j?ww=XZe`SVrYNIgHl4w)Bts(St~ zOs{pJ68Gu(r*}ZSC{Vr(hO|I_&)pE0d*c(y@5kD;R;b)iB!AUZTW8 zG=CrN=B-PW*aa2Y5Z5Wujpjc_)2;PN>=Dhka5^?9u`!x|7xQmjro{fy{2px5Kq6af zQK%`JCm7SZA`smSagSBi8E;#xjR85HLwfD2R@L-%NV(EasX0x; zwfZU5NV)fTq+I2vR3YVd9QoES{FFRW-k6J&tNoNpqzvGQZT3@gND*Hd*Z3(}q};d) zI@kIs8Klg-8Yx@+l=Q1swfNMy-cLzEM?7iV;HM;!atL-4Ypa)%)LymJYUDDI)i^@Q z9HtID9}J*Joeltf3Samu4LwRD=Enw9t z=0bU5)h%GvDHcL`V%05R)hPn2o;;PuGO+4wN~OZ8TfnMc!bT9QZUL*V8bPeO1*|&T zr=cXV>K3r-M?uaAR^0+t{b5KsV%05R)hXbksa&DJspPG zRnJAC&o==UuXaNUNvygBta=@6W(2El0jqv5 zq#Uv87O?6Rv@Ege7O?7%L7EE}boj@pEEZtZ*`^oTQwEb=ZRIffK{jH>Umz_ zSiq`N?4jq0Rkwgur`V|HiB-3NRj1fr&l9U|0jthYY0~q=s$0OSGk0q!PprBHth%%! zlqXi*0#==3AzVwWx&^E{TeU5mCsy48R-I*cgw^&4tU8Z+ywUQ!_$BXR>wr~vQDMZ` zh@u(6s$0OS&&CFuC05-6R-Gq$Eh}peSanK9b{o&mz^YSnvc#%ez^YTqWrR6dN0id^1$G??6kwVV~_W{(9^Q_u%3OHX{(AA+(ogz}%A z1nG&O#q)0{l&3R3_#KnXv7!7f6t|vHqd3;c@7x9PS*1MQ$kT7S^%s@9&d9&Uo$jwn zyxhni&1-@xCn257w>wAj}JMxO2ft^Wz8wox?ma=Gzo(Ao_V=jZN&ko#3oE)#MY zb#9=h9E3k<(J2@rs)}5$^8Z+rJ+0(MPW^Ym$b763<(xUz#~?0Dm;kYUa_@s{*u}W8 z9BA@%qnH4(K_Vz7K&(jw#RP~A7C|uqVnakwOn}%>5fl?3)+~Zz0>p-ipqK!$ks>H2 zKx~uOjdzRfLMdwQ859|fI`Gz zhFqw!T{4kOC9tidVghVtR51azAu77R_jQx%tp6v->Vn^T87JrXdixcmL}czQ`f84E zkQD2D=3b`azd92eL|$&2b7M;7L{E_fQk5bol0Ygif+7i|s-#xsA~e-O z+M`^ArfNhe2uUDSt7;XJK&nu|16`2>QXQkLQ;`HxokVS)x-h&O>E6*VE<#hCgEo>Z zx(H46%KQ=Wh{3^#Qu9p&(O#)pbP<{wka-44%0*~mg%iX@ypRMEE2YU8-Mu*JBwB(8 zs8)^hdML5V=}t91>`$!r)#xHLu_hQtj&c#2xWu`cYP_RMT&mOr?VeaCf^rd>SYLf7 z=1q|V5*y+yqDTUX%gmh+6iFa)xd@6Rkhnqwk_31zK_ z0lSHIEj5t_I^co(e+Ng%P;nV5z(x(H1?Bx-n~bv1-XL{Kh56OW3Z zNCJt+MNlq66Hla`#|U^XLK9C0f1v51bCHyI-nopXdA3ZvAQuMS(tFXfCJXE(WlgyV zO}rdD5@nQ&(8S-I!!j^Hl0f2BQPYGZka$f5PQkuXXWhX=yfCsq$^`QB6E5jNdoE045flzN0LA~A6tcDu3kryK)Omv zfjW`|($z}B%`V4^da_G_BtQ#SwaMZlG~FS1fXxw-K)Tj>0r^4_NEa#?*Xr?1Dcw<8 zrbq(mP9j(s78(;5q3O=Sn-I?kNgx4|Kv&%GWIx8*On@Xn7gAc5B!L7-0*^s5vLp#4 zKoa1=?_^05NPr~p6!LOek^~YU32?a=a^Url0X6^fjb~A$&w_H07>9g48*o9AA2M~65zJEJIBWv z36KQ1JMPIEJCO&Hz%4j{_htEDBLR{Cw?yAXXeR4$&}2zxN?n9zN?n9zsxs74B!NtI z;x_F5iX@QfU`*(O!4r}|rY1QMx5tVkkf}{HLr^4vOhGnZTb3k&1V{oDv@A&i36KOh;6|1t zfdohbl&maC0tt`=C^=b@1QH+#P)ea5wl-qCgqo8#@$?Cjz~3Qc=C6i!VwCP&00p&3 zM(c^eD5d2NIbwpA7^A0H*3gpwgXfuvv3hVS#LPTg|2T$HL1cCh5+%EGK8;$*PqaAG;-^eN(w0}vx`kRybhU1>A?`nWyS<)3%*^Bf%S2oIhkI6`!tOuWhX7a@C5Kh%=T5zt-Y{s}di8I0QsP-#g zs>{mM)B&+fm!%0Kui-)|akd_eK{M0&K5To5^K@rdvE2E7-DUL zin_}#utCpoJi5!2UZ&?czumJukS^CN*<&rq1|_c0gZD#<7&|L)&#&k*3D9Nsp^;hA zWfGvvj7A+=j&zv>=rVkZn9CArlmK0Z&pWE~q{}2gm*Hc>1K~XBG6~RS{s1v&=Si1I zfG)$Q`=HAtNta20E^`zriIFao09}SP#z>b*fG)#BR$fbdi&Q!3jMQSJ%OpUT`3KS} z6WhjR9JYRw&K$oFt z=y}p*5}?aawDdgbG6~RSC^~pSa2Q0;Whka}c_NemU4~5{U1l(ne~GxX7|(!7mq~yw z6GB>ybeRO`GF0%K%TVwxA1cQO z`M%qYkA)F;(23}qTZMSQJ?gip!QGlc|J*MMctPye496V1_6>O3>z<28gNA$R9XLC? z{d!`Y-CocycUNF}TkgtZP@DT1er#@&XLT6g8? zIK8-0Sm@~PL0z5PZr6avpxNE6 zYr@gtI%r!D_fW)px|3nQm)jG)?(JTCF3#`nO(@mJbx})S_aDRH%+y^3&HnCh(ZT`l zN2qI{o4gH}I(GWIJc}9JQTXsu+Z$Th2>%H3bb~(yA1IW z?k8h#UUc`PFQeRFp~lg!i#CsOzuArNxw*?Q&WE^vM(#NGMdTjpPR0n2ch5vE6Wr!a z@Lc8YLr*8UEy$hhZinV!ZskmT`D zc((%cHP?L?y*RUj zJ;j}em2j&29%?+zoeT@7yAPokXSknW_7}TZlv?5*3Y|0EPmz9>`+61l2JR5_Zkc-w zM)hp>NR&Fq-Hvvi>n?_!^W1mQ$MapfQNO@_0kvP~evi4h$h{jW%iSN=08ZzAh!I=q zUWT$Q?v1c^vHK!&SGkX199Fw`W1XyVd!wCe-I^OT?Go39%}d>dX!APvYK-1`w*$s@ zgZmt2)r3s&KulGn4_)kC%ZN6Mt2k}+~n3FE@OKK=1ws*6wzXU8rflcFQp`yWMZluY24j7|DCxz0mxP+YhsUpF0P$ zbH6(n_5RlFh~E9qT>$+(?kv>)fcw%;cujL}f&TB^ju?Tx?mmptL+&2*=wY`vTKK4%J$J~#R^0@mn=J5~i52wQcpxYH={zvzmjHW&5W{%agkKI8SnNQpx z;{SAqBllCc6`G&9?_y>@cNakO3-_0>^QAioE&0kl9c}oRI~Q&E+MR=5eB-V{kG^%s zVSK*RtSENLd>8v2Y={J0Nd6p!lS?bn_c@l1V?*Qq_2 zZvE$K>}w6R=O7+2<}-yn!c1d7VizL@b>v0ft%#^s`tx8?v*<-UGc1cA{`#w;>h-)?Si(0wB81F~&VgWw zV3@Pe>#CRtmKJz93CRw=fl9kfzDd)bid7|?XX|0E(_zR-b>K@%t&XoDs2bwAcXsuO8^tnQX8Ak|yDkT)&XbKbJk;03~Z7Silk-8nY$TTX3`Y(lZRztT#BRS)UBSlt~sFIV-jMnY!if@cdiXh<<}|g_rK3B}&*n_4Y_CJ}{hVJEa~Ok3zTb%$EB$<~1AnA$ zM!Yjy7BTMg^Evx%LnYlp_9I9QB*$Y~n*!Z%_(Z=(0z)TczK#FZKh`00NcJPdjmT;o z1y#+?wcT)VFW?b1tYRzTnz`hc5Qd9jm``5}VT1^dIp`<|BSpxWJ9$)$5}{!B8Udr907#9@d2#zd4eV>p3y7%1>A&AfjYgh3*NV7(I*dQq!)-5I!04sn_~ z-4wY1Del8qUs~hon|OJ#>mD46T7^+lpWKSPc;-&@(k;g}jJGvQ5$~3I5pintN|ukrRp~hs^a-z~$%XZ8w zYAi^8PL0e|q%Kk#|KRAIT+}!%ndkux_)yns&QKc5F)uZXiyF(4{i$*5TBM$%G;Zej zo?FzoFnJ_32D2T@mBzK0)tVJb!?+7w-&9j;yZ|k847EC?zTlji8oS>`1g8&|MxhTE zf!l`@-Pnhd+0=&U9UUWA<1?IjIeuKbK!PTDD@3!Bfp0ujx^J-NOj}!jsTi-9%lMBcbb8R5J6%^~q2U31L;h(Li zu~^SyOttR~HXH3%(CtQup*LVB#!5hQz#&)`Tqt^Vmmpci$_o-Ync<*4}gfvuZe#6t6 z4Xsy-jpEwkoYT$(Z#B(_MgX&iJTv%AlW&LX4-MjsY0b+#U3M`qy5#C*_P&8 zOO!^mDK-DCBz;y}`oQ-}3S;S;!F@M&l5xO^_ya`NKv%*4%CvquwpIQ2YJKj{tMxg- z)7H0s0#$XqJ*>;|Hm@n59gm=nw|#o?c>B&PTb%TRj<*`D41K$*XPc*s-BbSbt#kYM z_1vab_${d8I)tWwFGsmudYro%zW304msj>IjLc+|;<1ebdf+}UeFf5yruW4$-r5mm zuTXW)_3{T6>wLUe=O)!RXE44ugrMrYN|${Wi)qEcGrhu>dB!o-Gt@RR7UwGcd{xCr zPb*ifVl-MYT(+x=RJTU_0?Xgm3u+i>y+x0WWMmZmGfzbI;}Aygh9If;AaX5IHY1Gs zJ%qi8Jcz)*exGDu;S^PU!K=O?SxDcy1J$e9J6%=(ca(bvLG^I4p8Nv3+%0=~Wv^8o zlqHH4jT*+>21_$k4bSm89sb7se|&ujm=wkNe)n8k)6?72J+m`Ay*ta!a=D9$i(CuK zvD^#FrGOv`izg^5L=+Dqh(_@Y#tS1VDn!)ik9frx4?GeziHR|4JfguPiHXLTXreJD z{@?ej>SZzUzt2;%^;Ug#S63hPeQ(JxOK?#kUBaQd1T`vVCE)b@SZH^zlfN@*_nsen z*2(95k4}TJ@On)v4#psRe zPC=RtNj`E#mOF9D4Z&Nc{th>^ShdZs&GF7-FjeVFl|<0VmrlCUGTWaPSqYW4aD??M>YK=$a07r~L%~=^7@v*76zn_-cKI$`~7^?;~GQ zsn0g|y@`#wskeij^nckXY2zeghm=%ZkWS6SkFg6%;W-|Db@ie6m#7-KUSfJ!Fh!k@m@YBAN+lJGR8NdwsFMYv$B zSo%i18$gTafZOp;rQcu+{dC`*_*Y54avJ`1q~GGd_0IHfBAK)O2BdQOU4=wW)l#If zGJK#u5qmQ}1(sp^}kPc^NEs_Lp(`)XPZRn@1T zgI`+>RrM+^hmfaKTkKJIva}jfqdaD6Wob2}+Py2`PgtH0y7dn!L#rV*-eHbbmR3V* zf`CN!Z(RTr1D30pU}_9UB$!O6^~`j-&QvEjFiKESvtlc{6U^zE;9!%0RzvC#DNbc+ zHKgX|pF}sZy*ao#y>oL5l`V{bE;a}+`sxjL7#b^sjVp9u+-rPYvH=CCZE#jc1|;fl@vX9I#y z%5t7q+3$7%oUAKNnbom2%Ft>^on|tn)sR|a8b+%jb-J9R>016uH6(d65>#Ktz8;nm zKdpw;=oC#Xs(X)ze^QDA7|?1+9hBlgRnuxn%};R*s%bT(mh1M?YDle2v1Qe?8d7JZ zSZVCl;^%Jo@+0A?x4iYLZ~EV?Dy@c8|Fj-*S`DdY0f{WFhSUH7Dod*&)hfWv(rQSZ zm1a|o)sR}7WbV1S$UVezA;ol9sWkjGpKZj&1FIoM)NGyr0IMMa97_fH0U4YRG}r5KWCjS`9g{8e)_c(rO6CZ9cDH z71CY6x8;B09h8WjjmuWTRz-mZD?J})~99Rtz?y}3Y z8ggJYl)`m`MUz%T4y=Zz0$Hgtt%e*}4KX&6D${Dnfz=RW6Hb{^+F5UU%qdd~#evlj zV_m0At04zgLxjFlrqz%Gt0BS~r%bCM2UbIbC8tcQAqQ4Ngk`5pt04zgLxdHlOsgRW zRzrk+QIH1+t0BT>r%bCM2UbIb1D!Ihh8$Q85w<#IS`9g{8X_F(lpm-Dgw;?j616#H zS`9g{8rlc&0k?rxLk_HlIFZC^sA0}VgurS@hrnv6fmTCUMN9~+h8k!!d+iRahI9z5h8no7?!anDhrnv6fmTBftcD~+ ztcGMZa-d~4j?=S~-PAY|y#cGC9B*vwC=r;Y7oiamuELQOoQAL(`Ua+9VG=srfz{9) z2qe{^_~r37*0J!&N`Oz(7@5|D1FNAo5U3|OtcGMJmT5KQz-ovWxRof=YRG}r5TQzx zuVPQZYDg~sMEMaySPc=D66Gt{N3a?qtR%{`8ggJYLI|?HN+}dA+3fSSPd~M0Rv z)GCD4YpWp#RzsnSq_i4xU^S#OqScTCt0AI9NUI?SRzpN8q}7lEt05vcJp3{sSPc>R zA+3fSSPc=?gtQuRU^PTk3TZXuz-ov~Z#n#g>0mX)xGf>Ah8$Q8F>Y&_RznV~hFGzR zU8dEL1FIp5_O;8j8ggJYMA&SXUyT96YKU;4U8dEL1FIpzR=Z5AAqQ4NghTBzt%e*} z4Y60+>@ux}99Ru8c1xm6t04zgLsE-GnN~v%tcD0H$tGG2Ij|aHt+po1v>I|?HN>>r zl6rZB)ex`x9o<$#1zHU`uo`+01twJmNlRiiI|?HAK`F(rU~_homms`2r7drJwI=MZ^E!n5wl z0K?O~E#WvCjEFlzfS+A{2|$~GQg+zQ03!udvh9ljMhR%nu0TE9b^)!~*JlHa7SNV` zt~bCK0Ug98cK$s8lZyMHo?Y38wg61283M2@JD*~m zQtOr3Cm1tL!0POH%rSR*W-FR-dKN#hcF%R--}>xgrkR;N1zhi` zcKi7N#=0o`i}?UuQny{%dgSRIsg6Mg#=5AwD&$!8rFD_Juh(x4x;d$uA&^vzkZHks z$$-n+0ML)tMM*V_URoC=#aKvWPmN^r`sv_2VEtl{p>>gWA&zBW0*-x#)4 z(7MPU&_I)!h?U3d-6~>!P4R`)OSinCxj?6g28^S{DVC>_W+nb5*R1 za!#J_Yt7oaDDV0YAwJ6`C+`I-AZ2BFz2>tDMOcaKzIfru`-%&(%I0vbqdMUM( z<${uLkouIfTu$=61XQwIJ@SpZ)GXJId?nz5(3<7Sk#BNXW>;1!*IUGP=?BPV2sf*Q zSQq8{#Ggi8Gqf(s4=S!lbW*W1a+JI}l3r(JXkC;aRy-d;edGv|;B5b4fb7w@7X<61 z%IIBM7X|C%H&d*Pj!Fa@{C6lub<*J6NQ~A+!Flm#C?-dc1n2t;^AO{kUvPmI%dR*J zV55LUcEce67na8+I0ozR*b!WmWfDL8jllpHrX$4dZPm zDcOm2QE*xOLsmeni-Jx5CCFd^HT{FVtc!wg#aAJwk60H4SNit=WT~?qTqW^i zf~(`3DJIrM!Djzeit*7u_;!l32x7D@3a*PkN-;TtB)Gw!g`UsSx+u7@K))r!9>63K zVM@2{CIP-~+sy(>x^1@zsOWCnCQZY_%5K{(U?AE%54k24U+TrWDELnN_pE?e7X>^0 z+gJfk{os3g>JOlGQE<1+_QU{M7X|m2sm6;UxL0yE)f=e)XLV%kkt7Y(`n&;31#=0nYDt;fcZtp@+@JoL( zv*u+GJTDIrX6pUQbxvsR`#FF?G*uu z?2Apj>l zpe_3f7o;}@bYySE`VzdAVP!hA_fYKZ(h&f&v$tIU@J@IXK(}>KpETF0;9Z|0dU6`; zqU>w9;Df(Nt}5FPH|^lB!Ksk)vpdk>;3EMgo$KGFhzjO`2Z^MbgSLouQSiGs{YkYP z;pP)Z(U0S+m_j>!O-^ zjbbgdE~+VOgqLFW73E}2YqWCA;h;TOtcz+I;x|LAk60JgH2RkyK0D~!$fpv}Zw#OYqClQk!@E(&Q~6u`QO=~_d6*9l-< zL^L#{bx{E8BBHjC)+KbW02>{kd^}htcz%JwKe4DkpR|3TsC*s z@v}z&>msg>4}`Q!2w+{b2p90KP*y=$7ja4a5YLpjM|BlyeRi5m>4LE?%D#^Z6^wO} zOx!|!ky3t^3XO$wt_`bLDLW7k1ce6mCtOyQ?3L)CLa+RX5bMa^bpb$Q?jHc1+0Isg ziY&gfvj^hpEcBHXZf^E0yy+DB$<@68gUq4qN9&@bT7#5H#WgXhxRw=YT@=8&h^A#F zu`UW=UBuEtS{DVdE+Vi(S{DVdE@FqPkk&;3tc!@;FvHs&tc!^Jkk&;3tc!?hP!4OG zRF~nmKmrkm)^ayhi>!JYG zMYLtna}w4?J#v9{QIA|;U1V~hbx{E8BHAdG)?%Wy1+XqU6-bu{>mo{8dS=7Ah%*}< zNb8~i)ZE(%~>bYwZIG^~qsI=NI~T_ov3s@Ddv zF5;&(zmC>L0j!INN+GR_0$3MOvJ%p|D1dblQD3V->!M)29sdI5?JL$r0j!Ix27K+1 z3m(=*?6HB;R#+FY8wN_*urA`b4wP#j)mp9KfwD%xx`=aVAgzl6SQkCW z45ZPpE@FQSlw}6iMI7IOv@Qx@UBnh!1y(44b#P1^IGOddOSQqj0;=9Q*t&0L!7tIGOdF9Ot z5Y|Q91%P!?VHI!9urA7@kQ!PS1zYVrORS-FQ2^^AcA#wkd=H^=)9J8kXk8S*y67f^ z)obgb0M@xR50$3LjChRgdO9EII z5h}Y(>!JYGMTD+hrgc#O>mouQ8woQ2VO>O6W6PJL0MiwH6f zK&h|Zf~69D=>Yu_MkV^v2<@j5eW_h{B=0|;MWq-e`a=IWm*YVU&rpfJuy126#uSHn z<2OSk`ar%3#x`j&gVLw5g)h$$_5Bs~*5I4Jee=5<3 z`?x0oEvRmx5`Eb0UJBGz-ST~mT-YLLS#=AQ=)(c-t%zG$-9jb$a9{T+pwp{cs6-zQ zbl(J8U)@3_`Va@6;ab>O-9jb$aFC!))h$$_5BGQL5VyIyg-Y~cYkm~a*6J22(T9WG zSwK6gTc|`I4wG8%tZtzaeK_1b3~>)sx12cvXoPzP5R~YP>~lSJs&O&s&mT#}0jqF& zau9U%^FZRmRJ@SUoIM;BNfRa95ykA@E2dT;Qy?`T(30x$NRlJ8Cy!djBKmzqClx=@ zNI@K`TF&}fxf3K+fB=c%VCdw0xYKoI&5?TFNM>2L469H}h-fbO_%aj;apWX-orkIH z>L{9nr^_)hS41(7F-Cq&3@&kGd}kETp{WUXQLPnb1kK7d-m=hqG*n^jy4TS zAwU{Ev^$1AWXaE+_!u6=a~?!J)dBxLtQlT~qj-+~p00`puM44~L?5=reuBQvU5x;` z{z$tH|1(sg4@cEr41XU{q7O&=ZGCZZAImFhOfUw1D@!H%aI658r4oHOPJo}K5`EYq zpp>N&eK=k~B}*mxaDss5ES2cPiNONo)|#afeK<)#Tb4@n;pE_Ji0Q~ui9VbXTnf;M zqrPl5k+qR7IvAc>{veR|u%wz8MKN_PPZf;j^WrGx0>{@?`=YGDK0mObbP@fI{1JgTM>Lu+~!!W?~f$-JDOJu{_HK+ zj)LyoJ#8Y=#OYLOk6Aw4kOwc4z(Gv676GdnIB2Z|j%MKR5%3!Z-l~&NVc;>NW7ZOO;_

KwZ`F1vj+2{oBcq%id8_slA$-T0Y8WfAOo&+1m#;jVnp&yJz;6qySY6NV68{B^@0w30a z@ykD*Ikf9L2zVr}_>p$)xR|v9Zs>pZLExkD;CA*#N6gv}Zs=H+yh|5y0Rq-B@Y(wj z_*lG(-5W>fx=){;>}HIRc($V9nVGd`brnm>9F_;D)|_H3Fa3f&WCnZ{dcu9*8$Y zjLC4QR67az(m#1J&cA~j4wdRmLSAq0n;Nt3gd4UA;+@TyKyo5fOF}ek;+KCsbHv5d z!Id;XPnkVFOjG%@_e-QdM#r^nfmo?CX4SxrjN~J!QMV%YV8qOX8+8xBmGEpNco<;6 zX&6$t_CK3)Iu63t3343`eOWv&jEU{5%b$VpF_U@#mTHgMsLopC9vRU??qjUB!#+fBtV3SIkH_>)^jd*zmZN@0!HwB; zfX?I;*5#Sudw?};HiCY?FFrP0g6D7hw+WY%_+ccv4{qF8v~=uHEsv`Zvi4gE=Ql0r zyjh59oF216xDLjQIt(Gl11*Cabu7RY@LWppHGp^Ed4u3=fFTEBuELGyNJRxCx_#G4 zAE2?J1i@XldT_eH)fQR_ZQI9CoZ>nK zHyUo_m!+h6orswNC(T;}&j|#ahyF~YgKK}pl*8tAAy+mJSKgTCOt>^JX2zaE-{>Kf zH{ldQ^Y$^#;IMvok63%V3Fo~1wGRJ^dE36k6nhCoKQ~!?9hJfyzkO6i_dxsV9zso+ zgsig>nrbcttNp?rLbR9ZA++C+D5qss>a8dK47D7GFf1L zw4c!5!l*2(j9=Wm-T#=@ja9NQq=>bgrg6RB67o61ZXm}P7u>bxI z&p+YXs|Mc@qmWWuF>NAv*Lj{nazyk8uM73;u6zIG7w-1k9_6M5X-#4LU~ z7&mDMeC_v{guE~mB+YahGjBg#DyN@m@QEe}6bZ)Hy>!e^sP7}Otc)WL#oaC>Hoz=^X>cQ> z#8Hw_n-TkM#B7FZzsF>~8LfN_8F3WY%3ql9?Fb+HCj&T(jR5L?nhE_5@~c6!bPR3= zvfA^M#?khIm|8#DUdUVW*z0=8|1VjQ(u?ZoAyFSjzHL#1UrwYyLSb@^JcbrL%r<^m zO2+t~i1`Fg#<+Pw%qqjl7(WKj!*K00OgS9mN4uKb%KhtNAcgl_I31P+*; zcv^qS+$9p$E~K=-k#Ig3g1SDAD0G7L3CiqX%&6ZZ>a@l2#P%rBHArw3 z6G`s#_^ydR+nUYXPl<;=j|3lr(1R45>>>Amb?3gGf-B=A$Bjnt2i?It8GLeljK>zw zMAX|z`&%i9f`hvY+N}kf$o?UM4M*UC6V95#g6`-RjC`gQmVI`-Me1_x$f(klnJDzA z_((~4S9fsa!wbFq*~iA4+TSpP!@>S8%H|xzg4lksX#&HaG~t}DubJ%bMmS{C@!j9* zExBQe!|pPHr+KDF4h`nE%jc20p*m;I{{Qjl-~JmT%R2=vDp?C7d;0K-` zkJmz9^?h%dgh0daA&5h_J_?~mGS@AGd>-EsVyq+=RJg8*jwm`K9SHzMu?UA z;{RW%m(A^vUDtP*>AsCOcXuDxgZ3|a2+fX!*59&6XdOBSFHF0ZSnZAGKE({zMzW>5 z{-^Bp9LNDm zhlrZG7#|AY+U^3_4$qAQHvxPO&&O~bOf%|fgq*Y_W-W#r+u!8(H{G{-;iL^bdNpzR zW~_I(mi}fwD}Di?>rk8w!o|H!)!RpzZe#R=QFQ8nDEgZw+QnV!RUOSmf-8~pMHWvz zrV1s*f2`wm$?a#Em7Vty7q@iw%W0_3QD%i^c;6o3L(F>0@XIc_!{?fCu9r`m zRf^#&OgQgf_nI|_;pgoMAN#nutR;Wc1y_S5pKtkHQGdS8;^Q!t1gAc65r$`K+=ZU)LHaMlfT7>V*c4%Zk&Xkl&qG= z%FHTrWX$>kT`@#zwmjC%^0y=K3b-Ls&hpq~mUH@1_>>Jd~5!$4`%^4M7nJR1RL!twj?iddG@YZu`C48n)d6LtNE9fM?W!*M+DNjhjL z;6k{eqxoETvJQL>0lVPFu|bvIx|!H;#KK~qA4}FCwCx4_tUDIpBH`Me0@wl1Hi8EM z-i7Baf;$0*9fvRHa2?EG)SC!d19URns1E?%g6CC&e*r9AhD8o;l$wlN?(&#*6Wpi* zz{KNY*8XradjrHTe_-9H{o!dmAqKNWh>QkU0?(lY(*S-7&kqUa1FTySv(A8WbP{7jFiGV&0*UlPcT_nVVPzx1W~ziYg2?(O+2wDd-a;1%-YVG&weXS5(kvDCA=n zq|8ksDroIqZEYWErU}>1myuYv*J_{HBm6@Xj&-m7I1}EAuB-15dH?cF>#j_!wR-ny zR+YZ0(x06<7~f@jh>q2wYHiJ4B3JYfSsIBrdx_j&MAoB%XJ`>F@a^}Ra6Yx%s>2hP z?^u_Tp-Py$9M>UCIjj9OBRvMy{*lQ=hE?*aHv>Kmv9C+)TzPOGYQkBD!j>mG$2=K* zxqvYT8c}(X{(%APq%k^OwRF;#dgys0$677Ya{3utN`KYF@?q-~6T22If3HXQ#XZ9R z-Xnaw4woLW+CwuTS)ZqM%$G-^wTH-ik;vX7(QZUI67dOos&FI@HsS20!8#ld3STu6 zcN=N;^)!*zef`rOxvbW?d_`ZkzhOk#ZQn8#=^o56e>AZ&5@XF3!an?dx2Vf30p*15>*S-e6ixJlk`Dj+gKuJ;HB_(xKMYn9)6A+7C5=J@>QjrYs}cKX3kTD#qjNMuDl$OYss2(@JUz~pR;Y7 z0-ZZ~lYY()ssGivN=LQGv%@8)OH3PY%ANmrqyX7ipJrq61C5qENKA7GUNE2;xsVf! z8B9A2^|N0xU@&8TZ9xC6052PG0=L0mF@PjK_NxX^!^VEifTLKq-{^7<=FMitX-ik| zW+pmw)*%`WGSHga_Fc%IVB1@J=^p;nMxF3yZ(;Z9CzccJ-h4QjbyCcl3OD43Y~=~| zCU$C>4_x0oIc8k|$A^=XbX`6L`~Ys~seCXySqH9Ki48rt!P114w$VM< zv~KV#_d{xxU3HAlTmOe=&nq?R`mNH{vmTg&C1dPikh;(os|`wx+1E(PJUPMuHe?;d zIm&Bfl-FX)t~Ie;n9#SF*k~!h6p5*E*4PV;46hlc#+rqFZ_`su_-maojwRZp8S{RR zH0>W7!1{dNU5M4*$INryq?=H^?y9BZn+8>M6Wa$FAzsnrjF7J38dT%39$6gPorN{_ zm>#K^ZFdT5?jJcst+qYeFzih49_w{@;2AQVQwPTda*jWSQTZXvZIIZ_F zTnF;bJFEkBD#GcxFvV7^WbE<|d43sg2En#gBGjH{`|CT+gVN8D+tYAkrx=;&`DO2C zwe}}WFR*)WKw@^5d>fD(dyPrV#rzo^`xQ5pG5Z)%S%#Mxz>)oz$@TIMEG<2r0>_?e zgjn>RVlVH&ux>E5>OlHIXd0t=tK4M5c_W@I;qs)k-2}6mtGdOdxc_?4xX_f!*{t7k z`Taq3WwX}Q1Gx+Zwtmy%7nja|oF^fov(`BPl|Xb~YTlrB9Qy8M3~1t-awxS%?KcN^qX4lt9nUdL!k{QdtQOuxqR$C=o>###H&i2=& zEnD05GW7#gmw)z_nb-hb^oxDrT`lkZ4X5D!1#XeNRM(F5>o9ILcGBPuM; zeYu{Hab6CcqqgginMiCcc^JJ;SAUM3?fL?j1zl!VpC!Ao%+b{!W_wE_k}?k@WlOHc z3m{!=NUXZ+v~$6w4_AMy*OkUY23>izyJTPFNf-RiPA>W49^?xbya#YE3ZM%>g|_5% zc<6%Nh#7DeKBB+{kJ_oOao3|a;k+V~y>kC)^b+7Bq^&m`x^Imkj{8ORm0vFpEEV2R?IBzSEic3k1=&-9k=LR&X& z0;`(UmAVFmI&k$HysinD5p?z6@T|W5@om9+0#~FVTe|?4AIa9Xnn^T0$v%a4*D%pE{P5cadzp<8LJ2Hr=hO5_$)py$re6GHQj2X44`n!+)MDS3aHznm`w)h*DvQBTMt`DsA&OfX zTt)w1Tk!L8?F7oGs&jD-qts`+(70QWqe_;lsxkG`q&mY9wah+Esf@lTOIM^hh2}#UYM*|!!K;dxW)Z$btWYVNMOC3|iqSK^0 zOC9H-$I&g7)WR4(V_BJV6hardI+wF{036}ZhJ?!8do92+hh_OJc17$POz@u#2tFyx z0k$&V?E*MiSDG@bWA{^rRA;HvOs1qdORX^tBh^{z^gO4Hi(`0GLy{HDv-D-`>tQMJ zljYF|bI76zlRR6Rda#Ee8ngt{>q&iCt5TG*WZ3Ac(;ATj5 zmO3lVrutUm-uV524JeE%5rEZG;c3XO!_bqb^loJtIgd zjzB=xGw|-^UXY+y@tgY?KY3O!Pl^2Q$Y%xfS|JS9GlthZHW(lF6j;wX6R;T}>zM-U z8KbNMSluMnAnTa|>lv<8YkgrB{wc7YG47laSN@P7#U_F!mNtJfvzXIzSV-u;;^-}@CddAp1=cgdvQr}KnF8w> zVZ|wt^-O{FjIb{X@&LhlM%e6>$U&vRdPX?VDUtO|f%S~A)hUtnOo8=`aHvxv>zM-U z*;cfu%_%*15Fl93b^<=&hGaccU_IkR64tYjtY-?WXF3F|XCYb76j;x62w2ZTvYsih zp6L*v)-wgxGaUlfGco^FU_H|zU_BF~Uj^1P9Rk*~kgR74tY;D; ztYT&4^uiI>zM-U*{cvp zsonT3a|r$dkE{e%t!6z_U_CnyBd8}hSkGi8mdJXhz0u@YoG zQ(!&Ql_2Yx0_z#;hkI;5)-wgxv(>;g!g{8_diDxXk*sG5tY-vPfovfPtY>VoLi3qH zK-Mz_*0Z~q`nM?DS71FGf|eDiBd@@EMtQ41)-wgxGonO+tY-?WXOdTetY-?WXGB<+ z$a<#0diFl^6xK5Z*0Za+^91Xe&XaE|3an>3&mrdmf%Q!1N!Bw3)-%admjKo?A|I3= zECH-%q}8Yq)-wgxvuA;dWIa=0JtMFRWIa=0J$oIf%ktPRdS$XCEsu5j^Bx?K^-O{F z>}G`3YSuFa*0cT&vLfr50_z#8U=_%Eroei}C~&$mli~16#&Ihk>zTqP-)GE7vz{ri zp52^5(u=vef%Qyh^q&DhU_B#B6v%p}zP~U_B#p3x{6@1lBVmzd+VA1=cg7 zngUtR6j;xQN`+UL3s}#%^p*=`JyT#kW89VkS)CE(V-;lXf%S|?6}Dc0 zU$CAL`316`DX^Xql?r4%Q(!$Ksuak2roehe)LbCznF8w>QEP#$X9}!mL~RAKo++@N z5p@)3$)vz~M$}m#>zM-U8PV(_S@SE|yFSqre95pGtcBN+?U zGr}#ZB+Cw1&sgKFsziPk1=cgdZK^~oAqCbmR%3@MQ5Qgg^^9$OSCzx_ESLIp9hRUELhLjK(L<4y@HZ*5q@D&)4-yr;Eaxcvl|YO*8q$cFgrswv-AW33o`TX z0hm<04E5~Fkj*STrRGY2Wf`)Wr8}k8D>F|pW}1N28M2wBr)Thqz&agM3t&cWDE_U_ zkj*STGdm4nLxyZ-=~?RA$nD$=+04>&vbO_l%#h72y|DU1h;7P{%`CmB_CCaH&XCP4 zeR#MFU~6Ux>vn`xXGex?X6eQ9{ zi4##Drz-pagVjhjv-G}Rg=}Uibs+>&iV-s0td|TVL(c)IY(O`s)J}TIW`<*?;1$`I zBH6sY>;Dc|9{sJR7dK$IFZBM3kd%yllYbjRE|QR@GZ=fZ_LI%bt#diI<(;Iz&l8lY z>hZ6MY-VnK9fO(*JK^soa!q72a~pLy+03e2B)rcAWYR=7v+4m2E08Fq7BMN=%)EM? zlx${RS^LRm<~3+P*~~nXJ=x5>MjcKzGp~{*xf;#`NB)W5qrj|_=POxX&1UAienWs3 zaVhb=fLDo?;dSU|72B1_kj)IN-dtc+CbtbBNb`zp?#D~c&pFH)Y-WiA&@+BM{xcNU zOW4f(TK@;kn+ua)5;-fwb;%C}s0>#nzfORkA)A?BFQt|;Tqsa8)~B4|GU4|UP|0vr z@Edih8LkO_CE$hLn&FDzH#sb`DU$gW)p>H&=gR4Xe~A-h!YevYGjVif_W7 zQtS+mlApkd^g64FY-awj;vW#yOW4f3v;AJUFfwGh@YYF{(Nzz{fY!(3i0M^EM~CL*ZQ_ppqe*nRlsxW;AR!dNQT6d*VvOTo#|h3J9ASxcUAJ zAZK@bmj|4RsQt6|LhM`d=P4#^X5N*4O&;~U^&CW8CGWBj<71b1b^Mg z2&m|8+a^uJ!pd&jE?^+qdp~kbDZZ>H-o}jbz7wB{kY2)O=I!(y482T!?|XXc_a~c~ zcel*;M1QiGdH0y9#*4zcS8{H(602G3`{GYCH(@jL9`cW2ZvC+!dJl^jK5nt69~F?u zG^1a=#{{Sh+048r1h^TpnR!2|xf4BrFC8y%Qau$fBDY@cT?q1i>3@e=^D^+B_jW_f zOub*3++>2ipmVblSKkM@7vrm#fv}l*zxJ0EkcMn#-pe9pWyogcy&@oyc@bB)_o~V5 zN1R5l>D>CSTyA;4sb=}U9-Y^v0+r0WxRAX!1T<$p!*ut4E1)$)HZyOxfVK?T%)B=R zbY#e8=Dn3+WjZtWQ0(o}BLK5AWHa;L37-U5fbWor*AGPHh0V-+*Qbb{obT7jcnMN|hHPfuM*>PZ*S|{<70iQ^A(2vdqb-TUTOszlIQ=R06NKZi zV=gv<6aNILS=h{)HJe%D{!1BA`3)laYBsaL_b)A?N6BUu1Rj%E(x4z;%i5~`WHSp2 zA*K9&WHSqDS)z>3gv)zwuWBd37c8a=>HiYLpHOZ63}n;Csk9E)C{Zp zRfy;24o0$hTvp=Hr1qHI1d0;bR z>0Jd`!1?-ubju2I8G+4=i}s2F$&Ea)nf(}OWr0jZ9@xx2LPu;ZkkQD)dk&Y)oyDWT zX6Av-jH}}V1@a(yU^9CNXjeg2L9m%|N&FDcl(fRc%u zt1nW@&ydY5SI#|#C8Lxfn^~?w9f-@Sk|CQ}u2+6eh(5^Ng-a;cm^&1pGeb7BTtyb& z*_i`zb>{lY3O6@HHnUtmxw;o%kU5kUvYDmS%kZWY*F>B_i{F53W**qgzTn^so0$hT zGnQ5$o0$hTGXkqXHZu=wX6$fPI4lbUHZvl(km2nPY-U7$fox_T*vyD(P!4OGQh!0o z!3{A)fz9l5fSO}4yuJrEv#TJWCkfch%}g>Wkj=~kn;B6;=K?k}Qx&qAd0;bZM7kPb zGxNY^b^~*fISDqi9=U+ctVb?jGc&o6&CCOv*)hyzEhbu<2R5^pfOL6BYDr7aY_OSe zW}^dlZ9qD(nccy3!e-`y&CIKh(t*v4CEyK{GaGDXoY_eC8NxiUnZ1p4!I4-eJg}MZ zBX*6jnR#F{JES`ku$k#h(}qCA0{enFltr zrDg0q$^{QLGxpd3X)D;w*bM`uY_OSeTnEUt4>mK-%zfq32b&qE+W=W3z-GodG=OYo z9@xz4nSnGKY-a3_0WzduGvoLUAe)&7HZ!)^3RoczY-Y~^;WSep@BBkC?^?4S*vwu- zB@1LT^T1|y1V^MuHZu=wW{&}s3S=|$z-Gqp9pw_)%sjA}@w4H($g>W**qg?gf(==ArwnC!-qU8!*|- zJg}KHBFrb7nFlsA3dH=xr!9c{A;I6H1R1O8c}$>uAOClhf3E{&fX$5WR6g0vYQSbj z&_p(~LSOj;-9$FC!U6gvEQ9%77@_@SGb^;~j=U44EW#o#ckj5B`22b-%l+eAjt4Tl ziEL)MeH%}QAD?F#LN>Ep>yV2igfjBIdK)}?=ZYO*HSLGhH`kusDN>v8>yypQ1Dl!j z7un1_u$c)Uo0$hTvuAO`?DYU@>KD^KXOY}&aXHnU>2 z0M|ex!O#{Eh>m$L7wI!Bgjs!2(IqyKs90^{;vEof+ zGm|61i)FU~$kIoG7aIgAeI$4h9NviY^^xGkMu{uwBf*Om_gKVL^pW7jCT9guvpy2M z*xNlHs8t^cUhLy?51>sS30~~$QnEuI30~|cs8b&aUhMDQjyQ89cyS;17eEX2k>JH< z_XD6VeI$6XMbI*RBzSRvt9p~oOpXLE?&~%Kovx1rFAj7k0Ik95r|W7e zb4eugOt%cHkS9duT=4N_C=%kxN$x$aq?CFwiss5A&D4z2m>ZzOH@57qm zRXB?0=ptGK|phcY-YuY z!4HsIYlduQ#YqC%GGDt7U~=#)#B^lHW>%aMd;owW!FNj&SsUr~d*I3Q2X*H?ETy(Z zQB0k`A2&$p0>nHT#k|WH{veQh1S$0jK;qc}C}?Ut4S!QU4ga+8WB3Qv<6+2t+GgkO z?&ynOe5JJIAJo;TVYWYx`+a&SefB(LCW%f(2iqq~qOD_eqT%r<(Mpr(#6j$LBx)Ux zdfLZic0;1oh~rUQ{_HKSxp9bHBC-B|$F`o0*o6}Np;1r5johRiJTXA*T>E(7O(rcK z2%^}789USF#9VJ;O)b&3L62`j>=b)9VpslG+7bOM>wq7eLW%u2bJ2{!O-cOkkOaF; zRrVA%n(rWXko4tF6Pto0|ByCVhJVcx z+hr=*Blh7Ti0!S%;lFYodH}n<-kxpJc{)?%TGt=ePm4`3!Eor6rauQQ!io2QWd*MG z*jP2Lb<7*9dIld}uEX1j`)4$fdSbirWE%a=A7u{Ygbo(odMz9`N!75pRuoGpbLeJr zGUK!o8P4SFaq?zLtBpm6Zc;rgd3AUq#O0vP2WsUxI1I~?wDq!yRdmO1HP7A;T&M)QzbV=QIIegqt9SQXl?s3Gp$5B-k z-j2Ww_c&7fdM@`ks-SDcUq)2lfFIV&<8)!@7yy@h992;DftPz6RSLSGTJ~F!Y#yOl zt*G#U2hJBaz;~f{8~jx=?pf|{sEZ^d%l!>?vG#L+BVEUbajSYW#NUAPv7Lv1S?+J7 z>+2Yl<^D#xm&j$gzmaZ~aLmkSyD%H6bm%M%&>T*3DjG^|gK;fOQ#!caibp+rp;A$?YkYFjSUwulO%w&g-? z>(>w{QfGNq1{3mq#0t4JLy7dloPvh_vkSh>)#Vw~2oa-n0zIOtf(u#Q2D^u;xX@xrVjV7W zm&An@%XCOsqQ&Aui-qmAv=)mCEfzwf#o|JXMS4SPvAED;Av9VnF0@z(D_V=ig%%4T zv{-V~VsW9x!m1c878hD9<5&r5vAED;(UqVUiwi9l*3UvpYO%P`Vj(knL9|$0XtAsT zs;3r<3oRA`tH@m<7g{WAu|o5iL5^B1F0@zL8n9*W!p~dnfV3ArZF0@#VMZQ*%S}ZQK zSQv%77c+SQPBO;f8PsBNp~bQpVMdF^g%(Q(x~)hp78hD9$4W-jVsW9xLX;>{i^YW& z3y~^Pi^YW&3z1tqoO2OcEJS{hS}ZQKScqzh)M9a=#X?jnQj5if77H(-a*ai78hD9gq38OS}ZQKSXisAT8qVn77NoFEfyDA zEWFa8#S+(AEV(J7Ywji|Eux&uS z7GdSFd&wDXz4RGvhO@mYh@v{21c( z@qdD#^pSW>s$`Yl4Ef5+)nCKbvMkg%s%{7F3YipJryOqWWc@6qd}jcjNwR@}5-!-^ zBcIsUuR~ZaPJfnL;yB=oDVwAnu6b~IpB*TS#!Xb_{{-d;x`9;iJx2I zIN(eC+!DtDU)v=&K63Qd+u%9Z{~Tcsx50B>z@Eg}!$^|LDke-g+y>A2iX)^PZiDB7 z^jy@qxes@mb2+LVaT`2#zy`p4{0?N7mTho+?ca>24~N^}xsu4?SkR*ZLIKL*Hh8X1 zfbVb{JXbHJmK-i{xdy2Zj@m`Fa=ipp9BzZ>8g;1-x50CjfYYPZ;R2s)a#&`UBbDnd zV!LqLMICn_+{_s{)GOB~t`L;vHh6AOaTokmik(qS$(JJObyk+!;JIPNA0sFo9qRRO z0EeGPai|wN3d6~5a2)FO7R6*69EW=K#Z+cu3!V-EGY5uoI78ytsv5mX#*gX2&yf@U;~PY6|# zU392dD`L{J4UR*-e#SK1lER^0oPKByx506!*Y_wE9qRQFfWyrN9O@-=#foto9EW$cr2 zprqS&i-3ymwr$chJbSa-whI`D_Fjcts}vu8qC>sH*>kAZt;|if!Evb9q-x~GZEzgwC9QVMpNOi_ z(y|SXL%pV=V;ydT<4`YMH*=_$t{b<(aj2KB8@Iu6sF&2Of^Bdd>c#SXJvy&T1u71= z!EvY;Yt!s-8ytsv5wtqo2FIaZ1Z|Ev)Qh0QF^77wGMx^$!Evb9^#HSFt;C^Tw*Yh> z>Xnvla2)DI5j{EIuaU{=m_xmot8)5nL`HuN?t_%?m_xk?N;=oSOA!^!gP91dQkSDG z(V<@SSE<_&Zte?tC;k#pFWCm~rMJQ5P_MjG`5_{D>uvD7@2|+BN4X824?HHp(a&g5 zK3~h)stUKk^M#O7ejjdw=WFE!$hZ4&8$2IYv+^ao54XYdVUeg}_u)2pzOH&Lk~Q0X zxDB4K*C^J9+u-@KMtC4*Ur|ohv_?zvyJQcRL%s41@wXtBmTmBSqyIC+JKP4xNr?1Y z73}flo1|t~-LFDKZvig4g_+5rUO4`6GyDbF2Irw(O#z;L-oxDFp zxs0$4&P97gk-K6%)N4D?$|AS8c&OL&=!mVw=uj^%n>*{d7sf-qxH>*i8}$>BD5 ztU>)7Z(S9K+u*TY`BuEgcR1Vzk2U6o19Upv29H%_@ty5(8$8xmR=Bwix4~omctLMMQ(%hP%k34 z$Zc>Q>P6%iqeH!jYETYqTcv)El5^Y!=b>J&0hrA{9%ZzX#YIOMjb?H6(NRVod!)$i z6dq+XRpAL)Hvf2(5#P4V<{ytT`Z}Q5{NqtZeC@>MUyhr9Jj!Sq@(sB8$D@o`V!+Km z9%aOe%Dd+u5Gt2ihZRIe8T}ezX7i6n8C{4$k=INfWyI%StH{ki9%V$NH~)B)5i_;) z<{ytTA~c(SJj#gBZ2s{mBSN$J$D@o0&E_AEG9omae>}>FRlw$7H7}=Y;g=fYZ8@(|dgl{wP?;*bV*(M1oGCQl~pshex+4hIy`vSrUTYeF?Wl90t+k7oRbRC87 zz?Z3;;P!2rpk*ILPHm7HsJY9m{f734um<%Xhiuk?JLE{n>@PX3(>YoD{Ofy&JJz%5+0Y=R6kF|#~rd67<%yy(H`%Gtf3rwCLcIOE- z4d&VU#wJ7`W@i|qQ!X+o@pTQ=7<_dX1opS>^;2~7SOovxlgTq;mJK(IVi%jTFuCL}HrXCd zp%G``XOoGH?L;22&iL?)5Qx9FG5G(OiL@h6l!ZOfj=jLbW*NaMlmN7w!sNhg>TElq+Q$@D{l7yzXX46^lGrOy$r1XU!C3 zHuPx-rN17t;&2nbEHv>bS0!Eh7b0=NyHTj5}r67}=XQ2BwR{y4i=MY0|!?1u9| z;W2#{D*cwddy<}kOC_4^_%-fZQ{=*bE58|`zeJYL!cCFu|E&g&oqsmSui}qDo3wjDiM9lfxTr-IqLC8L-zQ$k-;W7 z-Q$n;VULIFV^$VU_xPjxv&T0BUj{c#mcqxR#|!6xA_uNR-Hj3-ms`;q;8k$bcVo=| zP;Z$b`nk)c^GQTJ4ktsj$<)n`Jb0>=Kl|s!SCCMK=sigP0dB&Vg=C2OVPB>RPKIbH zJWJrvA9tFpr9WiATB5>Maw`5LHWl3<1GW(<&V!QyYd2C+Z|^l=9VRli6It}Qwh!ch zt?bVKOIg^z(F@e$C}Wq@u5;QTRN*$8y}xtfm+wIbLw`wM5w{g6@d48O9!`(XZH*kC zdFRHg8F1rHK|X`ITl5gny>K0}M&FTcfmFkJ;9h~7ChNp^6?2;a+yQscbEe=|PV(_8s7x872)`JCF@|5BRrmx*=!F$IEqKGB^cJPsep> zzHU^Vk2@}$UKG~L6rBrvFvEu7k=i~-I_7-f)8VG_f#oDqO>6c{2wYKhDn3IFy$lh9 zFTmkNa6_*HSOw3C1m^(!A3S#wtOj@ip6B6aGX2CI2>B<_CvY=PFiE!3I3ynD2F%Ho(SA5I^6VB&DhOI^Z zo%6?`#8ol_)|+{vWt7Hb;4*VU49gAAot7HcJ0r+i( z$*fp4inF5cg}CLx=~;1#%!(zzN5CDlsmC<7P^fuy#cU<*E+;Z3`;6^I>Oax|Fq@hP ztMi46Q1%RIMXM3QDlLEZ7GCfA5}i@xMRgHM+yJLrF{8pu^kd-n;q($ZV<4}H#TUh_ z`Ea@wGuqgSp8)TI)AMtd%+DDYBORQc$FpS~e+>LLhHb~fWzUh;)?b37<>03B20zAB zGgjdOcetBHC1nLY6cUHP&18hEnpXf_3MZ@PZg}2+!#E#mvPk!aorUg_*eSj>DH=zv z3HqLXF!=E{9FKW-h}>o3yd}cx+Xb5A3F z4Pxi~3y&l5k$N} zrr7S>hdVV}QZ3k$<~6lKNf8Y!S#v+1kLN46Vtve;7w>`)zCs}U0bF8q#eOl*N)5&P zt+fPgG-@GNen+c?SX1?4eHWGz{@psssD{K|t{n+%R6`PbDSVjSb)y=BLr5W*I-Js4 zzaw>=_|?^iB1kKh?5#f%``P}8X(^rwxfqFt;+sP8Q7&U8DMz&75G&; zel)-c0e+h5CCN4cr8Lz`k|PCF(o`==juOzErg}-TT|jG^>Ltn10@~74FG-FO(2=Hk zNwPygXPW9I$?*bar>S0&oFHI9n(8IVNk!iBy3$lHNlvNR46rOs^^#<#)Oux_>Ltl( z0#>J~UXq-ixfM+~JLtm;!zTf@rm0?%JVL6oBTe;^Ltk~ z4%fj4(o`==c1hiKrSX_!C681;K?X*>Bvlpu4S^2TOOpF~8LF2g!7RdGMz|b9)~lLR zj-j{FV#zuV3#nmuST+Y%j-abKLTf2FUzNjN!5kk-w~3OvG=KBQgxAp z_-8QoV(q7jiK=s%-aQgO18_wKR;m&Ie5#nJ`Z@;rR54M#M9!y*iE5PaTvdWo*8QWM z`ZL7xeTM_(oe5Z}@(3_5J(cObe)V%fh1b#dKp10MiQ-buOcg7R8CuL zBBayxDBT(5@j|lFB++u(z3bplSVi9%7h6pkE{D!|r$b~&qUB5wkVyZn3t(cvaupLy zjcxDFbXw0$r|V30f&-%j6=zoL!|nugdL}s7Bp`{FbBGkD(j?Jx=H`Ejiuh@gXgTu) zlvwuCcuf+OC5e`ERJBZwG)c6aqXj6d)^`@ChC`-65-sPLDi&QJiI#Jm_f0mgSaBA{ zj$VOc(lT@kyO3I2nL=A4wp$N_w}3*cm3Y09jQ zJw%yPFfz_*CR37VIcu~`nj~7z>3Nx7R_#h>NV0zlb-U~s1P@DzpCnq&=u{)?+XgU4U9T2k8B++u31tiiW(Q*a|Q0eow0kjHm(hFNyToji&U_FAwe(VxBf5q$+Avz?Pq63KC3QL z!D7mCw+hxow7Vfv!IH6Th*YrH)v6&mq06iJWyT&!$bb zB#X#dt`$Yj$`d(DMe~{zIV(@(ER`)U>OFd%$XP0DPZSk7D^KJstC}b(a#o(mSwfd5 zii(_-Cvw(VpnL^UC&4xvN zg31#)OK3hUDsony$XP<8u&Bscc_L>CtqY5aoRueXme7WC9UK> za#phN_fHoe7Rs7Kp$+NcMH(a4911O_i;A43HHSi3bJ!TKIg}`UUF0mS zIb0+m;x&g(hUE;=I|x3LcHcsNYE6oIcx{X(tR;#jMp66&b#uO z!wvJ)kJlWke$W)JITV&|iq{+p%QnSp4uvr<#cK{fltkqwbGVqizAkc>)*LqDpH1iUUR6jMNRRVLzQ(F6*)_54sC@-qNvDOT63tX>n4hdoTW8~LI)*^ zx^LE+L!pBcMMciinnR&&iQ;+pfU@RL=7sN|k+Zbs z(4&9yiB~@ppsK{Abb12#+88DyykE-8q8#uK-$M5 zXXS~Ub!a!nU6Hf$M9$g{Hs1D#oFy#Vq{vx$B4-JUnwIP8MC2@C4NZ!il_zqRuws)U zXXS~UC2UaBrMh?$IZIeulOkv3iJT>DRFfiS<%ygnti4H*v+_jF5;nf6hb}Ed&Js4c zpvYNyB4-Jk9yE5*^iJfgWnD2I7db0W#MWY`Jdv|BX$DPNnU^PWmS%=@QA_jk zM9$JxG@UMv+Ygk;St{HzT~y?(Jdv~7A>1-syiUGHKrM`ZYEoymSp2%7E3C$Jlc7w=Se*)$D ztR;eZB4??CM9#8ng=(4;{>1$SO{l8j)vo++W!%?lROGBYk+Y7&M&hS3)}nUr&f}4- zMXj~9sI|5hwbrdgjZT{l+tz$LEez0=DDnZ2HiRl;v3MdM07+FM9{|bHJ^+%XeE=j& zYqciw|j zBn|AK7L6PMkiwBS1V9oJ<$M67c94dg z^i2RH$9-VTvKoxMYW^;+ePRy5Hm5l=+y$zDn!XW}6wZoLreUO=r z07#FkS{wkWid(jvRumBc$yf6MkUmqjH~`XIRnv_*0g$X(&IdpelFn)6CjpQiLvPuf zR(=uyNhDFu2S7R*q#@@6APFhvd;laNgXq|HFv=KjTlq-=@k&a@{<5a zuZs1U8DtRvNg;#G4G4fFO?uON(Q`8cd&v;L@{<5a!=TC9%1;6yt=9`09{{P{82A84 zLee=O07*zT=K~-K$q#Y?kko$UwDYD3P|RuNCjpQo&7hnQfFz_Xr5&&r)$mE<4fOI-YdF3ZBM&V5WBvo<7`B|MAXU+#eQWM$S0IqZd zK)Q@tQO*ZI64Kzfer-(@v4f#xX0rOaWGg=jfTVOLdk*=n?o}EAkQD2u)>eMjR;>Ia z0Mb zNWzMV79Rj<56A{3T6_Q`!;&pp`AGmI!+2)VSSf9DTHhcq4zpI{w(^qzNRLaLH~`We zl;?Z^B&CBvE&x(HNoMy;XrNz}kUYa8X14N^07%D??(=Id@82l^Qo1*{4WG_n*jf2` zF-Xv)m7fZLbTwGEY1mLOR(^_A)TEW43V?JSWerVQ`KbU%uTWMj!~u{-gAHnm10ad6 zttk$GBy4z78~{n!s3xuaQ~)GRgY8Xm03>1Ko8kaSsyVqS4uEtEtxs>#%1;GAQtLCC zYyxNHr)Kj5n#_$@`Kd{JW|PH3Vddw1u-Q!(+=P{%_c9QjO>qDuO`A&#dMZ@_B+ZWZ zH)-Xk0wA4$121o~S&)^Vni5wMrS?3UWlMwx%}kmANa}i!`;0#XKoXKQ!zBQcYDGC8 z0O>(y|Aw4aei8twhKoQkr)kj!K?CuXvm%NpYVNRLYS2njghfqp03=~`v?FOV**j^uQC|oY0O?_nKIH&N)2QH#gaAmRp$ZCd03^|7 zgT^=j(qPa&K38Iz_s0Ftn@ly6@qo07%zSvvIHAf)D^n?;`t@10eP66Eh(Il4D{H zK>#Fm0Vc0un+kyRi5f2lKsv2VM*t*8XTwPVB%^DJ10dOJl0qB+$=;GQ#Q~61v)B{| zKoYiY&=?0m>PHLfl>;F4=M(Ju=I{hS(ul2ZeLa&F3*WSN7_^$CC^ zb6el$2m&Coft7G#=}lN(q1@{jMJeKvIu`#y9}dg^CEye+m^!DeYOz{nAnKjU_gEn+6#sQG@ zl9n~ljd1{^ku=gPhgys{)H~^B+i1)k` zsmvN^p>+v+uvY*iiO|5CXu0j_q)lR8<;4Mz-cjG;07$Cfw+7~qfM8inP#r`*0MZR) z_5PGbv`kvhRK4S6(n2D?O!_s5Bfm_Vx`eO8z6pS2X}?TbY5U^RguYBHzf76{NScl} zP=4eCAZ<)KlWkRw4}i3-<)}_qaoUeWHzn*(5NVk-0gw*2T2uJjI}U)PO1MmlFW# zEwG@brTgVzO@?J_S|*JFE9AAPBC2Wm&vdZ9R@P9{k{ke5v@k=(nwCGSz2;D%X9m@@ ze83130BJl}TTRP|t-<=|^(uE%P0PRMfvuZY&Gwp>|DtgMAPE~^({jzZU<30r!6w&i zxc8AW0|Fo|0GnRZa&%Y92IZH6&8TTvb}?A1VF%Q-+`SlVz5LUZ&8}&AUR>7Ce*$() zP0KAufep^5`{NQdE!$iHwn4r>*!-H7%XnKt03=}-)U*sf3~We#Q?ScwTJ~WACIHfI zV4XEBr>W-9{NZ3X*0k)XaT#G!FRf{rcQV+>{PC3CU(<4I2Usb;2yA&xu#U#OTRUUh ztqo^zAFnf6DXgn*kE8@wEUUH@rg*E0MI^1bk6x-w$un_Dir%d*>1L=XsG}RSO!ob_ z=Aboes+8hxqvxdLSe26 zKa)K?t|ZMFcgI6DDP9;COL?vxUvghu@(-2RA765;QECl_NhsBJ+m$@41kaUmi4@yS zwYyc0Zb+^XO4F{`cc?WknN}`Q3YK~s#Y1jfE<1=vYH!j5+O5_xak;d=dZ?^hke@;> z=lWnDqmrL9)_FxB5_G5VTK-2q0MhNGvt3TX3kZO;%epxCe)6bIyU!raUREw01V9p! z%{_Gz$mWJbxzf%c?S?eud;la>E9QIvBq4)xJ^<2jAZ2}pa+2S8d1 zGCmlvopn*t*x(&SqMQC8yRKoG?0#{PsJq>XzsB}_Qe1MgO7w^7dexiBUI~))0g#^2 z5cmK{_bLDSL)rCH)%ZH;O!jU5R{wbz9n2@{a=n;-a{7dr=$UJWACdEig7h*Zom;pk zNWCH1Ao=K2u!hw8aOl;LXw1zJ@!p%0xlXMNi{SdqCy73;z9VijB%f1@i9+;eXnAqa zZvj}}R6iI**IY@uxu@)F$oHr-(XX47m`lyrfnt7bpI$)jKzCVhp8yAbXvltvMdJtZ zDMGK1s4`q!s#z+N0)`$m!7{g!)y^T~U|=IV-*8}JQahPV=don~7`BIMwj@l}lgKz8 z7=FILUh@wzT0T<6yuI zZ?D95?R2MU0mBP8$?N^_l5sp>lE=*@S7>R3JgyVVzKQ zb&@al1HXEBw;dEq-Ze2yBl$SZE(3;sIp63yB;HlYritMbC5|Kac!rK9#f@)%WV^&IrF8FVAZq4eNPL$}oxC9!=ldU!qm zzczktp5I7#>z7#6zm;7><`Dlef5=>fzJU=Febp)I*66XanlFq;yed++O!_4j9RQCp zCes(gok$xGlgt0JUM1_nZ4kh0r1@v`orhBNuCZF_+t|=?g4LfO*u)0t-7#V{6~c+Y z#z$2{^(+(G!5>kcN%4kBQGZF2Fayb8nUq$3v1$OYa$r^%3g4L*toU(X1MpWUt-b7 z_2b?=Y`r-UY4!$OZyvVZJOF;L@@}dTr>VM;skt;6Q~|Dsk65#NfbXn4Yks*ke<%1Y zK*to{^l#|lSX)tz+l}5|8o9@0oA*DmeNdL|9_xB)VKVqHyqs+J*bq!5ZxY~SyJxCy z$8G?>MtOSEk+^5icKW&s{42o8d!Na>4U0gx0-U_dOy0%d3xSRcy*Q^-%DdUZL*aOZ z)6DR}v1YEYp>vwK!iLOg=E@4qEUM7VVyBtS3i8tVj@uP*a~$SxF5R|IoutAYbnn-` z@+{J4Zm5npTR3yVYW<((TCqVt&p10}tN{R-BAGr>m-<+b(k7 zLydE%pX<0=v0q}5E-_Azhi>t{znwQu4APqFnFO-BbMhIrl^>#JO152N{>`riQK zBVWi(hW$2#`L90EknP-4m*3=q=@W{+&iPnM56Z`~t6{eJR1`s9=t+d~)rVDzM0L55q+*?yuvTm}3%_!-ho?11IrgWAd2gO2V3FfYjP1{+z? zJ7S|~_$3y}MBJrfaGPu=G1YnX24?VA!(g$POkOC99q6RoUek7`XEn|kiPb!YV&ZNT zJq^WUz{CSVhF+NrT7fA?fm}-B0wE`Xd`#jUA?JcjUWA1J+lu!io_9Hc-`bCf{BX4* z#&=Tt4#1lHD~XqY?PAiH!kYbol2yPCYIX-TH{w~}#Iw>tFyaA^zAAKkO_nQt&ODX# zODx)TC@p_W(cs0&pa4uvF$26z;t60%H;`j_H9Z@cvJS{95}yib0lD_-WNAZ0`}*scpJ> zbR}hDwc{qDZ<=Y}_IF5sc3q=yx_O?s6-5KC;R*~)+#cj=5(|aw29mut8T=^ZK#)^G zjs>P11@a#f-wQbjr2lW(rwL3s7i2dQI|Dn)%s%t2CfatO*Jt%wMXyJkwXK_T>^6Cv zgzM>Zg4wDzKX2_VhRNlCN%AI%*MvyM`X$Mr7BK0zR|1$ST9fTeurq)iB-;*>X`JTm zxRGS18o8*)#HYx-lX|xSYa;JZ@+r9=s^n#m0oSqT5tu64DW8+G2iPvalvN;$Nh}0* z$}laj=Q~69?f3ackaVHo3u=4-1QYuCD*qYA?Ipm}lATLLn02$oftp~32P5|KRqVb> ze5UQQVGs!FyJe=84&WXZsE;z!cIhNqI#Ay|Gwl_a3F^CMroDSs5D4n4Gt=W;I}PmG znReRsK_IAa%1pb2nMhFICo`@6gdh;qualYf=n?FK2kPrGJL?qi2bf%Y2h-P`%X@Ml ze?>Z+e(Aw@H;{iQ9Zq}vH176+`Yodsl=Z_esmRC zE!x%-q;6F4pgQqOX_HX8wHK-lQhgVbUcdKaB6A0nr;fjftikKFt62Mn(wACss_Vw2 z7p|kKDeW6dU)EdfsyLL~*@zG}d0F^zPe}UZ?gx(p|Fa z@IE1R6zx?t)Sjr)o;9R<*IlUeueT-LSjV^qsTK1`uT%FF>1!UC8)ms$o{%;cr6wLGtdZR5mbNwt{lww0K4 z>nA3MV?*h10(XCz@EjWI5_UxsRiQq=5;to%US)(&^?@`zfhMZM;}9SpK0u>2;mZ?v z4HW)^PIL=(P+EeKT=PNGg#Q2jM?N_O8w>g)>k2Pe9|j&X#yz#tL+14Spo z?q)N0z$O*G!LX#mKQZ8$@M>fEAdOUoGxwJCH>1{Ecs0EZ!=teG>adfV`S2$CQxopO zV0I1fCZ}7tkeX4rDQfK=o(0by;k%tu_xr>6ZWG>3S9*pAB15n6FWmXmhexB_hVWbD z=^b`ML5<2oT)85ZeqNv9liIOfwOe2QtODlD8sv*Dq*U@km;G^F7n zjAnKC4GxzN6#~B|JfsJIgX*)fY7Uo8Nu-RL%vWXGX)W8F?z&?Z(x-8sM0gc#C&M0C zL^{mLO2TTmN8w}S6vL01CfmcakfXi(flM9hihe=$c1V>Sl1^2@D(>5?bl3C6`9-EA zHs;~5LHI1QUn1;?GozI znaB>wPLmmeolzHuhC19{!j*}0kApGid* z97*=PO!uv5G>9Ht2zFAY`)IIaG(;Ud*5sdPtBw*hpz6B)_^70XJxYeLg@Y> zM>{8z*W}MpO4ov&o5`!F7|oV>pO?vR1U4hONW-xplkWgKfWW&nqym$Yu!h1_WH@0D zH5OB1oXBQ_i1L}qHFTwwtB@f3+e|^-2%;A;>+H>$ycndTEii%XEe`7vEy3Wjw>m5v z)r;;nhlSC$+koBfuzYlXHP{^v>l)2d|L<~G6rG28X76@bk7ym0-Q%!2H?=HtSg)vQ z9A)=s{KR$yGePzNhZUojMu9!-Y7UC_ZU=kBVe3WT$|RRNY;bfIrkj1#VH-vVTm$x) z!`h;aWMY4C*hbMJ8OR?UHax1rwX;t+Y-BWFt+Ss*<1#Ax>oH(YIc($T#Jj+rcGxD- z&deCuXB@U!)UN(L>#+9d8?F-B=N#4%y?Q;^ii}O2TSgxb0(;SwjgMZIJ^j^T6QWb4 zhgTf7ZS=(ius0puB9izFpefBM9CDWsGaMyx^Q6De9hU>5Gvzd2 zIP9QkjHLdj!)8XE8o_@#y4h~}U**bOq&-(zv~3cIqb4%xZ2A*tTUP~t#otPjnRE7>*27a(LK^p&n{;7 z_eb-j&0Y@suD0_4u-;wrGV4)^+FNCyja|%P#wTh&z^Ah7ICOHNb~8;-eH=PHQ9JiQ z(0*Oa*JdPY_f_eDE~c8!MD1OhgAQ`&l0<$iHk*M83?zfX0vR4ze$4c)zcj?cHqu}jC?SWF+ zu1<_%mGg2HnU{mVfeVjXjaNT^8uj<+l9K29IX=hU_qV7L+TQoj_P&R<_dT?|@1gB| z4{h&zxW^J*xvm3A?sApfTO9jcesT5k@gnnINm`; zL8QIKIgWSO03;h}Z*h*}9mF__w6{3N@eV3$2&%QWILGl0+fmryHUj6^2>hw)Y9nxt z;~j(qkv0P7INkw?gL#oQ0_Qm1L1ib^Y9nxtjle2HV7m$Xff7^ci9xkC0_Qm1;ac*n zuy@4GcRRJ&hgqY}wvyoupjulka~$t5lDsb2P59fWD%+5-fe9MiR?8e)E&o7fqz}J2 zwpwOEf?930%(2x{{Urc`wp!-cYAH0EuGLn{99u1IG}5)&YMEoJrO<|S?L{Ypvei;( zFtd z!o@~gEpu$OROzC0t+ra`*lKA~q-(X+GRIa+p+$GRLyqGeBvogoR$DD|Y_$~al1#0h z*>Y^Pl&7=RGU<+YsJ>0oalFITG+3iKs2|>Hie{IcdjpbV3*7{AL)$_Z+7`Odw$O$C zI0vo5sjh0=iAr6vyYjbAYhnf^4^3w81dFurCOIpalPJs%T=tT)leMR!!)&B=HOa$V zSrk3DH`w9HXfF(Q{1%2xE+~*szQd5|1qJfSZ`o^m6corOKi;IC zT~HvO{I3i-vYF;^lX<_B}c zeC_?@qz@TU|91W~Ywu^YUQ@ANO?TsOvp?xWRhoa?o>y9Z92wq>n?5n~Zba@<|_$lUL9eNKX2Y+XV$}ZR4a55vB|Nqz^f3w%||t*slvdH9%V` zIq5^(*zcLzh|%Drk0W8%6rc35C$3S@eos#NP`#kwPx=s&Eoi?dCw&Ns3jU-Iwc1e7 zwT_cMBu}4$_Iq;Dhmc}H`#m}7Lo|a5T7tt#A3gZjR?xMclRnhujDiW*&#EmCYE=6$ z^34XSgOv7ra?-~O$lB~r`Z$x~E?EsmjcO`Rtkpg-X!a+4oKIF$eA36CKnhwz#7Q3# znU^9DCc);VZc(-Pq>s;4O$+=v>BCpke$VcwrgWHjQ+(2gCYge5w>raBEBKQ>M3XM~ zlRoO0U9$!4_vEAxkwgW5(#HWH4F&D@=angs7L3B(vi(QO&>JJxFa$ahc z1c*=ixP)qU06Qmrw5vBk>bZNUc46vRN}A%6J{|-q_>(@&R)UoFdvempHL7O&Jvr&) zJyp{l2TuC%z4j-4JgI8&Ngp~tx^QhR)voTTG>7hX1?e=Qv#xK~7!tX@U28~#>)US) zDY{`>VqIhQJProe88Vpu?he;3S=|Sx-V^KVQ~#6zw%?PJKJJnLGJQ_^uCw<7; z(*ylUAI{X|6rA*-?z9D|BPI2{so5}Svi+W%^ii`8+_c}5lRm811%J|qkaR)&Jvr$^ zNVecl`Vf*Y_>(?XfkZ*-rJbqwMCxI&9y5b1PWsqRtmOur^dU`p(|gf#GXs0ckUX*K zxB=&+kKWKU*?vz>`iS~K^Q{#Bs+UdsJ-feVNV?!p`f##ozb7Ysm}~>xNgrxIa@u** z1Sl3h;@ZYZAChKJ!JqUYq^;mj`Vcaz;7|Gx(q8ZueTCKt5dlaoGX zf=uUYTKdgx5I#QXLsgt{epc5`=YxVj=|fzzg#p}Uani>L)QSrJqz@qtj_cRfL=iiv zC$mfT*YqW|Ya2B0reKRPYO2NA2lRor1zVO}_ zlyvVZlE6B|Ngt9nJJ6r>p<2-Z-C1zbhek9?4A6d0PWq7W4T%B%qz_@m!~lQN$5xOH zN(}HPeHfM;p#7el^kEp!Mj9)nZI!~i z&1{_X;S{e4h?71{@eGTYr5@upkdr?4Bwc6wJ$2H@CtO*gPiHWM?DssD`6!6A-%}@j zoCcP)+bo^*VLguGlRnO-tRd2V&+hE^l)0}y>7yNNP!yl^A-c9GKIuc)@F+g%L)fS& zKIuc#V0)zfo;vA6*!Uwc(ubza)hB&ucDz5*PBESIp?!qQBbx=;@2M$q zB{z=e(QI9Pq(L*2uIueh`ZENoYcwQlhFiBzFV%_)+V5G{r$<+2v4(>7d)75&KW^3> zul=5Nh1ykAYcFWOXIQ^l^ifUq0zWtwr%kA3}mi`#pIVY)rFJeA0)8KObqor%w71 z7De$%AHwQrN78o5F63`DYiI(U^sxk_VK|dzTQ{BbF{cRKCzn%pS)w)r5|mH+=q3-c z1KM@cN2ZQ@h1%sOQInHC^x*wbruL1KLD}UtraM);)@qlVPWsRr2wp5zYnPi&`se}Q zp4#Q6lRng9PwjHkNgoo_UPCM;*IcbV=&4<9-IpZto#ZvRU2Zz*V+u;KHx4@KLytm1 zq+M=0=|kAOTJ3VvNgrYwBx<$GO(%T_O($x#%S|VJ2+byHwaZN>eF)7bYPHKvCw&Nw z61CdprjtH|)+OwjN+*3t1ijU7Cwni_CNUpjwacyhor%;#Mfw(>^q~sLDE(cl?s*`% zC?=>5nzhTVXaDFFvU+|Bw_faW)7@iF?Q-kY?2zUVq<-D5KS129U2gRox!X{R! z8r9_vQ1>cKSkSCpZgpe2ZD+MM0PZ&enj{XO}`V z@Zf#t1c`=fbtf2j^q#Eh>|HI9okJ!X3#t_%$8r2`n#?m#lxWI+3R0NNASMd-y(TE= zy-1?3A?d<2=HW!KuWIS7jaUrQc8p}ctL`~+sp*S(_~+*@LCKn~gD{NnvAduPhaX7I z@aPOvanPtG5+%y&^|>Qx-RA(xY8xk#lS>_QujA4sE9(BL+PdlKRH$n_)GEv_SJ(mE zc+DqKZ-34sg>d>})g^lie_PL625ryAn~nB>GVPHu?Vm-fn)O=!QE#YNL9fLnt*>-} zzE|TXMn9uWzci-r%COX{X1x{~)awIaz4D-M5&aFfL0{jv9$5@gnO<|W$*xszj$T4L z($+#AqK3vjjA(M1s13Yz5VLx+w=Wy-%UUxd$Zhnw?LOBUxVhYbz8TgFMK+Cm>ts}u zT&M9**377KGYizrIP{zBHby0@0X5*7fMV0;hh+@~Q4Pp5YF*Rh5{ThEXe%Ug=r@>9&hJlro zL2FN5F(mspZb)`66_o3z!L9zpa(%6fsTYdq`p((fM=Dyk@jxT}?jBmOvf(l5{546P zL#?m=4rsi}h*p+~X2nGJmx+|3sZm{N>d6dL0~=p5s*lQ4OJb@o%2Y~0rEhGlj}M1x zP-EDlzP(+hdYvk*-Q|0&zU)xnbj7#^wGpm-*n<_Fv2OP0@yWU(xHo z*5hx5en{iLjDBgE{{EQ0`=D5M^JAfOK;PI~Cu#0$YutdWT35K}Ua#RBAL)Hu zF4gJFT2H5H@>k88jB=^V;#_-qH^JAvAkIB$Z|ZL2bI*x$chJCW>vQMFxl0cqcVfR~ zCdoXX+a;@ZTK_nSvh8|k?qe2?Db|Vp-j z*6L4Mlzc-;>bMPIaX?CS*N>71<=UxL*hJktxTn(YML}|=y~fo=H6kwT$mMdCi3(flEDO^?ON2B9FXfT z3r{YXJVcL>$$`0^x?q1zg|C32ullAp($<5GSk(O+_zr$gs>wOwI(Kry{li4#PGQlf zW#MwU^(9>4#$?a{IN@@+l7u^wjDr9tT0YPWU<}{C+njgS~*E4XcHRhooPy>qdzw$pr_{hcgzy;gzfnaMAZ+ zZn+Pq42}o*mF!^k;aV6j0$d+n$&OMVz9Zuc!1dwPtPSvyH`6hoZJq}Bt!$0%B52de z_;%I?_!BC801Tb!n>Ohr*ZZ0*A9Zrgp6bSynah5OMSU<1r}#&+HnszA;ZzL3$@OT~ z#`bhF4hNiEk9oOnO$IZ7ww0UH!c*CGbk$ESSbCxp>}e<1WWIiE2MqnaZyU`!r5`01 zJlPM}j!v*~bWOj+qQx7=f}Nag(SV%^lOq5p*vZ*p8n82NPX==UC)g=Yu(msrK|jFB zah8+gWip-thAs6?^;SFlo@4}uYt}h8+e_CkMt11qzK&#-a)-5f;fqGXnpP1V&Y7pl zOIA~DRnbGEdeyU`qxKt4pW5cO)5hY}RG+WiR^ZvV5eb5WL{)PjRM%yDX_AwK^=q{? zVxDKiWNp8;7j&O+Z?>l{B%-)ZD<6Yu2w5umL@lhw{yTcDL%u;O^9kzae0rN&3Vu!X+uUcT+g zv^?^_eU1r|2WIUFwe~KKi2^uM$5&l*`uIi$xTWjJ(kZSZN0vMCW4R++W{1j>4uaJ_ zfa}PX*-d3h%gMM8a2?sob!3yf*^>;k{iPc%Ovw7_!@J%#t{-<%;dWr?D&KT$HG}`% z2dW`nuI-&%|1Qh*7;iG1>kY|nAi2JP$wz>bYe;sq60U(mEU#|>_Ec0&#B<1l#yaDr85H`d_x zy`Md|fDowne&pL;(=R_{8*nx%Fy%@q|I%|tU@1pMQfU_Dxn2E{f zWPB_p9hFRwVDMX`A$`wvdA9HJ>I>kh!{RQ#=epd=SEc@d>+*Z9%O{d?6yUo257*@% z$oLXyd+#z@__%6KFZ`s+E`WzU#5QYS=!3rL@&#~X)R%nGt71E+iq&%U;da{@%8O2} z+hB47;N*JI$(4GT9e89qxn6Q|ok-?UfRpRBwd8u;$@MiAz66GDvbJ2SMj_Xue!Tui zu6xRIJ?i8d`Uoeg0#2?+om^*-aXjGUdd$g{T8^+}4%dsGAy(?6mPOf=guGKTqD`mMltJafCjeZO#0i0Z&RU_q6 z=aO+6;N-f-$@L8xUntY=SZ{Q4?DB_XFbx>`sBelHF~iYc{fj&??0z<)oaIDGd`rut zH$EarUQpFT4O9Ns9LkUN<@LPo9KG>@L2_t$qql5DxhYAv19_KC)JWwQJ4T*k3umha5`!^`iH+!%e6G`WjU zCWAVl6!GeJ<0I(M4@v8Ashy0rjoM-H-(*kSou(GdpEGRo!LDO%T)6f7ZZzx;fh?8k zjd2He!s`z4n=SHAO_;e1(kj~)3HqiozNxwr@F5X z<4ylSQOi?IDZr-7K=vfDn-J~Uxst>}pd^~j{!GqmU@rihy$&+wX^Mc&KLBB1k8l4M ziT3aLv&HwFEaED+xdQscL3QKt-AxBxLv#nI4g)sr4RR%k%Z21YmXmlGD2ZgVVdT6I z_8!pjp=a0sX4ZbgX`{r{#86#7#s_0Fhxk!b8N0`i*U)Wo20{$>k zmjfl`ZuSN_J)h-532gQu$P^OW0s3{U@O_zj6SYu;WS-049g}mjno^D@Jw-#hRrA%T zi-~va9N&>G7!y|=M&p)xbJ^CI?8rfpA{Q&jSI*&#RbOEfM&>Nnl6*i-W#>^hmwIeS zQ8J0d+MS*}f%MKgbF!n0ms8YFmZ|4fP(RskHMQub8xKdlzNc=3`kgZMalzQlD+=ff z0@1@@=um}W;wSdj5k2hEkNI(L z;h>svwu>|7&uN?4os2``jFof7M7y%GbQ3P&-E~hmI@Ki4X?PBw1dD(ORXC{~myDt+R!b=Rc$z*A_9 zKQ2??2j5o|l>K1LWJcjU9?pjBz6}O9-Pz=~48WIw+2j@b$2K{Sy2%4mH9u_TZF0*O zl0iFQHaU;Pu|i~%&y#otD2c{wvgR+zAOo09&LVLz@Jlv%gP(smg&lfqvR+MUHopO? z>j1OK=Se&#L^kK*xQaooq6IQ>9J5?904OngYF1e&dVM!AeOn ztL{!oq3OIGuA2d7l>3s{8z`xk8Rc1E^8qu;yGYy)m{G~@E%j9z#Ks{S%oH@Qg*PjE-96vlDHpivZP0ml%%-_PBWA)2CjR9tkTanm8h|KXs62}20(U>_t z1a>cA=GgbIgrop|$s8y6;Y$W@LytLL*Y3@68dOsOGshE294|!XxP-*DKuIKKj!%I- z0d(x_*~uKwhf}3F9_7p8De`!YrrlgD@FnS>xQAKe=IXbs@t-jL958FFdnFn407|N5 z);L-iVAi-NiQNFR#+YSQpv8dYn~R$%UjmerYu305>}$ZRapbGKasl+~i2SS~Ydjo* z=*$1_=HeaSk=PjL8l&M}uQJBpJ4S2WJB+$uP1BlOLGf9cqS6=#-Ml8n5uQSWo59Mw z!3Sf{s3<5K?rpf;AdLIb8}FnwO1K3YdW0Vjt`YY3JhedYgo80l8Om?A zcJ~wKy8DUK8N<0iX(eTCQ@BDTFG|^Cy&7qITW{v>iZi%2M3%r*7` z*&X;L*Z5<(%}(fXjYr3N*SG?z%K&qY$4D#}BG>qk#QQ)=B<315Z?N?h=y=hylWW`z zr%KoOmoNL7nY#9H*YkAnwxpO zzYRBQ2r56Qm*;NrhiKYqXF}cV@Vth=-2U}7g)Y=J_5-%bhFJt>pweF zGwHp?#(fG#U%LsZ$8v(P%9)C{;U4dV+#+iQflEDh-vBvGjd25^i)p)?H z@o*Beg~%EglDGsYiNvh&L9pKg9mjcgvc^$xsbrdjPl0=xG3wk=Gsbse z`Zi$3SoIb+L_kTk%oqoQtp}Jf?nq)XV8$4;4jH2kiwmCZP88Cd(B#Hi+ejpYuVz3Ba7B%Y>OvUP+U@` zsGO*$uQjz_<0&+_x0flf#d|9X%CxUay{x?fGs@Cj)ls6gM6J z#ZAX^7^zu6X$56%vnF7(ucn&(EAQjmlDI^2Wy-&|)zjSGJbF=U$etvUe|H}6PZ)d( zmTIcvQKnRvNt69b1H57_=!-UEIE)lqk;G#_NhIb0pMZS?bnNQc z$pbcqQ>6zS=gWR(K3?RD(!o+mF{|!VNpXEAi`L%5g8_4a5hR8ICDk$)_%+ycz+B*D z5+?xW0x`=f!ctYZz%!IT4wRH@F3|W7KAHgL0@FzB0O;3ow%3PTpf8$`3+VA}$K(lX z%*QL|xHlmuFdu*5dlLHqd2o8jdxqxY{T-*Ze4uJTQ8nT29^_uFpt!tDQRxGh-P&&r ziXS|MhWD;A1wIh@Zp7nmFEqxq)BkB$^pL+YmdS6NIbK887Xw2=ZbFi|w7qe7gN#>{ z`QtHU_Hmg#-{lc=)|V1|1piPMD0aGxOY2cRSx zGu+GvL;xkn40nH!y#a5y^Vc@qPyImi$Ok=!TdgMb$aghVivcs-CrCUlM27nriBEu% zNX&3+KcpK#$M>F{4EHM@Z7U78{)%<2dwu}p$MY@D=wzDrWjymqj9GQpNeo%;XxNqj zv)tWD?5YgaGRr*$>?FV}_ZAX20A{%{%c`J#-wMn9H|1XdCFPpsj{S(?0nBpek(dkU z*Kv_oh%EPY1d`=e+(}puur%E_I@8sy#3{ZjvFX~agz0zBqul_YU)oOAr)wVLwYN=7 zPt)X|0Ml>!W7-Eyza1nt14^PX{muhBM!9-H`!0#U1HYu-`Cc0It5GW(f*$%If_aeCD$~1IM|_pY4i>f zw*dNeoaI#@joykR|0j(W6$PH(|7vvS-;^~<+sXCPHCIjc8eK(`UjwGmVV~jmfNAs) z5(fgMd6HMJ+;0K8b{W{cK*ygvJ1O=$I8`e4Ennspi|uO^n08~9Xm|e#?OsOtg+NKUrri(0-UCd#>;98fIe>m0 z^SnBw-T4S4?dm17e@A1!Tj8yGMKgY_3yph4^R%Dqb)i||7_D`o={ulkZN?XxcPc0d z1zyp#zwd9mzTX-Ip`TkcwvCQJO#~h5R1|Df<`i@+_xX}(pVb5vj~27mdW-o=1;r(0 zP89^B#;w_jA1a!@eRUH-N8Y=Qg#A;QQ_!)@=S!yVRufb-v2F93P5ilnqLu6BY8Cl$ znz5ElUsp8U;RtM;#-_cpW8;+O#!dED@58KSVEj(l&E1&} zN!!=E!!fIafYLlHZ#aSAlWi_0RBFL@#|%H*@J6j4(aVP6vkyK}75cf1`E!Q+N*^YM zrfqG&i?DeCXuIP|GLMSca67vc-na1`Y{<5H@367EEBKzO-vC3F?Mmh(mpObT^uUl$ zo5|eAWgbe#L4aLfy3UDbqqpIj9G|Xf$em3e{`vc&W$H%i##Ih4+qiuHdv(a}@eFNBRRQwl_bpe}=wjwbW zD2c>oqnTg_0UbAccAAZb!KrdKdfJzHg|Bh{@To6L2a_enth)ClhAuM~!uA5d=A&gK z?gdJ!W%JSBz+MMzK1zSZL;~1+6tk=f6ojYz@Hdh2t$~tqZ9ZBAb{Syv(Q71L2K4LL z)GI{uQ6s95vH$G-L;MjCvm86}1UI7pd$s9xY+1jwo!l*56HW8_?f-9r^8%*d-AL># zMEbpw#6qC-w&b-BykIW?rr$ANQw02ye#dxel0kH!>398|ync^>>M+3cdnJj>h3IOt zoW#RGNhGG<55e9CIwp8_(r+!CD)oDiFZ((Dp6$!fuf&*D_qfE6ervwr9Ts5v-H1dR zP*N?^?=-Nffa&){62}3i-~y4UYjGCD{f;J45=4-ge)j;|4d}>M z`0rO3XQh7EU(2$UwP;kzk*9_%^5)cY-o zuK-hT%o6pAWvt%z?^!hnl$2}gJs<3Bz|{LJi6;S5?e z?s&AKps`$lR7ZNJl2qH43o50WanYJ>oL@n4LYbmcs^zz?NwLgRNUDWp3Lf&GttfD! z^7d`mOm7GaxY+AAjvIv`w=KX&=eo;q-4D12V3*;6-lY=3+XqqQtaQ!YT*mD(Jcc?Y zz})yK5{C(q8{a|V7N8^=bK}p!-UrN$C;o>!W#E_GcxJiH=wNeWEtW7hJ{+pqfVuG% zBrX%8Y5EZo4*?~Sm>d5C>|LPaIL}Vg^zY$R>BblNGCxgg;fjAKxWkt)NlS=XbqA^6 z^5XEnNg`d+?&TmuNNfOwaV! z1k8)KCovJwuVV)>?Net3MLjm-Evmxpm#^h6fAAC<+_o|WhWScGLD?|Jz3=Z}cd@G6*y`o$mfqj( zPWQWG_&A+j@ai!vpO}(f@V2dp81pv6HiIYakt|}nAZ?4-u3@|u0;OmsP1{$nOVfSb z&V|n7$F!3>5sD#SaUYYs(wTkzPh1&+A^*9R%-dY%_GC;{=F`<=KH@UZCgTji9OTmz zi1mnD_S|p zvA!#7IEmA*XO{?O({}QKbj|&Hdi}PiQo$yG>GxO?M+=dD?Rz1T^?LzS=K-eQ`$^mGuIRRqFS4U-onQecqR$Ux_iR?hy4{`dtsUg8A{#`?B}~XSZ_0#watF;?22#i zw#LlHZVqR1(G~tL?g~FDOmX6X+<~&;`?2*SUC_pP7#~06g1Pk`5(k)Z--2Q&zxScvT12%DdMB*PpG;#FHr-A}d5{*q9Gr*<;HgP;g z;$h&ICXRoV+nfPC6UQgKincrB@1gn*u!*BzO)4k?HgRlCVk@8|5}PD;IPA93CXRMrk`6j0#H_kg)$i*&c|8Tw3jmuqmXWv@D5;iB9Df6Q z9k7Wb-8IFIaX)dyEUSW*Vj15VPo#Wnprl-zI2M6j2H3>$8i|(y{W?DJL!-<7G6Y&} zm9|jE?vi<39#0&&v91WKYY+j|Y{1;A`?OhggzOSX5-C9cgR;iSy=4mi-;-Vsn8 z2AJ(#N#b%Lx@avY@i0&liP_$VVDAGROFcW;o?dWO+TIFZ=4~&%V1?c3oArI^%hEx+ z#F$l=RL^C7HQfn(3z+q7M4}BSsg_yaG_a|FS>K5yjsxtn6|<}gE)dJu`ktixF`%Se zv%dNs++71^eLIqv4CvR<=@laDDlNZbYdl76=+KU4%vip(wJ zd9Jd#QX@+VEP?HVl+?^iRpJQuo*zdVD3NWb%8dpcnHy^X{zKuNVszkdN+0hoTjC-Dtn`i)tlU$Kn!JC@kqn*t@}ntm?? zI}b4ZK2PEq!1Q~ySBUgmk1GC8`u&^l${P9|x4_@wj5jv!tB!lD>Uhi-Y3e!FwX)XK zb4o|i1k%*Qtz5^u6%@CYDJmzOCo3+-qNw(ksa(3p#Mf?WofizXXV!H*!`MgQmf)UoHsZ3ah~i+;jAxw+`ZP>ur3MfW7J zhY(G{^GTczltf}KdOO&yK*x!mou=Ry;Z*6OSNSsUqLuHr|LBW&GbSmx{;T8i(3jx) z7r;Dp6^UXlhtFK`1Id#F7fbsTnv%ay?=Fal?Hl`m~i8ME5p zbqznKf?`;iqSD|;t#zM%x2MqfZd<0n;Ge4~a1CSd!yY`_iS#H2s^5>?5Dj^G5{9>t zv(5b(hdlwa&2!I*?PSI=RB6xD987()&EHe!9>8p~dL7PJ0?anICNUN$iN||qB<_yTmsi?0kh4gNIU_QRLgAh3$V`s zv&~*jTuA}5&6p(*wR0+La}UaQ21?2`+q@m@X25LoQxYEn`gJ_uJ0shiia`G-+dRg1 zWlh`st2YGM=3>Wct;x7ygQB(S?oNY_e^pRCU#6(E%~v*DlcKj5SL6FpnF8A!R#8y4 z%`wH_u>J`L9rC^=!mXV>mI|q0C}8$D(~FP@CQ~;#HB<8gRm~pHqRy#++2b1|UJ;_( znfkumYyl1H`ty)#{$nz_V^PnUulm^ec8|0<6nJII#?koX4Nf~6tc%N;d%yO_INvq zTY-{lnLWM;_5xt`_ydV=0kg-LWmQm=iN|y0md#WKO3F2Rya?=kc488;EU41 z1(IS`UAsCidps1bGXb;5i%2X0N~&e{ct6;EfZ5~QB>o1NJ;p4ng15yow#U{1sh~el zQm)zKFxhxD(K?V~*E{?C~fB`ajv@lfEl!+T+D%uC~XA9ILhF$02LYk4q~k z{#mA2!yd0%{oJmr{VSeAf?ol@ zWRK7J;bWT%^w{GFu4878r$KcJVD@+`iJOJU9$z5wJWvve+2c20{{}k#=Gn;}`@*Tx z9#{D?Z;!l+;b#x?z00?f5z`Rn_`HOWIrbSuyjZ}@aSIZg10~fmbKDPXAHdA=y7hrJ5bLah%q&##=@fRZ|@8ZO{!B6vvk-Dy?zQ&^0NZ@)R1~ zOUo3@j&D{Jl&x{xgZ{~Bxm9Hw87lx@^?5H<^6rl@`P zyk=qhu8M1{oHL~PKx!<>*bCme^->%(;ytNjfpdR63D(KGGP%8x$UJE~>P!I4ljf5+ zRfs(4F%l00CDE8C1?w}{lVhH=7s&3wFL~13a+@ol$CFM(`Q}MiKy?{lp7bb*M})|e zJ|OWApd=FWr0T(`AP01u?b*qb4un&sC*A1FVo$Q?74xJgeF+=J&<&o{Tm6yqB`6jDHn(RY4@vwc-jP21=cbW!pRTnC!Ali$ZH6`SC+0pH0R?&dggkOa%jgA&=;T#Pcq5 zZ!-1(>?*R}#j)+LfLrpJOm6pi-u4$$=W@Vo{}mE13X$!1AHw%Lpd=cz{YhY317`bo zlDG})8Sn-M+dmHJ%=SNq>O;V6zk6FM=mwbWk0dc1D2c>ue;2TwfsUg+ zJK6reaH_QZi+$Pu+Wx)1gja?VVpd&G^;@=o5=>77%=WJ*u>>fomf8L@U{3*N`(Kgx zCt$W8v*eYbSjM)$$5cnnCrdGf3XBtAc(@yfb-5si30n_d2Bu*8gdF>VwHvy#p64UJpus;JGJt|)K zZvm%D-40pvg}+{H`a6V4t6%p^h*@=CN(kxp8<_qZFx{>*JQef?O6_X*Zi?H%HWMrd zIe^4Ifax}7iEhO**6p2?-vX4BYq||aq=NsDW4hfGWHg{($AF8Rt4X)(q6qr3#vQ`X ze5GFGI}+=bMqo72>s52sOvh-gIV-rNpK8*CyFoaxg5s+GN7$RdM{-s7{?!`WU>0MR z1TfoRv)N|$MKd-YTWU!&n$c#pr15wwTCLWoJuS7|Eoo*9B*uVQ0tT}O3^rRZkOT+9 z7D%xFge*XalMq4@5+H%#5R(TM4gKsWCyNHSX zcNKDsXE}-ue#Ownt}gyz$e{)=WH}(Re_MEw6WMZO&cBAJhS{y3k1^=)_*CyD^Ep>g zHfOK)KvaJ_-aj%qQ|}&mHShj7e|X?!Xv#gG?IlE}uXM+yFXgnxn)Xh7 zzUN6g$FDTKE2bLuL_{=Adj8NOsr?GGwpYR$l*bU^#wdp%m%XhI(jQIo)KE$;pJ;=jPc{I7< zURE|&@6A?w((^mss?YQ6(_Fhsp?_PmmeayddkZhw1DwpYZBt03#kySy4_v|8?72G( zQE2e1vIgJ&ve@9ed(P7kEmO)ImpAzCo{N>@jJ=3gJoE;C&>Q?_9=@8ZcVlSqhrGd$ zxdix-t9K#}b8XHDrcv9x>a;_vf`0&uQ zVP<^!v4tBEA{Je8U}iJrt$C~Nf48^ltdcjYbjMF#4qDUqQA_d^ogR4$<=(`#srQZc z(1KTgp9kOK@)@|+GoWlQe%^*;m21m+aG0JGJ?H8xKlU<&S1$jcFZB<4D-UkrI`mN* zZ`0+(}lR9OTl!{(lQS6a{!EHP}orQt+Il|FL0^_3}P{`Op_858e2Thi-fpX-a#N zgLj7{8qfZF3OE1c>7}xk|FrO2<1Frc)8?&I3rtS_msK^3<7avbfr%AX0P&d@?C-$0B? z1;hLI(v{v38qvEz4cB=iHiqO&l%ap6J8pg@jj&Mr*Y!MGbnh05y@|_Pc3sbXxq6j;-?MpgA9ugYwQmPEKjp`dxGuk(8^T(bE1?20Tm`85 z_tLZ&qT+AU^K0%R)r|N2oA2_;o)7<-uZqJz)AJk+|DJwuJ1!rNnV!8G{#WzhrCdJz zGd*Pu{||ZaFI?qE{QnRCU+tg~1HR&J4vmj;!`&hX>`@9>=p@c_y0hDl)N;oR|w6EtGx`AGC8XWJ(|AD)n-Z1^{^#1=@w%8B9 z2Cor?FMVBj)ss9QWv6FP&zXI%hR>b7ncVocE!vw%f40K{yA^Hz_sti+-x7fPlN07*KpHw z`+>CKP37p3U3Z;&b_+jU&KV)B@1--En;DQ|A!I(R`S%xLAs zg&VD5y3LCJQRt&)*S9HNZ{*lB)zcxU1Jmq4(*Nj?^H-ofJ@h(HvjT0{5#C1WPBb_< zc&Jd@!D|aQ$-&j)-SZUI_V(}uKu%w0Z_k;ZqngS;^Xenv6+i9Y>-43*$K40%;N9xv z-xrHJ`1ZnG|Nko7d@M8^;q&0b!wl27Bv)>@8#lV}gjhP^*Dr($doJlYbC_v#+2crd zKNWtNYuEZz`#177+4o%j|1;kIgsZYdW=#r zySBWCzVv*cbe@i)I!=xb*X|B`a6eeGEw{hL{fD`>T@gwW-y)Xml@@SR^OMniVR&~u z)Ux@t-kRU{)_jfpU*X#IijZ!$t2Lir*P1`@);xL`&7Et@wN8Wn=XIqsAMrY7 z^FdyHj2s{3>eZWlGd%eYci-Z=e3l!=_KGF`9$w>r?+C?|Umt!v4&KL%F6|Mmu&?ku zEu?co18Ap~^3!|He6gz2;@Nl*9|*2qz1gP)b2WD}T()lB%#YV|^*<>Tp>=bN%yHdZ z5T19ho9jY*9$+2~wZqN3JR5TR(5J$q-w7q%KA^9)H95GmFjW1w6>h!}QqszUA1pjS zcyGAT^6USba3j&`Tpp;@J;~62gvS@zqiL3##)t9kZ-yzM45R+`p}&+o;(z#eo@eg= zNl2ovR}TeDIv)|81 zyz6Q&z2b8Xeyg!O`1jZN<5}`0SKTl{hEH2O?}=;u#e--0WGvnB*>@z#kuPH|@A=H5 z#g)IpXZ#Y^g?k>sv)_G~-fy`5-tZ=?|Y>-#3{ z`CRCIDY;hUQ_S}n1nf5^TvpLr`0*yLUZt{%KF{6fxXRx>eMPUz zI^;e2KUqZ^r>W>qE_luxLyx{kDGzX2MdywJwsG|;l~uHlyXSG0H(cifyRJv)Z0qjP zc_A6T5US|Qn{SU5)hMOPWfi@WA1~+XRVu6K6Wo1_tNgUnS9H(2&+i(#-C0F9tD^g# z_203guT#q3a9Kr!n?|mrBBip5wsN@oy661viWahpzNw1-{8?X$6@8gfzQkn}{Rcn(jjLCw ztfKSBv7>X97f)Z&=tbQXy*R7rTqO9Ozj)TJH-{eWr<6f1t7wrQ$GCcx$|`z0cfZP2 zzV-AK&9AHIU$Tm>P(^=p!8>C`_fpF5aal$G#E)-t^(vKB^tcH;l(@=2IDJJg+}+)y zGp_f^$u1{V^tTs01aZg~>|RRg<+6%Weq5&qN@W$jhPz+kDxV!nSU0^d-ql^vo~)v~ zRMFpGyc{d~2&LS^WfgsmA7AC_RVu6KtSdJpXKQ_;6B=znV%y7yAbySc2Q zFYx1!xO$b!D*6$3|H)NuoxY+6*U`F{WEE{yMgMTYhhjxfncR>(iOVV~^P`WeSE;O` z8@X$7m0xlCil&~|{f+L(Dtf*u`t~y)_p6~tZ>E$ta#=;6;m7ZA^(vKB^gZq#;3~iC z^cB7NsofQQEUV~ss_36KzbIDps0wB$E~{u4KX!2SDwS1K z?o~zK-SkhfqE}GLtz1^oZ}Q{Uxq6k#D*8Hif5TP&>gg-`^xp0seLt({2de0SP2+D1 zLq{Z@>@+UejaO08_cnbpR&*1koZzyG z?&8Ngxq6k#D*7^aU*amC6G~XOU>DX+hK*T8&sRnNvgzq>4?X&KO8Fs|RrJJZfM>2= zrLv0lb2rFUe&*>bdfB>)db5h|QbiALdR45bNhvpQSw*ks$LqLymC7o*m%HENDnIY^ z75(6C-HdN6tLU4m==+=gJy!G`O8G}FtLWh~V3u6HN@W%8)g4#4a{7usvTk}WW)&$6 zM$f-)p1C6o-Sw1mEtggFQhwaR)vHui(MPzuhpXJ~s)#+33t3v^}My|6PHJNVIz} z*7TAaXY#0qLV!SnCS}Jl*JCy{Md7}B{8|~znPIeziltavX{Sop}*YrE?$1r zULMO{e$-!HKOmUwBlfZ+3xb#X5ij@pSBn+iV&y{Zczk zHMzd8#!cH(J_<mq_GTfVUP8NUCH(Z^q*<{N_Fju_v1*$w_FnW! zp(Jazdx9)`EQ?ELcTm-cY;j?#vi|Im*&`BR|Kk5j~RfBGt(-QacK zGvd?a<5Z-7r8{1J7qYH3=7!R<)fiA%Yrzer{r8Z)G&O5&XnGsWYFAqFM*KAk_Aj}n ztp1mjHk?1|#c#Q2k(_JZj;9_*<>A_5jXUlS2YJxPRnuua9}TU_e{HeWQN~g@ndc>> zeF4|5m^P*`v-Ed(^DQnjOP_xg8%nwOx95jUoYIjn?tem8ecX?DSAD3Dct?GxuPF@m zb>7Ql&sVRdl!;Kvf2$N5p^4IFjgV)Y4CAxs<4okz6(O;}Pyf1Cls4+?KHtuuzoK;U zkGb(;t|%SMKXrd7=DGJCq?o6MuXdFW>oMl6{*~?!2C~V%+EYsx>Z`Ts@B-Hs`&b*j zl>g$vce%EH^(|z2dg%#D*>n3^vzJgOdS+k74Sz_~8l%uR(KS90x&nPZlHL%co7o8w&j zCb_wjAMfBg_*bDG0}C+)gwHQz?;oi|t-AfH9c&kF_?j_i_t!Kd$n_t5Jfrj9&J46_uCev`-%ry}T+`UAmzU}H zMYfoKYEb?~AEAS#pFK^aBDsDabfxrwm!J{%Tn{|mO0d!%xZFy(in$bl>9@WAmS>;9Fc?@qOF$e&YGK za&aB8ia%!+f0X+Va~(Av^cNdiq2&JI@I$!jJIPEle7n>YN%^|MJ2lT7Fo9`dnd;#6 zzafJEaaJ^cWX!$hYx*c3f4qpqMZf=Ket*)2^x9fd`jq$o`d?M=?zG-*kd^S7Ki;JW zj}@U`Fb0388JQPat1CR;an7US2Y#1-U>o6g8;$lab+k0+e ztl)-?|JsIztVpF3_y;Q(SLvWvB#VPrbnx+ci6ey)N3F!<`aeY^EA8@JzntaT^|*Yv zdJDNOv0Pr~zy@yv#_1a*B`ybH#K|kA-tlhAJN80eVJE&p(rglxfIfceU+E6nJ55FT zH|ErXT!si8tU@Do39$VNKmMG{VBf8wge18cPKHFhHx}??lKdB!74XbiLJ)BEzK&E) zm9p3ua=J1)CHDndP<~R^<6v}^ai8OxC6!JDaUPCt|4Mggf?u|oS0}09My|^)<>s6G z_!`&9)48$#U4DRHrHOsh{3+MqQC$0~+`NJxw{jg`;^vc~{C&r{`7lpE#C1qg+RaDE zep~6W=cqo3_&?;$cer}>#+chL&jDz18FTvzKfcUGZ66AS-bq%mk2M}H{WeAbT~ByQ z&pEBNm%yO8p7{QAmcEZ{r|X>A(j%7M%qr6LgdIJPY<=WCSbn*l_@Z-KzXu`Ib>8zH z(YkK|ZwapRt~h6@?;)U6Tu(SovEOG+>pE}GIjzq<2b7-cyvcJ~Pk(Ka=z8KSACX)` zW6s39z`RW!$Ax~7kSy83b%5)Py?tlA^33;~nVj+J(i=->yzk7<^7HPVdwR~e@65mD z=est1V8a>jIrDvIp7Gf;?>qC1zdiHEJp9TT-#O!qH=OmZvyyM0t>PhWr~ngmke@9vOGiL84?SssqVV=)W z-f_}><_>;y|2h8lQRc%L!<)#XfBJJh?`|R8N67o{P@%WcmfNW3oJ$yMu3Jd-J<9(n z<))PRzxn+>(hN}l4{7J0qKG|-a?YjPMao(v&9C$R>$K;IJd@yfIb(3m5N)B30e(-C z_o=-5W%_rR-(RF{-)78y@AXK$BvJ()aTI2ek2ne9xQc-?K?mr;mR^xwmkC7iIr5ZTc#0 zy_?@_l=-KW@p#(tRsOz;G+*cM7V@33N?(}QzewBuj5=ORop(Nhela%RApcW%{$1Mj z8Pa@&c?@M-K-qsly_b;wx9IEFN%JM{-%tB4 z=G~L&&ogPybGbJ1`!{&LgZw|Dj-PQIq+Q#2_W=1sPWmWE1Vc37?R?As$w1;N4@_@pZ0QpFTc;F4?m+X|H#;EILw%lRzcjqLc4}Y^UtIm z;qO-3_e#F$ZvK)ixsSemU45ZF|BEySXu~eX|BYAR%tE@K(3ZDQ_ajLB5b7N#-4U+G z@OzMUf136m;oHx0J)LJ`JbM@EpFsMzlfU!^<`eZ?Nx2vC{&MR5O~&y~%AaNYKg;hk zN9fbt%xB8oMVhN9<7Mw=-O#Q-qJ6(cIbWkckD#n)(5G`r`&&F~Qs*Di_rK(N0pm1z zGwYHxe^1);ss9qnYEj3FN%ukOdpu)wIemKp&wiaYo=d$4Y0m=nUBJ87Qs*}*>#WC; zpK=b6_Ve`bcd6^elz#{BZzb;+Y4cyvt_Ml`A)fu1aeF>>Pf^wnsaw&k9!(jappMs2 z_WfdXIZXTB&b%3?{6~}a0>cl>Mi)?LzW@nzlX2`!(MGfO@Lb@c`+Pr_x@250U<2zQHfk{%2F>wVKzY zf7okSZ?x|{^zWs#@yCqK?TpzilzkU%oFv~Hd4AT*S= {!`Z1sdEoyoj1aoq`qrO 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%0A4=?s+Nj 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 A761SM diff --git a/src/components/amd_smi/tests/amdsmi_example.o b/src/components/amd_smi/tests/amdsmi_example.o deleted file mode 100644 index aa03cf6444169c70e3f4d34c3e7304fcbd6fe3fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51184 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 C?QV$x diff --git a/src/components/amd_smi/tests/gemm b/src/components/amd_smi/tests/gemm deleted file mode 100755 index 44b48a05898584da18eeaabf3ae91f25e2628a6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202424 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

@8z++02Ujh5!SYg;Sn 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

nAqclce4@K?ia{oQ`EADJJWD_Ls$bu)55Xr^K4 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

B%Z{yu&sMAU!K-vLBlFT0eTAH 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 DI^ zw6yuh;Bz#WK}&t#VA*~T&&?%FrC69N{T!793U~7LJ zK$!qRZ~lD%40oHnV(FUV^w}EYg zcR(e;*!*Wuvc-Ft{TWyAD!?}H_iXlfuipeP(aUSThrP*30F#7n z`@BOTGiQqDO$a!kIjf;h19t((s>KG@X>At&4!zx;Yr)|5ut01XsFxUUu{Hn{kAj)q zo_$QthV|T@7myUZ44Ei+bLH;fCt!JD(DKLzB-fdG9xHI{Te==Y&U%s4@*I|4BGV0U zZz?a84gEB6dEE(BT4|ov_}B8YGf-9-Vphx1*j?up3BHy~m>-q-jEdW^rO0pH4?h%QA5Ve4f;Loql}pwv^-pt zWz5`QP9~4y;vf&xU;{5(Db_V7W99~PjnC1vPsGd(=37T7n~Pa6DEMT|++cwKGG=Zt zB!G;W8!Qy9%9y#qh|ovI%ncR^AYIGdCE^;o=};<^~&i*`|z{8*D7t_Q}oU zr^pw>pQSk&GdI}8=!2}5jF}rO3H*t)+e2eykux`-xL0Z|88bIn8ZeOMdvPs{5?Em+ z0YuE)z)GPqa@!j)>nbBkHW4#7u-ckTwjsqRSYxw2Gau*zgAWsYB4%#jBI`}E@hUKI zv1Aj$Uju6ekTG)u>%w*cy)q0U^jF}s_u_4nk zW^Q1cP+G>!4csJvjF}s_SpXR`H*kvpGG=aIyXcyXnH#uOfHvsw>yYa9#63`eF>?dA z8B?i%h?yJMV>J(=O`drJ_sFTA&zQM^d&O*b<}+q);663gctQ)@FC@p|mqD!`Fg~F) z5i>XNm~}p-F=lSyals~I<_4Y=K*r1sJSBjPnHzXo02wnk@J!xuSO9mz?w$$>&lw#c z%_m~!241uFQ#8-8f!F0WM^3%NN}8BpZ%ApHlQDAxM~urTpyx;&41u?-3ko2BF>?cN z3pN=uH}H-CGG=bzT_ue%a|7>5Y59nm8#wA?`!Z&3;C-QhjF}twKmZvtH}IhVGG=bz zm;f?nZr~#UWX#;a@hmDMW99}v4!#Q@W99}vDL4jDi^l;XX0C4q4yfY5=N4JyP1D_g9yFH&F zzm41>Fx-3yTZ1;3)mn2IGuOGT4$q9dv0uR!kTG)$ENds&M9kcR9FtY>U;-1qAUB`d zdh!`Fx1eDGxvb#MTTqfO&UBU@WX#-x0w0gapdMt*+=7AtQA`g`Ukw!UJ%VbuL)L<* zP$Ear+Y2Zx5iXEvEAojo4KZ^m;m}F!oQYKjq2!~;^7VNPY7|7R%tGkNn7IY99HzB= z+=nV?Bs7yTa|;>^kPWj?n3FMc3z`^5kS-K4a|5^;H6e^WDr4pb5Ht5%04;nYlnWqc z?r%VzFyqPv5HpttzZGW8+yG+c{ugDzFk|Kh5Hpw4Jr)sb4r1nV(J2lyW^Mp6b6GDQ z<~^POV&)Qc499r-L(E*FvT$G{5Mt(X8LSL5W^N!RQB{~Ra|4K(OU}XJN1g^k%v@Il zb1Tf4xdFt?W$Tl|6;pu_GncFR%&<6&5HpvH_Uv%&8k8Ys?s1^`;l<=c%v?XLwk^zC zB>|j0xoqx<@D@k_F>|>(J{)Gu+yG+cz74c5ELK6p%;l1J0xM4)nsww`G@6*wjsi8M zCu8^=ApvAyMMq(PTry^^BivvoR(}~Y*AekN*BHhVF>@V7xpUAn88g=rZLknP#>{oZ z#NsPs<~o{+6;8&?bu<%4cP$2)Ls`t2xo*#oNV+{-6Wt!JWg*7Q4IpN2A^Kb>V&(=A zGncJ}U7Jyan7IU6cv=r2#LT6^Jz>Vo4IpMNQFfRya|4K(OJs!^GdF;kxkPzrhuXS5 zS@;{uHBf|@xj}%!=@?!s&_lQG0g{uXr`|xEnIa6+6X>Pqv93o89hic8y>;Uv*88Fn z>-E*GFMz_gUxA{2x?J03y{c5bS&yNxzivFidi%S;xPcnoDk(xeaV8!hwbXd4HgKA3 z+#`hyltOUBqMFlbkZ$}egzRMFBXnyKg^0N|QV9uvPzT0Q5;>)m+LS8ywM5})-ROdP zg%86HR$#1dJxVEJPL4Z8%J@^HOh`%ji3i9;-8i38#@v9T1dq_I?}21{QzR#D0C8qd z)eAYZVZeRZxCN%^#&fJU6MZNPoUU7~qISI*c0Dn(XX+u&Y}A8`sunmyH~x!yp>OX8 zn57r-#&_Y>u)7sFOSk5wge=s>%+%xou}BwF6GEo*Xj!Zqy}?=7=nxnDrMmTDs@^$v zMIyHqb=kF^jL3S6ceUjxOh zz(zfD4>XG`#7X!{J(p=Md~2si|7Mahj9>Pxl3=ju_0JiD5Y_VY{v=l(t>6vIl+~b*nTyeIl z)EfSKH3|`SdKB`CTCc^@tOpQwIun|Rrw;*yo#tI5E&LHzUWA<{S`}s3=>Wn`Q>dm# z`A{W*u+xONht4N10fe0<^ypEBoem)EG-0+LW!UKe!cG%fdi20ZK!lwp%+tl~rvSoE zQ-vU&mvFHuKw4;w8_u2BH-w#D#J(k{KEh6u!6Cy=s~tqBxj6!v%|+Ph=0}!8OU=o! z)1j6|5(Of>$yrFKYmt@=J6+hsnvAT5BdRz64srd~@IrJo+(?3!0{|jT%}=0I%at&B zq=UTR+l)R%I?MFeXCvK3+WR;d-?Cf5lQRaib~HD*+#Aeq$$-|5*3lo4c6&Z%4g*>{ z;)#qV%pp$`S|$dV%Y^u&wJgg4R~LU9!Ih1_4H?infPmIyYFO3_00FH9U_k2t0$M+S zi$`B?9O+h3rgc5)h&b>?Uh$kn^R8WnIgllQ)7xwfK(+uL@3rW4kxzhZ&3PmMWE!I( zAn+0TbI@1Rz+%W*Zv;bGlo#Ri0WHWofJOO1wsR~yxDa!?DCC_4wiDUG%gI=1t_1ou zJIGa}D4cyQkmd^xV`CA4Jig$cJ%Ea`pGKMG3%)f4C@RW=zTniBK(XxOD2w@m2loOs z@_r6f>Y$S{&+c1(`<59`hsg<;-Y2(Rr!LK)B!cm zZjO3`eeI_%nynSJ$gTmZ^##wzwM$WP_L)GFe8H9&xuTW=&GZGUV2Gkt*%zQ}zAyL) zrL@l84z$!49KIT;P4*K&t9-%BumTjd&3+$ftuJ`=X`m8;Hu!>@FbRv=W&eV*ExzD1 zjA&6jH@^k;I=YP0iXrE7O zK%2{{!<9?kYH@owU`>w0;v587%vmj`m)mnXi#dBZDx!{E@j|=g@l#521!N6OTW$y4 zo*QjWj?hUNxhzHTA>?A$pQ{?;P~~#g=W<7Zl5g$m91K~Vn@6cDH3yFeMMBL!DIThj zONip-G5&31GjZgEbSXnAJH#&L;K_DW$$YzHD@(*5RZ=O$ueZxNw7GnjLolJqU3LkF zIhWkI>DE197jvX#vFgyrc1aFKPnIwRk-W9)_WWs=a~{~1iXh#Znz=n4kQ4^t=$|x| zJ$T)a>+}uA{3vtW4qIm}LW;(zma{jbFquCSX=RryW4woHGHcwAS+O3AGVjY==ZH|3G)1>f9cFw@?(ZcJ5ZJ zIre<+VwX%~3IBkd&n?`Z5dhBf*-$^@LYiO_P7_7_3+5xg!-(EEbF^q!34TP6R)MvB zh1cW67VYSH7A)RxAIB$ZI*He5H1AaKM>`APgzT+gNRZ3dV92oeOKC~8Duju+rfY@gk zP5dBB{1EX5t7E6{s|8CTS*GJ{?#ZA|3%82Q=FGeq8CyY}MQr=m^xW5qabnpxxNL|L zSlbC+i4avTgUOV`W#epsA$nX(PEkD5z|&>E0`mdDoN4Ut7Za*L)6t#L;$Ergs!ye+ z*Qi2-*=Y?;g;IO){0=*Tc_@DR&m? z)d!PrzwUetd_BqM(8`V|A#b21$A1-!M#eJ`Sr{2#X4rrS|>93d_kLq%&DNxWwVia zwVt~M>lP!I^q}eNri@BhN8hYFj$m+vg<@h`-NY38*dJ7tO3^GQ7df|!{vJ%X@9{4Jd zJj@oP4zu2i!Lv|ahG|zI#yNP(&Q=Zc(4&9bKlSKh#Utj?)e59~bn?*a(-7+GZ;Lfz z!!bFHt~cxsHIL(c!5gn6M{Ayd&V~xpL4D6Uz`P1x*HvtQvnHtTy|}E=-|_J#_r<_x zGq3Bd%xl7hdC*4if%?{9rPJRP``_{_b*&|+AA%vh+lHa!`0^TE`v6qU*lrETwRy9yT>|R=Yc;q&6kIK~;Im_({%cnw z?^rfF`6TdN%qy6NyyMwz(52Pa;+w6Y{?}uBsUPo5zQ=$cWnL599@IY;b-x1ska?Ad zkoSp|fzi19I(!KNR4sxYe=07{^RCzN;tukrE?SCEh5233#yDb7%~+gY^g+7YeO!*^ z01b!4#W;EOo~7xXb#dZpRi|q)P+2R*)B_S`fd>-_9#UA2oEslrnNcpkTG!<(K99mL zHG59%ZY(ko8fZU`*i}l3ZYR)9@zcM_c@t8*9R|~lXzvEl!1_#sK1Ast#+$%iVvG{? zy->zhLwr@R?64|Zhgt81!aUO~$9bhu{mFe|r>&mbLmP@)t~An+er&|;c`Sy=UC-eZ ztKX{I{sON#Sca^+S75My!rZr(aHsh`w0;`YZ$4ts-kRi;|LX>Pf)3PIjOc9*mSIF^ zZq>C(puS>;+$PRbF9AOX>c8nhNZwIE(TN+eB!K#t@X*-VfX_ZQZo}u5K>c6Eu1DXM z$u^$i_RWuK#416aT4Rycx!x@7C6=(Y<^ilA;w$%e#s&@k2?z5_YS@4y-a8uAgLo{YyVoHn9?DKdIlv_9^%XL>vN%CfD7GMFk`@`w@u~1k`N6T^M@M zFxD6CUkh|K2)(8TTU7%NJCV|$+M`Ju+-uvQk~&_m#8+Ed9v`q5^XPX&{@ zXmuClZv_c`&e(%JBuJ?J1`@9l&_HeOK|Dp!FxC~yoddKO#Geq~LYYY0M)B81gpkAF zcnu_k`0mv;H%PQK0f~_W?E5Q7JOdiWxqHFE!;k6T~uBpBcwi)b1ib3^# zuFb$vvHM;J`B#F3J`L~3aRL%*uR>xO0sH5*c}+0 z#kJxxAQ=%Y3Qf9*dxlbzF5#1!bSV*ip}t3oh!8Q zD@EV3lNm)k-Hzk)CdV}Km}MLT5j&=f)1fwo5t$FO|X(#9}C6SkTJ z2KVx^v`<4>`cpBoXBZ=JdN78fw3ZQ?j2Ug2Mz^uBX%n`z$E_7mbXE2Q+cz)P%s27w zk?@-X1)kG0Cj7Mq=KxUliR_63=VPq~1zy)(+8MB>Q#%&pZOtW9z;Fjd(JgJ2x*o{S zMI-nf!72X#*DX!DqPhO=isnjlKXWPfvw3L5)w2@nY%UaO<$gAf`O5uF8_p|GmuJ3;4!*sFT&zQz}ms2Z(q_~CZ*Idf|>}OWL7!wQbXDm*+ zpN*%8t1iQpv^V=+O0eC}o+f?xQcRq~?=Fi05%i*7eK{5P) z-T)K$mpp(b{ev+O8UF8X!C?EpUJjA|-`Aos{}b5Md;R|z2$lVRc7eYBCgAb;LzpP0 z|7y%rzyAcTDlPv?dp{J2Wli{|&ko`kVB}-D3YwxEC4m&tHd=puchrW}E+Y@WlLsAg7W4%653c z+W!&SZQ^f$7MuEqVPDY9e_juqPW|Uq;cY8_9@;AQ--G;?{+rQCEC201ag)dIUxKC9 zZ#KbW6aN#?t;9dJ4i7;5Ay^~s-yXq-O8g9A5Kf9+09 z>+FAgHExCaPn?f^mcJb|O!_ZEX&3)e=-Ji34u8A({{>CD`?r9z!v76)tMvbY5$xfA zIgG0>|NB$${Sbd|$nWj%vKjuX{wo8xn()&Tu%G`JBv<)IZ-)=4zuQJcHS_O=4mJK+ zPvczbe+#xf&A$S69_T-caT()*N`i<^HBbQ|M;_8K^^`kP^e80Y^0_8;%xx(f%q|1->xiT*F9 z;-;;C+ARp==6AzNQ~Y0{?o|I}m^0J--)CZn;(r4DI^BN_X2=YG$=TTQ`Tu3W71#eu zBLs@^e+bF5{PdfgjrWUJV0ytfvIKK8XUA&HuaFy~fma5{B3+mXF3d>f8_5YQd?P0y zVf#k%AWQj1VoNVcVXBX45`aAk%4cd6smk9 zWyenOjch>Q$Q~KcP5DNO^qrGYxobue_RYBz(+$3n9Kc-V8_9vnQNEEJgB;}>Df;`V z2mJFh*s~nv8%d?LEVe!bEr~T#`9{_O+rE)3*SyL%k|5<9DfPAzL^9jihv!@{PP7X}56JBX=;p8C`&HB!Y5+`9C&uLy;2p zb9<<#+ryeE-^gmP+rE)(A>|v%g+JvR$!1f&ku|8YK?}G&teZ6(e3C+s@ocNe+K#_@PvDQ}X+v@}oCZxqN(M%%rX0_L&T9bSc=iGc z3xwmD3CFYPl*z}SCLGU%)kAznYQpi1$XSScLna*02s|Nfv`jdj5oK$^l{hp^IG#lz zq+kG+O^;dY$i0Cg`Tl}A+99Tq7UJ`4bBshzE!gV-;8;h-0@k|@^|H+gj@*w~?_SJh zbD~{ONSUPSh4@(AoGg(CCpB7PiX&qerHllBYd&SJYNmFH$vw*6V7uiwY-t%X;3)N5$1U# zbe=QeJVzMxMh^7=g!3F>*c)kqQ<@3qIl`DXLgzUX&U1uKy%9RknQ)#XEcQm|JZHjr zjCSUS&)tHYbmzG!Umr2ko#%?gk(KT|S48JI^Hk?K&PEQjn2m6rBc_>R z{gC)C-VJ;a|7j?}0OvWHbfAshc-@)P5YBUTn1(?*&zW$Zn+XQDXD-fgwvf=f=+iPobITfhMIJ`GvRcX1TGLx zcP5z z;LS|Qga@9K$#)=3c;HEy^uROWfhT3s1J8s9o{%Y9fCnCtr3LAMXTk$77cvWk2c8KJ zylp^*^uROWfk&W)j?n<{z}o{fNy}otm=rS(9(dGg-$@)SVMpMBw-|Y0>49g$1MfG$ z5Iyirc;Hb5HND`0$0B&(QAj410wLJYg7m;M;eq!O1xXJ)6EE#9hB_g7;F<8ilY;K$ z0Kfx}$Qhyso(T^;B2S1OcqTmXh_XZUz%${2M`VTQfoH-4k0>uh4?GhdctpVvJ@8C; z;Boy9hv7-nef14*|x~fi-F*QN5x`#gdTV%Jn+ccRFBN#Dhdxg!eTu# z$N+=~9$_0jGM48sc;FGn^$0!iOnBfCcEow%0YG@*(JEzngdTV%Jn&dr=Zw$;&x8k_ z(83wHn&$<0;1R}Ljp>1B!UK<5ZF5EFfoH-4k9D`Zr}l`!(_u+ zi0^5dos9fS033wx(Kwxr%%@my_kN6!nKW|S<6I)!>teUZy-ZgLoN_PIO(Hbj3KvRd zcO&CB3ONl2K+NnZeeI->UP?%aF9Dgo4Y7E53i&Fb*+(KP#8(N;zLGN-;;V#aKZ(Lx z@MW5%%E;&r#hQ3@bD-f}*8rot7iKaC8~NNXG&Rw@ImF24%Gp#b?n8|N?x>oIeakQ- z!VON-TiStbxB_BdG{OjS1J$(URFsTVK%8Yp89~~VJFZY>aja;D{U*9{Qw%2NK0`+5MuL6c~3AssYLIA{{pYC$?^nsCtE4I6}| zgQf`w%^UKdc9*p%vmG=;^l38TpvkicPFC}P;GoH!n$sDfgQf`wO&0ccM(Chv!aL{94u2nS7;uJuIdplQNElkiecgbtb}95e|xcp{&&FL2N#+~kRr zaAe@1Nw~!m$)cU%ph;NgiHK9wJGO&nr=+9!pL6d6i@I>gKX~IF1ef``M zp@XIg2hF<(Gb3V43kS`|0kH?9=a&fwO?HqDny;fla*8!tIcSnqU^r;9{BQ~@u3#>$ z4F}Bym?O>QO*az`nx2NZEhZc^{lY=hFB~-e=?Xi8+ z+L8{MR%ZdEgQis`fOOEb$_0=PnpRQ(>7Z$K5kNXzW~xf)2hzGAS(w=E8RiUN_Wt- z26^s>H0hve4e=iUkPe#GXnuQ5IcQpA^It)UbkMZM6}$@|9W<@+LLKR#X-yC}j--R8 zHPQPe1V{%>Ym(4SI%rx`JjWp5faa>6i7R(^0mn)>Xj&-;&0D~L*W*wihMjte0cY;@ z0Lnr0c_wGy&Ro9MDR@u(ANJk^Op5Ak8?Nf^nW?F&nW>rX)73RYLj%*$EQ2#_GY%-j zK8On<2rB9z8i^Vu#)ZU%QQUCF4T++nh>9z5-$jwQCB8=Eny9$OxbHDB#{a&bQ`Phs z%$xVS-uJ)0|G(b3uG3S`InQ~{ermn%C(=#oE70#C>lZOkf&{SD{On{~e%@d%h`sjE9G*zzV_hOB6wQOfB z;?|Q8nOmA*Eekmx^ud&!J4a)RAi|1(#%Jge1xpE6lT$+BJP0Ix^ zU=x(-C*$v+I1S45eeYS?<_6|xL{Eb<{Xhf_%Jl0+(4b7eK}yx2OurPA>6d~s{XV)> z0cHBRT5bp$lTZh!RkyKP>$Xjw>v7hC|I- zym1ok5R~bUN}Gt%piFhV*9Jk5acYTF8NEwTrs|GosV1OIb)vT~)p+_+&C{vv& zf(B)(vqT^$lcybg{m5BBP^LONelRN_piH>Ek6q9j~cW1j;NUC{vvm|A1;IjK)+@ z7kI;$=+VvM9;eJuWr|0bH2Sw1JO!bfm8kDIvil9N6YE$Y7Q~-}S3CdKD#+zYH zgEH0cybUzXv#NSVE+E3G_iSiQCfM(_HKUB6O!Zv+3>uiQI~Id_!8@@R3=ov5UKBMA z%2Y3jph21H<U9w`C{w-RureBysou=I2tk7~)my=<5WWY>RPTCJ(UY?jl&L-zs~VK4KCP9vTlN|> zSbZ*n24$)*rHCBn!7|vXuzrKKlo6Dv-j4IQ!g>qwW!ImFn6Kj0sn%Br89ScM;sQYc znl&1rS+;r=S6VKHgrORsnen_^AqhY;Q(Mg}8lag;`mDJ%i~!Ay3aI5Z5ulmznqNaO>Iu+P0BFW@Xnj2anhF5Tc}Vi=3D8skXjURE zQ$OW2NC0SZ>gVL1PDKFCdIB^R0GiC#T+io-3II(?BkOZK{Q;m!sjZ#>O$C4^x5SQm z0yI@lOP%!uXet0SsX3$m?v0QD(5%T}p4AhesQ}Pq>0R=OSOK8Poqb`wEGYmqxq%;2 zKX)lK0nj86c2PZVfD{0l0eWq9J#Um00GixF*EjG^NdchAo${`Felw*2(0m@!26>dN z0MO+2SOU;wr^)pGmjF#_6#<%O;7m{iXs*no^CE!e(P&u_pm`jGB0y7mzoko&Ze+fF>oco&Ze+fF>mZG>^-%G=*PqJ0J-F&3+I90ca`!H1CC^CrJd* zY~VL;3II*!#ho|-nhF5T<;?fzz9>Zjp!qo@x$##KKvU-fKr_sD@O{V!faYV&CjdsUAdn#a=!Z?hEunqovA z3Mc?HDJ8TO05oX@O&~y10iZdVRs^7_0MLAdR%A{Bpjl!C0L>CB0BD9*2+&jjXr4hU z0?{o>U=V@0np^k zM!v&L zDgZS9T+9c6rp_nb34o^Llcy>Q08M#*D^FDv0GjgnR-URT05qwYlcy>Q08L7bMuq@Q z)eSf=O4vpKnhF5TQ~M)Px&;7D_E@8|6#z|kL!*=pfF{SaQPw^Hnw**PkVFBX$>}B! zNfZE@oI~=EL;;{Vo(81R0BEv5ye(HfYqp&gB4{C8h4{FV;Z<&XPtAGs|~~3OGxO z2{X$Vj0!kQik6ur&QbwqNzpa4#91ofEGc?smN-iVoF&DSDGwPHaF(n>Cd6637u6W= zCPv=}b>J)~BhDYe>H}vMUI+vOss~_?tr47MjmBA)5oa0T0VWazXE^}};q8Us zEbIGw!x7~ZXW0OpC2zxg;w&40v!oz6%U+Guynhm$Wv}7-zKuA`Uak80gQIagM)x;Q zQ`bhN#Er5LXUSbV&iDvtxe3P=76CL7&hiC`p^m(6`4k6=T_it6oaMKo^$LD{;w%+# zmQ?cFCPDztQUu~G6>ye(2cvP8*-Gz_0l1Xd5pyGJ%PTdFv&=doXq;u%6+z=HvsEIv zMj3C&v(@pzFfdf(EVFf9FU$bJS!PpNKJYV|_#iLqXIRc=x9Mj!km~IgsD0u#5oeig zsGb4oYqyDyShKxcf~kzECgLo!S&^)&rfg`^DG_R`Zh5aD)k+e)z6LFT=oO>(M za#c;lS!Vm%cS9;vH4$f-?dLuVsky3&ILmB*m#?tes+x$i%r?5z?5JuY&N7=9sk5qy zILqt+_b*7BQPoVGWp<$33kA)sY9h`uTX4rf>Z)oY&N4elq=i*Y#93wsyR(tDsH%xL z%j^*MNJxvTnuxQ^4t39g)Lqp?oMpDjy$RB3RZV}~2x*u|%d47*v&?SeK8CcFRZYZM zW}B1mLRwwb^f)zJ+;1UWTh$bs0BMxedVN(BahBQ9t~D4JFjY;jOoP^M%g(SIy<|tEuTec3})|E5s1M&0}8{br7@Vj7h3Ny%NzIO>&%12L4w9$_Wp?oo?$(JbOB=a zY0{@40x|mxljD~5!%>@yY6qc@D&t*YZCd86MeNFeIV>sTl*xtX&k=DXLTkT2VTI#w`zhGjhlIj(2w7Bzu%e&2Mr(T*KNs=s$A-cI z5TH;Q@7 zSoW~ZII&%8ShP0o{rzEkWx`}l&3lll8?rLdPa3jxk|dAdL&&jwykWxK3w6ixS{XvU z2)uiNFd%C0B?;;N4jGF}5;B!LUSv_1BxI%Oo>-NTk?&~dgt|20U4ezzArs}YgvW_8 z{`iBD;+MsZ2?wvjQMayW?yq_@u^q^tx#~(R%aIe=Pu+heLg{ zyB!*5CSt>(-aa;rJzS44A+GS~6s-u2cZJJaCtQ|CK;`f^{KFDOnCS@6fs}7b2Ys-;O_|eMf|FLFlR;< zZWI-d?K~ERFGd(8h_D|g(+ zsCP5Az^OCB=w4y;W31UQ>=W?TuDFH|L9Gr#7zMcH>_h{j&WCsoLhBx3W-d-+;;!hc z(P504!J5osW@D{8m%XX(f1*`{rpfUHvHm3F04~)WL1yGS?gfB zNsq>izv$6;AyhS2oj)9-Aq&4L(VN1vsOjSfGV6{A_00|2!pPV}>{`^Xy*rHk*R$?+ zO#Y>zrtt~$k59z5MG2EOB4zqL7+Zu+rc8SpF&9C)5MkOMAUueJdl6cn4=wC96a^0q z8~vCJ95%G7!Mf2h?VaXGfD_&+Wx!VAG!Sha`277mba-Sg79G?^Juxv6I~kR0|I_yx z*Rr)G)%tO$B|}+Zaif_q{35jRskrPz%fHke4MdXsnX3kkiaPqKcs=#ML-W2w7&*R1 z^0n|<@tAu}%+~q^q__-U78+{$8>~nG1yI#E?7&3&>vTZ#V@5fWa2@e3; zhoDbT&&TBi^$$dRg0N%XI%MykFsFQ_n<*!PX(+8SJ~!;~$=w*(9Y$j3BDe@n3O$;= z{6W*W2tl7V&u7Qad zL7nY$!iGe)wmP}m9uG@A9eWX>qH=O)XJGr9#Z4WX!K?1WIY4!iOaM&8LCSV^q3gY zm_!G~F}W=s8;mNoSN}U>GLZ}Z7m=+QDA#-}9y^HnmwYe(R>z_Jov=T2x6*;5o{-^r zb;3P3Nt&&??{c5(zPq-#;1{<=eb=fN{Hti-^9Xvux5j0`Pkk5wMud_58^zdm^U(DV zA>wWX_VTv6mxpdNjU0mR<#ru;HzICFn7$3y;~2f*W9N2^K8F{*W8*HTz+a&7F>}hA z-%hXjJstrl7-96cxC?-nYFXarBH|o`$(vF26I-J(+AS{cs~$nhZ3xEH-NLqx4d=-V zMb)$Pa2~q}kXeM$AJO{Rae0CC3L>6kWQr|4M@Js;Yk*l1^y%iF(6G546)-2p<39ek zKNQABi)O1AIkEsx4+qSQ4$@%_&C}xX1+;ZZs1e!P`oKRImiUpJXJijDCJeX~b-FDk z+xv!(^=R)M*9DlX){lus`?i>@lyzv;6$pC3?tu3SsHPq@4GVz-d#8@N1mZ6d^h&ua z7H!(c>p{FbCWE*M8V@3jK9pCpcgOndk3P#h2A8}DywKo39m%^?_xv0tmvDgq?Dz$G8W215W z;W<(Jscx1T9TYd^ZQ`+`X{%qT5!u@6oS3-hL?8wuTivWnOWfHDJ={rQr-PA%1zICVf3@d`=Hi z+n>T@mewN4;@Do_&xZCsD6!Z6w-S3|t9)8$3x(Yr){gW3XWAOizwOy@J^UMkxH0y< zL6p-DXQG^TDh-P(Wx~lnMF(D`7gJX_miy>7;Zplz>@51Ub5*P_FG~N8Y4-`jNV%E2 zDmI)qbEiLH8Ydx)l$*M%ViUN+{)mX@87Vh+Yh!Y?H1bK)C?JfKo4mC#xqo{M5%(c* zEncJ7;;i4mIX8k{v)Aa%D-dxeLi_5lp4K=S1~6lwgJVbGcV_HZ6g}d)1R8a}X)X`% zyU)S0;-9(d#_iA`p;x-!tYbCZ-(n*`&?P;n-!V-?#AF1$KsT6jb#^KumQYi!&Ni6x zOyNUBys0$}^C7qm#cjrZPnpI%gvs>bc{vK4KJE~d-9J{%%Rul+=@UR>Om_42(7XX* zG(VIu;Y*bp%6o`-hmm9Ml*oEU4*L(&=!ej@F>DsE&d!B>eKIs!fBUXpVO;M<>!qO< zFHDRH-`)p9SDLbE8XsxBImK>aPwH{L((KQ1egx&*hcL2XhU6Q;z8dnhY4k^sJCevq zY!Oa6=2d2_eS1vMAT%8<;jL~5JMV}ai>I0GYBT;Ivh8vpB6ismKb?%8b_9+tMnR_| zOk2XV-+_|^p|v}-FLxoG;XEj=h9ABQnXm6ciVsKd2>Lv16p=YIIwM6+w4xi`mSsJ^vZgSc;%m zON%*`2kDzDqC_RgheGVsogwen2 z4b4%eeA)h6L~KIfscN*Iuj8LLjV6R0AKZKcuKhzz`rDrPFnaclup`Po!JIe8nz4DvJLy@Z%%(oV%*_zK4%OlvxEcfj z*)E?V5+<&~zm=g)a}m_h0a-5thqCO(P? z?6F&YD%0NjVSkip82@t0%2my~QH7#|;%r%I#HpV~LRsKeXUs%Si9^Fu%}-eA zV@&r3+7K^Z{^!|2n%Mu)Ba_? zwrfLGR%7*+YP8-S#xqI14MF(X8i=-63mffL=?+>?`($iffv@ zC634}7DRouiub-;J=J>k9EiSJfS}h!jVUA}S0Lh2M)GC58R*ED5b**+>$TxiZK>Gq z%{YUa{F`$u%l(UK&i!_O9K5QZqw<;I9>>l>#O5TQlEc+C7yiSh$qj6;Z||p&=5}Gs zSxU8g&G?)#*W=(eGd?$@5Mgqh%W_^wAtL&7LkbZ|(Z=5FjNG65;}93F@{593anL3*X-1f2Y~U_{zx|NXIy;Qzb=5uxhC=cA z*;!+Ap`rGUFpU>!m@->l8|VuvWA9o#WL^|1O^xYn<|;mzpVS{o)=Q@Gcl7wAW(b!+ zI16FY4iF~2jOBzdX%2*Eaqu|8wEZDW{{zn42-6OO@GBf#MB!Kn5B(93!Vsn{gV68_ z2yhT~S^Oo;D7u_p56}Q($>k(nRyyQ3`6!?-Oj=0T3B0*4KIA|o(&Gj5-y#sTN7(puEh*fV^*wEbPaHg^rR7sOvgO%N11k0%MtbNKyLB}Sch;={(i?-K}#qojF3)n?Y&e|jP zBU*V1v%}g;6Aif}6tO~Q>+V9!gx zyCJ)Dwr&lOTTsI#p@>xwA>q>5x;0n?%O#=O7 zFm>pWKQZifO*LSoaM@swiDj5#sXWHW9viEwh2){6UrTwM5_Ln_2iwKUpQUy3f7syv zXn`KSronG|SN!-qzx!18-;R!qy4!F@w!#0w_+$=OcR3sUA8Vnn$p2x3|3fC7BL9aS z@qZ}tf7syvpkYsu|HCfwf7B&bKm`AXP{Yia2n`$jA79fZKhLux{tv}(_w0!OBZZG; z?TG(FeRu_uiu@mSOBO%`|HmyblF{55Hn=l(E`v>SXV~D*pkS!}`#}PC1~-~+MeYn6 z+!;(eAvhh~V}m<`X{Kq^@c%wYk%_Xzs3UiV4epFG#AP&hh7Ilv^3f@Nl4yfFLzhDC z3>(}TOzKwT&alCq!L$tlKUcKDox!vYGaz?{4ekt4H3M>I*x=5fxB(w`W3JiY&iDYL z5exqQFvKEvMsV+Zh~Um(YN9+KcZOZ$&IrhzVR!4fV%Y(|dAEz)83DO7>>_tYK<*5? z$ej@!&IS~@GlIv*Lo9M<1Ou@@*+uS*fZQ2&kvk(GcZOZ$&IrhzVHdeGf^H5+kvk(; zJ`rM(J0l=>h7InFZ_%PQJ0N$44epF8%%Hp6dU9vjrQ8|y*h#&LRfvYUEM#nb?IM$K*b&yEs>UGzSe zjpPcWj@%hGxHAsMG^`_ch7InFRwz_h+u=9M4PZwc$WCBnGzW$a4va?-sV6u%Fk~hM zFY?p9g&_Lbbb%+E9h69zP&|cV}y;u%Ok@mulXfIUP1V|C> z1rTzOBH9Z@+6%i#dr?Q)3mdc-(`a-5<4_SBv=`(~(>5d83&l@T?TGe5k@mulXfG6L zFYJi+LYGjay{IGYg$>$^OId=@Uf7_$7>w~qk@ms{?F9uxZDyN6d(jT5%cxQJk)gOzx1t}C zL3=R=aT!f}VT1PKI|qhHdtpbk7mBnOc0_xjNPA&Nv=?gsiy%d`7mBnOc0_xjNPA&N zv=@rB7j{H@p-6jSgZ6@3Z!bmK3p=8{P^7)EL3_cp)xlRsLIUjtE0!~Z+onM*(q06I zaRV&UUIe?uAr@&b0@7aCMcRviv=?@f_9AG$9U^Ei*eh*jK-vqtNP7{G_QD43h14Pu zT*xgQv=z0I$K@m>5`8oO|FkpoGf^?x^53pyVm?8ra}9pp;SMHL$^JKq;rl zYhZ)dfKoy6BE$x-0i|ZO#{x*;HK5d{$ZKGO*ML%oBCmlBUIR*1~zyN0@OOAc@1pv8d$hzQUn>>5wC$FEZ7FGft(5h@*3FSHQ-q^kqF3Z zV1w6yiIWlmc@69$uR%aw0~@>sRPMBbojCGEUW0(V26mCxAh>KJ#3HXjKwbm8$ZHUg z*T63F8UzmexyWk}$hPxR#A^@`foT_c4FWd0$ggV*2{ z^md<$1T)#-HTW46bHZzo6JCRy@EYVauR&jNJnghtf2+Y2GO5*P3l0oaWN;v=j0gxI3ap zoxS{aq^xwGWqalYlOe2j>3G`NTdH%dOUKjBK63xM-lgMdXJ7jnlzo@m-UXpc-tKO2 zXR(^Y5aWAYkQYhDAn zC%PV4^7zga{~GCdy1JpBQH^vwU9E`+8tHhtx{r?k5G%Vz^BN48iZ(a)#}cd=oc$D; zDlDGX8p&(mXXLCH<@>f^bA7DN_qMNtZEj$78PPLb?q79*2$sv;tFB%I&pmw%gpk+3<%Uuh z@*23@PU=El1DCr;T_0Vl%e|v6SIZ5d+2zhr*Vks5U9MEFpQvrn7mzz6UWVK;gx8?1 zfBYuYwUN%I>xQL&gyaf~ol!&0Vg%U*A(fUPhHpdj1z;aDg z$=fJ`>we2cyD4=GdLZOA@E(m{Lem!>gedQK-VkiVvJAXu# zU(vt>tllo~1@A)|Ag_TJ@*23;OoR~f8o2!`A%wgJE_n^Skk?=kcn!QiRHBy+Vq1{U&XMzXJ*cP&{-$t_$4G$vdI$^P-}ahwz`0}osVkK%2CBA0;& zE`vD%>?m>>c;GVF50a(GW#C0z28vt;9=Hq^A}yoHW#EC!fYUvfl07HlGEn3)@FFe) z#pgO+#ATq!W#C0z28vt;9=Hs+4R$DU8F=6_pwy|-oXruJfg+cI2QGs{QTkj(E&~r- z1}wcx$p#KC1McPvmF&~tGT^3th?=_;n&2{+4x5YAkqaP!%V04&VznZk*#nmWx6Sn_ zav6BwGT`obmm&(<1DC;gtiKIPc0q6%a7+9IJI^W<3un{pG?~&7mw`Lq#AC3~*|bbt zIGd)H=MpdqXVbOVGBWN%C>hSC|I!39*Bfg+cI7jYRVav69Lmw_Uefmgz1z}i+=N8lHi4oCu*!3hwO!e!ur z%b>oV_xn6CMO+3cqBA^j889z+#mQyhfy>}y=KFJB2p+f$W+I=GGgZW8p!0#tAk23# z*95o>20}9_Tm~Mv3@&0mITJ@*27Em0MO+5j2)GPr#53y1W#EC!U|%t^j)jBE;1wE? zxfO94DAFu@5to6s0xpBFD&#Woz-4e1t=z?a@W5rzzX4WcPDWe?+DgP_psj$*Ahbd* z0}osV@6n2I8F=6_*b7#)Cb$f!i3c>C+2AtZ%ti;2%fJJd0hx4?!e!ur%i#QCK5!Z6 zd@{4aWx$z@e1~Didf+lx2+cZj8F=6_;KS~ua2a^uGI+6Q1Y8E%h%AUAmqFbDTrJ=- zxRHemmw^W^gU()2rNL#O^GSC`Tn38pWe;2ie6;4J$Pnp)%Yafwks;EHxC|5-BE2G) zLERA?hi)_eHp(0FCkSmGxD4Jwc|)aJz-7Q58!BxDmjSzBsFV#Z1CHxZS^MBJ;LL22 zr4KFxPPd`5M}W(Kb7<(*I5l|SGFVLm(r9oQus?>%kb=vA<2#gG1|GN!*kYrO74pDk zFdI^ZH5m&jqqz(`a2a%A?I>~?c;GU4gCm*Z=M^5f41NtEqsV38fy;o;MS2C~GJxx_ z6dy0XTNaSZzyp`TSZt1&>VRAZ9=Htn76A9pb>uSez-91Plw3W2Rv{YQ0flIW#ARL z3+XgNJy2q#`mw^W^11f}E2H}N3YC!eLh|CF>L9T?$AT=m{5E5#dVE2m1u46RP zXSC|?or|biav7w-Wx!jn+LO`LG`I{XH0}t&Z>+{*F&gPJ+SgnLjpQ=$HJ3pnxeR>G zWgu^-D*A-A-@;|UT|3VB#zU_{&4=`9#4*r6j9Clg@EJW?VyGjJzh~e;zX+R$vW>>j zXY@SL8jIgrav69bmqBgYLJU={<=&a%#$iTn6rG$D+qW zE(14@Jth-!8Mwbht1~^g3^LX6WiT*Ma~WjnykoF&yCgi#q_TXpZxs0OF5_od&Stkj zE`vt;AW8NUA|Iit16JoAk*kl zv!kl86#p`LkvgjickAXC|sz5G-Ou@YvQdd=hTn3pzA}y>c zkjo%5*u4#Di>eCbGRO>Ze-CMKRe@XvnW64Skh-f1pvn*j?fkxK2wqWS0rn{y;2Z|%IB>2<%CgT^+trGa4>XsUIXg7hLvfH zbdD_QunIm!80UEbcg>L!M^3D38)0Qnh>|&Yx|}d&b(HcHQ{*R1=@9exMClw_pYP5^ z2}QmfrEr*iYWtA)Kfd*cmQiwVeJ>C zbM&`#l{5>>U`x;VVw*?xC}B=Jfv(O)(rzNPbY zWH>S=A0@92Q&2hiGgr+)h7mV}(XkeMkj*buvA?$5jag-GtKkn%o4TOKi}`lN!{|{* z%s-GS16sI-o|& zSHw}r7xY*A>kU2fH$=u(9a6xV?tsHV3GtFy#gU%`b7K)&(;WGi%vwfXi-^?-Z9uNP zWXhUKz7DUA2yN0sFPk#@Hz49-gjNBlzicW_i9_EojfDuUn=m2GKj?3S??c2r2p#*P zj#0JBjP>l$S4?XVs@1*-NpC=BGr~lsOga`ZlTO1AJdZscwuLR|Kwx`YjLF%s=NLVw z7(HRPl4xkgj)I9PkKk-?uG3w!{9CMO{Q2lE{+X+Kp)03$V39y&2peL*X&U7SQ%O~e z$X0gEOhj}b=;?F4MkMrk3;tjc+IT~2-k_Vj2oVP{5}kOX)_Vxz-3YC>Tn39bn(}$p zz_(4KFG2?^@O)S;fLq5xWrJB;KLlMf3`s{p=Wv9HOz9khnDvluKAD!NsdKK})D4o8^Clr4R}9f#`eus&GaNQ})lCC97K zex5lP*~w9w@F(Dx5IQ+p*W%zZglSwAe+n(cjofyya7=6*%jI%!co!fG1X(T%1pM?2v#C#8f4UhTuMADnc^9O{9OzHd)Vs`m6HZX+F!y#Dj!O=Jb z8H317-00wf`%`Qqt#Az1K<#n_8H3Nl(r}wAe?1y#gtdzs-LO$I2GiNVDPd|^@u;|g zIY1n-p|7BrKOo?5@}^LIEoxegsmk-#xpR%-7lw=cOXwRrHlUW~shVxiJQQj>$@)6g zY&i_cI}4k~GW{H37e2K#PdDqhaChdnGv*m)ig|X%@;g&A;^E}L+v}F6up5{M>V2R& zoLX~OFZ`LSxTQ{g??O=-##eUE`=((c%-AEEh9LPEz9DptqJlZyDByrV&GEm7S?x@4K@Ru^R%n zmIkeN0>qyqbo55oEeLA>qhnBL)~x&KFbw!MNcspmn-L~5rIQ}D&-=(UPC@A86T}=o zwoM^S{#j_E7bYW#Hss2pOK-Zv&j}L;B60Z5CBo$QLSZCQ-jQrPD-EyxMt6y1m>&w` znEUWj;g}L(^3oDvII7PYVBjWKg&oiAggh{Q3F1{r{C->XhxaKRD5GNuy1)0|b#*{- z!TuR(#+ne@z7jv{(D=0o?Po%G9S5%=?8=QS$`mgi_15DHNM_7pel95M6Pz><Mp{sNCD%(t_QH+H|{JP7xiCN1h5_ezdAveNDy z%z0_dEq?%7Yt87J{3{uWKXVl)+a5AA*Y@VTo{M_UMA#D(^BQ?deI2B$5QaY$e$X$Y z{&A^bhI2+zMwAG~%oq1YDP1P(YR*Jix>{WV3z{wE?kA0!h4L0idB$GkH#1vxN6ZWz z6w^SQUA)_xb?Eo`z1gl=Y-8x4Sb7K!iltX(mZFO|^m9tlMKep$MZ99wsUf;(W{580 zL#Fu0EHOkE@fc$@62J2zq(mA>iFwty@M1{k61DSiWnnOQPnhL88fXy! zXtDR+2VpL(0FS6KFT#`rz?2v>(ei|`KlZN>OmX%ktY{4PhVZKSx&%tc-+dpV6aE)W z!LImUFvb6ZDgN&QQ&d=dS!DFHoP%}PX|2VIE>^uYSz`lJYY_&H?t+{5Sz zf*xLl!!-^J z^#DDjdw?F&JwOlX9-xPG570xp2k0T)1N4xNKo8t{d!>7T9?}u$foWSn53Jb#4CsNq z^24A9sl^u11H}^118eoepa-t{t$-dnQDB926SArz=wY#oelK5&xe$RK^xTU;59vIv z|BIl9bPv!&`c2%46+sW_9-xPG570w;j|I?-Ko992poer1&_jB|cxXnT2mc2^4-cUY zC7_4(RcJ&H&_jCBu`mPB19t|Xt`36)&;!q+C7=f;{xIl)%KsOD9$1YM&;#3A0(!vv z)l$&I(-2EQ4{TrrdZ4B(!VvU8Rgpu`!#hPe)GC4=PR1N50X;NSV=Dfqpoc4KaL@Dq z0no#}sAm!M@DPOmKG4IXuvP>;yZ~YApoce*QUpDG2%!jiV0Hehpoh19%|6TyEqixIL;ZO8-gC{Aj>U65%ka-G581`86waF zVJG9LW?0**Yzzv}YdSIDb13i3&_;8nqKo7ekDgr%J z*Rj*t88y^wgecluKo2QI6+sWvA#5G=&`h-m^l&)UwhDTfL$wI>@F%MA&hKA>9)1(& z7=)k)W+{RmK7>#NJy0lu9w=-b^l&^>%Y7yw+6{>}x2Obwe53F<%^gy8qdZ17QJy7`9poceMwZh^}eFSAi%&;u(|1UsCPzl}OkEdbkHt1bSeWBItpo6+sWw`ab|YJb`RmKo24nK@TDU z^uWI2vFuVI=z$KDLpcIHG$X1AdZ@=|a1rQ%$Nv)aKw}Z;;T;^SBIw~Tyw6QXpoj1H zayNbXM3fBB!+g9gw9-9559tW>a3In$=^mg5pDz@=2=tKd0eVRH06nC0yP$*!^pK7~ z58MVj(h=x^QfImc=plXgM&twN;U_44Zn_8PAw3Qk^BzDC+|3uJBhUjk?L*RYmm&?I zhtDA`N=KlF9C~eaIs!d#+g$I@B2|-Q*%<*`q`VZ%&bhIhaV=FVpUUveQ-(-Djbx>9i!5R(hN3G~ z5lcZs=?F_f!AS3q8>k|dBHaT^k@glLEy7ZyzmKJ0MF5AzZxKt;4M7#L6aik?>$w+U zDf|da!Mr6{ijSD@&wWuEu@t)^U%CgDLgxdPBFq?20jv2b81{zxM-Wg{#_x(Aj*TLG3Ltjeu}kP%plHMCO1QuJ$pl^$3M zZ6(4|Xe+={gjOOf#h+=Vh^5#QRdrMR31q|v}qus@1e3XX3POTiXz!BWhERAGIHEA$d9#lBgLU4*50og?Y@z*3|m zECnC8Y{63SsbvY4;w^|JSPH&eD8*8IjgpI43YPfKSc(;hm2+3e7A(anh%3QTv|-ni z_YuTW@Hvu^etiLQ0ZT#Y{|zh!s}Nx+I&myDF2Pc)VcQ}s1r>T?Db#@KlMwmOSPC^L z{$nHvmSS~eH^fq;`+Lg~C0Gg{SPI_J36{bKmV$y{DKaHkicATX0-vwXLr)2oB2$8; zD8~zasr?o#1y2TX#z$C+{y2s+bjE~Oicu0n9eJw03l8-AHI`AtQtTyKWAOWLU@4x# z#kR&$1eM+s$Rj73pcG3Hlwv7@QY=N#14|K9$4`TS5K9r%dB4EMEm(>mmE{`)jim_u z49f|z6hXax4%9*{MbJ=v6QmGJ5%h8&gJftdMUWNA(pZY1xBD5=JdLFY`bb(vV=021 zTiXxgtg#e9U)zUN&{&F~pW6bdSz{@J{x08Cv}r6w(CAXLLt`m|yhxoIOA!okXCp1d zQUn9tUqG6xu@phU{UxL>jim?%iL_8-DT2Z7tw>v>u@u1&_gP4bHI^b6>V62RTVpAL zCfDs>#8L#qL|U$~6u~y`0Hm$dSc;%IIR(;cjim@$+`S-OtFaWpD5>>&jim@iyFWtO zT^dUfw7Mrl!VPGMQ72qoUvG-U11e z^tLGFgB~d<5oK~#SiC%h55q{4Becavim6Ec8p&{Eh-D=Oai~(9_4CA0Juh^#E}#0+D2H}?kJgqr^^XbE{{@v%M|$uQ#!=_ z-BCJ+HbpFjD51!gq7)8uirT5t-u*mE=1A-0ut9Z*kVbbDQ+NcEeArrH4UN({52Bvh z5yv5xVt$m)(cjWl(kx^@1hImp2-;%LqpxeOL<9q|6ldVSU@3xj{~{b~EJZNZo79NK zO)N#QUF|d+Yb-^uy$Bjh5sVW-V=00T5j2(}7%zgxQUnu3&{&FKV(tF0rm+;kBoQ>0 zBA8rzJW@24BA8P9O9(|Q1#2T+v=0ta{6XD$sspM%N@DKRy*Q6X^ZB4C<$R{_2kLy2 zQDL0~L9i6T)c9@e0%9qGX~E@;zYPPPs*Cg5dYj>hFoWbv_*WVKBy{;vVciM2`G(_> zHZuIkvH~&q!)1j0nX888@o6XTUZB#*{C~q|XJ7Htvjw4U!$80#_@(JWd_K2u2#h7Q zv95$RHY64q`-TV!`C>C^4x}*tQ`2Zc7{%*lfaFY8G@##_w`q%`+jB`dmyw* zT{313>%uQJ1D$>w(yl|;_AFHAh_Ga1J?!CI&f5EllDG^hEuWjlK!h<&8G9XKZh~|* z!q__?^!mayY=rGLK-m5<{2X1T8?pV<5Dtrk7a@!Yg>ff_rSTKF?NAUp!)zIW&*QCT zW84)biL)eemf2>Ed$=U};4RVV&?Zft7@0CUeiTM`B6?g@BMR4Oo!D{s=5tAj6362x zbS1c#QPa=D6w@1z?r1U-ZzEfKHB#P2TVF>ohHqc4+Zm2#^bsU`dHgYL$o9EuGHrr< z0Qq^q1Y`Vt+acuvkdY&0qKwP~KF4(u21fIBOzyi0DjS9Bb+Uj%Hj4K^W6I8VBH>*9 zMIi@GTRvATPm)h7FO)%^ET2|h*h@;B^4k{VnqyKhUuQ0vIdghpIE_hCgS{jdYcNl6 z`&0KoN8!8Wsonwjzs#JPosR#fno}p!#>x0Z_b<3GHOELzmWSPdy2&5>2jUKC+G=cp z=9nfnZQz%t(Fb9g6g;M*1A1peJ_TV1srERj0M^5FX>W(r;wvP7g0SOa*jpEt5}UyR znUJ`tfbm#{go$6_V`YS$sC9j)g-6Zuhi_hYrqV7e@UuQL(G3&$OA@ z#PapDKgoWV_QxaPVAwtoVGI+-?u3}@Azguhi-tWR)`g4Oj1Hp0%^8UXq_-c8pX^^u zqXEGfUKXlzmx%U&DSIwKp;E)f2<0)h#*z5ll@m7lN^>>ah(B``7gu`$Nz>4V@dz_VLYTQd ze|Er+3{jM=?CEjHvnjFb;Bbg;K!$4(WQd*)KLJf?+eVKedNE9lc^y56h@J99m}qhW znNKAa(>^=*J=lH=!Pt?D%8GNHL1Pise&anzwS`C+`!zO5gfUDQdjw+6hjcQ+*lq|T z|7se85%6_CJ7IQcW&=*kpb%@guC}@T=ONV0H4V+C|}%x*D(5_;>A>=sf*Z zZ7f#t#%xH5iqU7`pH*=q_B}9$mtBH?v9iC!F%>jBd15TaKRzfu1_okQ+3g3RF#9G% zEe{x#*adZpuLuxrBqns=_@V|mUJHZqmBAdw-@7x8FP8W+tK7OBaUnZ-1&Hp>+FQG z`Z>p}#miLZkX>;-;yev&dFKM`2m_ow(3XMD1Bc@-$9WBP802h#=3wVToJ58=(>LLn zgj2IU9&I=SVSkwOhe^0{aXL=IHHxzaxmuhPQOa=VLd1`7nxQ$;`5ZMI<-CQmMmsC- z1pd%D8Zm9oEzsZAx#u#h7U$i)@llTR>~O3T=O|bh>x`I;GqsaMZMS#&;dq=gemds0 za~;|;-q{T$PH;{`ohLdisMRE=19>Mq7b10vb1YJ)Is*^DWu0>rN}1-=UJl5Fb1zyt z-5G?`9i5**b0=ryKETO1U!u0VIM1xb2J8G3HQd$Ng!ayKhQQ`-&b!Dp%ee&gpY6;z zAJ75kIvme&URa6yHfJzuxQ8>j4sJZ0i}AacMN zTt_+UP|u^C1new!ZW?YFKX;yS;Lp*iIRkD|9fjH+>wJTl&y$_5>kZ=+=j9f|IMw+8bw15G2feqti<0`i{aT#j0u?W_t6;~eK3^uuze9d$m}@lmVuoD-kKmg&5Tnq1&K zk9J+??Dc?QtZ<%z=0(n4XvIor6KeHK=N_b9?5sgOFLAcV7_D*!ZZeEZopG>mnbR9F zmpe9oS395fHjFErm5sPDao&cVHO?y3?J8#>^w&CN`xwU6&ZQ6Fvdy^&qs%$$ysvD0>dVcg&>USb$GI>S)go1FQFgEYXo8~wcA`2_9ym2)G;@fPPIXx{4V z44bz(1GWd8$axUu-r;?n-0kdvS$B_fEcEYnc7x6PoKaW7_QBW9zs561BkXA?$zlXC<5{MXKp(VvexpTgSv z&ZX#?51dzV{GqcEsUJCeLGxqh59i@oiL(bZKXp!mozI+QYXOILI-&W6a~|sOrE>{d z@s)EdTJ#s^giUywf@eC|CCeMDxnsJd`zRmoVt@^obRXrd`j~Vd)_PGY zBvz$xL@Fd!Jr2U+6bA^zs=RdTPKCs((;%FfYEnqq#d;3bmZm~t)wdy>mI{egmqBfL zYR3+!?d5-hl$EKFSoIqSt5YGdDywsC>eW474F z3dE{rCBHFB?643su_73R@l+wPYMR8V`uM#8zV-!dtj1-Se1HiNUSRHSJWb7lU{az^Km>(j_Y?S!+vXe&6bG;lzI#6 z+Z$o?*hn3Q4ayrW!uZrPr$g9QgcDQpuzidO8ygP9s`s`RAz?OLb0?&UB25O>5c{eY z)};L%VD7sF)3|n|wJl5g2+Ol}bS3L*q!vtq&?-U#oxx1KsFhs?i~4G+c5eBP5#y{y z#SG`bC%JN`<2Q!ul;gR)G8N|_z0b8LVhPsE0QaGPn7Rg;21a7@<6Ng{8p&D7w%CI> zNCi(|{k2zLD7E;-HW0>C{}e*P$a%?eu}`Q&|1in%wyr7t!z3q&kVw%#Ombo^%e9zc zYOJpl8J$*YbO&uzXP6#k$R&4)9a7A&YiWj=VFvn#N$w`aStFv&w}4x*V9{lg>= z)0L*q5wSMv^uov_j|z>_KTPuIuwi3YKv-J2jxD2gS+YS@SWJgeQHkS9I)zEWDGU=TznKOBPGKmNTQ{Ow7M-^!IB%IQ zQM=-||H1glu+Fl9WOl|*ptln1woy=q^A_f86daR+^OgsppC^tD z)mHvmv`oQy3k`dD;+Pbiw=gXOoWlx;aNe>QiH(9|QgGflh!Fh`=g*YY!=PgX?&J)L^;Jk%t8w%X!6r8s(t-~z*dJsf7ZxL0qK<6zA&RZyM zFbj0vqTsxx92>0>E6{n1g7X$O+bA#Gi@B@dyoITW@&cW=C^&CnYQipfF^F*9Lea7d z{N6>uc?(6?F3@?4g7X%No?W2x76s=m6jOGA&RZ0mw@}R3g~!K3g!2}Pz3jq3Y#s{E zTPWu2LVJIRaNa_(5pE(;8wKYr6bp8N&RZ0mw@@5v7rHqdaNa_(*)Gs|i-PkOiX-j9 z#u|ul-r~bXn_Zyu76s=m10mk!4q8N0aNfd+lra0e=nkUu76s=mI;J;b&b$aQaNeS0 zvWTJc76s=mI;Iz5=)6V2d5ex|Kn$I?C^&D?G4+U{^A-i?EjlJZ%mwT*IB(H08N~2I z9R=qtI>txLrOOcm=Pf!WjhIK*AO_A`bc}k@9n43K3eH<}ObR-D)2`sWMaLu&L+33D z&RZlVX}sv_lO6|JW+QM+oTcohAro-$9X{FOr4&0#6o6x5m$pW7g<%czVH3_bl#%iyoF*eQK0h{1?Mdkfn&1hyhXuz3#&3v zJ8w~N-jb<9C5U5EaNeRTK^&8U^A^?*Csu0|hZW9S-iO>MI3@)g(+p%BKpc~T^A-w5 zo;W52=Pm3Z3(cniYcNhg3eH>dP-*1Vk*DCiEtC@ZGoh*A zyhUu~iDOc5-a-lc5}mgwIB!`%oBLywQwlgHHyPOkj)|IR*ga5$^A<{p{D^ZQ!FdZM zD^DDgg7X%!sY?KkiIQhnbl#%iyyZ@oAUGxk=Pi>^!T{o!6r8tEF!Gz(X5g4+LFzJU z*e)K*WC4zeb=rT6Yz=FLI-Iuzh#RP#wEv$l(Cyq(Mc?*+(W1^88 z5yWuZuvYX#GMu;k6mbJJj!D6JOQ4XII3@+>E!q%qObX6hC?)d5F)282p=9NWV^VP5 zLdne&$E4uAg_4&ij!D6J3#C-PelR3BZ=saQ6UU_ByoFnDuRL)~3eH=Ywkl5?lY;XW zrmZe~btEJ>Z(+r9X5qGJ5aGOqs*PshFm8Zw-a-+dPSSacg7X%NL(Rfor$L1C7K+Vg zfzDeLoVQRMi7owhh;ZJ*UTHH6bl#%iyoIT&5(PSMQE=WOwMY~$^29MIIB%ik<@>TX;k-pI3G#1pgy6h|QZ7#%lY;XWN`*XeObX6h zC^hGaV^Y8|QEJN*$E4uAg;GbJI3@+>EtER*#4#!0m?+H{Kpc~T^A<{T4U5iO6r8t= zK&=OA=Pe4(Tgb+pC#XQdc?-8lBTpEB0*;A012&+;AOXk3vuGkwp!)*_=PgW}lqlTF zr2ywG?8Qk|fzDeLoVQT9(<M-oh`IoAk|*g7cQMpy&vW$=Txx-W`ea7Dqd8aS1a?50YEM zVW_g<(zix>aP~UnDz|=#Uzacwzd_$U(zk}+OCP_73FK$>F@03V)a(QF2;H#>t>&$$p(*Rq*LiX9o$SaWckNYSfC;8|QDR*GIV zg4#-UX`z9A7S!1{L#<#MiQ&s3CgTa1OSWLvKNk4jr?kzP6=X!uNO58Xfe2QL(+Z#W z(1Mpb9fb!CQfel}kq)v_pI#}BbI@CaT#CaQ^wFiJIH*CcmLt`i;*jD~9+ugalFIcH zwGH~rZsL(xIDCoMSf&2)`A~J~RU;Ud4v<`Ku`_C@xlN?K#Bk|VBN&zLgQ%o<)$ot^ zc88GS*NOfTsWQ5%B@U@OK89)nF!4|Hj-%SHxHR;aMr!n`;hz*I{d`gYCjKejXH?@Q zxqqrwOVO)_f0_u1)YbDKEbFyBFAh=!nE0pHFpHO>R}KG+%C8}0QuM0fpD98v)i49X zSt1nBFzyGqOyQ7@x(X?0$Ct4J;#I?6?&a~-!8ZKZ+dsFKlMrf8ViWeyi`z&^o`7N! z{srES5K?^k>R%`~BZxiAhO{EyLbd5gN%$+hpHYq1Wd6nFEE2H~b4p$kpG&nHaop@* z=DkZb0!;kN6^{)Wc7L^0+R|;iLIh8@?Me|cx@~Jj$mwpoN}5*C-L_VQp=j?%uv%{M zZY%K-W|V(*dl z5v=v?aRUaD|5%64_wVyAr8NRf{QE`CNYSf?|DXto)EU?o{f9)bQYJQgf1?O)ie5GR zO{p8v1GqoEnUm_#_|7za;X#Pz~?de!j%psj5KuNwXzt609LN9Pr( z0JXNq1m{5LaSL70&m zwgSRi!QUYi0Vc`gTnY*G zdt>z$67`<92~uimC!%VrnZ=L>)hB({*4l<%HR@GBEw5qS8mRg5ZyMMtzW`lrtL+I1y5P)pN*Jz&9V18nhH^pjVChURuK43j2zBvZn!HLJMzikrNBC z>(poCV-S@TuNw7zynJuelU_CIbG1A+w!uSz`o2;#OIA{SKM`DX3ymdq#*Sa#KmI9> z8wFtE!>h(G@D?FYfQb*U8g>qL@&uUp0GKF9R-OP8A6_-M_`N&3023bo6H0A)0!(~()!;VRkte{! zhgS_sop}OGe0bHM=8QZ6CO!ZreRG&wc>+v)c-3I(U3uBS0WjfizA!J#2wpX~X&;iG zyA+xLnEV6MqC5d6KD=rSL9eaO^S;%GR}F5P>j&_D)Ca(XyW?GXelPFCtHu|QHsoa& z1i*w_;wRX7FqOI*e2<+bQ@SAtr}TUiZ+h!Ruw>#kG^DBJrRY_op;uiScCk!~0F#ES zH7k$KOP!4lYUrI@2DOe9y=pY{sXGTkXNq1m8gjDv&PdU#Mnj|QaI;e6#B0dQ>Yj^1 z=1`^yFe$e@%Pe};@ZnXX6>V-5B!~~M8Z0eOB!~~M8WfB?ksv<2YOuqt zJdq$iylPN#^F)I9K!Q;6@qQia%&)dEqc}P;Z21)$rj}V>cR*Mgs}L{%DaQg;x!ZZwtL@ z`0%R178@2TlV-{;IEH@tn{&*z`d=iHp{InO!gIm?{czRxo^pmnX5mLM5? zRpXZc*&14cWbjoD-mq4>{HjI8GKcPm1?@n2h|yTRf903yL^hB!B;g14c%>N z2E^S2Z&Dss^E>yZov~24B@6OzLt=pTSo(s6rOcphqM5pT5R;h&Pyh!&f!t zAkCyDNCsckpnzuy;#~+-*4jT zsO>@Qv$a9)uLGEFopl!y8miYL9x;|Pg*F@c#sSw!3T5O8;sc1NcM0r~X7T$M`Qh;= zMCvB|n*9Dn2H(G6zS(pX0KR`AfZxB!;QJS2P^Nqg4lSq3blh4D3{N6eQF%(NCHeh} zs!{==WX(nZOMsE&_b;kq0xT``RvO3-euhSK>iZW}35WdKB)@-AmF&W&qgtNN-l{TL zwsXkJuZRQXqJM(eS5}_izo^RF7AE*_R-T7#Ri#x6q{Z?x*jN`qMlAosD4;59D)O9I z{?`kEswFQQ%k%peRR!y8en1z*@-wlXs(M+IfY!zG{QgB%Z|iiRO|ks@ z&ja-lv@MqB_b;mYT9+bkM=ZY>Gg{SHeizX0Sf1a%sOo1u0kk)k4~zyHBwFu_<@x=K zs=?L^$a_4N=l3tFhFG5f!Dgd7$6PI)ySpRCYaFaKPFRLYRl2QXgiqaIgK8yWSd z5Xtffy7Q!jH?e*eOJ~VZ@z?Xu{hY6v!ykzAscppg7$CHs4ILd!AZ{&)B0izw2gC=N zSde<&F@vq%_b&!~J`AHvi zQ^E~5Lrg94(#wvX5N zvR`|$x1!qf|AVXzn7zP0o6kPEX4h(JV^Ilh#)`w`?e)&_@`GbR z*;V;C&a~z|UiwxH*#R$oHPpfCdvg_bJTIFQ`LW;LJM3Dp?S15b?d8W&?f31)wdPa2 zVap@E0%c`wFCScxq0m~^7iCM$h3#;G_-8HH>_CKn7^fOCD zB+aMtL;ejbJA|X(yHXNeCT>B(Mg+B+j}6Ff{%0io5n<>z8Ay%`$a!G47SN_3G!ONf z;uil=yW%u8#h=V*#}+@sljRm4g+l1bf7;^D$1tDhiE@kY)-I|wpHtM_6qOF+#TkYF z)ZCV$<}PfnLv$)Wqpao!kBXX8T46+MIigEp$cD;WqdlYvvQ7D??`&$ph`xc>G7zcd zdH$yuj)xJBmg8-yK7b=yqX)DKgz<9xo~|A*;QXTLXXs)E@)|N9K$yT6!um4Z;0s|| z+6~9~^i190`E*n;pbbG7wjMWa`dNAj+YYpip12=J-kAenZy+{i59#tgGT8Ri+LrZY zN?#Z2NqW4cS3wl#0*3&4bUd!#m&KGAZW(~|H}&A2K{&?G0eA)t?n4-JD!|#HfOaxM z^8`y37=(IXM9Um39*x*6hmTP$Xw4UTwNmKw&O#5nzR=bpp|XLUYMSD&`{p}~ga&sO zYN+>Xdb~(zUT2~1b-qx{8xZQWuCvfK?}7xINs-W=&O&`B`86F~B=mA;p`%CnLO&}K z`m(c7w?<#+lOmxc#=U4TN00S|v_!{<5A7^;O@CkL7ezwzI|~hJujz1+(8kU}t4Dh^ zwfwzEs7Rl|{X7A!bvzc|0&f}MQ!QA6`e8k&HDTQ>K~^*z&_W1fjt4jnkr@c1C^qR_ zq;T<#UW>?HB;SEB`YM33NI?6JU^_srB%oyxn$PrFxdbb4;9xaAve%lyN1OewU+xKU zr5`Usov#>WwKqRdRMpzfRb4&Euj*%>P}>+7aVVkSiru@jR-zci%`ObB0^^Pu_ z+dQFBQ0K5G>e^RqS5Jr?8z4gH*pY{Eb5l`Ob30e{`xd`r zvx=&^P>7RU&MF^>Q&Mr0wvWWTUqWYWvX zl_mE!BAX#{1;Xf$0Ukl*L4@WHibn8etl}cw673`SZP5ts7oq>O%DUKU1UWvRcCPBE zG2Udf4EBV$%FtHP3d5%SCunwbT-6fLw(;QlP!Ddvwfz`lB!Cgnet^pk7FG4D z&Q-NfX!A}_h&}y62^ICW`JSRW%F)9jb>@unMyvTikvc;~=s&6RZc$b9J6F{)@P96< z>d31A*(Gq@vB^8n^K#}#UPW!AMf&`9oo@GpIF7G$ZY|foxj*9xaUB2bD_-!9ZaE9% zlS0jJ6;+kNLz<#7Fk1XE_|g;NI1ciJR#eKiv`%XtTdJ1J5KQ$p zXFu*;F=@@G7G+=SXOI6;H%6YpwYkFa34sbl5M} zQERMdCnX`asMmx1DIqi1q4+UH$J(^cb+q*HJHMz%=={z?>)W^e3yXwq z=`1w1y{2nDAznZ1_k_HCeO&uk-&rK|X=kAmhxs}^QX~`|p*ru?6lp&SKPb|vuP5Yf znCnOTHGS&|af!_mAsie3V~Jf|wC`TjxvFp4m)Omo5Kmh-`BlBr?6-8Em(5$`XS_Pr zVA{~$v+Y-O&v`;r=Z~F*CX7)vaow-jjjd?0cj?1Ji1xijD`1b`>e$;oq2p0u%Of7( z9TKF?;2%eL+9}o>FH7Y8M@&2BejE{csk(C4c~Y5zi|JB5$BXG><(j=z@6BuWsdC|L ztIP6f)k{z;t_!JdDlX9-b%{Q8C8O4lHT+Hg9v#!alzRf5oAnIT{ADF8o+%Z7*_ZXs zl6wCvck8pI+Ha)RS*Z0da^0^@-+d4@9aJ^(*kw%z^BpxE?9)-xi$yj4yuGHER84bc z;pPUP7Mlb8d`tO9sVx5VojiQz{?|rIRPg!mC^Mi9M>y_ye!B1JD2)+=ZF?_iHVw6p zoPq&<2!&*j{YQtG>R?oJIDg;hvqtFCSww3|d1Y4klTswFT6F2V_NJ9?)`Jqmmu z!tog1yGmGXuFeEIUw2$`;vXS$fvNhdYhMBBdrQ{f-;2^LYZzPLJfq~ajt9NKExwAJ&LgWm zaw>ORf=4uaJYB9rf##ojU1RUWpLV3TeD9^JN0Rtn-i?<)J$2#O zibI_1k%KNrD4t85&nH*gb*^^38Y43E-6xrl<1&~jt95%X#%FMmZXZSwJSRVdlDLw{ou;uG(gxoRd9I1sbtS;q)DGPUWK_dtd#Z|U`~AUO*UH|yo4xVC6K zUhxG^Q~Pw#!IC=mXa7&7a00c(9P~zS*@rob_|tdtV3Eg=Ph-TMKv=>jklHDOJjut9 z4{frK$$=2Vr%q3eZAFCPE$h@L*25?sA+WFP)EQU|49+y` z)E2B;hUzu;(#u0IeMP9As@qFvK^=zh8G*7>pThpjPzZ#V`X3w&*Lr=5Monw zYw1VWpBch#&^fhn5_*PEeUZI%Hr5?O_3w52)EiI_L)T#V)H~1-hOVgh$FpJbkC1s$ zk1YMgi<-s|y9WJucmqrl5xT9kmj3Zx9A*gB6H(Q78}Seqq55O{)B|mJT!|2`i7kB$ zBftWKUdAry-)1a@6i~8acuXc^*C}FV*ia2hcIRgv8MvDr2~J0 zTXTfiumE(&Ee}KW54QG3H@wo)9vDKR#Q6*PR&PEA=mLaH51Gf6QTeBx6U1j%={F_t zP6qb~T2Q%g2`axXA?3RzY%D-lWD4{3$iGiT{5Zyy*B7|m^FFbt{JsP|zc0$kOTcsN zf|1YyqgzpGdtTz6W0#|m9yVB=A!hZVe#YO;c?G@3N44>b#DGHF&H8X=(7q*;BaRlsRZ*ngb{{UbJ3rHZf;{fR!fA>O&Jt zuS6FvFflJ$=$J$+{;e}iUpL-R5hBWH(6v-;2p6_*3-HfdHLI#JZwYtpPfG~Zl?GW$%L)rU@s_6B&|9JT;p zf#|m1oQ|Z>LgOk_@PZbgS$(*q;t?c9X;vRGk^U$$JcX-6N~Z0|)#4ePoM@(~iC*XB~|e zteN=v07c?jog^BM%Nm`2E#0LD7Q@?UblvfZk zrj(Ji)E5R2OnjM_ z)yhJc{U}U)uR&&7+2clGkJ~GRO8xH&5@@OJ3n2-6T+Y+Fl>c2p=B>}r9ybbmT;{GiB?97$0#fwS0OEItif*u$KxtQ zWMH(kvUrTb;xU9hJ4FIm6c&#YAfaVw@fd~0Bl`<00a`ppVev?4gff5OAj0BNMkAD= z#bXo}kA&G!h8B-eSUeIILK#{-Mq%+t=!Ueiaf^Uq@kmwD%HlB!i^mo!F$3Fl6c&$4 ziLR@FVDU)(uy2+PIvp4mk7dBg_Aj@c50vx2+(rP?M+bticw~3X8{Afl_ntL>4R_DX*ny@fd~0BT*=I6(pmuc$B(QldxiVEZaW<<@zGLF9KSiS?m|1vU}jKbn^B+}B#;xP(~ z$L9f4{+HXRf|l~X+{UbsX0eht5TxQDd=hsj$!Qzo9nc~%H6c&#}*_8j~HXcHiDgVoD%-fk7 zwE>c_cx2x0%(vLdqp*0SVg)_($OJ%GJW{lWo}tBK6c&$!uAZUAV-yyTguV34yiI_x zcqDApGgrL?2#ZI;fqJI#Q9xKca#Wi13@sj`uy|zd&QRuDY5|K!(IS+g#bXo}kA#JA zo-eqfuy~|ayTch;JVs&h$g+2ZGc*W~!s3xfIxHT8q0s!jSjpX}9V{MsbpFSQeopq__b--X64m>PRll{QpIW6W_3|dfJYupo)T31g zv0xkZnB|;^G;{bSbipp8u9`{nomkx9D1=Pfw8b2QV_=xHX^WMaGoX%JpxIa~L3eeu zX$#P%Emj`1P@N$*ZLy5=ch^!*nZ8TjwUuynWa)KK%2H$ z_uy#|wQ189>yz$^?6ASXuqZjimtL#cv}ubCO4lLD5SupZ5@$YuNv^ZCR#e7y9BtaH zb-|-3wig2xvNkxEQH&&JYojkln>Opx;OP_-n>Oom=X;9%>2_pXp~Otuv{{=3giPAB zS(__op#j6BO`COPoJAayHf`1xQ!B;MXnyfL05(j3f=Qb;>uLcmI>vJ_u17EqfkAg6 zXKS#H3W!acwaw{`GF@q3VzrfV`9X{}ZPvBH1age^XeMM`@5}@+X(?dcAZK5Q(WcG1 zF*uZBV$){ra4x18dEC~`5jF|216+)^1Q$^30mK`v+nlc`Mw>QkSBh~>rrp{tN*k(g zw+nDo-#}=BSXTAzP5}iqYS4 zX%W-R$sFlt1%yo6v{}yyFihICS9Yvsv{Grz6RF&H0Q~ z^DwYpw>gvE(tE?JO%~Xjsx~b^n>OpM;6ton^lTgq)~}ttF_bxt>bxUjn8l+2-W3os zyK&jS=hbGu0Pq`CTUXe$S?|Z#zN2R615p6Ojsw~HP=IUFrp@|DK%+^UHtUdpCX+U8 z)^7#0nzU)NJ}#v)<4xMMS)XM81u)g5O`G+*ija+`Z@3%{4Z+rHh)tVy*rAA8oS!FU zahkMgv%ZvC4U;x)*4Jfely%HI(P8Tw0a;b+U!{ox*1?ZaPuTb~`Vyc`oAqgs@vsp^ z$!=<+wxhuzKwZS9t&6g03(%&`jutABQLSv+Y{&T}kV%_1yUb=0O*&+kXQ-{wl{Rg5 zs)ABZfi`V+M(!&dy+E5byCTMU%<2U^00Bx974*WA4M4fr2Po$1g*u|VLV-dQGiFyR zgiB7273E}4tJW;m@TU$OpiP_IC3qB)46$jmtDW9)=t-M4yHLis))fXjc308NkR!?N zCcwh5u(AMc+U)MZzayR$n>GtJZ5uHBDcZDIuxU$_p`O$(C}+W@tqYKmqD`9xn>HT& zPKq{d7HrzOBQKkxO`8Rqwq?jG5c+O%1)X=CdPQnG== zrj5J#(v%!VuxaC_y(~o&7YjCR5$qVtQ|B!Lf=$~1jN0xL?OH6@v~k}@Yvkyji%I5GmeQszY-CX~Y;aEu8{EsvXwzoFrfnqpoD`cj3pQGtJZA4CrHfzvEqN?h@{BWZ4Vs}Pj|EE}-p?EkXK2Y| z!IEb+VAjrj%9R029^Tl&lBbN8JQgf@?nS*0EqN?h@~}mRmOK_Ld88Bk8IM#s)LJ#? zOB|OLEP0xcmR6QL7A$%GNL6_iV!@J!SD0|Iz-0qV9-?&_TJl)1l1+0Rr@NC!l0!$qWpEVCt4D_} zg3I6{n82P4kmzA!O=>nhVJ7;k%T0R1Obk)+&sQNnTn!|Tx;DR+AoyZj&9y-;!tPAB z&%)jqZ>W9{@vuQBFE$N-;*A6LOA2M=M*2NO)Ds2{fM(P1Cq6v>nMnN%zYYz5EExXC zc+v33g5i$<8va-?{Neq2vdb3kv`ck^-}6cZdSPC`h?7d?)(f0CK_R)L#N&EFMv8Zo z;KD`ZONnyV2ojv+Wm6A7hP<;Cs!Z{2Q(vx7A$7u7pmP-Jp`IJuftF?11DaKi_`^P4 zsP#DKK8UZ>yHW=4QckF0Z?zge+0{P@>(ZaDJtXl``9=E9xoH@vEWoo(h*WWIzQ+UU zZxQO2oP2?%e;Sr+H+RWG0jVXB7-R>u0SNArMUt3f;(R2`mBhu8$d`uNeMtBbLXRu< zp@GlB23rfXE$aD97NhRz64D&38U1iL_+ko=X=4?d_B)jM7@;0U6}Y<$Xa++4Hz?GI zNFRdF0FFmwF2TD1mm;!(;1z%e5xE~hYhX(Yyq5I#7}lfw>0gAyBcPMC`VI=b%^KM1 zzYzH+0b8wg&<6x*bt)oL2-xaHh+IIxR_{XO4g{^&X0OGkyTM@z-fpxl>a9rN>Lze0 znv_|zv_5Z~i_X8IrbquVGWr^KOG=dh-rys<7cXWT<(1*D!s?Xw0S*xTRRwSW@RqiZ zeG}4Fc$GbXRjn#p5$++CNs$%d0j#W_qhA;fgdo#@iKbr?4l_EyVcToNWh|==bo7hE z!J`n(aV@L~s|(*8*TR~xtc6gHYhX>dg41o}IQMJ9T?j0#?%XA(YWlix=(p%q9c&La zgk{m!!8T!|7sbnzOT8%GQeUQ`jl84NFZX~PJy&>u-lX(R3JiK^Ex-$5Y+>Ayo`#+> zsBx{&b-zGP#2bglF*Rx&BE{nn3HRqXsC90tbzUdy+*Ez5ll5(eWqsEzVc*QKtn0?U zTTp*gm1#V9P(YTwZsf(OUg}TLGXOCU#JFF?!U-OSjep!Dpi02^D2bfj0{+e%+bi=7 z4pe}&hQYR30JV6SO|Q4GH8wo zQvpujmmx<1cJa$lcY?mpV$$@lLUQ=`l`ei2>cK9e3H}?rX%Yl}8q)R0*aY5H{xmdD zqLUe&@HA5EFuhNOWYX2ZJQXrUdp@YrpH?|_nD}Qx>E|hrjyxO6vLj86lP$;`Pzp5u zu}MINEjO-a%LhVL0yZd6BdS3+?uuc9kG{eNpR5gCb04JF%J!#k%)xoO9A9fIc|;78 zBVuhm7s7ByUmr+7pc%)*XShj*6pB=AxLd>!o>r6z11* z6sXgJcAXZ8PSoRMrN@{DsYibq!R6lDuiLyGRNuK8TijR~(*E69*~i!bUqKirZ&3$I zwc7BcJ}7V&n&sFI3o~}Kyt^JQ?@Tm|?U3MJq{`S1EgIXQMPoa(Xl#diV>@2PwmCEf zg@bLo*G`~5+dM6CNk0avj|=1~vB#4X_C{GidkvxfR)BvX@^^yk0Ja`S znSd~ny7dO#zoZ1jj=}VaL6S6%JMRnRCR(fpc%qmp+8FKnTs5e6WdqrR(r6zMlPNMst zwa7meVbVf?4aorfO#>_gxF3f)(=4j z>O@555nP9nxB`*O2sls=A@XB{i7YPz^&6mf5%9GDPQ~F0)u&K<3@_T{PyamdwBK4d z9ngXZ(pq0cdK0j<;}Drcz}7Y*vL0cIU#nl2wEO^a?nA(9`0+W_Dv$RM&`586R&<4C z{;kKr8spzN?bv6E^7%|3`Q{3EIPtRk_>B_>^u zltEcc6T+n10ahV$HbPIH3YS-_hJxBYR`*UgwyuD=eIHrxLgp=m`d`>05x;5qX6mh)ubBE&yLD;3+!*le*yN3ZRV$lj;EuBJwoB5P0)*{7kw4KZ}rbBEqE00QMpBAi=c&zeeN@f?WV*T>^O8 z3vfTcF^C+EAQzN=k8$1@haM-x!7O{s3(5~5^BV-Yv}*^vvZ-uJ61+)~x zj5`5(uEv4qD^jiwv z2ljG;69Ik-@Cd@>(*Y)*ho4#N@UxC3*CUdu325aAleaSe7XIwT&op+msr|Tlm3q7o z3d(*s9O6R}q?=0+Swz5YUW3Th1nlM$h&+Zck%gt3p8)+9LH>Fz_G*6#vbZrYgH!K9 z41c^oSR*mm5yW|Mm(zn!BX9P}h{~1QY+N_z>UeQB8`nv>CW+y?D>s3$mb1Y$tBfyU z9dmr%Px%^q?#)-jEEFL!PPeo>@fabbz17U82InutRXY1kTFY+lj^$ZfDRFunuWA1O zexk_#EYYTZxB|JhVl=9f&k_Z0teDUE=vJg}&r6)_m4Nyz5kEzAEAstM5ixEI-^HgB z!L;#rAoGdGu&yg&(mV5&g8;c09)aK$hcOqRIy(@+G4I0(Ay_Ey4UjMoT?&AAJOJfd zl$DxzZdOXI@bYcUgy~v#ZDk5cvFK1JM-Gqo?V}KB58<(8n;{x8?!s?Lf5_SVsz9W- zjZDq{9>+$ckHo!Cba)@^h&DlVh2K)ERx_?!#}{LHvk~Yl0Gq69^g895N#eFe8Y{g&ARh8G&6I@0}k-7M!1pV3N!T5KENv z^CX!O2AC177@q$Opmyiy4w(@Km=UidGo_dj2AC0Nvr;l640tLh(30I30)ZL95nY!g zGs1wUa^|g1lNn)v8Noa-BV^RqB1cAjEn0m6`CvxWB26-HMIFX?LTNH13@{^PG(u@IBMdMj2(zIynGpt<5rl3T%m_j-BOEd#3@{_8 zN=h*!3@{_sQwcI73@{^<5@bdgU`9|s9C{9!5eAqMGl9$BI)Irl4g|`d0IDD}!hkPm z0_C&ODDnl(3LG*c3@{_Mva~QG3@{_gLy#vk!ti}TCl_E~4Br=YlFSIh_XV9KGs0;1 z1?`X-VSpL&3hNYRgaKy6dF^%jzMzx56E}Qc&`Cb4GJIdqNnS-6zAtFiLc1?$hs+2A z%!mT&EEi^k0bkG$09B9~VZawOftDmQ!T>YkX`ltTJjOppW%Y!$D0TW}2X@GeFu;u1 zfV7liMi^j5@GIO&-cuRAFX$w1I1TuMW>!dxvXV5SQgILu0J|X@%!v0`kzz&|@CCgg zf{MtDFnnLoNiri0-xqX}%m~Bx1)U@_!ti}TC&`R3d|%K>G9wJ%7j%;MK8EiLI!R`P z0bkHOgesF{M!;#C^39tZwE+ms25J-4}G4F9D2p zU(jhXBaC)m&}lLwjCNnpX)+@WFe5lBO?sNl2&3H>boyLs0cM0~5lWL8VSpJySP19H zj4;5ApjNxXX)+^>c3;qGG9wHyBY32D_=0xGj4;5A=#B;>#%2^P7hli@d_m7B!MH~@ zLIA#?x$ohi;@X2RXd)w7b0dD?3!2DD(igM=U(iI^Bz-{}@C8j&NYWRy0bkHWZn6~f zYrq#YQDc(6pbhwfCTdE)H3bO1povPsECnX?kBe5=y2yC64v!Q8LYAjY`y} zD4FK8IQK3^$uy6Pt$~=LWSa9bLy)5=ndS)zhsQIt$`zIg-6C`zVzQZ$E| zP?St_f#{|vndU-cJSyL9#k&+oP z`ZK!hM~sd@RAlG+vK}R~bhEt}NfDWBp=6d`DJeq9EZw5wq-0t-A(YFd!c8dBMJw5g ze?rN$@;N36B@^_VIq0WQGOcQrPWDes`L(VZ%}la?V)b1hi+=!As5pp1=wFC!Q5K#r}y` z2vF>wcus&~|HM6y)`or7?RCM^DJJY6dxLX7#rRg)?&Q(hzBJfIF=7AMmpff?cdK5$dmgQY#$tOOt%dz# zZ?4>d<3X{1>?`9eqS!z77PAgOv48BV1Ss~8eYF63wC1i>Zw0=FCI| z1-^;5J9)IWuMG}GPF~nQ_Vv!i0K)#UJ9)IWZwxM=n6Q8B9S*;AB z6ZVgNo09=gLfAj{t`y^n{bTPIr4{?fzFmM~|JZj3Q0yQ3P63MjV|yO0)v$GVwC;jh zBL**_#iO--ckn?fAnYG|pK}fsAp6JmJX#mX{;?mH)gCI4{bT>cTWVzg*quCD+m8nO zqJq4zf9$6meho<2Kep%5TG&6f=h0f&KlXD5k9@`cu|1F0<_|nj4<@)48*X8`=Ej`bpwOU}EJX+gt1>a!>!v3*;?fi-rko{wO9<7D_V|yO0 zh5ciD9<5EXe{9dAbph-j`~4W(SL`4A15rS+f9wwhDE5#2kpRX1u@4DQ>>vBL0u=kl z{hD z!%*xW$8r7wB{p0u^t*goYaVlawBC~om**{K2 zny8>xFWCT;i-mB-?CRBZM0te*)nxxTl?vguiep7N+0&}EC~HV|VDV_}bP1jgvAnQ< zoN8w#@`e556v`Oa3Sj>@UFGDe*gsB(M{8Cl9<813!2;st!v3+r{<#Nt%t^9;Y_NZZ z;^m!|B>Tq(g<%YkktF-a_B~oBAHgZY2K#3s^0G;?e{8USxZDdBvgi07t&?Q`*uF>W zB-uZ<@6kF*_K)p*v`&)!V}t#}ZLl>-_Kywr57BtJqOg6B)=9E|Y_Na$EuOhavVUx_ zf7tp0`6Pi2_78XSrSjzg8|)u$+RKt;|JY#v^hTY_lVtzcVE-JCf!LiS`^N_Rhuh}9 z3bKD}uz$EaKAt4|#|HbSJC48o;@95>`-fZNSJ-)WqS>;H!$FfJUFLbTHp%`e^E_J1 z;ZT-OQ%bRa$|@7ra=i%qr>u*y7w^Lq`=_j`{BejW_D@-L;u!$N{wec3S_}K9%=2h1 z?4Pm@kJg;ZnDS^n5+x%B_r!?7z04u|#|Hc76i&Xde{8US*jke89~Ue{8US`0=8YV*l7+|1^QhktF-a2K(m) zHdjIRj}7)uEk`7|hr1`(KfKwfOq2a%gZ;yM_QT;c**`YeKhFYY?KIgxHrPLWcmej0 zGaS#zY_NY`L%ngbe{8US*kYXQAKUZeD^D=aMyecYty-My9~>nHKpE68} zJgl(6{^4DeCLfu!!TupymnQqiZujGxCi};3_v4!;`^RqgZ}7Q~~Ut=x8+F6>-rR&s@mWPuCf69i( zV@Qq|e}Yt;kGyTq?QfjyAKP>L8z=k62K$H4q6dO$z8w+qQXypA1R z0jiC7zWX6uM^K7KTqOv#zrPgav`CbXgMw}Q=hS`7iu6c1M}7t*jzXwggNLF>EHE)p z7tsF2#KX%Zv3IA$->#L!VN4tk$zcfY!t-F;8;C^5qh&O5b}e0GAz?5-SR8EIGRIwv z(+m|EjwtaJIt8aotuwAc{Y9GeKQzX=Sik@0~{E0{iDMj&8VUD}xEIe)wMdY?4 z*tTO%op3Wkkvi%Uas%2S=u%t9ibIipOvEeMIqoTEpUs43m9TeCPw_4gj#ThL*M~g= z+J7PRLNKMlp7yiNF}+p4UWX80#zEtN2${j3G!#T%h;rJjUz=a z@I?L_A_J8OhWAvjhTb=N+20|%;UN!%uq7R*WTh)_dg%_*`8p3>F@wu@c9TwM4eu8f z+g4O8*SABvpQ!XBwY#WDHaS zp33%8@^I7I&mVC(JKR4<>(i&PLpQDi3<)<4?)q~7&tpqHyDm`)Jho&X#UsXB(eVp? z9M^i>F$QZHG`u-TU*K&Yxb~4hedidwsP6j)ItP*Z8*zRrZNPg;guc%{CW(VtZVM7N zA~XuO;)KIeNZU3Z1^y5Y_kRw_-$D9M2m_cp@Rvwg(F-q$5gIP`l<0{u zs73P_vj|MiyFU(w-Su9cj1MRB0`D~y)$Q>mh6R)z>B_zuHAZ-{Cx80RtIt&({PmH({?DbK5Ven7>4N2q(7 z9eQ51IJ8ed8-&nv@oAu}y%37BKNlcjITOWA@WGI5Q^CGqIv}yOemaW(EEK&ClA*T! zX!qjlBqi^qJbOvqpDsnpi=oo(=+qO97!ZWo-&}~qpLZ0zq?W`Vq}2Ka*Y?DY`%)-* z7pk7$53fKG>iX@1(95b1A0Xi^CcecD{}(E8cK?9Zict5GN=&i;M-K>SBN2Ln+4IX# z`d-xdEZ~y}gZ@VC-U;gkZ{7z@$3>_IB_!r-Y`P$N-C-3QMg zCl`*hXWGDk_BT}6Fs;@rhsCw7QWjTml@`$&wt5-d$sbS|GGsWu%;19C)ONw`@qFwx zw|c_d(BC{#xMN3u+7lav#<-lgi^|U3;d&W0%Hq-*e(ni#|Eg#g)*71Yl*UwSoJ#Ld z%z2=*Vv{^!Dt6|P!X1h&^Tc=#;PosNL!HlF!p$VA71&Mg&=-1QROxCr7Nb z`iMbz{Pxa@UEm3G#QGm8+@aVGPmHVUBqfGflR20&Uhmy|bjh>_071>=#E0cPOUUs})Pd{?^{s|5OZHqt+1fgsGSVt$B>B#Tpyq zrE|nasPv9y@6JRD{(Qw|c)}d9#mG|Y`G2gjvx^jKQ)2&d#IQr-G*qP6J?+9;!y`qC zy?ta`+aBpWmCqL`_QR3F9V7Npkz)1OyEq6d@Qbad(^TR_q4oJgkzz^^!}XDOx|@Pw zoUdvyg9YzU#3*}5^6|)CrLu$E_WCq=8!IzVnIz&;f`kOQQsDlsE+wjwj2kEX{xSq! z?STaLv@7LQtG@@KCONZSS;uPx|d!hB$s3Gl~#(g<9W50Z1;Um^W_gc0X10V8&> zG`Ve1K)Vv5c?CTG4vF)rQmAbkYFW1E3?yV!!VV;yy9C~Yh7?r7ZX~Q&igW9bo+@E4 z6IQZFf0eKg2`eu^J41%6gvXJv_+%!GQ3?B*aNe1k-ejqSpCe(}X&}fnrBuSJNLadx z5>+bUooCnfj&@Vyatdalp~?eX`Te?kiy4C;%b}^hAS0(W^!CKK=I0(M*0Ho^d1BmG zFHvF~K~#pF-r)hn>;2`P)CwqYS0^bm*tgMd@~R@KmyeLTe6TOIw@B)%Bc#q5>Px*) zBt=K=TzpC|tofsSsY69l%|}R08S6{^vq);;5mLvD@ujlek%d3@anlh}BfU#(tzlr1 z)PqMzEgV%qdHglZ@uXhIsJ`z@ea2BWgA=?dlFb*>jnVa_xySuQNpsYDpXa5^v~TtR zr`@eNV%o26AKe|E7^nT%BgHzV{a2nC_u%W5n7^Ym%_>MIL_e%g+`)y~N_JHR2V<+f)%iDSyhIr{5iceK~u^?ym@P}UlrD3U(=|B}XWt~LCjNcvV^`hRN8t0G8Oc)Kh6_zPe9Kk1Df zLTi{%B>ngQOB&k;9u9cYyrs#aevGRbj0`NuU~3I$df6QIMwKmVXSJ7pHPU-;^uSF3 zeYO`>D3wj=qbkGdl--nj_>2;7gXeNn8+;s}tiY3YhEn*|8tFUuD*e`OS^o$~R0yR% z1gw@j@ydZA)g@rJ9NMb9R+YkQRSP{tHt*sRt_&>Er+q78PX{|-cp782!`@kgVspj zt5>8Z)^hjD@brt2zFN1n-2-s|XcxBP4S}L5-mwo)u`j@Fu6Ij*b5PCOU+{^P0GWHi z&fd2?e_F~3m*-{+p0~ocKvH?v@;q||n%Pv(^c2(w*G7-xiC-Z4AdTa>^*?*KZ`l?dMe z#jocHtb}o62%bkeVZ-1jU(D;SMv18P1Tr-9;fn!E%MMZseMNqxL_V__F+N9HNexnr zRR>VK1Y}6RcuA>O{4Z#>#7e!Pij&xA3@*DJDEbk8RzkjXC?YVTDp`)aUG`!mS?6UC z-)*sb*7#<`Z!e?b)@R!gzgx-t0V~*eP|4&mu*Q!?Cid3Jh-Y=l=EcBOI2qmC}@18MvD=l^c+JzE|mw(g3Tx zjy2y1a6vf_4fs@A9vu*NLeT9xsy`?q@%v9kyg6c0=c~peJ|@BmOq_J?N-a7$!ikE1 zjtZi)Bb)0-%tHZ24+JNhosmA5}9cJmji zyjDH;v!2Mj$Pc+$<~vYjvP>B`VSaxqlu2T;q*TB=;oNu62pZ4MlR> zj|E)ojaM`Wt2WJA=Z#o2$Cu95dT+?0xfeOJ8x(Y+xtCqQjS42CxpUcpOBKvUb1#ho zyiCE$Xs!;MhjqDvg=lVAcfczY>=Dg{$^bVh=tgr*QNYa#_KN1#aXPM4urZpWGkt4| zf&-(u=dnqHiELel{x(H(Bx71v2ckCsK5pfgv#PBDIi5p$^*dJnZLXzj{FExBT!rOt zZSzyQAZ7kJNNMv^Dv@GgSF*14Q}ReD!*OC==cnY5G6;K(b-kZbft2exVmJ6HS)_=s zj2r!w3{r002AS=CN*XCI-ieeQeoE>ct5SSw-0Y_$AtRnNZt+vfkwQ1^)=n>_Tzkh- ztC7n(aQU98QvO*e1qj%POiEIuKKeOh!_X) zTeS$~-$X=q0O8=;P>x)63tV+VBb56KM+#hZ zIs8L8a@8$x)d{nq9J%Tixax$3P>vTI7P#t!ZU}^H=wX4YPE{%tSKR_v{cAB%bqic|>ZhS3x#||U>c;`6-@>8dSm3HZ1C%9K-2zvgK+Diz+X7deJvPvNR!~l^ zx&^NKbpUDdDjf@4^(=ap;hO*pTy@H88FJMvaMg)InX4dafvYZcW%x|r0#}^~`x3e8 z7P#uKu}Z(q@FR;K>S9S7Tfd#I*s`H;b+Q3zpI#mncsuMX{xqQMA zT=g2%nHH|P1+MzTKv{CtEpXKdw9Fy)8C>-PKnvi44*wXH#R9H6b$Y!6my@e*fvbK6 z(kc{J-2zv=v=mj5t8Rg-P8D#$P4&Q4XBJ*0v64KZQgKi#Cs*A9SN$Vaq`2x9xa#D~ zWyn>xz*Scjk*jWjt4O{#5x#||U z>O|QLx#||U>fDwqGvumU;HookXNFvL3tV;P?aqCB9uTcXsuK>xmi{Opxau60COt>4x&^K}b9aVv zcXs*4t(9J%Tixax$3a5cH=7P#uvYIitCuDS)TI?LV_R@)=E>OAT@y!e%qt8Rg- z?xMknu@yzr!d17xRi6v~ONLx^3tV-c=y6bS?SZRKWMs%yx4=~=ax&zqTi~h_Wi#Ze zTi~h_6*At8wrE)hJxpy;w zzf$ljBX`^LfUhdJ&B%SqzPzU3^+vAG8o<{T++pNOInHk=xYNkVw)3vic(;*zc{FlA zRPZh%CtlcotJK(Qe7+HcfqMS3w`WfVfi6ua6fZY2iOMuv5 zlcyVH2@o41Kv@FBngl3IfY?w0$`T+pOn|Zkhz%E@ECFK80+b~{Y=i)12@q=)pezAm zqXZ~RfY@jO$`T+pCcOfBDocRaxa5TZ$`T+pUbI%unPU?KC`*9Y#L~^^g0cjN9h1P_ zujiaOHYJX2!?Og49c!#bZORfLHZ6V)fU*RL9VcdM$`T+pFLN_;lqEpygo-@?$`T-U zqNt-R0b=vzrcqe}#EP9W#}Gl!zHGTV>%R=FF8D3_YL0KV-$qJA=H8;O=J=J8 zV$oM~e2a?HFu=*lZL{2nl;X0ln+AtWSVZ*I?BsJyvgoVXsS-JhzM7qCl}^KevYwLO zotH2c4Fk&RyO6mZFF7h4?P1 zjcYY91qWw&w4C>0J(Q6^(sBZLVIfTEq+K=zQp!bWGHzf4^IU``9fKRJG7?CZnLHxh z8Xj`Vgj{s_E<%&#!H3YCauJ%$IJdEGZcNFn$SEU%WQ71_B#_JrP(}jDytJxZgeJR) zKFURCvPwWfj0BR^s#P%(NEXU?perMRWY;L$R7L{HZX&i{T^K%ybnoaF7oo}SK^sXH zU4$n4q<@BZ#Nc2=DfvEvNUzl_x(H1UO22|63BpHaPVZqme*jqc3)FInbrSIC7MW(8T4=E{gGvE^&nt6SjL|lK|x+G_kqze$1OP z5=dMbXAxy2kl14G0Z>K)iK_$@#EoX+Y5_D7;OQhH)rpJH#Map^057#+8vkVz(%*j06(53s6P^i8}-+BZ0)70+f+J z;x6f$auJ%?BcK=hdkbof7`<^NAud7_cL#e>0WlIt>~p@P0z8W*9#TucmPP`Jhh?>g zYH1{p_=&gFcydZSA~kz1LKBY$A7E`_B#?N@nV3Rt_icyR(;}vckpS*5)PY17p^4`N zC?kQy^8%EM(8R&yYZw8~MQGy1;6GTk7zrd^bGEQ*o-Grv%Y}ir^xp7llLhvss!h2F zO}rJHjWWtbXyVt-F&Jer5=guwV#-Bm;#~pCMQGwZuQn6gRpK|QwpthoB;Jp)ePtw& z_&^j;MgoZs1t=qd#76>@kwD^*0A(bQ_^kkCB#`*Hl*%Y0fy5`-I{}oDK;m~5_W&H> zA~bQ>p@>?X#V$e zG*d7qYVF_%1>-G!jU_NPy)UGkji?fRO;vzzmH9 z5-<`VYRb?^AORx*ZiB5E8VMv|BtSGiLo3Jxj07k-HA5qT1dIg!3$4%1&`2NwBLTL) zAR`+%j0CuwFU`nd1S0`%+RHLD5=g*E;69+`85#*BU?lJk24Z)Hk3AAF65zJEFU!Xn z2^a}*cYHiUBY^~r1a8LxygwtmAdCdKCHgKx(;0_@CQCY9>>@N>>>@OsPg6=638X6% zcVqWgMgr+B#)KXiJaG}4t|}i4GN3XNNLMGC0hEzIx*(gcauJ&DAv>IM5t^=%qkAqU znN!(S83~Ze7BRRdMhxy{KmtYr9B?B; zBY^~r1cO(n~PCPGXeqTm%8N zNJi_4p(v$g$Ih6bC63aQENj4YWg*Iq(SyeVrvK2D<;LmG!$282vrZhXtG!*78{b~; zjHi$}K@VQRatE;RvWZE$^Bv2{nRv3&QsZOS#4)OILsc?GRf2~P6SnZDO$=+{SWC z(TAqQDZ2Abd%08naN&1#lsg+6PU18@_;W~>fAI*w8G6+^oNLoJVBDR=Ik51k z^c!EH%gWT$0kKk-rHM+G@Mt+t55^#w?)nn8y~G8&v$wt6g?{5QoENFC8<~3oD0Z=4 zD$m!lq`4)DA^x#;u(DU~IO^FS9oczIh8J3ND z1xKu2`g*CJSY(WQcrU{>Sao|=sC`B{mvU9c9mYi9&6=PC~>tOd=w~R?7@Llq0D6xFqhd6B{MXa zNx)oYG}_RzG?z)hT!wEEvl%jt5-^wH^Nz|K&1DiWm*Hc>!{HpwWfCx#c>yqM=V&gI zfVm8x?!#QBoaQnKn9Cf8Mq)IVNx)o&EyidrlYqGl4_SFF@f{N6q|>U!zQh?S0dtw( zBdtQ2%OqefL)xIc5J0H)7vy{n0xp{@Z;P!`olw^dp>Gtb_a|FA<`{} zwk>Wq#7DZLCgHs3-iyABa%Z5$(e5Vbe3aV{T8(jAQFg3*19Hc?tC4%OTek$KPWODY zGQlm|1yJB;7ZVa7JWR?Js!Hv zcYC0fliZ^)UkltJ=*7wI2biOU?o!Asa-YWtEOzyq@CiWoGo+m2wzlBIbMAI%zSOOO z=BK&4(AMehOIQhKxEG+sW$pv0;Y{}m^x`ac97gPH_ao@M+9QOKO!t9e>&CZe+Qn`P+OBs0fs{4wU#jW|QTA$g7qr^y?yP_tFZUl9hi&dK=-lRJpw+eRhF{>L zp6-Xxz9-ZPqZqx(7}x4ZMuiyiJkXmykOQ{>+4-U&T#aa%A)JKeg2ns%!@ z5;ffBRv~4V8^!N#_vH{9bqZB=}Tzo0fnk?q0AK1bVj*w0+P$`CNQl&wT>pywCj#{d&lK0Q2~; zyB(50ai^fpN8H*LO?%XR7VZ8&_fHs~$K2#tTwl8P>;ccrJr1kxr|xRVKk3duolm)g z!tlN0o{Sznw~>pGWQ&?mS3->Hg+gT*10Dq50aq6!rYs-MmNBzH!Gx@-ObS z(BZG{E$GF!?rQYtJ9qs-u$(oEUc_@f?2oV^TC^j~^;b`)Xh)bEqT-*gLVUP7!@LGT zZYr{0dtSuTwLxB|_F}qq)?L`w8miAnJYp@h-+2X*J*U2nd-q8v!fET3?G2?m_m1t+h3 zvI}2QYBhWfk{TO0jSv6ZJn74JX(*9=E@bV{LY2|^mSj`MJ)MfL0@Yf3kvBEgd(p~eTE5QuCD7bh z&3XrUuJt+4f>=$@yMTHMS{kbvkAcY7TM-wVP^{(&*3w|r0$mWRnThjqzL(Vsv@TY2 z^}Rs7t&@N@#cJMv9;lC?ZLyl`*8ugkE=1mrSj}S0Xuh$WbiduPnwKcq&w3DOZ>%OT z8fcJcy)Ra?ZX3{G>j~sN9;^9a0?-ia9iaU&Ey*!gOJ@cKMLib=y&I`jT%Mc+mCaQx zF)XRW%;xIhtSA}@g^^Q&1j!lMDJLb6B_P8)*ND;8m*fm})RAH?vL_)mV({6uRL7}G zan+}ID}#iRAQX3idhY(5e2fFj(K4RSAXR&nZ7M!L1_58G-^BHsa1984QjTpZM2&`vAM+Zv~ zw-!VZpHT5<#_4mhvbWmszsK=d*+=4rFb=y6G$z(#G`@Hmmz;xz-lds~#sCZv5JK(U zAkc?WeZRzsCmiB5b-OKc5mMahUI2}wck%M#6P#dlt<0#ZE#HZ}_}4foRk@|-Ln8ji zwTSmjzJWL;`jkIIiGShLT-B%~{)xJ)`n5|8EI&kvuW)%$HCRbx??!w`yTq{a0M4QD z!)&ElNx(6`Ry9JXnrvlMc@Ii7K*y@1l*AqPAwH(Pj-$)RQKAP9=c)-xVtxza6Wb+@ zDPKy7snd~qtdc0fs;ipXE-|zGN=l5}g4EecqW4XR&uN!9zWjbl?AwRb6O_c_v5248 zF0r8ezbG+|tt?a$$54+&?GmSye?^J1xkz2AB>u$FJFQ(}S$P5-ja!!?^(-YZ9rIFk zcDuyN@`04N;X0(AuO$A?@m9s-8#{=fHanRnmKefK7LFYhKV z@In9+Lm?tcnVv5X1!(1r)bRCE~so>P8h6_pK^*rLMSCQM;&huM4iV)mmGv z+SdO3f4^tuhG6SIpU=F^_sp3y>z%vIIcKcF*FT4Ha=M(&h8OFwDd&T(atbl|Vr~tC zw}P&6YGPGUIrsk0a+38~5AmSK=5lfDSLD5V4 zLqvKw{Es7yfG7NyY+14v0?tJkQcvkG>&$O~@B+d}@l5cVZTH+$*SqyYbY=wNQ6#Gy zW7)6UiBAXM{d0H2-qrPZL>m=1#P1-Y0;?d$ajr2;-R}2bH95!|lCk<}hkM!#ftd7w*DqH^acor0#{( zdvt0#zF|qmYgqOWyjo!=9S(j0JcVim6lWEjh-RS%8qz}8OTV`}~I^KB`9zNwy_VG^#uU7vn zvj&${V&EUt^K-qKpHmIDz3Ef1>g(+hTdubyEir2mg1+9i*@^Y{T2qRZhpCsGJ-148I0t{0yO`>TKk@+0Jq`!+8&*4l;Rl)mRDb3v`*jNgvi#<`Z3IuGekzN8r361YPD&ZCPhAnNAs2Z!(`}gkz}Z z>Sg52+fc+wx`@w>*+!wOi1Db!7+J2?=w^+*2-82}i(BYuyVEXjV`SX*NScP?CnJpC z0wC01AaWTfmmrLL5a1z19zfvV;CJw(isPB|YH5luNfPLru1E2D^p4WSzl(hDAm|pZ zuq%0A;A;7{$$Ob@piEKBXq2%1en^_DOXxIQleyTYq=CF?%0;-L#ma4dZH~8lr{jAhLZOrh+WFGSP*`gF zQzI*(VxRK%o2KE*2tr}8?Y2i&Mg>?IwMRBpS=dxfUC;v`!VpSNxb2aJQw1!X+JABp zzVsjzX4-yxWI2_E<Sj@m^u`f7eoF2?$n$6;@uCSZlY@~ zn}Lt7)@>8C$rY?P|J2Qp}hxA)gf+--gOwRx5F1x-^A!W4c6onMx`asmc<} zo*8Hl$H1h2>j2p4$A;ryEPds(_?Jl6;dvXnBZoBLpPyd(B>t7s>rTVJw)A=Y*Xi`U z3fY{IcOsXw;d*3p79WW`R)!Ds$vwOm!Ij|yeR6=r<*518;$SQ2yIKvoVl`A&DEkTO zQ%H+q0+y?oVM?qX7lRf$wY$)1TBy#jSCpZoX2q6w zWth`F!`>zXt%lS-Qk=@tYDmqkWN-ReS`Ddv1r%8J;`n-sdU-s^OUk9mS&NlDL;$Ut z)WXzV;3=ookUF%CMVHfRNFDB-%EoymH9z(~rO;|fEpW9IS`Dd#{2zfsWxu)wze^pK z<+Ir3u`*n-Sy~OLqqCeRRyM_MS)nUUp4G7y@)XyBe7q5QQy$<1(=b{MsT1WKP1o{Q zs=>)?k)fPcLuzPB;MI8w!A}`Mqku$~Rzs?v z0F|ZHkZKm-W@$B~PENC_#%f5dNm6>nTu2WSrkFM>l}5aZRzqo64KbmLRzqo64H4j2 zD)8rMH3Yl0ioJw12fukL(p9t0)#Ru?7;ToAmAhvsm|-wF9dm0u^#++kw>(k!$7FE&+tq(61q~R$C3h?5uJrWzuTM zfz=R!6*e3U1gjw~IGrJ_h8$Q8G40gix#&{|RzpmK)ldchpNJG0#kE$h>Pe)-YN#h@ zwc2V3hHI5yl|e4mcpX>`=~8GlPCs8;B09hM3l77il%*z-mZX z?INv)99RtzZnKND8ggJYltLF;vEsLn1Hx)(3Xqj5KDZbVRzplpq>8i}a$q&Y)Pz%{ z)sWL^ddw+O3&nxe5K~>JNUI?SRzrloQ>4|91FIpzDyK-RAqQ4NgaxNat04zgLxe@A zxEmG^2UbIbC8tQMAqQ4NguR_2t%e*}4G}gvMOqCxuo@!l?-V;Z9IzT9Y<7yY8ggJY zL^#AL(rO3}>)dLzsKqJLYRG}r&~AWR-8xzgIj|byL=vl^I$8}muo}`7SPj+DY6z={ zp}=aWj#fhstcElXtcL1nHRQl*NK;@nR2SenabPv1DX@ipk zX$q`{>bQmOz-mZSU^P@nt04zgLz)7sp}ME90|iz?ngXk#9^7kpU^S#Euo|l4wz>nW zAx(kRP#vv?99RtrMXZKoHgce4HjdS^lik#lYYeQ0DtKdKM+w6$y$B7DaG8~()sO?L zp))WIbF>SD5?Hm`YRG}r(AyyD2@b0vnTbVO4LPtH;stIc zidS=BU^PUj62&jsQ?MG6%Rf=1)sO?LA;LnUNUI?SRzrlPM3GiQ4y=XEw=U^V2Tx3o-H4QZL&GI3xvq-D}-$br?6 zmPxB22UbHOQ^i)1?qs# z0{9t~$&$1xSf@jF;vB7p99Rv7pw()tAqQ4NR|1B#8ggJY#41=Jt%e*}4KXPJ1swdl z9YF-gt=y%(kPNG#RiM>st04zgL!pbTv>I|?HKYa6YRG}r5K$te)sO?LAtDvhYRG}r z5Rn_wYRG}r5Ro6!YRG}r5K&cF(+>z%Lqvs;RznV~hPd<=Ls|_vuo`08rjS-c4y=Zl zwz>G#aX_#dV#P{!@t&!Guo@z3Z@WmVAqQ4NgpGD_RvZvkLxlb9;)1gQVKqe9Y!_)Y zA zZB7g5quL%iy5PU2xbvG8Whw;JfIj|b~Gy6St z8W>D$YGv4H2o3RznV~hKT%-RznV~hKLFwt%e*}4H1<>S`9g{8X{^8Gq`*m zSPc<1hqM}UU^PV464GkOfz=RETS%)R2UbHw?cug@K(HDjnq5PyAqQ4NMDwg1t%e*} z4Gl)EYqiyo1FNB49;!`!X9re8%h3in++70%t0AroSb$al!D@(i(L|z1t04zgLrk2Q zDAH=kfz=RuaiS{HYRG}r5SiOmkyb+vtcI9+wkpzU$br=m;rXgat04zgLxk&9@k6!+ zRzrjrt0Jw299RtzZdAn#`x#b4gqu`RmK|6PvBsNKk$TV$tcD1$S4ApjJFpsJHEvc# zS`9g{8e&^NRz+G3Ij|bqlQ3PB#|>BwjR(a2nI;SltcKV?SPjX&f}C;@erHv%2(k*! z==6DA*l^`&HRQl*=xY}n75Zh&i6y)X!00@NNo+aupXIyN`{0W?WhdZ$$!hous{5Kd zNYNE{_UE;@JO|4=l9j#kWPo95-j-B$%h3SC1^C%dF9&E5P{>x_4KPALDO*?yFj7Ec zb{q6vV(31m|Qg&U}<(R+1jPnE3++3nJQp));SAcT4pnvaAI~ie%%=rZTQ!jZDpRB z*<%6LW%pnWW~mX7c3O5EE+=6fR_X!fp>ET!MbTI+`RU)xVgP)&oYqBw z5l`!)pr@wOx+o}R=ZiGXRk1Fra4Pw}))qHnxCS|bq_WzdR{?Qcz+j_H zJ}b-ht1=XzvRu6?YXtb&b6WvwrPM-}3rc03)Tfx`a#GntKq<@Bqq3(iHOsZ5vJ`MZ zXwGuwsH}HbW=B>k*Gt&8=?BQApqo`ftcxle;@eTz46TbQ2jn}EoK)0g3F52LhZ^9D^H?$|f5C&doB5pZ#DMznh4RC>gMl_7Kour5p>!RSo_~)#ESQiEB{qrH9A2t1hU95|OpT<`q zrQuW*lL#*M?*_Piiuj{s zyB(9XIk?K7RRuO$7X?@67`J5DgUwQDrQ3Fm0AIK5S^)*!w(A6xbhlkEO>5NMc7uTa zXz#v|npAwL7we+n#`s69fLIp=Tl`yC0Z#qk7kcXVqjgbmm(2D=KUx zTR>y>%=-Y|5zw5i=fLj}(2`xmw!JH$ExQWedxG~etW0~B#yG+Ig@XWQXL-hZ@Ikl) zpv$_bL5?5^KK99?C#SJ4%6^39A^59ERoPpa_iw>*;PSKA?FaCMfP$9#4=JLAdEkK~ zspg<9VqFw`7-u}GmVs_Q(N;O}OM#sJnALcM!77WDZSy9+-jq&8LZh}Ws`CB*ST?d# z+L01?%!1V(4XUcFW^GkJS{GI2LUQ>{v@WWumb;s8H_^JNDlF#}S+JXET~rn3iAr|U zq3eKZ%10qvquoU7qAK{=Ac{57x~QtC5nhVfS4@#Lt*2E%3Db9Cu`a5ri}U(w5bL6< zp8okr&#t@`a!LW?RzG}us;ZZoDY=rWdI@mREfgl!MXLujX`ubms6-kk&;3tc$n|wuQ7V3SeDC)E?$Jn_*o<&ebNzeT|xlsq6N5sw}r9_!n%k{;^$a-FqJxT)jm5- zrgY9&7iD<_NzPao$;8do=E>z}snD1!R+y=f>wNfzJP*;nrc=q)SU-0YNQfIf0{&%+>dDErX5D5*|B&ZOd+m{eTL zaIBCtYQ7X`2`Vu!1c)!JYGMOOe6#JVVebM5(7GsqbrJI_D@W_1 z0M8qRE37jb5z18H3pz`BT5Nd>Vk3SeDydsjYK7wLR5vteDtnT>q3E(%~>v<{p( zS{DVdF5<`Tf>;*?urB(0mk?MNX(4h!z`BS{fRICZwZOXQX%;TlMFFgf4lYKOhINt7 zCzmR$izHu2_1XZ|Mf|kp*U-8sfOQd3A*6Lt0P7-hmO@$=1+Xq6>TTs{T@-ZM@$XRH z?qXdOz`6*h1zP>3TVP$p9_ue{g>@0Tp}&+3>mrV8f4TNyUBsEWhg|xwF5-0SFKYy> zi#Uh+)4C{tb|_KTZ~DT@=8& zXg|P$SEO}O0P7;|0>HW`N9&>h)9!>!DhRXC05b8D1dblJ5aWNegT5qblR*c zS{DVdF1iM^T5Vkvz`AH3EKl-XHGp*yKloT7HwOY(7ZG(9X z3A@P6k^t64gvu_`x+s8k5us}rX%u8y66$MZ7{13>mo83>!ON7A?M;KLk12(e~f*k2LE)Bs`ka8R>Qi8?^IQ^ zE~T%dv$vY~RW7V9u$&!k6P4)08s{{yeeO0RC1HO&`0G> z+aCm~cQQbYMFIorycs6-$35!7DZL?!yL zuR9gQ+2sSNL?7kp z?oMqkZ=w=?ILMs^baQ!AY&_6Vsr8ofCMwZ~!`uUqwza&8O7!7y_aq=F(dXIcdg_#; zQ}pMLq~d^;I6XNCI{8H)y?2sS=P;SGhod5SqKr33DLZyasTL@c6WS2CvM+EIC3Ig%P^H)9VK({bU7yFqA2AtrpS*;;iE=U{AWlFIkeR?SumN9@|!3phq;>E z)!lpdk5Mv5S|^(Zr9cpoL%LEJgGhev#K-U`o%0~-sW!xSW6kg?9Hn#gcXm}YcpadM z5`EYbdlr3NaVZE4eUW!9{%5E}AC9a(5Ag<3q7O&;ExmDZQ;9wt9gIfY%2J6w93wzw zsYD-+72s#7L?5;ZC}gQbAC41H%2J6w950|TOC|bnLNE`~nzK}*4<`y}$x?|voD>{` zl(sCD=)=ju1pw{VZhZGiD%M82Xm3QS`2!;FVM#S1N@DJ6o+=p4=Y>(qSxn&%*twUG zR3`$65`8!&elxp(O7!8>@FLLVBhh_`^tCc~U}3Ur^0xtHDo}k}f3R!*;uzebZMi4N zN5@aVp!YP(tU=r>u&d+cZ-AJNTfgdqf?;fV=G7n<;&PKn$G0A-$$M_!0`lE)n`7B5 zJ&jE*UM={uH~nlRbmvYUBP{itPKDMO&ey{kMPq*^!~x8=287il9(j%sN0Imu2yc?O zLT8^$;-RBr)&hh@SKhmxl8?%-p4B5Lsh>ymDTiF|JF>4QmAtPAwHeJYB zAgm?vx#vK9EMCUXW}kuZF^Si(s`24Tp+8$sNziT?!Q9fYBD zHQuiUx~5R6b`tWXf6^qJe}^y(D%F{Uyx!hBC1%}@FmyfG+Z!=~xT9+~B}Bs}zTwN6 z!_S+B?VWKLFZqjNR~l^Zkw|~J8}5Faz*cCFSyc!lzRxw13W9qhWhTPNy8$jnLI`sgpa0hkD%W8i$G^+XGh$8H`)HRi7e zm!y`Xps1WfTj_d@l{a(U(6VDng zvyjwtTFeR&+L$u(08owqT8c38Fo25?xq#ppfDaIPo8T0H!Fyq@B8=lmMFk|fVz|KM z&we(2FU#UUod)(FBaDdHBPJQB=aKSj1R1ER=`kyXAOrOTA`c_9erMXjfjSjZ*_&(7 zAHiO_eH^IPi3X7A#%@gebYlYBhHh-X>Be@`E^IOn51JlzUlhahkZ#@A3FqQ|rg{Dh z=td)q_&%33uN^6q5u|x1AaW!D=b=9n`4C!(6(xwSHpgoVTxP`VY+8)~u0uK3KmsB7TfYVUEw8SkfKP+PfQ5JtiUR zY?x|?L`);PG0|S8JJXnmX{ur33}4vAWVIe(=&bQMn*KvI&YA0ijlRZ+!2D=!>PG)% zH~PqK^cQy0#~je@`qFiU!aV2sOJk#%5XCOh{b1RCqU_B6W+qI-Xii2L@qI3t38y2a z6G3LeQ;0l3z?raU7VcmOtsk0lI1`S5R91p3(pQEqE7GX8owMH5?=eGyWwwcJjOy1b zq5AG&>i090aS6hR?{i80evg#jAxQmlvtw2oLF#u0BDW&6zG$Sgeh#EY^?Sctl}7j8 zWyO^KyK#Kfe^KnBsD9%T>Zz!HAES&95Jr5TOX}BaPR#0oAoV*0k$D8{zyBcePlVR{ zO*yRJt)_llD7G8A^j|q2ukc5J?fCzjiua4XusrUSsH`3UJ@?%paY8MBviNCZ+Qh+# zwH|6R^1@KyWa}wCIZ+Gb^fLoeXGqi(*NI(A$9@TQKQhb8IDBtB%OH&SK9@9j6;h5u zkOtq4$V~)n@brCRRy#uL03)3ZzQR=L$EeZ-Lzf1h(G8gTl}(BUB#K?jy5rA20Y?bp zaaHPfCdyccFyi}MQon6Tc?d!3mzW!~z9L}#?gF?2p|xPjVf|Vm)m&Ah2O7H6@5FAv z)UP-ts$UfAy5N4ANPivG?^BfVF~W%Nb4mUB?i;guAxQm}B61)B>u2wW!zTe+_b}zK zet$6a?+-TmVHAa-8u-9XCc^H=HRClg$+k&nFw$K zBC80713ZbyHiY5J0roK>?XKADNaPo>vJaXe?L4qq`^T(*QNSqxvjCg7n;h|s#kh~9`+J_bP?1-5dnq2B=dn9B{|EH(_NdtXDn5%Q|gES-XzfvomCrE!!! zFQz(2+4FfVjM=Lj|Nr6@F1@IJY94Li9>T<~j~e`1BK-vllR5YpTJSL2_qxOH^5M~n};G40)r2|i%9;A#C# zbC*b1+mO>fBjJ2D7l#w5S@*_}IB8>b3pm0FU`ZIymig&UDW0r$3 zwg~W$kr}f}GazQ4cx>gKkU0QJE5UO#f;F6s*_nFc*$(;TFiFjYT|9|rSs~hhf5%1Q$ zbu+j;vAcP?>L}WiQhJTK3$kUe>l{DS-7gr{N5T4yX4Mb3e1EoD6Xt$JNe#oK;Xfd0 z^y7w=54WxF8o&-aQ0Gg>U%TypwQuzQba%>lcQ%6TG);Ubz55 za}#5wU;F=7x^=r@#_ZnR>F4T)yc-@7qQ*_CPMt3=A& zGJcKX4mC{a?>L6(@2u9mS-sizb9HJu{>`;J+s+%=4Ted&`N?iMo``Z3w(iW)ZOZ-0 z@UmAv)4V@4lvkNM0m~S(%>dR)mW_|E*(smzLEWdGHTESuW0sGJ*0XJV0{MG97axH| z^g|?_gmv*agf^y({2M3_0^NzwT4Qp(j)Km?2Ntd*$Lg^-eq7Ye9cIkQbjJ@dbsDA* z!L(ynrl%UC>t;?me&wDiTz*YVr}~g>bj+?VV|>M=|p-B8}=ZQrYyvV0)&=3 z0B%6!YJzJ3zD49qgf`|GxgC_F7safF2xDF`^8T*-Rxg~ifk&?GXrD0!?Y!o^+c4V}zIf-8~pT^3J0X00zE{Y#y$OK#o0 z+Z&LJTRQvYc+{uTtkAr_^zKG~zZ-p2H~P0`ohAQVL+5(A+AKY!FE@1FzYa0$0qLjj zq>nkqTw$cMF1Q-Beks2z>d&`Xd>p2d;FR{CVR)v*?H9pg^Df-J+7(Jj%AkSc0j9=1 z^Nsi6J|M!-`q4bd)8hH%1pA%`uvfgC-(9D!DF955d-KURZRLuUmOU~qR;%`uA5rqa zc#@1Z9}U{6SP6)($cJ+9OJee{)s+qV4KoA?N>KOx8C z4Xk{>4!j#8=ugP;cr(j=1cbXtluyX<_!tuRUW|8i1Z^@6g9sAe1mO*Y*1o2w5RLy9 zwd$Jo=6KXhLq0rePs!DwA@9fJTe!{V{Ps=v z3B_l<+m%k1jevIfCj5SEG{>&}%7wxHhnL5)oL<`i?;{BxLXXn*A9^UVAq>Ouz(;G+V!-(bLx%5-Ji$ z|JRNFxuKteHMn|&F0vV2SKB81{)Y8yFHWqndNnkvQg2o2%g!8x?=sz3$7oiyrfL_K z3Efy0M=Z`REHe#DCn|W7X5j+gdZ?lEspTe3$BDvgQ!-Sqn!6m=Axt@|^*qBp8rA-l zks`w?vYs=kQ<3_Xq|TKG_Yb<2p~gvL&6Cmh3mE-x!zwS*%gh8~Cymzm%B7RO*F)$6>_e19Z%bYuA> zV%c>hJ~1pDi8$_)a^;{tF*8>=5`#1y4+=jt5(gV@_VrZZ)_r|)Hz}*NlppBp)(Z_Q zyX~i@B3*+y`e!CpM&dIA*oXIbv0AO)bfdqZ=~8E_waQ#CY|VF3%K9H_%@Ky1t*M^C zKGCf?t(%nbLXWn{{%hu3W>}@ZzcXMiXxq5RfW1{{O?;DLr|Z6m5uw#GWe>NTinwcck~&cp({He!)3=F|Ti ztTAI|n>k4q&PTr1%$1h|`dYH)6n}(u@p;>}$|U?IvGnw zcnG-8vBheGT%-SBxMZG`57SLzL)LWpzL(I(I6P2KXeUT*;F^KDllR_pH#oj2)vRIjUQ>G+8wO1g=y zZyP3F(PIshuHgx|3LJB(P{jUSBCIhvLuW3E?aE=z?fn$Gs~J8ajE9|RU1Pl#4?Kgb zICXGbAm{jF7?lSR29ND8L{TiNTotp*5eAnI6XGxwYb^s|5yFtMoVtVcz`g~-A4rse z9ir!E;+Pn`T7xLlf2bx-24N(E*83QyiM;a;Z9|>%2zo9|wiPQG+t4P@FCUpE*w#u= z?Wwlk3B@9LQ2H&TZATdMmEnn=UryQe`Q=!X%#OMWnb}$LZ9s19PnuLN=FjNVAGoQE ze$}wbGF&jTgTwM~BXvU?mX>Z$fn)j@rf7_Gu^ZYjta}<^ZOA_WO*7N3waw6ZBc3F5 zc~aW9TQyg8u}g9Pb-Ng0O66?UZ@K*bAiAs9XCbk43^)HkoYh4DK%~Ltn`oaH+#Nu-B8*;T1aiztmx~`6&PMuFJcG z%m>Z6ksN!__VE)){t)3HsYCw}ti#yV*hxb;5RDul8b!APU4^jVfd0riK-AQRABT4` zgaspc(-|N-;@1IRLYlO4V8wDs8-F}5Km@jEV2PB|fled^uc8ARNU1p?W_bu>PMxC{ zYOa!)@9|^5!8erUQ+V|!1sfW8^}8Rv&QN=*o$dJ7eo(PS$joY3 zREuR!!U49oC~{Kf!AaR7Zn-eT2FJ=fj^6-Z`Utf*c^!AH!>%hrakaas4`ea~AKJ-9 z|Jja@xCp@~0Ff)S0Itv$y@t{lf*nXX{A_sqM+hFZQymA~j>7~Hysx}Pky|wnZq*hI zxf|+62;Rt;x9CCzSCI&@6JlP+n0xW^h*0}uucQ1zeC9GJSLsw_1R&N!#;gusb zHg+_5=;|yr&Y?srLsw_1@d6SVx;jfu2w1LShAFYDyM#{dE_9j}sx#~rWhkX)#s1ut zVNUl9dz%b&b(Y#kic=Z7I!n#1yax5~GylP>U20ze1(v-y?!{2Qm(f3|CFRoOjK#_x zB0yQLpIVq|22Yx<&Qgb#vFP*-SSeG7dw4uUx0F)zWB80^W$5ZGwZPR<=;|zWkdKQ4 zUH#Q9081T~<+Ir3u``(A|JH+ibe02bW$5ZGwL({#JgZ~(k*By0ke?p=$Y%c5f1tg^EZPpOAc zX4xi0eR@4BgV!_i`1E>K2CruXDa8>8==BVK_bOfz(i`}#_!2*rtX?HKDtAON7%&e7 zGrXRWUL{`76uh3bCtx!|uV)Hg&tzD0cjDrJb3UKFu5$Exrr`CAg8dx5o+)@eV_E@L zpO*r{>zNHHRpRwb!Ry%-lu1J#1+Qn)RXJMuD0n?1O5|Zyr{MLBK;>w0r{MLB$c0V) z5&vYsDdZys@j7gn2 zdOcI{dd9SE1sXOfcs*lUn_YOS2@qb-gw-z4>zRVrGs10lfnLuPyq^68(25o4^-RI* z8JlgT3iNuW;Ps5DiBy4J&lJ3#F*V^7e9RpMuV;kHDbPAr!Rr~J>lEnqOu_3Jq3;yv z^-RI*8DW)Epw}}6uV;h>r$Db~3SQ3$i%wxTtRo6u&j?FSfp#SdUe5@7I|X_@Q}B95 z*yt4K^-RI*8DW2?(8=L|*E7Oqr$Db~3SQ3$hd2d#JyY;{wizvIaSE5s1%%hLEr46y zkY3Leyq<9)iPy7`Ue6S~o@olao`vUM1`52MX$riah4gx+;Pp&X;Pot|*E0pLXPN@9 zXJLTrM8WHsroii2NUvuKUe7cIUeCgd*<lrU_D^a+b0|T#Tgep<^l05~lXL9)`3iNuW z;Ps5KkSNgWnS$3d!cw9@uV)Hg&j=e6RzR<33SQ4xm1^zvOu_5fHLS!ww;~N*&vYf| z^-RI*8S968Y%r9=3a@9YfvaA|rQ$1iJ$oG}Pp@YRUe5@u9KD4ocs*l_6`D^0K|kD! z6uh3@!QB1R%nh$+gAvJ5M_$3}8TqYT2RcT<>lslZcRm;tyq<}y9KD_?cs(P+x8{ItRB3cF$q3hDP$O;A~+6LAH9%_O}>9o zkoJ0};Pvd<46@SenS$3dEr?#v6uh1hC35t7rr`CANag7DOu_3Jk(;B}GX<|_M1GE5 z&lJ3#5mn{r^-RI*8BrleuV)Hg&$#p!bM$(q;Ps4Yn{wmU0m17T(>52rIt~b4&sedN zUASi|AiSQDwYOcM*E0pLXM~M*fnLuPyq*!l9RR(aDR@02q?P|Ofbe=oI0Q@jy@2p~ z#$IW$3-o%X;Ps5Dn-Ya%SPOVPlUgJS^m?Y?^^CBTtfSX61+QnU)#ha3O*Q~t&zSf6 zq+TB3^^8|Nyq?9h*R!A(YX`4q6Hs7E-GZ!D;`L0y>)Ej``aN|T7~u762gI1U2d`&D zD%XcAD!iT%`8j$$Q}B95RLIfmnS$3dqEe1t&lJ3#5jEyAsIY?9Got1ky`Cv}JtJz# z(d(Il*E6EF+)TC@UeAcybKBUn@OnlxJ5R4?3SQ5M=D|}9D+8}*51|d!+UuEu*R$Ko zQEmERQSf@kCDO`qZ(G6Z8CM1@Kr4XY^^AAXM4~{yK?+{am^d*}pw}}6uV?JViK;-a zX9`}=$lR_9Go}K<>lsteRt0)JQ}B95c)lvo>zRVrGs5+%@FCj*uV;i8s{*~ADR@02 z+^7oldZys@jBt}G$g%^kXRPsNRd{whQsMQC@Oo9Cm5_qhGgjkfRT#)rcs*lVKUM`* z4G6Di4-%#e^0)!7XU_rR{>(2F3SQ6Hz(QW%8^|da;dd4_4J@(>&gk@ayRhL3==Ds& z>scq}NDuL5mL8;z%i;-^-pta277KPpdOSZ)WM4S8~|uHJ#qf%A17VfVpnf)0%Br{h~6MBIo!x)PdVYX6s%&4tM?2%nYVy5xrfREDdPUn9WJ(3_cGE2S1PTqsa8 z)~A@^GU4|SP|6G>=&4K1a82+_0Wb9C3|9od-eH*?8L3<^VcVu344(nrT>Xi6Sfz$| z6G-*+X66sbzl(TEu`@h!evKg9Ypr^EGxLY${|HhK@n+_o;`hJ@zzn@ycx$D~=qh?M z^E%^kr1TJPX5KoVM`C8^zQQ{#V*Axfpwr|1$R^&*yfgg=$i_E1?<~!hp*J({YypYP zjRyjpQ+yf)s0_WCdFN)C#m~^2nRi}#8$cmLZ)V>40!kTrGxIJG(1?cZKu@N$xS`i0 z<-+(JRzSR&!8aezL6Wn(y$u1UBAWBuGhq8^{6(^zieeJp#eP*K>Pa6l-X-!b3o5;t zd6&ljNw&R^lJGYAtz@GI5AX66XA!86b7Ec*FCnGJ?T9yfSNU7WMsG{r)j7s38Fp{8 zR9fk_T_eEPZM#-LLAUKX0VUmS*GtnHb+_Fhpg-DsAEc%fU)B?!VMcj3#;33X;?2z4 z;yYC+lT+XOg`WC->CMc$OJ;kbFTI(0cbloki^97{BsW`$)vWcs@$Hl*-pss*{6i`2 zw#$(4u&}|!1$+8Y0f`K~nR$;1P#M1Ydrt^(Gyh@V{Hp49^Z>qe+_?nk>3AN}dR%e@ zNZt$njTFtxzQ7(N%37jI_X z$39u~eSnsH#KHWlNL3knGxPoyyaFyia~&G&eIcNrrT#;TC}AF~07pvQg|;Lf z916A%CG(2h2--4(3@FMEq6EH?o*Fp2*UCm$WyTU(3@Eh=7~ynpF`IH)s$a} zY>jrG-H2*6iuIv4v!JLEUUu16OY^)t9cC>ZN8%uB4!s02kdtVTqadg1I67OT??ho0$i1X5$NZ-lR7(58ljP1h8^f zb2`DB*;_y=M{i~xyqWRh_jB}S=E0lU`$#L~=*`T7H#1K6Ql5^gJa{wXxHjhQ!5Db( zX2yKYIexG4;LVI^NRHmjJa{uBYRTm{0KuCXm%+9iy_tFNW=7PW%cp_h&5WG0bM$8B z!JFBiQ2M;w?-l^Tn;A>*$jJhZ*B7qlOLKA=!J8Qu?d7?7r-2jR%$@>TnWLv758lka zKu2uO(W8-v_Z%*pTk>>i88G19TD9PeGJ40_~6}@GJo12-^4A4ie?s*tw4rOWgb9foNhGX(VLkEZ)OBmj^4~Xcr#;%s~o+VdGKaN|1~;@n+`1o7p8`(31q-%;e(F)0>$GZ)VJ^ ztl-Imkq_R?jsUFsQ$0%Y;LYqeKsmWn!J8Ro6{JW$cr!Ek=*`T7H?wP*PrR9V@Mcy~ zgM4x)hBq_T(&A@V58ljJxY9!4&5T0u@qymVJa{vELxkMI!r{$q9)-x z58lj(5?TtpnVG84o0$i1W<8OwO1znQ@Md-urO2FwH?wY1;LWU?6nHZ;Qs~XhgEzB7 zDMh@QdGKcT3Xm@EV9kk-Ih@(>X2zL~4x~3T58ljfW4@(mLyHG*W?pTS58ljJf~99R zyqR%kBi{D)DCK!JFAWT|(f^Obd|<0^ZEn1PD2lR|~wE zHG;FM{uwL+9=w@7(UlM0%yd5KPIxnud^v7Hd+=r^-`DcohW6miOg^vW=*`T7H#2gU za`a~A!J8RTZ!4fTGq2N*cc6qO@n+`1o7v(b)VHNu;LVIZ)=#ctcr#-+^pmpT&5YyP zPp*A*51rKcr&{PP`;OX@Mgvj zIaZDz{XKXyBkC;Bo0$i1W)y1K1@3cr@McDsunXJ-@!-vjP}v1~GxOlhjL=1uv7CAE zW=81S1$r~{;LVJ%%9bxe9=w^c3h-v;@v?m~sxiI+4`bWl&8#PA{$N%g-pt4l^Apz$ z0Neu^{t;!!SoQQ~R@vZxNPc=VtAaN(zEk;Upbb^X$Hj zGs_Lv@lQ`cyj6E3?>{^oOgb`dB{pzf?;GcG+@JLNqw$nbv3t)G5y$6QQs~XBqIvMS zLLrZQuf84;y>rD5u zT#0@@?f2}7X9V7J@{a6DSQ&aV%Vz{6GJUXkO;G7O#&4&sP^%jyV!MU*miLHghC+9>xrZUGq>lv8*E`FB8ugLj`CjgsK+XC{@O*>IJ%AQ{ zBzV5JOU^cZBzV4$pmu#Ec)qWDE7Hu7;Q8I$-vQ0jM}p@Y-OqqJ^pW8CCP7Q}k>L4$ zuEMpsQXdJP-`#BlI#C}9p6~CD2kO*Eg6H>e7XzKGj|9&T5VT$&37#M5o{Y4O`bhA6 zbLAC4oAr_4`9ba$pqurP;Q66a>n-|7@cc0ML8NWfM}p^vyKex&n^^_>Tu+^&aiQza zA1TEFD{^{r5OngLKzdIkrT)xh&K{16-Yq3FCTSW3Ng20GN~J*N01qF~QmP^1nr6>kW$A)**O?GJ0I?JT}@@qk9eNx;$amk2_c*dKE4b^ zOdL6pu4S0Yz8ocU@N_vQ<;y6g7gOZNq_m274`iu3hqiK4+%TcY0Z|HvSvI#SyZ3H; zl+2OV$)-VvM=6(dr7#AO{EUeYUQs&dLDW;%Al|^5;Z-_;MieQjIhMYpS`Jh+a#ne zlGJVgoqE`LNS!aKn@uX7H%#6^Q}GA~D-o>!R-35^o(rPXc}$&Yb7D4|R8vc|ZNO#F zlCme;JCIuXue`(iSk|6lCpq@u%tbQ>U6{oGHp#HwRApyjgWr4(sUz)9lVbW11r6H1 z7gC1U6tmK#?ySb3Z|_Iy0O`vPlbQl2|ByF-EdDi0s&6XUEwy0;QhVuf_%F#r*0S4c zZK(Q+G*5mhwWcquvOGg37zSpzvS#79Nvej$wW3%;#kKxe5`%2TwGtW5tBvZut;vd57cqz1(>eYwYx8eB$J91eCe zz_9d2#FfK6j?{1gzQa9^REvOu!#$4F2m#Q8SPC#wK%>Jwj#R6FW`}zmsZj!29PV+X zMhj?jxW|FLTb9%AaE~K3PQYx3dmO3p0_Hi~<48@+PeVOB9PV+XCRfb{Sn3QWTf5YH zrNcdr)Kmeh9qw_Yre#(`^oh=J{HA79a0EIX?s24MX6FH{bGXNmnx*!Gw9_2!air#C zVS{I#?QoAHHNU(QZ0nurZ2$|Zp^t5CbhyWnIxt)Vu-V}rN9rJ{&dm<@I8qDK6Od<% z!#$4FBBu#pt243#phN1m&Dk5I)WJ|c;T}hfdmLqD;jJKMxW|#&-E+CeQ3hQj{xYGQ zgU5P#oGzq}25`B@Q3h2XM7hUNrcOXqcz+u4R)Ts1azNn&51icJQ0I8JAYLZpp5^|A zI#(!J?r*5`be#Je=^B^wp?o9Q-$wAUokuC$-$>Wikd)>AM!JXaWx2nR?kRN4OsW&g znX1m>;CzTNXR3-c`CQJXv~jx^FF#b<%0O+42?5o%GEmzhC{ygs3aV|nP}^D}q-FT6 zJPkiptX~y5s(9e0#H@;YAlZf57U?-r+j60{^(q+hRNHc)w#6hXPqi%PG#o|JXh0tiRxX@xDENLwk7g{WY&|;~e7K;ll7FNY*vAED;8OuuSg9+_I zi$zz0S}ZQKSXe(SoE1Zl0EQL|J)`GDi^YW&%LzcW)M9a=#X?}^xl80ii-j##Xg&p0 zP>aQd7Rz+z7A+PRS}ZRB<*CKuLW_m`R-RfcF0@#P5_xK|xX@w|S^2%NT)5C;A#$w> zYO%P`VmX&G55bCBPa4M1sEf#X3VOTy~Xt59_^3-B+p~XU^^3-B+p~XVv>Jp&E zLgZT&)M9a=#qu^w5G@uLS}aGV&}M3}xX@xDu<|?DW@xdT4Afzjvt5kJ>`7YXtkZcr zaRs$lTxhYhfo8N=TxhX837D^(fHY{a90s{oo?0v}v{;ywu*xaqB?J+S!!s`Jg=A>4 zYy{0{vAED;X~QLwrxuF~EtbPX5VcrbXt59_^3-B+p~XU^^3-B+p~XVv=BdTvLW_mS z&tJndXt5Ag<*CKuLW_l{kf#=l3oRC2Ld86_SX^kaFl|$wS}ZQKSeT}@SX^kauwo^x z#o|JXg{(%4#f26Nq0wS-p~XUIv{+ndu@D+978hD9ghq?Sg%%5Y#b~j(&|+b#(PD9- z#Ui!PS}ZQKSO`nWBDGjtXtA(Xo3$2;3oRDrHCik#v{-nh?>xJ&f?6ytv{>FnfwB@D zg4{A5-&s_Tv#91JIAhh7B}j2`M%yM(dpw3k&gwBAE05jdeXLut9%UzB{k4qG_MV!( zys!5NxldR_?w5ZIZYy?*gW{Uv*CC;N66kO2EG5g2Azp+3EJ*1)@t9P~D!&m|PHE-p zW3aU>3pI}B#Z{2aq}V#;aBC;)XUXL|U*ah!8we=ig8c|`VvpViT1A}k>|an39Pq`Q z^<46@+!DtDU;86>nVO8>tU2I|ELm=eiQ|ATiJJqyZV+jF z|xqTXSd9gbA4m#}TaO&oQ+8FVve&w>ai~`sDQVdT$Dv+7BimoDLBd&@%`u01=`r9oI1csN z50`~<%%NV);ydP0ud4wH4!6N^s24%WF^75)G@@aALMRj2(V!oRp zy4!9L&>!u+1X9ZsAAX`kz50TZjt=$u6Dz=}k3+qrIVE$b7iW8-WDfO`2`(1}4)tPl zb{^_=6QxCmdQB{cG;V|AP%mkZJ#f+u%6Vi$FQt2FIaZ1g^tva2)D20bu8$ zUjLxzOO5~uhkBhs(Yy?Bs24}lOugS5X)?iH($cyP^_q=5Y1szHpq>yxvR2|yFB&Ly9qN^qZEzgwMHW3d zKdq9<>2Mnyhk8+}a?GJ#_kzoJxDAd&y$A|g>OZ8266V275X;mCv?V&!i}5mb3+U#) zQ0c^90qP;!;61t>>Q(8K9z;Sfy$xRJ`^&TFQEr1*1|G9m(xA%9YSvbjxD8&J3(4g- za2vd`T3&#ByMf!_m0>w6U$7gv4PF`MiAr_@x4|oG%GV%UqusC@QLRR?25y5_7B#{H zG5d;qvZnR4MBe#3u^j4ESr>l~Y-!mBuk7jn8tD$V!Eq8I<5mfKe3kW5GbIa9WiJ6P zx`o1G+y=+-hZ_;kbsg$eAK=+1I@IeI09Kyc;5^iery{C+bf_2Ske`nZ^?Dp>g*>;x zd8ijMSf$$NP%n;aW1idKJk*Q%n)BQS=b>IiL-Ns~UPLW^d2WOAP%onP zJh#Dls24eB=eZ5eL%n!{b&uI5Ygav5P8oQwAI{Jhh^iEZ#3 zfL7*@TLOe_@E6e$oAcZXc)8JXVs$cecZA@K|qI;pRHr29NcTt9u>>nM3Jv8@x>2k7$|V znpmc|mQ_TDdcDoTmu+w!>c!IX+y>{NUIbP?I@F6DuJX~LUPNv_I@F8E&vP4`hk6lJ zp&Zt>O#K!m95?@Xl+h>_SIf;m9%baQNAleK<55Oa6rPY} z^N&Xv@omd&{_!ZI9|M}rKOSYo*G_EyRYXS_O@-Wmn}0mYh$RNx{NqtZtf;(u{t;BU z)Y`D};JV~dMz4ZqHvf2((K#3tdClZeMtuIY^4$F6QAR|1^N&XvQK+Ri|9F%Uq1pW7 zQAUJj^N&Xv5t_|E9%V#mHvf2(5uw@q<55Pe0yh83c{%+Iaj7xhmbv-Iql~^}+qn71 zqm0N9L_2$YGz_AhJ%X&++2idmYj*ZnTGs6BN!;x0F)p7K%BxJ7=A5Ef-#BMjlJqQh z_VA6pAL3;yB;|&CKxrO4N+{%!cliAf(H}P`*UEBdFV>npSh&XHH;B$DVtT-xJ)Tn} zfIE9Ur-+{ldiSV7HxKY{Ko*>v@tZ!BhN1_cb$yuccBCo0eZ%tR8JVAV$%L8)Wj5c< z&)x^v8K&r*3rtRYT|+eneU3i22ikV?LAong1pn+!@8RKYPiep)ou&VYF??Ia96I^3a&}al}#4^LrIbe-k)E~7f z=xMR}K;7QcL^#{~3f?7J`LP8o^5uC2L@Ytjolv7Y!Tu2(6@xfRMypoOxF3Od41#n* zBst-;6YA{P4G=7y@D^BJN03hVxv4-#i-v96NR-*rgSZgXIwf zJ(Pwm8i!q4(H6C02W0%$P?|)0)%Qf$o*lcIg>fjqMM3{UutqF3Y^=65=6z24ukDqr z+@@tA#$0CV*L9rr{qTjmgwQ6J%0J~wxgK~E!Z==cR#dSlg2hz+?0;5GhOi;q!Ib`S z%!(t7|31@%mytRTDSIPKcn{zfL~cTWT}sr?zeeTz)AdK|ZY2@jU%VUc3l|=f=AqK> z+3OeR8Ms)I*^XDSd!wRaQ3MYK@@IcgH4KGHdtV0k?-9m-pGn&LFQj~fAnmPR8?$;Mz`Y`` z=j%;N;xrGp{~EiLB6&ei2G2wUnJRY~E+op|E>mS&B%*ECsWOfe{sohmh$7K!v;Q7@ zhGlW4EJryoeCE@2yGLdLWz&dt>^^cRS45|%(ARM)>>wW ze(Q4Sd=d$dBghc7nKs%{1W&c{Xa6?;Ix@--eFE-3B8>k&lMGRxbup_RL565CB8w2v z9|sxH(jPKlubYmrSE5?>v#}}Y1{tukk>hj(8L&?bSJd0P4A|!;F}4LFx?S6QallGZ zW1>hT!hTaPP>-XGZBo1T++bAU7Ms1_VPvw``Dbt18&7ijint|5j?a+iBLqD@xAY|E zzNf{k83<#Kg`7d$EqVy(9)vboqi;($fvfIx_+CMnD(l406{U>_ZbO*fX$pQFb?3>L zxVOU}kTw0MhR$jXH}o~Utl>Tl*K_Q6_`tc@@O*^4OgT16vD&Z2!fdaxIbl9G4+-xg z&Odw8T<9z4rmc~tEki{PMbJ%KBTc&z_*&AWA#3`xA)f%hgP4vL-Z2a40HqMJgY=ekyvvCTa=MFK6DYzhq zub=prkUwlL5-eF=)<(%uq-(NX9p4RuB&*9LRAT~yH9c+E*^aSDmbv0%9vC{G4@p}C z`R$3xC~=j{fMzpK_F(1lhmHACGy_)23^)q%mm%mGuu5jYt-v>uwj8%8dzH+9KLWo` zn#_t-BRMO2pMzT-f}Rz}%B)xfd=SF)wrv=pQ&x`6@l(-H-w_*nUg;`$$e~O@&&>8)CMJzlw zX6=WdTQQ@Bt#}rA8-kvnvt)kGI1l*{^gNy|^Y}~PzmxVV2Ed*pt*t#DN6R5h;SK&T zrkXK+c(4z2v#6x3p!{pbHRW)!c!|+XxuvGSeODUa+&!T@pLi#|^$) zXX<r6akW4;o^`HZVmC*^eNKN>+kJkC9h z_+?0)^KU%J#t+|valG+N$M4>^;eN5%Jon+^mOpzF=h{9G^V!y#8#y@2!@<$q%P+va z3_(q{-MNvsq-uCe+P8D4WgP_x1#9lJ9q4g{d~M9z_aIbp{G~#-a5rGc_lbE{Y6#wM zEq@=#(rO{$R;=$Q;?s$#%^g@u__ubdQ4NW`Ry_jPsD>nVQTQ;s>qa#Mhme9Xbs)L5 z!=KdQ5*H^#MyX_1{gD{`4aJ-CKLTHjj)vmvLy1$9Bz|c)h4k@lh+kGKacYvpH-@0# z!y&H!_~k;!wyR=Uvd^Db96XA++2>cHUXmOHXCHV7qLtmM0vgj)FG;ovXiihTBsoezOPcB>$U z>NM3$lG8GfX`PrJj^E^rihc2~Gfnl91Vkl(h|+>!0R*L3u!9X0(4ZhHidez&DdLA> z`^5IC*s!CbVi)WGeb3C@Z20u~|Mq!KGG}JanKN_FncHU0noCTqk`U=blklfC{3+kaYKDIhOPJ+yiHQ}HdM=lkSj{BAQFeeP8~WUr z^%bf`4)g#PnRzT`sz|gFHW|6P3f368a5-Erk_7_}M!tLyjuPRS64{X>j|Z#Be?etO znytj>L~dD!o<koXAK_a(NNoQpgf{;8qA3x%wQwty_T7NMz%q zcvTZ=1)hx~Up@HWj7TK8YY8i*|9ya8lmGl-T`tAu8qGtI|X zrxcoT&elvBM9VoxcZ@-_oOuzkFQaI-(=pg83$ihYmeV;)(sxZnx@T51%FG~IPQNTF zu$V!#oWWUCRAUCwa*ofU4jMCvmUFu5?Bny$VR4a^}6*}9@VbS6!BWHyWIg4dG;(U)DLgXx#rF?Nl&I%!N zmQ?k{6Hspmk+X>I@WmN9D}=~dmjcCCkl%L#MdYj$Fe5AeC~P-`$XP56WW^adD}=~d zEDbnu*93~lSwt--&QDMwM9v}_a^lZWvxuBU)OF&FoE1XkETRQYd=5K+$XP^-o%pkT zfFg1h(NZT~j>#j0$XP_=PMndmLWrD2^av-;$XOvo&LUdj#2Gm&gveP$+dA>Zg+LKG zi)g}$ujmUDk+X<)a^g?r0Y&7jH6ZHh#2Gm&gveQ&fo>0#F>+Q2k+Wz>5;?1kk+VXG zoTYLQIjijQRmef)ER}=ES!Ilz6++}Jm4nDxWsIB^LgXx!gUDHB`Ntv$k+W0|B4?E` za#jeDvs4ZuXO&&c5kurGm4nDxW&Cy)LgXx!gUDHBjGPrhMiaUC?56^7oz ze-4yX7^WtnM?E~-C}~GCMC2^n!YtseIeZ-zg4WykD>ndNAR#k>(d?ZnC@8=+hm&$V z1IL;}vBWqdXK~FT9oz`S899q<4vAWU_zxT@tT`0-55yTci)#*v76;;toW(VVMB{-t zBWH2VAyKS3Eb-PHQj}&Yau(MduB8y(nnNXox8{)Y;lf(ttvRd(UYcHW_!_X7x8{(D z5#`zpt~pErvCw@oDDl=D%Fes=n!|Q@X%Y3-9J0O%^|Ts)LU~%%!+zz4vAr2 z^41)FMu|>=mSxT1iZoBGIb==D$*nnPlNsJG^jm=*Qb91;tu7O>`!m}``LUWrVs zIqU(RrRg~W_0}A+C}4!hqyv(|*l(0v-yDpv=8%g(nyJWHTyw~!1yOI!pQ9Wp(kN&H{!thq6M$7iZ)wt~q4YBYg2%PJmc*NVLKiALa*&HHSpo`r_l41I3y{ zq6uG|k+ZnwkZ31N=??MUoRPD*=8$MSc!am+ zkW$qJ(?BXcxw)Op~0ZF0i>l8IV*(7S+g*~MzfZI4I*a^ z1siR9h@3^tinip8ipW{S+-Mm`6Oprs6-Pg64-ApBh{dCfoE1XkEMgVW9NZj*5IKuj zBFe~FAw+Q2k+X=6HA)ycD}=~d z+j3z%Dsol`k+W`tEl0W7DTK&boHUInSLTHfIg2v`CZJkih@8c%Xdn>h;=B+dXR)wf zAkN5HAw;xg?Zauy}7v*OQHp%js`h;FdrT&fuQ zK#6g?73bo>5F%%>ulubymj{LrIqM;!c3f^Z5IO51~ zv5PHvC33mi69JIgfhs7mcw8L-iB()307=q10FtD203=CswI>1~Nm>U$S}5Fjg)?;k zB;HQ9@}mzD0O@^{+q4J-KoWznbpRwX3D`OS68*%obpRv|Y(+Uo4grwJ*<1OE07zGY zo#h2UI=2yc)4mV@iS-Oy2S6fX**X9c5!dF*PXs_p0V%erZv;T1Jf$|ZjQ~hQ;x?6w z07%lRP1Pa*67`j^saOO+Vw*L#2-jSy?NHbE%a9-L1|B(vto%d(q%R?>s{K+2Aw8dnq{0Fth@ zYc{Y8{0CS~R(>J?(n40_jX44!Ni|ysKq3;bx$+YMkaj|EmaPLIk;Jui0Hmcrifyj^ zL;xfraa#vKB2s~laaITlZ&~??07wy(Si`9;1VFln)g&0n%6yIyy2F*92!M1gt1amQ zF%SUhzd&rR{6qjGu@$xQ69JGOWi>AV64xc!yfZ@pq?F>elZLs*{~@d0jWh!w%_%@N z9RP`GL)4A{NEF&qeOoVxtNM0}AjPV0x9X0{ux*g8Rj6UxC`eoMcOJL~Ek1L}%1;D9 zvXNtX0gzsx05p9BK$7lM=m1Ex_CSRWfTT=K2S8$X^vX{JK)RINyZ}h$jlpg6DscOk z2w>Pc01{~eHdlTk01^?)=E_e5Kq3;d|KQl{DtH5kUipatNNi|frQOmWt@)H4&h!iWX zKT5>mIP9PUGJ_VsF3HMI1VCasXkCu{O7$uY0gxE$Cn769BN;0{5di5X6tqeQKpKXr z$L7jU1VADQUTUG=2!KRstqL6giM8Bv9RMkXTCT5L2SB3m#lCVK0Et-KS3YGac$9=E zfULq-UQVp3!pw56{6qjGDZ?`h$BJp0)0!C}a;UAxW#uOVAn_UAl9itbfOHSaZ5;rK zX`?~~KuRHL$pnM|NJK&y7BZ8Sp9p|-F4Cpx07!u*xNYzPAYBW@h;rp810dZD%!+ye zkjTo7dI69&qO3UDpZlEd876w2f)-_tV z5*Su~avDrUy#PqW21dOANUT{M<;qV6K-!Gf$40sGlL3&}dQDU&aIE~~Y<^l)+z2Z_ zIcd*`a^)ujAT0+rJIa-x41n|?2BI#?r&k6*;xQiZAQ7>|a1j8BwOm^VKzaa1#Z>04uHfNZj?PBfs&Tu>SLi~sxpTwKZDkdNCqv= zi9w5VS&0__=}9U-9RP`~MY-~m0g#9oQLg-C03#6nRo01`1b%9WoCfJCeS z?NHjFbuU^j@d6+{4x}_40BH;=C?i1tq;8->G%p(A1VGYs(;ovJ0wA42x^w`f*GMOq6a+v@37rmr#KtYvI07J%37#Rn z07z?v$sKGQ0gy_Xf{EA`0w4*Ks22cX$~rBI7Xax4a@p=D7X(0Jj2>l^2!NEq z1p$yUxF7(M=HdlFDhFL@IsnpYV5&U?Kw?cilhd*h0Ew230rUbO%_QAv=z|16VhkQd zhX6>5PAnS%kZ9SUtM!2m0w8Tf&62Ml0D=HWd>2`o4uI6S)MJ7GNQ#L#1Ogzj3t%$k zAYK=!30wA$wJn98N zB6fsPawZ&*0g#%bh1Tf+NG)KNZDd#w0Er{kM*4bzub9KoM%qRIBmvXX&8>~h5eR@p8*1YPKzf%n(rE-h;&`-?X$Aq1sNXhguZKJcfW#gfC0+oetAPcr zrMNk3Rv!Rq9fXW}0gxCg%ZPaaklqJU9NpL)ys!pZ9$VvH03^Qs*&mF10g(0rEzXU9 z!Ye-3K=UOn)Y{DD{KuVzv`SThw5*i z07z$JVT8QbWdI~Tj~h|GyJY|*VvFNm03x=*UcvQw3Xrcu^d9Y^yB#KasH_>$4i;xzH@hYzi`-U~pAFyv7DL&Rfvx43l z7@7-$Z5~06;pzZLn~>GSTPDqCswUntX(Fy(CjAzOUA;^?#k5`~E$IX2;A2M*HIQ$h zFp5cB#L~;85dewP@sZ4Txl9@Xkh&usv?`gyWzq5NCuRgdx((G1 zhRUymG7$i27qDMK<@9m{KzbjT5iTFe#-f5*;qpKF0E>mVsKO1GzcC3|Gbt+$mrt$) z7MCzX@o@R>M}d_&?NGBKTwV;lBLLDsV2N;fd)!nY01{v2b`6*Ra3!!KLadnzmoLLV z1VAD-FkF7wT41e0Gk{fx+f6=mhJgS`D}jv-moLHXC;}ic^h`~-yb_v203>3kh06zG zAP@lQIbgHHHPG(=V9(dzT$N)WU24Al^C?v$)r zn4w;s%hGiyLLN~t=Y$`$=6IE;E8(tquqKLEdBs$oYDbqmHLrofVKqwtXHmD3Kqk(!Kj%aqib z=ap0Y^+P4y0{JrJnmPc|R~YNi!^j}yqwp5|cW11E@pLcRg0z*j5?+7+NL-z1Zz)B= z(fKt<8}|6efbi|eZDr_A9>0BTQ`-O8r(=VS$ zS9|tzK#s}34oJ$@0g$!=8ECW|DqW;BGI(bpk;gxfo!79Sb*fiH>b!e%^$?(BiC1zb zOZW$weAOGY)&Mbe0Ho(R1T~l@5CG{R=Ff)iin2@gA|15$;crf-ZYT};3hcs`7zlns z^fk6q;Ahx;9`Y3m60pCW4x~sB%P`+L8CbFZ6L2Uj_LbN*B+l=T%%%|#vB#DC8vFo)U71#@bQHB^ij3cs2;CLM7xLEq?v*ZYuYNx6s#7hIa*q z7oa3B^!1bBMaFc18s0+R&=k58U5ViZD9MZT@FHUoKqU8?GxuGzNuKNL$dTNIX14)4oQ?SbbX64cbgU$s2v9=i z>ET7jvj7p&<80PZ$UI+R2QcouUbm-)_X>^mr;tx(AV#8ME~v8g@cz$g#w)=q`6vxM z+t-=%r*Cw!_hdnPQ#{`&Be9|_{`(Y%9sk4OeQ@YH`OJB&QmHxcWi!yD6o=$Rc$o!s zFs~@S;YPRe68!%$#L|75AG}_EzO^lIN77v!;&<_f;5E=Upz|NP>IjZ~x2?3AuZ4%V zDiTwU=5ZQ$^bnc8?xaNOZq=dwH$^OI4Q>?x%toAlx}6KN@_i_*>P}Wp(k{)4D<^u& z0DahltVV-y2%!7U5U4&XV)_Oapt`VEy08oQ6U-AS-WDl}t}_v40H;7V)6Gn$6uth# zS@Rib-*+RL>n+VaBdSVC$DZlSX8OpO@0Ky|Bct`KG}T9%cutxyx^NZt9 zmW3mE@0U932Ba@($Bw8LFBw#?|4UUXGU!(dXJrdlNsC6W3AcfGnQCRbk{QRHFKb6P zFnSH5b<9>z#n12rF&r7IR-9MYt=j>3InVB=E(QQ1O z)Hg&p$Mx0r-)YWYweu#Up(0?{8%(1WV8FG#KsCje(i8*mVchUd^S!U}?))m}n;eVpqe;vBq&8<27PIqj7gK z6LQOMFom3}=}a%tRhRl|8r_TXA%Ege#~X3+0SrC7(l7@D#pW;9Y%uM-$#pWrKB9rX}encbpJG~#Tbeq zC!y#$Q0xQ@IUPucHKtJs7;zSm>ycPNWC@VZk@$ef6+o)j!a@Lp$-7qbPAA~E^20NA-mH=sSEB0vuMqB~pBqYWGM$ydH>Q;S;k?8fMg@@4V&fO=g zdjh$S>rdf!>1qgNifYS4(%w2Sxd9-Oyoz3uJU_FJdFV`wO9)cD}IC(Z^a3w zlhL`69wfQ1BA+n{R3sGT1;_N93(p4>xxq09x8k7*P?R4Wb96V{jsS{sgJY)NfD^+3 zMLEH--maZu?AjUQY{yDxKv6U}rWa-+LQ!dO%-NUWxN<;I)8Lr0#keyA6cq%=@f7f7 znEaaT$JJZ!1S;x{*8ua-lpc`-DB|zv;n)eJ zBEtInw8JafH;Yop_Kp!(VPW;Ypx{uHWLY!tH+TXoseM4fDUw!)k?R1m*Vdx_mPKc< zM4v(al!dJF(gDcwU&`W&0`l{7lTe_t5UMr&Pu-1ln;NUVI^@bB z*1MpjzwmRO&w_h6Kf{Vl=O8iz&WJFoIX_$odc&VL3&_KHhsbT(3rIgAX^-2k+=GzC zDZ3oy&hmT7>V*kpH3@9}PNgus0O_F9y8xma{@d!n>*f8R!_ZfZ*=J7KU{&R$qjwsU(4SU6Ls;#G$8TQiV47odq8=XwYbaw@WM z+wHuBi8a^hg-+x-c_ZO|&Kt0&eCNC;aQERn0zMJv2(%S*_F{CJIosetapzWyMw!$1 zTG*^pi&iR}+t9U2haYZRI}>K&Ta9zcja-MlY&+i3JF8Dc5M$?aNZ8(426+>&7Ty!i8$G>2V zLRxJ(zFaPWaIRU*L7ItXv901^{!K!BpYti$n@+`D9I#t1=YVZ|ngezS1AqYoRkm{u zx^6jD5Y2WrU{GzGorS7aiO(MgZ?CCwzT9`&)Sx)oKUc@U4_w4Xt^fm{^A!4EIyKVN z!(bM0nqlmM&RL7uR02X}JFQVC+sGM>ENhC-e_00m>Au{(L9qM^417+vA^h8R0$KXO z#_w#xumqg(_mSma!g3WF$#$N`Fj`JgHl=Ub3Jjb<>#6R}s2Os8Lw~}~Pz+|SGY~m> zP5?DsXC-*%JI8}(Bj+3_G2$EtJ)5N(J3Mz5V zLZ_QLmCxX7q%-VPyl!!t*U?n=KTT6<44LCj{y3USIsP_xIzyfo&VZ?0zJCD>wWYHO z^0#v4LY{KxQKT!JXI`KoJr1L4?VJR2ZQ~5sK|?A4)sfDI1vI2C=hBeA!yqM`^&@CV zQ{yzGo{*%Y^ETwi68|h3lG~1kbV(fy$$0}3c6D~5N8OxXVISR{^KQePpHs917Z2wY zv~sjF<|54h&LWItZzmr-Q_eQ@qK|WFckI)2dgE_jr{-ZS=X4%ME5|saAZ>qV@Qv70 z?aX`{uUDN#7|&y!{TRtX&S=y>&MASL40iq)jN1$61@Ii|*e@dY}On=)t& zc`2)}X&;*ft$Yr)RzEXz5^5OkN;HMw&VpI)xflqXBrlljz6hn@BzeJ#-D4pFPLdZa z?#g-K$C@FstT4i4HV#Q?&NOm*VhpT7rk^5&r=X#;y~4kYynfajru`8z+)u7SwKvTW zr8V65F9i0M!UFCb7#_YoNSWpCej3=@3JbXx^#}Hj!dy2o0NA?Vk(CODu+n*V z@$ddRI%skS9rQT#+3(yA76GRlOd#kCgZX4RIjEWK+zKQbkGx_ z-;iU0L)e)MlMfp?7s9G>xU8Qd1=(aM+e#V8D+}Z@l&E7|&Q|BHXRBYG%Jyn$CC;Dd zn(M5aO4s{(E)BRD+LX zKqck2+!sjybs(4KB8Gc_ruv5>3MhtV zP*_;*dvTOm!Q3t+!<~$|bBT2e=CTOi!^K0n@xtSB2$Q1KJ?I~ayu5(5Fen=h-Ghsfy*QYE3>w99luf{v z1oOKAGuGU z46!KgPQDh{mBG+az-rv$hk>mOhN^&_hQPaMhy@}g!Wt51k>Ch>$gvpV;fQQjfheCr zyEqrEdwbkba)-0*0fiN)sb!nO3f(!BWqVLhZ2K@1SdS_! z?ykk%xAnNHS>fgn0QQ8!TDwosBzGvRt=ka}W<9B}cJ3dv#GMLDxY_H0J*BXt+*@cM z|5jKh_t?9DJ)^KL?vHGJx5B!*=W_~tR$<-UN1g`uoWgp#EikiN&nv8#dp7&`g2Gbn zxpe;*6;|b*M3deVlnJY!do;)MRaG|7?Ysooe-$>!J)e4bLt%s6{hS%zRdm(v)Kh`I zr?64(7`VOlzOs_BZlhMfK2>8@<32?FeWkdZ<~|w+_O-&Mxj{<(jlyQQr*QJ^F?a<1FcZ# z24Cb?cC4Ki&=>iF5H62y^qUkffYx_K3`-FRd%8hBc83ioJF}QgLe<%x8cHF>+zhO*P#A{ zEI&P8&+#_)zQ2zu&Ve4Fab_ON**#jx+5PG&Ub!w@&MS%ReRpKR zPwbQtq$0qJ{4M0igrcD+EMko! z?5kBNBj*7u@3gVEnE3^=x7fz<4%eZ+%e}=mj(1>@;odVI7>;*WRN4ta2O@GB8H*J5X{WU}LMLY#HH)UmII3Ez~d~+-hlKt0nu300`V_ zX=AG;Q7aJPR!bXOEoC$U5pK1#vDK1jaUjC2mNvFp5{(BU+-hlKt0hrvwan>1890u2 zpeV&^tEG*tmVW?sxz*Cf@eWD|Znd;=yaVOKYmXdmwX|`(!ye!TukS>Cd#4%coR8-Y zZnd;=yaN%#C4r5tmh7>G?i0^xeFrjeyn}-(1+vxB#_ABHU_eW2+_63SVTH zA1Jn35^d{?jK@r9W2+_6gfGIamNvFp67A%RaI2+_t(F`WTx_`2(#BRxmaYv%=1>Z3 zwG=4=5pK1#vDK1jTpjOV<9G*3RTqqKtEG*tmZaSfjPS|D##T#uI=(2GfxyYP!;+g* zIvnqCGa3wY4r*SY6^mVV>J5mEEp&sB>&O;5N4C&8vW3pk$2o8nPEK|SW5s4!C*p4b z*ThtqvrOw=U@jNln6;)&Q4m8NmpyZ~8My$XZ@FAoW1gYPT(^7{usNnXsR=dm`xC(C znqj_mi(^4}Hn;qCu(}rFT>u05ggRym%NPUsgu2+jfxQ)DAfHfD5I4p^KB2CH6vvA0 z2hvTDc#MI3Lfr+ai1o<@(nF9$?CEhpdJ57t#y~!yqXkLD7|17-5@cYEfqX)J1gVZO zkWZ*ekg+ia@(J}T91b~aVhrRH>R&Jh$Z4^TtTs@jo*iQ#pU|;_oEc*vpU|M3*U^P} zF*uYF8q#P0{wjB^*&gd&1EfY| z+YuXqtk5Lu5-|9;;paI~;p`^VY%>P(3AM?MGmuY~H5e7LMCEc(p4@s$egI70VlreHo?j^Y!k(DLNE@R}L+)E{=jFEeCFH>no?#U~WO*df( zZ0rR|b0hc?{*^IuPhQg!W|fV@^)4?a^~xBzC$E{x*C%}p1!;>E{*<+N3I^Ib8ZTng zdH7q#y`T9_6>0PFNSCU#KIwy`W%{HKNzcL@hLb)dtxx)xCERG7NBH4=2_H`S*oC|p zzd+)o54xQZoc^t69;KTPktV2f0=F4F6FW4TS4H6YQei zNgor7!H)Yqanc9t88Pnn#7Q4StQhxu;-n8EZjAdqanc7{EspWphLb)hPic(%J#o?p zk$9{n~0fJBVfdYtsZHfv%cTyv?m!w9p5GmtMfkYo7Yr${aQFN3^{ z`#o{e$0aDvvN#xF)?}PmseQgtrce5~3RzL_q>rb8#JGkCCw)+4+*)$KXZ~XUW>%B^ zo;c~_D^}wIf1LE8t8u?4PWpI-)t-X|ByiFPCz%-6Uf`q;sTR{GeGm!6xZe{eeH37J zwPO0D50bbs?)S{U%svfBag6&tanc8oc#Mnn@~;r20v+ScVwUjsciw=KEB%Kkfb93o zUm@p;%K_~9EAvzAjp65hPn`6z0NkQW&`ba)eLMyvrce41TfrJY2i30kuV*#yq>qnS zje8t$(ueN#P8#DH|87>3{hm1KgXc%b^hqB~8=`ic^uZojs&DHBaaG@L5u{l4?N&kJ zYS=bN*DBPoZ4{&}`g=0CW?8%s_J0kF%D>J34F!<>p7~qd`zQcSA18fCcUtL_K4|TM zR{Eq58c&5d1y1^4cM^vGO!#vCgZ|lI5cN*_2sZ_{&8txGFR5n4^hqB|iI*LVk|(9a ziunRSo)RP!`-5Y%tKbk=yN3TB8r3uY$H`jud*Y;zp=3=rz)2s}q&B@*H8(M^*AzFy zf9-Rq_qx9cXrfie!x?bWhg%97ebR?$B(|w9YP}^iff)CD;-n9jSTTLl2a!-K?Dxb; zA8g-M+Id$5z_7!S^WPJsBBoFJplFGhKIwx<*VqL1?E|TnigCXuPWqrQ17os1@}uHY zfmFx1-xDW&%m6YLU(*7~Q4roc>4R02aULj0K`JB0{hm1KgH2d5ebUEysO84E-xDW& z5Ght%f0QQTu!ACGW?3hoFaAe6quM8arg4BS^7VHpob+)sFh}-#I%>bCziurb?BW-o z;E41|ADyF+gZn*k(g#Tl=@3r(ptM#iebNVOxh;8Tfs;NsqOPx{KIwzP7yDZ3lRk*W zeJ!UfMa`1%F(9k(wJayrRAFXI?)St=A5w;ABaRi*GE3o=7&(lt$Ni^a*1<_1n^7$) z`#o{e$8{)=ala={`e52SaSgp)o*@fa2|^Xrp7CL&#sKI!9&7&^lJp80-X z(Sl~|*3C30?DxD7m?gJa`B^^IW7j+B<1&;LyWH=|lRjwf^(TF#fK|BONgos;;c~wx zPx>I%$>n~}eC+om*45>HPoDI_X)xt_Cw&kbh)pXf!$}{kS?zMaCr|oViPp!uFO3I= z{hn;S#+3;i`#m|EpXQ1iVZSFQ?HTUaWvGe$p0mJnw#&U-Jn3T%2BOYAWeYIu_q+~e z^(TFBcHHiAr&vBt`rtmo9j?rR*zd_H@gQcNwP?1W$mO7kNf$KHCOr}AD<~1f62mQM zTF6>%jQc$cN*m>37AuZDiIxkZ*5_rMSLi~sxsc@61u@+P-a=26SFMNWjWqSADbwE?DynJA8gI# zeovnCLBw#qlRh}$mg}ALK`i8Qzh{0ApET&Y-bo)UD?mGxHp^Otzd8K=%acAf04Y|x z+<4N*{5Tr$PWlJ}sXyr>4?|Y$ZsZJuU2Z|#1e8X&%Z(>}@WFe3Fv4AKJn5qc9|&_J z+~vlTKKKR#FP3t=lRg@OZ{u?xLt&jS!WJ8QCw)**c@41@x#DUmqcL~6@uZJBj@MmeGm=#BHZQ1lRk*Lz6f`@@uUx;1wMJE;z=JAfp7Iw$ex6>NQ{rL+~vlTKK>O) z-#Su!>~doT(+#X|$9o2J`plLOI%6!9DoWt%It<84k4`^(pM5=Ef;c}i~rHrw^I{Q z>q{W94Y+^s#pHX95#xIiUo$}hvF*^ZFW!u`_|}FjD!3iP4CV5k!}hO!s3rcRR6XRH z;oOQAxCH(2H0YdeXQHO_Q4mwH+7g{aSrI>X7?r2bMOma|2y$%yoBvTcHC2Gy8NOP-cyR;Qa;$!1=F8q88%wjz_^Piclsp`ZL-TlwVz z)Q^@l0-5b!p62x-s)!gJP@u$+ei8*KKXO-|IvAv}k|9F6I89m%Tu5g$Bo(7+{T_*$ zm2fEvB=D+Uovz9hO8Bk1a_BRt8!y>{EZaXX-N1RkD{WLT%Y={ZpRLQJ+5Kr=GKA?r zM&+;9fTnrLpTh67G{5J73uSRDudg!Nl}$0Fn=MM(A=~!Xr0WNOOZ_3~`n**vA_~#@ zowIVx(;z*fi1F`}|_ z7N}a4yoM~>KQK+T0k|~vH4>^Rra;ASkCkm`coij1IjK@d|xYi*iWM~G=u zz8FHyb|v=-m*O;+<-n!w|EBAUq6HQ0Wm$avS2^|x(6=x7PUzh<{dSK&AJb!oeG^3o z_>H}C6z9G~$&tvi{Z^Xv7m!wlID7+LzK^s0hAykz+ZMUUmT@w&{lDm=ohs$!-5_1} zpqKmhOw>J2=N|BKZ|A@a*17w=+y^<+4r#tkB-y8Pvn;k#`NUY14Q<4^53{gGk)Z6u za(VTz{d>IJ6?Y-GTIcT8x$@R2uTo#E7aNtEE<&y0;lHG{l&%%Eky~S);J%HTt#HBja;EBV)g(a z69s7-8-F2?NrEI|gJF&4i;-I!J5O@sIu{cL@GOgi z+4ikos1dd0ZY4E~(==Xp%U@iK*Os@z0xcQ3sNIo08+{x0(g4~`oHLbly{Yeekg*=n zeh4Lw*&_1TO*pFskT{OYZE3flg_|p@+w&39Y-Km*1^Y)-_#V(Zap{(i@I?S zWwgDVsz!v6Ps8b@ybtA!WSsvPrbu5CILF^)}ldp@SyZ7Pdv&u z!d!V8`fy?$IJ{xW0PmTh`miwFhh=TO0e-`3%Rbx!hHC+;4{umq*@s_{@ijp8;Y~{h z_{=-eF+ie{1N^=f=3NBZR5I?fWPrawg--z;O4BkzI?C1b3eO%jlCf>I8K+_Zlw40*GPV~XV-7&cwNuM=mub`h5;yfn3(s0jdDZu?+^UV^ z_1)Oj0O&AHx6Q#5rT>PDqq$TM*fcd@{W&w^=Ucn3ohR5*tDFON37E_UD8ZIm9XVhZ zZ!wMe043NmC0ODf(`XJ*a$Kt9cpVwf13K1BS4}lxJNWI!2z27CbA?sN>la3?!&$nH zC>n#|>u$6PImuDNXAYz4oX{DVtmT&oJ%gGLT8()jAw~bgD2%ovIQNfK3fOnLYVLq0 z_pLp(y{CYYN&$nm;$$j-Qou;1fDOpF9-tI3N-1E-y*Pgakhqp}={QRkX!%#}S)?>_ zf;L&y*bnG9Kr6pcw_S~vyPST?Ji|QQk|)&2eK;lxV01|8stu=)4K%=hsv|YJBN#9F z`PTlK?npnY11)J9Se*h;9qDHsO-tH=jE4ZKBgd$Y^t>N?k^zY~@f2nbvh?(!UGF&6 zkNZ$z3!uXtx@pg9+O~>=s=b!$G&R6Kh*Y%joe6J%+gnFcuCKvlKS0UV-s(oVhCYBz zi2x;6Ld*3aw!i`s&#;Bgo?K%Sm+<=1*(z3MQj@r@MDSMHY}EL7QF0eQWEzEl4sU7E zMDDRNtzmN0)7mgtx*1n}I5<`HVMe+S<2!hLh^uL>4;c0Us6NEiw6+QvR{&HW%2XdB z+f1%AFcMv7p@mjf6W*BnSJvt2qg)Aj32Iyj=+G`hNSQt^ruF71!K$@j^%pd5&QbGP zj@6EXy9-R704Tw7tnM7#X4|pn7N7(RDZzFl;}Jk22Nq}MTTwoe)X!^;lweaH#^zW+ zht<06h9-G0uP5JU%hjNcF&Xf?UH($_2afWj`#!sZ(p?Qs%K=Kd@3T8mx}rz0uNI)B z`ypGd25%x`H=v`d+r=9O`P~JcO5|U&%NmOOTXqv(gfDy4G%f*jX!>^|C-;oR!tAlQ zG?)QP7KPr2x?2FsY7oMVOujAnpF2{9Y{RQv>Sf*0QN2<$} zkC{dbfa>x`s>|mi<1B#c^2e&nzaisWK%(UxXyNnhhFw&afPb#@OJb@Ec0ZOhXm0TAiV-Y~fwNuIE z-vMEf*@-WD%xAM3-Y`6;U3M3`)D_6M5TN8*ujKj(8DBF~?pSYEa*Th794m%d8A#R)$TFegDF7vK`ud6j1-$IU+fW#GiP}yfXeCdj*^4!EaHuOO{ zV_{-C?!nBD%x2`_U%6s_`&0Q4_qmxj8r*k3gN?0##P=^C^9!^50jafheqtBL_Mn;n zu*z7_W5+nmKQM$YxH0<46uINOO``yibWgzki@E5~Z>DrOnLmoMMjhzP7XJJ;V0`pbC@OyzQwredZ9pa>aT1ZuK-M6!3XmjCum2$D zEnqJLdhG?$<2e)odVdN81G^~o9TKTu@u$zPby)e4ZgUUlebWjCc14q|)??!~sLlW! z-2})QByJ!Q0&zrpD!-)LV4&Z7g3z7OiM1k12{ z9B->3#KjQezq$lRi;ag6wFMtih}%$-^E@u4fTM2!l0c#zAjw+2?nlmOU?Ty&b^uv~ z#C$-%$8W1=nQhdNC>zpBMrs?nI6 z8$%J4c_IFeG8bBO-9<=`;E*0ub~Dt4iMMa%1xkZ`Fea)x81=8w<}z5Aj55zg*>GV6 z@`Lkn#;UH+6C-n}YKcC;rmV%NYx|dWk5eYLDD93l&qI0~SQ%9hWl--C{^!+BI0DXZ#ytH)qV4>I?;l=Uk4&aw7Dc-AL>NBuOKl z)AT>su?!H;IUkAnfPeCwQRy~kgC3r`WoaATEC{)_?m z79ch`=seFR7o)CuxQv2+ zHfexUrcGX`%d}030<}@zri%i`K}u0ua4)6cbe;m&UH~!5DM(BPBw0(0@={>S0b-Q* zA+ZG@M(MH4Hc}^N80Bv${}GU6t{CN@*AQI=AVzsH63YPmRn=;J&?rAqoskI)(-;j> z8ECyla%%1Sqwa|}pCb>Pu2@uWjz_`^dUlXJRga30ZGz`IsOaSg8(tdX8%P<3cx>^{v868arpQGcO}V+~qe}ut ze1ceGZ}ywk_zjqT1rTd2c*8Ur0g|jG*4T|0K&){h5+?z~8a&K!NCo}%Cx~7eUljlX=Cg^Mw@77sjA+F%MC*REn3)N z4N7ne)S-o*WpRy=x97YyK>vDd#Zdks#0f=i{ zgv3%Jbd8-zJPt^bMqI<#YZ|{GM_gkPkdp!b)hQud;BuT_I!f#{iE1+tbW=Ge!6Pz+#;}%`^H#7B9x+q}mqZG9ThN9| zTsr{7H^w4yJRr$h;v0*AoeL1(*oee>fcS>TGTTT@%H-PxY z0wm4`@K-fMOGV$f3IfqLc(aXz*8g^*!)UZsvvGYZzVGJd4Je-06dc~>X$s8L?`0IEoukKW^#9*9XjvNHSW4d$&9B!R5f4phdZFU+&BD*I==$M8oR!W_aFeV#yLpL0whTz*0>ee?EtaH zM(>$MF5sW6u~d(qY3u<#tZ`_6ZHON_BCu+{)E#!*OA z1H>3TmUs#zOK+lHhw@c`By+_W4*=T_5M!*|XBsU5{8fFe)j?xy3PsQu|36QG59^M2 zwx}lRMw$_Aak64`m@PI>#idQp7TaY|T$iTEoT!U$Y~FxkxTfIXZb?(X7N=wsq;0YP zJNk<9o>cWFUQWluwe8kV$MSsFqYeXh0XB5-<;g2*I-ZY_ss$wXpe%7Z3e7kDQT@t$ zQDV$sWE}MC_qKeRn~X=VLAX_UbS6sPQy%aQ7<>s34+vl8c|Zzv%>({$XVe!DsQdt` z0f+}oMq&aH&c`<+u?CPNjd;Mjz+MN42lW0BZ|?!x0}jqV>^;aI_oy~u;Gl;G3_n(T zz&W5g3m_hFGZO2F&;$OB#7;nxB;o;I0NW3!3NffLe)NFu;FReBZFJe+%*TUuQNY+r zDQXM8q!hQ+VbR)0@L+(rKxZU60+OsHE^q>{u>f&_rAV9y5Et-RW@BSrh6_B8@?C%= zbHxQpKE_8AfVjXIBt`=GtLmZkK^JHSP0$7S_%_NsufcqLaK3sIavtX6>vc~&A3z>B z&Ae0%3w>a!;&hk~TzlAK+42mE8`2b+J}~y7hCZ-aQ*e0iOH;rHc4QQ!eV|7Q{T~CP zZJ(G0Tl-0w<9c*`9iaXF7b4RR$Qy^Zk?{sIH!-tRWj6iTV6 zKo7&sVUv91yBSpL0Aje$AhC-G4fg;NUjULM5yOpqhHe0=?$qpPxZfYw&~Ts8W!iAP z$MZfH*J0hRF2ge)#i%XVNHJ)+-M}^p5X(Ioi4&Q@T4K4&fGq)tB_By=r{igRRaB@ZL=s4-ig=VqTlDxFDU0VGK>fG=o`ssWl0 z75f5MWX?#Z=(4|4?1j1vie>w?1?RBKRP2>#;c_;41CaZXxR*_`)&RbnRT|xky#E43 zqaH74^wbQEw)oOCqJSiGMWb_o%>sx6S}8-v)?U&95=;fFx^)zm@}Q2@roBhQx6I(XPi5+MSxA z-PI_+8jxhJX!kQ<9|1(WM|^`-IRO5u5?US9?s5o3?eZnFen%s|o8hf|Me~d9h^Jfi zie`bnWbs0?M=?6=LUY$)7n+qB6bJ>L(X_trKX^}b5z@Omdqfj(Y)cdYn=q=L&nP%5 z&B>^mttTVObV@xz#-l}_-th)aT%191U7Aw{!7sxa5^UB4lxa(S6Gqiz83j+LIT=+` zwL4L!U+M`mnwZhLVH4+NP*mc&S+62JPVwr71RFI0WvWsHGERLT$S6=;@U6tq7wI#k zX67wvwJw2dpr<8wtk&kzBO4fg=bfbPOxp+K>)jlf)igkIF)XhW0>PUJ6%)$8@|Ss? z<_KQG^&@=Q&}sJcGg+az%2+do0kEJZ#N_JERPLtXSag)-S`gH z{-)bd(p}vZ{EDhS0oq>;w=svQ%uWYE4`_czOJts+GG`%U8bGcuk6-1@M*G0k92f{E z@NrYFFSn!427t^)A0qJ{5#B$;iOfbbfK3BbouJuqHtGmYnX}OX zU8ZNF2KNtZbXmZtrWmyapHK|WM^}UG3V_T<+mLt=kYp{HkKO^c7a;Rd;CoCY0GW?G zmf1!fS$YqDLr^{dkYujRM{9wt2FQH$780)m_^bL#D}?h=2~7w5@$7}u01=Se<(eD~0ZXm*|%?>0U2P8=%`uz;pCxEJ7H9P7z z0#2FwE#bi|`2C%Jd+0Lgmtxcw?4lUdZ}=y?!vctYk3u2=NV1mbcMP!60MYOHNSq50 z{dz2+U$XS{yBp;@0ZHbHev5v_XFY)EcN7xU0RF0e)C!?~e^tHt|LgZ6-If2<@5?LG z`bFF3oIv>Nv0A@3p~)KoqTe@>c#R14Tks2114!fIhBGAKr*DKZ~ici-2%0mV2?!Qq{rroatFZAQTb>4JquRjD># zO7&2>AXBQE(G8_aW>D-;Q)Eh2eQQIh#%l^n<->IjVIgmRlxlFg zAXBRNx`u7^&Y(CiO_3?p;)fbiOw|;WYE_y75BUo-3Y4gL`_{4aYULy=ak1yGKW-G- zFRg=*E>xG{g5TgC0GX!$t84p=ebZ3o(m?qB6SW)nK%FE&-1sac&LBcJz6XiTfFxb;mk)D}!*zv;!!A0{GQqTL&Sv`6AdK(d4q1lBQXTPUzJ}=MK4|l zf#}7V4+VT1d)Rl|+ck+dMV~E;>MOQUw_bB15L|Uux%g^ku2E)R^cSv- zfc9@Zfy}#A=5S;TVP;VnnNO(9%aCy~KpbSv_1<-EHn^I11j28EsobaTLY*f8;vjz^ z@f#63$kB%1=mtoVMjYf^U~>WDAnzja7C<}5|Gc1GdAE0+s{=jmQ@=l1J4j=n--rOj zL9iL!=s|=IG6{(qK$0ZlAeR8U7*JKG+3`B}HaKNE$PQgb9U{NMed-6g3}4JBMr{EX zE{coX1GaYq#6@01;uS!WwZugZ0s9#sE>dRtjVM4|#AAssW_Tl>c9Cf)KLwCvuDHm< zz#asMi~NMdcL1^M=d?oTB0C`vq|S7a`uAMkD_S^2-_~2yh&FH%rQcO){i1F2(Li|n zM6KVH-*5B;h<+C!aW)a^cRLaf0FtvQFYjZ10`@gP^gA}-H%0;eNx$v2G^SCti^cx7`99BS8FU^kneH5HB^?R}|`#b%fugjoc zicwoIlRf7Y*cxmr0HWVvNDKiaSxfYLCa^gG(eGL$Rs%%89!uzVR)&5*LHYZDBy&Z- zowEEmx=ri%3?ya(_^WzOD}?&J1p@t_^t)Sk@$F9Hy^uK!vN8)#}eAD&Cu=%C?5q#GFP;F2e6F* z@!n67_z=Kf)w5b1)b4o@h}zBk#Hg3bdA_?4zB@^G#M3SE!031VWWo#F(~8ky7dUrd zoHfyeS|`^?PaLH9SvRd7aP`}q;+q=Yc=gZ(99#DkkyYIe4$dg3Pz89D!UJPQ3n$bQ zWL!euJ?x^JuZ^8DU6$sQL9pkrH%y&10cF}y--J=sKcnEWG$+WE(ZbjD1Q|^vk83zi z`C3JksTr=KR8fO*s@dLfoVscP%G6a6$T;;KkWrwxU{USMT5)p4mv>t|X2WjgU~=IV z{uOnF@9Ow*;sD(NWt~pN){j7p8|T4zQTw}i1>YNJ!nLuxQ0YlP`|)__F~3roe<9;H zK#x6Vz;*F1q06aQvHoYEh%pMf<@k-xfTS@8p8mznSi@0g#Df8xju!lB^{Y$2-9G0%YO{ZJ1 zCm}J82yJf-5~~17(unQ71?**j*j^78MSy>@z2SGMHcf<+65BiNbZvWcL3IW|Y;O$` zHxS`PYX=gK1Ck^W+xraICxEIN&5pLm7hLFJdX4vDU8Zd>uyT*w>5KKP*JS}CMKNj% zO!l1C7tTlETYy;KQAi{JN!AkU8v|@KK&WJX9pWDO11k!yhU#^xG%>P?4e- z*#AN?sNdyadl5kNdp8oB0ZG;p{k{Th4?y($D-u5eM86(O=$9-#{q}7PUVtQXMZZ@A zyAmM!eF=%@0ixewS|QYL5mfPi((mQED-HD9zt0WIj|K`G^;JhbR#nZ>MVxvTs8$Y} zdb$sei$I)ua4T1Jbq2*9QoY`#UMfz7YcnXS(iE9et;o2QBE@5xf>Mo7Q(zK&C8Iz!%t^3gKRtDyZ_98P z`RA&;gMy$u|3?e`Mq@xSff+XOQ3-sgaj+5h{mV9+&$c6@FsRqb9-NQ|anYA=N>9P4Yqkl7U&6F1F8Vs^yaW&zZB^tq znghf|Cn0e%Ah`!L;-YoHRs+OE&0@dtClKwT|MPvS^=)38##!Q`U*MixT(mnVy8^^T zCn7O{2&drXNL&O+l0;l|3$VKYRqZu9PQkB&Q>Kd!)n$4L&V0XprY^$!ZAyXbKRZqj zeGOb+0f>hlLgHsYlC{J`V@>=%L;uqHpocyTfzX-1dA}`=R=+aqaorWqL*?nHs!X$@!TVqY%I-2>+8%#Q zTOTYrTHgep#1%b8>04m zct?AbvdyU&hlv2O&7*Ji?4)KMs-%M9>8LNZ`3UMf01(^EX^Qie0Aia1kmw6Yl16Ov zLSTykVw;~J@e$ykY;$$G%@v@><>MmEs$!c?sUIhKpcQVO?0`gjBDBr1NE{DHl0WG%7H zuYnx^h;0@|aU}(aZF(&6P&+@vHYcEb93aVDvCS>O?gWT!eu>0q0RF0`YpH0Pqao1$ z$u=uCC?z(u&5N`l&^Fg8R)%G9IStWgSJ0r35;!kvd3i1Z*%~NJ(g-ZpHYpv=ICJfH_U%xkC&p(1pu+f zw~=^*2ybVKn&D;(kR*-R<7i+*0Ai2ZkhmZ4PxjbT4%{=E$1OD!hW6M`tCsfoFU9Jx z`7t{gmsUONs>z`ECQXrPk2^NiKey9@FV++sUkiq&ZQkg+KBJ)C9&12z*8~Ss z1Q2^1Qtmg71^kmeF4Dt?Z7!gPJ$A-*OziPOP%Q(9J>G@HokVDlFC+01AW0Ij$De@x z0I0fLv!gvW1E)-TyhE31d(3#1^sFwyHWy4oFvpiD1kJIu0`X!2Vvc=~=nY7+mYCzI zz)k^(IbMmxr2sKUk7c$|LzbR7zJcU=nP*GMO z$I($-&;gwR$8i}^zyCSs-uGU0!hHS9O}%&Dz31L{m$TpVjy(a!oTSS!&qYX*zmEOf zG|F||2$}uuL0N(2Io=W81?(+V_^3)pJ z{SBA-56d(YY)jx+R?!)&4sFFFZZzhhOpw1tFxH~H{g8=gcQMkpliH@4ZVTFXy_d!~ zwWv}1ZrE#oiQ1>~nuhJW(U*9B*Ro@o#HNq#r3&5yPn^exM%+&N{jJeX0(8^ed+nR2 zN4k^xDYKEJJL#=lTqZZNlfJ^mmq=|lQ%84Fa1ywl9NkG{+?+#tshxE4ZNAMXsLxJ% z6O*qy>4VgIKS_7e!(4n>Ze%At!^JO2ZBj*d(#ubt7wk*wSnI&aPAUQ^xs$fIXMQKC zyrOEco$d)ciMe4X9V+iFJE;Yr%SgJDM!6U!wMi-6Nf&ari=;d0BV61>(w*c%vXca) z-$}pa`7@+8$<>{-b_sVR-AOySsFUQc<8`iAvXlDgknE(SyMkJC5<3Y}k$%|K@pzp) zmgq`1v6m|p!j1qdas|-E*>Q#|BAe}V*4UiQ*0*V~0E;$TDN*Cus77+LJwL}U>D{h| zOu#%w-}V)o?IVc?(Pj%)eBHgwJ8VFLH@(?5!e?zGe4T;%5~=NG#mD)OUGMC%Y}P2bvU-*YZ@YySqy ze1N2D|6jOxQf_4JziJuwJ5t*d)X}v+z+DeX*Zy5x+(B|{e>YErgForp4A8)^_Ah*s zTl@b(tzVOL?Z2vdUa&t&*ZwLlR+8GJimv^$xZ6tVIM#uawO;^Ia_x7zXS=Wcf_s8W zSUOQT@HO(@vi2_l=$lBo_CLoq8$Dqski?5R8uVa7LD_Q#+E`Eu%A1j1q>3`Z)X;}I?x3}Kz$N33b zZu-ey`<`;Co7-0}pBF47>D=~mu|aNRZZGHJQc|1L(YgI9cV8gs+#b6E0!VtPxxL5r z1{@9=Vs1BI;^y`oYQ2G^b9*@#m&uLbwNG+!JE={o=-fWR-FHYGUvc1MZrg#BoZFwe zXS>hsKim`MRyt8R@CE6F%dhXUqdWf=y^H6cB(+Jd&TY^-FL;q0o!is6SwoV)j_T+cZ3?bRlb>b?GczhEzUw%?gN`(~WE;bos=bA7ET z)lYu#1%uiv*ZiffUwau}Ys|~piLW&sCg1T(jkNkw87o9Y)1c`a7D??Ltd=*E+U^9C z5$QB&dbH`FC6xP5GJk7JX~Vj=(Bl2p;#Ch?i|095M3AJ#rP|{C*5Wa%P6z4CFZYzy&}^( z{0Zyub!5Ji)VA1l_>SJ`oX7eWNYHB3dP(fAF^nR=IGgoErsLJ1>D)09TAlPuN5Zf!=47w`m zsLFdU_XBdJRrx$UzKe9~+inbkYhC$N@I1^!(|elsI-l~VeUL|s*3JtKA+^bqbsr}u z&E4swAlUeztCwNLryoh&2qFSY1RIWC0lZo3)y1E;ci%f@-AY~m*DKK0T=Wesa=3gw z@>1YlKw5J9M>JD|SO1QTr%5)UvrU~+?UGaH1v8{&H_2Yv+4M@8TyZ%T+?{H7z(k=y)XY@L_wn;G$r`;@2%$ zd@N;BtAmYO5<}Q=ZsO({D=#8z`b~*^8E0Wk_g)~czoA)1d!lJC!5iycbL*sM{H3nH z{H=_(e9w*|CkO(Vq2CqKlArT7WS;U@GQUa2!=$C9LRm7q1lZEkakL|)OAhKNZ%E_w zh*2rQ@cuh>hP?=#IF*TSI@>z&#OG|v%fOJo)b$s?jZSE&{j-~n6TEjRU@st9&(3aI zE9>BQWIRo>$eHIfX)xM1u4l?g%UXo@2yJ$MMaEA_oxf+x{Kz#2Sb3wc>6ND)b}MF! zc6KM}wEejWxj0L1=5g~uF5XXSlk)41Bj;i6zDQcPf}0n)_%rGB)43t6b$XtAeId9K zpz6Oql)~6(jAu?>7RX{*3i9{ z8V)ubbustr>@^lU2>WY&fpCF9_&kG6k=Mx$_=>N=@qA#L$O&z3`F+-A{=3m;-~2AT zMkIXcdiSU)I2U23X?4?H?eE0-V&7GK5{!%$+^l;UH|=R=iF8IUqkoyJ6klPF*T1GW z?z8V9)H$t4u?r}_Q|g_~%}rd~Kx*}seU)`HJpCR|9wV*0gq!7^_-T+%e-}4RS8o{l z_RT@?Sk$J!dX;N4b=`pvL4Z#CDWyWHolR<;TWH;Hd3qU7E+uVz(g9Ok`EQ9E*~7dx z=;Jn*E3505fR`sV{vU3t5!8WYwjt6E6uGAyIh4y4!fW17Uj{W`EJ$Ue>H#xKKEY6;gXbM z)t}vEqxXjS)}_?-QpV`b$j*6BNI8a2|Y8fS1nkd-A>33Oa24Tl#M6%~!2A zKcxOsq}J80+?Xq8z4_Xl-hAD9^QsJzJ89W_y6NKMsiVKc@T?)DmDGKf19dP>?bfB1 zcev$S5g!Orn><-38|F;zMoGGFuH)i8q>gVn5VCK!Q`zsECtZHyzS+;^{)Ro# zeYCr|#j3%#cNbmO0}j&FoiZoQ!Ny;@2QpM0>k{MkQ&*B+Zag!Qzj4~#$oA`aySov- z>y=~()YU=vM_u-bnl-|9lks7EJ6`LSgjDFWrwjfmc*Q^XTV$0xKIw``mkJJm;H!uI zT7yD$y!t*{>r&|LaiNY{BLBm2e)>;|d>Kjr1}EQjH&)?C22%~FLuUZMf?~(rmDZOf!bzB5^MuP8t z8v{Adf2iqb=HcaUgfFxF*9x0C@AlTk0Fl4;pV6P1d;3)I&@i3)))Awi>eK$llRwkO zA4#XZz|9f8EOt_xlv=m%jd1PUZ6u{Hb`Z+e4buwmJMWU!i?tQs(0ihWo|lFmKjO>2 zq4R-KA!$SJ#=vkorhNKO> zvJYh&sZC00L+iLZm6X0`&ka4hwy~kdqJ{>gq3=$?rhx>y=|;@JQ74gDA>KO$*Egqw!1q#-G#4K;JOl$3sM&kfzM zs_~8f5jAwDH1yqL^Vhne8v#m|qzzrj#V%5tl+uQ7=k8WgdVby3Z&@ zEUGm0y<;Eu4SfeFkCU{aKXCDTQk#_0hK?SnE|NAh#l?0~o0QUqKE&MzNarhP+q1LaPVHuOU-en4uIQrghoXUq%clhVK2b3?T` zLzkMdH3LbPhJJd|zxsww0?G*_ZRiXx21spEN*j6;cW)%6_jVBGthzs6-?)z!MGXa; zY3S)=I^OSw?xR5YFi9JFjEhG}ZBj}b`ZITbB&Cnsb3^Z%gX>mA4K+(cKR@P^zM;d1 z<^_k5w4pQ??W8s-r460WU4@ihz2}CG>u#K*-l(B-rJ-NG{=g5oH@Xfe*O0WKFL3by zsZC00L(g*e8&dj=JvWp+uCbv))X-JZ&@)Tl=o{KUi`j{!4YhKyg48CZw4pqAIa2z( zJvVgks>X&ci5hxH8v6B;XM96%1_RbN3@s`tm(DG@fp3=!U4F z=cS?FEE)Kq8#*HK1pfe%Hgp^}uP3!hDQ#$kyDTaF;XOBW(VT`pA2qai3k^NH_rsx{QlUNo^7=LmRrAyE{qgqZ=CHjO6j|2z>yLdzhoE z7r-LT02yv=-+AYs;ud5_);$(R?iPD&N{e|f3tp*A+pGNybe!wTUP0N18p}4Nf{rsB z$`#h`x4xy#4&lNM?mKU>NAn$}MA<_que~~Zsr5?BF3tEZUXdu<>B|nEm?-=B@xJU+ ziL%qa>?JLUva5X`Hs0fSSmDYye$Cyymz(sj8@bzkBd(U7H7&SAhvn&$JWzGH3H1A= z!et-2KESzi|6sqR@Xj(83ngPwaAs}S6h<2T>}l#ixY)Da_bC?E{YMDje%A2kYO8tBFVSn`S-V^NM*YD!tJ^FBa z^za^gc+NMawY&9UN-PKl_ilrG&aEL&FIDqZO0@20y?3!>ELwq7bK-keaDAD6O*J^@ zLsQ&Tt>peUQSw#Yl5wOcfzP@fp|h#FR5YLlp_*0*8Ife_3SrF~kS%8Pu*I4a_v<5n zR!>h*WpyipO6qMX1O66(hv%YHBj@#UbFO}+{B5b#GGgK1Kf{x^r%ry3Jv{oR$GLf@ z2{Wf)FiTyT(yxGxegxv3dUr~{U!J>W9XB_m=8b+qF0Qp)RH0(_Joyq3f9gDI``o;3 zseRUe(5ZtG%iX^;UaP8|t$XLw&ZrWw83L z37`x*DE})^bc6;|OJ#(t;*cAk)qnmZh1a{nqWrYkU7uPkvwN<7gMNMLq`z=uVAiKL z##7zlz?}TR5MYjQvsSTL+a5{cq61l?vvx%41evueFFZ+FrjxbUp!|u9Uz3`TzZGCd zr4EsjO;>MOwuDuiIy&{T0-d;RD=ZsH)qkngsd;x!TWdC}t5WmMbOP7TppKH!R?L#J$NN$QY6%Aa--j|M5zPdaUyn;9-@q&6wG?yclp z&)xe;nhX03~cIm@24(FXG+{Da}u8z`&w7opF z@3-VVPodb-vpEM&I&CR8SuV~Xwff4w%DQfz?&8S~(z+pTZsOtw(#9)XJE|4>;zH7@`qXrgdZlGPLB?aG zGi3Yk?{r$J=;{F9tAkSerRbO1QH}_4wI#Ls^1hVXQAT+(Oxk#`gC+yD@#w@2v*~L# z&Sp(oJLiT)jL!cWF_2wzmhR90JyM3^td`T|;c0SxqHg9FRh56@>SM|O+mV7Qf^(jP zAf|p}5M=zV)^Cnd2ny{trz?cBAEMy1N;1}*sAKh89jX(TUdMyq={0J+o!#91P~kPZ z={`xi%3tbwnfQVtn;#x6KriLpFCa~5_kN_^3pVz+dNLU4fy9lhWqI!{|MYdBJ*;qEbV2QE$A2jeZ$r^sRMV=3yiz^ptt2X?IHhd5FpCN5i8uaA6 zBVEfKe{oHy0i4Qo!;VX>57PU&Lh?+yrw*8?X(5^Ng6F(-f_{9K9nFszbI-b2CgrmS z3z9hTk4JL-IUUkBg#0Rq;EG*tb}L1d97p|Ac%fa3H(iJWS*?d)X875 zaDP9+x7Y;h2!B{{w9V9QO5B5UJ|aZyVuSp_2=c|Ri6LKng7!>@<Su9g-r8Hve@C^yTXD0yX6>w3mrmQV((ND<@cLXkg_6u|4p2thz0&i@Gd}__U=w+C>BBlTKU9&Cj^_A*uH$ZuGy?H*l32TsOi`IuDH^t;=!q zRxU0lZ7y>&>EN&1!OdsL{Um9VaA_BBrTUer0~Shq^0mYlc=9V!n>6(u$3<61q9Nx6BGK*ZG_q#|jS^k&jkq#H<|Al*;;D(SnV)YAFOevq2~i`2*F>-FmS zkMofMx%~P*Kip^juMU6b5pwgheSW{s{C6I4kKWw1;A;!!-*d!|^yaYz|Gr@UkB+$H zNGbM<1%FyF|B@p=rZ+!2=+_6$|J!TtI$WN-aM0fmnt#{fztWq>U-8cU=6~^wq2h9J#p_eS0|FuO=A0`#weZVb}^X)_B=9UBQ zIbi;`c`P?yJm9edDE1e>N?cek!`276&H}C!N#lcf7Hjq;gW{HP+3Wvm4wjV-H`|CDj zT+)}ojH}*7-a|p~Y=}?ZB!}zv;nP5r|H0{ajP$S+FCp*qd{1{jIA`j9ir@d_`TNNG zIQ1SOrGaq=_h*+WOS=9*T$w0$HL#w#JkY-dZ1ykHhf!AWdvD<=%!SmU+#}%np9ACF zbpp?EeI50WpvG5u_ETVdk3RmMzI>yPK(O>@{>mVD4w$!5{xRtTZTuZkdeJbp_ix~J zK%MvTd);B61fKs4IRD_?UbUXZ_W*Dyzvx^HZ(RS4X9wKD2W08XZx#o^vE-fet{}Lb z{(XbA?pDIlGKPPoUk}mVA0C1^>?44zFEWFpj_poaj^LAi zE!1DZ{c3(+b_IRi2YG-x!V{)RYk9WUhv)-!+j)npX#W$m(?K75Nt-GAB=AeX{UR{` zo$C)#=2+TqUy8x~T*fxQUI^Tcz`B8cyqEWQj&gSc=gmE|1?)fayp8uApv#_j>?WypUO{kjc!hw*y`_3q<(CGCFe8_X@~BI=(G?7bG? zMopO>;P&z>oYC)q^9TCylRm<{UBf!ycOS}$&Ge^rzU)i=W4J%;3h*cI(L;Ymc;5$U z<0q#Ou$THvcz!rzzlz^~P=9Qay43sdyI|00;}rUGHfNw22fTj)cPXMK#xgY^3v>YT&7&XB&%{S%bG3|QMPVZ1)XJac~| z_Xj;npAMt#+t{a9a6XwfzRg$;(f8}An_tK$5QiB9()nE1$X`U+yMX`h^{i=NpWGh= zUjSBxwqK|-zx3}C+IbUYZ>HW_%CDxKPjQ{$`qRK2U4R9j=kKH3*MW5$?=WwMegjj^ zEj&os-_noIaer9=k)dxtpxnQdSwpn-5HNaxx!;F_;K$q_K;5P*8GnAyyn`4xJi7+? zH}vq~Pttqn)61`A+C{ZRTfPW|m40$)&nlIu;>JB4;` z0e*!#N1h3;xsrLh4crCn-%$UJ3mGS1-?9|(062F{vR9~c;3+g|zp1sQR|6z=}XMjujkMjJ#=;QAXV@*B^{-?}9Kk$KD z=l+erUP+%Wps#P?I(0Aa0gPklM+?6fQKpUG?^5rMOX%lOv`^n&q>UchymBF9cpH0^ z`d=sizH`}IlsT0;FP6b4gltU>M^zf{Y{>}Re{bhW=PniX@`v7(CqU;~( z?>)428vXh)&(>YbK|r4UE9)ss-G}J=b->%X02~UOWx&`0>|Waa1?B&882g1XL)>4t zkTuS;13|2C;wvVr)gsY>3;fkAkUtpo-l*YE;V*fIJg%tN$rQRmWwb9Qr=~EZw52V~C zelMeMU!7#1$uA&owAn(rwWPDT z{?DbXp@q!PN|;1aiM&6N_g>0BL-`+2{|$`azeqa^z&kvD?`^E@8OE!Jb$118p6mG| z>=VYi3%D0kCbbN@d@ppAetnGoJq?_pYr#{%YUiDvr|fUZ`yOrX&$}N^D)d8Fu4Ii- zW(#GXr~S78>k-=cHRZn7!#pxZPp{`|!sOlfD0OM~M*8zA+IyU5i)izBV7>4f)+unF zrR=@D-=Aq~JMfR=`H!f3;SBloYb9k@k@vc>&P z2F`ul|DF4v(3jWJWVJsT1OZq`+WR2Jmht>JWxqn-@8$QMw0R9} zUjXcf>D#{4|3wdbmgf)i{HL@tuRRFfPr1vfyO8T!D8GR@IG+B$8kn~)pg)xVHR%;O zV6=i4>0>)%b74O?AJ|*gvX`khOa8_5yO(DN0P8!nIRdOhM_50!cRyub1&oi--a!w- zzfkuG?tdPDPk_IO_sD*Qabt{*p#GUWn*jE$yys`AGeZ9VT)|ub^A7S_>En~Y{a@-H z)(T9<_h?|8KzfmKKjzsNX>*AF9Lcl0Z)1G9{sZkDL7%QViuFMso?8gcr#}zyuFp{C z?>s*Wc!%)*AEeA1Xm^4(-*GMbuOD1Vo%wHNt#iMYKHN)RjtAcJ)V+?p&++_belKJ^ zn#unH&oAY=g?>%R*wUA+yyreC_!Hot*vdOn{)Ham^=DLk~pWs=I@}Hdn2hz?f zDZd67SJH)8jiaUo^bQEwAvAK|?}3!IJIKf>>q>C=~HSkt`cp}@)W zPBqeB7P9_n_s!HD&#_*B_XKqxVJznFPk*@nXX-9yEcWC6Wwdn-?SGZ_@1}p9z`Kz; z4{`lYVB{I!Lnt$~mi5W~cgg=YeXEoIG46}>`NP!zAuzu~8;{ecAMm@2^2=LUpR{*e zias%xhtb|Cy%GBH6n)yVjCDczJ83Jm0bI_r z)ba3BwEyq4^DoqCzKF7qGX6Z@@2$uq^zmo(r-QcMLb<1AfJ-~e=*N#K_j8_KPJ8D7 z`#Jh2GWHEKt{~hknrJa7-`^5t0b}jgC8Mw1J-Bqnts_9C(Uf5Z0 zFI5Y<@m=YeYPC?VM^8t}wVCPZO0`}X?=4Oh>p_^GsfPJVX=bV%%#>@zZRNuF;@Tu7 zf^eohQ!9)w52kYE+_u7aUty|J-4*03Q`0l`!eF&fn3}E^E9I<*802cj{7_-GSR+?% z%E3gblB?BQc(v=mGZX5@*n7{ zcLkLvCMJSvp*~ry><9}x^95}+*+LM8JXj4- ze!@~ASF5jBE_d?&g=&CtV4_$maKB^ccySvekuO#9+bI!F=cbF{jsa~8e6?R&^&aTn0eRy~%42K5Nec?!^e>hAJ^bLmT_Q9~PedEAT0^S6JA9e|_ zY$4fhyS7^_Lv)JeV!fCv6)z}^yN0YBaQOpO-2k%pyDg>Ro%DJgxzP(z_?ecFp zxr22vQQ_7PUuR`1S1e~Nvseqqi`6=-e0ruh9@grG>FFZNP`g`|7q8VT(=4vBnIh9y z4q0w_qIF0Yc*jx^H~ms^On`*70tKVRRGXZsk5_h-!)>L?SWbtY3N=?k7SgtAt~^u9 zRf{xlGc-P44awYA2rIha{Y#8?rNiu?j)88~#Z(W<#Srj?YE3#&&9PIjx6;2zCt3#O)bhLgGSc!_N&s9=h( zT$c+wT-zw-(qUg$-@wq;aByf~xGO!JL1vQNt}{k5qhY$YJ)31mY|*^-?AHGDhM|G} zfst&O8PGhIRVLl#?}mo6nVz_O=V&G?urvMLR=T%qw5zv;P1~N{z{1aF2hzbzy~fhv zb#~R*x)au?Gw4rdKp`=7g|J)^EE0lECZ>3Q8>q0J8)F=1*;9hQ?7#7usVSzT#%2sA z7^z&b6ok1c*4I=qj24D1q4+_$J_}|ZXU|kZ?Ts#qzJboJaHx~d(YE(>X8ST>_vSFu z$%tjy7wzdy0dN&8`(nDXqX2f#(aFZrL)ld;sp8AZ9@;iN!(y&ii}{-Ekm&%@AjBh_ z&6l<}*E|F!CEdj+4H>5BALtM1N!T+u@)9NFX?k!3Y&JxT`Fw$8;5y0f;q6#zfew+o zb}yFc&kQSQDraRX>XbGtov+NuB8+-itK{jUZ{J2F+u7H?sxfP*H|;YRt6^45duQhm zFB5jRkMs^FheNOk9R=IlQmut!;1K8lLrFiT+1+KH)*{Mk)Un-&ge-PXkTYexJ&NO* zDQM{2%%MW9GE>bLHt2SUo^Ghr>K>kw@ga5}uU`e18&zZ-c4vCK0v29TNYZq!nwzQx z!vdnGQ165Y=ONJ*7H7R!s0}r*YHpTiBO|Ppdce337VG&*Nc+xV#ay+{;uQ233|bg( z2k-Fig7+qKwd_oFB9||8&y@2urjK(Kg`JE+4&puqg@^2x#>yoKd3gRz5eiz^2{C0w z70RnwV$mN;6D}@JujC0x2TrT9QW4pj4WI)A@c8B2%IW4Q`V6kRIxmYX78WwnY z)OUhQrYofqNIsN?A@dP}EmbPpXQo32!;vUZc+j7#7iSA;SuVf~bD-0@uQW9o)=Oi$ z*b`usJSqLC&LvVtn0p8MdmvSvi8`)nPf>ztrkbv@+vkwEJ(2cIKcrpDrQ5^oh9N`i z#W2S#M0CKg3$I;(p&GY7Yn|@?(TLCrX$tc%-R9;VM_Ky@w}31L1_!%3gWN3GNN`qy z{;*;UiZDO9dc7L@F{{)J5O5>O%TE^a+jT|J zJ!AeDgNWW0w<&)Yj1}l`u{;ic2RmA&dlSswwwiDZN&j;|dckK9lTtCii)j$n zO8%=s<|m3fgXx*tWZ;%XEi8x-qV#VTMk*}VpoB*MY^zQw$Y5HAA)mU=O zVbTMkORQ^1;LKDmL=cd1+Z7WuhsZPiqwT$lnG0<38P?@&RhnP{Pfa;?27~}X6;uFv zligWX>|hgbgj;Z9uC_hQ<tJ708`c$j%lJ&_5k%NJSEvh;L9y9<<)sC9+O<#z+^^iHws9;S7?ox^-&S z#t|=#__6F&fMY!yiGzmvRVRy_i5RQYM3jV~QN4z2!BAu`m0(M34k6Vu2syfBWIPf? zVoQ1?9PJv)dfBVLYgpz#)88|PY?KjUcE~OmuNWm-9u9WESf|qiC=RrIM0rN~GbXh` z*4l@9gs^EpO3X+p*tvRDC{qsFM$g1JG2o6wNj7`E6y|p!sWSLs6=|imt(u<=cT}q5 z0k_4S)tZofrD;+@=?@yLyg*f|C6#jLO_aa^Gh@i91eBrn_CelU)L=%fBhk&MmfWg( zN*F^&$;xzb%!w>u9#1Ju?m);0ktv3ecEa8aijkhdJ`reHJdh?B!*N8FmJk&Vd$$Zl z-MNh+RIXz@SBJ#q^8t)?EWCMo<7>d339g&UQxxu2=GaM0juwvecWoJDEx||VPMt$d zr}NU>bP1)1TU;?Uog>_d=++(!cJ_jqzL799)ZXV?g&!FV5z2>sMnsZ_yM~5F;5|IO z>#xkAX8n~8R1(!)-IZz&+`2ER<_qGXq{9t%mOesmE8rstRktwatL8Fa#;!{#vw7Kl4&qaj$&nR zE6;%S1bv4}NLY2~3{WdUONDl}ieeRF%jJr4t~|KOC@KP(WwxS?7#EVMKf$aMt|F4C zI?>u#DTnrlCB=Z1MGNZGqQcy5o6_A--IjF`M?1`}G z@;34khPfJCny^ExylBQ$DcV~oZ-ZNnNttP3V&&WpV2A+i7>szpv=<_h@mSbvL8XkM z5k652qW*&!K;4JxAW51UOQ|dsPKeAd3P{J|Fy#yw8)%1)saHc8oim9{^o1&#jVb;J z*=M3#mTdG5m@^n~T&$44PI;X@`Qjw@+T6wN%=Qq&IYQJ$=I{XOX#<7>!$+ z4|3a3K6~3jEN027*VSCAV1g+^nPa-9gfL0hDif?iw~AOgCRpo=LFHjHMSJ0-2w9QH z<=-;Ftg^giGsk6gUBtP0QbG&7hCx)zC(ZSBtgre4ccLp~PiPE^6{~)}hLrhpU z(ufLAARQEW4WkFjhe#{xC{`b)7DyKQ7}v{Klep4nDYZ)vp_=T=^ot-Vi%sMJu&Hug;TG9Piyc=Fi2voVf8>Zim0?jm5nA&DZ`)%RYrIC%%hZ1QZx}5 zfnoEgVUB&k(CvWCsD93jY3PsPq6&4@vY^#gLx5xmQB^GHIoJk+mS}-t3stwE>)0`L zS_Aw%FqkkR^{x=Dd@Q(#btSS;XpN2`SdmVXWsHe5K<#KyoH_2rO|Z7p zAPHU`-heU-E_ZNXsJ$}-p6(h#Xi?-lqT;4tUy%c5kR4!F#-TJZQXi&rUsg*GW(K?T zVtJTukb4@fLyG35;day_Y7Oe_>K$%Zx*!%qF(L}airN?+YR3{aLcc=HOqg_~Lzvmb zpe&*f#9qrzNRT6=hDnNxW>6kPNLv^XDK91=Wpv;?Cp~6zNDN$zVj<$r4TTL34!3vo z&NaV?BmfImnb|hUW*1!7s66rEoEUvxM|S@!y@EGU$6^Ts8U_fIF-R5XiXZhZ)ab6L>N^kEqRP; zthLi@IaQXfXA1PGQFarXgZ(a+kOA5$!B=&q(_UmKEl-O^AuCL|vfwZe&L&|f6?A88 zcu6>K!FGaKOOQ|u7%Ph&x6-eisH&9fR_uzJO71a5OiT!#-jSys@}jsV=smy41FEeu zWGXCq61l3Uf-vk%K94ZM2_vFt7%Z%61s;ZC;82_(_TWyl2S+#}W{))sT-w{2FqsAJh!YkX+<@^~kWmZVh%N5%DL~kQUfxhEtUYK4S}r5e2yR$h<$nzQ_l%?bM+olXcD_tc7wONfHzpOjnqU zc#k^!2$)JSRs#YwE*By$5)gX>+U$8=WS~jZdP|f7Ei>g(2?lYjkb}R#EC<@&F&@su z2r^VtODM9I+1Deh`V7WrG42;w^RSPm=Yb2SRqilkniE5$!4k!|a)(9)*=z-!M`$2} z0lMn|wGI!V%xS=MQ;yH&5r|YDIW|>S0<6Jyt8PXMWf42tvt3M+ATL?Jx-N26G_8Wo z6QGeGPNTv|G(+Xu4s7147)tQXu|BA(Y$Hk|;T}=r zVu-I``{uCYHW4AvMzDKwVkHe5(67E0+T&T-0$@vFZ5#PnwbArL;k#jTI_Er;{Ha%>fvV)t=v8knK~#ypDQA2!1#LTN!C&M#@mCZX`%kw)8226*Kj4 zLZxH5on~ND%K^-w8vSS;2~?RFHlh4FnMGNP8k&6BDvJLHQK+(Uy81`hCcPah7)oW#&LYx>*n?4@ z@SDd60hEr1o~y~;n3>ugNc(7erq{Bu;;8vMVoU`=D#10vxjf7`e?F6O>^;QRqVJ$6 z6ULhtO;AN4HHhdiIzrTJKPtFL<0T|tM@cBT5gy?&Oy+}Et*R5H)=4-jP{e1cK|~=( zprljMvKUQ-#Z=oprU2o4mAZ(go=#2Ws@p}oBDyw)4J55SksRmBpl_wlVMY@2lQU(I zx$>S8hh5fFi_%4XL3X4#!SO1QXP8)(t85K1^*31D5&OnPk%vKJ7aUh(EqUl9+(0Oj zDS0p(8Y_i2nTgJxvemFjgAm-P%8FOTj?+Gw18d^#Tsb9h+Hrk*_s)J1xk3at8bb>A zBnTatTDIe%lIb@OOXb9bf~mBy!fmBUSV-DYy2W2jsa^k>T|?%9HiFlONd^K#BpSqp z&8Qgo=^aRK%4&Ht-ftP~S#Gyt@b4Y$z_$&9KR-}aQyMbYwl++dMg51-b!a3Dw}gPy z+bzZt!C9ydSuBnS3K=kA68ut8A4Jv$>P40|8`6y-cv)?HjjE)XX$IanhM4nvx?KHOlNG(>6P7rgo zvP)=iHw>jZt}Py~%!qp=#5b@1O^7oYl+i>mT*HNSMJ@qIK2zt*_+Du#c0^k7yR)Qw8M&m#2x4umRMSZgw;#3jp_dqc3c*e^#cB}-ZK7HM+n`+O z8Xn#nc8~O{|8E#t>wC15N8M?pB}rBzh>39x(<{zn>Yk|DOV|$aZC0Ix`F))qk!^9` zipNv!8d?^S0gBIoy~xCXHP7^96c_h$@pTs60&nT83tn^!YCB@%6%w8q^lK=jfoG=+ zRQIJg6%k*E0;HuK=_@-jh^lK?vrJmb^l#{bQfQ7Sq`2Nng$-SuBiJP{)>B!95;Gmknsf@$A zfwmQEI0887PuCYKYkX!}5v+I;vd-DDfyh^64r>sN7Ma2!%-iYQgLwz zNBWhaR23U)t%A5Vnj;wwo57@7K6r69VgsdsM&SnIvK+{vu5MM4hXb$;-Ms^w=RB7) zCPF`v9gY7~2GeXSpxQ2#brewyjGc#HUsl-|Y~|e|>O=zF5MCu>jZoXR>7G>U1PDR< zeYyfqHFUiWil;te>NDJq_Yn>daNq2k8X}vDU})IQUs`NHo$%oK`Vcg4vz!m84OB%5 zEz*~`4THB0>tg}OexZkg6rqc!mt3qA@}O5OD;n$=PJlAQhoN#u6R4$jaVyc%45~xD zPpcwXfgZ75%tn$^gv+N9aY1<%vwfT3R4cp32wdhiHt7YY-6RFWNn#Kvh{!79m?B#6 zglbsC15MpfMExwoU1jTV07y_H2PmK_s^9BVMUVwiQ)RW@^y(S8ZTc38Xe|XeHsm`wUAwf{0JhMl7S%|c0?3Xc@J+5p%rfqbv>NX^6&XfvT zI4LBiQNB3hQmvXE&QO6_f~kK;_S?l9)&+tG$=AE=iL*ku0hSxEi55i_(@9CYBRhX62SF{WdD%!k^_D(Fc;>snw zU1huT<5C(RzU2`ykZJV@*I4J#bcCVJ(P>~a&RxDtqr@UsJ18s!3#+pid!s`*zD_K; zWP1l9NRCnO-LeW<25oA`z(RI zXm$`+P$sr(2ZG6Qu?}_P$vl}Z<7qx23PBMd^fZfiTo!v1Qi@aYwK*F(Mshq-&|^Ad zjj%&&A?4uzc*Im;YnW1Q&~QrcxfpzLDKA!2ATSRzghIdQ67 z0sF>PrF3Md@u0;O$&}9#cEex-VG=im24v`vnBqjmv!aINREQcLG1PcrET{{56y8T< z2E)?c@m9`0)zFw=f8iC?_UVqQu-xQGHGHY*ube3622}M?9(_8Sw&Tw^5!5~euO}E3 zwjK{^aXXPaaXV5beU3Fn@r{;{;&xh6+^w~&R8+x13oI9u+YT#<5ka2B@ST5c4MJdM z6wOfIS<7%fYw|YgbO63(>G)Hz+zB&;-=aGHd)F9LCHTH3Twlja%8Lt`+XIGBC!IO@ zhE0u%M~*>eU~U$xxEhs>lqs%@$>TE6o*cN8-x^|@^q?<$xRTpvdfIgz`f)(>Oq$qtAFcaB9S#A2fkM3@UQfN{QuM`hu;s^Q&^kFbuJw2tUf)PJk(--5t5o z^d#~}ZHGC-a$$!Kb2a>`;aDT?OK!%)v<-*3|Fc`s0iZ}izEfl+$1E}qGtEJ`v0IO@ z?sDn_-ykgmY8-YRPC~6zVIX)X$rw5;N`uar!Yf#1J+$obJv^BwE6$>vK#j&xCV^tF zsDa2_>;YU}8$tt!NFYK$Qd=e6Lg=eTX9E)iAmZNpI7OQYH+2p5BXnpdleDWZo3>00 z^XdNBE+3IQ5Hf;@iXMhp;c?~kry+T9^Odv1vesg>AIk^+y$#<_<^yH!p=e51h39r7 zph_)pg^DHasdKE2{c|nf8NT*>G$sfL$eA0?$BL||1QyX()clT=N>7|SmpTI* zOAJS(o)(Ql01$cO$jaS+cEg&{6v) zuV-b@i~A5LIO{u6Ui9`La0L^li0wSs>C) zz9ynI3&G?Ne9a2@+R52x&K`(^Armv9yHyHsIB}aCBSGS8v9m=wK_CucdA+NUDs6DJ z*2UAx8=)pIa&#r4IG$W7a>ofn4*TkLmLrA!n4!~k$T8lXrYDz97ESkJyc?$Y+~dtqsANBvd8UCm2Zygw|CUKgG1e6r#Zq+>FGrS*%<3b z>;mf49fLQj;U(44&q8a3H%`gCTIN7{j`py%U{-0hk&uS~L32vPo16ZcM}k zL261)b12XK8?edzF;c+66tf`)bYx@iyErSIo`R>Ci#S# z*8-`(m2!TbD}q8H{t9c9)J`=Jr%0w!SxKcTb1=eBPmZpM`m7EIg{y#X2f0Gnk_IrU zk4iQ&wKHEMgp(>%y(l1jIqswQ!i|r^zqof{Jg3?0x=sZJM1F0uIW%yOQm7H<{Tq>o zUPm76Fe84hVm(*Fz`4apl2SJ;(@5oaie8GKPePnatZQX5OfNVs@e-n$74ro)N6sCh z=rCQIO{l$r(1F>C(Q|*^Q1QO`6+%=S?FA$KoB9Vf!!#t%Ep(0IYTPq47;fnyLW~^E z2ot9)oC2z2B)ioEiyg|kMQ0{4W6V-*CxW=O6`N2UMS3lLg1%5VMBI(U+$F~$8jtXg zjZZ*|C?$NXDW)3VL+sklyoI=H=X^ywWo73;i`y1fb*{>(PZVH6_*@Gn#f=ON;d0kt zyf2L7{^tsrj?1=lL)LERIkQ7{o>M#!x2Z;L1`bvtgLzoqIy8d2aaOdT=#AZJ^N7|A z&J7JvA>KtybevF^)$lO3^<9h%j~)aPx+9}8B7F65Xgww0TY3dGfVb){#DplfV zr2>~k!q9{GazrktDkmR%O*tz$c&{(H0x=H9#5jIgCT-{P1l#2&F#~|XBQ+CpRJu1I zRd^xBo%HCRnHoc@IHAZc@>TW-R?()qdwVBZFJ(o>5|mq6TyeBy@>F3g2kov{I};@& z8v>)kE|k*hX9hPY(z${W<~`v9oRC!J%5q{n85-&D7n82=C}y~D6=akXq8dFI!;KY!j0nqBO zoegQQ&7(XD2O%O^qawpyTjU6tlVKVIv$!)A!t;t6MGPx8CelM8QCo&H3MDBvi3gau zeetTe$clbKiH<52gbsQILv%nzJf(}X`PvTg2*b%7QZBAxwQZ>VFOSj391K!QMlv@ z6BR%l+=zmWa@FixbC}p9y!PI(YfHLoPy@mBw=H(AnTuQ2ENx!eOytPL$Jc6;rz~5xjX^5b$ylcGIpj3*vO<1YsWdya1TIC4 z@rxHPU%7Hk^Wuq?@$tgS)%g|8x#i8vCvwfJTbsvMOpLEtooj1d)0{6fkB{XF`L+`x za)AJn@jAfW$%Go_M>U#*mt`=d#Qxe{!lx%?7|j?S!;ohVS%Rt6{x9xdMpF7g7+9va z2lafuQ_hs)>Es=&cenbx&|#v|lilRp#%in(vqT8Z*_^9RkBZWsYYLVNrR-#Jg19pO zw>!65eS|2$zY%#%9l6YFfK!k3oAZitGH1q|u3d~#Xwpj61xlncTmTZMaqyeQ6<)o) zw#yH-g=O<1oKB(vDRpKx_YxNpba~z^U zu_nYwU(`w%W@HSMG9=pZegNI=eVN{^;sFPW1wn9Om_oQ+Pf0YA8Hzh~=*1aK)XWOe zHng^9_|35aM3KYOJqNNzevC)R6BCtfO>p0#Y7ulB;_N&o7I7BbHqp2>(hS&_q=8!m zD_RtRL3LYR@g}afjTJ>avJNVd^y~rzSm}(MC115tr4AfPL<@$$53y#Uw4iD=SBuMS zB8DXfEHz@wb2&ulDS#s%;H&he$ixGUkx-~oMrfO!>5+;_=dFSM-hPMpcjPdt>A5-~ zsfNnY))387P`jwV!wEsvpgO~{s#Rk7;^xZ)!a3SttMSuTiVEVOK(R_7_$iOy5dLs3 z_U%k!-`%`zH#&DdkDiU`&SY7kvW?_~AV+cJFpA(^mZC2h;c@KiBFfP# z)lZFKfyJeh*l2U;O=ovn`kwRfVmo(surX}dB*A?+k>Lx9!BPDSN991e2H$hChy*|jsYHoCBd2s zElP=arxIZTr*@THWrTQ$Rz@b&Z_5TZM_7M%q&z({h7Z)V=l|tM35&>iMU{fO9v&B1 z5^p5G6Twwaj0-d0=8nav#%ZPCPdQH_r@>X}q{y>g;XtD}%)*6(iHyPb2Nsp@R|FcJ zWE2$?&czawPc&q+fjg%%8~Iz!)|>;DFaaHgaulN`VsXSMDCV^{6ELrv0I-OU8iYZQ z8hI3h{z~i?vgF<3mU|g~Im#64P-^U9c636`Dl{NAOgI#%mBAe@y2neQMRRjWIx;Ey z*%+nRcASE+E!n_}_lx^cp+gQe?x7Vm)M^Z^xep@>5T78|*wJ&#c?>?sbYZ9SwXlQ< zbBeMU2YV&9P*52RX9m_6U<}2`oiwXN>)f9MGJP05Oi@ z;-irk>p^^C)}4FjIj@bLS_lzH)}kZp7?>_87U>#f2{|B+^V|^e2|2uI=N6$JyPeAr zSENl{TRS^EZZ{%;6D}@Z8iY#-Y^e0Z7l|AIVC;I$5aQ6ksi3^}(d`47J2~5=TUk)G z>!>GR1E65#4@B{;Czl%DM0zOUr(I@b{csNVeHuqO5(%7&sFCf@7U~1#c2TZM_+N3! zjmoQEuNvNv1csv19PoXOo>Y!#z5atoYtU0(TU7pTfW?meA+MGov`$s zDoV%}t*sarWmIJBFwK>E|4x?F+X{jLMUdkj61hYUd6X=Ya0zXbE_tIaXr9y#qKYZ8 zkO6Eq3wmB*%H`#hi+iqVF=qI-oBZvQ@fZ+d@ z6%Dtb>Bcd(d1NqFLr+;K|x}|OL>ZPqqn-?R?wluf4tXzEj5MPnlkgHq%lI6=!SiEGa zK2t87=FV+%E9m(&Fv*ftD;F=>ws^_Fa@T*Myry7dC&BYDrrHy=`s|Szh#f4zW>Hv8 zK}OM;Zv#;zk^#f+RDvpUMV`MpZ`x48(SROszG@oA1<7Cki`Ib1UlD`gz{^5FzEOn| zRl#WH;YI{Of(C1xOyw5~E-&nb~I z7k1s)JPZp?sKT{Zjn2k+$HIO#DaMV z;|HUlq_f&!^1(3~89J+k1qvw#iz2!vB-5-s;wi96NvQb@U`30>Gk3HG29wA_11^Xc zTm@Qv=jPx7#Xu(-VuA^H)N~C8H6_oHT@(Wvidj$BF#b_U1@~10-=KnN+s#QLGdQ}+ z34anCZkL_)tP_hE)?9=>xwI>>>Np!2`=S8X3Ga*_j+kdhe{YZP`;RAR0*RNQ9Xs{n^VjwL=I-5B+&*4RHH_&U^{Nr z7@=e8#EC-{CX7~yw_k#e7IsPyeEf&jO- zbYwjukV;Wy`D(`yV+hG)*EE;3X;~&`EkhA(68?h@2VKGHML zu@T*AR!72lbIJiyQQV^5ERJi$XN~wHW-N2bGe;dOgsV1)uEwXQ+)yy5cp<2QGZHZs zJGz+$19|rtH+zo5Xhgq>2+JDx(mge5=?>dtsv~}(M8$MbNg|mqmNm^a9AR~OM>WjN zZu5j9l1%%$(#zFPYtJqdN=Tu?=750R#WP^u5+@1;P$m1+9Zpd=#-N4MLbS|~*Z6u) z!O97)fsr9x7$U+lD6t_dmZcb%u<~V88Y)9S<6g?&I8bW8ff;^cwr+cA9qSS`+ zeAH@fvqu92k@17Gq8c6rS0?CQ@{+ zphOq?P8AxV1xhSd>IVnF{jj0ndwICZ$(%+^gi09^LW&f570N;cAN9*qJ*c`qm=%f@ zYQ{7>S1Z&d)`+^#+w8z#KRt;p+y!1XeE=dmACV9RXj+CY%Rcwcc*_k1nmpunEUIr4 zt1Oh=4zWVDFA&Zt5Pr~H)fKmP!~A4iNX!_Gd(>%*91IWUGh`Rxahana6#oNHmaHQX ztPJ0&6I84XM0mxi_;_jBNdyg;b1-#Iv^i5e`X+kt3&Ev8!jK5@Q>>=;Bx0RfbFn5k zwymx3hf-CAWpaRgHbmY^+;Fv@d#V^kKQg17&VUlG8y6Z%35+p4Rs4m)YDR0M@L#G02-}^K66!P4yU$D=wIAL*du7G%_%Ath@9hH zP2W)#T@-vrKgfolt8`C%8-P*GsYf=>5BfnGVJ!485~D+ySRwBU0St-ZUnMH@%=6Sp zNP`JV2sr6Yg98}VOQ4sMgb++<7IH=nW{x}6s`wyL;IadLvQN7xwNWG-=I9GnqK`%*a2>mxKe zb4(y+%F4&TRINA;fTG+v#S(ff`|{Y^6HJ1b%;z`U@u656A!KU9xm>|ho{4~FQpGh&a!89)dw@)Q4dgBEpz?|r(D^yu1($`fY`}q)WE^r)Qs1OS;%IsM&C)l@^&=^9;#M1+BYlJMM z89ufu4u3-44bDO#_;bDTJyQQ|0bLHs5C@(|kfTT%`+mnH3LFuE^!qnn z1d`~qh_^0~DL%5U9?CWO8cL(~)b7M-JKp$=xrM3qcs^;8L(yvVL!#-hXuPp*H+E79 zs}xex+#aMGb>DCrKS#t}Kr`Svp(Ju<_W|J?Mf7CJ(;O&~k0cGT^tDZt(%JCTS3bbQ z*D%riHx?47#7&tqB2whO+Gg}C%FU{*lD1E(?dc(oMYi^4{AKH6T=u?;u9U}_h5OOb_Rq4QqGS64C* zY+U@u2o1v6X{crRVxbi@2jNtwH7iNjm^k*P`|4Ya&x}5+YE|Q7`uEWI)S;M70Jys) z$#=p<6*Wh|?*|r)P+u>$00U15eXgHA?OBj05U5RRvBMQ~%V`)y5(lLs3gR!+r z%qo%aBCNE;F7PAe#XC3-iIlUPU;U^@qn0Fo3lU}b7^y$OBy%U{dZ@}5#}dW-7g)f? zg2`zy9JkMQ^L0PI+l@$$R~Y|h#9)9#W`b6Ov;+E=$rtBt`R+B(AWt}Ym`hudtf;@Q z)4%C)q-q6MFA;G$5uhqS88~c|UiFFtPNKI?>nVMe+A3!YHYbW@@4$e3rX3q>L>f%^ zk5+0JP^kOQV-QVYZ}6Dz(UY(`Hb#L9~C$S-nnv%@bEL&NL=k#v(Zf;a&LstrT# zF!XK~3yG?^!at2XvoWaoyhy<{*tfDVFH0=@!GT^mN{=C>r)#-?9DxxB?-o%R@mVPG zFxP2zJ&E9=I14upN0lu<*37v$n6cNMd42F!b~;of2a(QE$cVdqwbLKo@T^1>V|viX ztj6$VnVE)v<4=BjT^4E#RYH2n6Q5?2R6(aq`~+6YY}^O^tGCdW>+rx@+-= z>r9$`(asCfy+EGD zZAzAcEb>SsCL0GYSKS4B^v(@VdEpU-KMZ31UQWO5z^3`xu_+VVSH&0^-8tHyL&9xN^Ao$Kf3XmNDaa4HXj_8&vwT zIir#?-nf&>_o^t4g9}EcBnnfVsp@xRVd@}4+<1Mb$S2SjT3K+v%(-e3y!~M3ga%uQ z5tKh?65%a5WG|W-Q(_n@gLR43`;A{ii9UQKAUR=A2(JdSx_*;*4%bYG13pd|XvD_^ z6}3xsgmH&)gr`KFWyPCOTcV|jT2udL=?GIVUq6!%r0RD>>=cKp)Zm88wjfyKF?Sz1 zgJ959WDm~e__+j-ju=&E3_uqo?4@B|P=Y^HZqCUFq*KycD12joqerC6Z>ug3V3{VbM^#;1Jvax{)Y;ugN@<&<=*@3N9_ zk7Zo--N^^h83qT2BM#cx7SeMf+ZejFKw%kZzB}&{N@O3$V`DmAAz()2gYB{UhyXS5 zjrVsW$N5gTbb7aG)LwBgOVuoGwuqMM;-kKGX7PYf5EW>sc~!GB=<>?y-eCNosMd)@ zgQdcM?O2blsOm_MwYbj#w3e`KO*>;YRKk4`V5OaN@ez+#p}eh#?Oe4;C~L>Sfp99& z3On#`NK?Gf8-}G5 z)wQJt_FGiIjSQVHuE7QqSXEcMZOh2i(5YYP628@50<`Mw0x{pJjdJcL+i$+ZdXL%B z(-OTGHIB~+)6@D{dV}fv9T z-Nq^wV1*?CT=j}-(5M*LuKo>Sre(E!TTfkORgQ_49~CW1nPatSTcNol`W&%D`{Lpr z>Y|XZI%t$6IZhMX6O@cN3tU7u z)J)cZ4#k~2+_xw;P{8LWD|3T7y4sBv zfi!1P2jl=z>sn~@N@ZA(EhvV=)b(o4BzErrE(?gNk*^@mXAuS$Aqn$v|$&3i? zu7?pHFFI1+Nb*#t2P4Z{%?`wgi4XQn3)z%zmS%C!fP%uI%h9Ch@O?x=NBPK}x=uCP zWCWyF8NodWpMbNfFr=R8&y;H*&LSsz@K~~wkN#1%QTgLOI3qR9x?sd$xUzwT6Tm%- zQx3ivK<9hBx$`g)vXbM&`S5fZj6)>Vk^u6H~ z%Psi6(jr9!3^g8A@*N*L+{ryOWw}OFQ@I^(Q(s!XLdCk{2rp_66-2`>J`&E^fA^{3 z)tvW7g~<2Kgix(eW4Bqwm2j!EHL=!|WJ%6y4U}2J>q@-5^93c6dZxy6(FpYziP$Vc ztB`Co>c0Gh!sObaOErOr!Q2iN)yx~KS|IkO_Y{C(t8OEP8${2$V=01+jk~e!A-kbZ zU1&G=7`~6o#FpbIewXT7Bl45@5?O)?_v!{kluCECZCS3kQsrk%cvkMokg2?xSKSCL z1p!-Edb9C4QtySO=!XGv9$gAr?K+7MVea7-L_sH!uRVaVK2_2&l7$mgktLafvMMJOL#TWG&?h-LezZ0pRAW?l;?>H7oWK?GsGABr@Z%ic9tu$2x z+UcU_--q=ila_Xd2m_Fm)jW|D)=#+wvA-lfcJu#;dlUGqt~&oe_c=K?PZAQAB&>z9 zcCjTu>E3{a7Fxnm3T+8gjT8uA*-8>NZLxv2Zllo69qKshI8t{Vg{oCYr5zm|{Ygh1 zN9QMXof$1UF5@!4_vd@gz0dOm3izA<@Ac=^=HBPtbIgn}kOH&s%E%@284vaBpBzWoY)Im4b{Dm#ZHpVkc8=%D2z1VX%;N-tPUYp%Q9UH( z*|utv^`)wuB{+%n1rlf`4{^(k0j>AS)t7}WC^1C)AUl8r)n_+h-l%XETymY*vxP`u za@1c31zlvKY@lzYup{YvHmo7@n#CI}hEkdd97S9g-pT7_4x>|xmEjoz2heq`U)zhd zQU)#%N(e(@TL$kj`5&W-Q;Ne4Rd)%X1NpCV5 z6}DX_Kyw_YjuH%-MRNp)mo%)V>~A}!-C+*&#KHudk9luF{y9aBED2h)V3<)$p}%?3 zxPCMOnL#u&Y$Tmy-w#7G!=Y~sDVyCd%j$19I5Trcrw__t zXFmyc87zOIh;qn+-5Kj@?Okm zy|FjAA+S@F*KV^?_*sVBK!pXN%zHrB8Lty{ZP!^iYxI^2+#jn;>_wD#qVWODi@qNJ zxH%?IlLGga{N%HUbA@cB%>z$~sFvg#Yawe^3qAqYtepX`WKleU9G~28f@p(~3tJq+f@N=I4{;u`A(h0YoOMvU5R2Q!WphKa;wq zP0g#bU=~7Mk*`BsOHe6yMVbP*=jj%VsFZ%0Ynh2t(ij5Sq+bYEMZ1_4+@gB`I3PDh z?4h_5yA$aEzGRD+gwTr+f0tWEY1eE^kyS<|f2#8U?f4f{1>}?i3lEv9}8wO@OfjZ)RI=hL3%%HMi4x|Mj1YHml@uNI(1ND=nqzD3Gb1c3K z0y}TPCY*A4sr{5L58HWET7^es;m18o_6JMA7JRPe&YOFay`BvsnKx(2Qu`5ow21mI zd2*RIGQL()DVlxVv@KBMctqxPidi95WFQim9Vw=J&RL}Ho-IlrY9ldc4`9GdcGykD zQ^4<-T38Oq=1*>a;MokREV2_WfXru1Q$Kr_4sS8UZ$>O>BLn56JodB< z%U4+3I~S9yUIrtT4)G|tmJuj0(_LU&*@Ka4o@5oO$jxa)M5N>|YlZ5lpWcs5AuSk!vu~D`D;no@ZzjK@yMlLfAW}gaXa^dZy;Mhc zE}l=$cOAtRk_H(mGwoooXyMcV8qFjqkXx6svngSNB^MHkRYYD+w?SMi z8VKnF7_! zq1cF{hz_#4q1m|$Ip`saq^T4Y=600yc~(|LC?w63b5f*tc|d!pFL&9PCl6sMJ3C2K zMIMpxT2*9pCm>F$5k@bOf`IewcP<@8e>f9i9(TdCzC_(;wcHUIV@q31x3nn71+tuT2WXjQ(++u zDA09Q7HjSlw$jSa?qi|Cc_@9HHP{ zjB5!~tIQ8FZ7EVRkT9SCkP3P4GVw2Dr^r;2Ht>)e6Kj(=43v|IGf4ewvJ4SH4w7fD zfmJ0U&D;dU(cTq$BZ)H41&~{SY?$adGR;^-s8Mt%of1uS%B>6LR7I^rkAZGs#2s<9pxx`V*&9<`&C6;tG zrYK#UQMe!#mdrhuWas2`_ipV1jm^r>(X{Vw*wQ)3eNU{uxXCBK7@{kHUC@aJlns2Wmw31B$jABp3 z6Xv!W`hal&XJ z2ST?2E(swuG1xj%F1e6`LoEH8Z4$}sZBE5*T8v7roQEydV0yi>q&1rH zG9;}U4HHFb5Xf9m7|S-Atq$+Mc8KUk z{Oi=PohlkILhzdqQg6R$HZGKlZdt++_4+M&!(8(el%+;dj7eu5)J?GBa$I;AQSyAofUtDP$KEVxfg zX_R5=90x1kSYQph*PEwVCN%^tk>N|liAN-R5?3x)->KzqIc{1;i3z(I?4nGQoZCy*30;io9!zx{=!>x{5=m3+qEk%ROS*G|eVpaXMxjkRT0A8K=7ed2SnGKg~m0;Ilca zOjcuV0t>wHPI*cZu4PnEG%ZJo#xX0%;1oE9?Pi(x4AW$sf;dbAR^z41lo7VE@Uk zOuHe&d@v`PBU2gv5IWJABTdK-JuBIo!sar2YS8V9gdniYTN+#p>d>Xvr+KJuy2(tC)wJolr%tA8-^-Pg0C$epltbS)JG4pnaxN!PN@;-cq8p?Fpfa zi}4Il@}Iz?E}eJ7&9}}e%kyDO>-4gN&T_tW;cU)-4=F;3iN&nIMp=zM6+&mZs6ql_ zSk&Gflg+~qMjEa(o}@(*1auDw?xqYe&@|OwKYlbqk8q=uCQ^Jr5u~sv_uS*L<&EsG zRg4&;QdVCu3q)0h*gCIULWBm<8bRPMIUSktbsGxell*=wFww2IU7uCg&&`Tro#^GW zw~@nzr?{1Ps_W))FiAW$&Qe%LOuThXNp+tobFvx&mgHO)o$!*oQCVbLnbyNHjfC() zu|B4?h~7}A=A8QlOo*Ajtg=ZvvtF?kxu!oNY|I;rA%tu|gtXv{ZAK7_3zrEyGcv>j ze-ukg`j4o!xgt9@%=9<0NOU>ALPiq=-w>*%cC1B%3i60Ns94aL{Mv9rx$|rM2)r57 z{n0?o_aVhA`74ZeRruUeBoImQe&_-!JULi}P15I*o!;Oi;}T3#!vB7UIBRMMB(Wq7 z*l+XWEmOkC*Ema4g(x8k9v%FosmQ9nq2$Y4$+qX#ZQ0CvHW2?NU5ru9GL1|*J3bp7 zc&?f53Ly;UbTPGxQT2vimn4Fc-`gcw#*|=yl?zdTM+>SVnS2a;5`Un4q@gP|?I9E~ zo08~sfbggzu;b~s()L=AO6Yqq-P&M8gUim1$sM*B#wH>6Xlg(|bVu*n+@4&blQ!*; zW%HZCaY=5LrMJ8&5n5)MBP{UR;Up!fXRu4qZRc)^hE$kn+iIu{L{*vyxES$G96V}yh=%e zfJHNwBTS^tDLmgzS%_bj^Yiqd;X|FyaNxZ_Cmav`EZHJ@94Imi?v?{Z60B^FgS2@Qh{h|Q|fD>rXjTLt?< zkVVSqUrbxFel_9u;`F++bOM#+$#hR9H$;m=?m$I*YqQ+CmPYLF0K{g^yD9 zGJbNSZK+Z_Yu0QH?!b{u&el_(<% zyA+Zdh;;Xya9nll6m9pcS+>4soxGh0nuAHd0|U887Y@m$^ju@VBvf`n*=#L$u4 zfuxL%Rr(<-7bH6j=DG(@sxpFRHivTklPRPmr;#yueOCypF^0di5eY&yfrn#6yP=h{ zHufa9B;$IMwJD-&{9E#xy@B2^XAL~apwpTIw3>=MYVkQ5;nDeWeg4)(1w4YhP0%&>fwNos5Z5U_Qg`k(_l>DLku$dF?Khs4z!r_q#b zA=2PPlx-+7(jmxzdD%+D3rBlXz9eedRFgL?b89l~pmj!SrB2MVK!~PaW6VFyXpgaG zQI0En4e=?ns%JVYO_b)C3bA8oV^L>RPMNn@)FzhAWuCDyqoVk_TPK9QIEtB#*~_6J z+d-$Mi`uH^77i37X^5zaMo|`nuFJL}a&$?BlWWN7#i2B_Zkc1R6`d|?1=D@QqFK0# z>YH$~cex$jXd)4#mhZTXB$7pWPA54`5NRq5Ah#}M$-}t>(Ob)oL&M=Gc53nLGUG@l zXGX?ETDD-rku{@Rc^|n!vuzn54gO4;K;0w-hRGjLl05B+Qc&R@Zj`gXIXyenr$15C zQ8sx@i=eJNkP~-VQI_niN;;Emm1cjjGo2b*{9JQmAx`u;X>?b75!a`_(zcN z)GGOqBg|L4%&a`QZ9j4mnkj`WWqF*ph!ic2sk<|(RFN&Rzc3eHLR4VML-?hX>)E%t z7??kaA6y6bN#5J*l_z4o9lE-zd)r(&jL8aPPC~M#82yU=KT0%q3oHp(Gozy=i_P@w zXAxjr`i(|#9Er?05i*crmjN-9Wi7+sOwoL}rG>;WOM9ksqfBQe z>4}nFmH9tMr?Sh8cm^3TBwUU{VAXacC5c8fVKh<4cuE(kNOr4dL`l;EZ|u$&ve+E7(}?lTNm9D@}2|) zR{A=Kj3vuW@B)VC*6Gu0Ooym+#5fF}CR<%6h)JTg)-ipR1+rq! z(RO=ze)^o!EXOcXliNbY&@YlDm|K{+a>I$EF~RQ(M>o9Km{?Ry-FL1JCuWl?xg>$~ zmkfeu@*MzBNoo=13eL)45Mtc|A+sqAL(VBk9+HwjF&kN_IX#a&X9NN<`Qr9r&&v`f zz{8WfU}KO0Y+5CknWisL9a+KbIj$dbw11bb>6v9wlkheNZ-n~Gm68jl zS1m?ysqTwt1l|BtWEMTiLA~qoLLu%95!;Sag2BkGU?xHda69i{iSF!#n_=!qxdrWz zJPd9u&*^CPv7pzr%#W-JA~!}e(;x)1zGOt^4}uYJxH54q)lS0IBhrN^@5C%!VD7nA zbWxOAL=57)+vY8~@Zq~mb| zBn9aJM}a#z`bRhsZY3!AjKYVxM|l@nDdBLjfuhDxyD}WCfWjBs?xs?T|CyVk6#k5+h&F92QCZO z`_Bv4H(wpDuX#bZj=CaTUokga|NVk+{d%l#Pkg`P`tW@JrQy0{UbsGSWw?HSQn((9 z{jqO|&%RL>( zee2XvZcTf*{vr13opF4xi}Uc7^TYcO#Q7K=>;GBo&(O)?{e7{XH(eKgZ)uuPrGIrT z;rh$?yQ(?-zA|3t#%pK1-W9JOjMp#6YgMdgLcCrVuUq1EPrN=7ult6EcHS{8To1?V zH{vxpH$0y?JY0VpukRZXe!nk%|75%#i`RdP*Fvmkc)Yg8>$UN^B3`$}>#O7SZSnee zynZoWznA@v?SD63e-*FwBSXJN$Ln?Rx;|dt5U=l!*ME)I|A^P&qr&&o;`O?C-4?H( zIw!pUYP|kyy#6L$|2tl5M~8Bw;`Nevofoe!jo0n*`ucc%SG;~AUZ0BB@5Jjbks2Kjq5umUT4JXC*$>d@j7B`Xz$8+T^O$$;&pet zJ{+&_j@K{5>+yK~UAzt-7wVfFuM6UJWxT#JULT3qkH+g$@%rO<{bRhIGd|QeEnXML z>za6dUA%rIUcVi$$%OFTqIeUR&GqU+Rn;=C=kWWQ>Z+=j@cZBS{}8{AxT>l`a&BSZl~eV_82%(Xc$QqnU12k& zTo=!)ujjkMTe&Nwym0gR>A%9AUqIn>DSv9NVoGi|%gHpYwTJ`*S_pNTmgJ*G*8LKf=%2Wz^>$Q7sp%f=l>Q&=C9rJ^K)UipTg< zeV;0*uJR3aRkei-N4m=r@6(>tJzdr6N4t%M^Alf{x`%f6`4Or6&#K}fKXSgGly>;3 z9sZgQe{+YgO_%xM#T8uJ{owR=KXP0D_qP>4=o{Q8b{|mH{(^L^ADXuM;psu&z_m8r z;4e71+)r8Nr_T2ysbx{0yS9&a?(*anyTBOq|;&vR+AU?Xgjq2Txs`~u!y?zYE#&`KkkNU>+tEt;Z?^;rK zRfnHV9~*ky4aKo^*S#_+4ki#O} z@XgD4((2Do-2gpnr_U;*ColUS{r2gG^gyfo=sjJj`-h}Y_aD~%SCc;9dc{p9bfI#^}ze(|y0htpQ~o_o6by?8FXc=t&!PS^`ym#$-u`rJG3>2lvq zI=Jr3u6{K0nG~iZOl;xaWQZT#?nk!!LG6C@K7V04FLiIZr^wUP{WK}^>Xe22pyE(K z?4H9~fd6Fvh8bYE*D#|z`LEKG`@)m|EXSF*RLLay~|&b-MWSY{;KT9JO7MZH|zk-^!R~kaRy^()))rb z81h@@t*fK8%N@K&a0Wp9hUIVIo0fEEzpER-*0ndg;?>d9Qi~nR zJ?tlEW6*%quPXP%-MVvsDjZK;-`#W}b^l#pp6=DX=H#`m13-#%vMWrMKK%JBI((AW zySF+pNsC)^0Av!rzgP48->;5sD8i4Z4Nk`%QW>*i|E}Y-Qf4tGIs)_>|woXC%){iMVX8ZC>CzHH+-O8TH z=Cm>8$|>tNt=iCw2y8{;k13|-JL$<3d6aZll&tunrWLetik?hqZLKmN86-^p1%-Kc z>pK02XZZ31B1c9Qymh!|l-3-#&_e`$+}g~2j0d21Nygz$Nu4%xi@+w;G9sh2Ug5K> zhLpxbo7ofU#D>nd;Y*}u%nKNTx2}m_qUj2+BpxsAS#4UB>(_L}PU|V}`B&1U@SC3H zan|`y(q@;c3QkDjQ=6$%f^(?NzOXozCJQ0@^vk9x!Gme@As zm%f!!@M)oLIT@B!yv^K(V#PhH0T%9=%QjP}OkTffrUr>mqYiws0kamEenY8nuNQn$ zu1K(wan8frDxX4>r%s%p`l{S-u3!_5@Gec*3Ol>JyBY9*dda>HpQi2;lM|n~FDyxX zb+ez!U-kwCYdX?}eozVlrOd}Eqlam_!q;=H?So{`@r?;}w);9)$4*Yx!YnL2;0wb* zp)gA{lg{^rW-d+MPxi@+x!a-#?9N_oy!v)uNcSflRfX!LU4POppEP-Aw{GWQU6aZ` z2TDKb^tdixXo6v(wH_*84yIr%H>YmW30^cqG1S3>+$Yrq%Kzod6Kmhi7p{B&xsSFr)^54+kA`9Y2`7t-ZfEidBBG@*~~8`Ubtti0>xNvpne|7=gHQ}>>i z9|EiDyCjCV?>vLmONgM1EH>Fg;CIq;AYux^6xH%C3GrhJ#5C(Rd+s@AC}7 zM!Hn#{sm$WH$6V!>OVb;XR@NOa(*oZ{1 zRB&};ndGf;VYelK!$21HLSOHojkQ<#`r9eAy)}IRhDjZs!O94TnA~iVkYech+72qZ zA--D?o;C5zdg5@9rAMV6+g(|=V~^b+@cyONXF*z{_xDq4v57&@S{toC9A|64y6kw- zVpIHwopgy$P67^_>PmR%VCEg9j!}%||Drm+Aj|;po4U=#HebUF!6bFY)d}q-urX~K zN_*DhIvbfS*;u_8OMd{S-|sYFYNgAM#VY38E-U~W28sVAfOYrpI+XwPu7!E)vgv$b z&sbI_Odg3&PCI#4>X`i~-Rv-C+yEBvv~=!i_(`N6c~OaeljVf&FI0nxs!pU1yRmZ1R)% zpha`Sw7Cas5j_0si+XtQ>nPo|8GYx&WglG~EgtmUT#E}HtQ&NTnFN^U^DF}51eoNi;dKPIr| zP5u(*MZ2H}kP`M~O0BXbr*G2A^!OTG-9|z6e8Y0-6yGqJUu!{z(2ca$yJp0Pq^;f8 zFQkd$cH3ST7xeUGvGF_SB67AvF1GSuOB@!E@NL ztl`d9@86g%0+KXOzG&^v)!*lD)yflfrrq(@(cv9T_Iz5V3R! zVMDoAGfPx6$-v?SKliJay%+bdhB0WSsAuCL;b!0hDlx!q9Gd}0?-_u@mWe5`Ys2a1 zfZC5$!QKE#HnkbjD~`)BJ7n+}%QgV;bv>d4AJyt=OW1GTjBNv!B%8VVKBPESNb9lR zuVNHUC;?!s^x(lbo5e5t$!>e%TY1p{e}(d`e{n5^itDq-1Yz1p)xaBswMRGEj1TYH zXS2foy0gz;%vcMJevmHgLtUtU!c)}HqxJLkhgs6RCMtT|D&kE7Wr5nKZ%+QNBPE)6G{{SLR!FBbiNwM73Tqpyl71N0 zcBp@WxQM@^8wZ$u*PQRF08f8Wsz1N$KMP0WmfE0&4V%cNkJ!M3PKTt!+S+LOWAH25 zOhTH~>9-^DoX=`?@%tSJ*;<#+p$r`CK8+Gj05FZB8ijkZDnXq>2WNxsTij5ZYBEB| z$1c6!V9lkEW{u7iv(JlH1$aEp?LWsd-?3M9>-?arc{*Phm8z0-=urx|8`?f-9T~Xa z59;Q@d=!|8AJgUsN_2S8IF=OVPn}H}OcU3^@JE!~=BM+_dV4|AH@3C4l_9v5(sTrL z5C$V=F>#~YI@;T#yH)GqY+(p(bsh!$On0^x^7a(X-C*vIl`fRZT>=9D!BH2{tDe7 zDy3ic=Q23jGZg!kY%4XN4FW^&0x=ezaj31dDI)B&Gw0u{0G+?g>24+Hj27gq>IXQZ zm<*QT)}yDGDBQKK*3Pt8Gssd3*o#P8lw4`U2@a^LQ;p&GZ- zAq?)`RWHUzYlKi7sBi&wrZ8zeoZ|AazW!W9r*HNg=*yshPt-B+aWcZ!|2%uV-6VzQ z@2-7g;6DivYeLLT(gt6gly|r8Mf74-)(asG>+|27)aP%~XLdSoO|YJk6WHzjajx1d zLvk4cuQfQ%rI7A3aH?6)b#)Cu)t9RP#fX`Q3e0vTV}0?`d?Y4c!AUW%)ASLvDBWwk zmCf{8b=~M~dN8c7iNr>>vQEv>cW0hVl^Ui$*>`T+pEH;`Ya#!3%b)Y@pztjM(OB@_ zNKJ!8nAgBu6;Tiiz}w+}W-#`B#t&sAMJpTlZLtHq8VF?8wqd?;yT+zLNF3e@q4}my zW~A=NF9qQ>`8k4I(c6YDU%Ux;jzC^WZ!$)skUs7wP)2CG2?G5G)+qbT)(D}`Z=^GO zwAo=za`MTuGI5y2X*P|34}4_-gO<3t0_>o6MWCi`%b~Mapdh)9IE#|DchZ5UFUd50 zvC1anB25O}8R*k*(X&0U1ls>%xUzYv6$xD_NJADi^!C;*!b62rs1AJy&ukR}=KMDn z40vUBimon+&^ZG#(CpKz`Dj6)2<_?nBOEi`h2f!wJ{D9v(WlR-3#t2$s=gB58^+h} z&AVY{G>!f#KVTkDdaboZ5Jhx=?SA4R-`FQR&2*~)0cDttW&~^p$g<5}&D0c7RcSKe z5yc&gM;yX?G4m6#9ZqZaqc9bw>+K1wuM~L?gjNHQV^)r3bjl7u=e!)6iW52`?L|Kw)M2zIAd*f~hkRRGa zQ-j-PQ0F@95O4lh)nU^qNxl$|Tj$=o`2?*B1~BUkwC$CifLo}NtwCKY&Qyme?}u51 zzHycxG$+&=I={En`GZ#W0q+e>7B#uk^k`3dU^xTovjH_RhQYr0Lf>@53|_89f2wXD ziOY9D1Z!l_CJhK3yMH&kdztR(kuFVkU-_pD=jugz45(rl>AvNq2Cq6*gZr}ae|UF4 zB1I>5-P)8gYo5QF@{1%4zV2+M)`6s;P>5n}!38z4#3AZAqyT6sl->yE)RQm24qto!Rl z;*{rGCDi%ZOCaDa@!b;(^=^UnEBR2DxXo8tU&EUR1lP*?x{_u!2_QjEI<=KV0bdzqN*Mmx4JendqZ2f z{xLt`ZTz08jte0R5aX9E*p4Y7rtFucr_v*+fcgX`6(0CaIj%KcoQ*7)(c(O4j8Ziw z@<1;n+zyX*%r_R3-qat6?9_~Sy)Ty7ZzZZhN}{zF2%WpR>_+t+)$6#xqZ)j=7NfxZ zz^ETX!)J+`ZXI)<#Qngrs~c@sOI5%!BHFaGAnfGlHn!z@FwLk{oVtI+5yI$)`@n82 z6Ka}g#vlgTNaA1^W31$%jjhO~_S&hFp(IjYT*y_~I*!g1H?Fha0`#9|rtZ5{$2D^( z_$v16uF8p99q9JgH=J_f0^R;tQ#NsC)C&76YS$o}OcT6+oW#TpJRu?5t?enz+@gHu zY{V{|8n%rM*%TRNkdO@@kTzYN+uRyvP=7bwu3jWILhG*$%hX9ToTR-J&i*dsR98 zP4?3!*7RR?XKT>aWos~mHTc<`Jvne|c=nBHp97Za%z%5G&Aa_!0M@3v{cMDVK%mdC zUTlbGs$fu?|p+Y-bq@x~s$1 zpp7-yduOZd1A6`cZXaBVB_m93bKC{O(_gKe+qet<;bo`T1wG!k+2nq*CEEq3n%n~Z zR2Q%Z3itZzUSH@=ABHYA9Tm>$m7-aM_n@)o14QtCX|Rs)*WTAQRtEczy-btA6hleW zQUu5$`}D~EWmdvjFC0Xb2~^z}C}JE)n}a#&^E+0XDtBNNR>jTxsl z=-`v3jBK$uCP6|*38P9toJgJYv{Ow1i6t%@?wOPj*<3W_6SVVeW&kv(e%lm`#Uad@ z;_-5gGvgGI+Wot|RVGNx&89&telQ(WoXTUjt0*lKD2_!`m8pBDvn45;6Fu*bvZ1c1 ztG`DTFLZtPbig!8cdeFY22^JT6=MUb^WoL)Hf#Na)IQ^nemM$q&+A~xF~Vi~L<}@d z@x^@EYP7o%4#i>fViW**@p50><45kMRYVZ+2vT^dF6lf2PgmQQ96~H&s0+kri=%s} z&~r!+K7P+Wc#HJ>ze+Z{G% z$IClA(p2`1eLeYnx0ob8zReFoi7$f^%{KdKr8$&hH*0lf#Zom>x~a{dvy2ieVyDaJ zuFc@fzCHykY40B)9XU2y)Q6 z;SfA83lld#0|UGT;c;^?W|S>VKVWdN^*$id6{@D#CXTMO3i3KSM++&ZZ9(}=IA+vg z@7|rr9ijF4f#{Jnrvai9C;`IGvr%10)n<=-O7l;>el$*78ni7)C~3Ve`$$TZh6R3D z`52xbnwrgBYwB`8W*(#HH5G|Vw@DYDxQAB?fpL?o?5P`w!kwX7CZ(FxEl%82P%}tI zQnAXm+ZFs3{5AIVQ5D;?6JPPuJ8Yz`HH=^x5acR zUPrLx?8Fz)A1URp%lbtf`^$Vi@a_35svmsOfL*gm%QQ1HU|=R1G%5#$1?CmPK>l@1 zk{(XoM+(BX5yfVJQ4Z;!z2h_s{l#)fZ#HvMX}>%!I2;QcHZ1hxMCSIIpOJuDaHpvV zpcyRe1Nv|+!>@`>J6L!Dw2Eptb$`4&feHl3pvorTcp>QGR)P_NY@SK(d!)^hf@Q6# zwX~&7TLZda{4!88>{W-UOnSKt{=&wQ=M%LZrpPa2TYK;qW_O4%1WjJp9et_$+ug}9 zztGl{U4z2q6qvTf55EC5&`(#l`Qh%-QDXPz`_+6S*!uU?r(l{gr1qAaY}qnM%W^ctODs(zI0D^cH5 zfyT3^1C76|1dSJH%4L!>9H8!G3(!)IDvXxA&=0?bjx3L~WMK{_TJL_n7d`~RYJS(M z<3j1~!Mo3dzW(-f=<93GkG@(APmYY!Zwr*8FLdA8gf|=IY1sDXp|3Gv`la4=D9jm+ z26H={G^Pyaz66&MaK{v1{jjOb08QRB8;@K!-;WaMu=VS3KUxJeM;94*3**7qPC-$Q z3JOIJ3ZvoD->R8)sSJ)7Bs+yeFtBK+3012?l#w)YMhwJvpQ{3$xS>=g&~x8DHz=b^ zsum<{SUXLR25V4N?4f0v{x_Pw67EtvJn13Mq}+M+1QkX`^6f-=!G-nv)1Q$%gn;mw zHP(wSj_yj$h6lrVcfZfDZ|@{Bu)G4%uP7%2`xq9EWk$2HY@U!NMW4UrbQK^a=1#%{cH^HZS@?rpm`}kL^dKq*&g>HQk!q7h1$j)Of&<}v zCdOaCz;4FRxwiFL*{{C>?Bm{#LT6Q<-;%Ys=*y{hdXeC{02WLemN2j zylkipx5d<*Afzg<5Ilx!iOc|5MbxwR?mj=s{h@#!iTf_<{8a$~DRHm6n;L&nIAmjA zp7&{Bhp(9ytGOQp*;H&VBPLDe>*6p6BAoZ`SM0FnhB$do#k`paxFdh_2MF;4OS*#4(Q-1O>7FF% z!#o+#v-zX<+v#N(DT?wfq4enR^L9ZGYG>DJn#&{iU}j^!C8>vf=lw))UI7xj5XqVO zIzo}EiU;UqV+V=^LapwRdyh~gge;JH9+!!X0o*R?^-bNpnC~yLx!aRqedqHfmIy9RV^HZNAS#0QNh$i|OrPN6u- zl#CNOagQm=&sep4J={*@#eRRLZ;V((MVz}Y^c(c~ySq&*Yt+oPc!M9g6Z|RiXpVmb z`7k{`IheYCDVV`1B6cYrC!P>`u#W|8IDReS+hFb0!WTxGek{TN#@ct=&&GMraL@ZB zS88$5_Dv3Ms_o`@0ZbJFckV~@_~Bqj{8T6NknW4=1f<%#gqS3!jNzM#@`=MXI@~Qm z(+gq6>0hN(UvM)Huv$oOM~p~N9-qs=@$5?PqRbQUwsO8HoC~)}D}SuA(Z2@%83UTe zk0)920ZK-5_am$_A4&_wiV`Ea#PUu=7;HZ5G(k{0#t;~~Usksos>Gd%D^HZwgu-zq? zI&6Z&-Dc^4w)w&cKXhnt6w>&g3ZS^@001CObb$l~hfU)Q2XT=eSkL}Gn>=+Q)cl|p zA>7)WU#u>$L(EhAUaEdtQ!Cn>ccljSv0{CAVSHAa6K(byX$v8#HRy%IOn>uvX1Xu^ zN~~*soWjTB3@wZ^_e`9*?D^x7`(0wxEt@THPu($14Bm>vTyL9rtcCfsX!`E6X&E-d zH%4>{dtB@~aYEeR-W44^+0OmtM8ikwe)JBKOORn7JX>u>sLrl#_1UQ8? z=Fja&_%b+F^&4>ocSb4@_9YnbE#Q}Gxi-jG74ODlM}6I!fFpB#hYhVBYAaaN#^&L^ zrpf-YS0C4nG4!e1v%DSnJIU=1{DU~X7Y7At0Gb}*@;ZGbDqYi&KH;l}8JJBXWRKl( z)qV=Bi}eH83bd+LQ92`aGzuc@N�CE@<(i8Eh$}LaVKCjl6W1N}F?c>TWw>6IuDE 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 z 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 Date: Mon, 18 Aug 2025 10:44:52 -0700 Subject: [PATCH 036/147] modify tests --- .../amd_smi/tests/amdsmi_example.cpp | 2 +- src/components/amd_smi/tests/gemm.cpp | 300 ++++-------------- 2 files changed, 59 insertions(+), 243 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_example.cpp b/src/components/amd_smi/tests/amdsmi_example.cpp index 2380c54cf..71d2c1cc5 100644 --- a/src/components/amd_smi/tests/amdsmi_example.cpp +++ b/src/components/amd_smi/tests/amdsmi_example.cpp @@ -60,7 +60,7 @@ int main(int argc, char **argv) { // e.g., "rocm_smi:::power_average:device=0" (Average GPU Power) // e.g., "rocm_smi:::temp_rx_soc:device=0" (GPU Temperature) // Check availability with `papi_avail` or `papi_native_avail` utilities. - const char *eventName = "amd_smi:::temp_current:device=0:sensor=0"; // Example: Total Instructions Executed + const char *eventName = "amd_smi:::temp_current:device=0:sensor=1"; // Example: Total Instructions Executed printf("Attempting to add event: %s\n", eventName); retval = PAPI_add_named_event(EventSet, eventName); diff --git a/src/components/amd_smi/tests/gemm.cpp b/src/components/amd_smi/tests/gemm.cpp index ea9a9e29d..e29cb2f93 100644 --- a/src/components/amd_smi/tests/gemm.cpp +++ b/src/components/amd_smi/tests/gemm.cpp @@ -2,22 +2,17 @@ #include #include "papi.h" #include "hip/hip_runtime.h" -//#include // No longer needed since we use a custom kernel -#include // For usleep() -#include // For gettimeofday() -#include // For pthreads +#include +#include +#include -#define M_DIM 7296 //14592 -#define K_DIM 14592//65536 -#define N_DIM 7296 //14592 //14592 +#define M_DIM 7296 +#define K_DIM 14592 +#define N_DIM 7296 -// Number of streams to use for concurrent execution #define NUM_STREAMS 1 - -// Number of iterations to run in each stream #define ITERATIONS_PER_STREAM 1 - #define HIP_CHECK(cmd) do { \ hipError_t e = cmd; \ if (e != hipSuccess) { \ @@ -26,7 +21,6 @@ } \ } while(0) -// For cleanup functions, you might prefer not to exit immediately #define HIP_CHECK_CLEANUP(cmd) do { \ hipError_t e = cmd; \ if (e != hipSuccess) { \ @@ -34,23 +28,19 @@ } \ } while(0) -// Global flag to signal the monitor thread to stop. volatile int stop_monitor = 0; -// Structure to pass parameters to the monitoring thread. struct monitor_params { int EventSet; FILE *csvFile; struct timeval start_time; }; -// Monitor thread that periodically reads PAPI counters and logs them. void *monitor_events(void *args) { struct monitor_params *params = (struct monitor_params *)args; int statusFlag; long long values[5]; - // Continue monitoring until stop_monitor is set. while (!stop_monitor) { statusFlag = PAPI_read(params->EventSet, values); if (statusFlag != PAPI_OK) { @@ -63,88 +53,29 @@ void *monitor_events(void *args) { double elapsed = (current_time.tv_sec - params->start_time.tv_sec) + (current_time.tv_usec - params->start_time.tv_usec) / 1e6; - - int gpu1_power = -1; // Default to -1 (error/unavailable) - FILE *fp = popen("amd-smi metric -g 1 -p --csv", "r"); // Use specific command - if (fp != NULL) { - char buffer[128]; // Sufficient buffer for the expected output - int header_skipped = 0; - int data_parsed = 0; - - while (fgets(buffer, sizeof(buffer), fp) != NULL) { - // Skip the header line (contains "gpu") - if (!header_skipped && strstr(buffer, "gpu")) { - header_skipped = 1; - continue; - } - // Parse the data line (after header) - if (header_skipped) { - int gpu_id_read; - // Expect format like "1,83,..." - parse first two ints - if (sscanf(buffer, "%d,%d", &gpu_id_read, &gpu1_power) == 2) { - data_parsed = 1; // Flag success - break; // Got the data, no need to read further - } else { - // Failed to parse data line, treat as error for this sample - gpu1_power = -1; - break; - } - } - } - - // Check if data was actually parsed after skipping header - if (header_skipped && !data_parsed) { - gpu1_power = -1; // Header found, but data parsing failed/missing - } else if (!header_skipped) { - gpu1_power = -1; // Header wasn't even found - } - - - int status = pclose(fp); - // If command failed execution, ensure power is marked as error - if (status == -1 || (WIFEXITED(status) && WEXITSTATUS(status) != 0)) { - if (gpu1_power != -1) { // Only print warning if we previously thought we succeeded - // Optional: fprintf(stderr, "Warning: amd-smi command failed, but power value was parsed earlier.\n"); - } - gpu1_power = -1; - } - } else { - perror("Failed to run amd-smi"); // popen failed itself - // gpu1_power remains -1 - } - - // Write the PAPI values and the GPU 1 power value to the CSV file. - fprintf(params->csvFile, "%.6f,%lld,%lld,%lld,%lld,%lld,%d\n", - elapsed, values[0], values[1], values[2], values[3], values[4], gpu1_power); + fprintf(params->csvFile, "%.6f,%lld,%lld,%lld,%lld,%lld\n", + elapsed, values[0], values[1], values[2], values[3], values[4]); fflush(params->csvFile); - // Also print to stdout. fprintf(stdout, - "Time: %.6f sec -> event1: %lld, event2: %lld, event3: %lld, event4: %lld, event5: %lld, GPU1_POWER: %d\n", - elapsed, values[0], values[1], values[2], values[3], values[4], gpu1_power); + "Time: %.6f sec -> event1: %lld, event2: %lld, event3: %lld, event4: %lld, event5: %lld\n", + elapsed, values[0], values[1], values[2], values[3], values[4]); - usleep(300000); // Sleep for 0.5 seconds. + usleep(300000); } - return NULL; + return NULL; } - -// Custom DGEMM kernel using a simple row-major implementation. __global__ void dgemm_kernel(const double *A, const double *B, double *C, int M, int N, int K, double alpha, double beta) { - // Compute the row and column index of the C element. int row = blockIdx.y * blockDim.y + threadIdx.y; int col = blockIdx.x * blockDim.x + threadIdx.x; if (row < M && col < N) { double sum = 0.0; - // Compute the dot product of row of A and column of B. for (int k = 0; k < K; k++) { sum += A[row * K + k] * B[k * N + col]; - //sum += sin(A[row * K + k] * B[k * N + col]) + cos(A[row * K + k] * B[k * N + col]); - } - // Scale the result and add the scaled C element. C[row * N + col] = alpha * sum + beta * C[row * N + col]; } } @@ -153,62 +84,42 @@ int main(int argc, char *argv[]) { int statusFlag; int EventSet = PAPI_NULL; - /* Initialize PAPI. */ statusFlag = PAPI_library_init(PAPI_VER_CURRENT); if (statusFlag != PAPI_VER_CURRENT) { fprintf(stderr, "PAPI shared library version error: %s\n", PAPI_strerror(statusFlag)); return -1; } - /* Create event set. */ statusFlag = PAPI_create_eventset(&EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI create eventset: %s\n", PAPI_strerror(statusFlag)); return -1; - } + } - /* Add GPU events to the event set. */ - const char *event1 = "amd_smi:::temp_current:device=0:sensor=0"; + const char *event1 = "amd_smi:::mem_total_VRAM:device=0"; const char *event2 = "amd_smi:::temp_current:device=0:sensor=1"; const char *event3 = "amd_smi:::temp_current:device=0:sensor=2"; - const char *event4 = "amd_smi:::temp_current:device=0:sensor=3"; - const char *event5 = "amd_smi:::power_average:device=0"; // New event + const char *event4 = "amd_smi:::clk_freq_current:device=0"; + const char *event5 = "amd_smi:::power_average:device=0"; statusFlag = PAPI_add_named_event(EventSet, event1); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI add named event 1: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_add_named_event(EventSet, event2); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI add named event 2: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_add_named_event(EventSet, event3); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI add named event 3: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_add_named_event(EventSet, event4); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI add named event 4: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_add_named_event(EventSet, event5); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI add named event 5: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; - /* Set HIP device properties to optimize for MI300 */ HIP_CHECK(hipSetDevice(1)); hipDeviceProp_t deviceProp; - HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); + HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); printf("Device Name: %s\n", deviceProp.name); printf("Compute Units: %d\n", deviceProp.multiProcessorCount); printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); - - /* Allocate host memory for matrices A, B, and C with page-locked memory for faster transfers */ + size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); @@ -217,195 +128,100 @@ int main(int argc, char *argv[]) { HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); - + if (!h_A || !h_B || !h_C) { fprintf(stderr, "Host memory allocation failed.\n"); - if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); - if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); - if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); + if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); + if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); + if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); return -1; } - /* Initialize host matrices. */ - for (int i = 0; i < M_DIM * K_DIM; i++) { - h_A[i] = (double)(i % 100); - } - for (int i = 0; i < K_DIM * N_DIM; i++) { - h_B[i] = (double)(i % 100); - } - for (int i = 0; i < M_DIM * N_DIM; i++) { - h_C[i] = 0.0; - } + for (int i = 0; i < M_DIM * K_DIM; i++) h_A[i] = (double)(i % 100); + for (int i = 0; i < K_DIM * N_DIM; i++) h_B[i] = (double)(i % 100); + for (int i = 0; i < M_DIM * N_DIM; i++) h_C[i] = 0.0; - /* Allocate device memory. */ double *d_A[NUM_STREAMS], *d_B[NUM_STREAMS], *d_C[NUM_STREAMS]; - hipError_t hipStatus; - for (int s = 0; s < NUM_STREAMS; s++) { - hipStatus = hipMalloc((void**)&d_A[s], size_A); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMalloc d_A[%d] failed.\n", s); - return -1; - } - hipStatus = hipMalloc((void**)&d_B[s], size_B); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMalloc d_B[%d] failed.\n", s); - return -1; - } - hipStatus = hipMalloc((void**)&d_C[s], size_C); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMalloc d_C[%d] failed.\n", s); - return -1; - } + HIP_CHECK(hipMalloc((void**)&d_A[s], size_A)); + HIP_CHECK(hipMalloc((void**)&d_B[s], size_B)); + HIP_CHECK(hipMalloc((void**)&d_C[s], size_C)); } - /* Create multiple streams for concurrent execution */ hipStream_t streams[NUM_STREAMS]; hipEvent_t events[NUM_STREAMS]; - for (int s = 0; s < NUM_STREAMS; s++) { - hipStatus = hipStreamCreateWithFlags(&streams[s], hipStreamNonBlocking); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipStreamCreate failed for stream %d.\n", s); - return -1; - } - - hipStatus = hipEventCreate(&events[s]); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipEventCreate failed for event %d.\n", s); - return -1; - } + HIP_CHECK(hipStreamCreateWithFlags(&streams[s], hipStreamNonBlocking)); + HIP_CHECK(hipEventCreate(&events[s])); } - /* Copy host matrices to device memory in parallel across streams */ for (int s = 0; s < NUM_STREAMS; s++) { - hipStatus = hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s]); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMemcpyAsync d_A[%d] failed.\n", s); - return -1; - } - hipStatus = hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s]); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMemcpyAsync d_B[%d] failed.\n", s); - return -1; - } - hipStatus = hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s]); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMemcpyAsync d_C[%d] failed.\n", s); - return -1; - } + HIP_CHECK(hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s])); + HIP_CHECK(hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s])); + HIP_CHECK(hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s])); } - /* Open CSV file for recording data and write header. */ FILE *csvFile = fopen("test.csv", "w"); if (!csvFile) { fprintf(stderr, "Failed to open CSV file for writing.\n"); return -1; } - fprintf(csvFile, "timestamp,%s,%s,%s,%s,%s,%s\n", - event1, event2, event3, event4, event5, "power"); + fprintf(csvFile, "timestamp,%s,%s,%s,%s,%s\n", + event1, event2, event3, event4, event5); - /* Start PAPI counters to monitor GPU metrics. */ statusFlag = PAPI_start(EventSet); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI start: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; - /* Start the monitoring thread immediately after PAPI_start */ pthread_t monitor_thread; struct monitor_params params; params.EventSet = EventSet; params.csvFile = csvFile; - gettimeofday(¶ms.start_time, NULL); // Record the start time - + gettimeofday(¶ms.start_time, NULL); statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); - if (statusFlag != 0) { - fprintf(stderr, "pthread_create failed.\n"); - return -1; - } + if (statusFlag != 0) return -1; - /* Wait for initial copies to complete */ - for (int s = 0; s < NUM_STREAMS; s++) { - HIP_CHECK(hipStreamSynchronize(streams[s])); - } + for (int s = 0; s < NUM_STREAMS; s++) HIP_CHECK(hipStreamSynchronize(streams[s])); - /* GEMM parameters */ double alpha = 0.75; double beta = 0.5; - - // Define grid and block dimensions for the kernel launch. + dim3 blockDim(32, 32); - dim3 gridDim((N_DIM + blockDim.x - 1) / (blockDim.x), - (M_DIM + blockDim.y - 1) / (blockDim.y)); + dim3 gridDim((N_DIM + blockDim.x - 1) / blockDim.x, + (M_DIM + blockDim.y - 1) / blockDim.y); - /* Kernel execution loop to keep the GPU busy */ for (int iter = 0; iter < ITERATIONS_PER_STREAM; iter++) { for (int s = 0; s < NUM_STREAMS; s++) { - // Launch the custom DGEMM kernel on stream 's' hipLaunchKernelGGL(dgemm_kernel, gridDim, blockDim, 0, streams[s], d_A[s], d_B[s], d_C[s], M_DIM, N_DIM, K_DIM, alpha, beta); - - // Record event but don't synchronize. HIP_CHECK(hipEventRecord(events[s], streams[s])); - HIP_CHECK(hipStreamSynchronize(streams[s])); usleep(3000000); } } - - /* Wait for all streams to complete */ - /*for (int s = 0; s < NUM_STREAMS; s++) { - - }*/ - - //usleep(3000000); - - /* - hipStatus = hipMemcpyAsync(h_C, d_C[0], size_C, hipMemcpyDeviceToHost, streams[0]); - if (hipStatus != hipSuccess) { - fprintf(stderr, "hipMemcpy h_C failed.\n"); - return -1; - }*/ - - //hipStreamSynchronize(streams[0]); - /* Signal the monitor thread to stop and wait for it to finish. */ stop_monitor = 1; pthread_join(monitor_thread, NULL); - /* Cleanup resources. */ fclose(csvFile); - for (int s = 0; s < NUM_STREAMS; s++) { HIP_CHECK_CLEANUP(hipEventDestroy(events[s])); HIP_CHECK_CLEANUP(hipStreamDestroy(streams[s])); - if (d_A[s]) HIP_CHECK_CLEANUP(hipFree(d_A[s])); // Check if pointer is non-null before freeing - if (d_B[s]) HIP_CHECK_CLEANUP(hipFree(d_B[s])); - if (d_C[s]) HIP_CHECK_CLEANUP(hipFree(d_C[s])); + HIP_CHECK_CLEANUP(hipFree(d_A[s])); + HIP_CHECK_CLEANUP(hipFree(d_B[s])); + HIP_CHECK_CLEANUP(hipFree(d_C[s])); } - - if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); // Check if pointer is non-null - if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); - if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); + + HIP_CHECK_CLEANUP(hipHostFree(h_A)); + HIP_CHECK_CLEANUP(hipHostFree(h_B)); + HIP_CHECK_CLEANUP(hipHostFree(h_C)); statusFlag = PAPI_stop(EventSet, NULL); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI stop: %s\n", PAPI_strerror(statusFlag)); - return -1; - } - + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_cleanup_eventset(EventSet); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI cleanup eventset: %s\n", PAPI_strerror(statusFlag)); - return -1; - } + if (statusFlag != PAPI_OK) return -1; statusFlag = PAPI_destroy_eventset(&EventSet); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI destroy eventset: %s\n", PAPI_strerror(statusFlag)); - return -1; - } - + if (statusFlag != PAPI_OK) return -1; + return 0; } From 275248c78d39d206d3710108b5c61bed1439e163 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 18 Aug 2025 21:08:42 -0700 Subject: [PATCH 037/147] fix enviormental variables --- src/components/amd_smi/Rules.amd_smi | 12 ++++++------ src/configure.in | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 0dbbdff55..aea77c01a 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -3,7 +3,7 @@ # There are four other environment variables that must be exported # for runtime operation; see the README file. -PAPI_AMDMSMI_ROOT ?= /opt/rocm +PAPI_AMDSMI_ROOT ?= /opt/rocm # There is one library used by the AMD_SMI component: libamd_smi64.so # By default, the software tries to find this in system paths, including @@ -17,7 +17,7 @@ PAPI_AMDMSMI_ROOT ?= /opt/rocm # This allows users to overcome non-standard ROCM installs or specify # specific version of the libamd_smi64.so library. -# PAPI_AMDMSMI_ROOT is used at both at compile time and run time. +# PAPI_AMDSMI_ROOT is used at both at compile time and run time. # There are many ways to cause this path to be known. Spack is a package # manager used on supercomputers, Linux and MacOS. If Spack is aware of ROCM, @@ -84,10 +84,10 @@ COMPOBJS += linux-amd-smi.o \ # Where to find amd_smi.h varied in early ROCM releases. If it changes again, # for backward compatibility add *more* -I paths, do not just replace this one. -CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/../include/amd_smi -CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/../include -CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/include/amd_smi -CFLAGS += -I$(PAPI_AMDMSMI_ROOT)/include +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include/amd_smi +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include CFLAGS += -g LDFLAGS += $(LDL) -g diff --git a/src/configure.in b/src/configure.in index 04d1eedbe..ce7f86844 100644 --- a/src/configure.in +++ b/src/configure.in @@ -2001,6 +2001,10 @@ for comp in $components; do if test "x`find $PAPI_ROCMSMI_ROOT -name "rocm_smi.h"`" != "x" ; then CFLAGS="$CFLAGS -DHAVE_ROCM_SMI" fi + + if test "x`find $PAPI_AMDMSMI_ROOT -name "amdsmi.h"`" != "x" ; then + CFLAGS="$CFLAGS -DHAVE_AMD_SMI" + fi fi done From 028437573ad49ca0014f59700f41660681c87576 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 19 Aug 2025 14:02:54 +0000 Subject: [PATCH 038/147] use papi_strdup --- src/components/amd_smi/htable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index f42ed6eec..daca6d050 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -325,7 +325,7 @@ create_table_entry(const char *key, void *val, struct hash_table_entry **entry) if (*entry == NULL) { return HTABLE_ENOMEM; } - (*entry)->key = strdup(key); + (*entry)->key = papi_strdup(key); (*entry)->val = val; (*entry)->next = NULL; From 4cf48bc8d9376b81563a74c95d834020b174357d Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 25 Aug 2025 18:53:47 -0700 Subject: [PATCH 039/147] adding more functions --- src/components/amd_smi/amds.c | 663 +++++++++++++++++++++++++++++++++- 1 file changed, 655 insertions(+), 8 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ab8ec9ee3..2c8de694c 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -7,6 +7,7 @@ #include "papi_memory.h" #include "amds.h" #include "htable.h" +#define MAX_EVENTS_PER_DEVICE 1024 #define AMDSMI_DISABLE_ESMI unsigned int _amd_smi_lock; @@ -37,6 +38,28 @@ static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_ static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); /* New AMD SMI function pointers */ +/* Additional read-only AMD SMI function pointers */ +static amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); +static amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); +static amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); +static amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); +static amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); +static amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); +static amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); +static amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); +static amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); +static amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); +static amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); +static amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); +static amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, uint32_t *); + static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); @@ -156,6 +179,35 @@ static int access_amdsmi_fan_speed_max(int mode, void *arg); static int access_amdsmi_pci_bandwidth(int mode, void *arg); static int access_amdsmi_energy_count(int mode, void *arg); static int access_amdsmi_power_profile_status(int mode, void *arg); +static uint64_t _str_to_u64_hash(const char *s); +static int access_amdsmi_uuid_hash(int mode, void *arg); +static int access_amdsmi_gpu_string_hash(int mode, void *arg); +static int access_amdsmi_enumeration_info(int mode, void *arg); +static int access_amdsmi_asic_info(int mode, void *arg); +static int access_amdsmi_link_metrics(int mode, void *arg); +static int access_amdsmi_process_count(int mode, void *arg); +static int access_amdsmi_ecc_total(int mode, void *arg); +static int access_amdsmi_ecc_enabled_mask(int mode, void *arg); +static int access_amdsmi_compute_partition_hash(int mode, void *arg); +static int access_amdsmi_memory_partition_hash(int mode, void *arg); +static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); +static int access_amdsmi_lib_version(int mode, void *arg); + + +/* Prototypes for added GPU/query accessors (outside AMDSMI_DISABLE_ESMI guard) */ +static uint64_t _str_to_u64_hash(const char *s); +static int access_amdsmi_uuid_hash(int mode, void *arg); +static int access_amdsmi_gpu_string_hash(int mode, void *arg); +static int access_amdsmi_enumeration_info(int mode, void *arg); +static int access_amdsmi_asic_info(int mode, void *arg); +static int access_amdsmi_link_metrics(int mode, void *arg); +static int access_amdsmi_process_count(int mode, void *arg); +static int access_amdsmi_ecc_total(int mode, void *arg); +static int access_amdsmi_ecc_enabled_mask(int mode, void *arg); +static int access_amdsmi_compute_partition_hash(int mode, void *arg); +static int access_amdsmi_memory_partition_hash(int mode, void *arg); +static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); +static int access_amdsmi_lib_version(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI static int access_amdsmi_cpu_socket_power(int mode, void *arg); static int access_amdsmi_cpu_socket_energy(int mode, void *arg); @@ -236,6 +288,28 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); + /* Additional read-only queries */ + amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); + amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); + amdsmi_get_gpu_asic_info_p = sym("amdsmi_get_gpu_asic_info", NULL); + amdsmi_get_gpu_board_info_p = sym("amdsmi_get_gpu_board_info", NULL); + amdsmi_get_fw_info_p = sym("amdsmi_get_fw_info", NULL); + amdsmi_get_gpu_vbios_info_p = sym("amdsmi_get_gpu_vbios_info", NULL); + amdsmi_get_gpu_device_uuid_p = sym("amdsmi_get_gpu_device_uuid", NULL); + amdsmi_get_gpu_enumeration_info_p = sym("amdsmi_get_gpu_enumeration_info", NULL); + amdsmi_get_gpu_vendor_name_p = sym("amdsmi_get_gpu_vendor_name", NULL); + amdsmi_get_gpu_vram_vendor_p = sym("amdsmi_get_gpu_vram_vendor", NULL); + amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); + amdsmi_get_link_metrics_p = sym("amdsmi_get_link_metrics", NULL); + amdsmi_get_gpu_process_list_p = sym("amdsmi_get_gpu_process_list", NULL); + amdsmi_get_gpu_ecc_enabled_p = sym("amdsmi_get_gpu_ecc_enabled", NULL); + amdsmi_get_gpu_total_ecc_count_p = sym("amdsmi_get_gpu_total_ecc_count", NULL); + amdsmi_get_gpu_ecc_count_p = sym("amdsmi_get_gpu_ecc_count", NULL); + amdsmi_get_gpu_ecc_status_p = sym("amdsmi_get_gpu_ecc_status", NULL); + amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); + amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); + amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); + #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); @@ -729,7 +803,7 @@ static int init_event_table(void) { return PAPI_OK; } // Keep original allocation approach - ntv_table.events = (native_event_t *) papi_calloc(512 * device_count, sizeof(native_event_t)); + ntv_table.events = (native_event_t *) papi_calloc(MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); if (!ntv_table.events) { return PAPI_ENOMEM; } @@ -770,7 +844,7 @@ static int init_event_table(void) { // Register metrics for this working sensor, testing each metric individually for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; // Too many events } // Test this specific metric on this specific sensor @@ -815,7 +889,7 @@ static int init_event_table(void) { int64_t dummy_rpm; if (amdsmi_get_gpu_fan_rpms_p && amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), @@ -846,7 +920,7 @@ static int init_event_table(void) { int64_t dummy_speed; if (amdsmi_get_gpu_fan_speed_p && amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), @@ -877,7 +951,7 @@ static int init_event_table(void) { int64_t dummy_max; if (amdsmi_get_gpu_fan_speed_max_p && amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), @@ -915,7 +989,7 @@ static int init_event_table(void) { uint64_t dummy_total; if (amdsmi_get_total_memory_p && amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), @@ -946,7 +1020,7 @@ static int init_event_table(void) { uint64_t dummy_usage; if (amdsmi_get_memory_usage_p && amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { - if (idx >= 512 * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), @@ -1907,10 +1981,583 @@ static int init_event_table(void) { } } #endif - // Cleanup - no device capabilities cache to free + + /* -------- Additional GPU discovery & version info (read-only) -------- */ + /* Library version (global) */ + if (amdsmi_get_lib_version_p) { + amdsmi_version_t vinfo; + if (amdsmi_get_lib_version_p(&vinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "lib_version_major"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); + native_event_t *ev_lmaj = &ntv_table.events[idx]; + ev_lmaj->id=idx; ev_lmaj->name=strdup(name_buf); ev_lmaj->descr=strdup(descr_buf); + ev_lmaj->device = -1; ev_lmaj->value=0; ev_lmaj->mode=PAPI_MODE_READ; + ev_lmaj->variant = 0; ev_lmaj->subvariant = 0; ev_lmaj->open_func=open_simple; + ev_lmaj->close_func=close_simple; ev_lmaj->start_func=start_simple; ev_lmaj->stop_func=stop_simple; + ev_lmaj->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmaj->name, ev_lmaj); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); + native_event_t *ev_lmin = &ntv_table.events[idx]; + ev_lmin->id=idx; ev_lmin->name=strdup(name_buf); ev_lmin->descr=strdup(descr_buf); + ev_lmin->device = -1; ev_lmin->value=0; ev_lmin->mode=PAPI_MODE_READ; + ev_lmin->variant = 1; ev_lmin->subvariant = 0; ev_lmin->open_func=open_simple; + ev_lmin->close_func=close_simple; ev_lmin->start_func=start_simple; ev_lmin->stop_func=stop_simple; + ev_lmin->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmin->name, ev_lmin); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "lib_version_release"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); + native_event_t *ev_lrel = &ntv_table.events[idx]; + ev_lrel->id=idx; ev_lrel->name=strdup(name_buf); ev_lrel->descr=strdup(descr_buf); + ev_lrel->device = -1; ev_lrel->value=0; ev_lrel->mode=PAPI_MODE_READ; + ev_lrel->variant = 2; ev_lrel->subvariant = 0; ev_lrel->open_func=open_simple; + ev_lrel->close_func=close_simple; ev_lrel->start_func=start_simple; ev_lrel->stop_func=stop_simple; + ev_lrel->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lrel->name, ev_lrel); idx++; + } + } + for (int d = 0; d < gpu_count; ++d) { + if (!device_handles || !device_handles[d]) continue; + /* Device UUID (hash) */ + if (amdsmi_get_gpu_device_uuid_p) { + unsigned int uuid_len = 0; + amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); + /* Some builds require preflight to get length; we just attempt a fixed buffer */ + char uuid_buf[128]; + uuid_len = sizeof(uuid_buf); + st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, uuid_buf); + if (st == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); + native_event_t *ev_uuid = &ntv_table.events[idx]; + ev_uuid->id=idx; ev_uuid->name=strdup(name_buf); ev_uuid->descr=strdup(descr_buf); + ev_uuid->device=d; ev_uuid->value=0; ev_uuid->mode=PAPI_MODE_READ; + ev_uuid->variant=0; ev_uuid->subvariant=0; ev_uuid->open_func=open_simple; ev_uuid->close_func=close_simple; + ev_uuid->start_func=start_simple; ev_uuid->stop_func=stop_simple; ev_uuid->access_func=access_amdsmi_uuid_hash; + htable_insert(htable, ev_uuid->name, ev_uuid); idx++; + } + } + /* Vendor / VRAM vendor / Subsystem name (hash) */ + if (amdsmi_get_gpu_vendor_name_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); + native_event_t *ev_vn = &ntv_table.events[idx]; + ev_vn->id=idx; ev_vn->name=strdup(name_buf); ev_vn->descr=strdup(descr_buf); + ev_vn->device=d; ev_vn->value=0; ev_vn->mode=PAPI_MODE_READ; ev_vn->variant=0; ev_vn->subvariant=0; + ev_vn->open_func=open_simple; ev_vn->close_func=close_simple; ev_vn->start_func=start_simple; ev_vn->stop_func=stop_simple; + ev_vn->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vn->name, ev_vn); idx++; + } + if (amdsmi_get_gpu_vram_vendor_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); + native_event_t *ev_vrv = &ntv_table.events[idx]; + ev_vrv->id=idx; ev_vrv->name=strdup(name_buf); ev_vrv->descr=strdup(descr_buf); + ev_vrv->device=d; ev_vrv->value=0; ev_vrv->mode=PAPI_MODE_READ; ev_vrv->variant=1; ev_vrv->subvariant=0; + ev_vrv->open_func=open_simple; ev_vrv->close_func=close_simple; ev_vrv->start_func=start_simple; ev_vrv->stop_func=stop_simple; + ev_vrv->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vrv->name, ev_vrv); idx++; + } + if (amdsmi_get_gpu_subsystem_name_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); + native_event_t *ev_ssn = &ntv_table.events[idx]; + ev_ssn->id=idx; ev_ssn->name=strdup(name_buf); ev_ssn->descr=strdup(descr_buf); + ev_ssn->device=d; ev_ssn->value=0; ev_ssn->mode=PAPI_MODE_READ; ev_ssn->variant=2; ev_ssn->subvariant=0; + ev_ssn->open_func=open_simple; ev_ssn->close_func=close_simple; ev_ssn->start_func=start_simple; ev_ssn->stop_func=stop_simple; + ev_ssn->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_ssn->name, ev_ssn); idx++; + } + /* Enumeration info (drm render/card, hsa/hip ids) */ + if (amdsmi_get_gpu_enumeration_info_p) { + amdsmi_enumeration_info_t einfo; + if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); + native_event_t *ev_er = &ntv_table.events[idx]; + ev_er->id=idx; ev_er->name=strdup(name_buf); ev_er->descr=strdup(descr_buf); + ev_er->device=d; ev_er->value=0; ev_er->mode=PAPI_MODE_READ; ev_er->variant=0; ev_er->subvariant=0; + ev_er->open_func=open_simple; ev_er->close_func=close_simple; ev_er->start_func=start_simple; ev_er->stop_func=stop_simple; + ev_er->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_er->name, ev_er); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); + native_event_t *ev_ec = &ntv_table.events[idx]; + ev_ec->id=idx; ev_ec->name=strdup(name_buf); ev_ec->descr=strdup(descr_buf); + ev_ec->device=d; ev_ec->value=0; ev_ec->mode=PAPI_MODE_READ; ev_ec->variant=1; ev_ec->subvariant=0; + ev_ec->open_func=open_simple; ev_ec->close_func=close_simple; ev_ec->start_func=start_simple; ev_ec->stop_func=stop_simple; + ev_ec->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_ec->name, ev_ec); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); + native_event_t *ev_eh = &ntv_table.events[idx]; + ev_eh->id=idx; ev_eh->name=strdup(name_buf); ev_eh->descr=strdup(descr_buf); + ev_eh->device=d; ev_eh->value=0; ev_eh->mode=PAPI_MODE_READ; ev_eh->variant=2; ev_eh->subvariant=0; + ev_eh->open_func=open_simple; ev_eh->close_func=close_simple; ev_eh->start_func=start_simple; ev_eh->stop_func=stop_simple; + ev_eh->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_eh->name, ev_eh); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); + native_event_t *ev_ehip = &ntv_table.events[idx]; + ev_ehip->id=idx; ev_ehip->name=strdup(name_buf); ev_ehip->descr=strdup(descr_buf); + ev_ehip->device=d; ev_ehip->value=0; ev_ehip->mode=PAPI_MODE_READ; ev_ehip->variant=3; ev_ehip->subvariant=0; + ev_ehip->open_func=open_simple; ev_ehip->close_func=close_simple; ev_ehip->start_func=start_simple; ev_ehip->stop_func=stop_simple; + ev_ehip->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_ehip->name, ev_ehip); idx++; + } + } + /* ASIC info (numeric IDs & CU count) */ + if (amdsmi_get_gpu_asic_info_p) { + amdsmi_asic_info_t ainfo; + if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); + native_event_t *ev_av = &ntv_table.events[idx]; + ev_av->id=idx; ev_av->name=strdup(name_buf); ev_av->descr=strdup(descr_buf); + ev_av->device=d; ev_av->value=0; ev_av->mode=PAPI_MODE_READ; ev_av->variant=0; ev_av->subvariant=0; + ev_av->open_func=open_simple; ev_av->close_func=close_simple; ev_av->start_func=start_simple; ev_av->stop_func=stop_simple; + ev_av->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_av->name, ev_av); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); + native_event_t *ev_ad = &ntv_table.events[idx]; + ev_ad->id=idx; ev_ad->name=strdup(name_buf); ev_ad->descr=strdup(descr_buf); + ev_ad->device=d; ev_ad->value=0; ev_ad->mode=PAPI_MODE_READ; ev_ad->variant=1; ev_ad->subvariant=0; + ev_ad->open_func=open_simple; ev_ad->close_func=close_simple; ev_ad->start_func=start_simple; ev_ad->stop_func=stop_simple; + ev_ad->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ad->name, ev_ad); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); + native_event_t *ev_asv = &ntv_table.events[idx]; + ev_asv->id=idx; ev_asv->name=strdup(name_buf); ev_asv->descr=strdup(descr_buf); + ev_asv->device=d; ev_asv->value=0; ev_asv->mode=PAPI_MODE_READ; ev_asv->variant=2; ev_asv->subvariant=0; + ev_asv->open_func=open_simple; ev_asv->close_func=close_simple; ev_asv->start_func=start_simple; ev_asv->stop_func=stop_simple; + ev_asv->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_asv->name, ev_asv); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); + native_event_t *ev_ass = &ntv_table.events[idx]; + ev_ass->id=idx; ev_ass->name=strdup(name_buf); ev_ass->descr=strdup(descr_buf); + ev_ass->device=d; ev_ass->value=0; ev_ass->mode=PAPI_MODE_READ; ev_ass->variant=3; ev_ass->subvariant=0; + ev_ass->open_func=open_simple; ev_ass->close_func=close_simple; ev_ass->start_func=start_simple; ev_ass->stop_func=stop_simple; + ev_ass->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ass->name, ev_ass); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); + native_event_t *ev_ar = &ntv_table.events[idx]; + ev_ar->id=idx; ev_ar->name=strdup(name_buf); ev_ar->descr=strdup(descr_buf); + ev_ar->device=d; ev_ar->value=0; ev_ar->mode=PAPI_MODE_READ; ev_ar->variant=4; ev_ar->subvariant=0; + ev_ar->open_func=open_simple; ev_ar->close_func=close_simple; ev_ar->start_func=start_simple; ev_ar->stop_func=stop_simple; + ev_ar->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ar->name, ev_ar); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); + native_event_t *ev_cu = &ntv_table.events[idx]; + ev_cu->id=idx; ev_cu->name=strdup(name_buf); ev_cu->descr=strdup(descr_buf); + ev_cu->device=d; ev_cu->value=0; ev_cu->mode=PAPI_MODE_READ; ev_cu->variant=5; ev_cu->subvariant=0; + ev_cu->open_func=open_simple; ev_cu->close_func=close_simple; ev_cu->start_func=start_simple; ev_cu->stop_func=stop_simple; + ev_cu->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_cu->name, ev_cu); idx++; + } + } + /* Driver info (strings hashed) */ + if (amdsmi_get_gpu_driver_info_p) { + amdsmi_driver_info_t dinfo; + if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); + native_event_t *ev_dname = &ntv_table.events[idx]; + ev_dname->id=idx; ev_dname->name=strdup(name_buf); ev_dname->descr=strdup(descr_buf); + ev_dname->device=d; ev_dname->value=0; ev_dname->mode=PAPI_MODE_READ; ev_dname->variant=3; ev_dname->subvariant=0; + ev_dname->open_func=open_simple; ev_dname->close_func=close_simple; ev_dname->start_func=start_simple; ev_dname->stop_func=stop_simple; + ev_dname->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_dname->name, ev_dname); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); + native_event_t *ev_dd = &ntv_table.events[idx]; + ev_dd->id=idx; ev_dd->name=strdup(name_buf); ev_dd->descr=strdup(descr_buf); + ev_dd->device=d; ev_dd->value=0; ev_dd->mode=PAPI_MODE_READ; ev_dd->variant=4; ev_dd->subvariant=0; + ev_dd->open_func=open_simple; ev_dd->close_func=close_simple; ev_dd->start_func=start_simple; ev_dd->stop_func=stop_simple; + ev_dd->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_dd->name, ev_dd); idx++; + } + } + /* VBIOS info (strings hashed) */ + if (amdsmi_get_gpu_vbios_info_p) { + amdsmi_vbios_info_t vb; + if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", d); + native_event_t *ev_vbv = &ntv_table.events[idx]; + ev_vbv->id=idx; ev_vbv->name=strdup(name_buf); ev_vbv->descr=strdup(descr_buf); + ev_vbv->device=d; ev_vbv->value=0; ev_vbv->mode=PAPI_MODE_READ; ev_vbv->variant=5; ev_vbv->subvariant=0; + ev_vbv->open_func=open_simple; ev_vbv->close_func=close_simple; ev_vbv->start_func=start_simple; ev_vbv->stop_func=stop_simple; + ev_vbv->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbv->name, ev_vbv); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number (hash)", d); + native_event_t *ev_vbp = &ntv_table.events[idx]; + ev_vbp->id=idx; ev_vbp->name=strdup(name_buf); ev_vbp->descr=strdup(descr_buf); + ev_vbp->device=d; ev_vbp->value=0; ev_vbp->mode=PAPI_MODE_READ; ev_vbp->variant=6; ev_vbp->subvariant=0; + ev_vbp->open_func=open_simple; ev_vbp->close_func=close_simple; ev_vbp->start_func=start_simple; ev_vbp->stop_func=stop_simple; + ev_vbp->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbp->name, ev_vbp); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date (hash)", d); + native_event_t *ev_vbd = &ntv_table.events[idx]; + ev_vbd->id=idx; ev_vbd->name=strdup(name_buf); ev_vbd->descr=strdup(descr_buf); + ev_vbd->device=d; ev_vbd->value=0; ev_vbd->mode=PAPI_MODE_READ; ev_vbd->variant=7; ev_vbd->subvariant=0; + ev_vbd->open_func=open_simple; ev_vbd->close_func=close_simple; ev_vbd->start_func=start_simple; ev_vbd->stop_func=stop_simple; + ev_vbd->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbd->name, ev_vbd); idx++; + } + } + /* PCIe metrics via amdsmi_get_link_metrics (aggregate read/write kB over XGMI) */ + if (amdsmi_get_link_metrics_p) { + amdsmi_link_metrics_t lm; + if (amdsmi_get_link_metrics_p(device_handles[d], &lm) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); + native_event_t *ev_xr = &ntv_table.events[idx]; + ev_xr->id=idx; ev_xr->name=strdup(name_buf); ev_xr->descr=strdup(descr_buf); + ev_xr->device=d; ev_xr->value=0; ev_xr->mode=PAPI_MODE_READ; ev_xr->variant=0; ev_xr->subvariant=0; + ev_xr->open_func=open_simple; ev_xr->close_func=close_simple; ev_xr->start_func=start_simple; ev_xr->stop_func=stop_simple; + ev_xr->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xr->name, ev_xr); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); + native_event_t *ev_xw = &ntv_table.events[idx]; + ev_xw->id=idx; ev_xw->name=strdup(name_buf); ev_xw->descr=strdup(descr_buf); + ev_xw->device=d; ev_xw->value=0; ev_xw->mode=PAPI_MODE_READ; ev_xw->variant=1; ev_xw->subvariant=0; + ev_xw->open_func=open_simple; ev_xw->close_func=close_simple; ev_xw->start_func=start_simple; ev_xw->stop_func=stop_simple; + ev_xw->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xw->name, ev_xw); idx++; + } + } + /* Process list size (count of running GPU processes) */ + if (amdsmi_get_gpu_process_list_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "process_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d active GPU process count", d); + native_event_t *ev_pc = &ntv_table.events[idx]; + ev_pc->id=idx; ev_pc->name=strdup(name_buf); ev_pc->descr=strdup(descr_buf); + ev_pc->device=d; ev_pc->value=0; ev_pc->mode=PAPI_MODE_READ; ev_pc->variant=0; ev_pc->subvariant=0; + ev_pc->open_func=open_simple; ev_pc->close_func=close_simple; ev_pc->start_func=start_simple; ev_pc->stop_func=stop_simple; + ev_pc->access_func=access_amdsmi_process_count; htable_insert(htable, ev_pc->name, ev_pc); idx++; + } + /* ECC totals & enabled mask (where supported) */ + if (amdsmi_get_gpu_total_ecc_count_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC correctable errors", d); + native_event_t *ev_ecct = &ntv_table.events[idx]; + ev_ecct->id=idx; ev_ecct->name=strdup(name_buf); ev_ecct->descr=strdup(descr_buf); + ev_ecct->device=d; ev_ecct->value=0; ev_ecct->mode=PAPI_MODE_READ; ev_ecct->variant=0; ev_ecct->subvariant=0; + ev_ecct->open_func=open_simple; ev_ecct->close_func=close_simple; ev_ecct->start_func=start_simple; ev_ecct->stop_func=stop_simple; + ev_ecct->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecct->name, ev_ecct); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC uncorrectable errors", d); + native_event_t *ev_ecctu = &ntv_table.events[idx]; + ev_ecctu->id=idx; ev_ecctu->name=strdup(name_buf); ev_ecctu->descr=strdup(descr_buf); + ev_ecctu->device=d; ev_ecctu->value=0; ev_ecctu->mode=PAPI_MODE_READ; ev_ecctu->variant=1; ev_ecctu->subvariant=0; + ev_ecctu->open_func=open_simple; ev_ecctu->close_func=close_simple; ev_ecctu->start_func=start_simple; ev_ecctu->stop_func=stop_simple; + ev_ecctu->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecctu->name, ev_ecctu); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC deferred errors", d); + native_event_t *ev_ecctd = &ntv_table.events[idx]; + ev_ecctd->id=idx; ev_ecctd->name=strdup(name_buf); ev_ecctd->descr=strdup(descr_buf); + ev_ecctd->device=d; ev_ecctd->value=0; ev_ecctd->mode=PAPI_MODE_READ; ev_ecctd->variant=2; ev_ecctd->subvariant=0; + ev_ecctd->open_func=open_simple; ev_ecctd->close_func=close_simple; ev_ecctd->start_func=start_simple; ev_ecctd->stop_func=stop_simple; + ev_ecctd->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecctd->name, ev_ecctd); idx++; + } + if (amdsmi_get_gpu_ecc_enabled_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block bitmask", d); + native_event_t *ev_eccm = &ntv_table.events[idx]; + ev_eccm->id=idx; ev_eccm->name=strdup(name_buf); ev_eccm->descr=strdup(descr_buf); + ev_eccm->device=d; ev_eccm->value=0; ev_eccm->mode=PAPI_MODE_READ; ev_eccm->variant=0; ev_eccm->subvariant=0; + ev_eccm->open_func=open_simple; ev_eccm->close_func=close_simple; ev_eccm->start_func=start_simple; ev_eccm->stop_func=stop_simple; + ev_eccm->access_func=access_amdsmi_ecc_enabled_mask; htable_insert(htable, ev_eccm->name, ev_eccm); idx++; + } + /* Partitioning state (hash/enumeration) */ + if (amdsmi_get_gpu_compute_partition_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d compute partition (hash)", d); + native_event_t *ev_cpart = &ntv_table.events[idx]; + ev_cpart->id=idx; ev_cpart->name=strdup(name_buf); ev_cpart->descr=strdup(descr_buf); + ev_cpart->device=d; ev_cpart->value=0; ev_cpart->mode=PAPI_MODE_READ; ev_cpart->variant=0; ev_cpart->subvariant=0; + ev_cpart->open_func=open_simple; ev_cpart->close_func=close_simple; ev_cpart->start_func=start_simple; ev_cpart->stop_func=stop_simple; + ev_cpart->access_func=access_amdsmi_compute_partition_hash; htable_insert(htable, ev_cpart->name, ev_cpart); idx++; + } + if (amdsmi_get_gpu_memory_partition_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); + native_event_t *ev_mpart = &ntv_table.events[idx]; + ev_mpart->id=idx; ev_mpart->name=strdup(name_buf); ev_mpart->descr=strdup(descr_buf); + ev_mpart->device=d; ev_mpart->value=0; ev_mpart->mode=PAPI_MODE_READ; ev_mpart->variant=0; ev_mpart->subvariant=0; + ev_mpart->open_func=open_simple; ev_mpart->close_func=close_simple; ev_mpart->start_func=start_simple; ev_mpart->stop_func=stop_simple; + ev_mpart->access_func=access_amdsmi_memory_partition_hash; htable_insert(htable, ev_mpart->name, ev_mpart); idx++; + } + if (amdsmi_get_gpu_accelerator_partition_profile_p) { + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator profile partitions", d); + native_event_t *ev_anp = &ntv_table.events[idx]; + ev_anp->id=idx; ev_anp->name=strdup(name_buf); ev_anp->descr=strdup(descr_buf); + ev_anp->device=d; ev_anp->value=0; ev_anp->mode=PAPI_MODE_READ; ev_anp->variant=0; ev_anp->subvariant=0; + ev_anp->open_func=open_simple; ev_anp->close_func=close_simple; ev_anp->start_func=start_simple; ev_anp->stop_func=stop_simple; + ev_anp->access_func=access_amdsmi_accelerator_num_partitions; htable_insert(htable, ev_anp->name, ev_anp); idx++; + } + } + } +// Cleanup - no device capabilities cache to free ntv_table.count = idx; return PAPI_OK; } + +/* -------- Helpers and new accessors (GPU read-only additions) -------- */ +static uint64_t _str_to_u64_hash(const char *s) { + /* djb2 64-bit */ + uint64_t hash = 5381; + if (!s) return 0; + int c; + while ((c = *s++)) { + hash = ((hash << 5) + hash) + (uint8_t)c; + } + return hash; +} +static int access_amdsmi_lib_version(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_lib_version_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + amdsmi_version_t vinfo; + amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + switch (event->variant) { + case 0: event->value = (int64_t)vinfo.major; break; + case 1: event->value = (int64_t)vinfo.minor; break; + case 2: event->value = (int64_t)vinfo.release; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} +static int access_amdsmi_uuid_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_device_uuid_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + char buf[128] = {0}; + unsigned int len = sizeof(buf); + amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +static int access_amdsmi_gpu_string_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + char buf[256] = {0}; + amdsmi_status_t st = AMDSMI_STATUS_NOT_SUPPORTED; + switch (event->variant) { + case 0: /* vendor name */ + if (!amdsmi_get_gpu_vendor_name_p) return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vendor_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 1: /* vram vendor */ + if (!amdsmi_get_gpu_vram_vendor_p) return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vram_vendor_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 2: /* subsystem name */ + if (!amdsmi_get_gpu_subsystem_name_p) return PAPI_ENOSUPP; + st = amdsmi_get_gpu_subsystem_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 3: /* driver name */ + case 4: /* driver date */ + if (!amdsmi_get_gpu_driver_info_p) return PAPI_ENOSUPP; + { + amdsmi_driver_info_t dinfo; + st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 3) strncpy(buf, dinfo.driver_name, sizeof(buf)-1); + else strncpy(buf, dinfo.driver_date, sizeof(buf)-1); + } + } + break; + case 5: /* vbios version */ + case 6: /* vbios part number */ + case 7: /* vbios build date */ + if (!amdsmi_get_gpu_vbios_info_p) return PAPI_ENOSUPP; + { + amdsmi_vbios_info_t vb; + st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 5) strncpy(buf, vb.version, sizeof(buf)-1); + else if (event->variant == 6) strncpy(buf, vb.part_number, sizeof(buf)-1); + else strncpy(buf, vb.build_date, sizeof(buf)-1); + } + } + break; + default: + return PAPI_ENOSUPP; + } + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +static int access_amdsmi_enumeration_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_enumeration_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_enumeration_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + switch (event->variant) { + case 0: event->value = (int64_t)info.drm_render; break; + case 1: event->value = (int64_t)info.drm_card; break; + case 2: event->value = (int64_t)info.hsa_id; break; + case 3: event->value = (int64_t)info.hip_id; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} +static int access_amdsmi_asic_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_asic_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_asic_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + switch (event->variant) { + case 0: event->value = (int64_t)info.vendor_id; break; + case 1: event->value = (int64_t)info.device_id; break; + case 2: event->value = (int64_t)info.subvendor_id; break; + case 3: event->value = (int64_t)0 /* not provided in amdsmi_asic_info_t */; break; + case 4: event->value = (int64_t)info.rev_id; break; + case 5: event->value = (int64_t)info.num_of_compute_units; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} +static int access_amdsmi_link_metrics(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_link_metrics_t lm; + amdsmi_status_t st = amdsmi_get_link_metrics_p(device_handles[event->device], &lm); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + uint64_t total_read=0, total_write=0; + /* Sum over links */ + for (int i = 0; i < AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; ++i) { + total_read += lm.links[i].read; + total_write += lm.links[i].write; + } + if (event->variant == 0) event->value = (int64_t)total_read; + else event->value = (int64_t)total_write; + return PAPI_OK; +} +static int access_amdsmi_process_count(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_process_list_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t cap = 32; + int tries = 0; + amdsmi_proc_info_t *list = NULL; + amdsmi_status_t st; + while (tries++ < 4) { + list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); + if (!list) return PAPI_ENOMEM; + uint32_t maxp = cap; + st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); + if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { + papi_free(list); + cap *= 2; + continue; + } + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(list); + return PAPI_EMISC; + } + event->value = (int64_t)maxp; + papi_free(list); + return PAPI_OK; + } + return PAPI_EMISC; +} +static int access_amdsmi_ecc_total(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_total_ecc_count_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_error_count_t ec; + amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + switch (event->variant) { + case 0: event->value = (int64_t)ec.correctable_count; break; + case 1: event->value = (int64_t)ec.uncorrectable_count; break; + case 2: event->value = (int64_t)ec.deferred_count; break; + default: return PAPI_EMISC; + } + return PAPI_OK; +} +static int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ecc_enabled_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint64_t mask=0; + amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)mask; + return PAPI_OK; +} +static int access_amdsmi_compute_partition_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_compute_partition_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +static int access_amdsmi_memory_partition_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_memory_partition_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +static int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_accelerator_partition_profile_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)prof.num_partitions; + return PAPI_OK; +} static int shutdown_event_table(void) { // Remove all events from hash table and free their names/descr for (int i = 0; i < ntv_table.count; ++i) { From 659d720267301f89fe6e6895ef1ee8a1f348f95f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 25 Aug 2025 22:06:19 -0700 Subject: [PATCH 040/147] events more --- src/components/amd_smi/amds.c | 6446 ++++++++++++++++++--------------- 1 file changed, 3510 insertions(+), 2936 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 2c8de694c..e67098b69 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,27 +1,29 @@ -#include -#include -#include +#include "amds.h" #include "amdsmi.h" -#include +#include "htable.h" #include "papi.h" #include "papi_memory.h" -#include "amds.h" -#include "htable.h" +#include +#include +#include +#include #define MAX_EVENTS_PER_DEVICE 1024 #define AMDSMI_DISABLE_ESMI unsigned int _amd_smi_lock; typedef enum { - PAPI_MODE_READ = 1, - PAPI_MODE_WRITE, - PAPI_MODE_RDWR, + PAPI_MODE_READ = 1, + PAPI_MODE_WRITE, + PAPI_MODE_RDWR, } rocs_access_mode_e; /* Pointers to AMD SMI library functions (dynamically loaded) */ static amdsmi_status_t (*amdsmi_init_p)(uint64_t); static amdsmi_status_t (*amdsmi_shut_down_p)(void); static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, + uint32_t *); +static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, + int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); @@ -58,12 +60,15 @@ static amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, am static amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); static amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); static amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); -static amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, + uint32_t *); static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -//static amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +// static amdsmi_status_t +// (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, +// amdsmi_virtualization_mode_t *); static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); @@ -86,8 +91,10 @@ static amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_hand static amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); static amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); static amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); +static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, + uint64_t *); +static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, + amdsmi_temp_range_refresh_rate_t *); static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); #endif @@ -101,7 +108,7 @@ static amdsmi_processor_handle **cpu_core_handles = NULL; static uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; static void *htable = NULL; -static char error_string[PAPI_MAX_STR_LEN+1]; +static char error_string[PAPI_MAX_STR_LEN + 1]; /* forward declarations for internal helpers */ static int load_amdsmi_sym(void); static int unload_amdsmi_sym(void); @@ -111,54 +118,51 @@ static int init_event_table(void); static int shutdown_event_table(void); /* Event descriptor structure for native events */ typedef struct native_event { - unsigned int id; - char *name; - char *descr; - int32_t device; /* device index or -1 if not applicable */ - uint64_t value; /* last read value or set value */ - uint32_t mode; /* access mode (read/write) */ - uint32_t variant; /* variant index (for metric type, etc.) */ - uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ - int (*open_func)(struct native_event *); /* optional open (reserve resources) */ - int (*close_func)(struct native_event *); /* optional close (release resources) */ - int (*start_func)(struct native_event *); /* optional start (begin counting) */ - int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ - int (*access_func)(int mode, void *arg); /* read or write the event value */ + unsigned int id; + char *name; + char *descr; + int32_t device; /* device index or -1 if not applicable */ + uint64_t value; /* last read value or set value */ + uint32_t mode; /* access mode (read/write) */ + uint32_t variant; /* variant index (for metric type, etc.) */ + uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ + int (*open_func)(struct native_event *); /* optional open (reserve resources) */ + int (*close_func)(struct native_event *); /* optional close (release resources) */ + int (*start_func)(struct native_event *); /* optional start (begin counting) */ + int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ + int (*access_func)(int mode, void *arg); /* read or write the event value */ } native_event_t; /* Table of all native events */ typedef struct { - native_event_t *events; - int count; + native_event_t *events; + int count; } native_event_table_t; static native_event_table_t ntv_table; static native_event_table_t *ntv_table_p = NULL; /* Locking device usage for contexts */ -static int -acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) -{ - int32_t mask_acq = 0; - for (int i = 0; i < num_events; ++i) { - int32_t dev_id = ntv_table_p->events[events_id[i]].device; - if (dev_id < 0) continue; - mask_acq |= (1 << dev_id); - } - if (mask_acq & device_mask) { - return PAPI_ECNFLCT; // conflict: device already in use - } - device_mask |= mask_acq; - *bitmask = mask_acq; - return PAPI_OK; -} -static int -release_devices(int32_t *bitmask) -{ - int32_t mask_rel = *bitmask; - if ((mask_rel & device_mask) != mask_rel) { - return PAPI_EMISC; - } - device_mask ^= mask_rel; - *bitmask = 0; - return PAPI_OK; +static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { + int32_t mask_acq = 0; + for (int i = 0; i < num_events; ++i) { + int32_t dev_id = ntv_table_p->events[events_id[i]].device; + if (dev_id < 0) + continue; + mask_acq |= (1 << dev_id); + } + if (mask_acq & device_mask) { + return PAPI_ECNFLCT; // conflict: device already in use + } + device_mask |= mask_acq; + *bitmask = mask_acq; + return PAPI_OK; +} +static int release_devices(int32_t *bitmask) { + int32_t mask_rel = *bitmask; + if ((mask_rel & device_mask) != mask_rel) { + return PAPI_EMISC; + } + device_mask ^= mask_rel; + *bitmask = 0; + return PAPI_OK; } /* Prototypes for event access (read/write) functions */ static int access_amdsmi_temp_metric(int mode, void *arg); @@ -193,8 +197,8 @@ static int access_amdsmi_memory_partition_hash(int mode, void *arg); static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); static int access_amdsmi_lib_version(int mode, void *arg); - -/* Prototypes for added GPU/query accessors (outside AMDSMI_DISABLE_ESMI guard) */ +/* Prototypes for added GPU/query accessors (outside AMDSMI_DISABLE_ESMI guard) + */ static uint64_t _str_to_u64_hash(const char *s); static int access_amdsmi_uuid_hash(int mode, void *arg); static int access_amdsmi_gpu_string_hash(int mode, void *arg); @@ -226,3061 +230,3631 @@ static int access_amdsmi_cpu_model(int mode, void *arg); static int access_amdsmi_smu_fw_version(int mode, void *arg); static int access_amdsmi_xgmi_bandwidth(int mode, void *arg); #endif -/* Simple open/close/start/stop functions (no special handling needed for most events) */ -static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int close_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int start_simple(native_event_t *event) { (void)event; return PAPI_OK; } -static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } +/* Simple open/close/start/stop functions (no special handling needed for most + * events) */ +static int open_simple(native_event_t *event) { + (void)event; + return PAPI_OK; +} +static int close_simple(native_event_t *event) { + (void)event; + return PAPI_OK; +} +static int start_simple(native_event_t *event) { + (void)event; + return PAPI_OK; +} +static int stop_simple(native_event_t *event) { + (void)event; + return PAPI_OK; +} /* Dynamic load of AMD SMI library symbols */ static void *sym(const char *preferred, const char *fallback) { - void *p = dlsym(amds_dlp, preferred); - return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); + void *p = dlsym(amds_dlp, preferred); + return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); } static int load_amdsmi_sym(void) { - const char *root = getenv("PAPI_AMDSMI_ROOT"); - char so_path[PATH_MAX] = {0}; - if (!root) { - snprintf(error_string, sizeof(error_string), - "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); - return PAPI_ENOSUPP; - } - snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); - amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); - if (!amds_dlp) { - snprintf(error_string, sizeof(error_string), - "dlopen(\"%s\"): %s", so_path, dlerror()); - return PAPI_ENOSUPP; - } - /* Resolve required function symbols */ - amdsmi_init_p = sym("amdsmi_init", NULL); - amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); - amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); - amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); - /* Sensors */ - amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); - amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); - amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); - amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); - /* Memory */ - amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); - amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); - /* Utilization / activity */ - amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); - /* Power */ - amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); - amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); - amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); - /* PCIe */ - amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); - amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); - /* Clocks */ - amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); - amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); - /* GPU metrics */ - amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); - /* Identification and other queries */ - amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); - amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); - amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); -// amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); - amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); - amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); - amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); - amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); - amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); - /* Additional read-only queries */ - amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); - amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); - amdsmi_get_gpu_asic_info_p = sym("amdsmi_get_gpu_asic_info", NULL); - amdsmi_get_gpu_board_info_p = sym("amdsmi_get_gpu_board_info", NULL); - amdsmi_get_fw_info_p = sym("amdsmi_get_fw_info", NULL); - amdsmi_get_gpu_vbios_info_p = sym("amdsmi_get_gpu_vbios_info", NULL); - amdsmi_get_gpu_device_uuid_p = sym("amdsmi_get_gpu_device_uuid", NULL); - amdsmi_get_gpu_enumeration_info_p = sym("amdsmi_get_gpu_enumeration_info", NULL); - amdsmi_get_gpu_vendor_name_p = sym("amdsmi_get_gpu_vendor_name", NULL); - amdsmi_get_gpu_vram_vendor_p = sym("amdsmi_get_gpu_vram_vendor", NULL); - amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); - amdsmi_get_link_metrics_p = sym("amdsmi_get_link_metrics", NULL); - amdsmi_get_gpu_process_list_p = sym("amdsmi_get_gpu_process_list", NULL); - amdsmi_get_gpu_ecc_enabled_p = sym("amdsmi_get_gpu_ecc_enabled", NULL); - amdsmi_get_gpu_total_ecc_count_p = sym("amdsmi_get_gpu_total_ecc_count", NULL); - amdsmi_get_gpu_ecc_count_p = sym("amdsmi_get_gpu_ecc_count", NULL); - amdsmi_get_gpu_ecc_status_p = sym("amdsmi_get_gpu_ecc_status", NULL); - amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); - amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); - amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); + const char *root = getenv("PAPI_AMDSMI_ROOT"); + char so_path[PATH_MAX] = {0}; + if (!root) { + snprintf(error_string, sizeof(error_string), "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); + return PAPI_ENOSUPP; + } + snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); + amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); + if (!amds_dlp) { + snprintf(error_string, sizeof(error_string), "dlopen(\"%s\"): %s", so_path, dlerror()); + return PAPI_ENOSUPP; + } + /* Resolve required function symbols */ + amdsmi_init_p = sym("amdsmi_init", NULL); + amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); + amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); + amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); + /* Sensors */ + amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); + amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); + amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); + amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); + /* Memory */ + amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); + /* Utilization / activity */ + amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); + /* Power */ + amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); + amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); + amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); + /* PCIe */ + amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); + amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); + /* Clocks */ + amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); + amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); + /* GPU metrics */ + amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); + /* Identification and other queries */ + amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); + amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); + amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); + // amdsmi_get_gpu_virtualization_mode_p = + // sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); + amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); + amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); + amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); + amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); + /* Additional read-only queries */ + amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); + amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); + amdsmi_get_gpu_asic_info_p = sym("amdsmi_get_gpu_asic_info", NULL); + amdsmi_get_gpu_board_info_p = sym("amdsmi_get_gpu_board_info", NULL); + amdsmi_get_fw_info_p = sym("amdsmi_get_fw_info", NULL); + amdsmi_get_gpu_vbios_info_p = sym("amdsmi_get_gpu_vbios_info", NULL); + amdsmi_get_gpu_device_uuid_p = sym("amdsmi_get_gpu_device_uuid", NULL); + amdsmi_get_gpu_enumeration_info_p = sym("amdsmi_get_gpu_enumeration_info", NULL); + amdsmi_get_gpu_vendor_name_p = sym("amdsmi_get_gpu_vendor_name", NULL); + amdsmi_get_gpu_vram_vendor_p = sym("amdsmi_get_gpu_vram_vendor", NULL); + amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); + amdsmi_get_link_metrics_p = sym("amdsmi_get_link_metrics", NULL); + amdsmi_get_gpu_process_list_p = sym("amdsmi_get_gpu_process_list", NULL); + amdsmi_get_gpu_ecc_enabled_p = sym("amdsmi_get_gpu_ecc_enabled", NULL); + amdsmi_get_gpu_total_ecc_count_p = sym("amdsmi_get_gpu_total_ecc_count", NULL); + amdsmi_get_gpu_ecc_count_p = sym("amdsmi_get_gpu_ecc_count", NULL); + amdsmi_get_gpu_ecc_status_p = sym("amdsmi_get_gpu_ecc_status", NULL); + amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); + amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); + amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); #ifndef AMDSMI_DISABLE_ESMI - /* CPU functions */ - amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); - amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); - amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); - amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); - amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); - amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); - amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); - amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); - amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); - amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); - amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); - amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); - amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); - amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); - amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); - amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); - amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); - amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); + /* CPU functions */ + amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); + amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); + amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); + amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); + amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); + amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); + amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); + amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); + amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); + amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); + amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); + amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); + amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); + amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); + amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); + amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); + amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); + amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); #endif - /* Verify that all required symbols are loaded */ - struct { const char *name; void *ptr; } required[] = { - { "amdsmi_init", amdsmi_init_p }, - { "amdsmi_shut_down", amdsmi_shut_down_p }, - { "amdsmi_get_socket_handles", amdsmi_get_socket_handles_p }, - { "amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p }, - { "amdsmi_get_temp_metric", amdsmi_get_temp_metric_p }, - { "amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p }, - { "amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p }, - { "amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p }, - { "amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p }, - { "amdsmi_set_power_cap", amdsmi_set_power_cap_p }, - { "amdsmi_get_power_info", amdsmi_get_power_info_p }, - { "amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p }, - { "amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p }, - { "amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p }, - { "amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p }, - { "amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p }, - { "amdsmi_get_clk_freq", amdsmi_get_clk_freq_p }, - { "amdsmi_set_clk_freq", amdsmi_set_clk_freq_p }, - { "amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p }, - { "amdsmi_get_gpu_id", amdsmi_get_gpu_id_p }, - { "amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p }, - { "amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p }, -// { "amdsmi_get_gpu_virtualization_mode", amdsmi_get_gpu_virtualization_mode_p }, - { "amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p }, - { "amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p }, - { "amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p }, - { "amdsmi_get_energy_count", amdsmi_get_energy_count_p }, - { "amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p }, + /* Verify that all required symbols are loaded */ + struct { + const char *name; + void *ptr; + } required[] = {{"amdsmi_init", amdsmi_init_p}, + {"amdsmi_shut_down", amdsmi_shut_down_p}, + {"amdsmi_get_socket_handles", amdsmi_get_socket_handles_p}, + {"amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p}, + {"amdsmi_get_temp_metric", amdsmi_get_temp_metric_p}, + {"amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p}, + {"amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p}, + {"amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p}, + {"amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p}, + {"amdsmi_set_power_cap", amdsmi_set_power_cap_p}, + {"amdsmi_get_power_info", amdsmi_get_power_info_p}, + {"amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p}, + {"amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p}, + {"amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p}, + {"amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p}, + {"amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p}, + {"amdsmi_get_clk_freq", amdsmi_get_clk_freq_p}, + {"amdsmi_set_clk_freq", amdsmi_set_clk_freq_p}, + {"amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p}, + {"amdsmi_get_gpu_id", amdsmi_get_gpu_id_p}, + {"amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p}, + {"amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p}, + // { "amdsmi_get_gpu_virtualization_mode", + // amdsmi_get_gpu_virtualization_mode_p }, + {"amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p}, + {"amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p}, + {"amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p}, + {"amdsmi_get_energy_count", amdsmi_get_energy_count_p}, + {"amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p}, #ifndef AMDSMI_DISABLE_ESMI - { "amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p }, - { "amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p }, - { "amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p }, - { "amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p }, - { "amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p }, - { "amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p }, - { "amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p }, - { "amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p }, - { "amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p }, - { "amdsmi_get_cpu_family", amdsmi_get_cpu_family_p }, - { "amdsmi_get_cpu_model", amdsmi_get_cpu_model_p }, - { "amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p }, - { "amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p }, - { "amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p }, - { "amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p }, - { "amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p }, - { "amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p }, - { "amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p }, - { "amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p } + {"amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p}, + {"amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p}, + {"amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p}, + {"amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p}, + {"amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p}, + {"amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p}, + {"amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p}, + {"amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p}, + {"amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p}, + {"amdsmi_get_cpu_family", amdsmi_get_cpu_family_p}, + {"amdsmi_get_cpu_model", amdsmi_get_cpu_model_p}, + {"amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p}, + {"amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p}, + {"amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p}, + {"amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p}, + {"amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p}, + {"amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p}, + {"amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p}, + {"amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p} #endif - }; - int miss = 0; - int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); - for (size_t i = 0; i < sizeof(required)/sizeof(required[0]); ++i) { - if (!required[i].ptr) { - miss++; - pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); - } - } - if (miss) { - dlclose(amds_dlp); amds_dlp = NULL; - return PAPI_ENOSUPP; - } - return PAPI_OK; + }; + int miss = 0; + int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); + for (size_t i = 0; i < sizeof(required) / sizeof(required[0]); ++i) { + if (!required[i].ptr) { + miss++; + pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); + } + } + if (miss) { + dlclose(amds_dlp); + amds_dlp = NULL; + return PAPI_ENOSUPP; + } + return PAPI_OK; } static int unload_amdsmi_sym(void) { - /* Reset all function pointers and close library */ - amdsmi_init_p = NULL; - amdsmi_shut_down_p = NULL; - amdsmi_get_socket_handles_p = NULL; - amdsmi_get_processor_handles_by_type_p = NULL; - amdsmi_get_temp_metric_p = NULL; - amdsmi_get_gpu_fan_rpms_p = NULL; - amdsmi_get_gpu_fan_speed_p = NULL; - amdsmi_get_gpu_fan_speed_max_p = NULL; - amdsmi_get_total_memory_p = NULL; - amdsmi_get_memory_usage_p = NULL; - amdsmi_get_gpu_activity_p = NULL; - amdsmi_get_power_cap_info_p = NULL; - amdsmi_set_power_cap_p = NULL; - amdsmi_get_power_info_p = NULL; - amdsmi_get_gpu_pci_throughput_p = NULL; - amdsmi_get_gpu_pci_replay_counter_p = NULL; - amdsmi_get_clk_freq_p = NULL; - amdsmi_set_clk_freq_p = NULL; - amdsmi_get_gpu_metrics_info_p = NULL; - amdsmi_get_gpu_id_p = NULL; - amdsmi_get_gpu_revision_p = NULL; - amdsmi_get_gpu_subsystem_id_p = NULL; -// amdsmi_get_gpu_virtualization_mode_p = NULL; - amdsmi_get_gpu_pci_bandwidth_p = NULL; - amdsmi_get_gpu_bdf_id_p = NULL; - amdsmi_get_gpu_topo_numa_affinity_p = NULL; - amdsmi_get_energy_count_p = NULL; - amdsmi_get_gpu_power_profile_presets_p = NULL; + /* Reset all function pointers and close library */ + amdsmi_init_p = NULL; + amdsmi_shut_down_p = NULL; + amdsmi_get_socket_handles_p = NULL; + amdsmi_get_processor_handles_by_type_p = NULL; + amdsmi_get_temp_metric_p = NULL; + amdsmi_get_gpu_fan_rpms_p = NULL; + amdsmi_get_gpu_fan_speed_p = NULL; + amdsmi_get_gpu_fan_speed_max_p = NULL; + amdsmi_get_total_memory_p = NULL; + amdsmi_get_memory_usage_p = NULL; + amdsmi_get_gpu_activity_p = NULL; + amdsmi_get_power_cap_info_p = NULL; + amdsmi_set_power_cap_p = NULL; + amdsmi_get_power_info_p = NULL; + amdsmi_get_gpu_pci_throughput_p = NULL; + amdsmi_get_gpu_pci_replay_counter_p = NULL; + amdsmi_get_clk_freq_p = NULL; + amdsmi_set_clk_freq_p = NULL; + amdsmi_get_gpu_metrics_info_p = NULL; + amdsmi_get_gpu_id_p = NULL; + amdsmi_get_gpu_revision_p = NULL; + amdsmi_get_gpu_subsystem_id_p = NULL; + // amdsmi_get_gpu_virtualization_mode_p = NULL; + amdsmi_get_gpu_pci_bandwidth_p = NULL; + amdsmi_get_gpu_bdf_id_p = NULL; + amdsmi_get_gpu_topo_numa_affinity_p = NULL; + amdsmi_get_energy_count_p = NULL; + amdsmi_get_gpu_power_profile_presets_p = NULL; #ifndef AMDSMI_DISABLE_ESMI - amdsmi_get_cpu_handles_p = NULL; - amdsmi_get_cpucore_handles_p = NULL; - amdsmi_get_cpu_socket_power_p = NULL; - amdsmi_get_cpu_socket_power_cap_p = NULL; - amdsmi_get_cpu_socket_power_cap_max_p = NULL; - amdsmi_get_cpu_core_energy_p = NULL; - amdsmi_get_cpu_socket_energy_p = NULL; - amdsmi_get_cpu_smu_fw_version_p = NULL; - amdsmi_get_threads_per_core_p = NULL; - amdsmi_get_cpu_family_p = NULL; - amdsmi_get_cpu_model_p = NULL; - amdsmi_get_cpu_core_boostlimit_p = NULL; - amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; - amdsmi_get_cpu_socket_freq_range_p = NULL; - amdsmi_get_cpu_core_current_freq_limit_p = NULL; - amdsmi_get_minmax_bandwidth_between_processors_p = NULL; - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; - amdsmi_get_cpu_dimm_power_consumption_p = NULL; - amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; + amdsmi_get_cpu_handles_p = NULL; + amdsmi_get_cpucore_handles_p = NULL; + amdsmi_get_cpu_socket_power_p = NULL; + amdsmi_get_cpu_socket_power_cap_p = NULL; + amdsmi_get_cpu_socket_power_cap_max_p = NULL; + amdsmi_get_cpu_core_energy_p = NULL; + amdsmi_get_cpu_socket_energy_p = NULL; + amdsmi_get_cpu_smu_fw_version_p = NULL; + amdsmi_get_threads_per_core_p = NULL; + amdsmi_get_cpu_family_p = NULL; + amdsmi_get_cpu_model_p = NULL; + amdsmi_get_cpu_core_boostlimit_p = NULL; + amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; + amdsmi_get_cpu_socket_freq_range_p = NULL; + amdsmi_get_cpu_core_current_freq_limit_p = NULL; + amdsmi_get_minmax_bandwidth_between_processors_p = NULL; + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; + amdsmi_get_cpu_dimm_power_consumption_p = NULL; + amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; #endif - if (amds_dlp) { - dlclose(amds_dlp); - amds_dlp = NULL; - } - return PAPI_OK; + if (amds_dlp) { + dlclose(amds_dlp); + amds_dlp = NULL; + } + return PAPI_OK; } /* Initialize AMD SMI library and discover devices */ int amds_init(void) { - // Check if already initialized to avoid expensive re-initialization - if (device_handles != NULL && device_count > 0) { - return PAPI_OK; // Already initialized - } - int papi_errno = load_amdsmi_sym(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - //AMDSMI_INIT_AMD_CPUS - amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); - if (status != AMDSMI_STATUS_SUCCESS) { - strcpy(error_string, "amdsmi_init failed"); - return PAPI_ENOSUPP; - } - htable_init(&htable); - // Discover GPU and CPU devices - uint32_t socket_count = 0; - status = amdsmi_get_socket_handles_p(&socket_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { - sprintf(error_string, "Error discovering sockets or no AMD socket found."); - papi_errno = PAPI_ENOEVNT; - goto fn_fail; - } - amdsmi_socket_handle *sockets = (amdsmi_socket_handle *) papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); - if (!sockets) { - papi_errno = PAPI_ENOMEM; - goto fn_fail; - } - status = amdsmi_get_socket_handles_p(&socket_count, sockets); - if (status != AMDSMI_STATUS_SUCCESS) { - sprintf(error_string, "Error getting socket handles."); - papi_free(sockets); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; - } - device_count = 0; - uint32_t total_gpu_count = 0; - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); - if (st == AMDSMI_STATUS_SUCCESS) { - total_gpu_count += gpu_count_local; - } - } - uint32_t total_cpu_count = 0; + // Check if already initialized to avoid expensive re-initialization + if (device_handles != NULL && device_count > 0) { + return PAPI_OK; // Already initialized + } + int papi_errno = load_amdsmi_sym(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + // AMDSMI_INIT_AMD_CPUS + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); + if (status != AMDSMI_STATUS_SUCCESS) { + strcpy(error_string, "amdsmi_init failed"); + return PAPI_ENOSUPP; + } + htable_init(&htable); + // Discover GPU and CPU devices + uint32_t socket_count = 0; + status = amdsmi_get_socket_handles_p(&socket_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { + sprintf(error_string, "Error discovering sockets or no AMD socket found."); + papi_errno = PAPI_ENOEVNT; + goto fn_fail; + } + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *)papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); + if (!sockets) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; + } + status = amdsmi_get_socket_handles_p(&socket_count, sockets); + if (status != AMDSMI_STATUS_SUCCESS) { + sprintf(error_string, "Error getting socket handles."); + papi_free(sockets); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; + } + device_count = 0; + uint32_t total_gpu_count = 0; + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + if (st == AMDSMI_STATUS_SUCCESS) { + total_gpu_count += gpu_count_local; + } + } + uint32_t total_cpu_count = 0; #ifndef AMDSMI_DISABLE_ESMI - status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) { - total_cpu_count = 0; - } + status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) { + total_cpu_count = 0; + } #endif - if (total_gpu_count == 0 && total_cpu_count == 0) { - sprintf(error_string, "No AMD GPU or CPU devices found."); - papi_errno = PAPI_ENOEVNT; - papi_free(sockets); - goto fn_fail; - } - device_handles = (amdsmi_processor_handle *) papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); - if (!device_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for device handles."); - papi_free(sockets); - goto fn_fail; - } - // Retrieve GPU processor handles for each socket - optimized to reduce allocations - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { - continue; // no GPU on this socket or error - } - // Use the main device_handles array directly to avoid extra allocation - amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); - if (status == AMDSMI_STATUS_SUCCESS) { - device_count += gpu_count_local; - } - } + if (total_gpu_count == 0 && total_cpu_count == 0) { + sprintf(error_string, "No AMD GPU or CPU devices found."); + papi_errno = PAPI_ENOEVNT; papi_free(sockets); - // Set gpu_count for use in event table initialization - gpu_count = device_count; // All devices added so far are GPUs + goto fn_fail; + } + device_handles = (amdsmi_processor_handle *)papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); + if (!device_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for device handles."); + papi_free(sockets); + goto fn_fail; + } + // Retrieve GPU processor handles for each socket - optimized to reduce + // allocations + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { + continue; // no GPU on this socket or error + } + // Use the main device_handles array directly to avoid extra allocation + amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); + if (status == AMDSMI_STATUS_SUCCESS) { + device_count += gpu_count_local; + } + } + papi_free(sockets); + // Set gpu_count for use in event table initialization + gpu_count = device_count; // All devices added so far are GPUs #ifndef AMDSMI_DISABLE_ESMI - // Retrieve CPU socket handles - amdsmi_processor_handle *cpu_handles = NULL; - if (total_cpu_count > 0) { - cpu_handles = (amdsmi_processor_handle *) papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); - if (!cpu_handles) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU handles."); - goto fn_fail; - } - status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); - if (status != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_handles); - cpu_handles = NULL; - total_cpu_count = 0; - } + // Retrieve CPU socket handles + amdsmi_processor_handle *cpu_handles = NULL; + if (total_cpu_count > 0) { + cpu_handles = (amdsmi_processor_handle *)papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); + if (!cpu_handles) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU handles."); + goto fn_fail; + } + status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); + if (status != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_handles); + cpu_handles = NULL; + total_cpu_count = 0; } - if (cpu_handles) { - for (uint32_t i = 0; i < total_cpu_count; ++i) { - device_handles[device_count++] = cpu_handles[i]; - } - papi_free(cpu_handles); + } + if (cpu_handles) { + for (uint32_t i = 0; i < total_cpu_count; ++i) { + device_handles[device_count++] = cpu_handles[i]; } + papi_free(cpu_handles); + } #endif - // Set global GPU/CPU counts - gpu_count = total_gpu_count; - cpu_count = total_cpu_count; - // Retrieve CPU core handles for each CPU socket - if (cpu_count > 0) { - cpu_core_handles = (amdsmi_processor_handle **) papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); - cores_per_socket = (uint32_t *) papi_calloc(cpu_count, sizeof(uint32_t)); - if (!cpu_core_handles || !cores_per_socket) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles."); - if (cpu_core_handles) papi_free(cpu_core_handles); - if (cores_per_socket) papi_free(cores_per_socket); - goto fn_fail; - } - for (uint32_t s = 0; s < cpu_count; ++s) { - uint32_t core_count = 0; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); - if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { - cores_per_socket[s] = 0; - cpu_core_handles[s] = NULL; - continue; - } - cpu_core_handles[s] = (amdsmi_processor_handle *) papi_calloc(core_count, sizeof(amdsmi_processor_handle)); - if (!cpu_core_handles[s]) { - papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); - for (uint32_t t = 0; t < s; ++t) { - if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); - } - papi_free(cpu_core_handles); - papi_free(cores_per_socket); - goto fn_fail; - } - st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], &core_count); - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_core_handles[s]); - cpu_core_handles[s] = NULL; - cores_per_socket[s] = 0; - } else { - cores_per_socket[s] = core_count; - } - } - } - // Initialize the native event table for all discovered metrics - papi_errno = init_event_table(); - if (papi_errno != PAPI_OK) { - sprintf(error_string, "Error while initializing the native event table."); - goto fn_fail; - } - ntv_table_p = &ntv_table; - return PAPI_OK; -fn_fail: - htable_shutdown(htable); - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - device_count = 0; - } - // sockets already freed if allocated - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); + // Set global GPU/CPU counts + gpu_count = total_gpu_count; + cpu_count = total_cpu_count; + // Retrieve CPU core handles for each CPU socket + if (cpu_count > 0) { + cpu_core_handles = (amdsmi_processor_handle **)papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); + cores_per_socket = (uint32_t *)papi_calloc(cpu_count, sizeof(uint32_t)); + if (!cpu_core_handles || !cores_per_socket) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles."); + if (cpu_core_handles) + papi_free(cpu_core_handles); + if (cores_per_socket) + papi_free(cores_per_socket); + goto fn_fail; + } + for (uint32_t s = 0; s < cpu_count; ++s) { + uint32_t core_count = 0; + amdsmi_status_t st = + amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); + if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { + cores_per_socket[s] = 0; + cpu_core_handles[s] = NULL; + continue; + } + cpu_core_handles[s] = (amdsmi_processor_handle *)papi_calloc(core_count, sizeof(amdsmi_processor_handle)); + if (!cpu_core_handles[s]) { + papi_errno = PAPI_ENOMEM; + sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); + for (uint32_t t = 0; t < s; ++t) { + if (cpu_core_handles[t]) + papi_free(cpu_core_handles[t]); } papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { papi_free(cores_per_socket); - cores_per_socket = NULL; - } - amdsmi_shut_down_p(); - unload_amdsmi_sym(); - return papi_errno; + goto fn_fail; + } + st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], + &core_count); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_core_handles[s]); + cpu_core_handles[s] = NULL; + cores_per_socket[s] = 0; + } else { + cores_per_socket[s] = core_count; + } + } + } + // Initialize the native event table for all discovered metrics + papi_errno = init_event_table(); + if (papi_errno != PAPI_OK) { + sprintf(error_string, "Error while initializing the native event table."); + goto fn_fail; + } + ntv_table_p = &ntv_table; + return PAPI_OK; +fn_fail: + htable_shutdown(htable); + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + device_count = 0; + } + // sockets already freed if allocated + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) + papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + amdsmi_shut_down_p(); + unload_amdsmi_sym(); + return papi_errno; } int amds_shutdown(void) { - shutdown_event_table(); - shutdown_device_table(); - htable_shutdown(htable); - amdsmi_shut_down_p(); // shutdown AMD SMI library - return unload_amdsmi_sym(); + shutdown_event_table(); + shutdown_device_table(); + htable_shutdown(htable); + amdsmi_shut_down_p(); // shutdown AMD SMI library + return unload_amdsmi_sym(); } int amds_err_get_last(const char **err_string) { - if (err_string) *err_string = error_string; - return PAPI_OK; + if (err_string) + *err_string = error_string; + return PAPI_OK; } /* Event enumeration: iterate over native events */ -int -amds_evt_enum(unsigned int *EventCode, int modifier) -{ - if (modifier == PAPI_ENUM_FIRST) { - if (ntv_table_p->count == 0) { - return PAPI_ENOEVNT; - } - *EventCode = 0; - return PAPI_OK; - } else if (modifier == PAPI_ENUM_EVENTS) { - if (*EventCode + 1 < (unsigned int) ntv_table_p->count) { - *EventCode = *EventCode + 1; - return PAPI_OK; - } else { - return PAPI_ENOEVNT; - } +int amds_evt_enum(unsigned int *EventCode, int modifier) { + if (modifier == PAPI_ENUM_FIRST) { + if (ntv_table_p->count == 0) { + return PAPI_ENOEVNT; } - return PAPI_EINVAL; + *EventCode = 0; + return PAPI_OK; + } else if (modifier == PAPI_ENUM_EVENTS) { + if (*EventCode + 1 < (unsigned int)ntv_table_p->count) { + *EventCode = *EventCode + 1; + return PAPI_OK; + } else { + return PAPI_ENOEVNT; + } + } + return PAPI_EINVAL; } int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { - if (EventCode >= (unsigned int) ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(name, ntv_table_p->events[EventCode].name, len); - return PAPI_OK; + if (EventCode >= (unsigned int)ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(name, ntv_table_p->events[EventCode].name, len); + return PAPI_OK; } int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { - native_event_t *event = NULL; - int hret = htable_find(htable, name, (void **) &event); - if (hret != HTABLE_SUCCESS) { - return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; - } - *EventCode = event->id; - return PAPI_OK; + native_event_t *event = NULL; + int hret = htable_find(htable, name, (void **)&event); + if (hret != HTABLE_SUCCESS) { + return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; + } + *EventCode = event->id; + return PAPI_OK; } int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { - if (EventCode >= (unsigned int) ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(descr, ntv_table_p->events[EventCode].descr, len); - return PAPI_OK; + if (EventCode >= (unsigned int)ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(descr, ntv_table_p->events[EventCode].descr, len); + return PAPI_OK; } /* Context management: open/close, start/stop, read/write, reset */ struct amds_ctx { - int state; - unsigned int *events_id; - int num_events; - long long *counters; - int32_t device_mask; + int state; + unsigned int *events_id; + int num_events; + long long *counters; + int32_t device_mask; }; -int -amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) -{ - amds_ctx_t new_ctx = (amds_ctx_t) papi_calloc(1, sizeof(struct amds_ctx)); - if (new_ctx == NULL) { - return PAPI_ENOMEM; - } - new_ctx->events_id = event_ids; // Store pointer (original approach) - new_ctx->num_events = num_events; - new_ctx->counters = (long long *) papi_calloc(num_events, sizeof(long long)); - if (new_ctx->counters == NULL) { - papi_free(new_ctx); - return PAPI_ENOMEM; - } - // Acquire devices needed by these events to avoid conflicts - int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); - if (papi_errno != PAPI_OK) { - papi_free(new_ctx->counters); - papi_free(new_ctx); - return papi_errno; - } - *ctx = new_ctx; - return PAPI_OK; -} -int -amds_ctx_close(amds_ctx_t ctx) -{ - if (!ctx) return PAPI_OK; - // release device usage - release_devices(&ctx->device_mask); - papi_free(ctx->counters); - papi_free(ctx); - return PAPI_OK; +int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { + amds_ctx_t new_ctx = (amds_ctx_t)papi_calloc(1, sizeof(struct amds_ctx)); + if (new_ctx == NULL) { + return PAPI_ENOMEM; + } + new_ctx->events_id = event_ids; // Store pointer (original approach) + new_ctx->num_events = num_events; + new_ctx->counters = (long long *)papi_calloc(num_events, sizeof(long long)); + if (new_ctx->counters == NULL) { + papi_free(new_ctx); + return PAPI_ENOMEM; + } + // Acquire devices needed by these events to avoid conflicts + int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); + if (papi_errno != PAPI_OK) { + papi_free(new_ctx->counters); + papi_free(new_ctx); + return papi_errno; + } + *ctx = new_ctx; + return PAPI_OK; } -int -amds_ctx_start(amds_ctx_t ctx) -{ - // No additional actions needed to start in this design (all reads are on-demand) - ctx->state |= AMDS_EVENTS_RUNNING; +int amds_ctx_close(amds_ctx_t ctx) { + if (!ctx) return PAPI_OK; -} -int -amds_ctx_stop(amds_ctx_t ctx) -{ - if (!(ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_OK; - } - ctx->state &= ~AMDS_EVENTS_RUNNING; + // release device usage + release_devices(&ctx->device_mask); + papi_free(ctx->counters); + papi_free(ctx); + return PAPI_OK; +} +int amds_ctx_start(amds_ctx_t ctx) { + // No additional actions needed to start in this design (all reads are + // on-demand) + ctx->state |= AMDS_EVENTS_RUNNING; + return PAPI_OK; +} +int amds_ctx_stop(amds_ctx_t ctx) { + if (!(ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_OK; -} -int -amds_ctx_read(amds_ctx_t ctx, long long **counts) -{ - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - ctx->counters[i] = (long long) ntv_table_p->events[id].value; - } - *counts = ctx->counters; - return papi_errno; -} -int -amds_ctx_write(amds_ctx_t ctx, long long *counts) -{ - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = counts[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } + } + ctx->state &= ~AMDS_EVENTS_RUNNING; + return PAPI_OK; +} +int amds_ctx_read(amds_ctx_t ctx, long long **counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + ctx->counters[i] = (long long)ntv_table_p->events[id].value; + } + *counts = ctx->counters; + return papi_errno; +} +int amds_ctx_write(amds_ctx_t ctx, long long *counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = counts[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; } - return papi_errno; + } + return papi_errno; } -int -amds_ctx_reset(amds_ctx_t ctx) -{ - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = 0; - ctx->counters[i] = 0; - } - return PAPI_OK; +int amds_ctx_reset(amds_ctx_t ctx) { + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = 0; + ctx->counters[i] = 0; + } + return PAPI_OK; } /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { - // Check if event table is already initialized - if (ntv_table.count > 0 && ntv_table.events != NULL) { - return PAPI_OK; // Already initialized, skip expensive rebuild - } - ntv_table.count = 0; - int idx = 0; - // Safety check - if no devices, return early - if (device_count <= 0) { - ntv_table.events = NULL; - return PAPI_OK; - } - // Keep original allocation approach - ntv_table.events = (native_event_t *) papi_calloc(MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); - if (!ntv_table.events) { + // Check if event table is already initialized + if (ntv_table.count > 0 && ntv_table.events != NULL) { + return PAPI_OK; // Already initialized, skip expensive rebuild + } + ntv_table.count = 0; + int idx = 0; + // Safety check - if no devices, return early + if (device_count <= 0) { + ntv_table.events = NULL; + return PAPI_OK; + } + // Keep original allocation approach + ntv_table.events = (native_event_t *)papi_calloc(MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); + if (!ntv_table.events) { + return PAPI_ENOMEM; + } + char name_buf[PAPI_MAX_STR_LEN]; + char descr_buf[PAPI_MAX_STR_LEN]; + // Define sensor arrays first + amdsmi_temperature_type_t temp_sensors[] = { + AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, + AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX}; + const int num_temp_sensors = sizeof(temp_sensors) / sizeof(temp_sensors[0]); + const amdsmi_temperature_metric_t temp_metrics[] = { + AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, + AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, + AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST}; + const char *temp_metric_names[] = {"temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", + "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", "temp_crit_min", + "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest"}; + /* Temperature sensors - device-level cache + individual testing */ + for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + for (int si = 0; si < num_temp_sensors && si < 8; ++si) { + // Test each sensor individually first + int64_t sensor_test_val; + if (!amdsmi_get_temp_metric_p || + amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { + continue; // Skip this specific sensor if it doesn't work + } + // Register metrics for this working sensor, testing each metric + // individually + for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); ++mi) { + // Bounds check to prevent buffer overflow + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; // Too many events + } + // Test this specific metric on this specific sensor + int64_t metric_val; + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { + continue; /* skip this specific metric if not supported */ + } + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int)temp_sensors[si]); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, temp_metric_names[mi], (int)temp_sensors[si]); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) { + return PAPI_ENOMEM; + } + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = temp_metrics[mi]; + ev->subvariant = temp_sensors[si]; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_temp_metric; + htable_insert(htable, ev->name, ev); + idx++; + } + } + } + /* Fan metrics - test each device individually */ + for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + /* Register Fan RPM if available */ + int64_t dummy_rpm; + if (amdsmi_get_gpu_fan_rpms_p && amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); + native_event_t *ev_rpm = &ntv_table.events[idx]; + ev_rpm->id = idx; + ev_rpm->name = strdup(name_buf); + ev_rpm->descr = strdup(descr_buf); + if (!ev_rpm->name || !ev_rpm->descr) { return PAPI_ENOMEM; + } + ev_rpm->device = d; + ev_rpm->value = 0; + ev_rpm->mode = PAPI_MODE_READ; + ev_rpm->variant = 0; + ev_rpm->subvariant = 0; + ev_rpm->open_func = open_simple; + ev_rpm->close_func = close_simple; + ev_rpm->start_func = start_simple; + ev_rpm->stop_func = stop_simple; + ev_rpm->access_func = access_amdsmi_fan_rpms; + htable_insert(htable, ev_rpm->name, ev_rpm); + idx++; + } + /* Register Fan SPEED if available */ + int64_t dummy_speed; + if (amdsmi_get_gpu_fan_speed_p && amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); + native_event_t *ev_fan = &ntv_table.events[idx]; + ev_fan->id = idx; + ev_fan->name = strdup(name_buf); + ev_fan->descr = strdup(descr_buf); + if (!ev_fan->name || !ev_fan->descr) { + return PAPI_ENOMEM; + } + ev_fan->device = d; + ev_fan->value = 0; + ev_fan->mode = PAPI_MODE_READ; + ev_fan->variant = 0; + ev_fan->subvariant = 0; + ev_fan->open_func = open_simple; + ev_fan->close_func = close_simple; + ev_fan->start_func = start_simple; + ev_fan->stop_func = stop_simple; + ev_fan->access_func = access_amdsmi_fan_speed; + htable_insert(htable, ev_fan->name, ev_fan); + idx++; + } + /* Register Fan Max Speed - always probe directly */ + int64_t dummy_max; + if (amdsmi_get_gpu_fan_speed_max_p && amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); + native_event_t *ev_fanmax = &ntv_table.events[idx]; + ev_fanmax->id = idx; + ev_fanmax->name = strdup(name_buf); + ev_fanmax->descr = strdup(descr_buf); + if (!ev_fanmax->name || !ev_fanmax->descr) { + return PAPI_ENOMEM; + } + ev_fanmax->device = d; + ev_fanmax->value = 0; + ev_fanmax->mode = PAPI_MODE_READ; + ev_fanmax->variant = 0; + ev_fanmax->subvariant = 0; + ev_fanmax->open_func = open_simple; + ev_fanmax->close_func = close_simple; + ev_fanmax->start_func = start_simple; + ev_fanmax->stop_func = stop_simple; + ev_fanmax->access_func = access_amdsmi_fan_speed_max; + htable_insert(htable, ev_fanmax->name, ev_fanmax); + idx++; + } + } + /* VRAM memory metrics - test each device individually */ + for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + /* total VRAM bytes - test directly */ + uint64_t dummy_total; + if (amdsmi_get_total_memory_p && + amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) { + return PAPI_ENOMEM; + } + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_mem_total; + htable_insert(htable, ev->name, ev); + ++idx; + } + /* used VRAM bytes - test directly */ + uint64_t dummy_usage; + if (amdsmi_get_memory_usage_p && + amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) { + return PAPI_ENOMEM; + } + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = AMDSMI_MEM_TYPE_VRAM; + ev->subvariant = 0; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_mem_usage; + htable_insert(htable, ev->name, ev); + ++idx; + } + } + /* GPU power metrics: average power, power cap, and cap range */ + for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + // Register power average event - test directly + amdsmi_power_info_t dummy_power; + if (amdsmi_get_power_info_p && amdsmi_get_power_info_p(device_handles[d], &dummy_power) == AMDSMI_STATUS_SUCCESS) { + // Average power consumption (in Watts or microWatts) + snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); + native_event_t *ev_pwr_avg = &ntv_table.events[idx]; + ev_pwr_avg->id = idx; + ev_pwr_avg->name = strdup(name_buf); + ev_pwr_avg->descr = strdup(descr_buf); + ev_pwr_avg->device = d; + ev_pwr_avg->value = 0; + ev_pwr_avg->mode = PAPI_MODE_READ; + ev_pwr_avg->variant = 0; + ev_pwr_avg->subvariant = 0; + ev_pwr_avg->open_func = open_simple; + ev_pwr_avg->close_func = close_simple; + ev_pwr_avg->start_func = start_simple; + ev_pwr_avg->stop_func = stop_simple; + ev_pwr_avg->access_func = access_amdsmi_power_average; + htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); + idx++; + } + // Register power cap events (if power cap functions are available) - test + // directly + amdsmi_power_cap_info_t dummy_cap_info; + if (amdsmi_get_power_cap_info_p && amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == AMDSMI_STATUS_SUCCESS) { + // Current power cap limit + snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); + native_event_t *ev_pcap = &ntv_table.events[idx]; + ev_pcap->id = idx; + ev_pcap->name = strdup(name_buf); + ev_pcap->descr = strdup(descr_buf); + ev_pcap->device = d; + ev_pcap->value = 0; + ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; + ev_pcap->variant = 0; + ev_pcap->subvariant = 0; + ev_pcap->open_func = open_simple; + ev_pcap->close_func = close_simple; + ev_pcap->start_func = start_simple; + ev_pcap->stop_func = stop_simple; + ev_pcap->access_func = access_amdsmi_power_cap; + htable_insert(htable, ev_pcap->name, ev_pcap); + idx++; + // Minimum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); + native_event_t *ev_pcap_min = &ntv_table.events[idx]; + ev_pcap_min->id = idx; + ev_pcap_min->name = strdup(name_buf); + ev_pcap_min->descr = strdup(descr_buf); + ev_pcap_min->device = d; + ev_pcap_min->value = 0; + ev_pcap_min->mode = PAPI_MODE_READ; + ev_pcap_min->variant = 1; // variant 1 => min + ev_pcap_min->subvariant = 0; + ev_pcap_min->open_func = open_simple; + ev_pcap_min->close_func = close_simple; + ev_pcap_min->start_func = start_simple; + ev_pcap_min->stop_func = stop_simple; + ev_pcap_min->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_min->name, ev_pcap_min); + idx++; + // Maximum allowed power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); + native_event_t *ev_pcap_max = &ntv_table.events[idx]; + ev_pcap_max->id = idx; + ev_pcap_max->name = strdup(name_buf); + ev_pcap_max->descr = strdup(descr_buf); + ev_pcap_max->device = d; + ev_pcap_max->value = 0; + ev_pcap_max->mode = PAPI_MODE_READ; + ev_pcap_max->variant = 2; // variant 2 => max + ev_pcap_max->subvariant = 0; + ev_pcap_max->open_func = open_simple; + ev_pcap_max->close_func = close_simple; + ev_pcap_max->start_func = start_simple; + ev_pcap_max->stop_func = stop_simple; + ev_pcap_max->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_max->name, ev_pcap_max); + idx++; + } + } + /* PCIe throughput and replay counter metrics */ + uint64_t tx = 0, rx = 0, pkt = 0; + amdsmi_status_t st_thr = amdsmi_get_gpu_pci_throughput_p(device_handles[0], &tx, &rx, &pkt); + + for (int d = 0; d < gpu_count; ++d) { + if (st_thr == AMDSMI_STATUS_SUCCESS) { + /* bytes sent per second */ + snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); + native_event_t *ev_tx = &ntv_table.events[idx]; + ev_tx->id = idx; + ev_tx->name = strdup(name_buf); + ev_tx->descr = strdup(descr_buf); + ev_tx->device = d; + ev_tx->value = 0; + ev_tx->mode = PAPI_MODE_READ; + ev_tx->variant = 0; /* sent */ + ev_tx->subvariant = 0; + ev_tx->open_func = open_simple; + ev_tx->close_func = close_simple; + ev_tx->start_func = start_simple; + ev_tx->stop_func = stop_simple; + ev_tx->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_tx->name, ev_tx); + ++idx; + /* bytes received per second */ + snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); + native_event_t *ev_rx = &ntv_table.events[idx]; + ev_rx->id = idx; + ev_rx->name = strdup(name_buf); + ev_rx->descr = strdup(descr_buf); + ev_rx->device = d; + ev_rx->value = 0; + ev_rx->mode = PAPI_MODE_READ; + ev_rx->variant = 1; /* received */ + ev_rx->subvariant = 0; + ev_rx->open_func = open_simple; + ev_rx->close_func = close_simple; + ev_rx->start_func = start_simple; + ev_rx->stop_func = stop_simple; + ev_rx->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_rx->name, ev_rx); + ++idx; + /* max packet size */ + snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); + native_event_t *ev_pkt = &ntv_table.events[idx]; + ev_pkt->id = idx; + ev_pkt->name = strdup(name_buf); + ev_pkt->descr = strdup(descr_buf); + ev_pkt->device = d; + ev_pkt->value = 0; + ev_pkt->mode = PAPI_MODE_READ; + ev_pkt->variant = 2; /* max pkt */ + ev_pkt->subvariant = 0; + ev_pkt->open_func = open_simple; + ev_pkt->close_func = close_simple; + ev_pkt->start_func = start_simple; + ev_pkt->stop_func = stop_simple; + ev_pkt->access_func = access_amdsmi_pci_throughput; + htable_insert(htable, ev_pkt->name, ev_pkt); + ++idx; + } + uint64_t replay = 0; + if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); + native_event_t *ev_rep = &ntv_table.events[idx]; + ev_rep->id = idx; + ev_rep->name = strdup(name_buf); + ev_rep->descr = strdup(descr_buf); + ev_rep->device = d; + ev_rep->value = 0; + ev_rep->mode = PAPI_MODE_READ; + ev_rep->variant = 0; + ev_rep->subvariant = 0; + ev_rep->open_func = open_simple; + ev_rep->close_func = close_simple; + ev_rep->start_func = start_simple; + ev_rep->stop_func = stop_simple; + ev_rep->access_func = access_amdsmi_pci_replay_counter; + htable_insert(htable, ev_rep->name, ev_rep); + ++idx; + } + } + /* Additional GPU metrics and system information */ + /* GPU engine utilization metrics - test each device individually */ + for (int d = 0; d < gpu_count; ++d) { + // Safety check for device handle + if (!device_handles || !device_handles[d]) { + continue; + } + // Register GFX activity event - test directly + amdsmi_engine_usage_t dummy_usage; + if (amdsmi_get_gpu_activity_p && amdsmi_get_gpu_activity_p(device_handles[d], &dummy_usage) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); + native_event_t *ev_gfx = &ntv_table.events[idx]; + ev_gfx->id = idx; + ev_gfx->name = strdup(name_buf); + ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; + ev_gfx->value = 0; + ev_gfx->mode = PAPI_MODE_READ; + ev_gfx->variant = 0; + ev_gfx->subvariant = 0; + ev_gfx->open_func = open_simple; + ev_gfx->close_func = close_simple; + ev_gfx->start_func = start_simple; + ev_gfx->stop_func = stop_simple; + ev_gfx->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_gfx->name, ev_gfx); + idx++; + snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); + native_event_t *ev_umc = &ntv_table.events[idx]; + ev_umc->id = idx; + ev_umc->name = strdup(name_buf); + ev_umc->descr = strdup(descr_buf); + ev_umc->device = d; + ev_umc->value = 0; + ev_umc->mode = PAPI_MODE_READ; + ev_umc->variant = 1; + ev_umc->subvariant = 0; + ev_umc->open_func = open_simple; + ev_umc->close_func = close_simple; + ev_umc->start_func = start_simple; + ev_umc->stop_func = stop_simple; + ev_umc->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_umc->name, ev_umc); + idx++; + snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); + native_event_t *ev_mm = &ntv_table.events[idx]; + ev_mm->id = idx; + ev_mm->name = strdup(name_buf); + ev_mm->descr = strdup(descr_buf); + ev_mm->device = d; + ev_mm->value = 0; + ev_mm->mode = PAPI_MODE_READ; + ev_mm->variant = 2; + ev_mm->subvariant = 0; + ev_mm->open_func = open_simple; + ev_mm->close_func = close_simple; + ev_mm->start_func = start_simple; + ev_mm->stop_func = stop_simple; + ev_mm->access_func = access_amdsmi_gpu_activity; + htable_insert(htable, ev_mm->name, ev_mm); + idx++; + } + } + /* GPU clock frequency levels */ + for (int d = 0; d < gpu_count; ++d) { + amdsmi_frequencies_t f; + if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { + continue; + } + // Number of supported frequencies + snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); + native_event_t *ev_clk_count = &ntv_table.events[idx]; + ev_clk_count->id = idx; + ev_clk_count->name = strdup(name_buf); + ev_clk_count->descr = strdup(descr_buf); + ev_clk_count->device = d; + ev_clk_count->value = 0; + ev_clk_count->mode = PAPI_MODE_READ; + ev_clk_count->variant = 0; + ev_clk_count->subvariant = 0; + ev_clk_count->open_func = open_simple; + ev_clk_count->close_func = close_simple; + ev_clk_count->start_func = start_simple; + ev_clk_count->stop_func = stop_simple; + ev_clk_count->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_count->name, ev_clk_count); + idx++; + // Current clock frequency + snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); + native_event_t *ev_clk_cur = &ntv_table.events[idx]; + ev_clk_cur->id = idx; + ev_clk_cur->name = strdup(name_buf); + ev_clk_cur->descr = strdup(descr_buf); + ev_clk_cur->device = d; + ev_clk_cur->value = 0; + ev_clk_cur->mode = PAPI_MODE_READ; + ev_clk_cur->variant = 0; + ev_clk_cur->subvariant = 1; + ev_clk_cur->open_func = open_simple; + ev_clk_cur->close_func = close_simple; + ev_clk_cur->start_func = start_simple; + ev_clk_cur->stop_func = stop_simple; + ev_clk_cur->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_cur->name, ev_clk_cur); + idx++; + // Supported frequency levels + for (uint32_t fi = 0; fi < f.num_supported; ++fi) { + snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); + native_event_t *ev_clk_lvl = &ntv_table.events[idx]; + ev_clk_lvl->id = idx; + ev_clk_lvl->name = strdup(name_buf); + ev_clk_lvl->descr = strdup(descr_buf); + ev_clk_lvl->device = d; + ev_clk_lvl->value = 0; + ev_clk_lvl->mode = PAPI_MODE_READ; + ev_clk_lvl->variant = 0; + ev_clk_lvl->subvariant = fi + 2; + ev_clk_lvl->open_func = open_simple; + ev_clk_lvl->close_func = close_simple; + ev_clk_lvl->start_func = start_simple; + ev_clk_lvl->stop_func = stop_simple; + ev_clk_lvl->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); + idx++; + } + } + /* GPU identification and topology metrics */ + for (int d = 0; d < gpu_count; ++d) { + uint16_t id16; + uint64_t id64; + // amdsmi_virtualization_mode_t vmode; + int32_t numa; + // GPU ID + if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); + native_event_t *ev_id = &ntv_table.events[idx]; + ev_id->id = idx; + ev_id->name = strdup(name_buf); + ev_id->descr = strdup(descr_buf); + ev_id->device = d; + ev_id->value = 0; + ev_id->mode = PAPI_MODE_READ; + ev_id->variant = 0; + ev_id->subvariant = 0; + ev_id->open_func = open_simple; + ev_id->close_func = close_simple; + ev_id->start_func = start_simple; + ev_id->stop_func = stop_simple; + ev_id->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_id->name, ev_id); + idx++; + } + // GPU Revision + if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); + native_event_t *ev_rev = &ntv_table.events[idx]; + ev_rev->id = idx; + ev_rev->name = strdup(name_buf); + ev_rev->descr = strdup(descr_buf); + ev_rev->device = d; + ev_rev->value = 0; + ev_rev->mode = PAPI_MODE_READ; + ev_rev->variant = 1; + ev_rev->subvariant = 0; + ev_rev->open_func = open_simple; + ev_rev->close_func = close_simple; + ev_rev->start_func = start_simple; + ev_rev->stop_func = stop_simple; + ev_rev->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_rev->name, ev_rev); + idx++; + } + // GPU Subsystem ID + if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); + native_event_t *ev_subid = &ntv_table.events[idx]; + ev_subid->id = idx; + ev_subid->name = strdup(name_buf); + ev_subid->descr = strdup(descr_buf); + ev_subid->device = d; + ev_subid->value = 0; + ev_subid->mode = PAPI_MODE_READ; + ev_subid->variant = 2; + ev_subid->subvariant = 0; + ev_subid->open_func = open_simple; + ev_subid->close_func = close_simple; + ev_subid->start_func = start_simple; + ev_subid->stop_func = stop_simple; + ev_subid->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_subid->name, ev_subid); + idx++; + } + // GPU BDF ID + if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); + native_event_t *ev_bdf = &ntv_table.events[idx]; + ev_bdf->id = idx; + ev_bdf->name = strdup(name_buf); + ev_bdf->descr = strdup(descr_buf); + ev_bdf->device = d; + ev_bdf->value = 0; + ev_bdf->mode = PAPI_MODE_READ; + ev_bdf->variant = 3; + ev_bdf->subvariant = 0; + ev_bdf->open_func = open_simple; + ev_bdf->close_func = close_simple; + ev_bdf->start_func = start_simple; + ev_bdf->stop_func = stop_simple; + ev_bdf->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_bdf->name, ev_bdf); + idx++; + } + /* + // GPU Virtualization Mode + if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), + "gpu_virtualization_mode:device=%d", d); snprintf(descr_buf, + sizeof(descr_buf), "Device %d GPU virtualization mode", d); native_event_t + *ev_vmode = &ntv_table.events[idx]; ev_vmode->id = idx; ev_vmode->name = + strdup(name_buf); ev_vmode->descr = strdup(descr_buf); ev_vmode->device = d; + ev_vmode->value = 0; + ev_vmode->mode = PAPI_MODE_READ; + ev_vmode->variant = 4; + ev_vmode->subvariant = 0; + ev_vmode->open_func = open_simple; + ev_vmode->close_func = close_simple; + ev_vmode->start_func = start_simple; + ev_vmode->stop_func = stop_simple; + ev_vmode->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_vmode->name, ev_vmode); + idx++; } - char name_buf[PAPI_MAX_STR_LEN]; - char descr_buf[PAPI_MAX_STR_LEN]; - // Define sensor arrays first - amdsmi_temperature_type_t temp_sensors[] = { - AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, - AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, - AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, - AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX - }; - const int num_temp_sensors = sizeof(temp_sensors)/sizeof(temp_sensors[0]); - const amdsmi_temperature_metric_t temp_metrics[] = { - AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, - AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, - AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, - AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST - }; - const char *temp_metric_names[] = { - "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", - "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", - "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest" - }; - /* Temperature sensors - device-level cache + individual testing */ - for (int d = 0; d < gpu_count; ++d) { - // Safety check for device handle - if (!device_handles || !device_handles[d]) { - continue; - } - for (int si = 0; si < num_temp_sensors && si < 8; ++si) { - // Test each sensor individually first - int64_t sensor_test_val; - if (!amdsmi_get_temp_metric_p || - amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { - continue; // Skip this specific sensor if it doesn't work - } - // Register metrics for this working sensor, testing each metric individually - for (size_t mi = 0; mi < sizeof(temp_metrics)/sizeof(temp_metrics[0]); ++mi) { - // Bounds check to prevent buffer overflow - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; // Too many events - } - // Test this specific metric on this specific sensor - int64_t metric_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { - continue; /* skip this specific metric if not supported */ - } - snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", - temp_metric_names[mi], d, (int) temp_sensors[si]); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", - d, temp_metric_names[mi], (int) temp_sensors[si]); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) { - return PAPI_ENOMEM; - } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = temp_metrics[mi]; - ev->subvariant = temp_sensors[si]; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, ev); - idx++; - } - } - } - /* Fan metrics - test each device individually */ - for (int d = 0; d < gpu_count; ++d) { - // Safety check for device handle - if (!device_handles || !device_handles[d]) { - continue; - } - /* Register Fan RPM if available */ - int64_t dummy_rpm; - if (amdsmi_get_gpu_fan_rpms_p && - amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "fan_rpms:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan speed in RPM", d); - native_event_t *ev_rpm = &ntv_table.events[idx]; - ev_rpm->id = idx; - ev_rpm->name = strdup(name_buf); - ev_rpm->descr = strdup(descr_buf); - if (!ev_rpm->name || !ev_rpm->descr) { - return PAPI_ENOMEM; - } - ev_rpm->device = d; - ev_rpm->value = 0; - ev_rpm->mode = PAPI_MODE_READ; - ev_rpm->variant = 0; - ev_rpm->subvariant = 0; - ev_rpm->open_func = open_simple; - ev_rpm->close_func = close_simple; - ev_rpm->start_func = start_simple; - ev_rpm->stop_func = stop_simple; - ev_rpm->access_func= access_amdsmi_fan_rpms; - htable_insert(htable, ev_rpm->name, ev_rpm); - idx++; - } - /* Register Fan SPEED if available */ - int64_t dummy_speed; - if (amdsmi_get_gpu_fan_speed_p && - amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "fan_speed:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan speed (0-255 relative)", d); - native_event_t *ev_fan = &ntv_table.events[idx]; - ev_fan->id = idx; - ev_fan->name = strdup(name_buf); - ev_fan->descr = strdup(descr_buf); - if (!ev_fan->name || !ev_fan->descr) { - return PAPI_ENOMEM; - } - ev_fan->device = d; - ev_fan->value = 0; - ev_fan->mode = PAPI_MODE_READ; - ev_fan->variant = 0; - ev_fan->subvariant = 0; - ev_fan->open_func = open_simple; - ev_fan->close_func = close_simple; - ev_fan->start_func = start_simple; - ev_fan->stop_func = stop_simple; - ev_fan->access_func= access_amdsmi_fan_speed; - htable_insert(htable, ev_fan->name, ev_fan); - idx++; - } - /* Register Fan Max Speed - always probe directly */ - int64_t dummy_max; - if (amdsmi_get_gpu_fan_speed_max_p && - amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "fan_rpms_max:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d fan maximum speed in RPM", d); - native_event_t *ev_fanmax = &ntv_table.events[idx]; - ev_fanmax->id = idx; - ev_fanmax->name = strdup(name_buf); - ev_fanmax->descr = strdup(descr_buf); - if (!ev_fanmax->name || !ev_fanmax->descr) { - return PAPI_ENOMEM; - } - ev_fanmax->device = d; - ev_fanmax->value = 0; - ev_fanmax->mode = PAPI_MODE_READ; - ev_fanmax->variant = 0; - ev_fanmax->subvariant = 0; - ev_fanmax->open_func = open_simple; - ev_fanmax->close_func = close_simple; - ev_fanmax->start_func = start_simple; - ev_fanmax->stop_func = stop_simple; - ev_fanmax->access_func= access_amdsmi_fan_speed_max; - htable_insert(htable, ev_fanmax->name, ev_fanmax); - idx++; - } - } - /* VRAM memory metrics - test each device individually */ - for (int d = 0; d < gpu_count; ++d) { - // Safety check for device handle - if (!device_handles || !device_handles[d]) { - continue; - } - /* total VRAM bytes - test directly */ - uint64_t dummy_total; - if (amdsmi_get_total_memory_p && - amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "mem_total_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total VRAM memory (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr= strdup(descr_buf); - if (!ev->name || !ev->descr) { - return PAPI_ENOMEM; - } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant= AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func= access_amdsmi_mem_total; - htable_insert(htable, ev->name, ev); - ++idx; - } - /* used VRAM bytes - test directly */ - uint64_t dummy_usage; - if (amdsmi_get_memory_usage_p && - amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "mem_usage_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d VRAM memory usage (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr= strdup(descr_buf); - if (!ev->name || !ev->descr) { - return PAPI_ENOMEM; - } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant= AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func= access_amdsmi_mem_usage; - htable_insert(htable, ev->name, ev); - ++idx; - } - } - /* GPU power metrics: average power, power cap, and cap range */ - for (int d = 0; d < gpu_count; ++d) { - // Safety check for device handle - if (!device_handles || !device_handles[d]) { - continue; - } - // Register power average event - test directly - amdsmi_power_info_t dummy_power; - if (amdsmi_get_power_info_p && - amdsmi_get_power_info_p(device_handles[d], &dummy_power) == AMDSMI_STATUS_SUCCESS) { - // Average power consumption (in Watts or microWatts) - snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); - native_event_t *ev_pwr_avg = &ntv_table.events[idx]; - ev_pwr_avg->id = idx; - ev_pwr_avg->name = strdup(name_buf); - ev_pwr_avg->descr = strdup(descr_buf); - ev_pwr_avg->device = d; - ev_pwr_avg->value = 0; - ev_pwr_avg->mode = PAPI_MODE_READ; - ev_pwr_avg->variant = 0; - ev_pwr_avg->subvariant = 0; - ev_pwr_avg->open_func = open_simple; - ev_pwr_avg->close_func = close_simple; - ev_pwr_avg->start_func = start_simple; - ev_pwr_avg->stop_func = stop_simple; - ev_pwr_avg->access_func = access_amdsmi_power_average; - htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); - idx++; - } - // Register power cap events (if power cap functions are available) - test directly - amdsmi_power_cap_info_t dummy_cap_info; - if (amdsmi_get_power_cap_info_p && - amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == AMDSMI_STATUS_SUCCESS) { - // Current power cap limit - snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); - native_event_t *ev_pcap = &ntv_table.events[idx]; - ev_pcap->id = idx; - ev_pcap->name = strdup(name_buf); - ev_pcap->descr = strdup(descr_buf); - ev_pcap->device = d; - ev_pcap->value = 0; - ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; - ev_pcap->variant = 0; - ev_pcap->subvariant = 0; - ev_pcap->open_func = open_simple; - ev_pcap->close_func = close_simple; - ev_pcap->start_func = start_simple; - ev_pcap->stop_func = stop_simple; - ev_pcap->access_func = access_amdsmi_power_cap; - htable_insert(htable, ev_pcap->name, ev_pcap); - idx++; - // Minimum allowed power cap - snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); - native_event_t *ev_pcap_min = &ntv_table.events[idx]; - ev_pcap_min->id = idx; - ev_pcap_min->name = strdup(name_buf); - ev_pcap_min->descr = strdup(descr_buf); - ev_pcap_min->device = d; - ev_pcap_min->value = 0; - ev_pcap_min->mode = PAPI_MODE_READ; - ev_pcap_min->variant = 1; // variant 1 => min - ev_pcap_min->subvariant = 0; - ev_pcap_min->open_func = open_simple; - ev_pcap_min->close_func = close_simple; - ev_pcap_min->start_func = start_simple; - ev_pcap_min->stop_func = stop_simple; - ev_pcap_min->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_min->name, ev_pcap_min); - idx++; - // Maximum allowed power cap - snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); - native_event_t *ev_pcap_max = &ntv_table.events[idx]; - ev_pcap_max->id = idx; - ev_pcap_max->name = strdup(name_buf); - ev_pcap_max->descr = strdup(descr_buf); - ev_pcap_max->device = d; - ev_pcap_max->value = 0; - ev_pcap_max->mode = PAPI_MODE_READ; - ev_pcap_max->variant = 2; // variant 2 => max - ev_pcap_max->subvariant = 0; - ev_pcap_max->open_func = open_simple; - ev_pcap_max->close_func = close_simple; - ev_pcap_max->start_func = start_simple; - ev_pcap_max->stop_func = stop_simple; - ev_pcap_max->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_max->name, ev_pcap_max); - idx++; - } - } - /* PCIe throughput and replay counter metrics */ - for (int d = 0; d < gpu_count; ++d) { - uint64_t tx = 0, rx = 0, pkt = 0; - amdsmi_status_t st_thr = - amdsmi_get_gpu_pci_throughput_p(device_handles[d], - &tx, &rx, &pkt); - if (st_thr == AMDSMI_STATUS_SUCCESS) { - /* bytes sent per second */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_sent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe bytes sent per second", d); - native_event_t *ev_tx = &ntv_table.events[idx]; - ev_tx->id = idx; - ev_tx->name = strdup(name_buf); - ev_tx->descr= strdup(descr_buf); - ev_tx->device = d; - ev_tx->value = 0; - ev_tx->mode = PAPI_MODE_READ; - ev_tx->variant= 0; /* sent */ - ev_tx->subvariant = 0; - ev_tx->open_func = open_simple; - ev_tx->close_func = close_simple; - ev_tx->start_func = start_simple; - ev_tx->stop_func = stop_simple; - ev_tx->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_tx->name, ev_tx); - ++idx; - /* bytes received per second */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_received:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe bytes received per second", d); - native_event_t *ev_rx = &ntv_table.events[idx]; - ev_rx->id = idx; - ev_rx->name = strdup(name_buf); - ev_rx->descr= strdup(descr_buf); - ev_rx->device = d; - ev_rx->value = 0; - ev_rx->mode = PAPI_MODE_READ; - ev_rx->variant= 1; /* received */ - ev_rx->subvariant = 0; - ev_rx->open_func = open_simple; - ev_rx->close_func = close_simple; - ev_rx->start_func = start_simple; - ev_rx->stop_func = stop_simple; - ev_rx->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_rx->name, ev_rx); - ++idx; - /* max packet size */ - snprintf(name_buf, sizeof(name_buf), - "pci_throughput_max_packet:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe max packet size (bytes)", d); - native_event_t *ev_pkt = &ntv_table.events[idx]; - ev_pkt->id = idx; - ev_pkt->name = strdup(name_buf); - ev_pkt->descr= strdup(descr_buf); - ev_pkt->device = d; - ev_pkt->value = 0; - ev_pkt->mode = PAPI_MODE_READ; - ev_pkt->variant= 2; /* max pkt */ - ev_pkt->subvariant = 0; - ev_pkt->open_func = open_simple; - ev_pkt->close_func = close_simple; - ev_pkt->start_func = start_simple; - ev_pkt->stop_func = stop_simple; - ev_pkt->access_func= access_amdsmi_pci_throughput; - htable_insert(htable, ev_pkt->name, ev_pkt); - ++idx; - } - uint64_t replay = 0; - if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], - &replay) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), - "pci_replay_counter:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe replay (NAK) counter", d); - native_event_t *ev_rep = &ntv_table.events[idx]; - ev_rep->id = idx; - ev_rep->name = strdup(name_buf); - ev_rep->descr= strdup(descr_buf); - ev_rep->device = d; - ev_rep->value = 0; - ev_rep->mode = PAPI_MODE_READ; - ev_rep->variant= 0; - ev_rep->subvariant = 0; - ev_rep->open_func = open_simple; - ev_rep->close_func = close_simple; - ev_rep->start_func = start_simple; - ev_rep->stop_func = stop_simple; - ev_rep->access_func= access_amdsmi_pci_replay_counter; - htable_insert(htable, ev_rep->name, ev_rep); - ++idx; - } - } - /* Additional GPU metrics and system information */ - /* GPU engine utilization metrics - test each device individually */ - for (int d = 0; d < gpu_count; ++d) { - // Safety check for device handle - if (!device_handles || !device_handles[d]) { - continue; - } - // Register GFX activity event - test directly - amdsmi_engine_usage_t dummy_usage; - if (amdsmi_get_gpu_activity_p && - amdsmi_get_gpu_activity_p(device_handles[d], &dummy_usage) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); - native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; - ev_gfx->name = strdup(name_buf); - ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; - ev_gfx->value = 0; - ev_gfx->mode = PAPI_MODE_READ; - ev_gfx->variant = 0; - ev_gfx->subvariant = 0; - ev_gfx->open_func = open_simple; - ev_gfx->close_func = close_simple; - ev_gfx->start_func = start_simple; - ev_gfx->stop_func = stop_simple; - ev_gfx->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_gfx->name, ev_gfx); - idx++; - snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); - native_event_t *ev_umc = &ntv_table.events[idx]; - ev_umc->id = idx; - ev_umc->name = strdup(name_buf); - ev_umc->descr = strdup(descr_buf); - ev_umc->device = d; - ev_umc->value = 0; - ev_umc->mode = PAPI_MODE_READ; - ev_umc->variant = 1; - ev_umc->subvariant = 0; - ev_umc->open_func = open_simple; - ev_umc->close_func = close_simple; - ev_umc->start_func = start_simple; - ev_umc->stop_func = stop_simple; - ev_umc->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_umc->name, ev_umc); - idx++; - snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); - native_event_t *ev_mm = &ntv_table.events[idx]; - ev_mm->id = idx; - ev_mm->name = strdup(name_buf); - ev_mm->descr = strdup(descr_buf); - ev_mm->device = d; - ev_mm->value = 0; - ev_mm->mode = PAPI_MODE_READ; - ev_mm->variant = 2; - ev_mm->subvariant = 0; - ev_mm->open_func = open_simple; - ev_mm->close_func = close_simple; - ev_mm->start_func = start_simple; - ev_mm->stop_func = stop_simple; - ev_mm->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_mm->name, ev_mm); - idx++; - } - } - /* GPU clock frequency levels */ - for (int d = 0; d < gpu_count; ++d) { - amdsmi_frequencies_t f; - if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { - continue; - } - // Number of supported frequencies - snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); - native_event_t *ev_clk_count = &ntv_table.events[idx]; - ev_clk_count->id = idx; - ev_clk_count->name = strdup(name_buf); - ev_clk_count->descr = strdup(descr_buf); - ev_clk_count->device = d; - ev_clk_count->value = 0; - ev_clk_count->mode = PAPI_MODE_READ; - ev_clk_count->variant = 0; - ev_clk_count->subvariant = 0; - ev_clk_count->open_func = open_simple; - ev_clk_count->close_func = close_simple; - ev_clk_count->start_func = start_simple; - ev_clk_count->stop_func = stop_simple; - ev_clk_count->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_count->name, ev_clk_count); + */ + // GPU NUMA Node + if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); + native_event_t *ev_numa = &ntv_table.events[idx]; + ev_numa->id = idx; + ev_numa->name = strdup(name_buf); + ev_numa->descr = strdup(descr_buf); + ev_numa->device = d; + ev_numa->value = 0; + ev_numa->mode = PAPI_MODE_READ; + ev_numa->variant = 5; + ev_numa->subvariant = 0; + ev_numa->open_func = open_simple; + ev_numa->close_func = close_simple; + ev_numa->start_func = start_simple; + ev_numa->stop_func = stop_simple; + ev_numa->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_numa->name, ev_numa); + idx++; + } + } + /* Energy consumption counter */ + for (int d = 0; d < gpu_count; ++d) { + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); + native_event_t *ev_energy = &ntv_table.events[idx]; + ev_energy->id = idx; + ev_energy->name = strdup(name_buf); + ev_energy->descr = strdup(descr_buf); + ev_energy->device = d; + ev_energy->value = 0; + ev_energy->mode = PAPI_MODE_READ; + ev_energy->variant = 0; + ev_energy->subvariant = 0; + ev_energy->open_func = open_simple; + ev_energy->close_func = close_simple; + ev_energy->start_func = start_simple; + ev_energy->stop_func = stop_simple; + ev_energy->access_func = access_amdsmi_energy_count; + htable_insert(htable, ev_energy->name, ev_energy); + idx++; + } + /* GPU power profile information */ + for (int d = 0; d < gpu_count; ++d) { + amdsmi_power_profile_status_t profile_status; + if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { + continue; + } + snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); + native_event_t *ev_prof_count = &ntv_table.events[idx]; + ev_prof_count->id = idx; + ev_prof_count->name = strdup(name_buf); + ev_prof_count->descr = strdup(descr_buf); + ev_prof_count->device = d; + ev_prof_count->value = 0; + ev_prof_count->mode = PAPI_MODE_READ; + ev_prof_count->variant = 0; + ev_prof_count->subvariant = 0; + ev_prof_count->open_func = open_simple; + ev_prof_count->close_func = close_simple; + ev_prof_count->start_func = start_simple; + ev_prof_count->stop_func = stop_simple; + ev_prof_count->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_count->name, ev_prof_count); + idx++; + snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); + native_event_t *ev_prof_curr = &ntv_table.events[idx]; + ev_prof_curr->id = idx; + ev_prof_curr->name = strdup(name_buf); + ev_prof_curr->descr = strdup(descr_buf); + ev_prof_curr->device = d; + ev_prof_curr->value = 0; + ev_prof_curr->mode = PAPI_MODE_READ; + ev_prof_curr->variant = 1; + ev_prof_curr->subvariant = 0; + ev_prof_curr->open_func = open_simple; + ev_prof_curr->close_func = close_simple; + ev_prof_curr->start_func = start_simple; + ev_prof_curr->stop_func = stop_simple; + ev_prof_curr->access_func = access_amdsmi_power_profile_status; + htable_insert(htable, ev_prof_curr->name, ev_prof_curr); + idx++; + } +#ifndef AMDSMI_DISABLE_ESMI + /* CPU metrics events */ + if (cpu_count > 0) { + // CPU socket-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + uint32_t pwr; + if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); + native_event_t *ev_pwr = &ntv_table.events[idx]; + ev_pwr->id = idx; + ev_pwr->name = strdup(name_buf); + ev_pwr->descr = strdup(descr_buf); + ev_pwr->device = dev; + ev_pwr->value = 0; + ev_pwr->mode = PAPI_MODE_READ; + ev_pwr->variant = 0; + ev_pwr->subvariant = 0; + ev_pwr->open_func = open_simple; + ev_pwr->close_func = close_simple; + ev_pwr->start_func = start_simple; + ev_pwr->stop_func = stop_simple; + ev_pwr->access_func = access_amdsmi_cpu_socket_power; + htable_insert(htable, ev_pwr->name, ev_pwr); idx++; - // Current clock frequency - snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); - native_event_t *ev_clk_cur = &ntv_table.events[idx]; - ev_clk_cur->id = idx; - ev_clk_cur->name = strdup(name_buf); - ev_clk_cur->descr = strdup(descr_buf); - ev_clk_cur->device = d; - ev_clk_cur->value = 0; - ev_clk_cur->mode = PAPI_MODE_READ; - ev_clk_cur->variant = 0; - ev_clk_cur->subvariant = 1; - ev_clk_cur->open_func = open_simple; - ev_clk_cur->close_func = close_simple; - ev_clk_cur->start_func = start_simple; - ev_clk_cur->stop_func = stop_simple; - ev_clk_cur->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_cur->name, ev_clk_cur); + } + uint64_t sock_energy; + if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); + native_event_t *ev_sock_energy = &ntv_table.events[idx]; + ev_sock_energy->id = idx; + ev_sock_energy->name = strdup(name_buf); + ev_sock_energy->descr = strdup(descr_buf); + ev_sock_energy->device = dev; + ev_sock_energy->value = 0; + ev_sock_energy->mode = PAPI_MODE_READ; + ev_sock_energy->variant = 0; + ev_sock_energy->subvariant = 0; + ev_sock_energy->open_func = open_simple; + ev_sock_energy->close_func = close_simple; + ev_sock_energy->start_func = start_simple; + ev_sock_energy->stop_func = stop_simple; + ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; + htable_insert(htable, ev_sock_energy->name, ev_sock_energy); idx++; - // Supported frequency levels - for (uint32_t fi = 0; fi < f.num_supported; ++fi) { - snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); - native_event_t *ev_clk_lvl = &ntv_table.events[idx]; - ev_clk_lvl->id = idx; - ev_clk_lvl->name = strdup(name_buf); - ev_clk_lvl->descr = strdup(descr_buf); - ev_clk_lvl->device = d; - ev_clk_lvl->value = 0; - ev_clk_lvl->mode = PAPI_MODE_READ; - ev_clk_lvl->variant = 0; - ev_clk_lvl->subvariant = fi + 2; - ev_clk_lvl->open_func = open_simple; - ev_clk_lvl->close_func = close_simple; - ev_clk_lvl->start_func = start_simple; - ev_clk_lvl->stop_func = stop_simple; - ev_clk_lvl->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); - idx++; - } + } + uint16_t fmax, fmin; + if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); + native_event_t *ev_fmax = &ntv_table.events[idx]; + ev_fmax->id = idx; + ev_fmax->name = strdup(name_buf); + ev_fmax->descr = strdup(descr_buf); + ev_fmax->device = dev; + ev_fmax->value = 0; + ev_fmax->mode = PAPI_MODE_READ; + ev_fmax->variant = 1; + ev_fmax->subvariant = 0; + ev_fmax->open_func = open_simple; + ev_fmax->close_func = close_simple; + ev_fmax->start_func = start_simple; + ev_fmax->stop_func = stop_simple; + ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmax->name, ev_fmax); + idx++; + snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); + native_event_t *ev_fmin = &ntv_table.events[idx]; + ev_fmin->id = idx; + ev_fmin->name = strdup(name_buf); + ev_fmin->descr = strdup(descr_buf); + ev_fmin->device = dev; + ev_fmin->value = 0; + ev_fmin->mode = PAPI_MODE_READ; + ev_fmin->variant = 0; + ev_fmin->subvariant = 0; + ev_fmin->open_func = open_simple; + ev_fmin->close_func = close_simple; + ev_fmin->start_func = start_simple; + ev_fmin->stop_func = stop_simple; + ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; + htable_insert(htable, ev_fmin->name, ev_fmin); + idx++; + } + uint32_t cap; + amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); + uint32_t cap_max; + amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); + if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { + if (st_cap == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); + native_event_t *ev_cap = &ntv_table.events[idx]; + ev_cap->id = idx; + ev_cap->name = strdup(name_buf); + ev_cap->descr = strdup(descr_buf); + ev_cap->device = dev; + ev_cap->value = 0; + ev_cap->mode = PAPI_MODE_READ; + ev_cap->variant = 0; + ev_cap->subvariant = 0; + ev_cap->open_func = open_simple; + ev_cap->close_func = close_simple; + ev_cap->start_func = start_simple; + ev_cap->stop_func = stop_simple; + ev_cap->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_cap->name, ev_cap); + idx++; + } + if (st_capmax == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); + native_event_t *ev_capmax = &ntv_table.events[idx]; + ev_capmax->id = idx; + ev_capmax->name = strdup(name_buf); + ev_capmax->descr = strdup(descr_buf); + ev_capmax->device = dev; + ev_capmax->value = 0; + ev_capmax->mode = PAPI_MODE_READ; + ev_capmax->variant = 1; + ev_capmax->subvariant = 0; + ev_capmax->open_func = open_simple; + ev_capmax->close_func = close_simple; + ev_capmax->start_func = start_simple; + ev_capmax->stop_func = stop_simple; + ev_capmax->access_func = access_amdsmi_cpu_power_cap; + htable_insert(htable, ev_capmax->name, ev_capmax); + idx++; + } + } + uint16_t freq; + char *src_type = NULL; + if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { + if (src_type) + free(src_type); + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); + native_event_t *ev_flim = &ntv_table.events[idx]; + ev_flim->id = idx; + ev_flim->name = strdup(name_buf); + ev_flim->descr = strdup(descr_buf); + ev_flim->device = dev; + ev_flim->value = 0; + ev_flim->mode = PAPI_MODE_READ; + ev_flim->variant = 0; + ev_flim->subvariant = 0; + ev_flim->open_func = open_simple; + ev_flim->close_func = close_simple; + ev_flim->start_func = start_simple; + ev_flim->stop_func = stop_simple; + ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; + htable_insert(htable, ev_flim->name, ev_flim); + idx++; + } + amdsmi_smu_fw_version_t fw; + if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); + native_event_t *ev_fw = &ntv_table.events[idx]; + ev_fw->id = idx; + ev_fw->name = strdup(name_buf); + ev_fw->descr = strdup(descr_buf); + ev_fw->device = dev; + ev_fw->value = 0; + ev_fw->mode = PAPI_MODE_READ; + ev_fw->variant = 0; + ev_fw->subvariant = 0; + ev_fw->open_func = open_simple; + ev_fw->close_func = close_simple; + ev_fw->start_func = start_simple; + ev_fw->stop_func = stop_simple; + ev_fw->access_func = access_amdsmi_smu_fw_version; + htable_insert(htable, ev_fw->name, ev_fw); + idx++; + } + } + // CPU core-level events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { + uint64_t energy; + if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); + native_event_t *ev_core_energy = &ntv_table.events[idx]; + ev_core_energy->id = idx; + ev_core_energy->name = strdup(name_buf); + ev_core_energy->descr = strdup(descr_buf); + ev_core_energy->device = dev; + ev_core_energy->value = 0; + ev_core_energy->mode = PAPI_MODE_READ; + ev_core_energy->variant = 0; + ev_core_energy->subvariant = c; + ev_core_energy->open_func = open_simple; + ev_core_energy->close_func = close_simple; + ev_core_energy->start_func = start_simple; + ev_core_energy->stop_func = stop_simple; + ev_core_energy->access_func = access_amdsmi_cpu_core_energy; + htable_insert(htable, ev_core_energy->name, ev_core_energy); + idx++; + } + uint32_t freq; + if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); + native_event_t *ev_core_flim = &ntv_table.events[idx]; + ev_core_flim->id = idx; + ev_core_flim->name = strdup(name_buf); + ev_core_flim->descr = strdup(descr_buf); + ev_core_flim->device = dev; + ev_core_flim->value = 0; + ev_core_flim->mode = PAPI_MODE_READ; + ev_core_flim->variant = 0; + ev_core_flim->subvariant = c; + ev_core_flim->open_func = open_simple; + ev_core_flim->close_func = close_simple; + ev_core_flim->start_func = start_simple; + ev_core_flim->stop_func = stop_simple; + ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; + htable_insert(htable, ev_core_flim->name, ev_core_flim); + idx++; + } + uint32_t boost; + if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); + native_event_t *ev_boost = &ntv_table.events[idx]; + ev_boost->id = idx; + ev_boost->name = strdup(name_buf); + ev_boost->descr = strdup(descr_buf); + ev_boost->device = dev; + ev_boost->value = 0; + ev_boost->mode = PAPI_MODE_READ; + ev_boost->variant = 0; + ev_boost->subvariant = c; + ev_boost->open_func = open_simple; + ev_boost->close_func = close_simple; + ev_boost->start_func = start_simple; + ev_boost->stop_func = stop_simple; + ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; + htable_insert(htable, ev_boost->name, ev_boost); + idx++; + } + } + } + // CPU DIMM events + for (int s = 0; s < cpu_count; ++s) { + int dev = gpu_count + s; + for (uint8_t dimm = 0; dimm < 16; ++dimm) { + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_dimm_power_t dimm_pow; + amdsmi_temp_range_refresh_rate_t range_info; + amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); + amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); + amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); + if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { + continue; + } + if (st_temp == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); + native_event_t *ev_dimm_temp = &ntv_table.events[idx]; + ev_dimm_temp->id = idx; + ev_dimm_temp->name = strdup(name_buf); + ev_dimm_temp->descr = strdup(descr_buf); + ev_dimm_temp->device = dev; + ev_dimm_temp->value = 0; + ev_dimm_temp->mode = PAPI_MODE_READ; + ev_dimm_temp->variant = 0; + ev_dimm_temp->subvariant = dimm; + ev_dimm_temp->open_func = open_simple; + ev_dimm_temp->close_func = close_simple; + ev_dimm_temp->start_func = start_simple; + ev_dimm_temp->stop_func = stop_simple; + ev_dimm_temp->access_func = access_amdsmi_dimm_temp; + htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); + idx++; + } + if (st_power == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); + native_event_t *ev_dimm_pow = &ntv_table.events[idx]; + ev_dimm_pow->id = idx; + ev_dimm_pow->name = strdup(name_buf); + ev_dimm_pow->descr = strdup(descr_buf); + ev_dimm_pow->device = dev; + ev_dimm_pow->value = 0; + ev_dimm_pow->mode = PAPI_MODE_READ; + ev_dimm_pow->variant = 0; + ev_dimm_pow->subvariant = dimm; + ev_dimm_pow->open_func = open_simple; + ev_dimm_pow->close_func = close_simple; + ev_dimm_pow->start_func = start_simple; + ev_dimm_pow->stop_func = stop_simple; + ev_dimm_pow->access_func = access_amdsmi_dimm_power; + htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); + idx++; + } + if (st_range == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); + native_event_t *ev_range = &ntv_table.events[idx]; + ev_range->id = idx; + ev_range->name = strdup(name_buf); + ev_range->descr = strdup(descr_buf); + ev_range->device = dev; + ev_range->value = 0; + ev_range->mode = PAPI_MODE_READ; + ev_range->variant = 0; + ev_range->subvariant = dimm; + ev_range->open_func = open_simple; + ev_range->close_func = close_simple; + ev_range->start_func = start_simple; + ev_range->stop_func = stop_simple; + ev_range->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_range->name, ev_range); + idx++; + snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); + native_event_t *ev_ref = &ntv_table.events[idx]; + ev_ref->id = idx; + ev_ref->name = strdup(name_buf); + ev_ref->descr = strdup(descr_buf); + ev_ref->device = dev; + ev_ref->value = 0; + ev_ref->mode = PAPI_MODE_READ; + ev_ref->variant = 1; + ev_ref->subvariant = dimm; + ev_ref->open_func = open_simple; + ev_ref->close_func = close_simple; + ev_ref->start_func = start_simple; + ev_ref->stop_func = stop_simple; + ev_ref->access_func = access_amdsmi_dimm_range_refresh; + htable_insert(htable, ev_ref->name, ev_ref); + idx++; + } + } + } + // System-wide CPU events + uint32_t threads; + if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "threads_per_core"); + snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); + native_event_t *ev_threads = &ntv_table.events[idx]; + ev_threads->id = idx; + ev_threads->name = strdup(name_buf); + ev_threads->descr = strdup(descr_buf); + ev_threads->device = -1; + ev_threads->value = 0; + ev_threads->mode = PAPI_MODE_READ; + ev_threads->variant = 0; + ev_threads->subvariant = 0; + ev_threads->open_func = open_simple; + ev_threads->close_func = close_simple; + ev_threads->start_func = start_simple; + ev_threads->stop_func = stop_simple; + ev_threads->access_func = access_amdsmi_threads_per_core; + htable_insert(htable, ev_threads->name, ev_threads); + idx++; + } + uint32_t family; + if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_family"); + snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); + native_event_t *ev_family = &ntv_table.events[idx]; + ev_family->id = idx; + ev_family->name = strdup(name_buf); + ev_family->descr = strdup(descr_buf); + ev_family->device = -1; + ev_family->value = 0; + ev_family->mode = PAPI_MODE_READ; + ev_family->variant = 0; + ev_family->subvariant = 0; + ev_family->open_func = open_simple; + ev_family->close_func = close_simple; + ev_family->start_func = start_simple; + ev_family->stop_func = stop_simple; + ev_family->access_func = access_amdsmi_cpu_family; + htable_insert(htable, ev_family->name, ev_family); + idx++; + } + uint32_t model; + if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cpu_model"); + snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); + native_event_t *ev_model = &ntv_table.events[idx]; + ev_model->id = idx; + ev_model->name = strdup(name_buf); + ev_model->descr = strdup(descr_buf); + ev_model->device = -1; + ev_model->value = 0; + ev_model->mode = PAPI_MODE_READ; + ev_model->variant = 0; + ev_model->subvariant = 0; + ev_model->open_func = open_simple; + ev_model->close_func = close_simple; + ev_model->start_func = start_simple; + ev_model->stop_func = stop_simple; + ev_model->access_func = access_amdsmi_cpu_model; + htable_insert(htable, ev_model->name, ev_model); + idx++; + } + } +#endif + + /* -------- Additional GPU discovery & version info (read-only) -------- */ + /* Library version (global) */ + if (amdsmi_get_lib_version_p) { + amdsmi_version_t vinfo; + if (amdsmi_get_lib_version_p(&vinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "lib_version_major"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); + native_event_t *ev_lmaj = &ntv_table.events[idx]; + ev_lmaj->id = idx; + ev_lmaj->name = strdup(name_buf); + ev_lmaj->descr = strdup(descr_buf); + ev_lmaj->device = -1; + ev_lmaj->value = 0; + ev_lmaj->mode = PAPI_MODE_READ; + ev_lmaj->variant = 0; + ev_lmaj->subvariant = 0; + ev_lmaj->open_func = open_simple; + ev_lmaj->close_func = close_simple; + ev_lmaj->start_func = start_simple; + ev_lmaj->stop_func = stop_simple; + ev_lmaj->access_func = access_amdsmi_lib_version; + htable_insert(htable, ev_lmaj->name, ev_lmaj); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); + native_event_t *ev_lmin = &ntv_table.events[idx]; + ev_lmin->id = idx; + ev_lmin->name = strdup(name_buf); + ev_lmin->descr = strdup(descr_buf); + ev_lmin->device = -1; + ev_lmin->value = 0; + ev_lmin->mode = PAPI_MODE_READ; + ev_lmin->variant = 1; + ev_lmin->subvariant = 0; + ev_lmin->open_func = open_simple; + ev_lmin->close_func = close_simple; + ev_lmin->start_func = start_simple; + ev_lmin->stop_func = stop_simple; + ev_lmin->access_func = access_amdsmi_lib_version; + htable_insert(htable, ev_lmin->name, ev_lmin); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "lib_version_release"); + snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); + native_event_t *ev_lrel = &ntv_table.events[idx]; + ev_lrel->id = idx; + ev_lrel->name = strdup(name_buf); + ev_lrel->descr = strdup(descr_buf); + ev_lrel->device = -1; + ev_lrel->value = 0; + ev_lrel->mode = PAPI_MODE_READ; + ev_lrel->variant = 2; + ev_lrel->subvariant = 0; + ev_lrel->open_func = open_simple; + ev_lrel->close_func = close_simple; + ev_lrel->start_func = start_simple; + ev_lrel->stop_func = stop_simple; + ev_lrel->access_func = access_amdsmi_lib_version; + htable_insert(htable, ev_lrel->name, ev_lrel); + idx++; + } + } + for (int d = 0; d < gpu_count; ++d) { + if (!device_handles || !device_handles[d]) + continue; + /* Device UUID (hash) */ + if (amdsmi_get_gpu_device_uuid_p) { + unsigned int uuid_len = 0; + amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); + /* Some builds require preflight to get length; we just attempt a fixed + * buffer */ + char uuid_buf[128]; + uuid_len = sizeof(uuid_buf); + st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, uuid_buf); + if (st == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); + native_event_t *ev_uuid = &ntv_table.events[idx]; + ev_uuid->id = idx; + ev_uuid->name = strdup(name_buf); + ev_uuid->descr = strdup(descr_buf); + ev_uuid->device = d; + ev_uuid->value = 0; + ev_uuid->mode = PAPI_MODE_READ; + ev_uuid->variant = 0; + ev_uuid->subvariant = 0; + ev_uuid->open_func = open_simple; + ev_uuid->close_func = close_simple; + ev_uuid->start_func = start_simple; + ev_uuid->stop_func = stop_simple; + ev_uuid->access_func = access_amdsmi_uuid_hash; + htable_insert(htable, ev_uuid->name, ev_uuid); + idx++; + } + } + /* Vendor / VRAM vendor / Subsystem name (hash) */ + if (amdsmi_get_gpu_vendor_name_p) { + char tmp[256] = {0}; + if (amdsmi_get_gpu_vendor_name_p(device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); + native_event_t *ev_vn = &ntv_table.events[idx]; + ev_vn->id = idx; + ev_vn->name = strdup(name_buf); + ev_vn->descr = strdup(descr_buf); + if (!ev_vn->name || !ev_vn->descr) + return PAPI_ENOMEM; + ev_vn->device = d; + ev_vn->value = 0; + ev_vn->mode = PAPI_MODE_READ; + ev_vn->variant = 0; /* access_amdsmi_gpu_string_hash -> vendor name */ + ev_vn->subvariant = 0; + ev_vn->open_func = open_simple; + ev_vn->close_func = close_simple; + ev_vn->start_func = start_simple; + ev_vn->stop_func = stop_simple; + ev_vn->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_vn->name, ev_vn); + idx++; + } } - /* GPU identification and topology metrics */ - for (int d = 0; d < gpu_count; ++d) { - uint16_t id16; - uint64_t id64; - //amdsmi_virtualization_mode_t vmode; - int32_t numa; - // GPU ID - if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); - native_event_t *ev_id = &ntv_table.events[idx]; - ev_id->id = idx; - ev_id->name = strdup(name_buf); - ev_id->descr = strdup(descr_buf); - ev_id->device = d; - ev_id->value = 0; - ev_id->mode = PAPI_MODE_READ; - ev_id->variant = 0; - ev_id->subvariant = 0; - ev_id->open_func = open_simple; - ev_id->close_func = close_simple; - ev_id->start_func = start_simple; - ev_id->stop_func = stop_simple; - ev_id->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_id->name, ev_id); - idx++; - } - // GPU Revision - if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); - native_event_t *ev_rev = &ntv_table.events[idx]; - ev_rev->id = idx; - ev_rev->name = strdup(name_buf); - ev_rev->descr = strdup(descr_buf); - ev_rev->device = d; - ev_rev->value = 0; - ev_rev->mode = PAPI_MODE_READ; - ev_rev->variant = 1; - ev_rev->subvariant = 0; - ev_rev->open_func = open_simple; - ev_rev->close_func = close_simple; - ev_rev->start_func = start_simple; - ev_rev->stop_func = stop_simple; - ev_rev->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_rev->name, ev_rev); - idx++; - } - // GPU Subsystem ID - if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); - native_event_t *ev_subid = &ntv_table.events[idx]; - ev_subid->id = idx; - ev_subid->name = strdup(name_buf); - ev_subid->descr = strdup(descr_buf); - ev_subid->device = d; - ev_subid->value = 0; - ev_subid->mode = PAPI_MODE_READ; - ev_subid->variant = 2; - ev_subid->subvariant = 0; - ev_subid->open_func = open_simple; - ev_subid->close_func = close_simple; - ev_subid->start_func = start_simple; - ev_subid->stop_func = stop_simple; - ev_subid->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_subid->name, ev_subid); - idx++; - } - // GPU BDF ID - if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); - native_event_t *ev_bdf = &ntv_table.events[idx]; - ev_bdf->id = idx; - ev_bdf->name = strdup(name_buf); - ev_bdf->descr = strdup(descr_buf); - ev_bdf->device = d; - ev_bdf->value = 0; - ev_bdf->mode = PAPI_MODE_READ; - ev_bdf->variant = 3; - ev_bdf->subvariant = 0; - ev_bdf->open_func = open_simple; - ev_bdf->close_func = close_simple; - ev_bdf->start_func = start_simple; - ev_bdf->stop_func = stop_simple; - ev_bdf->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_bdf->name, ev_bdf); - idx++; - } - /* - // GPU Virtualization Mode - if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); - native_event_t *ev_vmode = &ntv_table.events[idx]; - ev_vmode->id = idx; - ev_vmode->name = strdup(name_buf); - ev_vmode->descr = strdup(descr_buf); - ev_vmode->device = d; - ev_vmode->value = 0; - ev_vmode->mode = PAPI_MODE_READ; - ev_vmode->variant = 4; - ev_vmode->subvariant = 0; - ev_vmode->open_func = open_simple; - ev_vmode->close_func = close_simple; - ev_vmode->start_func = start_simple; - ev_vmode->stop_func = stop_simple; - ev_vmode->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_vmode->name, ev_vmode); - idx++; - } - */ - // GPU NUMA Node - if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); - native_event_t *ev_numa = &ntv_table.events[idx]; - ev_numa->id = idx; - ev_numa->name = strdup(name_buf); - ev_numa->descr = strdup(descr_buf); - ev_numa->device = d; - ev_numa->value = 0; - ev_numa->mode = PAPI_MODE_READ; - ev_numa->variant = 5; - ev_numa->subvariant = 0; - ev_numa->open_func = open_simple; - ev_numa->close_func = close_simple; - ev_numa->start_func = start_simple; - ev_numa->stop_func = stop_simple; - ev_numa->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_numa->name, ev_numa); - idx++; - } + + if (amdsmi_get_gpu_vram_vendor_p) { + char tmp[256] = {0}; + if (amdsmi_get_gpu_vram_vendor_p(device_handles[d], tmp, (uint32_t)sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); + native_event_t *ev_vrv = &ntv_table.events[idx]; + ev_vrv->id = idx; + ev_vrv->name = strdup(name_buf); + ev_vrv->descr = strdup(descr_buf); + if (!ev_vrv->name || !ev_vrv->descr) + return PAPI_ENOMEM; + ev_vrv->device = d; + ev_vrv->value = 0; + ev_vrv->mode = PAPI_MODE_READ; + ev_vrv->variant = 1; /* access_amdsmi_gpu_string_hash -> VRAM vendor */ + ev_vrv->subvariant = 0; + ev_vrv->open_func = open_simple; + ev_vrv->close_func = close_simple; + ev_vrv->start_func = start_simple; + ev_vrv->stop_func = stop_simple; + ev_vrv->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_vrv->name, ev_vrv); + idx++; + } } - /* Energy consumption counter */ - for (int d = 0; d < gpu_count; ++d) { - uint64_t energy = 0; - float resolution = 0.0; - uint64_t timestamp = 0; - if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { - continue; - } - snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); - native_event_t *ev_energy = &ntv_table.events[idx]; - ev_energy->id = idx; - ev_energy->name = strdup(name_buf); - ev_energy->descr = strdup(descr_buf); - ev_energy->device = d; - ev_energy->value = 0; - ev_energy->mode = PAPI_MODE_READ; - ev_energy->variant = 0; - ev_energy->subvariant = 0; - ev_energy->open_func = open_simple; - ev_energy->close_func = close_simple; - ev_energy->start_func = start_simple; - ev_energy->stop_func = stop_simple; - ev_energy->access_func = access_amdsmi_energy_count; - htable_insert(htable, ev_energy->name, ev_energy); + + if (amdsmi_get_gpu_subsystem_name_p) { + char tmp[256] = {0}; + if (amdsmi_get_gpu_subsystem_name_p(device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); + native_event_t *ev_ssn = &ntv_table.events[idx]; + ev_ssn->id = idx; + ev_ssn->name = strdup(name_buf); + ev_ssn->descr = strdup(descr_buf); + if (!ev_ssn->name || !ev_ssn->descr) + return PAPI_ENOMEM; + ev_ssn->device = d; + ev_ssn->value = 0; + ev_ssn->mode = PAPI_MODE_READ; + ev_ssn->variant = 2; /* access_amdsmi_gpu_string_hash -> subsystem name */ + ev_ssn->subvariant = 0; + ev_ssn->open_func = open_simple; + ev_ssn->close_func = close_simple; + ev_ssn->start_func = start_simple; + ev_ssn->stop_func = stop_simple; + ev_ssn->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_ssn->name, ev_ssn); idx++; + } } - /* GPU power profile information */ - for (int d = 0; d < gpu_count; ++d) { - amdsmi_power_profile_status_t profile_status; - if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { - continue; - } - snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); - native_event_t *ev_prof_count = &ntv_table.events[idx]; - ev_prof_count->id = idx; - ev_prof_count->name = strdup(name_buf); - ev_prof_count->descr = strdup(descr_buf); - ev_prof_count->device = d; - ev_prof_count->value = 0; - ev_prof_count->mode = PAPI_MODE_READ; - ev_prof_count->variant = 0; - ev_prof_count->subvariant = 0; - ev_prof_count->open_func = open_simple; - ev_prof_count->close_func = close_simple; - ev_prof_count->start_func = start_simple; - ev_prof_count->stop_func = stop_simple; - ev_prof_count->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_count->name, ev_prof_count); + + /* Enumeration info (drm render/card, hsa/hip ids) */ + if (amdsmi_get_gpu_enumeration_info_p) { + amdsmi_enumeration_info_t einfo; + if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); + native_event_t *ev_er = &ntv_table.events[idx]; + ev_er->id = idx; + ev_er->name = strdup(name_buf); + ev_er->descr = strdup(descr_buf); + ev_er->device = d; + ev_er->value = 0; + ev_er->mode = PAPI_MODE_READ; + ev_er->variant = 0; + ev_er->subvariant = 0; + ev_er->open_func = open_simple; + ev_er->close_func = close_simple; + ev_er->start_func = start_simple; + ev_er->stop_func = stop_simple; + ev_er->access_func = access_amdsmi_enumeration_info; + htable_insert(htable, ev_er->name, ev_er); idx++; - snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); - native_event_t *ev_prof_curr = &ntv_table.events[idx]; - ev_prof_curr->id = idx; - ev_prof_curr->name = strdup(name_buf); - ev_prof_curr->descr = strdup(descr_buf); - ev_prof_curr->device = d; - ev_prof_curr->value = 0; - ev_prof_curr->mode = PAPI_MODE_READ; - ev_prof_curr->variant = 1; - ev_prof_curr->subvariant = 0; - ev_prof_curr->open_func = open_simple; - ev_prof_curr->close_func = close_simple; - ev_prof_curr->start_func = start_simple; - ev_prof_curr->stop_func = stop_simple; - ev_prof_curr->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_curr->name, ev_prof_curr); + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); + native_event_t *ev_ec = &ntv_table.events[idx]; + ev_ec->id = idx; + ev_ec->name = strdup(name_buf); + ev_ec->descr = strdup(descr_buf); + ev_ec->device = d; + ev_ec->value = 0; + ev_ec->mode = PAPI_MODE_READ; + ev_ec->variant = 1; + ev_ec->subvariant = 0; + ev_ec->open_func = open_simple; + ev_ec->close_func = close_simple; + ev_ec->start_func = start_simple; + ev_ec->stop_func = stop_simple; + ev_ec->access_func = access_amdsmi_enumeration_info; + htable_insert(htable, ev_ec->name, ev_ec); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); + native_event_t *ev_eh = &ntv_table.events[idx]; + ev_eh->id = idx; + ev_eh->name = strdup(name_buf); + ev_eh->descr = strdup(descr_buf); + ev_eh->device = d; + ev_eh->value = 0; + ev_eh->mode = PAPI_MODE_READ; + ev_eh->variant = 2; + ev_eh->subvariant = 0; + ev_eh->open_func = open_simple; + ev_eh->close_func = close_simple; + ev_eh->start_func = start_simple; + ev_eh->stop_func = stop_simple; + ev_eh->access_func = access_amdsmi_enumeration_info; + htable_insert(htable, ev_eh->name, ev_eh); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); + native_event_t *ev_ehip = &ntv_table.events[idx]; + ev_ehip->id = idx; + ev_ehip->name = strdup(name_buf); + ev_ehip->descr = strdup(descr_buf); + ev_ehip->device = d; + ev_ehip->value = 0; + ev_ehip->mode = PAPI_MODE_READ; + ev_ehip->variant = 3; + ev_ehip->subvariant = 0; + ev_ehip->open_func = open_simple; + ev_ehip->close_func = close_simple; + ev_ehip->start_func = start_simple; + ev_ehip->stop_func = stop_simple; + ev_ehip->access_func = access_amdsmi_enumeration_info; + htable_insert(htable, ev_ehip->name, ev_ehip); + idx++; + } + } + /* ASIC info (numeric IDs & CU count) */ + if (amdsmi_get_gpu_asic_info_p) { + amdsmi_asic_info_t ainfo; + if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); + native_event_t *ev_av = &ntv_table.events[idx]; + ev_av->id = idx; + ev_av->name = strdup(name_buf); + ev_av->descr = strdup(descr_buf); + ev_av->device = d; + ev_av->value = 0; + ev_av->mode = PAPI_MODE_READ; + ev_av->variant = 0; + ev_av->subvariant = 0; + ev_av->open_func = open_simple; + ev_av->close_func = close_simple; + ev_av->start_func = start_simple; + ev_av->stop_func = stop_simple; + ev_av->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_av->name, ev_av); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); + native_event_t *ev_ad = &ntv_table.events[idx]; + ev_ad->id = idx; + ev_ad->name = strdup(name_buf); + ev_ad->descr = strdup(descr_buf); + ev_ad->device = d; + ev_ad->value = 0; + ev_ad->mode = PAPI_MODE_READ; + ev_ad->variant = 1; + ev_ad->subvariant = 0; + ev_ad->open_func = open_simple; + ev_ad->close_func = close_simple; + ev_ad->start_func = start_simple; + ev_ad->stop_func = stop_simple; + ev_ad->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_ad->name, ev_ad); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); + native_event_t *ev_asv = &ntv_table.events[idx]; + ev_asv->id = idx; + ev_asv->name = strdup(name_buf); + ev_asv->descr = strdup(descr_buf); + ev_asv->device = d; + ev_asv->value = 0; + ev_asv->mode = PAPI_MODE_READ; + ev_asv->variant = 2; + ev_asv->subvariant = 0; + ev_asv->open_func = open_simple; + ev_asv->close_func = close_simple; + ev_asv->start_func = start_simple; + ev_asv->stop_func = stop_simple; + ev_asv->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_asv->name, ev_asv); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); + native_event_t *ev_ass = &ntv_table.events[idx]; + ev_ass->id = idx; + ev_ass->name = strdup(name_buf); + ev_ass->descr = strdup(descr_buf); + ev_ass->device = d; + ev_ass->value = 0; + ev_ass->mode = PAPI_MODE_READ; + ev_ass->variant = 3; + ev_ass->subvariant = 0; + ev_ass->open_func = open_simple; + ev_ass->close_func = close_simple; + ev_ass->start_func = start_simple; + ev_ass->stop_func = stop_simple; + ev_ass->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_ass->name, ev_ass); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); + native_event_t *ev_ar = &ntv_table.events[idx]; + ev_ar->id = idx; + ev_ar->name = strdup(name_buf); + ev_ar->descr = strdup(descr_buf); + ev_ar->device = d; + ev_ar->value = 0; + ev_ar->mode = PAPI_MODE_READ; + ev_ar->variant = 4; + ev_ar->subvariant = 0; + ev_ar->open_func = open_simple; + ev_ar->close_func = close_simple; + ev_ar->start_func = start_simple; + ev_ar->stop_func = stop_simple; + ev_ar->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_ar->name, ev_ar); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); + native_event_t *ev_cu = &ntv_table.events[idx]; + ev_cu->id = idx; + ev_cu->name = strdup(name_buf); + ev_cu->descr = strdup(descr_buf); + ev_cu->device = d; + ev_cu->value = 0; + ev_cu->mode = PAPI_MODE_READ; + ev_cu->variant = 5; + ev_cu->subvariant = 0; + ev_cu->open_func = open_simple; + ev_cu->close_func = close_simple; + ev_cu->start_func = start_simple; + ev_cu->stop_func = stop_simple; + ev_cu->access_func = access_amdsmi_asic_info; + htable_insert(htable, ev_cu->name, ev_cu); + idx++; + } + } + /* Driver info (strings hashed) */ + if (amdsmi_get_gpu_driver_info_p) { + amdsmi_driver_info_t dinfo; + if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); + native_event_t *ev_dname = &ntv_table.events[idx]; + ev_dname->id = idx; + ev_dname->name = strdup(name_buf); + ev_dname->descr = strdup(descr_buf); + ev_dname->device = d; + ev_dname->value = 0; + ev_dname->mode = PAPI_MODE_READ; + ev_dname->variant = 3; + ev_dname->subvariant = 0; + ev_dname->open_func = open_simple; + ev_dname->close_func = close_simple; + ev_dname->start_func = start_simple; + ev_dname->stop_func = stop_simple; + ev_dname->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_dname->name, ev_dname); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); + native_event_t *ev_dd = &ntv_table.events[idx]; + ev_dd->id = idx; + ev_dd->name = strdup(name_buf); + ev_dd->descr = strdup(descr_buf); + ev_dd->device = d; + ev_dd->value = 0; + ev_dd->mode = PAPI_MODE_READ; + ev_dd->variant = 4; + ev_dd->subvariant = 0; + ev_dd->open_func = open_simple; + ev_dd->close_func = close_simple; + ev_dd->start_func = start_simple; + ev_dd->stop_func = stop_simple; + ev_dd->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_dd->name, ev_dd); + idx++; + } + } + /* VBIOS info (strings hashed) */ + if (amdsmi_get_gpu_vbios_info_p) { + amdsmi_vbios_info_t vb; + if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", d); + native_event_t *ev_vbv = &ntv_table.events[idx]; + ev_vbv->id = idx; + ev_vbv->name = strdup(name_buf); + ev_vbv->descr = strdup(descr_buf); + ev_vbv->device = d; + ev_vbv->value = 0; + ev_vbv->mode = PAPI_MODE_READ; + ev_vbv->variant = 5; + ev_vbv->subvariant = 0; + ev_vbv->open_func = open_simple; + ev_vbv->close_func = close_simple; + ev_vbv->start_func = start_simple; + ev_vbv->stop_func = stop_simple; + ev_vbv->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_vbv->name, ev_vbv); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number (hash)", d); + native_event_t *ev_vbp = &ntv_table.events[idx]; + ev_vbp->id = idx; + ev_vbp->name = strdup(name_buf); + ev_vbp->descr = strdup(descr_buf); + ev_vbp->device = d; + ev_vbp->value = 0; + ev_vbp->mode = PAPI_MODE_READ; + ev_vbp->variant = 6; + ev_vbp->subvariant = 0; + ev_vbp->open_func = open_simple; + ev_vbp->close_func = close_simple; + ev_vbp->start_func = start_simple; + ev_vbp->stop_func = stop_simple; + ev_vbp->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_vbp->name, ev_vbp); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date (hash)", d); + native_event_t *ev_vbd = &ntv_table.events[idx]; + ev_vbd->id = idx; + ev_vbd->name = strdup(name_buf); + ev_vbd->descr = strdup(descr_buf); + ev_vbd->device = d; + ev_vbd->value = 0; + ev_vbd->mode = PAPI_MODE_READ; + ev_vbd->variant = 7; + ev_vbd->subvariant = 0; + ev_vbd->open_func = open_simple; + ev_vbd->close_func = close_simple; + ev_vbd->start_func = start_simple; + ev_vbd->stop_func = stop_simple; + ev_vbd->access_func = access_amdsmi_gpu_string_hash; + htable_insert(htable, ev_vbd->name, ev_vbd); + idx++; + } } -#ifndef AMDSMI_DISABLE_ESMI - /* CPU metrics events */ - if (cpu_count > 0) { - // CPU socket-level events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - uint32_t pwr; - if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); - native_event_t *ev_pwr = &ntv_table.events[idx]; - ev_pwr->id = idx; - ev_pwr->name = strdup(name_buf); - ev_pwr->descr = strdup(descr_buf); - ev_pwr->device = dev; - ev_pwr->value = 0; - ev_pwr->mode = PAPI_MODE_READ; - ev_pwr->variant = 0; - ev_pwr->subvariant = 0; - ev_pwr->open_func = open_simple; - ev_pwr->close_func = close_simple; - ev_pwr->start_func = start_simple; - ev_pwr->stop_func = stop_simple; - ev_pwr->access_func = access_amdsmi_cpu_socket_power; - htable_insert(htable, ev_pwr->name, ev_pwr); - idx++; - } - uint64_t sock_energy; - if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); - native_event_t *ev_sock_energy = &ntv_table.events[idx]; - ev_sock_energy->id = idx; - ev_sock_energy->name = strdup(name_buf); - ev_sock_energy->descr = strdup(descr_buf); - ev_sock_energy->device = dev; - ev_sock_energy->value = 0; - ev_sock_energy->mode = PAPI_MODE_READ; - ev_sock_energy->variant = 0; - ev_sock_energy->subvariant = 0; - ev_sock_energy->open_func = open_simple; - ev_sock_energy->close_func = close_simple; - ev_sock_energy->start_func = start_simple; - ev_sock_energy->stop_func = stop_simple; - ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; - htable_insert(htable, ev_sock_energy->name, ev_sock_energy); - idx++; - } - uint16_t fmax, fmin; - if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); - native_event_t *ev_fmax = &ntv_table.events[idx]; - ev_fmax->id = idx; - ev_fmax->name = strdup(name_buf); - ev_fmax->descr = strdup(descr_buf); - ev_fmax->device = dev; - ev_fmax->value = 0; - ev_fmax->mode = PAPI_MODE_READ; - ev_fmax->variant = 1; - ev_fmax->subvariant = 0; - ev_fmax->open_func = open_simple; - ev_fmax->close_func = close_simple; - ev_fmax->start_func = start_simple; - ev_fmax->stop_func = stop_simple; - ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmax->name, ev_fmax); - idx++; - snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); - native_event_t *ev_fmin = &ntv_table.events[idx]; - ev_fmin->id = idx; - ev_fmin->name = strdup(name_buf); - ev_fmin->descr = strdup(descr_buf); - ev_fmin->device = dev; - ev_fmin->value = 0; - ev_fmin->mode = PAPI_MODE_READ; - ev_fmin->variant = 0; - ev_fmin->subvariant = 0; - ev_fmin->open_func = open_simple; - ev_fmin->close_func = close_simple; - ev_fmin->start_func = start_simple; - ev_fmin->stop_func = stop_simple; - ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmin->name, ev_fmin); - idx++; - } - uint32_t cap; - amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); - uint32_t cap_max; - amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); - if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { - if (st_cap == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); - native_event_t *ev_cap = &ntv_table.events[idx]; - ev_cap->id = idx; - ev_cap->name = strdup(name_buf); - ev_cap->descr = strdup(descr_buf); - ev_cap->device = dev; - ev_cap->value = 0; - ev_cap->mode = PAPI_MODE_READ; - ev_cap->variant = 0; - ev_cap->subvariant = 0; - ev_cap->open_func = open_simple; - ev_cap->close_func = close_simple; - ev_cap->start_func = start_simple; - ev_cap->stop_func = stop_simple; - ev_cap->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_cap->name, ev_cap); - idx++; - } - if (st_capmax == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); - native_event_t *ev_capmax = &ntv_table.events[idx]; - ev_capmax->id = idx; - ev_capmax->name = strdup(name_buf); - ev_capmax->descr = strdup(descr_buf); - ev_capmax->device = dev; - ev_capmax->value = 0; - ev_capmax->mode = PAPI_MODE_READ; - ev_capmax->variant = 1; - ev_capmax->subvariant = 0; - ev_capmax->open_func = open_simple; - ev_capmax->close_func = close_simple; - ev_capmax->start_func = start_simple; - ev_capmax->stop_func = stop_simple; - ev_capmax->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_capmax->name, ev_capmax); - idx++; - } - } - uint16_t freq; - char *src_type = NULL; - if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { - if (src_type) free(src_type); - snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); - native_event_t *ev_flim = &ntv_table.events[idx]; - ev_flim->id = idx; - ev_flim->name = strdup(name_buf); - ev_flim->descr = strdup(descr_buf); - ev_flim->device = dev; - ev_flim->value = 0; - ev_flim->mode = PAPI_MODE_READ; - ev_flim->variant = 0; - ev_flim->subvariant = 0; - ev_flim->open_func = open_simple; - ev_flim->close_func = close_simple; - ev_flim->start_func = start_simple; - ev_flim->stop_func = stop_simple; - ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; - htable_insert(htable, ev_flim->name, ev_flim); - idx++; - } - amdsmi_smu_fw_version_t fw; - if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); - native_event_t *ev_fw = &ntv_table.events[idx]; - ev_fw->id = idx; - ev_fw->name = strdup(name_buf); - ev_fw->descr = strdup(descr_buf); - ev_fw->device = dev; - ev_fw->value = 0; - ev_fw->mode = PAPI_MODE_READ; - ev_fw->variant = 0; - ev_fw->subvariant = 0; - ev_fw->open_func = open_simple; - ev_fw->close_func = close_simple; - ev_fw->start_func = start_simple; - ev_fw->stop_func = stop_simple; - ev_fw->access_func = access_amdsmi_smu_fw_version; - htable_insert(htable, ev_fw->name, ev_fw); - idx++; - } - } - // CPU core-level events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { - uint64_t energy; - if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); - native_event_t *ev_core_energy = &ntv_table.events[idx]; - ev_core_energy->id = idx; - ev_core_energy->name = strdup(name_buf); - ev_core_energy->descr = strdup(descr_buf); - ev_core_energy->device = dev; - ev_core_energy->value = 0; - ev_core_energy->mode = PAPI_MODE_READ; - ev_core_energy->variant = 0; - ev_core_energy->subvariant = c; - ev_core_energy->open_func = open_simple; - ev_core_energy->close_func = close_simple; - ev_core_energy->start_func = start_simple; - ev_core_energy->stop_func = stop_simple; - ev_core_energy->access_func = access_amdsmi_cpu_core_energy; - htable_insert(htable, ev_core_energy->name, ev_core_energy); - idx++; - } - uint32_t freq; - if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); - native_event_t *ev_core_flim = &ntv_table.events[idx]; - ev_core_flim->id = idx; - ev_core_flim->name = strdup(name_buf); - ev_core_flim->descr = strdup(descr_buf); - ev_core_flim->device = dev; - ev_core_flim->value = 0; - ev_core_flim->mode = PAPI_MODE_READ; - ev_core_flim->variant = 0; - ev_core_flim->subvariant = c; - ev_core_flim->open_func = open_simple; - ev_core_flim->close_func = close_simple; - ev_core_flim->start_func = start_simple; - ev_core_flim->stop_func = stop_simple; - ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; - htable_insert(htable, ev_core_flim->name, ev_core_flim); - idx++; - } - uint32_t boost; - if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); - native_event_t *ev_boost = &ntv_table.events[idx]; - ev_boost->id = idx; - ev_boost->name = strdup(name_buf); - ev_boost->descr = strdup(descr_buf); - ev_boost->device = dev; - ev_boost->value = 0; - ev_boost->mode = PAPI_MODE_READ; - ev_boost->variant = 0; - ev_boost->subvariant = c; - ev_boost->open_func = open_simple; - ev_boost->close_func = close_simple; - ev_boost->start_func = start_simple; - ev_boost->stop_func = stop_simple; - ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; - htable_insert(htable, ev_boost->name, ev_boost); - idx++; - } - } - } - // CPU DIMM events - for (int s = 0; s < cpu_count; ++s) { - int dev = gpu_count + s; - for (uint8_t dimm = 0; dimm < 16; ++dimm) { - amdsmi_dimm_thermal_t dimm_temp; - amdsmi_dimm_power_t dimm_pow; - amdsmi_temp_range_refresh_rate_t range_info; - amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); - amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); - amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); - if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { - continue; - } - if (st_temp == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); - native_event_t *ev_dimm_temp = &ntv_table.events[idx]; - ev_dimm_temp->id = idx; - ev_dimm_temp->name = strdup(name_buf); - ev_dimm_temp->descr = strdup(descr_buf); - ev_dimm_temp->device = dev; - ev_dimm_temp->value = 0; - ev_dimm_temp->mode = PAPI_MODE_READ; - ev_dimm_temp->variant = 0; - ev_dimm_temp->subvariant = dimm; - ev_dimm_temp->open_func = open_simple; - ev_dimm_temp->close_func = close_simple; - ev_dimm_temp->start_func = start_simple; - ev_dimm_temp->stop_func = stop_simple; - ev_dimm_temp->access_func = access_amdsmi_dimm_temp; - htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); - idx++; - } - if (st_power == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); - native_event_t *ev_dimm_pow = &ntv_table.events[idx]; - ev_dimm_pow->id = idx; - ev_dimm_pow->name = strdup(name_buf); - ev_dimm_pow->descr = strdup(descr_buf); - ev_dimm_pow->device = dev; - ev_dimm_pow->value = 0; - ev_dimm_pow->mode = PAPI_MODE_READ; - ev_dimm_pow->variant = 0; - ev_dimm_pow->subvariant = dimm; - ev_dimm_pow->open_func = open_simple; - ev_dimm_pow->close_func = close_simple; - ev_dimm_pow->start_func = start_simple; - ev_dimm_pow->stop_func = stop_simple; - ev_dimm_pow->access_func = access_amdsmi_dimm_power; - htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); - idx++; - } - if (st_range == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); - native_event_t *ev_range = &ntv_table.events[idx]; - ev_range->id = idx; - ev_range->name = strdup(name_buf); - ev_range->descr = strdup(descr_buf); - ev_range->device = dev; - ev_range->value = 0; - ev_range->mode = PAPI_MODE_READ; - ev_range->variant = 0; - ev_range->subvariant = dimm; - ev_range->open_func = open_simple; - ev_range->close_func = close_simple; - ev_range->start_func = start_simple; - ev_range->stop_func = stop_simple; - ev_range->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_range->name, ev_range); - idx++; - snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); - native_event_t *ev_ref = &ntv_table.events[idx]; - ev_ref->id = idx; - ev_ref->name = strdup(name_buf); - ev_ref->descr = strdup(descr_buf); - ev_ref->device = dev; - ev_ref->value = 0; - ev_ref->mode = PAPI_MODE_READ; - ev_ref->variant = 1; - ev_ref->subvariant = dimm; - ev_ref->open_func = open_simple; - ev_ref->close_func = close_simple; - ev_ref->start_func = start_simple; - ev_ref->stop_func = stop_simple; - ev_ref->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_ref->name, ev_ref); - idx++; - } - } - } - // System-wide CPU events - uint32_t threads; - if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "threads_per_core"); - snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); - native_event_t *ev_threads = &ntv_table.events[idx]; - ev_threads->id = idx; - ev_threads->name = strdup(name_buf); - ev_threads->descr = strdup(descr_buf); - ev_threads->device = -1; - ev_threads->value = 0; - ev_threads->mode = PAPI_MODE_READ; - ev_threads->variant = 0; - ev_threads->subvariant = 0; - ev_threads->open_func = open_simple; - ev_threads->close_func = close_simple; - ev_threads->start_func = start_simple; - ev_threads->stop_func = stop_simple; - ev_threads->access_func = access_amdsmi_threads_per_core; - htable_insert(htable, ev_threads->name, ev_threads); - idx++; - } - uint32_t family; - if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "cpu_family"); - snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); - native_event_t *ev_family = &ntv_table.events[idx]; - ev_family->id = idx; - ev_family->name = strdup(name_buf); - ev_family->descr = strdup(descr_buf); - ev_family->device = -1; - ev_family->value = 0; - ev_family->mode = PAPI_MODE_READ; - ev_family->variant = 0; - ev_family->subvariant = 0; - ev_family->open_func = open_simple; - ev_family->close_func = close_simple; - ev_family->start_func = start_simple; - ev_family->stop_func = stop_simple; - ev_family->access_func = access_amdsmi_cpu_family; - htable_insert(htable, ev_family->name, ev_family); - idx++; - } - uint32_t model; - if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "cpu_model"); - snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); - native_event_t *ev_model = &ntv_table.events[idx]; - ev_model->id = idx; - ev_model->name = strdup(name_buf); - ev_model->descr = strdup(descr_buf); - ev_model->device = -1; - ev_model->value = 0; - ev_model->mode = PAPI_MODE_READ; - ev_model->variant = 0; - ev_model->subvariant = 0; - ev_model->open_func = open_simple; - ev_model->close_func = close_simple; - ev_model->start_func = start_simple; - ev_model->stop_func = stop_simple; - ev_model->access_func = access_amdsmi_cpu_model; - htable_insert(htable, ev_model->name, ev_model); - idx++; + /* PCIe metrics via amdsmi_get_link_metrics (aggregate read/write kB over + * XGMI) */ + amdsmi_link_metrics_t lm_probe; memset(&lm_probe, 0, sizeof(lm_probe)); + int has_xgmi = 0, has_pcie = 0; + if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == AMDSMI_STATUS_SUCCESS) { + uint32_t n = lm_probe.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + for (uint32_t i=0;i= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "lib_version_major"); - snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); - native_event_t *ev_lmaj = &ntv_table.events[idx]; - ev_lmaj->id=idx; ev_lmaj->name=strdup(name_buf); ev_lmaj->descr=strdup(descr_buf); - ev_lmaj->device = -1; ev_lmaj->value=0; ev_lmaj->mode=PAPI_MODE_READ; - ev_lmaj->variant = 0; ev_lmaj->subvariant = 0; ev_lmaj->open_func=open_simple; - ev_lmaj->close_func=close_simple; ev_lmaj->start_func=start_simple; ev_lmaj->stop_func=stop_simple; - ev_lmaj->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmaj->name, ev_lmaj); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); - snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); - native_event_t *ev_lmin = &ntv_table.events[idx]; - ev_lmin->id=idx; ev_lmin->name=strdup(name_buf); ev_lmin->descr=strdup(descr_buf); - ev_lmin->device = -1; ev_lmin->value=0; ev_lmin->mode=PAPI_MODE_READ; - ev_lmin->variant = 1; ev_lmin->subvariant = 0; ev_lmin->open_func=open_simple; - ev_lmin->close_func=close_simple; ev_lmin->start_func=start_simple; ev_lmin->stop_func=stop_simple; - ev_lmin->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmin->name, ev_lmin); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "lib_version_release"); - snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); - native_event_t *ev_lrel = &ntv_table.events[idx]; - ev_lrel->id=idx; ev_lrel->name=strdup(name_buf); ev_lrel->descr=strdup(descr_buf); - ev_lrel->device = -1; ev_lrel->value=0; ev_lrel->mode=PAPI_MODE_READ; - ev_lrel->variant = 2; ev_lrel->subvariant = 0; ev_lrel->open_func=open_simple; - ev_lrel->close_func=close_simple; ev_lrel->start_func=start_simple; ev_lrel->stop_func=stop_simple; - ev_lrel->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lrel->name, ev_lrel); idx++; - } + /* --- XGMI totals (only if present). Read/Write are XGMI-only. --- */ + if (has_xgmi) { + /* xgmi_total_read_kB */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); + native_event_t *ev_xr = &ntv_table.events[idx]; + ev_xr->id=idx; ev_xr->name=strdup(name_buf); ev_xr->descr=strdup(descr_buf); + if (!ev_xr->name || !ev_xr->descr) return PAPI_ENOMEM; + ev_xr->device=d; ev_xr->value=0; ev_xr->mode=PAPI_MODE_READ; ev_xr->variant=0; + ev_xr->subvariant = AMDSMI_LINK_TYPE_XGMI; + ev_xr->open_func=open_simple; ev_xr->close_func=close_simple; ev_xr->start_func=start_simple; ev_xr->stop_func=stop_simple; + ev_xr->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xr->name, ev_xr); idx++; + + /* xgmi_total_write_kB */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); + native_event_t *ev_xw = &ntv_table.events[idx]; + ev_xw->id=idx; ev_xw->name=strdup(name_buf); ev_xw->descr=strdup(descr_buf); + if (!ev_xw->name || !ev_xw->descr) return PAPI_ENOMEM; + ev_xw->device=d; ev_xw->value=0; ev_xw->mode=PAPI_MODE_READ; ev_xw->variant=1; + ev_xw->subvariant = AMDSMI_LINK_TYPE_XGMI; + ev_xw->open_func=open_simple; ev_xw->close_func=close_simple; ev_xw->start_func=start_simple; ev_xw->stop_func=stop_simple; + ev_xw->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xw->name, ev_xw); idx++; + + /* Optional XGMI rates */ + /* ... same pattern with variant=2 (bit_rate_Gbps) and 3 (max_bandwidth_Gbps) ... */ } - for (int d = 0; d < gpu_count; ++d) { - if (!device_handles || !device_handles[d]) continue; - /* Device UUID (hash) */ - if (amdsmi_get_gpu_device_uuid_p) { - unsigned int uuid_len = 0; - amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); - /* Some builds require preflight to get length; we just attempt a fixed buffer */ - char uuid_buf[128]; - uuid_len = sizeof(uuid_buf); - st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, uuid_buf); - if (st == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); - native_event_t *ev_uuid = &ntv_table.events[idx]; - ev_uuid->id=idx; ev_uuid->name=strdup(name_buf); ev_uuid->descr=strdup(descr_buf); - ev_uuid->device=d; ev_uuid->value=0; ev_uuid->mode=PAPI_MODE_READ; - ev_uuid->variant=0; ev_uuid->subvariant=0; ev_uuid->open_func=open_simple; ev_uuid->close_func=close_simple; - ev_uuid->start_func=start_simple; ev_uuid->stop_func=stop_simple; ev_uuid->access_func=access_amdsmi_uuid_hash; - htable_insert(htable, ev_uuid->name, ev_uuid); idx++; - } - } - /* Vendor / VRAM vendor / Subsystem name (hash) */ - if (amdsmi_get_gpu_vendor_name_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); - native_event_t *ev_vn = &ntv_table.events[idx]; - ev_vn->id=idx; ev_vn->name=strdup(name_buf); ev_vn->descr=strdup(descr_buf); - ev_vn->device=d; ev_vn->value=0; ev_vn->mode=PAPI_MODE_READ; ev_vn->variant=0; ev_vn->subvariant=0; - ev_vn->open_func=open_simple; ev_vn->close_func=close_simple; ev_vn->start_func=start_simple; ev_vn->stop_func=stop_simple; - ev_vn->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vn->name, ev_vn); idx++; - } - if (amdsmi_get_gpu_vram_vendor_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); - native_event_t *ev_vrv = &ntv_table.events[idx]; - ev_vrv->id=idx; ev_vrv->name=strdup(name_buf); ev_vrv->descr=strdup(descr_buf); - ev_vrv->device=d; ev_vrv->value=0; ev_vrv->mode=PAPI_MODE_READ; ev_vrv->variant=1; ev_vrv->subvariant=0; - ev_vrv->open_func=open_simple; ev_vrv->close_func=close_simple; ev_vrv->start_func=start_simple; ev_vrv->stop_func=stop_simple; - ev_vrv->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vrv->name, ev_vrv); idx++; - } - if (amdsmi_get_gpu_subsystem_name_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); - native_event_t *ev_ssn = &ntv_table.events[idx]; - ev_ssn->id=idx; ev_ssn->name=strdup(name_buf); ev_ssn->descr=strdup(descr_buf); - ev_ssn->device=d; ev_ssn->value=0; ev_ssn->mode=PAPI_MODE_READ; ev_ssn->variant=2; ev_ssn->subvariant=0; - ev_ssn->open_func=open_simple; ev_ssn->close_func=close_simple; ev_ssn->start_func=start_simple; ev_ssn->stop_func=stop_simple; - ev_ssn->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_ssn->name, ev_ssn); idx++; - } - /* Enumeration info (drm render/card, hsa/hip ids) */ - if (amdsmi_get_gpu_enumeration_info_p) { - amdsmi_enumeration_info_t einfo; - if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); - native_event_t *ev_er = &ntv_table.events[idx]; - ev_er->id=idx; ev_er->name=strdup(name_buf); ev_er->descr=strdup(descr_buf); - ev_er->device=d; ev_er->value=0; ev_er->mode=PAPI_MODE_READ; ev_er->variant=0; ev_er->subvariant=0; - ev_er->open_func=open_simple; ev_er->close_func=close_simple; ev_er->start_func=start_simple; ev_er->stop_func=stop_simple; - ev_er->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_er->name, ev_er); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); - native_event_t *ev_ec = &ntv_table.events[idx]; - ev_ec->id=idx; ev_ec->name=strdup(name_buf); ev_ec->descr=strdup(descr_buf); - ev_ec->device=d; ev_ec->value=0; ev_ec->mode=PAPI_MODE_READ; ev_ec->variant=1; ev_ec->subvariant=0; - ev_ec->open_func=open_simple; ev_ec->close_func=close_simple; ev_ec->start_func=start_simple; ev_ec->stop_func=stop_simple; - ev_ec->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_ec->name, ev_ec); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); - native_event_t *ev_eh = &ntv_table.events[idx]; - ev_eh->id=idx; ev_eh->name=strdup(name_buf); ev_eh->descr=strdup(descr_buf); - ev_eh->device=d; ev_eh->value=0; ev_eh->mode=PAPI_MODE_READ; ev_eh->variant=2; ev_eh->subvariant=0; - ev_eh->open_func=open_simple; ev_eh->close_func=close_simple; ev_eh->start_func=start_simple; ev_eh->stop_func=stop_simple; - ev_eh->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_eh->name, ev_eh); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); - native_event_t *ev_ehip = &ntv_table.events[idx]; - ev_ehip->id=idx; ev_ehip->name=strdup(name_buf); ev_ehip->descr=strdup(descr_buf); - ev_ehip->device=d; ev_ehip->value=0; ev_ehip->mode=PAPI_MODE_READ; ev_ehip->variant=3; ev_ehip->subvariant=0; - ev_ehip->open_func=open_simple; ev_ehip->close_func=close_simple; ev_ehip->start_func=start_simple; ev_ehip->stop_func=stop_simple; - ev_ehip->access_func=access_amdsmi_enumeration_info; htable_insert(htable, ev_ehip->name, ev_ehip); idx++; - } - } - /* ASIC info (numeric IDs & CU count) */ - if (amdsmi_get_gpu_asic_info_p) { - amdsmi_asic_info_t ainfo; - if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); - native_event_t *ev_av = &ntv_table.events[idx]; - ev_av->id=idx; ev_av->name=strdup(name_buf); ev_av->descr=strdup(descr_buf); - ev_av->device=d; ev_av->value=0; ev_av->mode=PAPI_MODE_READ; ev_av->variant=0; ev_av->subvariant=0; - ev_av->open_func=open_simple; ev_av->close_func=close_simple; ev_av->start_func=start_simple; ev_av->stop_func=stop_simple; - ev_av->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_av->name, ev_av); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); - native_event_t *ev_ad = &ntv_table.events[idx]; - ev_ad->id=idx; ev_ad->name=strdup(name_buf); ev_ad->descr=strdup(descr_buf); - ev_ad->device=d; ev_ad->value=0; ev_ad->mode=PAPI_MODE_READ; ev_ad->variant=1; ev_ad->subvariant=0; - ev_ad->open_func=open_simple; ev_ad->close_func=close_simple; ev_ad->start_func=start_simple; ev_ad->stop_func=stop_simple; - ev_ad->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ad->name, ev_ad); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); - native_event_t *ev_asv = &ntv_table.events[idx]; - ev_asv->id=idx; ev_asv->name=strdup(name_buf); ev_asv->descr=strdup(descr_buf); - ev_asv->device=d; ev_asv->value=0; ev_asv->mode=PAPI_MODE_READ; ev_asv->variant=2; ev_asv->subvariant=0; - ev_asv->open_func=open_simple; ev_asv->close_func=close_simple; ev_asv->start_func=start_simple; ev_asv->stop_func=stop_simple; - ev_asv->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_asv->name, ev_asv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); - native_event_t *ev_ass = &ntv_table.events[idx]; - ev_ass->id=idx; ev_ass->name=strdup(name_buf); ev_ass->descr=strdup(descr_buf); - ev_ass->device=d; ev_ass->value=0; ev_ass->mode=PAPI_MODE_READ; ev_ass->variant=3; ev_ass->subvariant=0; - ev_ass->open_func=open_simple; ev_ass->close_func=close_simple; ev_ass->start_func=start_simple; ev_ass->stop_func=stop_simple; - ev_ass->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ass->name, ev_ass); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); - native_event_t *ev_ar = &ntv_table.events[idx]; - ev_ar->id=idx; ev_ar->name=strdup(name_buf); ev_ar->descr=strdup(descr_buf); - ev_ar->device=d; ev_ar->value=0; ev_ar->mode=PAPI_MODE_READ; ev_ar->variant=4; ev_ar->subvariant=0; - ev_ar->open_func=open_simple; ev_ar->close_func=close_simple; ev_ar->start_func=start_simple; ev_ar->stop_func=stop_simple; - ev_ar->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_ar->name, ev_ar); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); - native_event_t *ev_cu = &ntv_table.events[idx]; - ev_cu->id=idx; ev_cu->name=strdup(name_buf); ev_cu->descr=strdup(descr_buf); - ev_cu->device=d; ev_cu->value=0; ev_cu->mode=PAPI_MODE_READ; ev_cu->variant=5; ev_cu->subvariant=0; - ev_cu->open_func=open_simple; ev_cu->close_func=close_simple; ev_cu->start_func=start_simple; ev_cu->stop_func=stop_simple; - ev_cu->access_func=access_amdsmi_asic_info; htable_insert(htable, ev_cu->name, ev_cu); idx++; - } - } - /* Driver info (strings hashed) */ - if (amdsmi_get_gpu_driver_info_p) { - amdsmi_driver_info_t dinfo; - if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); - native_event_t *ev_dname = &ntv_table.events[idx]; - ev_dname->id=idx; ev_dname->name=strdup(name_buf); ev_dname->descr=strdup(descr_buf); - ev_dname->device=d; ev_dname->value=0; ev_dname->mode=PAPI_MODE_READ; ev_dname->variant=3; ev_dname->subvariant=0; - ev_dname->open_func=open_simple; ev_dname->close_func=close_simple; ev_dname->start_func=start_simple; ev_dname->stop_func=stop_simple; - ev_dname->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_dname->name, ev_dname); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); - native_event_t *ev_dd = &ntv_table.events[idx]; - ev_dd->id=idx; ev_dd->name=strdup(name_buf); ev_dd->descr=strdup(descr_buf); - ev_dd->device=d; ev_dd->value=0; ev_dd->mode=PAPI_MODE_READ; ev_dd->variant=4; ev_dd->subvariant=0; - ev_dd->open_func=open_simple; ev_dd->close_func=close_simple; ev_dd->start_func=start_simple; ev_dd->stop_func=stop_simple; - ev_dd->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_dd->name, ev_dd); idx++; - } - } - /* VBIOS info (strings hashed) */ - if (amdsmi_get_gpu_vbios_info_p) { - amdsmi_vbios_info_t vb; - if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", d); - native_event_t *ev_vbv = &ntv_table.events[idx]; - ev_vbv->id=idx; ev_vbv->name=strdup(name_buf); ev_vbv->descr=strdup(descr_buf); - ev_vbv->device=d; ev_vbv->value=0; ev_vbv->mode=PAPI_MODE_READ; ev_vbv->variant=5; ev_vbv->subvariant=0; - ev_vbv->open_func=open_simple; ev_vbv->close_func=close_simple; ev_vbv->start_func=start_simple; ev_vbv->stop_func=stop_simple; - ev_vbv->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbv->name, ev_vbv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number (hash)", d); - native_event_t *ev_vbp = &ntv_table.events[idx]; - ev_vbp->id=idx; ev_vbp->name=strdup(name_buf); ev_vbp->descr=strdup(descr_buf); - ev_vbp->device=d; ev_vbp->value=0; ev_vbp->mode=PAPI_MODE_READ; ev_vbp->variant=6; ev_vbp->subvariant=0; - ev_vbp->open_func=open_simple; ev_vbp->close_func=close_simple; ev_vbp->start_func=start_simple; ev_vbp->stop_func=stop_simple; - ev_vbp->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbp->name, ev_vbp); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date (hash)", d); - native_event_t *ev_vbd = &ntv_table.events[idx]; - ev_vbd->id=idx; ev_vbd->name=strdup(name_buf); ev_vbd->descr=strdup(descr_buf); - ev_vbd->device=d; ev_vbd->value=0; ev_vbd->mode=PAPI_MODE_READ; ev_vbd->variant=7; ev_vbd->subvariant=0; - ev_vbd->open_func=open_simple; ev_vbd->close_func=close_simple; ev_vbd->start_func=start_simple; ev_vbd->stop_func=stop_simple; - ev_vbd->access_func=access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbd->name, ev_vbd); idx++; - } - } - /* PCIe metrics via amdsmi_get_link_metrics (aggregate read/write kB over XGMI) */ - if (amdsmi_get_link_metrics_p) { - amdsmi_link_metrics_t lm; - if (amdsmi_get_link_metrics_p(device_handles[d], &lm) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); - native_event_t *ev_xr = &ntv_table.events[idx]; - ev_xr->id=idx; ev_xr->name=strdup(name_buf); ev_xr->descr=strdup(descr_buf); - ev_xr->device=d; ev_xr->value=0; ev_xr->mode=PAPI_MODE_READ; ev_xr->variant=0; ev_xr->subvariant=0; - ev_xr->open_func=open_simple; ev_xr->close_func=close_simple; ev_xr->start_func=start_simple; ev_xr->stop_func=stop_simple; - ev_xr->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xr->name, ev_xr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); - native_event_t *ev_xw = &ntv_table.events[idx]; - ev_xw->id=idx; ev_xw->name=strdup(name_buf); ev_xw->descr=strdup(descr_buf); - ev_xw->device=d; ev_xw->value=0; ev_xw->mode=PAPI_MODE_READ; ev_xw->variant=1; ev_xw->subvariant=0; - ev_xw->open_func=open_simple; ev_xw->close_func=close_simple; ev_xw->start_func=start_simple; ev_xw->stop_func=stop_simple; - ev_xw->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xw->name, ev_xw); idx++; - } - } - /* Process list size (count of running GPU processes) */ - if (amdsmi_get_gpu_process_list_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "process_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d active GPU process count", d); - native_event_t *ev_pc = &ntv_table.events[idx]; - ev_pc->id=idx; ev_pc->name=strdup(name_buf); ev_pc->descr=strdup(descr_buf); - ev_pc->device=d; ev_pc->value=0; ev_pc->mode=PAPI_MODE_READ; ev_pc->variant=0; ev_pc->subvariant=0; - ev_pc->open_func=open_simple; ev_pc->close_func=close_simple; ev_pc->start_func=start_simple; ev_pc->stop_func=stop_simple; - ev_pc->access_func=access_amdsmi_process_count; htable_insert(htable, ev_pc->name, ev_pc); idx++; - } - /* ECC totals & enabled mask (where supported) */ - if (amdsmi_get_gpu_total_ecc_count_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC correctable errors", d); - native_event_t *ev_ecct = &ntv_table.events[idx]; - ev_ecct->id=idx; ev_ecct->name=strdup(name_buf); ev_ecct->descr=strdup(descr_buf); - ev_ecct->device=d; ev_ecct->value=0; ev_ecct->mode=PAPI_MODE_READ; ev_ecct->variant=0; ev_ecct->subvariant=0; - ev_ecct->open_func=open_simple; ev_ecct->close_func=close_simple; ev_ecct->start_func=start_simple; ev_ecct->stop_func=stop_simple; - ev_ecct->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecct->name, ev_ecct); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC uncorrectable errors", d); - native_event_t *ev_ecctu = &ntv_table.events[idx]; - ev_ecctu->id=idx; ev_ecctu->name=strdup(name_buf); ev_ecctu->descr=strdup(descr_buf); - ev_ecctu->device=d; ev_ecctu->value=0; ev_ecctu->mode=PAPI_MODE_READ; ev_ecctu->variant=1; ev_ecctu->subvariant=0; - ev_ecctu->open_func=open_simple; ev_ecctu->close_func=close_simple; ev_ecctu->start_func=start_simple; ev_ecctu->stop_func=stop_simple; - ev_ecctu->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecctu->name, ev_ecctu); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC deferred errors", d); - native_event_t *ev_ecctd = &ntv_table.events[idx]; - ev_ecctd->id=idx; ev_ecctd->name=strdup(name_buf); ev_ecctd->descr=strdup(descr_buf); - ev_ecctd->device=d; ev_ecctd->value=0; ev_ecctd->mode=PAPI_MODE_READ; ev_ecctd->variant=2; ev_ecctd->subvariant=0; - ev_ecctd->open_func=open_simple; ev_ecctd->close_func=close_simple; ev_ecctd->start_func=start_simple; ev_ecctd->stop_func=stop_simple; - ev_ecctd->access_func=access_amdsmi_ecc_total; htable_insert(htable, ev_ecctd->name, ev_ecctd); idx++; - } - if (amdsmi_get_gpu_ecc_enabled_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block bitmask", d); - native_event_t *ev_eccm = &ntv_table.events[idx]; - ev_eccm->id=idx; ev_eccm->name=strdup(name_buf); ev_eccm->descr=strdup(descr_buf); - ev_eccm->device=d; ev_eccm->value=0; ev_eccm->mode=PAPI_MODE_READ; ev_eccm->variant=0; ev_eccm->subvariant=0; - ev_eccm->open_func=open_simple; ev_eccm->close_func=close_simple; ev_eccm->start_func=start_simple; ev_eccm->stop_func=stop_simple; - ev_eccm->access_func=access_amdsmi_ecc_enabled_mask; htable_insert(htable, ev_eccm->name, ev_eccm); idx++; - } - /* Partitioning state (hash/enumeration) */ - if (amdsmi_get_gpu_compute_partition_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d compute partition (hash)", d); - native_event_t *ev_cpart = &ntv_table.events[idx]; - ev_cpart->id=idx; ev_cpart->name=strdup(name_buf); ev_cpart->descr=strdup(descr_buf); - ev_cpart->device=d; ev_cpart->value=0; ev_cpart->mode=PAPI_MODE_READ; ev_cpart->variant=0; ev_cpart->subvariant=0; - ev_cpart->open_func=open_simple; ev_cpart->close_func=close_simple; ev_cpart->start_func=start_simple; ev_cpart->stop_func=stop_simple; - ev_cpart->access_func=access_amdsmi_compute_partition_hash; htable_insert(htable, ev_cpart->name, ev_cpart); idx++; - } - if (amdsmi_get_gpu_memory_partition_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); - native_event_t *ev_mpart = &ntv_table.events[idx]; - ev_mpart->id=idx; ev_mpart->name=strdup(name_buf); ev_mpart->descr=strdup(descr_buf); - ev_mpart->device=d; ev_mpart->value=0; ev_mpart->mode=PAPI_MODE_READ; ev_mpart->variant=0; ev_mpart->subvariant=0; - ev_mpart->open_func=open_simple; ev_mpart->close_func=close_simple; ev_mpart->start_func=start_simple; ev_mpart->stop_func=stop_simple; - ev_mpart->access_func=access_amdsmi_memory_partition_hash; htable_insert(htable, ev_mpart->name, ev_mpart); idx++; - } - if (amdsmi_get_gpu_accelerator_partition_profile_p) { - amdsmi_accelerator_partition_profile_t prof; - uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator profile partitions", d); - native_event_t *ev_anp = &ntv_table.events[idx]; - ev_anp->id=idx; ev_anp->name=strdup(name_buf); ev_anp->descr=strdup(descr_buf); - ev_anp->device=d; ev_anp->value=0; ev_anp->mode=PAPI_MODE_READ; ev_anp->variant=0; ev_anp->subvariant=0; - ev_anp->open_func=open_simple; ev_anp->close_func=close_simple; ev_anp->start_func=start_simple; ev_anp->stop_func=stop_simple; - ev_anp->access_func=access_amdsmi_accelerator_num_partitions; htable_insert(htable, ev_anp->name, ev_anp); idx++; - } - } + + /* --- PCIe aggregate rates (if present). No read/write here (N/A). --- */ + if (has_pcie) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe link speed (Gb/s)", d); + native_event_t *ev_pb = &ntv_table.events[idx]; + ev_pb->id=idx; ev_pb->name=strdup(name_buf); ev_pb->descr=strdup(descr_buf); + if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; + ev_pb->device=d; ev_pb->value=0; ev_pb->mode=PAPI_MODE_READ; ev_pb->variant=2; + ev_pb->subvariant = AMDSMI_LINK_TYPE_PCIE; + ev_pb->open_func=open_simple; ev_pb->close_func=close_simple; ev_pb->start_func=start_simple; ev_pb->stop_func=stop_simple; + ev_pb->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_pb->name, ev_pb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe max bandwidth (Gb/s)", d); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id=idx; ev_pm->name=strdup(name_buf); ev_pm->descr=strdup(descr_buf); + if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; + ev_pm->device=d; ev_pm->value=0; ev_pm->mode=PAPI_MODE_READ; ev_pm->variant=3; + ev_pm->subvariant = AMDSMI_LINK_TYPE_PCIE; + ev_pm->open_func=open_simple; ev_pm->close_func=close_simple; ev_pm->start_func=start_simple; ev_pm->stop_func=stop_simple; + ev_pm->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_pm->name, ev_pm); idx++; } -// Cleanup - no device capabilities cache to free - ntv_table.count = idx; - return PAPI_OK; + + /* Process list size (count of running GPU processes) */ + if (amdsmi_get_gpu_process_list_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "process_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d active GPU process count", d); + native_event_t *ev_pc = &ntv_table.events[idx]; + ev_pc->id = idx; + ev_pc->name = strdup(name_buf); + ev_pc->descr = strdup(descr_buf); + ev_pc->device = d; + ev_pc->value = 0; + ev_pc->mode = PAPI_MODE_READ; + ev_pc->variant = 0; + ev_pc->subvariant = 0; + ev_pc->open_func = open_simple; + ev_pc->close_func = close_simple; + ev_pc->start_func = start_simple; + ev_pc->stop_func = stop_simple; + ev_pc->access_func = access_amdsmi_process_count; + htable_insert(htable, ev_pc->name, ev_pc); + idx++; + } + /* ECC totals & enabled mask (where supported) */ + if (amdsmi_get_gpu_total_ecc_count_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC correctable errors", d); + native_event_t *ev_ecct = &ntv_table.events[idx]; + ev_ecct->id = idx; + ev_ecct->name = strdup(name_buf); + ev_ecct->descr = strdup(descr_buf); + ev_ecct->device = d; + ev_ecct->value = 0; + ev_ecct->mode = PAPI_MODE_READ; + ev_ecct->variant = 0; + ev_ecct->subvariant = 0; + ev_ecct->open_func = open_simple; + ev_ecct->close_func = close_simple; + ev_ecct->start_func = start_simple; + ev_ecct->stop_func = stop_simple; + ev_ecct->access_func = access_amdsmi_ecc_total; + htable_insert(htable, ev_ecct->name, ev_ecct); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC uncorrectable errors", d); + native_event_t *ev_ecctu = &ntv_table.events[idx]; + ev_ecctu->id = idx; + ev_ecctu->name = strdup(name_buf); + ev_ecctu->descr = strdup(descr_buf); + ev_ecctu->device = d; + ev_ecctu->value = 0; + ev_ecctu->mode = PAPI_MODE_READ; + ev_ecctu->variant = 1; + ev_ecctu->subvariant = 0; + ev_ecctu->open_func = open_simple; + ev_ecctu->close_func = close_simple; + ev_ecctu->start_func = start_simple; + ev_ecctu->stop_func = stop_simple; + ev_ecctu->access_func = access_amdsmi_ecc_total; + htable_insert(htable, ev_ecctu->name, ev_ecctu); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC deferred errors", d); + native_event_t *ev_ecctd = &ntv_table.events[idx]; + ev_ecctd->id = idx; + ev_ecctd->name = strdup(name_buf); + ev_ecctd->descr = strdup(descr_buf); + ev_ecctd->device = d; + ev_ecctd->value = 0; + ev_ecctd->mode = PAPI_MODE_READ; + ev_ecctd->variant = 2; + ev_ecctd->subvariant = 0; + ev_ecctd->open_func = open_simple; + ev_ecctd->close_func = close_simple; + ev_ecctd->start_func = start_simple; + ev_ecctd->stop_func = stop_simple; + ev_ecctd->access_func = access_amdsmi_ecc_total; + htable_insert(htable, ev_ecctd->name, ev_ecctd); + idx++; + } + if (amdsmi_get_gpu_ecc_enabled_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block bitmask", d); + native_event_t *ev_eccm = &ntv_table.events[idx]; + ev_eccm->id = idx; + ev_eccm->name = strdup(name_buf); + ev_eccm->descr = strdup(descr_buf); + ev_eccm->device = d; + ev_eccm->value = 0; + ev_eccm->mode = PAPI_MODE_READ; + ev_eccm->variant = 0; + ev_eccm->subvariant = 0; + ev_eccm->open_func = open_simple; + ev_eccm->close_func = close_simple; + ev_eccm->start_func = start_simple; + ev_eccm->stop_func = stop_simple; + ev_eccm->access_func = access_amdsmi_ecc_enabled_mask; + htable_insert(htable, ev_eccm->name, ev_eccm); + idx++; + } + /* Partitioning state (hash/enumeration) */ + if (amdsmi_get_gpu_compute_partition_p) { + char dummy[128] = {0}; + if (amdsmi_get_gpu_compute_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d compute partition (hash)", d); + native_event_t *ev_cpart = &ntv_table.events[idx]; + ev_cpart->id = idx; + ev_cpart->name = strdup(name_buf); + ev_cpart->descr = strdup(descr_buf); + if (!ev_cpart->name || !ev_cpart->descr) { + return PAPI_ENOMEM; + } + ev_cpart->device = d; + ev_cpart->value = 0; + ev_cpart->mode = PAPI_MODE_READ; + ev_cpart->variant = 0; + ev_cpart->subvariant = 0; + ev_cpart->open_func = open_simple; + ev_cpart->close_func = close_simple; + ev_cpart->start_func = start_simple; + ev_cpart->stop_func = stop_simple; + ev_cpart->access_func = access_amdsmi_compute_partition_hash; + htable_insert(htable, ev_cpart->name, ev_cpart); + idx++; + } + } + if (amdsmi_get_gpu_memory_partition_p) { + char dummy[128] = {0}; + if (amdsmi_get_gpu_memory_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); + native_event_t *ev_mpart = &ntv_table.events[idx]; + ev_mpart->id = idx; + ev_mpart->name = strdup(name_buf); + ev_mpart->descr = strdup(descr_buf); + if (!ev_mpart->name || !ev_mpart->descr) { + return PAPI_ENOMEM; + } + ev_mpart->device = d; + ev_mpart->value = 0; + ev_mpart->mode = PAPI_MODE_READ; + ev_mpart->variant = 0; + ev_mpart->subvariant = 0; + ev_mpart->open_func = open_simple; + ev_mpart->close_func = close_simple; + ev_mpart->start_func = start_simple; + ev_mpart->stop_func = stop_simple; + ev_mpart->access_func = access_amdsmi_memory_partition_hash; + htable_insert(htable, ev_mpart->name, ev_mpart); + idx++; + } + } + if (amdsmi_get_gpu_accelerator_partition_profile_p) { + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator profile partitions", d); + native_event_t *ev_anp = &ntv_table.events[idx]; + ev_anp->id = idx; + ev_anp->name = strdup(name_buf); + ev_anp->descr = strdup(descr_buf); + if (!ev_anp->name || !ev_anp->descr) { + return PAPI_ENOMEM; + } + ev_anp->device = d; + ev_anp->value = 0; + ev_anp->mode = PAPI_MODE_READ; + ev_anp->variant = 0; + ev_anp->subvariant = 0; + ev_anp->open_func = open_simple; + ev_anp->close_func = close_simple; + ev_anp->start_func = start_simple; + ev_anp->stop_func = stop_simple; + ev_anp->access_func = access_amdsmi_accelerator_num_partitions; + htable_insert(htable, ev_anp->name, ev_anp); + idx++; + } + } + } + // Cleanup - no device capabilities cache to free + ntv_table.count = idx; + return PAPI_OK; } /* -------- Helpers and new accessors (GPU read-only additions) -------- */ static uint64_t _str_to_u64_hash(const char *s) { - /* djb2 64-bit */ - uint64_t hash = 5381; - if (!s) return 0; - int c; - while ((c = *s++)) { - hash = ((hash << 5) + hash) + (uint8_t)c; - } - return hash; + /* djb2 64-bit */ + uint64_t hash = 5381; + if (!s) + return 0; + int c; + while ((c = *s++)) { + hash = ((hash << 5) + hash) + (uint8_t)c; + } + return hash; } static int access_amdsmi_lib_version(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_lib_version_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - amdsmi_version_t vinfo; - amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - switch (event->variant) { - case 0: event->value = (int64_t)vinfo.major; break; - case 1: event->value = (int64_t)vinfo.minor; break; - case 2: event->value = (int64_t)vinfo.release; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_lib_version_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + amdsmi_version_t vinfo; + amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)vinfo.major; + break; + case 1: + event->value = (int64_t)vinfo.minor; + break; + case 2: + event->value = (int64_t)vinfo.release; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_uuid_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_device_uuid_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - char buf[128] = {0}; - unsigned int len = sizeof(buf); - amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; -} + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_device_uuid_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + unsigned int len = sizeof(buf); + amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} static int access_amdsmi_gpu_string_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - char buf[256] = {0}; - amdsmi_status_t st = AMDSMI_STATUS_NOT_SUPPORTED; - switch (event->variant) { - case 0: /* vendor name */ - if (!amdsmi_get_gpu_vendor_name_p) return PAPI_ENOSUPP; - st = amdsmi_get_gpu_vendor_name_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 1: /* vram vendor */ - if (!amdsmi_get_gpu_vram_vendor_p) return PAPI_ENOSUPP; - st = amdsmi_get_gpu_vram_vendor_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 2: /* subsystem name */ - if (!amdsmi_get_gpu_subsystem_name_p) return PAPI_ENOSUPP; - st = amdsmi_get_gpu_subsystem_name_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 3: /* driver name */ - case 4: /* driver date */ - if (!amdsmi_get_gpu_driver_info_p) return PAPI_ENOSUPP; - { - amdsmi_driver_info_t dinfo; - st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); - if (st == AMDSMI_STATUS_SUCCESS) { - if (event->variant == 3) strncpy(buf, dinfo.driver_name, sizeof(buf)-1); - else strncpy(buf, dinfo.driver_date, sizeof(buf)-1); - } - } - break; - case 5: /* vbios version */ - case 6: /* vbios part number */ - case 7: /* vbios build date */ - if (!amdsmi_get_gpu_vbios_info_p) return PAPI_ENOSUPP; - { - amdsmi_vbios_info_t vb; - st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); - if (st == AMDSMI_STATUS_SUCCESS) { - if (event->variant == 5) strncpy(buf, vb.version, sizeof(buf)-1); - else if (event->variant == 6) strncpy(buf, vb.part_number, sizeof(buf)-1); - else strncpy(buf, vb.build_date, sizeof(buf)-1); - } - } - break; - default: - return PAPI_ENOSUPP; - } - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[256] = {0}; + amdsmi_status_t st = AMDSMI_STATUS_NOT_SUPPORTED; + switch (event->variant) { + case 0: /* vendor name */ + if (!amdsmi_get_gpu_vendor_name_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vendor_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 1: /* vram vendor */ + if (!amdsmi_get_gpu_vram_vendor_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vram_vendor_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 2: /* subsystem name */ + if (!amdsmi_get_gpu_subsystem_name_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_subsystem_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 3: /* driver name */ + case 4: /* driver date */ + if (!amdsmi_get_gpu_driver_info_p) + return PAPI_ENOSUPP; + { + amdsmi_driver_info_t dinfo; + st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 3) + strncpy(buf, dinfo.driver_name, sizeof(buf) - 1); + else + strncpy(buf, dinfo.driver_date, sizeof(buf) - 1); + } + } + break; + case 5: /* vbios version */ + case 6: /* vbios part number */ + case 7: /* vbios build date */ + if (!amdsmi_get_gpu_vbios_info_p) + return PAPI_ENOSUPP; + { + amdsmi_vbios_info_t vb; + st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 5) + strncpy(buf, vb.version, sizeof(buf) - 1); + else if (event->variant == 6) + strncpy(buf, vb.part_number, sizeof(buf) - 1); + else + strncpy(buf, vb.build_date, sizeof(buf) - 1); + } + } + break; + default: + return PAPI_ENOSUPP; + } + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; } static int access_amdsmi_enumeration_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_enumeration_info_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_enumeration_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - switch (event->variant) { - case 0: event->value = (int64_t)info.drm_render; break; - case 1: event->value = (int64_t)info.drm_card; break; - case 2: event->value = (int64_t)info.hsa_id; break; - case 3: event->value = (int64_t)info.hip_id; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_enumeration_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_enumeration_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.drm_render; + break; + case 1: + event->value = (int64_t)info.drm_card; + break; + case 2: + event->value = (int64_t)info.hsa_id; + break; + case 3: + event->value = (int64_t)info.hip_id; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_asic_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_asic_info_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_asic_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - switch (event->variant) { - case 0: event->value = (int64_t)info.vendor_id; break; - case 1: event->value = (int64_t)info.device_id; break; - case 2: event->value = (int64_t)info.subvendor_id; break; - case 3: event->value = (int64_t)0 /* not provided in amdsmi_asic_info_t */; break; - case 4: event->value = (int64_t)info.rev_id; break; - case 5: event->value = (int64_t)info.num_of_compute_units; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_asic_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_asic_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.vendor_id; + break; + case 1: + event->value = (int64_t)info.device_id; + break; + case 2: + event->value = (int64_t)info.subvendor_id; + break; + case 3: + event->value = (int64_t)0 /* not provided in amdsmi_asic_info_t */; + break; + case 4: + event->value = (int64_t)info.rev_id; + break; + case 5: + event->value = (int64_t)info.num_of_compute_units; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_link_metrics(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_link_metrics_t lm; - amdsmi_status_t st = amdsmi_get_link_metrics_p(device_handles[event->device], &lm); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint64_t total_read=0, total_write=0; - /* Sum over links */ - for (int i = 0; i < AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; ++i) { - total_read += lm.links[i].read; - total_write += lm.links[i].write; - } - if (event->variant == 0) event->value = (int64_t)total_read; - else event->value = (int64_t)total_write; + + amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); + if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + uint64_t acc = 0; + uint32_t n = lm.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + + for (uint32_t i = 0; i < n; ++i) { + if (event->subvariant != 0 && lm.links[i].link_type != (uint32_t)event->subvariant) continue; + switch (event->variant) { + case 0: acc += lm.links[i].read; break; /* KB */ + case 1: acc += lm.links[i].write; break; /* KB */ + case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ + case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ + default: return PAPI_ENOSUPP; + } + } + + if (acc > (uint64_t)INT64_MAX) acc = (uint64_t)INT64_MAX; /* defensive */ + event->value = (int64_t)acc; return PAPI_OK; } + static int access_amdsmi_process_count(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_process_list_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - uint32_t cap = 32; - int tries = 0; - amdsmi_proc_info_t *list = NULL; - amdsmi_status_t st; - while (tries++ < 4) { - list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); - if (!list) return PAPI_ENOMEM; - uint32_t maxp = cap; - st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); - if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { - papi_free(list); - cap *= 2; - continue; - } - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(list); - return PAPI_EMISC; - } - event->value = (int64_t)maxp; - papi_free(list); - return PAPI_OK; - } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_process_list_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t cap = 32; + int tries = 0; + amdsmi_proc_info_t *list = NULL; + amdsmi_status_t st; + while (tries++ < 4) { + list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); + if (!list) + return PAPI_ENOMEM; + uint32_t maxp = cap; + st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); + if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { + papi_free(list); + cap *= 2; + continue; + } + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(list); + return PAPI_EMISC; + } + event->value = (int64_t)maxp; + papi_free(list); + return PAPI_OK; + } + return PAPI_EMISC; } static int access_amdsmi_ecc_total(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_total_ecc_count_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_error_count_t ec; - amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - switch (event->variant) { - case 0: event->value = (int64_t)ec.correctable_count; break; - case 1: event->value = (int64_t)ec.uncorrectable_count; break; - case 2: event->value = (int64_t)ec.deferred_count; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_total_ecc_count_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_error_count_t ec; + memset(&ec, 0, sizeof(ec)); // <-- important + amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint64_t v = (event->variant == 0) ? ec.correctable_count + : (event->variant == 1) ? ec.uncorrectable_count + : ec.deferred_count; // some ASICs may not set this + if ((int64_t)v < 0) + return PAPI_ENOSUPP; // defensive: treat bogus as unsupported + event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; + return PAPI_OK; } + static int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ecc_enabled_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - uint64_t mask=0; - amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)mask; - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ecc_enabled_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + uint64_t mask = 0; + amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)mask; + return PAPI_OK; } static int access_amdsmi_compute_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_compute_partition_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_compute_partition_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; } static int access_amdsmi_memory_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_memory_partition_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_memory_partition_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; } static int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_accelerator_partition_profile_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_accelerator_partition_profile_t prof; - uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)prof.num_partitions; - return PAPI_OK; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_accelerator_partition_profile_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)prof.num_partitions; + return PAPI_OK; } static int shutdown_event_table(void) { - // Remove all events from hash table and free their names/descr - for (int i = 0; i < ntv_table.count; ++i) { - htable_delete(htable, ntv_table.events[i].name); - papi_free(ntv_table.events[i].name); - papi_free(ntv_table.events[i].descr); - } - papi_free(ntv_table.events); - ntv_table.events = NULL; - ntv_table.count = 0; - return PAPI_OK; + // Remove all events from hash table and free their names/descr + for (int i = 0; i < ntv_table.count; ++i) { + htable_delete(htable, ntv_table.events[i].name); + papi_free(ntv_table.events[i].name); + papi_free(ntv_table.events[i].descr); + } + papi_free(ntv_table.events); + ntv_table.events = NULL; + ntv_table.count = 0; + return PAPI_OK; } static int init_device_table(void) { - // Nothing to do (device_handles and device_count already set in amds_init) - return PAPI_OK; + // Nothing to do (device_handles and device_count already set in amds_init) + return PAPI_OK; } static int shutdown_device_table(void) { - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - } - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - device_count = 0; - gpu_count = 0; - cpu_count = 0; - return PAPI_OK; + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + } + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) + papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + device_count = 0; + gpu_count = 0; + cpu_count = 0; + return PAPI_OK; } /* Access function implementations (read/write operations for each event) */ static int access_amdsmi_temp_metric(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; /* ensure device handle is valid */ - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status = - amdsmi_get_temp_metric_p(device_handles[event->device], - (amdsmi_temperature_type_t) event->subvariant, - (amdsmi_temperature_metric_t) event->variant, - (int64_t *)&event->value); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; /* ensure device handle is valid */ + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], (amdsmi_temperature_type_t)event->subvariant, + (amdsmi_temperature_metric_t)event->variant, (int64_t *)&event->value); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } static int access_amdsmi_fan_rpms(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t speed = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], - event->subvariant, &speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = speed; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = speed; + return PAPI_OK; } static int access_amdsmi_fan_speed(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; // writing fan speed not supported - } - int64_t val = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_speed_p(device_handles[event->device], - event->subvariant, &val); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = val; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; // writing fan speed not supported + } + int64_t val = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], event->subvariant, &val); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = val; + return PAPI_OK; } static int access_amdsmi_mem_total(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = - amdsmi_get_total_memory_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) data; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)data; + return PAPI_OK; } static int access_amdsmi_mem_usage(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = - amdsmi_get_memory_usage_p(device_handles[event->device], - (amdsmi_memory_type_t) event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) data; - return PAPI_OK; -} -static int access_amdsmi_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode == PAPI_MODE_READ) { - // Read current power cap - amdsmi_power_cap_info_t info; - amdsmi_status_t status = - amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) info.power_cap; - return PAPI_OK; - } else if (mode == PAPI_MODE_WRITE) { - // Set new power cap (value expected in microWatts if API uses uW) - uint64_t new_cap = (uint64_t) event->value; - amdsmi_status_t status = - amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); - } + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)data; + return PAPI_OK; } -static int access_amdsmi_power_cap_range(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; +static int access_amdsmi_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode == PAPI_MODE_READ) { + // Read current power cap amdsmi_power_cap_info_t info; - amdsmi_status_t status = - amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 1) { - event->value = (int64_t) info.min_power_cap; - } else if (event->variant == 2) { - event->value = (int64_t) info.max_power_cap; - } else { - return PAPI_EMISC; + return PAPI_EMISC; } + event->value = (int64_t)info.power_cap; return PAPI_OK; + } else if (mode == PAPI_MODE_WRITE) { + // Set new power cap (value expected in microWatts if API uses uW) + uint64_t new_cap = (uint64_t)event->value; + amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + } + return PAPI_ENOSUPP; +} +static int access_amdsmi_power_cap_range(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_power_cap_info_t info; + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 1) { + event->value = (int64_t)info.min_power_cap; + } else if (event->variant == 2) { + event->value = (int64_t)info.max_power_cap; + } else { + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_power_average(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_power_info_t power; - amdsmi_status_t status = - amdsmi_get_power_info_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) power.average_socket_power; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_power_info_t power; + amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)power.average_socket_power; + return PAPI_OK; } static int access_amdsmi_pci_throughput(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t sent = 0, received = 0, max_pkt = 0; - amdsmi_status_t status = - amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], - &sent, &received, &max_pkt); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: event->value = (int64_t) sent; break; - case 1: event->value = (int64_t) received; break; - case 2: event->value = (int64_t) max_pkt; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t sent = 0, received = 0, max_pkt = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = (int64_t)sent; + break; + case 1: + event->value = (int64_t)received; + break; + case 2: + event->value = (int64_t)max_pkt; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_pci_replay_counter(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - uint64_t counter = 0; - amdsmi_status_t status = - amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) counter; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t counter = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)counter; + return PAPI_OK; } static int access_amdsmi_clk_freq(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_frequencies_t freq_info; - amdsmi_status_t status = - amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific index - if (event->subvariant == 0) { - event->value = freq_info.num_supported; - } else if (event->subvariant == 1) { - if (freq_info.num_supported > 0) { - event->value = freq_info.frequency[0]; // assume first is current - } else { - event->value = 0; - } + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_frequencies_t freq_info; + amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific + // index + if (event->subvariant == 0) { + event->value = freq_info.num_supported; + } else if (event->subvariant == 1) { + if (freq_info.num_supported > 0) { + event->value = freq_info.frequency[0]; // assume first is current } else { - int idx = event->subvariant - 2; - if (idx >= 0 && idx < (int)freq_info.num_supported) { - event->value = freq_info.frequency[idx]; - } else { - return PAPI_EMISC; - } + event->value = 0; } - return PAPI_OK; + } else { + int idx = event->subvariant - 2; + if (idx >= 0 && idx < (int)freq_info.num_supported) { + event->value = freq_info.frequency[idx]; + } else { + return PAPI_EMISC; + } + } + return PAPI_OK; } static int access_amdsmi_gpu_metrics(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - amdsmi_gpu_metrics_t metrics; - amdsmi_status_t status = - amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Parsing of metrics is not fully implemented; just return OK. - // (In a full implementation, event->variant or subvariant would select a specific field of 'metrics'.) - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_gpu_metrics_t metrics; + amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Parsing of metrics is not fully implemented; just return OK. + // (In a full implementation, event->variant or subvariant would select a + // specific field of 'metrics'.) + return PAPI_OK; } static int access_amdsmi_gpu_info(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status; - switch (event->variant) { - case 0: { - uint16_t id = 0; - status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = id; - } - break; - } - case 1: { - uint16_t rev = 0; - status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = rev; - } - break; - } - case 2: { - uint16_t subid = 0; - status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = subid; - } - break; - } - case 3: { - uint64_t bdfid = 0; - status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = (int64_t) bdfid; - } - break; - } - /*case 4: { - amdsmi_virtualization_mode_t mode_val; - status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = mode_val; - } - break; - }*/ - case 5: { - int32_t numa_node = -1; - status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = numa_node; - } - break; - } - default: - return PAPI_EMISC; - } - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status; + switch (event->variant) { + case 0: { + uint16_t id = 0; + status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = id; + } + break; + } + case 1: { + uint16_t rev = 0; + status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = rev; + } + break; + } + case 2: { + uint16_t subid = 0; + status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = subid; + } + break; + } + case 3: { + uint64_t bdfid = 0; + status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = (int64_t)bdfid; + } + break; + } + /*case 4: { + amdsmi_virtualization_mode_t mode_val; + status = + amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], + &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { event->value = mode_val; + } + break; + }*/ + case 5: { + int32_t numa_node = -1; + status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = numa_node; + } + break; + } + default: + return PAPI_EMISC; + } + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); } static int access_amdsmi_gpu_activity(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_engine_usage_t usage; - amdsmi_status_t status = - amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: event->value = usage.gfx_activity; break; - case 1: event->value = usage.umc_activity; break; - case 2: event->value = usage.mm_activity; break; - default: return PAPI_EMISC; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_engine_usage_t usage; + amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = usage.gfx_activity; + break; + case 1: + event->value = usage.umc_activity; + break; + case 2: + event->value = usage.mm_activity; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_fan_speed_max(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t max_speed = 0; - amdsmi_status_t status = - amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = max_speed; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t max_speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = max_speed; + return PAPI_OK; } static int access_amdsmi_pci_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_pcie_bandwidth_t bw; - amdsmi_status_t status = - amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - uint32_t cur_index = bw.transfer_rate.current; - if (cur_index >= bw.transfer_rate.num_supported) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: - event->value = bw.transfer_rate.num_supported; - break; - case 1: - event->value = (int64_t) bw.transfer_rate.frequency[cur_index]; - break; - case 2: - event->value = bw.lanes[cur_index]; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_pcie_bandwidth_t bw; + amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + uint32_t cur_index = bw.transfer_rate.current; + if (cur_index >= bw.transfer_rate.num_supported) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = bw.transfer_rate.num_supported; + break; + case 1: + event->value = (int64_t)bw.transfer_rate.frequency[cur_index]; + break; + case 2: + event->value = bw.lanes[cur_index]; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; } static int access_amdsmi_energy_count(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - float resolution = 0.0; - uint64_t timestamp = 0; - amdsmi_status_t status = - amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Convert energy count to microJoules - event->value = (int64_t) (energy * resolution); - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + amdsmi_status_t status = amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Convert energy count to microJoules + event->value = (int64_t)(energy * resolution); + return PAPI_OK; } static int access_amdsmi_power_profile_status(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_power_profile_status_t status_info; - amdsmi_status_t status = - amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = status_info.num_profiles; - } else if (event->variant == 1) { - event->value = (int64_t) status_info.current; - } else { - return PAPI_EMISC; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_power_profile_status_t status_info; + amdsmi_status_t status = amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = status_info.num_profiles; + } else if (event->variant == 1) { + event->value = (int64_t)status_info.current; + } else { + return PAPI_EMISC; + } + return PAPI_OK; } #ifndef AMDSMI_DISABLE_ESMI /* The functions below implement CPU metrics access */ static int access_amdsmi_cpu_socket_power(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t power = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) power; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t power = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)power; + return PAPI_OK; } static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) energy; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)energy; + return PAPI_OK; } static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t freq = 0; - char *src = NULL; - amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (src) free(src); - event->value = freq; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t freq = 0; + char *src = NULL; + amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (src) + free(src); + event->value = freq; + return PAPI_OK; } static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t fmax = 0, fmin = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = fmin; - } else { - event->value = fmax; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t fmax = 0, fmin = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = fmin; + } else { + event->value = fmax; + } + return PAPI_OK; } static int access_amdsmi_cpu_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t cap_value = 0; - amdsmi_status_t status; - if (event->variant == 0) { - status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); - } else { - status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); - } - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) cap_value; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t cap_value = 0; + amdsmi_status_t status; + if (event->variant == 0) { + status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); + } else { + status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); + } + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)cap_value; + return PAPI_OK; } static int access_amdsmi_cpu_core_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) energy; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)energy; + return PAPI_OK; } static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t freq = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = freq; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t freq = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = freq; + return PAPI_OK; } static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t boost = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = boost; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t boost = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = boost; + return PAPI_OK; } static int access_amdsmi_dimm_temp(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_thermal_t dimm_temp; - amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_temp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t) dimm_temp.temp; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_temp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)dimm_temp.temp; + return PAPI_OK; } static int access_amdsmi_dimm_power(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_power_t dimm_pow; - amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t) event->subvariant, &dimm_pow); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = dimm_pow.power; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_power_t dimm_pow; + amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_pow); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = dimm_pow.power; + return PAPI_OK; } static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_temp_range_refresh_rate_t rate; - amdsmi_status_t status = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t) event->subvariant, &rate); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = rate.range; - } else { - event->value = rate.ref_rate; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_temp_range_refresh_rate_t rate; + amdsmi_status_t status = + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t)event->subvariant, &rate); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = rate.range; + } else { + event->value = rate.ref_rate; + } + return PAPI_OK; } static int access_amdsmi_threads_per_core(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t threads = 0; - amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = threads; - return PAPI_OK; + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t threads = 0; + amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = threads; + return PAPI_OK; } static int access_amdsmi_cpu_family(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t family = 0; - amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = family; - return PAPI_OK; + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t family = 0; + amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = family; + return PAPI_OK; } static int access_amdsmi_cpu_model(int mode, void *arg) { - (void) arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t model = 0; - amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *) arg)->value = model; - return PAPI_OK; + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t model = 0; + amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = model; + return PAPI_OK; } static int access_amdsmi_smu_fw_version(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_smu_fw_version_t fw; - amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - int encoded = ((int) fw.major << 16) | ((int) fw.minor << 8) | fw.debug; - event->value = encoded; - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_smu_fw_version_t fw; + amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + int encoded = ((int)fw.major << 16) | ((int)fw.minor << 8) | fw.debug; + event->value = encoded; + return PAPI_OK; } static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *) arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_processor_handle src = device_handles[event->device]; - amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; - uint64_t min_bw = 0, max_bw = 0; - amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = (int64_t) min_bw; - } else { - event->value = (int64_t) max_bw; - } - return PAPI_OK; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_processor_handle src = device_handles[event->device]; + amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; + uint64_t min_bw = 0, max_bw = 0; + amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = (int64_t)min_bw; + } else { + event->value = (int64_t)max_bw; + } + return PAPI_OK; } #endif From 855177fbe4f51bf0b8abac83291c20a34d81909c Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 25 Aug 2025 23:40:58 -0700 Subject: [PATCH 041/147] take bios hash --- src/components/amd_smi/amds.c | 161 ++-------------------------------- 1 file changed, 8 insertions(+), 153 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index e67098b69..a610d9a10 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -39,7 +39,7 @@ static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_h static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); -/* New AMD SMI function pointers */ + /* Additional read-only AMD SMI function pointers */ static amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); static amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); @@ -62,13 +62,10 @@ static amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_ha static amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); static amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, uint32_t *); - static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -// static amdsmi_status_t -// (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, -// amdsmi_virtualization_mode_t *); +// (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle,amdsmi_virtualization_mode_t *); static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); @@ -111,7 +108,6 @@ static void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; /* forward declarations for internal helpers */ static int load_amdsmi_sym(void); -static int unload_amdsmi_sym(void); static int init_device_table(void); static int shutdown_device_table(void); static int init_event_table(void); @@ -196,22 +192,6 @@ static int access_amdsmi_compute_partition_hash(int mode, void *arg); static int access_amdsmi_memory_partition_hash(int mode, void *arg); static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); static int access_amdsmi_lib_version(int mode, void *arg); - -/* Prototypes for added GPU/query accessors (outside AMDSMI_DISABLE_ESMI guard) - */ -static uint64_t _str_to_u64_hash(const char *s); -static int access_amdsmi_uuid_hash(int mode, void *arg); -static int access_amdsmi_gpu_string_hash(int mode, void *arg); -static int access_amdsmi_enumeration_info(int mode, void *arg); -static int access_amdsmi_asic_info(int mode, void *arg); -static int access_amdsmi_link_metrics(int mode, void *arg); -static int access_amdsmi_process_count(int mode, void *arg); -static int access_amdsmi_ecc_total(int mode, void *arg); -static int access_amdsmi_ecc_enabled_mask(int mode, void *arg); -static int access_amdsmi_compute_partition_hash(int mode, void *arg); -static int access_amdsmi_memory_partition_hash(int mode, void *arg); -static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); -static int access_amdsmi_lib_version(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI static int access_amdsmi_cpu_socket_power(int mode, void *arg); static int access_amdsmi_cpu_socket_energy(int mode, void *arg); @@ -348,133 +328,9 @@ static int load_amdsmi_sym(void) { amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); #endif - /* Verify that all required symbols are loaded */ - struct { - const char *name; - void *ptr; - } required[] = {{"amdsmi_init", amdsmi_init_p}, - {"amdsmi_shut_down", amdsmi_shut_down_p}, - {"amdsmi_get_socket_handles", amdsmi_get_socket_handles_p}, - {"amdsmi_get_processor_handles_by_type", amdsmi_get_processor_handles_by_type_p}, - {"amdsmi_get_temp_metric", amdsmi_get_temp_metric_p}, - {"amdsmi_get_gpu_memory_total", amdsmi_get_total_memory_p}, - {"amdsmi_get_gpu_memory_usage", amdsmi_get_memory_usage_p}, - {"amdsmi_get_gpu_activity", amdsmi_get_gpu_activity_p}, - {"amdsmi_get_power_cap_info", amdsmi_get_power_cap_info_p}, - {"amdsmi_set_power_cap", amdsmi_set_power_cap_p}, - {"amdsmi_get_power_info", amdsmi_get_power_info_p}, - {"amdsmi_get_gpu_pci_throughput", amdsmi_get_gpu_pci_throughput_p}, - {"amdsmi_get_gpu_pci_replay_counter", amdsmi_get_gpu_pci_replay_counter_p}, - {"amdsmi_get_gpu_fan_rpms", amdsmi_get_gpu_fan_rpms_p}, - {"amdsmi_get_gpu_fan_speed", amdsmi_get_gpu_fan_speed_p}, - {"amdsmi_get_gpu_fan_speed_max", amdsmi_get_gpu_fan_speed_max_p}, - {"amdsmi_get_clk_freq", amdsmi_get_clk_freq_p}, - {"amdsmi_set_clk_freq", amdsmi_set_clk_freq_p}, - {"amdsmi_get_gpu_metrics_info", amdsmi_get_gpu_metrics_info_p}, - {"amdsmi_get_gpu_id", amdsmi_get_gpu_id_p}, - {"amdsmi_get_gpu_revision", amdsmi_get_gpu_revision_p}, - {"amdsmi_get_gpu_subsystem_id", amdsmi_get_gpu_subsystem_id_p}, - // { "amdsmi_get_gpu_virtualization_mode", - // amdsmi_get_gpu_virtualization_mode_p }, - {"amdsmi_get_gpu_pci_bandwidth", amdsmi_get_gpu_pci_bandwidth_p}, - {"amdsmi_get_gpu_bdf_id", amdsmi_get_gpu_bdf_id_p}, - {"amdsmi_get_gpu_topo_numa_affinity", amdsmi_get_gpu_topo_numa_affinity_p}, - {"amdsmi_get_energy_count", amdsmi_get_energy_count_p}, - {"amdsmi_get_gpu_power_profile_presets", amdsmi_get_gpu_power_profile_presets_p}, -#ifndef AMDSMI_DISABLE_ESMI - {"amdsmi_get_cpu_handles", amdsmi_get_cpu_handles_p}, - {"amdsmi_get_cpucore_handles", amdsmi_get_cpucore_handles_p}, - {"amdsmi_get_cpu_socket_power", amdsmi_get_cpu_socket_power_p}, - {"amdsmi_get_cpu_socket_power_cap", amdsmi_get_cpu_socket_power_cap_p}, - {"amdsmi_get_cpu_socket_power_cap_max", amdsmi_get_cpu_socket_power_cap_max_p}, - {"amdsmi_get_cpu_core_energy", amdsmi_get_cpu_core_energy_p}, - {"amdsmi_get_cpu_socket_energy", amdsmi_get_cpu_socket_energy_p}, - {"amdsmi_get_cpu_smu_fw_version", amdsmi_get_cpu_smu_fw_version_p}, - {"amdsmi_get_threads_per_core", amdsmi_get_threads_per_core_p}, - {"amdsmi_get_cpu_family", amdsmi_get_cpu_family_p}, - {"amdsmi_get_cpu_model", amdsmi_get_cpu_model_p}, - {"amdsmi_get_cpu_core_boostlimit", amdsmi_get_cpu_core_boostlimit_p}, - {"amdsmi_get_cpu_socket_current_active_freq_limit", amdsmi_get_cpu_socket_current_active_freq_limit_p}, - {"amdsmi_get_cpu_socket_freq_range", amdsmi_get_cpu_socket_freq_range_p}, - {"amdsmi_get_cpu_core_current_freq_limit", amdsmi_get_cpu_core_current_freq_limit_p}, - {"amdsmi_get_minmax_bandwidth_between_processors", amdsmi_get_minmax_bandwidth_between_processors_p}, - {"amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p}, - {"amdsmi_get_cpu_dimm_power_consumption", amdsmi_get_cpu_dimm_power_consumption_p}, - {"amdsmi_get_cpu_dimm_thermal_sensor", amdsmi_get_cpu_dimm_thermal_sensor_p} -#endif - }; - int miss = 0; - int pos = snprintf(error_string, sizeof(error_string), "Missing AMD SMI symbols:"); - for (size_t i = 0; i < sizeof(required) / sizeof(required[0]); ++i) { - if (!required[i].ptr) { - miss++; - pos += snprintf(error_string + pos, sizeof(error_string) - pos, "\n %s", required[i].name); - } - } - if (miss) { - dlclose(amds_dlp); - amds_dlp = NULL; - return PAPI_ENOSUPP; - } - return PAPI_OK; -} -static int unload_amdsmi_sym(void) { - /* Reset all function pointers and close library */ - amdsmi_init_p = NULL; - amdsmi_shut_down_p = NULL; - amdsmi_get_socket_handles_p = NULL; - amdsmi_get_processor_handles_by_type_p = NULL; - amdsmi_get_temp_metric_p = NULL; - amdsmi_get_gpu_fan_rpms_p = NULL; - amdsmi_get_gpu_fan_speed_p = NULL; - amdsmi_get_gpu_fan_speed_max_p = NULL; - amdsmi_get_total_memory_p = NULL; - amdsmi_get_memory_usage_p = NULL; - amdsmi_get_gpu_activity_p = NULL; - amdsmi_get_power_cap_info_p = NULL; - amdsmi_set_power_cap_p = NULL; - amdsmi_get_power_info_p = NULL; - amdsmi_get_gpu_pci_throughput_p = NULL; - amdsmi_get_gpu_pci_replay_counter_p = NULL; - amdsmi_get_clk_freq_p = NULL; - amdsmi_set_clk_freq_p = NULL; - amdsmi_get_gpu_metrics_info_p = NULL; - amdsmi_get_gpu_id_p = NULL; - amdsmi_get_gpu_revision_p = NULL; - amdsmi_get_gpu_subsystem_id_p = NULL; - // amdsmi_get_gpu_virtualization_mode_p = NULL; - amdsmi_get_gpu_pci_bandwidth_p = NULL; - amdsmi_get_gpu_bdf_id_p = NULL; - amdsmi_get_gpu_topo_numa_affinity_p = NULL; - amdsmi_get_energy_count_p = NULL; - amdsmi_get_gpu_power_profile_presets_p = NULL; -#ifndef AMDSMI_DISABLE_ESMI - amdsmi_get_cpu_handles_p = NULL; - amdsmi_get_cpucore_handles_p = NULL; - amdsmi_get_cpu_socket_power_p = NULL; - amdsmi_get_cpu_socket_power_cap_p = NULL; - amdsmi_get_cpu_socket_power_cap_max_p = NULL; - amdsmi_get_cpu_core_energy_p = NULL; - amdsmi_get_cpu_socket_energy_p = NULL; - amdsmi_get_cpu_smu_fw_version_p = NULL; - amdsmi_get_threads_per_core_p = NULL; - amdsmi_get_cpu_family_p = NULL; - amdsmi_get_cpu_model_p = NULL; - amdsmi_get_cpu_core_boostlimit_p = NULL; - amdsmi_get_cpu_socket_current_active_freq_limit_p = NULL; - amdsmi_get_cpu_socket_freq_range_p = NULL; - amdsmi_get_cpu_core_current_freq_limit_p = NULL; - amdsmi_get_minmax_bandwidth_between_processors_p = NULL; - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = NULL; - amdsmi_get_cpu_dimm_power_consumption_p = NULL; - amdsmi_get_cpu_dimm_thermal_sensor_p = NULL; -#endif - if (amds_dlp) { - dlclose(amds_dlp); - amds_dlp = NULL; - } return PAPI_OK; } + /* Initialize AMD SMI library and discover devices */ int amds_init(void) { // Check if already initialized to avoid expensive re-initialization @@ -662,21 +518,20 @@ int amds_init(void) { cores_per_socket = NULL; } amdsmi_shut_down_p(); - unload_amdsmi_sym(); return papi_errno; } int amds_shutdown(void) { shutdown_event_table(); shutdown_device_table(); htable_shutdown(htable); - amdsmi_shut_down_p(); // shutdown AMD SMI library - return unload_amdsmi_sym(); + + return amdsmi_shut_down_p(); } int amds_err_get_last(const char **err_string) { if (err_string) *err_string = error_string; return PAPI_OK; -} +} /* Event enumeration: iterate over native events */ int amds_evt_enum(unsigned int *EventCode, int modifier) { if (modifier == PAPI_ENUM_FIRST) { @@ -2445,7 +2300,7 @@ static int init_event_table(void) { } } /* VBIOS info (strings hashed) */ - if (amdsmi_get_gpu_vbios_info_p) { + /*if (amdsmi_get_gpu_vbios_info_p) { amdsmi_vbios_info_t vb; if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { @@ -2515,7 +2370,7 @@ static int init_event_table(void) { htable_insert(htable, ev_vbd->name, ev_vbd); idx++; } - } + }*/ /* PCIe metrics via amdsmi_get_link_metrics (aggregate read/write kB over * XGMI) */ amdsmi_link_metrics_t lm_probe; memset(&lm_probe, 0, sizeof(lm_probe)); From 9190986a94f6ac4c0521df35c051ac5bc6f74ffe Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 26 Aug 2025 01:32:32 -0700 Subject: [PATCH 042/147] more events --- src/components/amd_smi/amds.c | 657 ++++++++++++++++++++++++++++++++++ 1 file changed, 657 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a610d9a10..e1e1a171a 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -6,6 +6,8 @@ #include #include #include +#include +#include #include #define MAX_EVENTS_PER_DEVICE 1024 #define AMDSMI_DISABLE_ESMI @@ -71,6 +73,22 @@ static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint6 static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); +static amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); +static amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); +static amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); +static amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); +static amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); +static amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); +static amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); +static amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); +static amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); +static amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); +static amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +static amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); + #ifndef AMDSMI_DISABLE_ESMI /* CPU function pointers */ static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); @@ -160,6 +178,26 @@ static int release_devices(int32_t *bitmask) { *bitmask = 0; return PAPI_OK; } + +/* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). */ +static int silence_stderr_begin(void) { + int devnull = open("/dev/null", O_WRONLY); + if (devnull < 0) return -1; + int saved = dup(STDERR_FILENO); + if (saved < 0) { close(devnull); return -1; } + (void)dup2(devnull, STDERR_FILENO); + close(devnull); + return saved; +} + +/* Restores stderr using the fd returned by silence_stderr_begin(). */ +static void silence_stderr_end(int saved_fd) { + if (saved_fd >= 0) { + (void)dup2(saved_fd, STDERR_FILENO); + close(saved_fd); + } +} + /* Prototypes for event access (read/write) functions */ static int access_amdsmi_temp_metric(int mode, void *arg); static int access_amdsmi_fan_speed(int mode, void *arg); @@ -192,6 +230,21 @@ static int access_amdsmi_compute_partition_hash(int mode, void *arg); static int access_amdsmi_memory_partition_hash(int mode, void *arg); static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); static int access_amdsmi_lib_version(int mode, void *arg); + +static int access_amdsmi_cache_size(int mode, void *arg); +static int access_amdsmi_overdrive_level(int mode, void *arg); +static int access_amdsmi_mem_overdrive_level(int mode, void *arg); +static int access_amdsmi_od_volt_regions_count(int mode, void *arg); +static int access_amdsmi_perf_level(int mode, void *arg); +static int access_amdsmi_pm_metrics_count(int mode, void *arg); +static int access_amdsmi_ras_ecc_schema(int mode, void *arg); +static int access_amdsmi_reg_count(int mode, void *arg); +static int access_amdsmi_voltage(int mode, void *arg); +static int access_amdsmi_vram_width(int mode, void *arg); +static int access_amdsmi_soc_pstate_id(int mode, void *arg); +static int access_amdsmi_xgmi_plpd_id(int mode, void *arg); + + #ifndef AMDSMI_DISABLE_ESMI static int access_amdsmi_cpu_socket_power(int mode, void *arg); static int access_amdsmi_cpu_socket_energy(int mode, void *arg); @@ -305,6 +358,21 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); + amdsmi_get_gpu_cache_info_p = sym("amdsmi_get_gpu_cache_info", NULL); + amdsmi_get_gpu_mem_overdrive_level_p = sym("amdsmi_get_gpu_mem_overdrive_level", NULL); + amdsmi_get_gpu_od_volt_curve_regions_p = sym("amdsmi_get_gpu_od_volt_curve_regions", NULL); + amdsmi_get_gpu_od_volt_info_p = sym("amdsmi_get_gpu_od_volt_info", NULL); + amdsmi_get_gpu_overdrive_level_p = sym("amdsmi_get_gpu_overdrive_level", NULL); + amdsmi_get_gpu_perf_level_p = sym("amdsmi_get_gpu_perf_level", NULL); + amdsmi_get_gpu_pm_metrics_info_p = sym("amdsmi_get_gpu_pm_metrics_info", NULL); + amdsmi_get_gpu_ras_feature_info_p = sym("amdsmi_get_gpu_ras_feature_info", NULL); + amdsmi_get_gpu_reg_table_info_p = sym("amdsmi_get_gpu_reg_table_info", NULL); + amdsmi_get_gpu_volt_metric_p = sym("amdsmi_get_gpu_volt_metric", NULL); + amdsmi_get_gpu_vram_info_p = sym("amdsmi_get_gpu_vram_info", NULL); + amdsmi_get_pcie_info_p = sym("amdsmi_get_pcie_info", NULL); + amdsmi_get_processor_count_from_handles_p = sym("amdsmi_get_processor_count_from_handles", NULL); + amdsmi_get_soc_pstate_p = sym("amdsmi_get_soc_pstate", NULL); + amdsmi_get_xgmi_plpd_p = sym("amdsmi_get_xgmi_plpd", NULL); #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ @@ -696,6 +764,386 @@ static int init_event_table(void) { if (!device_handles || !device_handles[d]) { continue; } + + + + // GPU cache info events + if (amdsmi_get_gpu_cache_info_p) { + amdsmi_gpu_cache_info_t cache_info; + if (amdsmi_get_gpu_cache_info_p(device_handles[d], &cache_info) == AMDSMI_STATUS_SUCCESS) { + for (uint32_t i = 0; i < cache_info.num_cache_types; ++i) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + uint32_t level = cache_info.cache[i].cache_level; + uint32_t prop = cache_info.cache[i].cache_properties; + char type_str[8] = "cache"; + if ((prop & AMDSMI_CACHE_PROPERTY_INST_CACHE) && !(prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE)) { + strcpy(type_str, "icache"); + } else if ((prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE) && !(prop & AMDSMI_CACHE_PROPERTY_INST_CACHE)) { + strcpy(type_str, "dcache"); + } else { + strcpy(type_str, "cache"); + } + snprintf(name_buf, sizeof(name_buf), "L%u_%s_size:device=%d", level, type_str, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s size (bytes)", d, level, (strcmp(type_str, "cache")==0 ? "cache" : (strcmp(type_str, "icache")==0 ? "instruction cache" : "data cache"))); + native_event_t *ev_cache = &ntv_table.events[idx]; + ev_cache->id = idx; + ev_cache->name = strdup(name_buf); + ev_cache->descr = strdup(descr_buf); + ev_cache->device = d; + ev_cache->value = 0; + ev_cache->mode = PAPI_MODE_READ; + ev_cache->variant = 0; + ev_cache->subvariant = i; + ev_cache->open_func = open_simple; + ev_cache->close_func = close_simple; + ev_cache->start_func = start_simple; + ev_cache->stop_func = stop_simple; + ev_cache->access_func = access_amdsmi_cache_size; + htable_insert(htable, ev_cache->name, ev_cache); + idx++; + } + } + } + // GPU VRAM info event + if (amdsmi_get_gpu_vram_info_p) { + amdsmi_vram_info_t vram_info; + if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); + native_event_t *ev_vram_width = &ntv_table.events[idx]; + ev_vram_width->id = idx; + ev_vram_width->name = strdup(name_buf); + ev_vram_width->descr = strdup(descr_buf); + ev_vram_width->device = d; + ev_vram_width->value = 0; + ev_vram_width->mode = PAPI_MODE_READ; + ev_vram_width->variant = 0; + ev_vram_width->subvariant = 0; + ev_vram_width->open_func = open_simple; + ev_vram_width->close_func = close_simple; + ev_vram_width->start_func = start_simple; + ev_vram_width->stop_func = stop_simple; + ev_vram_width->access_func = access_amdsmi_vram_width; + htable_insert(htable, ev_vram_width->name, ev_vram_width); + idx++; + } + } + // GPU Overdrive level events + if (amdsmi_get_gpu_overdrive_level_p) { + uint32_t od_val; + if (amdsmi_get_gpu_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU core clock overdrive (%%)", d); + native_event_t *ev_od = &ntv_table.events[idx]; + ev_od->id = idx; + ev_od->name = strdup(name_buf); + ev_od->descr = strdup(descr_buf); + ev_od->device = d; + ev_od->value = 0; + ev_od->mode = PAPI_MODE_READ; + ev_od->variant = 0; + ev_od->subvariant = 0; + ev_od->open_func = open_simple; + ev_od->close_func = close_simple; + ev_od->start_func = start_simple; + ev_od->stop_func = stop_simple; + ev_od->access_func = access_amdsmi_overdrive_level; + htable_insert(htable, ev_od->name, ev_od); + idx++; + } + } + if (amdsmi_get_gpu_mem_overdrive_level_p) { + uint32_t od_val; + if (amdsmi_get_gpu_mem_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "gpu_mem_overdrive_percent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU memory clock overdrive (%%)", d); + native_event_t *ev_mod = &ntv_table.events[idx]; + ev_mod->id = idx; + ev_mod->name = strdup(name_buf); + ev_mod->descr = strdup(descr_buf); + ev_mod->device = d; + ev_mod->value = 0; + ev_mod->mode = PAPI_MODE_READ; + ev_mod->variant = 0; + ev_mod->subvariant = 0; + ev_mod->open_func = open_simple; + ev_mod->close_func = close_simple; + ev_mod->start_func = start_simple; + ev_mod->stop_func = stop_simple; + ev_mod->access_func = access_amdsmi_mem_overdrive_level; + htable_insert(htable, ev_mod->name, ev_mod); + idx++; + } + } + // GPU performance level event + if (amdsmi_get_gpu_perf_level_p) { + amdsmi_dev_perf_level_t perf; + if (amdsmi_get_gpu_perf_level_p(device_handles[d], &perf) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "perf_level:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current performance level", d); + native_event_t *ev_perf = &ntv_table.events[idx]; + ev_perf->id = idx; + ev_perf->name = strdup(name_buf); + ev_perf->descr = strdup(descr_buf); + ev_perf->device = d; + ev_perf->value = 0; + ev_perf->mode = PAPI_MODE_READ; + ev_perf->variant = 0; + ev_perf->subvariant = 0; + ev_perf->open_func = open_simple; + ev_perf->close_func = close_simple; + ev_perf->start_func = start_simple; + ev_perf->stop_func = stop_simple; + ev_perf->access_func = access_amdsmi_perf_level; + htable_insert(htable, ev_perf->name, ev_perf); + idx++; + } + } + + // GPU PM metrics count event + if (amdsmi_get_gpu_pm_metrics_info_p) { + amdsmi_name_value_t *metrics = NULL; + uint32_t mcount = 0; + + int saved_stderr = silence_stderr_begin(); // <-- mute + amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], &metrics, &mcount); + silence_stderr_end(saved_stderr); // <-- restore + + if (metrics) papi_free(metrics); + if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); + native_event_t *ev_pmcount = &ntv_table.events[idx]; + ev_pmcount->id = idx; + ev_pmcount->name = strdup(name_buf); + ev_pmcount->descr = strdup(descr_buf); + ev_pmcount->device = d; + ev_pmcount->value = 0; + ev_pmcount->mode = PAPI_MODE_READ; + ev_pmcount->variant = 0; + ev_pmcount->subvariant = 0; + ev_pmcount->open_func = open_simple; + ev_pmcount->close_func = close_simple; + ev_pmcount->start_func = start_simple; + ev_pmcount->stop_func = stop_simple; + ev_pmcount->access_func = access_amdsmi_pm_metrics_count; + htable_insert(htable, ev_pmcount->name, ev_pmcount); + idx++; + } + } + // GPU RAS feature (ECC schema) event + if (amdsmi_get_gpu_ras_feature_info_p) { + amdsmi_ras_feature_t ras; + if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); + native_event_t *ev_ras = &ntv_table.events[idx]; + ev_ras->id = idx; + ev_ras->name = strdup(name_buf); + ev_ras->descr = strdup(descr_buf); + ev_ras->device = d; + ev_ras->value = 0; + ev_ras->mode = PAPI_MODE_READ; + ev_ras->variant = 0; + ev_ras->subvariant = 0; + ev_ras->open_func = open_simple; + ev_ras->close_func = close_simple; + ev_ras->start_func = start_simple; + ev_ras->stop_func = stop_simple; + ev_ras->access_func = access_amdsmi_ras_ecc_schema; + htable_insert(htable, ev_ras->name, ev_ras); + idx++; + } + } + // GPU voltage metrics events + if (amdsmi_get_gpu_volt_metric_p) { + // Sensor 0: VDDGFX, Sensor 1: VDDBOARD + int sensors[2] = {0, 1}; + const char *sensor_names[2] = {"vddgfx", "vddboard"}; + for (int si = 0; si < 2; ++si) { + int64_t volt_val = 0; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)sensors[si], AMDSMI_VOLT_CURRENT, &volt_val); + if (st == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "voltage_%s:device=%d", sensor_names[si], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s voltage (mV)", d, sensor_names[si]); + native_event_t *ev_volt = &ntv_table.events[idx]; + ev_volt->id = idx; + ev_volt->name = strdup(name_buf); + ev_volt->descr = strdup(descr_buf); + ev_volt->device = d; + ev_volt->value = 0; + ev_volt->mode = PAPI_MODE_READ; + ev_volt->variant = AMDSMI_VOLT_CURRENT; + ev_volt->subvariant = sensors[si]; + ev_volt->open_func = open_simple; + ev_volt->close_func = close_simple; + ev_volt->start_func = start_simple; + ev_volt->stop_func = stop_simple; + ev_volt->access_func = access_amdsmi_voltage; + htable_insert(htable, ev_volt->name, ev_volt); + idx++; + } + } + } + // GPU OD voltage curve regions count event + if (amdsmi_get_gpu_od_volt_curve_regions_p) { + uint32_t num_regions = 0; + amdsmi_freq_volt_region_t *buf = NULL; + // Try once with small buffer to check support + buf = (amdsmi_freq_volt_region_t *)papi_calloc(4, sizeof(amdsmi_freq_volt_region_t)); + if (buf) { + num_regions = 4; + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, buf); + papi_free(buf); + if (st == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of voltage curve regions", d); + native_event_t *ev_vcr = &ntv_table.events[idx]; + ev_vcr->id = idx; + ev_vcr->name = strdup(name_buf); + ev_vcr->descr = strdup(descr_buf); + ev_vcr->device = d; + ev_vcr->value = 0; + ev_vcr->mode = PAPI_MODE_READ; + ev_vcr->variant = 0; + ev_vcr->subvariant = 0; + ev_vcr->open_func = open_simple; + ev_vcr->close_func = close_simple; + ev_vcr->start_func = start_simple; + ev_vcr->stop_func = stop_simple; + ev_vcr->access_func = access_amdsmi_od_volt_regions_count; + htable_insert(htable, ev_vcr->name, ev_vcr); + idx++; + } + } + } + // GPU SoC P-state policy event + if (amdsmi_get_soc_pstate_p) { + amdsmi_dpm_policy_t policy; + if (amdsmi_get_soc_pstate_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "soc_pstate_policy:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current SoC P-state policy id", d); + native_event_t *ev_soc = &ntv_table.events[idx]; + ev_soc->id = idx; + ev_soc->name = strdup(name_buf); + ev_soc->descr = strdup(descr_buf); + ev_soc->device = d; + ev_soc->value = 0; + ev_soc->mode = PAPI_MODE_READ; + ev_soc->variant = 0; + ev_soc->subvariant = 0; + ev_soc->open_func = open_simple; + ev_soc->close_func = close_simple; + ev_soc->start_func = start_simple; + ev_soc->stop_func = stop_simple; + ev_soc->access_func = access_amdsmi_soc_pstate_id; + htable_insert(htable, ev_soc->name, ev_soc); + idx++; + } + } + // GPU XGMI PLPD policy event + if (amdsmi_get_xgmi_plpd_p) { + amdsmi_dpm_policy_t policy; + if (amdsmi_get_xgmi_plpd_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_plpd:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current XGMI PLPD policy id", d); + native_event_t *ev_xplpd = &ntv_table.events[idx]; + ev_xplpd->id = idx; + ev_xplpd->name = strdup(name_buf); + ev_xplpd->descr = strdup(descr_buf); + ev_xplpd->device = d; + ev_xplpd->value = 0; + ev_xplpd->mode = PAPI_MODE_READ; + ev_xplpd->variant = 0; + ev_xplpd->subvariant = 0; + ev_xplpd->open_func = open_simple; + ev_xplpd->close_func = close_simple; + ev_xplpd->start_func = start_simple; + ev_xplpd->stop_func = stop_simple; + ev_xplpd->access_func = access_amdsmi_xgmi_plpd_id; + htable_insert(htable, ev_xplpd->name, ev_xplpd); + idx++; + } + } + // GPU register table metrics count events + if (amdsmi_get_gpu_reg_table_info_p) { + amdsmi_reg_type_t reg_types[] = {AMDSMI_REG_XGMI, AMDSMI_REG_WAFL, AMDSMI_REG_PCIE, AMDSMI_REG_USR, AMDSMI_REG_USR1}; + const char *reg_names[] = {"XGMI", "WAFL", "PCIE", "USR", "USR1"}; + for (int rt = 0; rt < 5; ++rt) { + amdsmi_name_value_t *reg_metrics = NULL; + uint32_t num_metrics = 0; + + int saved_stderr = silence_stderr_begin(); + amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[d], reg_types[rt], ®_metrics, &num_metrics); + silence_stderr_end(saved_stderr); + + if (reg_metrics) papi_free(reg_metrics); + if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", reg_names[rt], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of %s register metrics", d, reg_names[rt]); + native_event_t *ev_reg = &ntv_table.events[idx]; + ev_reg->id = idx; + ev_reg->name = strdup(name_buf); + ev_reg->descr = strdup(descr_buf); + ev_reg->device = d; + ev_reg->value = 0; + ev_reg->mode = PAPI_MODE_READ; + ev_reg->variant = (uint32_t)reg_types[rt]; + ev_reg->subvariant = 0; + ev_reg->open_func = open_simple; + ev_reg->close_func = close_simple; + ev_reg->start_func = start_simple; + ev_reg->stop_func = stop_simple; + ev_reg->access_func = access_amdsmi_reg_count; + htable_insert(htable, ev_reg->name, ev_reg); + idx++; + } + } + } + + + for (int si = 0; si < num_temp_sensors && si < 8; ++si) { // Test each sensor individually first int64_t sensor_test_val; @@ -3713,3 +4161,212 @@ static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { return PAPI_OK; } #endif + +static int access_amdsmi_cache_size(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + if (!amdsmi_get_gpu_cache_info_p) return PAPI_ENOSUPP; + + amdsmi_gpu_cache_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_cache_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + /* subvariant = cache index chosen during registration */ + if (event->subvariant >= info.num_cache_types) return PAPI_EMISC; + + /* cache_size is KB per header; expose bytes to stay consistent with other sizes */ + uint64_t size_kb = info.cache[event->subvariant].cache_size; + event->value = (uint64_t)size_kb * 1024ULL; + return PAPI_OK; +} + +static int access_amdsmi_overdrive_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_overdrive_level_p) return PAPI_ENOSUPP; + + uint32_t od = 0; + amdsmi_status_t st = amdsmi_get_gpu_overdrive_level_p(device_handles[event->device], &od); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)od; + return PAPI_OK; +} + +static int access_amdsmi_mem_overdrive_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_mem_overdrive_level_p) return PAPI_ENOSUPP; + + uint32_t od = 0; + amdsmi_status_t st = amdsmi_get_gpu_mem_overdrive_level_p(device_handles[event->device], &od); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)od; + return PAPI_OK; +} + +static int access_amdsmi_od_volt_regions_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; + + /* Probe to get count; API requires a buffer, so do a two-call pattern */ + uint32_t num = 0; + amdsmi_freq_volt_region_t *buf = NULL; + + /* First call: ask for 0 (expect MORE_DATA/INSUFFICIENT_SIZE with num set) */ + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); + if (st == AMDSMI_STATUS_INSUFFICIENT_SIZE || st == AMDSMI_STATUS_NO_DATA) { + if (num == 0) return PAPI_EMISC; + buf = (amdsmi_freq_volt_region_t *)papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); + if (!buf) return PAPI_ENOMEM; + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); + } + if (st != AMDSMI_STATUS_SUCCESS) { + if (buf) papi_free(buf); + return PAPI_EMISC; + } + event->value = (uint64_t)num; + if (buf) papi_free(buf); + return PAPI_OK; +} + +static int access_amdsmi_perf_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_perf_level_p) return PAPI_ENOSUPP; + + amdsmi_dev_perf_level_t perf = AMDSMI_DEV_PERF_LEVEL_UNKNOWN; + amdsmi_status_t st = amdsmi_get_gpu_perf_level_p(device_handles[event->device], &perf); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)perf; + return PAPI_OK; +} + +static int access_amdsmi_pm_metrics_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; + + amdsmi_name_value_t *metrics = NULL; + uint32_t count = 0; + amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); + if (metrics) papi_free(metrics); /* library allocates */ + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)count; + return PAPI_OK; +} + +static int access_amdsmi_ras_ecc_schema(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; + + amdsmi_ras_feature_t ras = {0}; + amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)ras.ecc_correction_schema_flag; + return PAPI_OK; +} + +static int access_amdsmi_reg_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; + + amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; /* set at registration */ + amdsmi_name_value_t *regs = NULL; + uint32_t num = 0; + amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); + if (regs) papi_free(regs); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)num; + return PAPI_OK; +} + +static int access_amdsmi_voltage(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_volt_metric_p) return PAPI_ENOSUPP; + + amdsmi_voltage_type_t sensor = (amdsmi_voltage_type_t)event->subvariant; /* set at registration */ + amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t)event->variant; /* e.g., AMDSMI_VOLT_CURRENT */ + int64_t mv = 0; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[event->device], sensor, metric, &mv); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)mv; /* API reports mV */ + return PAPI_OK; +} + +static int access_amdsmi_vram_width(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)info.vram_bit_width; + return PAPI_OK; +} + +static int access_amdsmi_soc_pstate_id(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.current; + return PAPI_OK; +} + +static int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.current; + return PAPI_OK; +} \ No newline at end of file From 755b1159aa5c529c903854a088c0fef9953268f2 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:26:18 -0400 Subject: [PATCH 043/147] Fix internal AMD SMI refs and include paths --- src/components/amd_smi/Rules.amd_smi | 33 +- src/components/amd_smi/amds.c | 1669 ++--------------------- src/components/amd_smi/amds_accessors.c | 1235 +++++++++++++++++ src/components/amd_smi/amds_ctx.c | 114 ++ src/components/amd_smi/amds_evtapi.c | 46 + src/components/amd_smi/amds_priv.h | 198 +++ 6 files changed, 1716 insertions(+), 1579 deletions(-) create mode 100644 src/components/amd_smi/amds_accessors.c create mode 100644 src/components/amd_smi/amds_ctx.c create mode 100644 src/components/amd_smi/amds_evtapi.c create mode 100644 src/components/amd_smi/amds_priv.h diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index aea77c01a..426a4f254 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -75,10 +75,16 @@ PAPI_AMDSMI_ROOT ?= /opt/rocm # for disabling is shown using the papi utility, # papi/src/utils/papi_component_avail. -COMPSRCS += components/amd_smi/linux-amd-smi.c \ - components/amd_smi/amds.c -COMPOBJS += linux-amd-smi.o \ - amds.o +COMPSRCS += components/amd_smi/linux-amd-smi.c \ + components/amd_smi/amds.c \ + components/amd_smi/amds_accessors.c \ + components/amd_smi/amds_evtapi.c \ + components/amd_smi/amds_ctx.c +COMPOBJS += linux-amd-smi.o \ + amds.o \ + amds_accessors.o \ + amds_evtapi.o \ + amds_ctx.o # CFLAGS specifies compile flags; need include files here, and macro defines. # Where to find amd_smi.h varied in early ROCM releases. If it changes again, @@ -91,8 +97,17 @@ CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include CFLAGS += -g LDFLAGS += $(LDL) -g -linux-amd-smi.o: components/amd_smi/linux-amd-smi.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o - -amds.o: components/amd_smi/amds.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds.c -o amds.o +linux-amd-smi.o: components/amd_smi/linux-amd-smi.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o + +amds.o: components/amd_smi/amds.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds.c -o amds.o + +amds_accessors.o: components/amd_smi/amds_accessors.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_accessors.c -o amds_accessors.o + +amds_evtapi.o: components/amd_smi/amds_evtapi.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_evtapi.c -o amds_evtapi.o + +amds_ctx.o: components/amd_smi/amds_ctx.c $(HEADERS) + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_ctx.c -o amds_ctx.o diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index e1e1a171a..d0cd7ad77 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,4 +1,5 @@ #include "amds.h" +#include "amds_priv.h" #include "amdsmi.h" #include "htable.h" #include "papi.h" @@ -9,120 +10,114 @@ #include #include #include -#define MAX_EVENTS_PER_DEVICE 1024 -#define AMDSMI_DISABLE_ESMI + #define MAX_EVENTS_PER_DEVICE 1024 unsigned int _amd_smi_lock; -typedef enum { - PAPI_MODE_READ = 1, - PAPI_MODE_WRITE, - PAPI_MODE_RDWR, -} rocs_access_mode_e; /* Pointers to AMD SMI library functions (dynamically loaded) */ -static amdsmi_status_t (*amdsmi_init_p)(uint64_t); -static amdsmi_status_t (*amdsmi_shut_down_p)(void); -static amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -static amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, - uint32_t *); -static amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, - int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -static amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); -static amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); -static amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); -static amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); +amdsmi_status_t (*amdsmi_init_p)(uint64_t); +amdsmi_status_t (*amdsmi_shut_down_p)(void); +amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); +amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, + uint32_t *); +amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, + int64_t *); +amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); +amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); +amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); +amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); +amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); +amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); +amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); +amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); +amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); +amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); +amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); +amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); /* Additional read-only AMD SMI function pointers */ -static amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); -static amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); -static amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); -static amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); -static amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); -static amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); -static amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); -static amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); -static amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); -static amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); -static amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); -static amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); -static amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, - uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); -static amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); -static amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); +amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); +amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); +amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); +amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); +amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); +amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); +amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); +amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); +amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); +amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); +amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); +amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); +amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); +amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, + uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); +amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); +amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); // (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle,amdsmi_virtualization_mode_t *); -static amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); -static amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); -static amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); -static amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); -static amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); -static amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); -static amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); -static amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); -static amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); -static amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); -static amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); -static amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); -static amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); -static amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); -static amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); +amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); +amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); +amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); +amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); +amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); +amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); +amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); +amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); +amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); +amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); +amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); +amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); +amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); #ifndef AMDSMI_DISABLE_ESMI /* CPU function pointers */ -static amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); -static amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); -static amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); -static amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); -static amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -static amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, - uint64_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, - amdsmi_temp_range_refresh_rate_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); -static amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); +amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); +amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); +amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); +amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); +amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); +amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); +amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, + uint64_t *); +amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, + amdsmi_temp_range_refresh_rate_t *); +amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); +amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); #endif /* Global device list and count */ -static int32_t device_count = 0; -static amdsmi_processor_handle *device_handles = NULL; -static int32_t device_mask = 0; -static int32_t gpu_count = 0; -static int32_t cpu_count = 0; -static amdsmi_processor_handle **cpu_core_handles = NULL; -static uint32_t *cores_per_socket = NULL; +int32_t device_count = 0; +amdsmi_processor_handle *device_handles = NULL; +int32_t device_mask = 0; +int32_t gpu_count = 0; +int32_t cpu_count = 0; +amdsmi_processor_handle **cpu_core_handles = NULL; +uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; -static void *htable = NULL; +void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; /* forward declarations for internal helpers */ static int load_amdsmi_sym(void); @@ -130,54 +125,8 @@ static int init_device_table(void); static int shutdown_device_table(void); static int init_event_table(void); static int shutdown_event_table(void); -/* Event descriptor structure for native events */ -typedef struct native_event { - unsigned int id; - char *name; - char *descr; - int32_t device; /* device index or -1 if not applicable */ - uint64_t value; /* last read value or set value */ - uint32_t mode; /* access mode (read/write) */ - uint32_t variant; /* variant index (for metric type, etc.) */ - uint32_t subvariant; /* subvariant index (for sensor index or sub-type) */ - int (*open_func)(struct native_event *); /* optional open (reserve resources) */ - int (*close_func)(struct native_event *); /* optional close (release resources) */ - int (*start_func)(struct native_event *); /* optional start (begin counting) */ - int (*stop_func)(struct native_event *); /* optional stop (stop counting) */ - int (*access_func)(int mode, void *arg); /* read or write the event value */ -} native_event_t; -/* Table of all native events */ -typedef struct { - native_event_t *events; - int count; -} native_event_table_t; -static native_event_table_t ntv_table; -static native_event_table_t *ntv_table_p = NULL; -/* Locking device usage for contexts */ -static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { - int32_t mask_acq = 0; - for (int i = 0; i < num_events; ++i) { - int32_t dev_id = ntv_table_p->events[events_id[i]].device; - if (dev_id < 0) - continue; - mask_acq |= (1 << dev_id); - } - if (mask_acq & device_mask) { - return PAPI_ECNFLCT; // conflict: device already in use - } - device_mask |= mask_acq; - *bitmask = mask_acq; - return PAPI_OK; -} -static int release_devices(int32_t *bitmask) { - int32_t mask_rel = *bitmask; - if ((mask_rel & device_mask) != mask_rel) { - return PAPI_EMISC; - } - device_mask ^= mask_rel; - *bitmask = 0; - return PAPI_OK; -} +native_event_table_t ntv_table; +native_event_table_t *ntv_table_p = NULL; /* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). */ static int silence_stderr_begin(void) { @@ -198,71 +147,6 @@ static void silence_stderr_end(int saved_fd) { } } -/* Prototypes for event access (read/write) functions */ -static int access_amdsmi_temp_metric(int mode, void *arg); -static int access_amdsmi_fan_speed(int mode, void *arg); -static int access_amdsmi_fan_rpms(int mode, void *arg); -static int access_amdsmi_mem_total(int mode, void *arg); -static int access_amdsmi_mem_usage(int mode, void *arg); -static int access_amdsmi_power_cap(int mode, void *arg); -static int access_amdsmi_power_cap_range(int mode, void *arg); -static int access_amdsmi_power_average(int mode, void *arg); -static int access_amdsmi_pci_throughput(int mode, void *arg); -static int access_amdsmi_pci_replay_counter(int mode, void *arg); -static int access_amdsmi_clk_freq(int mode, void *arg); -static int access_amdsmi_gpu_metrics(int mode, void *arg); -static int access_amdsmi_gpu_info(int mode, void *arg); -static int access_amdsmi_gpu_activity(int mode, void *arg); -static int access_amdsmi_fan_speed_max(int mode, void *arg); -static int access_amdsmi_pci_bandwidth(int mode, void *arg); -static int access_amdsmi_energy_count(int mode, void *arg); -static int access_amdsmi_power_profile_status(int mode, void *arg); -static uint64_t _str_to_u64_hash(const char *s); -static int access_amdsmi_uuid_hash(int mode, void *arg); -static int access_amdsmi_gpu_string_hash(int mode, void *arg); -static int access_amdsmi_enumeration_info(int mode, void *arg); -static int access_amdsmi_asic_info(int mode, void *arg); -static int access_amdsmi_link_metrics(int mode, void *arg); -static int access_amdsmi_process_count(int mode, void *arg); -static int access_amdsmi_ecc_total(int mode, void *arg); -static int access_amdsmi_ecc_enabled_mask(int mode, void *arg); -static int access_amdsmi_compute_partition_hash(int mode, void *arg); -static int access_amdsmi_memory_partition_hash(int mode, void *arg); -static int access_amdsmi_accelerator_num_partitions(int mode, void *arg); -static int access_amdsmi_lib_version(int mode, void *arg); - -static int access_amdsmi_cache_size(int mode, void *arg); -static int access_amdsmi_overdrive_level(int mode, void *arg); -static int access_amdsmi_mem_overdrive_level(int mode, void *arg); -static int access_amdsmi_od_volt_regions_count(int mode, void *arg); -static int access_amdsmi_perf_level(int mode, void *arg); -static int access_amdsmi_pm_metrics_count(int mode, void *arg); -static int access_amdsmi_ras_ecc_schema(int mode, void *arg); -static int access_amdsmi_reg_count(int mode, void *arg); -static int access_amdsmi_voltage(int mode, void *arg); -static int access_amdsmi_vram_width(int mode, void *arg); -static int access_amdsmi_soc_pstate_id(int mode, void *arg); -static int access_amdsmi_xgmi_plpd_id(int mode, void *arg); - - -#ifndef AMDSMI_DISABLE_ESMI -static int access_amdsmi_cpu_socket_power(int mode, void *arg); -static int access_amdsmi_cpu_socket_energy(int mode, void *arg); -static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg); -static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg); -static int access_amdsmi_cpu_power_cap(int mode, void *arg); -static int access_amdsmi_cpu_core_energy(int mode, void *arg); -static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); -static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); -static int access_amdsmi_dimm_temp(int mode, void *arg); -static int access_amdsmi_dimm_power(int mode, void *arg); -static int access_amdsmi_dimm_range_refresh(int mode, void *arg); -static int access_amdsmi_threads_per_core(int mode, void *arg); -static int access_amdsmi_cpu_family(int mode, void *arg); -static int access_amdsmi_cpu_model(int mode, void *arg); -static int access_amdsmi_smu_fw_version(int mode, void *arg); -static int access_amdsmi_xgmi_bandwidth(int mode, void *arg); -#endif /* Simple open/close/start/stop functions (no special handling needed for most * events) */ static int open_simple(native_event_t *event) { @@ -599,132 +483,6 @@ int amds_err_get_last(const char **err_string) { if (err_string) *err_string = error_string; return PAPI_OK; -} -/* Event enumeration: iterate over native events */ -int amds_evt_enum(unsigned int *EventCode, int modifier) { - if (modifier == PAPI_ENUM_FIRST) { - if (ntv_table_p->count == 0) { - return PAPI_ENOEVNT; - } - *EventCode = 0; - return PAPI_OK; - } else if (modifier == PAPI_ENUM_EVENTS) { - if (*EventCode + 1 < (unsigned int)ntv_table_p->count) { - *EventCode = *EventCode + 1; - return PAPI_OK; - } else { - return PAPI_ENOEVNT; - } - } - return PAPI_EINVAL; -} -int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { - if (EventCode >= (unsigned int)ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(name, ntv_table_p->events[EventCode].name, len); - return PAPI_OK; -} -int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { - native_event_t *event = NULL; - int hret = htable_find(htable, name, (void **)&event); - if (hret != HTABLE_SUCCESS) { - return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; - } - *EventCode = event->id; - return PAPI_OK; -} -int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { - if (EventCode >= (unsigned int)ntv_table_p->count) { - return PAPI_EINVAL; - } - strncpy(descr, ntv_table_p->events[EventCode].descr, len); - return PAPI_OK; -} -/* Context management: open/close, start/stop, read/write, reset */ -struct amds_ctx { - int state; - unsigned int *events_id; - int num_events; - long long *counters; - int32_t device_mask; -}; -int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { - amds_ctx_t new_ctx = (amds_ctx_t)papi_calloc(1, sizeof(struct amds_ctx)); - if (new_ctx == NULL) { - return PAPI_ENOMEM; - } - new_ctx->events_id = event_ids; // Store pointer (original approach) - new_ctx->num_events = num_events; - new_ctx->counters = (long long *)papi_calloc(num_events, sizeof(long long)); - if (new_ctx->counters == NULL) { - papi_free(new_ctx); - return PAPI_ENOMEM; - } - // Acquire devices needed by these events to avoid conflicts - int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); - if (papi_errno != PAPI_OK) { - papi_free(new_ctx->counters); - papi_free(new_ctx); - return papi_errno; - } - *ctx = new_ctx; - return PAPI_OK; -} -int amds_ctx_close(amds_ctx_t ctx) { - if (!ctx) - return PAPI_OK; - // release device usage - release_devices(&ctx->device_mask); - papi_free(ctx->counters); - papi_free(ctx); - return PAPI_OK; -} -int amds_ctx_start(amds_ctx_t ctx) { - // No additional actions needed to start in this design (all reads are - // on-demand) - ctx->state |= AMDS_EVENTS_RUNNING; - return PAPI_OK; -} -int amds_ctx_stop(amds_ctx_t ctx) { - if (!(ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_OK; - } - ctx->state &= ~AMDS_EVENTS_RUNNING; - return PAPI_OK; -} -int amds_ctx_read(amds_ctx_t ctx, long long **counts) { - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - ctx->counters[i] = (long long)ntv_table_p->events[id].value; - } - *counts = ctx->counters; - return papi_errno; -} -int amds_ctx_write(amds_ctx_t ctx, long long *counts) { - int papi_errno = PAPI_OK; - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = counts[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - } - return papi_errno; -} -int amds_ctx_reset(amds_ctx_t ctx) { - for (int i = 0; i < ctx->num_events; ++i) { - unsigned int id = ctx->events_id[i]; - ntv_table_p->events[id].value = 0; - ctx->counters[i] = 0; - } - return PAPI_OK; } /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { @@ -3103,336 +2861,6 @@ static int init_event_table(void) { return PAPI_OK; } -/* -------- Helpers and new accessors (GPU read-only additions) -------- */ -static uint64_t _str_to_u64_hash(const char *s) { - /* djb2 64-bit */ - uint64_t hash = 5381; - if (!s) - return 0; - int c; - while ((c = *s++)) { - hash = ((hash << 5) + hash) + (uint8_t)c; - } - return hash; -} -static int access_amdsmi_lib_version(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_lib_version_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - amdsmi_version_t vinfo; - amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - switch (event->variant) { - case 0: - event->value = (int64_t)vinfo.major; - break; - case 1: - event->value = (int64_t)vinfo.minor; - break; - case 2: - event->value = (int64_t)vinfo.release; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_uuid_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_device_uuid_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - char buf[128] = {0}; - unsigned int len = sizeof(buf); - amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; -} -static int access_amdsmi_gpu_string_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - char buf[256] = {0}; - amdsmi_status_t st = AMDSMI_STATUS_NOT_SUPPORTED; - switch (event->variant) { - case 0: /* vendor name */ - if (!amdsmi_get_gpu_vendor_name_p) - return PAPI_ENOSUPP; - st = amdsmi_get_gpu_vendor_name_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 1: /* vram vendor */ - if (!amdsmi_get_gpu_vram_vendor_p) - return PAPI_ENOSUPP; - st = amdsmi_get_gpu_vram_vendor_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 2: /* subsystem name */ - if (!amdsmi_get_gpu_subsystem_name_p) - return PAPI_ENOSUPP; - st = amdsmi_get_gpu_subsystem_name_p(device_handles[event->device], buf, sizeof(buf)); - break; - case 3: /* driver name */ - case 4: /* driver date */ - if (!amdsmi_get_gpu_driver_info_p) - return PAPI_ENOSUPP; - { - amdsmi_driver_info_t dinfo; - st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); - if (st == AMDSMI_STATUS_SUCCESS) { - if (event->variant == 3) - strncpy(buf, dinfo.driver_name, sizeof(buf) - 1); - else - strncpy(buf, dinfo.driver_date, sizeof(buf) - 1); - } - } - break; - case 5: /* vbios version */ - case 6: /* vbios part number */ - case 7: /* vbios build date */ - if (!amdsmi_get_gpu_vbios_info_p) - return PAPI_ENOSUPP; - { - amdsmi_vbios_info_t vb; - st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); - if (st == AMDSMI_STATUS_SUCCESS) { - if (event->variant == 5) - strncpy(buf, vb.version, sizeof(buf) - 1); - else if (event->variant == 6) - strncpy(buf, vb.part_number, sizeof(buf) - 1); - else - strncpy(buf, vb.build_date, sizeof(buf) - 1); - } - } - break; - default: - return PAPI_ENOSUPP; - } - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; -} -static int access_amdsmi_enumeration_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_enumeration_info_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - amdsmi_enumeration_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - switch (event->variant) { - case 0: - event->value = (int64_t)info.drm_render; - break; - case 1: - event->value = (int64_t)info.drm_card; - break; - case 2: - event->value = (int64_t)info.hsa_id; - break; - case 3: - event->value = (int64_t)info.hip_id; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_asic_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_asic_info_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - amdsmi_asic_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - switch (event->variant) { - case 0: - event->value = (int64_t)info.vendor_id; - break; - case 1: - event->value = (int64_t)info.device_id; - break; - case 2: - event->value = (int64_t)info.subvendor_id; - break; - case 3: - event->value = (int64_t)0 /* not provided in amdsmi_asic_info_t */; - break; - case 4: - event->value = (int64_t)info.rev_id; - break; - case 5: - event->value = (int64_t)info.num_of_compute_units; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_link_metrics(int mode, void *arg) { - if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - - amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); - if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - - uint64_t acc = 0; - uint32_t n = lm.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - - for (uint32_t i = 0; i < n; ++i) { - if (event->subvariant != 0 && lm.links[i].link_type != (uint32_t)event->subvariant) continue; - switch (event->variant) { - case 0: acc += lm.links[i].read; break; /* KB */ - case 1: acc += lm.links[i].write; break; /* KB */ - case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ - case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ - default: return PAPI_ENOSUPP; - } - } - - if (acc > (uint64_t)INT64_MAX) acc = (uint64_t)INT64_MAX; /* defensive */ - event->value = (int64_t)acc; - return PAPI_OK; -} - -static int access_amdsmi_process_count(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_process_list_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - uint32_t cap = 32; - int tries = 0; - amdsmi_proc_info_t *list = NULL; - amdsmi_status_t st; - while (tries++ < 4) { - list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); - if (!list) - return PAPI_ENOMEM; - uint32_t maxp = cap; - st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); - if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { - papi_free(list); - cap *= 2; - continue; - } - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(list); - return PAPI_EMISC; - } - event->value = (int64_t)maxp; - papi_free(list); - return PAPI_OK; - } - return PAPI_EMISC; -} -static int access_amdsmi_ecc_total(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_total_ecc_count_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - - amdsmi_error_count_t ec; - memset(&ec, 0, sizeof(ec)); // <-- important - amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - - uint64_t v = (event->variant == 0) ? ec.correctable_count - : (event->variant == 1) ? ec.uncorrectable_count - : ec.deferred_count; // some ASICs may not set this - if ((int64_t)v < 0) - return PAPI_ENOSUPP; // defensive: treat bogus as unsupported - event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; - return PAPI_OK; -} - -static int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ecc_enabled_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - uint64_t mask = 0; - amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)mask; - return PAPI_OK; -} -static int access_amdsmi_compute_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_compute_partition_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; -} -static int access_amdsmi_memory_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_memory_partition_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); - return PAPI_OK; -} -static int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_accelerator_partition_profile_p) - return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) - return PAPI_EMISC; - amdsmi_accelerator_partition_profile_t prof; - uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - event->value = (int64_t)prof.num_partitions; - return PAPI_OK; -} static int shutdown_event_table(void) { // Remove all events from hash table and free their names/descr for (int i = 0; i < ntv_table.count; ++i) { @@ -3471,902 +2899,3 @@ static int shutdown_device_table(void) { cpu_count = 0; return PAPI_OK; } -/* Access function implementations (read/write operations for each event) */ -static int access_amdsmi_temp_metric(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; /* ensure device handle is valid */ - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], (amdsmi_temperature_type_t)event->subvariant, - (amdsmi_temperature_metric_t)event->variant, (int64_t *)&event->value); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); -} -static int access_amdsmi_fan_rpms(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t speed = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = speed; - return PAPI_OK; -} -static int access_amdsmi_fan_speed(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; // writing fan speed not supported - } - int64_t val = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], event->subvariant, &val); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = val; - return PAPI_OK; -} -static int access_amdsmi_mem_total(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)data; - return PAPI_OK; -} -static int access_amdsmi_mem_usage(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - uint64_t data = 0; - amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)data; - return PAPI_OK; -} -static int access_amdsmi_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode == PAPI_MODE_READ) { - // Read current power cap - amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)info.power_cap; - return PAPI_OK; - } else if (mode == PAPI_MODE_WRITE) { - // Set new power cap (value expected in microWatts if API uses uW) - uint64_t new_cap = (uint64_t)event->value; - amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); - } - return PAPI_ENOSUPP; -} -static int access_amdsmi_power_cap_range(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - amdsmi_power_cap_info_t info; - amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 1) { - event->value = (int64_t)info.min_power_cap; - } else if (event->variant == 2) { - event->value = (int64_t)info.max_power_cap; - } else { - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_power_average(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - amdsmi_power_info_t power; - amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)power.average_socket_power; - return PAPI_OK; -} -static int access_amdsmi_pci_throughput(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - uint64_t sent = 0, received = 0, max_pkt = 0; - amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: - event->value = (int64_t)sent; - break; - case 1: - event->value = (int64_t)received; - break; - case 2: - event->value = (int64_t)max_pkt; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_pci_replay_counter(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - uint64_t counter = 0; - amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)counter; - return PAPI_OK; -} -static int access_amdsmi_clk_freq(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - amdsmi_frequencies_t freq_info; - amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific - // index - if (event->subvariant == 0) { - event->value = freq_info.num_supported; - } else if (event->subvariant == 1) { - if (freq_info.num_supported > 0) { - event->value = freq_info.frequency[0]; // assume first is current - } else { - event->value = 0; - } - } else { - int idx = event->subvariant - 2; - if (idx >= 0 && idx < (int)freq_info.num_supported) { - event->value = freq_info.frequency[idx]; - } else { - return PAPI_EMISC; - } - } - return PAPI_OK; -} -static int access_amdsmi_gpu_metrics(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - amdsmi_gpu_metrics_t metrics; - amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Parsing of metrics is not fully implemented; just return OK. - // (In a full implementation, event->variant or subvariant would select a - // specific field of 'metrics'.) - return PAPI_OK; -} -static int access_amdsmi_gpu_info(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_status_t status; - switch (event->variant) { - case 0: { - uint16_t id = 0; - status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = id; - } - break; - } - case 1: { - uint16_t rev = 0; - status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = rev; - } - break; - } - case 2: { - uint16_t subid = 0; - status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = subid; - } - break; - } - case 3: { - uint64_t bdfid = 0; - status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = (int64_t)bdfid; - } - break; - } - /*case 4: { - amdsmi_virtualization_mode_t mode_val; - status = - amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], - &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { event->value = mode_val; - } - break; - }*/ - case 5: { - int32_t numa_node = -1; - status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); - if (status == AMDSMI_STATUS_SUCCESS) { - event->value = numa_node; - } - break; - } - default: - return PAPI_EMISC; - } - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); -} -static int access_amdsmi_gpu_activity(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_engine_usage_t usage; - amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: - event->value = usage.gfx_activity; - break; - case 1: - event->value = usage.umc_activity; - break; - case 2: - event->value = usage.mm_activity; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_fan_speed_max(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int64_t max_speed = 0; - amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = max_speed; - return PAPI_OK; -} -static int access_amdsmi_pci_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_pcie_bandwidth_t bw; - amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - uint32_t cur_index = bw.transfer_rate.current; - if (cur_index >= bw.transfer_rate.num_supported) { - return PAPI_EMISC; - } - switch (event->variant) { - case 0: - event->value = bw.transfer_rate.num_supported; - break; - case 1: - event->value = (int64_t)bw.transfer_rate.frequency[cur_index]; - break; - case 2: - event->value = bw.lanes[cur_index]; - break; - default: - return PAPI_EMISC; - } - return PAPI_OK; -} -static int access_amdsmi_energy_count(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - float resolution = 0.0; - uint64_t timestamp = 0; - amdsmi_status_t status = amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - // Convert energy count to microJoules - event->value = (int64_t)(energy * resolution); - return PAPI_OK; -} -static int access_amdsmi_power_profile_status(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_power_profile_status_t status_info; - amdsmi_status_t status = amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = status_info.num_profiles; - } else if (event->variant == 1) { - event->value = (int64_t)status_info.current; - } else { - return PAPI_EMISC; - } - return PAPI_OK; -} -#ifndef AMDSMI_DISABLE_ESMI -/* The functions below implement CPU metrics access */ -static int access_amdsmi_cpu_socket_power(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t power = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)power; - return PAPI_OK; -} -static int access_amdsmi_cpu_socket_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)energy; - return PAPI_OK; -} -static int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t freq = 0; - char *src = NULL; - amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (src) - free(src); - event->value = freq; - return PAPI_OK; -} -static int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint16_t fmax = 0, fmin = 0; - amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = fmin; - } else { - event->value = fmax; - } - return PAPI_OK; -} -static int access_amdsmi_cpu_power_cap(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t cap_value = 0; - amdsmi_status_t status; - if (event->variant == 0) { - status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); - } else { - status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); - } - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)cap_value; - return PAPI_OK; -} -static int access_amdsmi_cpu_core_energy(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint64_t energy = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)energy; - return PAPI_OK; -} -static int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t freq = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = freq; - return PAPI_OK; -} -static int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - int s_index = event->device - gpu_count; - if (s_index < 0 || s_index >= cpu_count) { - return PAPI_EMISC; - } - uint32_t boost = 0; - amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = boost; - return PAPI_OK; -} -static int access_amdsmi_dimm_temp(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_thermal_t dimm_temp; - amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_temp); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = (int64_t)dimm_temp.temp; - return PAPI_OK; -} -static int access_amdsmi_dimm_power(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_dimm_power_t dimm_pow; - amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_pow); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - event->value = dimm_pow.power; - return PAPI_OK; -} -static int access_amdsmi_dimm_range_refresh(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_temp_range_refresh_rate_t rate; - amdsmi_status_t status = - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t)event->subvariant, &rate); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = rate.range; - } else { - event->value = rate.ref_rate; - } - return PAPI_OK; -} -static int access_amdsmi_threads_per_core(int mode, void *arg) { - (void)arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t threads = 0; - amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *)arg)->value = threads; - return PAPI_OK; -} -static int access_amdsmi_cpu_family(int mode, void *arg) { - (void)arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t family = 0; - amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *)arg)->value = family; - return PAPI_OK; -} -static int access_amdsmi_cpu_model(int mode, void *arg) { - (void)arg; - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - uint32_t model = 0; - amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - ((native_event_t *)arg)->value = model; - return PAPI_OK; -} -static int access_amdsmi_smu_fw_version(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_smu_fw_version_t fw; - amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - int encoded = ((int)fw.major << 16) | ((int)fw.minor << 8) | fw.debug; - event->value = encoded; - return PAPI_OK; -} -static int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_processor_handle src = device_handles[event->device]; - amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; - uint64_t min_bw = 0, max_bw = 0; - amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = (int64_t)min_bw; - } else { - event->value = (int64_t)max_bw; - } - return PAPI_OK; -} -#endif - -static int access_amdsmi_cache_size(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - if (!amdsmi_get_gpu_cache_info_p) return PAPI_ENOSUPP; - - amdsmi_gpu_cache_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_cache_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - - /* subvariant = cache index chosen during registration */ - if (event->subvariant >= info.num_cache_types) return PAPI_EMISC; - - /* cache_size is KB per header; expose bytes to stay consistent with other sizes */ - uint64_t size_kb = info.cache[event->subvariant].cache_size; - event->value = (uint64_t)size_kb * 1024ULL; - return PAPI_OK; -} - -static int access_amdsmi_overdrive_level(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_overdrive_level_p) return PAPI_ENOSUPP; - - uint32_t od = 0; - amdsmi_status_t st = amdsmi_get_gpu_overdrive_level_p(device_handles[event->device], &od); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)od; - return PAPI_OK; -} - -static int access_amdsmi_mem_overdrive_level(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_mem_overdrive_level_p) return PAPI_ENOSUPP; - - uint32_t od = 0; - amdsmi_status_t st = amdsmi_get_gpu_mem_overdrive_level_p(device_handles[event->device], &od); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)od; - return PAPI_OK; -} - -static int access_amdsmi_od_volt_regions_count(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; - - /* Probe to get count; API requires a buffer, so do a two-call pattern */ - uint32_t num = 0; - amdsmi_freq_volt_region_t *buf = NULL; - - /* First call: ask for 0 (expect MORE_DATA/INSUFFICIENT_SIZE with num set) */ - amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); - if (st == AMDSMI_STATUS_INSUFFICIENT_SIZE || st == AMDSMI_STATUS_NO_DATA) { - if (num == 0) return PAPI_EMISC; - buf = (amdsmi_freq_volt_region_t *)papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); - if (!buf) return PAPI_ENOMEM; - st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); - } - if (st != AMDSMI_STATUS_SUCCESS) { - if (buf) papi_free(buf); - return PAPI_EMISC; - } - event->value = (uint64_t)num; - if (buf) papi_free(buf); - return PAPI_OK; -} - -static int access_amdsmi_perf_level(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_perf_level_p) return PAPI_ENOSUPP; - - amdsmi_dev_perf_level_t perf = AMDSMI_DEV_PERF_LEVEL_UNKNOWN; - amdsmi_status_t st = amdsmi_get_gpu_perf_level_p(device_handles[event->device], &perf); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)perf; - return PAPI_OK; -} - -static int access_amdsmi_pm_metrics_count(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; - - amdsmi_name_value_t *metrics = NULL; - uint32_t count = 0; - amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); - if (metrics) papi_free(metrics); /* library allocates */ - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)count; - return PAPI_OK; -} - -static int access_amdsmi_ras_ecc_schema(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; - - amdsmi_ras_feature_t ras = {0}; - amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)ras.ecc_correction_schema_flag; - return PAPI_OK; -} - -static int access_amdsmi_reg_count(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; - - amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; /* set at registration */ - amdsmi_name_value_t *regs = NULL; - uint32_t num = 0; - amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); - if (regs) papi_free(regs); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)num; - return PAPI_OK; -} - -static int access_amdsmi_voltage(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_volt_metric_p) return PAPI_ENOSUPP; - - amdsmi_voltage_type_t sensor = (amdsmi_voltage_type_t)event->subvariant; /* set at registration */ - amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t)event->variant; /* e.g., AMDSMI_VOLT_CURRENT */ - int64_t mv = 0; - amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[event->device], sensor, metric, &mv); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)mv; /* API reports mV */ - return PAPI_OK; -} - -static int access_amdsmi_vram_width(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; - - amdsmi_vram_info_t info; - amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)info.vram_bit_width; - return PAPI_OK; -} - -static int access_amdsmi_soc_pstate_id(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; - - amdsmi_dpm_policy_t pol = {0}; - amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)pol.current; - return PAPI_OK; -} - -static int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; - - amdsmi_dpm_policy_t pol = {0}; - amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (uint64_t)pol.current; - return PAPI_OK; -} \ No newline at end of file diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c new file mode 100644 index 000000000..592fd52be --- /dev/null +++ b/src/components/amd_smi/amds_accessors.c @@ -0,0 +1,1235 @@ +#include "amds_priv.h" +#include "papi.h" +#include "papi_memory.h" +#include +#include +#include +/* -------- Helpers and new accessors (GPU read-only additions) -------- */ +static uint64_t _str_to_u64_hash(const char *s) { + /* djb2 64-bit */ + uint64_t hash = 5381; + if (!s) + return 0; + int c; + while ((c = *s++)) { + hash = ((hash << 5) + hash) + (uint8_t)c; + } + return hash; +} +int access_amdsmi_lib_version(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_lib_version_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + amdsmi_version_t vinfo; + amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)vinfo.major; + break; + case 1: + event->value = (int64_t)vinfo.minor; + break; + case 2: + event->value = (int64_t)vinfo.release; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_uuid_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_device_uuid_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + unsigned int len = sizeof(buf); + amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +int access_amdsmi_gpu_string_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[256] = {0}; + amdsmi_status_t st = AMDSMI_STATUS_NOT_SUPPORTED; + switch (event->variant) { + case 0: /* vendor name */ + if (!amdsmi_get_gpu_vendor_name_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vendor_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 1: /* vram vendor */ + if (!amdsmi_get_gpu_vram_vendor_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_vram_vendor_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 2: /* subsystem name */ + if (!amdsmi_get_gpu_subsystem_name_p) + return PAPI_ENOSUPP; + st = amdsmi_get_gpu_subsystem_name_p(device_handles[event->device], buf, sizeof(buf)); + break; + case 3: /* driver name */ + case 4: /* driver date */ + if (!amdsmi_get_gpu_driver_info_p) + return PAPI_ENOSUPP; + { + amdsmi_driver_info_t dinfo; + st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 3) + strncpy(buf, dinfo.driver_name, sizeof(buf) - 1); + else + strncpy(buf, dinfo.driver_date, sizeof(buf) - 1); + } + } + break; + case 5: /* vbios version */ + case 6: /* vbios part number */ + case 7: /* vbios build date */ + if (!amdsmi_get_gpu_vbios_info_p) + return PAPI_ENOSUPP; + { + amdsmi_vbios_info_t vb; + st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); + if (st == AMDSMI_STATUS_SUCCESS) { + if (event->variant == 5) + strncpy(buf, vb.version, sizeof(buf) - 1); + else if (event->variant == 6) + strncpy(buf, vb.part_number, sizeof(buf) - 1); + else + strncpy(buf, vb.build_date, sizeof(buf) - 1); + } + } + break; + default: + return PAPI_ENOSUPP; + } + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +int access_amdsmi_enumeration_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_enumeration_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_enumeration_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.drm_render; + break; + case 1: + event->value = (int64_t)info.drm_card; + break; + case 2: + event->value = (int64_t)info.hsa_id; + break; + case 3: + event->value = (int64_t)info.hip_id; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_asic_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_asic_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_asic_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.vendor_id; + break; + case 1: + event->value = (int64_t)info.device_id; + break; + case 2: + event->value = (int64_t)info.subvendor_id; + break; + case 3: + event->value = (int64_t)0 /* not provided in amdsmi_asic_info_t */; + break; + case 4: + event->value = (int64_t)info.rev_id; + break; + case 5: + event->value = (int64_t)info.num_of_compute_units; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_link_metrics(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + + amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); + if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + uint64_t acc = 0; + uint32_t n = lm.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + + for (uint32_t i = 0; i < n; ++i) { + if (event->subvariant != 0 && lm.links[i].link_type != (uint32_t)event->subvariant) continue; + switch (event->variant) { + case 0: acc += lm.links[i].read; break; /* KB */ + case 1: acc += lm.links[i].write; break; /* KB */ + case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ + case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ + default: return PAPI_ENOSUPP; + } + } + + if (acc > (uint64_t)INT64_MAX) acc = (uint64_t)INT64_MAX; /* defensive */ + event->value = (int64_t)acc; + return PAPI_OK; +} + +int access_amdsmi_process_count(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_process_list_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + uint32_t cap = 32; + int tries = 0; + amdsmi_proc_info_t *list = NULL; + amdsmi_status_t st; + while (tries++ < 4) { + list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); + if (!list) + return PAPI_ENOMEM; + uint32_t maxp = cap; + st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); + if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { + papi_free(list); + cap *= 2; + continue; + } + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(list); + return PAPI_EMISC; + } + event->value = (int64_t)maxp; + papi_free(list); + return PAPI_OK; + } + return PAPI_EMISC; +} +int access_amdsmi_ecc_total(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_total_ecc_count_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_error_count_t ec; + memset(&ec, 0, sizeof(ec)); // <-- important + amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint64_t v = (event->variant == 0) ? ec.correctable_count + : (event->variant == 1) ? ec.uncorrectable_count + : ec.deferred_count; // some ASICs may not set this + if ((int64_t)v < 0) + return PAPI_ENOSUPP; // defensive: treat bogus as unsupported + event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; + return PAPI_OK; +} + +int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ecc_enabled_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + uint64_t mask = 0; + amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)mask; + return PAPI_OK; +} +int access_amdsmi_compute_partition_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_compute_partition_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +int access_amdsmi_memory_partition_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_memory_partition_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + char buf[128] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(buf); + return PAPI_OK; +} +int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_accelerator_partition_profile_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)prof.num_partitions; + return PAPI_OK; +} +/* Access function implementations (read/write operations for each event) */ +int access_amdsmi_temp_metric(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; /* ensure device handle is valid */ + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], (amdsmi_temperature_type_t)event->subvariant, + (amdsmi_temperature_metric_t)event->variant, (int64_t *)&event->value); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); +} +int access_amdsmi_fan_rpms(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_rpms_p(device_handles[event->device], event->subvariant, &speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = speed; + return PAPI_OK; +} +int access_amdsmi_fan_speed(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; // writing fan speed not supported + } + int64_t val = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_p(device_handles[event->device], event->subvariant, &val); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = val; + return PAPI_OK; +} +int access_amdsmi_mem_total(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_total_memory_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)data; + return PAPI_OK; +} +int access_amdsmi_mem_usage(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t data = 0; + amdsmi_status_t status = amdsmi_get_memory_usage_p(device_handles[event->device], (amdsmi_memory_type_t)event->variant, &data); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)data; + return PAPI_OK; +} +int access_amdsmi_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode == PAPI_MODE_READ) { + // Read current power cap + amdsmi_power_cap_info_t info; + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)info.power_cap; + return PAPI_OK; + } else if (mode == PAPI_MODE_WRITE) { + // Set new power cap (value expected in microWatts if API uses uW) + uint64_t new_cap = (uint64_t)event->value; + amdsmi_status_t status = amdsmi_set_power_cap_p(device_handles[event->device], 0, new_cap); + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + } + return PAPI_ENOSUPP; +} +int access_amdsmi_power_cap_range(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_power_cap_info_t info; + amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 1) { + event->value = (int64_t)info.min_power_cap; + } else if (event->variant == 2) { + event->value = (int64_t)info.max_power_cap; + } else { + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_power_average(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_power_info_t power; + amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)power.average_socket_power; + return PAPI_OK; +} +int access_amdsmi_pci_throughput(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t sent = 0, received = 0, max_pkt = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_throughput_p(device_handles[event->device], &sent, &received, &max_pkt); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = (int64_t)sent; + break; + case 1: + event->value = (int64_t)received; + break; + case 2: + event->value = (int64_t)max_pkt; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_pci_replay_counter(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint64_t counter = 0; + amdsmi_status_t status = amdsmi_get_gpu_pci_replay_counter_p(device_handles[event->device], &counter); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)counter; + return PAPI_OK; +} +int access_amdsmi_clk_freq(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_frequencies_t freq_info; + amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific + // index + if (event->subvariant == 0) { + event->value = freq_info.num_supported; + } else if (event->subvariant == 1) { + if (freq_info.num_supported > 0) { + event->value = freq_info.frequency[0]; // assume first is current + } else { + event->value = 0; + } + } else { + int idx = event->subvariant - 2; + if (idx >= 0 && idx < (int)freq_info.num_supported) { + event->value = freq_info.frequency[idx]; + } else { + return PAPI_EMISC; + } + } + return PAPI_OK; +} +int access_amdsmi_gpu_metrics(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_gpu_metrics_t metrics; + amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Parsing of metrics is not fully implemented; just return OK. + // (In a full implementation, event->variant or subvariant would select a + // specific field of 'metrics'.) + return PAPI_OK; +} +int access_amdsmi_gpu_info(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_status_t status; + switch (event->variant) { + case 0: { + uint16_t id = 0; + status = amdsmi_get_gpu_id_p(device_handles[event->device], &id); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = id; + } + break; + } + case 1: { + uint16_t rev = 0; + status = amdsmi_get_gpu_revision_p(device_handles[event->device], &rev); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = rev; + } + break; + } + case 2: { + uint16_t subid = 0; + status = amdsmi_get_gpu_subsystem_id_p(device_handles[event->device], &subid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = subid; + } + break; + } + case 3: { + uint64_t bdfid = 0; + status = amdsmi_get_gpu_bdf_id_p(device_handles[event->device], &bdfid); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = (int64_t)bdfid; + } + break; + } + /*case 4: { + amdsmi_virtualization_mode_t mode_val; + status = + amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], + &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { event->value = mode_val; + } + break; + }*/ + case 5: { + int32_t numa_node = -1; + status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = numa_node; + } + break; + } + default: + return PAPI_EMISC; + } + return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); +} +int access_amdsmi_gpu_activity(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_engine_usage_t usage; + amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = usage.gfx_activity; + break; + case 1: + event->value = usage.umc_activity; + break; + case 2: + event->value = usage.mm_activity; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_fan_speed_max(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int64_t max_speed = 0; + amdsmi_status_t status = amdsmi_get_gpu_fan_speed_max_p(device_handles[event->device], event->subvariant, &max_speed); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = max_speed; + return PAPI_OK; +} +int access_amdsmi_pci_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_pcie_bandwidth_t bw; + amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + uint32_t cur_index = bw.transfer_rate.current; + if (cur_index >= bw.transfer_rate.num_supported) { + return PAPI_EMISC; + } + switch (event->variant) { + case 0: + event->value = bw.transfer_rate.num_supported; + break; + case 1: + event->value = (int64_t)bw.transfer_rate.frequency[cur_index]; + break; + case 2: + event->value = bw.lanes[cur_index]; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_energy_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + float resolution = 0.0; + uint64_t timestamp = 0; + amdsmi_status_t status = amdsmi_get_energy_count_p(device_handles[event->device], &energy, &resolution, ×tamp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + // Convert energy count to microJoules + event->value = (int64_t)(energy * resolution); + return PAPI_OK; +} +int access_amdsmi_power_profile_status(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_power_profile_status_t status_info; + amdsmi_status_t status = amdsmi_get_gpu_power_profile_presets_p(device_handles[event->device], 0, &status_info); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = status_info.num_profiles; + } else if (event->variant == 1) { + event->value = (int64_t)status_info.current; + } else { + return PAPI_EMISC; + } + return PAPI_OK; +} +#ifndef AMDSMI_DISABLE_ESMI +/* The functions below implement CPU metrics access */ +int access_amdsmi_cpu_socket_power(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t power = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_power_p(device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)power; + return PAPI_OK; +} +int access_amdsmi_cpu_socket_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_energy_p(device_handles[event->device], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)energy; + return PAPI_OK; +} +int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t freq = 0; + char *src = NULL; + amdsmi_status_t status = amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[event->device], &freq, &src); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (src) + free(src); + event->value = freq; + return PAPI_OK; +} +int access_amdsmi_cpu_socket_freq_range(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint16_t fmax = 0, fmin = 0; + amdsmi_status_t status = amdsmi_get_cpu_socket_freq_range_p(device_handles[event->device], &fmax, &fmin); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = fmin; + } else { + event->value = fmax; + } + return PAPI_OK; +} +int access_amdsmi_cpu_power_cap(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t cap_value = 0; + amdsmi_status_t status; + if (event->variant == 0) { + status = amdsmi_get_cpu_socket_power_cap_p(device_handles[event->device], &cap_value); + } else { + status = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[event->device], &cap_value); + } + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)cap_value; + return PAPI_OK; +} +int access_amdsmi_cpu_core_energy(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint64_t energy = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_energy_p(cpu_core_handles[s_index][event->subvariant], &energy); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)energy; + return PAPI_OK; +} +int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t freq = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s_index][event->subvariant], &freq); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = freq; + return PAPI_OK; +} +int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + int s_index = event->device - gpu_count; + if (s_index < 0 || s_index >= cpu_count) { + return PAPI_EMISC; + } + uint32_t boost = 0; + amdsmi_status_t status = amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s_index][event->subvariant], &boost); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = boost; + return PAPI_OK; +} +int access_amdsmi_dimm_temp(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_thermal_t dimm_temp; + amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_temp); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = (int64_t)dimm_temp.temp; + return PAPI_OK; +} +int access_amdsmi_dimm_power(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_dimm_power_t dimm_pow; + amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_pow); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + event->value = dimm_pow.power; + return PAPI_OK; +} +int access_amdsmi_dimm_range_refresh(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_temp_range_refresh_rate_t rate; + amdsmi_status_t status = + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t)event->subvariant, &rate); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = rate.range; + } else { + event->value = rate.ref_rate; + } + return PAPI_OK; +} +int access_amdsmi_threads_per_core(int mode, void *arg) { + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t threads = 0; + amdsmi_status_t status = amdsmi_get_threads_per_core_p(&threads); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = threads; + return PAPI_OK; +} +int access_amdsmi_cpu_family(int mode, void *arg) { + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t family = 0; + amdsmi_status_t status = amdsmi_get_cpu_family_p(&family); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = family; + return PAPI_OK; +} +int access_amdsmi_cpu_model(int mode, void *arg) { + (void)arg; + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + uint32_t model = 0; + amdsmi_status_t status = amdsmi_get_cpu_model_p(&model); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + ((native_event_t *)arg)->value = model; + return PAPI_OK; +} +int access_amdsmi_smu_fw_version(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_smu_fw_version_t fw; + amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + int encoded = ((int)fw.major << 16) | ((int)fw.minor << 8) | fw.debug; + event->value = encoded; + return PAPI_OK; +} +int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + amdsmi_processor_handle src = device_handles[event->device]; + amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; + uint64_t min_bw = 0, max_bw = 0; + amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); + if (status != AMDSMI_STATUS_SUCCESS) { + return PAPI_EMISC; + } + if (event->variant == 0) { + event->value = (int64_t)min_bw; + } else { + event->value = (int64_t)max_bw; + } + return PAPI_OK; +} +#endif + +int access_amdsmi_cache_size(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) { + return PAPI_ENOSUPP; + } + if (!amdsmi_get_gpu_cache_info_p) return PAPI_ENOSUPP; + + amdsmi_gpu_cache_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_cache_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + /* subvariant = cache index chosen during registration */ + if (event->subvariant >= info.num_cache_types) return PAPI_EMISC; + + /* cache_size is KB per header; expose bytes to stay consistent with other sizes */ + uint64_t size_kb = info.cache[event->subvariant].cache_size; + event->value = (uint64_t)size_kb * 1024ULL; + return PAPI_OK; +} + +int access_amdsmi_overdrive_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_overdrive_level_p) return PAPI_ENOSUPP; + + uint32_t od = 0; + amdsmi_status_t st = amdsmi_get_gpu_overdrive_level_p(device_handles[event->device], &od); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)od; + return PAPI_OK; +} + +int access_amdsmi_mem_overdrive_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_mem_overdrive_level_p) return PAPI_ENOSUPP; + + uint32_t od = 0; + amdsmi_status_t st = amdsmi_get_gpu_mem_overdrive_level_p(device_handles[event->device], &od); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)od; + return PAPI_OK; +} + +int access_amdsmi_od_volt_regions_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; + + /* Probe to get count; API requires a buffer, so do a two-call pattern */ + uint32_t num = 0; + amdsmi_freq_volt_region_t *buf = NULL; + + /* First call: ask for 0 (expect MORE_DATA/INSUFFICIENT_SIZE with num set) */ + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); + if (st == AMDSMI_STATUS_INSUFFICIENT_SIZE || st == AMDSMI_STATUS_NO_DATA) { + if (num == 0) return PAPI_EMISC; + buf = (amdsmi_freq_volt_region_t *)papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); + if (!buf) return PAPI_ENOMEM; + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); + } + if (st != AMDSMI_STATUS_SUCCESS) { + if (buf) papi_free(buf); + return PAPI_EMISC; + } + event->value = (uint64_t)num; + if (buf) papi_free(buf); + return PAPI_OK; +} + +int access_amdsmi_perf_level(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_perf_level_p) return PAPI_ENOSUPP; + + amdsmi_dev_perf_level_t perf = AMDSMI_DEV_PERF_LEVEL_UNKNOWN; + amdsmi_status_t st = amdsmi_get_gpu_perf_level_p(device_handles[event->device], &perf); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)perf; + return PAPI_OK; +} + +int access_amdsmi_pm_metrics_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; + + amdsmi_name_value_t *metrics = NULL; + uint32_t count = 0; + amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); + if (metrics) papi_free(metrics); /* library allocates */ + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)count; + return PAPI_OK; +} + +int access_amdsmi_ras_ecc_schema(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; + + amdsmi_ras_feature_t ras = {0}; + amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)ras.ecc_correction_schema_flag; + return PAPI_OK; +} + +int access_amdsmi_reg_count(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; + + amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; /* set at registration */ + amdsmi_name_value_t *regs = NULL; + uint32_t num = 0; + amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); + if (regs) papi_free(regs); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)num; + return PAPI_OK; +} + +int access_amdsmi_voltage(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_volt_metric_p) return PAPI_ENOSUPP; + + amdsmi_voltage_type_t sensor = (amdsmi_voltage_type_t)event->subvariant; /* set at registration */ + amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t)event->variant; /* e.g., AMDSMI_VOLT_CURRENT */ + int64_t mv = 0; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[event->device], sensor, metric, &mv); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)mv; /* API reports mV */ + return PAPI_OK; +} + +int access_amdsmi_vram_width(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)info.vram_bit_width; + return PAPI_OK; +} + +int access_amdsmi_soc_pstate_id(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.current; + return PAPI_OK; +} + +int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.current; + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c new file mode 100644 index 000000000..91b0d33fb --- /dev/null +++ b/src/components/amd_smi/amds_ctx.c @@ -0,0 +1,114 @@ +#include "amds.h" +#include "amds_priv.h" +#include "papi.h" +#include "papi_memory.h" +static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { + int32_t mask_acq = 0; + for (int i = 0; i < num_events; ++i) { + int32_t dev_id = ntv_table_p->events[events_id[i]].device; + if (dev_id < 0) + continue; + mask_acq |= (1 << dev_id); + } + if (mask_acq & device_mask) { + return PAPI_ECNFLCT; // conflict: device already in use + } + device_mask |= mask_acq; + *bitmask = mask_acq; + return PAPI_OK; +} +static int release_devices(int32_t *bitmask) { + int32_t mask_rel = *bitmask; + if ((mask_rel & device_mask) != mask_rel) { + return PAPI_EMISC; + } + device_mask ^= mask_rel; + *bitmask = 0; + return PAPI_OK; +} + +/* Context management: open/close, start/stop, read/write, reset */ +struct amds_ctx { + int state; + unsigned int *events_id; + int num_events; + long long *counters; + int32_t device_mask; +}; +int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { + amds_ctx_t new_ctx = (amds_ctx_t)papi_calloc(1, sizeof(struct amds_ctx)); + if (new_ctx == NULL) { + return PAPI_ENOMEM; + } + new_ctx->events_id = event_ids; // Store pointer (original approach) + new_ctx->num_events = num_events; + new_ctx->counters = (long long *)papi_calloc(num_events, sizeof(long long)); + if (new_ctx->counters == NULL) { + papi_free(new_ctx); + return PAPI_ENOMEM; + } + // Acquire devices needed by these events to avoid conflicts + int papi_errno = acquire_devices(event_ids, num_events, &new_ctx->device_mask); + if (papi_errno != PAPI_OK) { + papi_free(new_ctx->counters); + papi_free(new_ctx); + return papi_errno; + } + *ctx = new_ctx; + return PAPI_OK; +} +int amds_ctx_close(amds_ctx_t ctx) { + if (!ctx) + return PAPI_OK; + // release device usage + release_devices(&ctx->device_mask); + papi_free(ctx->counters); + papi_free(ctx); + return PAPI_OK; +} +int amds_ctx_start(amds_ctx_t ctx) { + // No additional actions needed to start in this design (all reads are + // on-demand) + ctx->state |= AMDS_EVENTS_RUNNING; + return PAPI_OK; +} +int amds_ctx_stop(amds_ctx_t ctx) { + if (!(ctx->state & AMDS_EVENTS_RUNNING)) { + return PAPI_OK; + } + ctx->state &= ~AMDS_EVENTS_RUNNING; + return PAPI_OK; +} +int amds_ctx_read(amds_ctx_t ctx, long long **counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + ctx->counters[i] = (long long)ntv_table_p->events[id].value; + } + *counts = ctx->counters; + return papi_errno; +} +int amds_ctx_write(amds_ctx_t ctx, long long *counts) { + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = counts[i]; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_WRITE, &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + } + return papi_errno; +} +int amds_ctx_reset(amds_ctx_t ctx) { + for (int i = 0; i < ctx->num_events; ++i) { + unsigned int id = ctx->events_id[i]; + ntv_table_p->events[id].value = 0; + ctx->counters[i] = 0; + } + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_evtapi.c b/src/components/amd_smi/amds_evtapi.c new file mode 100644 index 000000000..d462bed92 --- /dev/null +++ b/src/components/amd_smi/amds_evtapi.c @@ -0,0 +1,46 @@ +#include "amds.h" +#include "amds_priv.h" +#include "htable.h" +#include "papi.h" +#include +/* Event enumeration: iterate over native events */ +int amds_evt_enum(unsigned int *EventCode, int modifier) { + if (modifier == PAPI_ENUM_FIRST) { + if (ntv_table_p->count == 0) { + return PAPI_ENOEVNT; + } + *EventCode = 0; + return PAPI_OK; + } else if (modifier == PAPI_ENUM_EVENTS) { + if (*EventCode + 1 < (unsigned int)ntv_table_p->count) { + *EventCode = *EventCode + 1; + return PAPI_OK; + } else { + return PAPI_ENOEVNT; + } + } + return PAPI_EINVAL; +} +int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { + if (EventCode >= (unsigned int)ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(name, ntv_table_p->events[EventCode].name, len); + return PAPI_OK; +} +int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { + native_event_t *event = NULL; + int hret = htable_find(htable, name, (void **)&event); + if (hret != HTABLE_SUCCESS) { + return (hret == HTABLE_ENOVAL) ? PAPI_ENOEVNT : PAPI_ECMP; + } + *EventCode = event->id; + return PAPI_OK; +} +int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { + if (EventCode >= (unsigned int)ntv_table_p->count) { + return PAPI_EINVAL; + } + strncpy(descr, ntv_table_p->events[EventCode].descr, len); + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h new file mode 100644 index 000000000..2d2a28357 --- /dev/null +++ b/src/components/amd_smi/amds_priv.h @@ -0,0 +1,198 @@ +#ifndef __AMDS_PRIV_H__ +#define __AMDS_PRIV_H__ + +#define AMDSMI_DISABLE_ESMI + +#include "amdsmi.h" +#include + +/* Mode enumeration used by accessors */ +typedef enum { + PAPI_MODE_READ = 1, + PAPI_MODE_WRITE, + PAPI_MODE_RDWR, +} rocs_access_mode_e; + +/* Native event descriptor */ +typedef struct native_event { + unsigned int id; + char *name, *descr; + int32_t device; + uint64_t value; + uint32_t mode, variant, subvariant; + int (*open_func)(struct native_event *); + int (*close_func)(struct native_event *); + int (*start_func)(struct native_event *); + int (*stop_func)(struct native_event *); + int (*access_func)(int mode, void *arg); +} native_event_t; + +typedef struct { + native_event_t *events; + int count; +} native_event_table_t; + +/* Global state */ +extern amdsmi_processor_handle *device_handles; +extern int32_t device_count; +extern int32_t gpu_count; +extern int32_t cpu_count; +extern int32_t device_mask; +extern amdsmi_processor_handle **cpu_core_handles; +extern uint32_t *cores_per_socket; +extern void *htable; +extern native_event_table_t ntv_table; +extern native_event_table_t *ntv_table_p; +extern unsigned int _amd_smi_lock; + +/* AMD SMI function pointers */ +extern amdsmi_status_t (*amdsmi_init_p)(uint64_t); +extern amdsmi_status_t (*amdsmi_shut_down_p)(void); +extern amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); +extern amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); +extern amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); +extern amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); +extern amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); +extern amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); +extern amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); +extern amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); +extern amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); +extern amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); +extern amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); +extern amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); +extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); +extern amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); +extern amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); +extern amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); +extern amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); +extern amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); +extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +extern amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); + +#ifndef AMDSMI_DISABLE_ESMI +extern amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); +extern amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); +extern amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); +extern amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +#endif + +/* Accessor prototypes */ +int access_amdsmi_temp_metric(int mode, void *arg); +int access_amdsmi_fan_speed(int mode, void *arg); +int access_amdsmi_fan_rpms(int mode, void *arg); +int access_amdsmi_mem_total(int mode, void *arg); +int access_amdsmi_mem_usage(int mode, void *arg); +int access_amdsmi_power_cap(int mode, void *arg); +int access_amdsmi_power_cap_range(int mode, void *arg); +int access_amdsmi_power_average(int mode, void *arg); +int access_amdsmi_pci_throughput(int mode, void *arg); +int access_amdsmi_pci_replay_counter(int mode, void *arg); +int access_amdsmi_clk_freq(int mode, void *arg); +int access_amdsmi_gpu_metrics(int mode, void *arg); +int access_amdsmi_gpu_info(int mode, void *arg); +int access_amdsmi_gpu_activity(int mode, void *arg); +int access_amdsmi_fan_speed_max(int mode, void *arg); +int access_amdsmi_pci_bandwidth(int mode, void *arg); +int access_amdsmi_energy_count(int mode, void *arg); +int access_amdsmi_power_profile_status(int mode, void *arg); +int access_amdsmi_uuid_hash(int mode, void *arg); +int access_amdsmi_gpu_string_hash(int mode, void *arg); +int access_amdsmi_enumeration_info(int mode, void *arg); +int access_amdsmi_asic_info(int mode, void *arg); +int access_amdsmi_link_metrics(int mode, void *arg); +int access_amdsmi_process_count(int mode, void *arg); +int access_amdsmi_ecc_total(int mode, void *arg); +int access_amdsmi_ecc_enabled_mask(int mode, void *arg); +int access_amdsmi_compute_partition_hash(int mode, void *arg); +int access_amdsmi_memory_partition_hash(int mode, void *arg); +int access_amdsmi_accelerator_num_partitions(int mode, void *arg); +int access_amdsmi_lib_version(int mode, void *arg); +int access_amdsmi_cache_size(int mode, void *arg); +int access_amdsmi_overdrive_level(int mode, void *arg); +int access_amdsmi_mem_overdrive_level(int mode, void *arg); +int access_amdsmi_od_volt_regions_count(int mode, void *arg); +int access_amdsmi_perf_level(int mode, void *arg); +int access_amdsmi_pm_metrics_count(int mode, void *arg); +int access_amdsmi_ras_ecc_schema(int mode, void *arg); +int access_amdsmi_reg_count(int mode, void *arg); +int access_amdsmi_voltage(int mode, void *arg); +int access_amdsmi_vram_width(int mode, void *arg); +int access_amdsmi_soc_pstate_id(int mode, void *arg); +int access_amdsmi_xgmi_plpd_id(int mode, void *arg); + +#ifndef AMDSMI_DISABLE_ESMI +int access_amdsmi_cpu_socket_power(int mode, void *arg); +int access_amdsmi_cpu_socket_energy(int mode, void *arg); +int access_amdsmi_cpu_socket_freq_limit(int mode, void *arg); +int access_amdsmi_cpu_socket_freq_range(int mode, void *arg); +int access_amdsmi_cpu_power_cap(int mode, void *arg); +int access_amdsmi_cpu_core_energy(int mode, void *arg); +int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); +int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); +int access_amdsmi_dimm_temp(int mode, void *arg); +int access_amdsmi_dimm_power(int mode, void *arg); +int access_amdsmi_dimm_range_refresh(int mode, void *arg); +int access_amdsmi_threads_per_core(int mode, void *arg); +int access_amdsmi_cpu_family(int mode, void *arg); +int access_amdsmi_cpu_model(int mode, void *arg); +int access_amdsmi_smu_fw_version(int mode, void *arg); +int access_amdsmi_xgmi_bandwidth(int mode, void *arg); +#endif + +#endif /* __AMDS_PRIV_H__ */ From 7d79984c5fd947c9c563e1c542f331cdd86e0af2 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 19:40:23 -0400 Subject: [PATCH 044/147] Fix spacing in AMD SMI build rules --- src/components/amd_smi/Rules.amd_smi | 178 +++++++++++++-------------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 426a4f254..eeb8dc597 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -1,80 +1,80 @@ -# Set default if the root environment variable is not already set. -# Note PAPI_AMDSMI_ROOT is an environment variable that must be set. -# There are four other environment variables that must be exported -# for runtime operation; see the README file. - -PAPI_AMDSMI_ROOT ?= /opt/rocm - -# There is one library used by the AMD_SMI component: libamd_smi64.so -# By default, the software tries to find this in system paths, including -# those listed in the environment variable LD_LIBRARY_PATH. If not found -# there it looks in $(PAPI_AMDSMI_ROOT)/lib/libamd_smi64.so - -# However, this can be overridden by exporting PAPI_AMD_SMI_LIB as -# something else. It would still need to be a full path and library name. -# If it is exported, it must work or the component will be disabled. e.g. -# export PAPI_AMD_SMI_LIB=$(PAPI_AMD_SMI_LIB)/lib/libamd_smi64.so -# This allows users to overcome non-standard ROCM installs or specify -# specific version of the libamd_smi64.so library. - -# PAPI_AMDSMI_ROOT is used at both at compile time and run time. - -# There are many ways to cause this path to be known. Spack is a package -# manager used on supercomputers, Linux and MacOS. If Spack is aware of ROCM, -# it encodes the paths to the necessary libraries. - -# The environment variable LD_LIBRARY_PATH encodes a list of paths to -# search for libraries; separated by a colon (:). New paths can be -# added to LD_LIBRARY_PATH. -# -# Warning: LD_LIBRARY_PATH often contains directories that apply to other -# installed packages you may be using. Always add to LD_LIBRARY_PATH -# recursively; for example: - -# >export LD_LIBRARY_PATH=someNewLibraryDirectory:$LD_LIBRARY_PATH which would -# append the existing LD_LIBRARY_PATH to the new directory you wish to add. -# Alternatively, you can prepend it: -# >export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:someNewLibraryDirectory Which will -# search the existing libraries first, then your new directory. - -# You can check on the value of LD_LIBRARY_PATH with -# >echo $LD_LIBRARY_PATH - -# There may be other package managers or utilities, for example on a system -# with modules; the command 'module load rocm' may modify LD_LIBRARY_PATH. - -# A Linux system will also search for libraries by default in the directories -# listed by /etc/ld.so.conf, and /usr/lib64, /lib64, /usr/lib, /lib. - -# Note: If you change the exports, PAPI should be rebuilt from scratch; see -# note below. - -# Note: AMD_SMI is typically provided with the ROCM libraries, but in PAPI -# ROCM and AMD_SMI are treated as separate components, and must be given -# separately on the configure option --with-components. e.g. - -# From within the papi/src/ director: -# make clobber -# ./configure --with-components="amd_smi" -# make - -# An alternative, for both rocm and amd_smi components: -# ./configure --with-components="rocm amd_smi" - -# OPERATION, per library: -# 1) If an override is not empty, we will use it explicitly and fail if it -# does not work. This means disabling the component; a reason for disabling -# is shown using the papi utility, papi/src/utils/papi_component_avail - -# 2) We will attempt to open the library using the normal system library search -# paths; if Spack is present and configured correctly it should deliver the -# proper library. A failure here will be silent; we will proceed to (3). - -# 3) If that fails, we will try to find the library in the standard installed -# locations listed above. If this fails, we disable the component, the reason -# for disabling is shown using the papi utility, -# papi/src/utils/papi_component_avail. - +# Set default if the root environment variable is not already set. +# Note PAPI_AMDSMI_ROOT is an environment variable that must be set. +# There are four other environment variables that must be exported +# for runtime operation; see the README file. + +PAPI_AMDSMI_ROOT ?= /opt/rocm + +# There is one library used by the AMD_SMI component: libamd_smi64.so +# By default, the software tries to find this in system paths, including +# those listed in the environment variable LD_LIBRARY_PATH. If not found +# there it looks in $(PAPI_AMDSMI_ROOT)/lib/libamd_smi64.so + +# However, this can be overridden by exporting PAPI_AMD_SMI_LIB as +# something else. It would still need to be a full path and library name. +# If it is exported, it must work or the component will be disabled. e.g. +# export PAPI_AMD_SMI_LIB=$(PAPI_AMD_SMI_LIB)/lib/libamd_smi64.so +# This allows users to overcome non-standard ROCM installs or specify +# specific version of the libamd_smi64.so library. + +# PAPI_AMDSMI_ROOT is used at both at compile time and run time. + +# There are many ways to cause this path to be known. Spack is a package +# manager used on supercomputers, Linux and MacOS. If Spack is aware of ROCM, +# it encodes the paths to the necessary libraries. + +# The environment variable LD_LIBRARY_PATH encodes a list of paths to +# search for libraries; separated by a colon (:). New paths can be +# added to LD_LIBRARY_PATH. +# +# Warning: LD_LIBRARY_PATH often contains directories that apply to other +# installed packages you may be using. Always add to LD_LIBRARY_PATH +# recursively; for example: + +# >export LD_LIBRARY_PATH=someNewLibraryDirectory:$LD_LIBRARY_PATH which would +# append the existing LD_LIBRARY_PATH to the new directory you wish to add. +# Alternatively, you can prepend it: +# >export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:someNewLibraryDirectory Which will +# search the existing libraries first, then your new directory. + +# You can check on the value of LD_LIBRARY_PATH with +# >echo $LD_LIBRARY_PATH + +# There may be other package managers or utilities, for example on a system +# with modules; the command 'module load rocm' may modify LD_LIBRARY_PATH. + +# A Linux system will also search for libraries by default in the directories +# listed by /etc/ld.so.conf, and /usr/lib64, /lib64, /usr/lib, /lib. + +# Note: If you change the exports, PAPI should be rebuilt from scratch; see +# note below. + +# Note: AMD_SMI is typically provided with the ROCM libraries, but in PAPI +# ROCM and AMD_SMI are treated as separate components, and must be given +# separately on the configure option --with-components. e.g. + +# From within the papi/src/ director: +# make clobber +# ./configure --with-components="amd_smi" +# make + +# An alternative, for both rocm and amd_smi components: +# ./configure --with-components="rocm amd_smi" + +# OPERATION, per library: +# 1) If an override is not empty, we will use it explicitly and fail if it +# does not work. This means disabling the component; a reason for disabling +# is shown using the papi utility, papi/src/utils/papi_component_avail + +# 2) We will attempt to open the library using the normal system library search +# paths; if Spack is present and configured correctly it should deliver the +# proper library. A failure here will be silent; we will proceed to (3). + +# 3) If that fails, we will try to find the library in the standard installed +# locations listed above. If this fails, we disable the component, the reason +# for disabling is shown using the papi utility, +# papi/src/utils/papi_component_avail. + COMPSRCS += components/amd_smi/linux-amd-smi.c \ components/amd_smi/amds.c \ components/amd_smi/amds_accessors.c \ @@ -85,18 +85,18 @@ COMPOBJS += linux-amd-smi.o \ amds_accessors.o \ amds_evtapi.o \ amds_ctx.o - -# CFLAGS specifies compile flags; need include files here, and macro defines. -# Where to find amd_smi.h varied in early ROCM releases. If it changes again, -# for backward compatibility add *more* -I paths, do not just replace this one. - -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include/amd_smi -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include -CFLAGS += -g -LDFLAGS += $(LDL) -g - + +# CFLAGS specifies compile flags; need include files here, and macro defines. +# Where to find amd_smi.h varied in early ROCM releases. If it changes again, +# for backward compatibility add *more* -I paths, do not just replace this one. + +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include/amd_smi +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi +CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include +CFLAGS += -g +LDFLAGS += $(LDL) -g + linux-amd-smi.o: components/amd_smi/linux-amd-smi.c $(HEADERS) $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o From 43ceebf58b92c99cb7e1af63b761e41ff3b739c1 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 19:43:50 -0400 Subject: [PATCH 045/147] Use tabs for AMD SMI build recipes --- src/components/amd_smi/Rules.amd_smi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index eeb8dc597..669ff4846 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -98,16 +98,16 @@ CFLAGS += -g LDFLAGS += $(LDL) -g linux-amd-smi.o: components/amd_smi/linux-amd-smi.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/linux-amd-smi.c -o linux-amd-smi.o amds.o: components/amd_smi/amds.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds.c -o amds.o + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds.c -o amds.o amds_accessors.o: components/amd_smi/amds_accessors.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_accessors.c -o amds_accessors.o + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_accessors.c -o amds_accessors.o amds_evtapi.o: components/amd_smi/amds_evtapi.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_evtapi.c -o amds_evtapi.o + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_evtapi.c -o amds_evtapi.o amds_ctx.o: components/amd_smi/amds_ctx.c $(HEADERS) - $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_ctx.c -o amds_ctx.o + $(CC) $(LIBCFLAGS) $(OPTFLAGS) -c components/amd_smi/amds_ctx.c -o amds_ctx.o From 26d26d19c2f5e810c84ff9c9f6f111b27077f751 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 27 Aug 2025 16:56:53 -0700 Subject: [PATCH 046/147] amdsmi.h --- src/amdsmi.h | 6822 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6822 insertions(+) create mode 100644 src/amdsmi.h diff --git a/src/amdsmi.h b/src/amdsmi.h new file mode 100644 index 000000000..99b94b7a7 --- /dev/null +++ b/src/amdsmi.h @@ -0,0 +1,6822 @@ +/* + * Copyright (c) Advanced Micro Devices, Inc. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef __AMDSMI_H__ +#define __AMDSMI_H__ + +/** + * @file amdsmi.h + * @brief AMD System Management Interface API + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#include +#ifdef ENABLE_ESMI_LIB + #include +#endif +#else // __cplusplus +#include +#endif // __cplusplus + +/** + * @brief Initialization flags + * + * Initialization flags may be OR'd together and passed to ::amdsmi_init(). + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_INIT_ALL_PROCESSORS = 0xFFFFFFFF, //!< Initialize all processors + AMDSMI_INIT_AMD_CPUS = (1 << 0), + AMDSMI_INIT_AMD_GPUS = (1 << 1), + AMDSMI_INIT_NON_AMD_CPUS = (1 << 2), + AMDSMI_INIT_NON_AMD_GPUS = (1 << 3), + AMDSMI_INIT_AMD_APUS = (AMDSMI_INIT_AMD_CPUS | AMDSMI_INIT_AMD_GPUS) // Default option +} amdsmi_init_flags_t; + +/** + * @brief Maximum size definitions + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_MM_IP_COUNT 8 +#define AMDSMI_MAX_DATE_LENGTH 32 //!< YYYY-MM-DD:HH:MM:SS.MSC +#define AMDSMI_MAX_STRING_LENGTH 256 +#define AMDSMI_MAX_DEVICES 32 +#define AMDSMI_MAX_DRIVER_VERSION_LENGTH 80 +#define AMDSMI_MAX_CACHE_TYPES 10 +#define AMDSMI_MAX_ACCELERATOR_PROFILE 32 +#define AMDSMI_MAX_CP_PROFILE_RESOURCES 32 +#define AMDSMI_MAX_ACCELERATOR_PARTITIONS 8 +#define AMDSMI_MAX_NUM_NUMA_NODES 32 + +#define AMDSMI_GPU_UUID_SIZE 38 + +/** + * @brief Common defines + * + * @cond @tag{gpu_bm_linux} @endcond + */ +#define AMDSMI_MAX_NAME 32 +#define AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK 64 +#define AMDSMI_MAX_CONTAINER_TYPE 2 +#define AMDSMI_256_LENGTH AMDSMI_MAX_STRING_LENGTH //!< Deprecated + +/** + * @brief The following structure holds the gpu metrics values for a device. + */ + +/** + * @brief Unit conversion factor for HBM temperatures + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define CENTRIGRADE_TO_MILLI_CENTIGRADE 1000 + +/** + * @brief This should match NUM_HBM_INSTANCES + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_NUM_HBM_INSTANCES 4 + +/** + * @brief This should match MAX_NUM_VCN + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_VCN 4 + +/** + * @brief This should match MAX_NUM_CLKS + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_CLKS 4 + +/** + * @brief This should match MAX_NUM_XGMI_LINKS + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_XGMI_LINKS 8 + +/** + * @brief This should match MAX_NUM_GFX_CLKS + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_GFX_CLKS 8 + +/** + * @brief This should match AMDSMI_MAX_AID + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_AID 4 + +/** + * @brief This should match AMDSMI_MAX_ENGINES + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_ENGINES 8 + +/** + * @brief This should match AMDSMI_MAX_NUM_JPEG (8*4=32) + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_JPEG 32 + +/** + * @brief This should match AMDSMI_MAX_NUM_XCC; + * XCC - Accelerated Compute Core, the collection of compute units, + * ACE (Asynchronous Compute Engines), caches, + * and global resources organized as one unit. + * + * Refer to amd.com documentation for more detail: + * https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_XCC 8 + +/** + * @brief This should match AMDSMI_MAX_NUM_XCP; + * XCP - Accelerated Compute Processor, + * also referred to as the Graphics Compute Partitions. + * Each physical gpu could have a maximum of 8 separate partitions + * associated with each (depending on ASIC support). + * + * Refer to amd.com documentation for more detail: + * https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +#define AMDSMI_MAX_NUM_XCP 8 + +/* string format */ +#define AMDSMI_TIME_FORMAT "%02d:%02d:%02d.%03d" +#define AMDSMI_DATE_FORMAT "%04d-%02d-%02d:%02d:%02d:%02d.%03d" + +/** + * @brief library versioning + * + * @cond @tag{gpu_bm_linux} @endcond + */ + +//! Year should follow the IP driver package version: 22.40/23.10 and similar +#define AMDSMI_LIB_VERSION_YEAR 25 //!< To Be Deprecated + +//! Major version should be changed for every header change (adding/deleting APIs, changing names, fields of structures, etc.) +#define AMDSMI_LIB_VERSION_MAJOR 25 + +//! Minor version should be updated for each API change, but without changing headers +#define AMDSMI_LIB_VERSION_MINOR 3 + +//! Release version should be set to 0 as default and can be updated by the PMs for each CSP point release +#define AMDSMI_LIB_VERSION_RELEASE 0 + +#define AMDSMI_LIB_VERSION_CREATE_STRING(MAJOR, MINOR, RELEASE) (#MAJOR "." #MINOR "." #RELEASE) +#define AMDSMI_LIB_VERSION_EXPAND_PARTS(MAJOR_STR, MINOR_STR, RELEASE_STR) AMDSMI_LIB_VERSION_CREATE_STRING(MAJOR_STR, MINOR_STR, RELEASE_STR) +#define AMDSMI_LIB_VERSION_STRING AMDSMI_LIB_VERSION_EXPAND_PARTS(AMDSMI_LIB_VERSION_MAJOR, AMDSMI_LIB_VERSION_MINOR, AMDSMI_LIB_VERSION_RELEASE) + +/** + * @brief GPU Capability info + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_MM_UVD, + AMDSMI_MM_VCE, + AMDSMI_MM_VCN, + AMDSMI_MM__MAX +} amdsmi_mm_ip_t; + +/** + * @brief Container + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_CONTAINER_LXC, + AMDSMI_CONTAINER_DOCKER, +} amdsmi_container_types_t; + +/** + * @brief opaque handler point to underlying implementation + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond + */ +typedef void *amdsmi_processor_handle; +typedef void *amdsmi_socket_handle; + +#ifdef ENABLE_ESMI_LIB + +/** + * @brief opaque handler point to underlying implementation + * + * @cond @tag{cpu_bm} @endcond + */ +typedef void *amdsmi_cpusocket_handle; + +/** + * @brief This structure holds HSMP Driver version information. + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint32_t major; //!< Major version number + uint32_t minor; //!< Minor version number +} amdsmi_hsmp_driver_version_t; + +#endif + +/** + * @brief Processor types detectable by AMD SMI + * + * AMDSMI_PROCESSOR_TYPE_AMD_CPU - CPU Socket is a physical component that holds the CPU. + * AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE - CPU Cores are number of individual processing units within the CPU. + * AMDSMI_PROCESSOR_TYPE_AMD_APU - Combination of AMDSMI_PROCESSOR_TYPE_AMD_CPU and integrated GPU on single die + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_PROCESSOR_TYPE_UNKNOWN = 0, + AMDSMI_PROCESSOR_TYPE_AMD_GPU, + AMDSMI_PROCESSOR_TYPE_AMD_CPU, + AMDSMI_PROCESSOR_TYPE_NON_AMD_GPU, + AMDSMI_PROCESSOR_TYPE_NON_AMD_CPU, + AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, + AMDSMI_PROCESSOR_TYPE_AMD_APU +} processor_type_t; + +/** + * @brief Error codes returned by amdsmi functions + * + * Please avoid status codes that are multiples of 256 (256, 512, etc..) + * Return values in the shell get modulo 256 applied, meaning any multiple of 256 ends up as 0 + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_STATUS_SUCCESS = 0, //!< Call succeeded + // Library usage errors + AMDSMI_STATUS_INVAL = 1, //!< Invalid parameters + AMDSMI_STATUS_NOT_SUPPORTED = 2, //!< Command not supported + AMDSMI_STATUS_NOT_YET_IMPLEMENTED = 3, //!< Not implemented yet + AMDSMI_STATUS_FAIL_LOAD_MODULE = 4, //!< Fail to load lib + AMDSMI_STATUS_FAIL_LOAD_SYMBOL = 5, //!< Fail to load symbol + AMDSMI_STATUS_DRM_ERROR = 6, //!< Error when call libdrm + AMDSMI_STATUS_API_FAILED = 7, //!< API call failed + AMDSMI_STATUS_TIMEOUT = 8, //!< Timeout in API call + AMDSMI_STATUS_RETRY = 9, //!< Retry operation + AMDSMI_STATUS_NO_PERM = 10, //!< Permission Denied + AMDSMI_STATUS_INTERRUPT = 11, //!< An interrupt occurred during execution of function + AMDSMI_STATUS_IO = 12, //!< I/O Error + AMDSMI_STATUS_ADDRESS_FAULT = 13, //!< Bad address + AMDSMI_STATUS_FILE_ERROR = 14, //!< Problem accessing a file + AMDSMI_STATUS_OUT_OF_RESOURCES = 15, //!< Not enough memory + AMDSMI_STATUS_INTERNAL_EXCEPTION = 16, //!< An internal exception was caught + AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS = 17, //!< The provided input is out of allowable or safe range + AMDSMI_STATUS_INIT_ERROR = 18, //!< An error occurred when initializing internal data structures + AMDSMI_STATUS_REFCOUNT_OVERFLOW = 19, //!< An internal reference counter exceeded INT32_MAX + // Processor related errors + AMDSMI_STATUS_BUSY = 30, //!< Processor busy + AMDSMI_STATUS_NOT_FOUND = 31, //!< Processor Not found + AMDSMI_STATUS_NOT_INIT = 32, //!< Processor not initialized + AMDSMI_STATUS_NO_SLOT = 33, //!< No more free slot + AMDSMI_STATUS_DRIVER_NOT_LOADED = 34, //!< Processor driver not loaded + // Data and size errors + AMDSMI_STATUS_NO_DATA = 40, //!< No data was found for a given input + AMDSMI_STATUS_INSUFFICIENT_SIZE = 41, //!< Not enough resources were available for the operation + AMDSMI_STATUS_UNEXPECTED_SIZE = 42, //!< An unexpected amount of data was read + AMDSMI_STATUS_UNEXPECTED_DATA = 43, //!< The data read or provided to function is not what was expected + //esmi errors + AMDSMI_STATUS_NON_AMD_CPU = 44, //!< System has different cpu than AMD + AMDSMI_STATUS_NO_ENERGY_DRV = 45, //!< Energy driver not found + AMDSMI_STATUS_NO_MSR_DRV = 46, //!< MSR driver not found + AMDSMI_STATUS_NO_HSMP_DRV = 47, //!< HSMP driver not found + AMDSMI_STATUS_NO_HSMP_SUP = 48, //!< HSMP not supported + AMDSMI_STATUS_NO_HSMP_MSG_SUP = 49, //!< HSMP message/feature not supported + AMDSMI_STATUS_HSMP_TIMEOUT = 50, //!< HSMP message timed out + AMDSMI_STATUS_NO_DRV = 51, //!< No Energy and HSMP driver present + AMDSMI_STATUS_FILE_NOT_FOUND = 52, //!< file or directory not found + AMDSMI_STATUS_ARG_PTR_NULL = 53, //!< Parsed argument is invalid + AMDSMI_STATUS_AMDGPU_RESTART_ERR = 54, //!< AMDGPU restart failed + AMDSMI_STATUS_SETTING_UNAVAILABLE = 55, //!< Setting is not available + AMDSMI_STATUS_CORRUPTED_EEPROM = 56, //!< EEPROM is corrupted + // General errors + AMDSMI_STATUS_MAP_ERROR = 0xFFFFFFFE, //!< The internal library error did not map to a status code + AMDSMI_STATUS_UNKNOWN_ERROR = 0xFFFFFFFF, //!< An unknown error occurred +} amdsmi_status_t; + +/** + * @brief Clock types + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_CLK_TYPE_SYS = 0x0, //!< System clock + AMDSMI_CLK_TYPE_FIRST = AMDSMI_CLK_TYPE_SYS, + AMDSMI_CLK_TYPE_GFX = AMDSMI_CLK_TYPE_SYS, + AMDSMI_CLK_TYPE_DF, //!< Data Fabric clock (for ASICs + //!< running on a separate clock) + AMDSMI_CLK_TYPE_DCEF, //!< Display Controller Engine clock + AMDSMI_CLK_TYPE_SOC, + AMDSMI_CLK_TYPE_MEM, + AMDSMI_CLK_TYPE_PCIE, + AMDSMI_CLK_TYPE_VCLK0, + AMDSMI_CLK_TYPE_VCLK1, + AMDSMI_CLK_TYPE_DCLK0, + AMDSMI_CLK_TYPE_DCLK1, + AMDSMI_CLK_TYPE__MAX = AMDSMI_CLK_TYPE_DCLK1 +} amdsmi_clk_type_t; + +/** + * @brief Accelerator Partition + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_ACCELERATOR_PARTITION_INVALID = 0, + AMDSMI_ACCELERATOR_PARTITION_SPX, //!< Single GPU mode (SPX)- All XCCs work + //!< together with shared memory + AMDSMI_ACCELERATOR_PARTITION_DPX, //!< Dual GPU mode (DPX)- Half XCCs work + //!< together with shared memory + AMDSMI_ACCELERATOR_PARTITION_TPX, //!< Triple GPU mode (TPX)- One-third XCCs + //!< work together with shared memory + AMDSMI_ACCELERATOR_PARTITION_QPX, //!< Quad GPU mode (QPX)- Quarter XCCs + //!< work together with shared memory + AMDSMI_ACCELERATOR_PARTITION_CPX, //!< Core mode (CPX)- Per-chip XCC with + //!< shared memory + AMDSMI_ACCELERATOR_PARTITION_MAX +} amdsmi_accelerator_partition_type_t; + +/** + * @brief Accelerator Partition Resource Types + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_ACCELERATOR_XCC, + AMDSMI_ACCELERATOR_ENCODER, + AMDSMI_ACCELERATOR_DECODER, + AMDSMI_ACCELERATOR_DMA, + AMDSMI_ACCELERATOR_JPEG, + AMDSMI_ACCELERATOR_MAX +} amdsmi_accelerator_partition_resource_type_t; + +/** + * @brief Compute Partition. This enum is used to identify + * various compute partitioning settings. + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_COMPUTE_PARTITION_INVALID = 0, + AMDSMI_COMPUTE_PARTITION_SPX, //!< Single GPU mode (SPX)- All XCCs work + //!< together with shared memory + AMDSMI_COMPUTE_PARTITION_DPX, //!< Dual GPU mode (DPX)- Half XCCs work + //!< together with shared memory + AMDSMI_COMPUTE_PARTITION_TPX, //!< Triple GPU mode (TPX)- One-third XCCs + //!< work together with shared memory + AMDSMI_COMPUTE_PARTITION_QPX, //!< Quad GPU mode (QPX)- Quarter XCCs + //!< work together with shared memory + AMDSMI_COMPUTE_PARTITION_CPX //!< Core mode (CPX)- Per-chip XCC with + //!< shared memory +} amdsmi_compute_partition_type_t; + +/** + * @brief Memory Partitions + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_MEMORY_PARTITION_UNKNOWN = 0, + AMDSMI_MEMORY_PARTITION_NPS1 = 1, //!< NPS1 - All CCD & XCD data is interleaved + //!< across all 8 HBM stacks (all stacks/1). + AMDSMI_MEMORY_PARTITION_NPS2 = 2, //!< NPS2 - 2 sets of CCDs or 4 XCD interleaved + //!< across the 4 HBM stacks per AID pair + //!< (8 stacks/2). + AMDSMI_MEMORY_PARTITION_NPS4 = 4, //!< NPS4 - Each XCD data is interleaved + //!< across 2 (or single) HBM stacks + //!< (8 stacks/8 or 8 stacks/4). + AMDSMI_MEMORY_PARTITION_NPS8 = 8, //!< NPS8 - Each XCD uses a single HBM stack + //!< (8 stacks/8). Or each XCD uses a single + //!< HBM stack & CCDs share 2 non-interleaved + //!< HBM stacks on its AID + //!< (AID[1,2,3] = 6 stacks/6). +} amdsmi_memory_partition_type_t; + +/** + * @brief This enumeration is used to indicate from which part of the processor a + * temperature reading should be obtained. + * + * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond + */ +typedef enum { + AMDSMI_TEMPERATURE_TYPE_EDGE, + AMDSMI_TEMPERATURE_TYPE_FIRST = AMDSMI_TEMPERATURE_TYPE_EDGE, + AMDSMI_TEMPERATURE_TYPE_HOTSPOT, + AMDSMI_TEMPERATURE_TYPE_JUNCTION = AMDSMI_TEMPERATURE_TYPE_HOTSPOT, + AMDSMI_TEMPERATURE_TYPE_VRAM, + AMDSMI_TEMPERATURE_TYPE_HBM_0, + AMDSMI_TEMPERATURE_TYPE_HBM_1, + AMDSMI_TEMPERATURE_TYPE_HBM_2, + AMDSMI_TEMPERATURE_TYPE_HBM_3, + AMDSMI_TEMPERATURE_TYPE_PLX, + AMDSMI_TEMPERATURE_TYPE__MAX = AMDSMI_TEMPERATURE_TYPE_PLX +} amdsmi_temperature_type_t; + +/** + * @brief The values of this enum are used to identify the various firmware + * blocks. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_FW_ID_SMU = 1, + AMDSMI_FW_ID_FIRST = AMDSMI_FW_ID_SMU, + AMDSMI_FW_ID_CP_CE, + AMDSMI_FW_ID_CP_PFP, + AMDSMI_FW_ID_CP_ME, + AMDSMI_FW_ID_CP_MEC_JT1, + AMDSMI_FW_ID_CP_MEC_JT2, + AMDSMI_FW_ID_CP_MEC1, + AMDSMI_FW_ID_CP_MEC2, + AMDSMI_FW_ID_RLC, + AMDSMI_FW_ID_SDMA0, + AMDSMI_FW_ID_SDMA1, + AMDSMI_FW_ID_SDMA2, + AMDSMI_FW_ID_SDMA3, + AMDSMI_FW_ID_SDMA4, + AMDSMI_FW_ID_SDMA5, + AMDSMI_FW_ID_SDMA6, + AMDSMI_FW_ID_SDMA7, + AMDSMI_FW_ID_VCN, + AMDSMI_FW_ID_UVD, + AMDSMI_FW_ID_VCE, + AMDSMI_FW_ID_ISP, + AMDSMI_FW_ID_DMCU_ERAM, /*eRAM*/ + AMDSMI_FW_ID_DMCU_ISR, /*ISR*/ + AMDSMI_FW_ID_RLC_RESTORE_LIST_GPM_MEM, + AMDSMI_FW_ID_RLC_RESTORE_LIST_SRM_MEM, + AMDSMI_FW_ID_RLC_RESTORE_LIST_CNTL, + AMDSMI_FW_ID_RLC_V, + AMDSMI_FW_ID_MMSCH, + AMDSMI_FW_ID_PSP_SYSDRV, + AMDSMI_FW_ID_PSP_SOSDRV, + AMDSMI_FW_ID_PSP_TOC, + AMDSMI_FW_ID_PSP_KEYDB, + AMDSMI_FW_ID_DFC, + AMDSMI_FW_ID_PSP_SPL, + AMDSMI_FW_ID_DRV_CAP, + AMDSMI_FW_ID_MC, + AMDSMI_FW_ID_PSP_BL, + AMDSMI_FW_ID_CP_PM4, + AMDSMI_FW_ID_RLC_P, + AMDSMI_FW_ID_SEC_POLICY_STAGE2, + AMDSMI_FW_ID_REG_ACCESS_WHITELIST, + AMDSMI_FW_ID_IMU_DRAM, + AMDSMI_FW_ID_IMU_IRAM, + AMDSMI_FW_ID_SDMA_TH0, + AMDSMI_FW_ID_SDMA_TH1, + AMDSMI_FW_ID_CP_MES, + AMDSMI_FW_ID_MES_KIQ, + AMDSMI_FW_ID_MES_STACK, + AMDSMI_FW_ID_MES_THREAD1, + AMDSMI_FW_ID_MES_THREAD1_STACK, + AMDSMI_FW_ID_RLX6, + AMDSMI_FW_ID_RLX6_DRAM_BOOT, + AMDSMI_FW_ID_RS64_ME, + AMDSMI_FW_ID_RS64_ME_P0_DATA, + AMDSMI_FW_ID_RS64_ME_P1_DATA, + AMDSMI_FW_ID_RS64_PFP, + AMDSMI_FW_ID_RS64_PFP_P0_DATA, + AMDSMI_FW_ID_RS64_PFP_P1_DATA, + AMDSMI_FW_ID_RS64_MEC, + AMDSMI_FW_ID_RS64_MEC_P0_DATA, + AMDSMI_FW_ID_RS64_MEC_P1_DATA, + AMDSMI_FW_ID_RS64_MEC_P2_DATA, + AMDSMI_FW_ID_RS64_MEC_P3_DATA, + AMDSMI_FW_ID_PPTABLE, + AMDSMI_FW_ID_PSP_SOC, + AMDSMI_FW_ID_PSP_DBG, + AMDSMI_FW_ID_PSP_INTF, + AMDSMI_FW_ID_RLX6_CORE1, + AMDSMI_FW_ID_RLX6_DRAM_BOOT_CORE1, + AMDSMI_FW_ID_RLCV_LX7, + AMDSMI_FW_ID_RLC_SAVE_RESTORE_LIST, + AMDSMI_FW_ID_ASD, + AMDSMI_FW_ID_TA_RAS, + AMDSMI_FW_ID_TA_XGMI, + AMDSMI_FW_ID_RLC_SRLG, + AMDSMI_FW_ID_RLC_SRLS, + AMDSMI_FW_ID_PM, + AMDSMI_FW_ID_DMCU, + AMDSMI_FW_ID__MAX +} amdsmi_fw_block_t; + +/** + * @brief vRam Types. This enum is used to identify various VRam types. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_VRAM_TYPE_UNKNOWN = 0, + // HBM + AMDSMI_VRAM_TYPE_HBM = 1, + AMDSMI_VRAM_TYPE_HBM2 = 2, + AMDSMI_VRAM_TYPE_HBM2E = 3, + AMDSMI_VRAM_TYPE_HBM3 = 4, + // DDR + AMDSMI_VRAM_TYPE_DDR2 = 10, + AMDSMI_VRAM_TYPE_DDR3 = 11, + AMDSMI_VRAM_TYPE_DDR4 = 12, + // GDDR + AMDSMI_VRAM_TYPE_GDDR1 = 17, + AMDSMI_VRAM_TYPE_GDDR2 = 18, + AMDSMI_VRAM_TYPE_GDDR3 = 19, + AMDSMI_VRAM_TYPE_GDDR4 = 20, + AMDSMI_VRAM_TYPE_GDDR5 = 21, + AMDSMI_VRAM_TYPE_GDDR6 = 22, + AMDSMI_VRAM_TYPE_GDDR7 = 23, + AMDSMI_VRAM_TYPE__MAX = AMDSMI_VRAM_TYPE_GDDR7 +} amdsmi_vram_type_t; + +/** + * @brief VRam Vendor Types + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_VRAM_VENDOR_SAMSUNG, + AMDSMI_VRAM_VENDOR_INFINEON, + AMDSMI_VRAM_VENDOR_ELPIDA, + AMDSMI_VRAM_VENDOR_ETRON, + AMDSMI_VRAM_VENDOR_NANYA, + AMDSMI_VRAM_VENDOR_HYNIX, + AMDSMI_VRAM_VENDOR_MOSEL, + AMDSMI_VRAM_VENDOR_WINBOND, + AMDSMI_VRAM_VENDOR_ESMT, + AMDSMI_VRAM_VENDOR_MICRON, + AMDSMI_VRAM_VENDOR_UNKNOWN +} amdsmi_vram_vendor_type_t; + +/** + * @brief This structure represents a range (e.g., frequencies or voltages). + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint64_t lower_bound; //!< Lower bound of range + uint64_t upper_bound; //!< Upper bound of range + uint64_t reserved[2]; +} amdsmi_range_t; + +/** + * @brief XGMI Information + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint8_t xgmi_lanes; + uint64_t xgmi_hive_id; + uint64_t xgmi_node_id; + uint32_t index; + uint32_t reserved[9]; +} amdsmi_xgmi_info_t; + +/** + * @brief VRam Usage + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t vram_total; //!< In MB + uint32_t vram_used; //!< In MB + uint32_t reserved[2]; +} amdsmi_vram_usage_t; + +/** + * @brief This structure hold violation status information. + * Note: for MI3x asics and higher, older ASICs will show unsupported. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint64_t reference_timestamp; //!< Represents CPU timestamp in microseconds (uS) + uint64_t violation_timestamp; //!< Violation time. Units in nanoseconds (ns) {@linux_bm}, in milliseconds (ms) {@host} + uint64_t acc_counter; //!< Current accumulated counter; Max uint64 means unsupported + uint64_t acc_prochot_thrm; //!< Current accumulated processor hot violation count; Max uint64 means unsupported + uint64_t acc_ppt_pwr; //!< PVIOL; Current accumulated Package Power Tracking (PPT) count; Max uint64 means unsupported + uint64_t acc_socket_thrm; //!< TVIOL; Current accumulated Socket thermal count; Max uint64 means unsupported + uint64_t acc_vr_thrm; //!< Current accumulated voltage regulator count; Max uint64 means unsupported + uint64_t acc_hbm_thrm; //!< Current accumulated High Bandwidth Memory (HBM) thermal count; Max uint64 means unsupported + uint64_t acc_gfx_clk_below_host_limit; //!< Current graphic clock below host limit count; Max uint64 means unsupported + uint64_t per_prochot_thrm; //!< Processor hot violation % (greater than 0% is a violation); Max uint64 means unsupported + uint64_t per_ppt_pwr; //!< PVIOL; Package Power Tracking (PPT) violation % (greater than 0% is a violation); Max uint64 means unsupported + uint64_t per_socket_thrm; //!< TVIOL; Socket thermal violation % (greater than 0% is a violation); Max uint64 means unsupported + uint64_t per_vr_thrm; //!< Voltage regulator violation % (greater than 0% is a violation); Max uint64 means unsupported + uint64_t per_hbm_thrm; //!< High Bandwidth Memory (HBM) thermal violation % (greater than 0% is a violation); Max uint64 means unsupported + uint64_t per_gfx_clk_below_host_limit; //!< Graphics clock below host limit violation % (greater than 0% is a violation); Max uint64 means unsupported + uint8_t active_prochot_thrm; //!< Processor hot violation; 1 = active 0 = not active; Max uint8 means unsupported + uint8_t active_ppt_pwr; //!< Package Power Tracking (PPT) violation; 1 = active 0 = not active; Max uint8 means unsupported + uint8_t active_socket_thrm; //!< Socket thermal violation; 1 = active 0 = not active; Max uint8 means unsupported + uint8_t active_vr_thrm; //!< Voltage regulator violation; 1 = active 0 = not active; Max uint8 means unsupported + uint8_t active_hbm_thrm; //!< High Bandwidth Memory (HBM) thermal violation; 1 = active 0 = not active; Max uint8 means unsupported + uint8_t active_gfx_clk_below_host_limit; //!< Graphics clock below host limit violation; 1 = active 0 = not active; Max uint8 means unsupported + uint64_t reserved[3]; //!< Reserved for new violation info +} amdsmi_violation_status_t; + +/** + * @brief Frequency Range + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + amdsmi_range_t supported_freq_range; //!< In MHz + amdsmi_range_t current_freq_range; //!< In MHz + uint32_t reserved[8]; +} amdsmi_frequency_range_t; + +/** + * @brief bdf types + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef union { + struct { + uint64_t function_number : 3; + uint64_t device_number : 5; + uint64_t bus_number : 8; + uint64_t domain_number : 48; + }; + uint64_t as_uint; +} amdsmi_bdf_t; + +/** + * @brief Structure holds enumeration information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint32_t drm_render; // the render node under /sys/class/drm/renderD* + uint32_t drm_card; // the graphic card device under /sys/class/drm/card* + uint32_t hsa_id; // the HSA enumeration ID + uint32_t hip_id; // the HIP enumeration ID + char hip_uuid[AMDSMI_MAX_STRING_LENGTH]; // the HIP unique identifer +} amdsmi_enumeration_info_t; + +/** + * @brief Card Form Factor + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_CARD_FORM_FACTOR_PCIE, + AMDSMI_CARD_FORM_FACTOR_OAM, + AMDSMI_CARD_FORM_FACTOR_CEM, + AMDSMI_CARD_FORM_FACTOR_UNKNOWN +} amdsmi_card_form_factor_t; + +/** + * @brief pcie information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + struct pcie_static_ { + uint16_t max_pcie_width; //!< maximum number of PCIe lanes + uint32_t max_pcie_speed; //!< maximum PCIe speed in GT/s + uint32_t pcie_interface_version; //!< PCIe interface version + amdsmi_card_form_factor_t slot_type; //!< card form factor + uint32_t max_pcie_interface_version; //!< maximum PCIe link generation + uint64_t reserved[9]; + } pcie_static; + struct pcie_metric_ { + uint16_t pcie_width; //!< current PCIe width + uint32_t pcie_speed; //!< current PCIe speed in MT/s + uint32_t pcie_bandwidth; //!< current instantaneous PCIe bandwidth in Mb/s + uint64_t pcie_replay_count; //!< total number of the replays issued on the PCIe link + uint64_t pcie_l0_to_recovery_count; //!< total number of times the PCIe link transitioned from L0 to the recovery state + uint64_t pcie_replay_roll_over_count; //!< total number of replay rollovers issued on the PCIe link + uint64_t pcie_nak_sent_count; //!< total number of NAKs issued on the PCIe link by the device + uint64_t pcie_nak_received_count; //!< total number of NAKs issued on the PCIe link by the receiver + uint32_t pcie_lc_perf_other_end_recovery_count; //!< PCIe other end recovery counter + uint64_t reserved[12]; + } pcie_metric; + uint64_t reserved[32]; +} amdsmi_pcie_info_t; + +/** + * @brief Power Cap Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint64_t power_cap; //!< current power cap Units uW {@linux_bm} or W {@host} + uint64_t default_power_cap; //!< default power cap Units uW {@linux_bm} or W {@host} + uint64_t dpm_cap; //!< dpm power cap Units MHz {@linux_bm} or Hz {@host} + uint64_t min_power_cap; //!< minimum power cap Units uW {@linux_bm} or W {@host} + uint64_t max_power_cap; //!< maximum power cap Units uW {@linux_bm} or W {@host} + uint64_t reserved[3]; +} amdsmi_power_cap_info_t; + +/** + * @brief VBios Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + char name[AMDSMI_MAX_STRING_LENGTH]; + char build_date[AMDSMI_MAX_DATE_LENGTH]; + char part_number[AMDSMI_MAX_STRING_LENGTH]; + char version[AMDSMI_MAX_STRING_LENGTH]; + uint64_t reserved[32]; +} amdsmi_vbios_info_t; + +/** + * @brief cache properties + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_CACHE_PROPERTY_ENABLED = 0x00000001, + AMDSMI_CACHE_PROPERTY_DATA_CACHE = 0x00000002, + AMDSMI_CACHE_PROPERTY_INST_CACHE = 0x00000004, + AMDSMI_CACHE_PROPERTY_CPU_CACHE = 0x00000008, + AMDSMI_CACHE_PROPERTY_SIMD_CACHE = 0x00000010, +} amdsmi_cache_property_type_t; + +/** + * @brief GPU Cache Information + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t num_cache_types; + struct cache_ { + uint32_t cache_properties; //!< amdsmi_cache_property_type_t which is a bitmask + uint32_t cache_size; //!< In KB + uint32_t cache_level; + uint32_t max_num_cu_shared; //!< Indicates how many Compute Units share this cache instance + uint32_t num_cache_instance; //!< total number of instance of this cache type + uint32_t reserved[3]; + } cache[AMDSMI_MAX_CACHE_TYPES]; + uint32_t reserved[15]; +} amdsmi_gpu_cache_info_t; + +/** + * @brief Firmware Information + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint8_t num_fw_info; + struct fw_info_list_ { + amdsmi_fw_block_t fw_id; + uint64_t fw_version; + uint64_t reserved[2]; + } fw_info_list[AMDSMI_FW_ID__MAX]; + uint32_t reserved[7]; +} amdsmi_fw_info_t; + +/** + * @brief ASIC Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + char market_name[AMDSMI_MAX_STRING_LENGTH]; + uint32_t vendor_id; //!< Use 32 bit to be compatible with other platform. + char vendor_name[AMDSMI_MAX_STRING_LENGTH]; + uint32_t subvendor_id; //!< The subsystem vendor id + uint64_t device_id; //!< The device id of a GPU + uint32_t rev_id; + char asic_serial[AMDSMI_MAX_STRING_LENGTH]; + uint32_t oam_id; //!< 0xFFFF if not supported + uint32_t num_of_compute_units; //!< 0xFFFFFFFF if not supported + uint64_t target_graphics_version; //!< 0xFFFFFFFFFFFFFFFF if not supported + uint32_t reserved[22]; +} amdsmi_asic_info_t; + + +/** + * @brief Structure holds kfd information + * + * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond + */ +typedef struct { + uint64_t kfd_id; //< 0xFFFFFFFFFFFFFFFF if not supported + uint32_t node_id; //< 0xFFFFFFFF if not supported + uint32_t current_partition_id; //< 0xFFFFFFFF if not supported + uint32_t reserved[12]; +} amdsmi_kfd_info_t; + +/** + * @brief This union holds memory partition bitmask. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef union { + struct nps_flags_ { + uint32_t nps1_cap :1; //!< bool 1 = true; 0 = false + uint32_t nps2_cap :1; //!< bool 1 = true; 0 = false + uint32_t nps4_cap :1; //!< bool 1 = true; 0 = false + uint32_t nps8_cap :1; //!< bool 1 = true; 0 = false + uint32_t reserved :28; + } nps_flags; + uint32_t nps_cap_mask; +} amdsmi_nps_caps_t; + +/** + * @brief Memory Partition Configuration. + * This structure is used to identify various memory partition configurations. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + amdsmi_nps_caps_t partition_caps; + amdsmi_memory_partition_type_t mp_mode; + uint32_t num_numa_ranges; + struct numa_range_ { + amdsmi_vram_type_t memory_type; + uint64_t start; + uint64_t end; + } numa_range[AMDSMI_MAX_NUM_NUMA_NODES]; + uint64_t reserved[11]; +} amdsmi_memory_partition_config_t; + +/** + * @brief Accelerator Partition Resource Profile + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + amdsmi_accelerator_partition_type_t profile_type; //!< SPX, DPX, QPX, CPX and so on + uint32_t num_partitions; //!< On MI300X: SPX=>1, DPX=>2, QPX=>4, CPX=>8; length of resources + amdsmi_nps_caps_t memory_caps; //!< Possible memory partition capabilities + uint32_t profile_index; //!< Index in the profiles array in amdsmi_accelerator_partition_profile_t + uint32_t num_resources; //!< length of index_of_resources_profile + uint32_t resources[AMDSMI_MAX_ACCELERATOR_PARTITIONS][AMDSMI_MAX_CP_PROFILE_RESOURCES]; + uint64_t reserved[13]; +} amdsmi_accelerator_partition_profile_t; + +/** + * @brief Accelerator Partition Resources. + * This struct is used to identify various partition resource profiles. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint32_t profile_index; + amdsmi_accelerator_partition_resource_type_t resource_type; + uint32_t partition_resource; //!< Resources a partition can use, which may be shared + uint32_t num_partitions_share_resource; //!< If it is greater than 1, then resource is shared. + uint64_t reserved[6]; +} amdsmi_accelerator_partition_resource_profile_t; + +/** + * @brief Accelerator Partition Profile Configurations + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint32_t num_profiles; //!< The length of profiles array + uint32_t num_resource_profiles; + amdsmi_accelerator_partition_resource_profile_t resource_profiles[AMDSMI_MAX_CP_PROFILE_RESOURCES]; + uint32_t default_profile_index; //!< The index of the default profile in the profiles array + amdsmi_accelerator_partition_profile_t profiles[AMDSMI_MAX_ACCELERATOR_PROFILE]; + uint64_t reserved[30]; +} amdsmi_accelerator_partition_profile_config_t; + +/** + * @brief Link type + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_LINK_TYPE_INTERNAL, + AMDSMI_LINK_TYPE_XGMI, + AMDSMI_LINK_TYPE_PCIE, + AMDSMI_LINK_TYPE_NOT_APPLICABLE, + AMDSMI_LINK_TYPE_UNKNOWN +} amdsmi_link_type_t; + +/** + * @brief Link Metrics + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t num_links; //!< number of links + struct _links { + amdsmi_bdf_t bdf; + uint32_t bit_rate; //!< current link speed in Gb/s + uint32_t max_bandwidth; //!< max bandwidth of the link in Gb/s + amdsmi_link_type_t link_type; //!< type of the link + uint64_t read; //!< total data received for each link in KB + uint64_t write; //!< total data transfered for each link in KB + uint64_t reserved[2]; + } links[AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK]; + uint64_t reserved[7]; +} amdsmi_link_metrics_t; + +/** + * @brief VRam Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + amdsmi_vram_type_t vram_type; + amdsmi_vram_vendor_type_t vram_vendor; + uint64_t vram_size; //!< vram size in MB + uint32_t vram_bit_width; //!< In bits + uint64_t vram_max_bandwidth; //!< The VRAM max bandwidth at current memory clock (GB/s) + uint64_t reserved[4]; +} amdsmi_vram_info_t; + +/** + * @brief Driver Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + char driver_version[AMDSMI_MAX_STRING_LENGTH]; + char driver_date[AMDSMI_MAX_STRING_LENGTH]; + char driver_name[AMDSMI_MAX_STRING_LENGTH]; +} amdsmi_driver_info_t; + +/** + * @brief Board Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + char model_number[AMDSMI_MAX_STRING_LENGTH]; + char product_serial[AMDSMI_MAX_STRING_LENGTH]; + char fru_id[AMDSMI_MAX_STRING_LENGTH]; + char product_name[AMDSMI_MAX_STRING_LENGTH]; + char manufacturer_name[AMDSMI_MAX_STRING_LENGTH]; + uint64_t reserved[32]; +} amdsmi_board_info_t; + +/** + * @brief Power Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint64_t socket_power; //!< Units in uW {@host}, Host only + uint32_t current_socket_power; //!< Units in W {@linux_bm}, Linux only + uint32_t average_socket_power; //!< Units in W {@linux_bm}, Linux only + uint32_t gfx_voltage; //!< GFX voltage measurement in mV {@linux_bm} or V {@host} + uint32_t soc_voltage; //!< SOC voltage measurement in mV {@linux_bm} or V {@host} + uint32_t mem_voltage; //!< MEM voltage measurement in mV {@linux_bm} or V {@host} + uint32_t power_limit; //!< The power limit in W {@linux_bm}, Linux only + uint32_t reserved[2]; +} amdsmi_power_info_t; + +/** + * @brief Clock Information + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint32_t clk; //!< In MHz + uint32_t min_clk; //!< In MHz + uint32_t max_clk; //!< In MHz + uint8_t clk_locked; //!< True/False + uint8_t clk_deep_sleep; //!< In MHz + uint32_t reserved[4]; +} amdsmi_clk_info_t; + +/** + * @brief Engine Usage + * amdsmi_engine_usage_t: + * This structure holds common + * GPU activity values seen in both BM or + * SRIOV + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + **/ +typedef struct { + uint32_t gfx_activity; //!< In % + uint32_t umc_activity; //!< In % + uint32_t mm_activity; //!< In % + uint32_t reserved[13]; +} amdsmi_engine_usage_t; + +/** + * @brief Process Handle + * + * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond + */ +typedef uint32_t amdsmi_process_handle_t; + +/** + * @brief Process Information + * + * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond + */ +typedef struct { + char name[AMDSMI_MAX_STRING_LENGTH]; + amdsmi_process_handle_t pid; + uint64_t mem; //!< In bytes + struct engine_usage_ { + uint64_t gfx; //!< In nano-secs + uint64_t enc; //!< In nano-secs + uint32_t reserved[12]; + } engine_usage; //!< time the process spends using these engines in ns + struct memory_usage_ { + uint64_t gtt_mem; //!< In MB + uint64_t cpu_mem; //!< In MB + uint64_t vram_mem; //!< In MB + uint32_t reserved[10]; + } memory_usage; //!< in bytes + char container_name[AMDSMI_MAX_STRING_LENGTH]; + uint32_t reserved[12]; +} amdsmi_proc_info_t; + +/** + * @brief IO Link P2P Capability + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint8_t is_iolink_coherent; //!< 1 = true, 0 = false, UINT8_MAX = Not defined + uint8_t is_iolink_atomics_32bit; //!< 1 = true, 0 = false, UINT8_MAX = Not defined + uint8_t is_iolink_atomics_64bit; //!< 1 = true, 0 = false, UINT8_MAX = Not defined + uint8_t is_iolink_dma; //!< 1 = true, 0 = false, UINT8_MAX = Not defined + uint8_t is_iolink_bi_directional; //!< 1 = true, 0 = false, UINT8_MAX = Not defined +} amdsmi_p2p_capability_t; + +//! Guaranteed maximum possible number of supported frequencies +#define AMDSMI_MAX_NUM_FREQUENCIES 33 + +//! Maximum possible value for fan speed. Should be used as the denominator +//! when determining fan speed percentage. +#define AMDSMI_MAX_FAN_SPEED 255 + +//! The number of points that make up a voltage-frequency curve definition +#define AMDSMI_NUM_VOLTAGE_CURVE_POINTS 3 + +/** + * @brief PowerPlay performance levels + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_DEV_PERF_LEVEL_AUTO = 0, //!< Performance level is "auto" + AMDSMI_DEV_PERF_LEVEL_FIRST = AMDSMI_DEV_PERF_LEVEL_AUTO, + AMDSMI_DEV_PERF_LEVEL_LOW, //!< Keep PowerPlay levels "low", regardless of workload + AMDSMI_DEV_PERF_LEVEL_HIGH, //!< Keep PowerPlay levels "high", regardless of workload + AMDSMI_DEV_PERF_LEVEL_MANUAL, //!< Only use values defined by manually + //!< setting the AMDSMI_CLK_TYPE_SYS speed + AMDSMI_DEV_PERF_LEVEL_STABLE_STD, //!< Stable power state with profiling clocks + AMDSMI_DEV_PERF_LEVEL_STABLE_PEAK, //!< Stable power state with peak clocks + AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK, //!< Stable power state with minimum memory clock + AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK, //!< Stable power state with minimum system clock + AMDSMI_DEV_PERF_LEVEL_DETERMINISM, //!< Performance determinism state + AMDSMI_DEV_PERF_LEVEL_LAST = AMDSMI_DEV_PERF_LEVEL_DETERMINISM, + AMDSMI_DEV_PERF_LEVEL_UNKNOWN = 0x100 //!< Unknown performance level +} amdsmi_dev_perf_level_t; + +/** + * @brief Handle to performance event counter + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef uintptr_t amdsmi_event_handle_t; + +/** + * @brief Event Groups + * Enum denoting an event group. The value of the enum is the + * base value for all the event enums in the group. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_EVNT_GRP_XGMI = 0, //!< Data Fabric (XGMI) related events + AMDSMI_EVNT_GRP_XGMI_DATA_OUT = 10, //!< XGMI Outbound data + AMDSMI_EVNT_GRP_INVALID = 0xFFFFFFFF +} amdsmi_event_group_t; + +/** + * @brief Event types + * Event type enum. Events belonging to a particular event group + * ::amdsmi_event_group_t should begin enumerating at the ::amdsmi_event_group_t + * value for that group. + * + * Data beats sent to neighbor 0; Each beat represents 32 bytes.

+ * + * XGMI throughput can be calculated by multiplying a BEATs event + * such as ::AMDSMI_EVNT_XGMI_0_BEATS_TX by 32 and dividing by + * the time for which event collection occurred, + * ::amdsmi_counter_value_t.time_running (which is in nanoseconds). To get + * bytes per second, multiply this value by 109.
+ *
+ * Throughput = BEATS/time_running * 109 (bytes/second)
+ * + * Events in the AMDSMI_EVNT_GRP_XGMI_DATA_OUT group measure + * the number of beats sent on an XGMI link. Each beat represents + * 32 bytes. AMDSMI_EVNT_XGMI_DATA_OUT_n represents the number of + * outbound beats (each representing 32 bytes) on link n.

+ * + * XGMI throughput can be calculated by multiplying a event + * such as ::AMDSMI_EVNT_XGMI_DATA_OUT_n by 32 and dividing by + * the time for which event collection occurred, + * ::amdsmi_counter_value_t.time_running (which is in nanoseconds). To get + * bytes per second, multiply this value by 109.
+ *
+ * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_EVNT_FIRST = AMDSMI_EVNT_GRP_XGMI, + + AMDSMI_EVNT_XGMI_FIRST = AMDSMI_EVNT_GRP_XGMI, + AMDSMI_EVNT_XGMI_0_NOP_TX = AMDSMI_EVNT_XGMI_FIRST, //!< NOPs sent to neighbor 0 + AMDSMI_EVNT_XGMI_0_REQUEST_TX, //!< Outgoing requests to neighbor 0 + AMDSMI_EVNT_XGMI_0_RESPONSE_TX, //!< Outgoing responses to neighbor 0 + AMDSMI_EVNT_XGMI_0_BEATS_TX, //!< Throughput = BEATS/time_running 10^9 bytes/sec + AMDSMI_EVNT_XGMI_1_NOP_TX, //!< NOPs sent to neighbor 1 + AMDSMI_EVNT_XGMI_1_REQUEST_TX, //!< Outgoing requests to neighbor 1 + AMDSMI_EVNT_XGMI_1_RESPONSE_TX, //!< Outgoing responses to neighbor 1 + AMDSMI_EVNT_XGMI_1_BEATS_TX, //!< Data beats sent to neighbor 1; Each beat represents 32 bytes + AMDSMI_EVNT_XGMI_LAST = AMDSMI_EVNT_XGMI_1_BEATS_TX, + AMDSMI_EVNT_XGMI_DATA_OUT_FIRST = AMDSMI_EVNT_GRP_XGMI_DATA_OUT, + AMDSMI_EVNT_XGMI_DATA_OUT_0 = AMDSMI_EVNT_XGMI_DATA_OUT_FIRST, + AMDSMI_EVNT_XGMI_DATA_OUT_1, //!< Outbound beats to neighbor 1 + AMDSMI_EVNT_XGMI_DATA_OUT_2, //!< Outbound beats to neighbor 2 + AMDSMI_EVNT_XGMI_DATA_OUT_3, //!< Outbound beats to neighbor 3 + AMDSMI_EVNT_XGMI_DATA_OUT_4, //!< Outbound beats to neighbor 4 + AMDSMI_EVNT_XGMI_DATA_OUT_5, //!< Outbound beats to neighbor 5 + AMDSMI_EVNT_XGMI_DATA_OUT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_5, + AMDSMI_EVNT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_LAST, +} amdsmi_event_type_t; + +/** + * @brief Event counter commands + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_CNTR_CMD_START = 0, //!< Start the counter + AMDSMI_CNTR_CMD_STOP, //!< Stop the counter; note that this should not + //!< be used before reading. +} amdsmi_counter_command_t; + +/** + * @brief Counter value + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint64_t value; //!< Counter value + uint64_t time_enabled; //!< Time that the counter was enabled in nanoseconds + uint64_t time_running; //!< Time that the counter was running in nanoseconds +} amdsmi_counter_value_t; + +/** + * @brief Event notification event types + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_EVT_NOTIF_NONE = 0, //!< Not used + AMDSMI_EVT_NOTIF_VMFAULT = 1, //!< VM page fault + AMDSMI_EVT_NOTIF_FIRST = AMDSMI_EVT_NOTIF_VMFAULT, + AMDSMI_EVT_NOTIF_THERMAL_THROTTLE = 2, + AMDSMI_EVT_NOTIF_GPU_PRE_RESET = 3, + AMDSMI_EVT_NOTIF_GPU_POST_RESET = 4, + AMDSMI_EVT_NOTIF_RING_HANG = 5, + + AMDSMI_EVT_NOTIF_LAST = AMDSMI_EVT_NOTIF_RING_HANG +} amdsmi_evt_notification_type_t; + +/** + * @brief Macro to generate event bitmask from event id + * + * @cond @tag{gpu_bm_linux} @endcond + */ +#define AMDSMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1)) + +/** + * @brief Maximum number of characters an event notification message will be + * matches kfd message max size + */ +#define MAX_EVENT_NOTIFICATION_MSG_SIZE 96 + +/** + * @brief Event notification data returned from event notification API + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + amdsmi_processor_handle processor_handle; //!< Handler of device that corresponds to the event + amdsmi_evt_notification_type_t event; //!< Event type + char message[MAX_EVENT_NOTIFICATION_MSG_SIZE]; //!< Event message +} amdsmi_evt_notification_data_t; + +/** + * @brief Temperature Metrics. This enum is used to identify various + * temperature metrics. Corresponding values will be in millidegress + * Celcius {@linux_bm} or Celcius {@host} + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef enum { + AMDSMI_TEMP_CURRENT = 0x0, //!< Temperature current value. + AMDSMI_TEMP_FIRST = AMDSMI_TEMP_CURRENT, + + AMDSMI_TEMP_MAX, //!< Temperature max value. + AMDSMI_TEMP_MIN, //!< Temperature min value. + AMDSMI_TEMP_MAX_HYST, //!< Temperature hysteresis value for max limit. + //!< (This is an absolute temperature, not a + //!< delta). + AMDSMI_TEMP_MIN_HYST, //!< Temperature hysteresis value for min limit. + //!< (This is an absolute temperature, + //!< not a delta). + AMDSMI_TEMP_CRITICAL, //!< Temperature critical max value, typically + //!< greater than corresponding temp_max values. + AMDSMI_TEMP_CRITICAL_HYST, //!< Temperature hysteresis value for critical + //!< limit. (This is an absolute temperature, + //!< not a delta). + AMDSMI_TEMP_EMERGENCY, //!< Temperature emergency max value, for chips + //!< supporting more than two upper temperature + //!< limits. Must be equal or greater than + //!< corresponding temp_crit values. + AMDSMI_TEMP_EMERGENCY_HYST, //!< Temperature hysteresis value for emergency + //!< limit. (This is an absolute temperature, + //!< not a delta). + AMDSMI_TEMP_CRIT_MIN, //!< Temperature critical min value, typically + //!< lower than corresponding temperature + //!< minimum values. + AMDSMI_TEMP_CRIT_MIN_HYST, //!< Temperature hysteresis value for critical + //!< minimum limit. (This is an absolute + //!< temperature, not a delta). + AMDSMI_TEMP_OFFSET, //!< Temperature offset which is added to the + //!< temperature reading by the chip. + AMDSMI_TEMP_LOWEST, //!< Historical minimum temperature. + AMDSMI_TEMP_HIGHEST, //!< Historical maximum temperature. + AMDSMI_TEMP_SHUTDOWN, //!< Shutdown temperature. + AMDSMI_TEMP_LAST = AMDSMI_TEMP_SHUTDOWN +} amdsmi_temperature_metric_t; + +/** + * @brief Voltage Metrics. This enum is used to identify various + * Volatge metrics. Corresponding values will be in millivolt. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_VOLT_CURRENT = 0x0, //!< Voltage current value. + + AMDSMI_VOLT_FIRST = AMDSMI_VOLT_CURRENT, + AMDSMI_VOLT_MAX, //!< Voltage max value. + AMDSMI_VOLT_MIN_CRIT, //!< Voltage critical min value. + AMDSMI_VOLT_MIN, //!< Voltage min value. + AMDSMI_VOLT_MAX_CRIT, //!< Voltage critical max value. + AMDSMI_VOLT_AVERAGE, //!< Average voltage. + AMDSMI_VOLT_LOWEST, //!< Historical minimum voltage. + AMDSMI_VOLT_HIGHEST, //!< Historical maximum voltage. + + AMDSMI_VOLT_LAST = AMDSMI_VOLT_HIGHEST +} amdsmi_voltage_metric_t; + +/** + * @brief This ennumeration is used to indicate which type of + * voltage reading should be obtained. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_VOLT_TYPE_FIRST = 0, + + AMDSMI_VOLT_TYPE_VDDGFX = AMDSMI_VOLT_TYPE_FIRST, //!< Vddgfx GPU voltage + AMDSMI_VOLT_TYPE_LAST = AMDSMI_VOLT_TYPE_VDDGFX, + AMDSMI_VOLT_TYPE_INVALID = 0xFFFFFFFF //!< Invalid type +} amdsmi_voltage_type_t; + +/** + * @brief Pre-set Profile Selections. These bitmasks can be AND'd with the + * ::amdsmi_power_profile_status_t.available_profiles returned from + * :: amdsmi_get_gpu_power_profile_presets to determine which power profiles + * are supported by the system. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_PWR_PROF_PRST_CUSTOM_MASK = 0x1, //!< Custom Power Profile + AMDSMI_PWR_PROF_PRST_VIDEO_MASK = 0x2, //!< Video Power Profile + AMDSMI_PWR_PROF_PRST_POWER_SAVING_MASK = 0x4, //!< Power Saving Profile + AMDSMI_PWR_PROF_PRST_COMPUTE_MASK = 0x8, //!< Compute Saving Profile + AMDSMI_PWR_PROF_PRST_VR_MASK = 0x10, //!< VR Power Profile + + //!< 3D Full Screen Power Profile + AMDSMI_PWR_PROF_PRST_3D_FULL_SCR_MASK = 0x20, + AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT = 0x40, //!< Default Boot Up Profile + AMDSMI_PWR_PROF_PRST_LAST = AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT, + + //!< Invalid power profile + AMDSMI_PWR_PROF_PRST_INVALID = 0xFFFFFFFFFFFFFFFF +} amdsmi_power_profile_preset_masks_t; + +/** + * @brief This enum is used to identify different GPU blocks. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_GPU_BLOCK_INVALID = 0x0000000000000000, //!< Used to indicate an invalid block + AMDSMI_GPU_BLOCK_FIRST = 0x0000000000000001, + + AMDSMI_GPU_BLOCK_UMC = AMDSMI_GPU_BLOCK_FIRST, //!< UMC block + AMDSMI_GPU_BLOCK_SDMA = 0x0000000000000002, //!< SDMA block + AMDSMI_GPU_BLOCK_GFX = 0x0000000000000004, //!< GFX block + AMDSMI_GPU_BLOCK_MMHUB = 0x0000000000000008, //!< MMHUB block + AMDSMI_GPU_BLOCK_ATHUB = 0x0000000000000010, //!< ATHUB block + AMDSMI_GPU_BLOCK_PCIE_BIF = 0x0000000000000020, //!< PCIE_BIF block + AMDSMI_GPU_BLOCK_HDP = 0x0000000000000040, //!< HDP block + AMDSMI_GPU_BLOCK_XGMI_WAFL = 0x0000000000000080, //!< XGMI block + AMDSMI_GPU_BLOCK_DF = 0x0000000000000100, //!< DF block + AMDSMI_GPU_BLOCK_SMN = 0x0000000000000200, //!< SMN block + AMDSMI_GPU_BLOCK_SEM = 0x0000000000000400, //!< SEM block + AMDSMI_GPU_BLOCK_MP0 = 0x0000000000000800, //!< MP0 block + AMDSMI_GPU_BLOCK_MP1 = 0x0000000000001000, //!< MP1 block + AMDSMI_GPU_BLOCK_FUSE = 0x0000000000002000, //!< Fuse block + AMDSMI_GPU_BLOCK_MCA = 0x0000000000004000, //!< MCA block + AMDSMI_GPU_BLOCK_VCN = 0x0000000000008000, //!< VCN block + AMDSMI_GPU_BLOCK_JPEG = 0x0000000000010000, //!< JPEG block + AMDSMI_GPU_BLOCK_IH = 0x0000000000020000, //!< IH block + AMDSMI_GPU_BLOCK_MPIO = 0x0000000000040000, //!< MPIO block + + AMDSMI_GPU_BLOCK_LAST = AMDSMI_GPU_BLOCK_MPIO, //!< The highest bit position for supported blocks + AMDSMI_GPU_BLOCK_RESERVED = 0x8000000000000000 +} amdsmi_gpu_block_t; + +/** + * @brief The clk limit type + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + CLK_LIMIT_MIN, //!< Clock values in MHz + CLK_LIMIT_MAX //!< Clock values in MHz +} amdsmi_clk_limit_type_t; + +/** + * @brief The current ECC state + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_RAS_ERR_STATE_NONE = 0, //!< No current errors + AMDSMI_RAS_ERR_STATE_DISABLED, //!< ECC is disabled + AMDSMI_RAS_ERR_STATE_PARITY, //!< ECC errors present, but type unknown + AMDSMI_RAS_ERR_STATE_SING_C, //!< Single correctable error + AMDSMI_RAS_ERR_STATE_MULT_UC, //!< Multiple uncorrectable errors + AMDSMI_RAS_ERR_STATE_POISON, //!< Firmware detected error and isolated + //!< page. Treat as uncorrectable. + AMDSMI_RAS_ERR_STATE_ENABLED, //!< ECC is enabled + + AMDSMI_RAS_ERR_STATE_LAST = AMDSMI_RAS_ERR_STATE_ENABLED, + AMDSMI_RAS_ERR_STATE_INVALID = 0xFFFFFFFF +} amdsmi_ras_err_state_t; + +/** + * @brief Types of memory + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_MEM_TYPE_FIRST = 0, + + AMDSMI_MEM_TYPE_VRAM = AMDSMI_MEM_TYPE_FIRST, //!< VRAM memory + AMDSMI_MEM_TYPE_VIS_VRAM, //!< VRAM memory that is visible + AMDSMI_MEM_TYPE_GTT, //!< GTT memory + + AMDSMI_MEM_TYPE_LAST = AMDSMI_MEM_TYPE_GTT +} amdsmi_memory_type_t; + +/** + * @brief The values of this enum are used as frequency identifiers. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_FREQ_IND_MIN = 0, //!< Index used for the minimum frequency value + AMDSMI_FREQ_IND_MAX = 1, //!< Index used for the maximum frequency value + AMDSMI_FREQ_IND_INVALID = 0xFFFFFFFF //!< An invalid frequency index +} amdsmi_freq_ind_t; + +/** + * @brief XGMI Status + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_XGMI_STATUS_NO_ERRORS = 0, + AMDSMI_XGMI_STATUS_ERROR, + AMDSMI_XGMI_STATUS_MULTIPLE_ERRORS, +} amdsmi_xgmi_status_t; + +/** + * @brief Bitfield used in various AMDSMI calls + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef uint64_t amdsmi_bit_field_t; + +/** + * @brief Reserved Memory Page States + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_MEM_PAGE_STATUS_RESERVED = 0, //!< Reserved. This gpu page is reserved and not available for use + AMDSMI_MEM_PAGE_STATUS_PENDING, //!< Pending. This gpu page is marked as bad and will be marked + //!< reserved at the next window. + AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE //!< Unable to reserve this page +} amdsmi_memory_page_status_t; + +/** + * @brief Types for IO Link + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_IOLINK_TYPE_UNDEFINED = 0, //!< unknown type. + AMDSMI_IOLINK_TYPE_PCIEXPRESS = 1, //!< PCI Express + AMDSMI_IOLINK_TYPE_XGMI = 2, //!< XGMI + AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES, //!< Number of IO Link types + AMDSMI_IOLINK_TYPE_SIZE = 0xFFFFFFFF //!< Max of IO Link types +} amdsmi_io_link_type_t; + +/** + * @brief The utilization counter type + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_UTILIZATION_COUNTER_FIRST = 0, + //! Corse grain activity counters + AMDSMI_COARSE_GRAIN_GFX_ACTIVITY = AMDSMI_UTILIZATION_COUNTER_FIRST, + AMDSMI_COARSE_GRAIN_MEM_ACTIVITY, //!< Memory Activity + AMDSMI_COARSE_DECODER_ACTIVITY, //!< Decoder Activity + //! Fine grain activity counters + AMDSMI_FINE_GRAIN_GFX_ACTIVITY = 100, + AMDSMI_FINE_GRAIN_MEM_ACTIVITY = 101, + AMDSMI_FINE_DECODER_ACTIVITY = 102, + AMDSMI_UTILIZATION_COUNTER_LAST = AMDSMI_FINE_DECODER_ACTIVITY +/** + * @brief The utilization counter type + * + * @cond @tag{gpu_bm_linux} @endcond + */ +} amdsmi_utilization_counter_type_t; + +#define AMDSMI_MAX_UTILIZATION_VALUES 4 //!< The max number of values per counter type + +/** + * @brief The utilization counter data + * + * The max number of values per counter type + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + amdsmi_utilization_counter_type_t type; //!< Utilization counter type + uint64_t value; //!< Coarse grain activity counter value (average) + uint64_t fine_value[AMDSMI_MAX_UTILIZATION_VALUES]; //!< Utilization counter value + uint16_t fine_value_count; +} amdsmi_utilization_counter_t; + +/** + * @brief Reserved Memory Page Record + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint64_t page_address; //!< Start address of page + uint64_t page_size; //!< Page size + amdsmi_memory_page_status_t status; //!< Page "reserved" status +} amdsmi_retired_page_record_t; + +/** + * @brief Number of possible power profiles that a system could support + * + * @cond @tag{gpu_bm_linux} @endcond + */ +#define AMDSMI_MAX_NUM_POWER_PROFILES (sizeof(amdsmi_bit_field_t) * 8) + +/** + * @brief This structure contains information about which power profiles are + * supported by the system for a given device, and which power profile is + * currently active. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + amdsmi_bit_field_t available_profiles; //64) + + //! Driver attached timestamp (in ns) + uint64_t system_clock_counter; //!< v1 mod. (moved from top of struct) + + /** + * @brief Average clocks (MHz) + */ + uint16_t average_gfxclk_frequency; + uint16_t average_socclk_frequency; + uint16_t average_uclk_frequency; + uint16_t average_vclk0_frequency; + uint16_t average_dclk0_frequency; + uint16_t average_vclk1_frequency; + uint16_t average_dclk1_frequency; + + /** + * @brief Current clocks (MHz) + */ + uint16_t current_gfxclk; + uint16_t current_socclk; + uint16_t current_uclk; + uint16_t current_vclk0; + uint16_t current_dclk0; + uint16_t current_vclk1; + uint16_t current_dclk1; + + uint32_t throttle_status; //!< Throttle status + + uint16_t current_fan_speed; //!< Fans (RPM) + + /** + * @brief Link width (number of lanes) /speed (0.1 GT/s) + */ + uint16_t pcie_link_width; //!< v1 mod.(8->16) + uint16_t pcie_link_speed; //!< in 0.1 GT/s; v1 mod. (8->16) + + /* + * v1.1 additions + */ + uint32_t gfx_activity_acc; //!< new in v1 + uint32_t mem_activity_acc; //!< new in v1 + uint16_t temperature_hbm[AMDSMI_NUM_HBM_INSTANCES]; //!< new in v1 + + /* + * v1.2 additions + */ + uint64_t firmware_timestamp; //!< PMFW attached timestamp (10ns resolution) + + /* + * v1.3 additions + */ + uint16_t voltage_soc; //!< In mV + uint16_t voltage_gfx; //!< In mV + uint16_t voltage_mem; //!< In mV + + uint64_t indep_throttle_status; //!< Throttle status + + /* + * v1.4 additions + */ + uint16_t current_socket_power; //!< In Watts + + uint16_t vcn_activity[AMDSMI_MAX_NUM_VCN]; //!< Utilization (%) + + uint32_t gfxclk_lock_status; //!< Clock Lock Status. Each bit corresponds to clock instance + + uint16_t xgmi_link_width; //!< XGMI bus width in GB/s + uint16_t xgmi_link_speed; //!< XGMI bus bitrate in GB/s + + uint64_t pcie_bandwidth_acc; //!< PCIE accumulated bandwidth (GB/sec) + + uint64_t pcie_bandwidth_inst; //!< PCIE instantaneous bandwidth (GB/sec) + + uint64_t pcie_l0_to_recov_count_acc; //!< PCIE L0 to recovery state transition accumulated count + + uint64_t pcie_replay_count_acc; //!< PCIE replay accumulated count + + uint64_t pcie_replay_rover_count_acc; //!< PCIE replay rollover accumulated count + + /** + * @brief XGMI accumulated data transfer size(KiloBytes) + */ + uint64_t xgmi_read_data_acc[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< In KB + uint64_t xgmi_write_data_acc[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< In KB + + /** + * @brief XGMI current data transfer size(KiloBytes) + */ + uint16_t current_gfxclks[AMDSMI_MAX_NUM_GFX_CLKS]; //!< In KB + uint16_t current_socclks[AMDSMI_MAX_NUM_CLKS]; //!< In KB + uint16_t current_vclk0s[AMDSMI_MAX_NUM_CLKS]; //!< In KB + uint16_t current_dclk0s[AMDSMI_MAX_NUM_CLKS]; //!< In KB + + /** + * @brief v1.5 additions + */ + uint16_t jpeg_activity[AMDSMI_MAX_NUM_JPEG]; //!< JPEG activity percent (encode/decode) + uint32_t pcie_nak_sent_count_acc; //!< PCIE NAK sent accumulated count + uint32_t pcie_nak_rcvd_count_acc; //!< PCIE NAK received accumulated count + + /** + * @brief v1.6 additions + */ + uint64_t accumulation_counter; //!< Accumulation cycle counter + + /** + * @brief Accumulated throttler residencies + */ + uint64_t prochot_residency_acc; + + /** + * @brief Accumulated throttler residencies + * + * Prochot (thermal) - PPT (power) + * Package Power Tracking (PPT) violation % (greater than 0% is a violation); + * aka PVIOL + * + * Ex. PVIOL/TVIOL calculations + * Where A and B are measurments recorded at prior points in time. + * Typically A is the earlier measured value and B is the latest measured value. + * + * PVIOL % = (PptResidencyAcc (B) - PptResidencyAcc (A)) * 100/ (AccumulationCounter (B) - AccumulationCounter (A)) + * TVIOL % = (SocketThmResidencyAcc (B) - SocketThmResidencyAcc (A)) * 100 / (AccumulationCounter (B) - AccumulationCounter (A)) + */ + uint64_t ppt_residency_acc; + + /** + * @brief Accumulated throttler residencies + * + * Socket (thermal) - + * Socket thermal violation % (greater than 0% is a violation); + * aka TVIOL + * + * Ex. PVIOL/TVIOL calculations + * Where A and B are measurments recorded at prior points in time. + * Typically A is the earlier measured value and B is the latest measured value. + * + * PVIOL % = (PptResidencyAcc (B) - PptResidencyAcc (A)) * 100/ (AccumulationCounter (B) - AccumulationCounter (A)) + * TVIOL % = (SocketThmResidencyAcc (B) - SocketThmResidencyAcc (A)) * 100 / (AccumulationCounter (B) - AccumulationCounter (A)) + */ + uint64_t socket_thm_residency_acc; + uint64_t vr_thm_residency_acc; + uint64_t hbm_thm_residency_acc; + + uint16_t num_partition; //!< Number of current partition + + amdsmi_gpu_xcp_metrics_t xcp_stats[AMDSMI_MAX_NUM_XCP]; //!< XCP (Graphic Cluster Partitions) metrics stats + + uint32_t pcie_lc_perf_other_end_recovery; //!< PCIE other end recovery counter + + /* + * @brief v1.7 additions + */ + uint64_t vram_max_bandwidth; //!< VRAM max bandwidth at max memory clock (GB/s) + + uint16_t xgmi_link_status[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< XGMI link status(up/down) +} amdsmi_gpu_metrics_t; + +/** + * @brief XGMI Link Status Type + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_XGMI_LINK_DOWN, //!< The XGMI Link is down + AMDSMI_XGMI_LINK_UP, //!< The XGMI Link is up + AMDSMI_XGMI_LINK_DISABLE, //!< The XGMI Link is disabled +} amdsmi_xgmi_link_status_type_t; + +/** + * @brief XGMI Link Status + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t total_links; //!< The total links in the status array + amdsmi_xgmi_link_status_type_t status[AMDSMI_MAX_NUM_XGMI_LINKS]; + uint64_t reserved[7]; +} amdsmi_xgmi_link_status_t; + +#define MAX_AMDSMI_NAME_LENGTH 64 + +/** + * @brief This structure holds the name value pairs + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + char name[MAX_AMDSMI_NAME_LENGTH]; //!< Name + uint64_t value; //!< Use uint64_t to make it universal +} amdsmi_name_value_t; + +/** + * @brief This register type for register table + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_REG_XGMI, + AMDSMI_REG_WAFL, + AMDSMI_REG_PCIE, + AMDSMI_REG_USR, + AMDSMI_REG_USR1, +} amdsmi_reg_type_t; + +/** + * @brief This structure holds ras feature + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t ras_eeprom_version; + // PARITY error(bit 0), Single Bit correctable (bit1), + // Double bit error detection (bit2), Poison (bit 3). + uint32_t ecc_correction_schema_flag; //!< ecc_correction_schema mask +} amdsmi_ras_feature_t; + +/** + * @brief This structure holds error counts. + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint64_t correctable_count; //!< Accumulated correctable errors + uint64_t uncorrectable_count; //!< Accumulated uncorrectable errors + uint64_t deferred_count; //!< Accumulated deferred errors + uint64_t reserved[5]; +} amdsmi_error_count_t; + +/** + * @brief This structure contains information specific to a process. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef struct { + uint32_t process_id; //!< Process ID + uint32_t pasid; //!< PASID (Not working in ROCm 6.4+, deprecating in 7.0) + uint64_t vram_usage; //!< VRAM usage in MB + uint64_t sdma_usage; //!< SDMA usage in microseconds + uint32_t cu_occupancy; //!< Compute Unit usage in percent +} amdsmi_process_info_t; + +/** + * @brief Topology Nearest + * + * @cond @tag{gpu_bm_linux} @tag{host} @endcond + */ +typedef struct { + uint32_t count; + amdsmi_processor_handle processor_list[AMDSMI_MAX_DEVICES]; + uint64_t reserved[15]; +} amdsmi_topology_nearest_t; + +/** + * @brief Variant placeholder + * + * Place-holder "variant" for functions that have don't have any variants, + * but do have monitors or sensors. + * + * @cond @tag{gpu_bm_linux} @endcond + */ +typedef enum { + AMDSMI_VIRTUALIZATION_MODE_UNKNOWN = 0, + AMDSMI_VIRTUALIZATION_MODE_BAREMETAL, + AMDSMI_VIRTUALIZATION_MODE_HOST, + AMDSMI_VIRTUALIZATION_MODE_GUEST, + AMDSMI_VIRTUALIZATION_MODE_PASSTHROUGH +} amdsmi_virtualization_mode_t; + +#define AMDSMI_DEFAULT_VARIANT 0xFFFFFFFFFFFFFFFF + +#ifdef ENABLE_ESMI_LIB + +/** + * @brief This structure holds SMU Firmware version information. + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint8_t debug; //!< SMU fw Debug version number + uint8_t minor; //!< SMU fw Minor version number + uint8_t major; //!< SMU fw Major version number + uint8_t unused; //!< reserved fields +} amdsmi_smu_fw_version_t; + +/** + * @brief DDR bandwidth metrics. + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint32_t max_bw; //!< DDR Maximum theoritical bandwidth in GB/s + uint32_t utilized_bw; //!< DDR bandwidth utilization in GB/s + uint32_t utilized_pct; //!< DDR bandwidth utilization in % of theoritical max +} amdsmi_ddr_bw_metrics_t; + +/** + * @brief temperature range and refresh rate metrics of a DIMM + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint8_t range : 3; //!< temp range[2:0](3 bit data) + uint8_t ref_rate : 1; //!< DDR refresh rate mode[3](1 bit data) +} amdsmi_temp_range_refresh_rate_t; + +/** + * @brief DIMM Power(mW), power update rate(ms) and dimm address + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint16_t power : 15; //!< Dimm power consumption[31:17](15 bits data) + uint16_t update_rate : 9; //!< Time since last update[16:8](9 bit data) + uint8_t dimm_addr; //!< Dimm address[7:0](8 bit data) +} amdsmi_dimm_power_t; + +/** + * @brief DIMM temperature(°C) and update rate(ms) and dimm address + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint16_t sensor : 11; //!< Dimm thermal sensor[31:21](11 bit data) + uint16_t update_rate : 9; //!< Time since last update[16:8](9 bit data) + uint8_t dimm_addr; //!< Dimm address[7:0](8 bit data) + float temp; //!< temperature in degree celcius +} amdsmi_dimm_thermal_t; + +/** + * @brief xGMI Bandwidth Encoding types + * + * @cond @tag{cpu_bm} @endcond + */ +typedef enum { + AGG_BW0 = 1, //!< Aggregate Bandwidth + RD_BW0 = 2, //!< Read Bandwidth + WR_BW0 = 4 //!< Write Bandwdith +} amdsmi_io_bw_encoding_t; + +/** + * @brief LINK name and Bandwidth type Information.It contains + * link names i.e valid link names are + * "P0", "P1", "P2", "P3", "P4", "G0", "G1", "G2", "G3", "G4" + * "G5", "G6", "G7" + * Valid bandwidth types 1(Aggregate_BW), 2 (Read BW), 4 (Write BW). + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + amdsmi_io_bw_encoding_t bw_type; //!< Bandwidth Type Information [1, 2, 4] + char *link_name; //!< Link name [P0, P1, G0, G1 etc] +} amdsmi_link_id_bw_type_t; + +/** + * @brief max and min LCLK DPM level on a given NBIO ID. + * Valid max and min DPM level values are 0 - 1. + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct { + uint8_t max_dpm_level; //!< Max LCLK DPM level[15:8](8 bit data) + uint8_t min_dpm_level; //!< Min LCLK DPM level[7:0](8 bit data) +} amdsmi_dpm_level_t; + +/** + * @brief HSMP Metrics table (supported only with hsmp proto version 6). + * + * @cond @tag{cpu_bm} @endcond + */ +typedef struct __attribute__((__packed__)) { + uint32_t accumulation_counter; + + /* TEMPERATURE */ + uint32_t max_socket_temperature; //!< In C + uint32_t max_vr_temperature; //!< In C + uint32_t max_hbm_temperature; //!< In C + uint64_t max_socket_temperature_acc; //!< In C + uint64_t max_vr_temperature_acc; //!< In C + uint64_t max_hbm_temperature_acc; //!< In C + + /* POWER */ + uint32_t socket_power_limit; //!< In W + uint32_t max_socket_power_limit; //!< In W + uint32_t socket_power; //!< In W + + /* ENERGY */ + uint64_t timestamp; + uint64_t socket_energy_acc; + uint64_t ccd_energy_acc; + uint64_t xcd_energy_acc; + uint64_t aid_energy_acc; + uint64_t hbm_energy_acc; + + /* FREQUENCY */ + uint32_t cclk_frequency_limit; //!< In MHz + uint32_t gfxclk_frequency_limit; //!< In MHz + uint32_t fclk_frequency; //!< In MHz + uint32_t uclk_frequency; //!< In MHz + uint32_t socclk_frequency[4]; //!< In MHz + uint32_t vclk_frequency[4]; //!< In MHz + uint32_t dclk_frequency[4]; //!< In MHz + uint32_t lclk_frequency[4]; //!< In MHz + uint64_t gfxclk_frequency_acc[8]; //!< In MHz + uint64_t cclk_frequency_acc[96]; //!< In MHz + + /* FREQUENCY RANGE */ + uint32_t max_cclk_frequency; //!< In MHz + uint32_t min_cclk_frequency; //!< In MHz + uint32_t max_gfxclk_frequency; //!< In MHz + uint32_t min_gfxclk_frequency; //!< In MHz + uint32_t fclk_frequency_table[4]; //!< In MHz + uint32_t uclk_frequency_table[4]; //!< In MHz + uint32_t socclk_frequency_table[4]; //!< In MHz + uint32_t vclk_frequency_table[4]; //!< In MHz + uint32_t dclk_frequency_table[4]; //!< In MHz + uint32_t lclk_frequency_table[4]; //!< In MHz + uint32_t max_lclk_dpm_range; //!< In MHz + uint32_t min_lclk_dpm_range; //!< In MHz + + /* XGMI */ + uint32_t xgmi_width; + uint32_t xgmi_bitrate; + uint64_t xgmi_read_bandwidth_acc[8]; + uint64_t xgmi_write_bandwidth_acc[8]; + + /* ACTIVITY */ + uint32_t socket_c0_residency; + uint32_t socket_gfx_busy; + uint32_t dram_bandwidth_utilization; + uint64_t socket_c0_residency_acc; + uint64_t socket_gfx_busy_acc; + uint64_t dram_bandwidth_acc; + uint32_t max_dram_bandwidth; + uint64_t dram_bandwidth_utilization_acc; + uint64_t pcie_bandwidth_acc[4]; + + /* THROTTLERS */ + uint32_t prochot_residency_acc; + uint32_t ppt_residency_acc; + uint32_t socket_thm_residency_acc; + uint32_t vr_thm_residency_acc; + uint32_t hbm_thm_residency_acc; + uint32_t spare; + + /* New items at the end to maintain driver compatibility */ + uint32_t gfxclk_frequency[8]; //!< In MHz +} amdsmi_hsmp_metrics_table_t; + +/** + * @brief hsmp frequency limit source names + * + * @cond @tag{cpu_bm} @endcond + */ +static char* const amdsmi_hsmp_freqlimit_src_names[] = { + "cHTC-Active", + "PROCHOT", + "TDC limit", + "PPT Limit", + "OPN Max", + "Reliability Limit", + "APML Agent", + "HSMP Agent" +}; + +#endif + +/*****************************************************************************/ +/** @defgroup tagInitShutdown Initialization and Shutdown + * @{ + */ + +/** + * @brief Initialize the AMD SMI library + * + * @ingroup tagInitShutdown + * + * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details This function initializes the library and the internal data structures, + * including those corresponding to sources of information that SMI provides. + * + * The @p init_flags decides which type of processor + * can be discovered by ::amdsmi_get_socket_handles(). AMDSMI_INIT_AMD_GPUS returns + * sockets with AMD GPUS, and AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS returns + * sockets with either AMD GPUS or CPUS. + * Currently, only AMDSMI_INIT_AMD_GPUS is supported. + * + * @param[in] init_flags Bit flags that tell SMI how to initialze. Values of + * ::amdsmi_init_flags_t may be OR'd together and passed through @p init_flags + * to modify how AMDSMI initializes. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_init(uint64_t init_flags); + +/** + * @brief Shutdown the AMD SMI library + * + * @ingroup tagInitShutdown + * + * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details This function shuts down the library and internal data structures and + * performs any necessary clean ups. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_shut_down(void); + +/** @} End tagInitShutdown */ + +/*****************************************************************************/ +/** @defgroup tagProcDiscovery Discovery Queries + * These functions provide discovery of the sockets. + * @{ + */ + +/** + * @brief Get the list of socket handles in the system. + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details Depends on what flag is passed to ::amdsmi_init. AMDSMI_INIT_AMD_GPUS + * returns sockets with AMD GPUS, and AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS returns + * sockets with either AMD GPUS or CPUS. + * The socket handles can be used to query the processor handles in that socket, which + * will be used in other APIs to get processor detail information or telemtries. + * + * @param[in,out] socket_count As input, the value passed + * through this parameter is the number of ::amdsmi_socket_handle that + * may be safely written to the memory pointed to by @p socket_handles. This is the + * limit on how many socket handles will be written to @p socket_handles. On return, @p + * socket_count will contain the number of socket handles written to @p socket_handles, + * or the number of socket handles that could have been written if enough memory had been + * provided. + * If @p socket_handles is NULL, as output, @p socket_count will contain + * how many sockets are available to read in the system. + * + * @param[in,out] socket_handles A pointer to a block of memory to which the + * ::amdsmi_socket_handle values will be written. This value may be NULL. + * In this case, this function can be used to query how many sockets are + * available to read in the system. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count, amdsmi_socket_handle* socket_handles); + +#ifdef ENABLE_ESMI_LIB + +/** + * @brief Get the list of cpu handles in the system. + * + * @ingroup tagProcDiscovery + * + * @platform{cpu_bm} + * + * @details Depends on AMDSMI_INIT_AMD_CPUS flag passed to ::amdsmi_init. + * The processor handles can be used in other APIs to get processor detail information. + * + * @param[in,out] cpu_count As input, the value passed + * through this parameter is the number of ::amdsmi_processor_handle that + * may be safely written to the memory pointed to by @p processor_handles. This is the + * limit on how many processor handles will be written to @p processor_handles. On return, @p + * socket_count will contain the number of processor handles written to @p processor_handles, + * or the number of processor handles that could have been written if enough memory had been + * provided. + * If @p processor_handles is NULL, as output, @p cpu_count will contain + * how many processors are available to read in the system. + * + * @param[in,out] processor_handles A pointer to a block of memory to which the + * ::amdsmi_processor_handle values will be written. This value may be NULL. + * In this case, this function can be used to query how many processors are + * available to read in the system. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_handles(uint32_t *cpu_count, amdsmi_processor_handle *processor_handles); + +#endif + +/** + * @brief Get information about the given socket + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details This function retrieves socket information. The @p socket_handle must + * be provided to retrieve the Socket ID. + * + * @param[in] socket_handle a socket handle + * + * @param[in] len the length of the caller provided buffer @p name. + * + * @param[out] name The id of the socket. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_socket_info(amdsmi_socket_handle socket_handle, size_t len, char *name); + +#ifdef ENABLE_ESMI_LIB + +/** + * @brief Get information about the given processor + * + * @ingroup tagProcDiscovery + * + * @platform{cpu_bm} + * + * @details This function retrieves processor information. The @p processor_handle must + * be provided to retrieve the processor ID. + * + * @param[in] processor_handle a processor handle + * + * @param[in] len the length of the caller provided buffer @p name. + * + * @param[out] name The id of the processor. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_info(amdsmi_processor_handle processor_handle, size_t len, char *name); + +/** + * @brief Get respective processor counts from the processor handles + * + * @ingroup tagProcDiscovery + * + * @platform{cpu_bm} + * + * @details This function retrieves respective processor counts information. + * The @p processor_handle must be provided to retrieve the processor ID. + * + * @param[in] processor_handles A pointer to a block of memory to which the + * ::amdsmi_processor_handle values will be written. This value may be NULL. + * + * @param[in] processor_count total processor count per socket + * + * @param[out] nr_cpusockets Total number of cpu sockets + * + * @param[out] nr_cpucores Total number of cpu cores + * + * @param[out] nr_gpus Total number of gpu devices + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_count_from_handles(amdsmi_processor_handle* processor_handles, + uint32_t* processor_count, uint32_t* nr_cpusockets, + uint32_t* nr_cpucores, uint32_t* nr_gpus); + +/** + * @brief Get processor list as per processor type + * + * @ingroup tagProcDiscovery + * + * @platform{cpu_bm} + * + * @details This function retrieves processor list as per the processor type + * from the total processor handles list. + * The @p list of processor_handles and processor type must be provided. + * + * @param[in] socket_handle socket handle + * + * @param[in] processor_type processor type + * + * @param[out] processor_handles list of processor handles as per processor type + * + * @param[out] processor_count processor count as per processor type selected + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_handles_by_type(amdsmi_socket_handle socket_handle, + processor_type_t processor_type, + amdsmi_processor_handle* processor_handles, + uint32_t* processor_count); +#endif + +/** + * @brief Get the list of the processor handles associated to a socket. + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details This function retrieves the processor handles of a socket. The + * @p socket_handle must be provided for the processor. A socket may have mulitple different + * type processors: An APU on a socket have both CPUs and GPUs. + * Currently, only AMD GPUs are supported. + * + * The number of processor count is returned through @p processor_count + * if @p processor_handles is NULL. Then the number of @p processor_count can be pass + * as input to retrieval all processors on the socket to @p processor_handles. + * + * @param[in] socket_handle The socket to query + * + * @param[in,out] processor_count As input, the value passed + * through this parameter is the number of ::amdsmi_processor_handle's that + * may be safely written to the memory pointed to by @p processor_handles. This is the + * limit on how many processor handles will be written to @p processor_handles. On return, @p + * processor_count will contain the number of processor handles written to @p processor_handles, + * or the number of processor handles that could have been written if enough memory had been + * provided. + * If @p processor_handles is NULL, as output, @p processor_count will contain + * how many processors are available to read for the socket. + * + * @param[in,out] processor_handles A pointer to a block of memory to which the + * ::amdsmi_processor_handle values will be written. This value may be NULL. + * In this case, this function can be used to query how many processors are + * available to read. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_handles(amdsmi_socket_handle socket_handle, + uint32_t *processor_count, + amdsmi_processor_handle* processor_handles); + + +#ifdef ENABLE_ESMI_LIB +/** + * @brief Get the list of the cpu core handles in a system. + * + * @ingroup tagProcDiscovery + * + * @platform{cpu_bm} + * + * @details This function retrieves the cpu core handles of a system. + * + * @param[in,out] cores_count As input, the value passed + * through this parameter is the number of ::amdsmi_processor_handle's that + * may be safely written to the memory pointed to by @p processor_handles. This is the + * limit on how many core handles will be written to @p processor_handles. On return, @p + * cores_count will contain the number of core processor handles written to @p processor_handles, + * or the number of core processor handles that could have been written if enough memory had been + * provided. + * If @p processor_handles is NULL, as output, @p processor_count will contain + * how many cpu cores are available to read in the system. + * + * @param[in,out] processor_handles A pointer to a block of memory to which the + * ::amdsmi_processor_handle values will be written. This value may be NULL. + * In this case, this function can be used to query how many processors are + * available to read. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail +*/ +amdsmi_status_t amdsmi_get_cpucore_handles(uint32_t *cores_count, + amdsmi_processor_handle* processor_handles); +#endif + +/** + * @brief Get the processor type of the processor_handle + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details This function retrieves the processor type. A processor_handle must be provided + * for that processor. + * + * @param[in] processor_handle a processor handle + * + * @param[out] processor_type a pointer to processor_type_t to which the processor type + * will be written. If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_type(amdsmi_processor_handle processor_handle, processor_type_t* processor_type); + +/** + * @brief Get processor handle with the matching bdf. + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} + * @platform{guest_mvf} @platform{guest_windows} + * + * @details Given bdf info @p bdf, this function will get + * the processor handle with the matching bdf. + * + * @param[in] bdf The bdf to match with corresponding processor handle. + * + * @param[out] processor_handle processor handle with the matching bdf. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_processor_handle_from_bdf(amdsmi_bdf_t bdf, amdsmi_processor_handle* processor_handle); + +/** + * @brief Returns BDF of the given device + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] bdf Reference to BDF. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_device_bdf(amdsmi_processor_handle processor_handle, amdsmi_bdf_t *bdf); + +/** + * @brief Returns the UUID of the device + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[in,out] uuid_length Length of the uuid string. As input, must be + * equal or greater than AMDSMI_GPU_UUID_SIZE and be allocated by + * user. As output it is the length of the uuid string. + * + * @param[out] uuid Pointer to string to store the UUID. Must be + * allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_device_uuid(amdsmi_processor_handle processor_handle, unsigned int *uuid_length, char *uuid); + +/** + * @brief Returns the Enumeration information for the device + * + * @ingroup tagProcDiscovery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @details This function returns Enumeration information of the corresponding + * processor_handle. It will return the render number, card number, + * HSA ID, HIP ID, and the HIP UUID. + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to Enumeration information structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_enumeration_info(amdsmi_processor_handle processor_handle, amdsmi_enumeration_info_t *info); + +/** @} End tagProcDiscovery */ + +/*****************************************************************************/ +/** @defgroup tagIdentQuery Identifier Queries + * These functions provide identification information. + * @{ + */ + +/** + * @brief Get the device id associated with the device with provided device + * handler. + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p id, + * this function will write the device id value to the uint64_t pointed to by + * @p id. This ID is an identification of the type of device, so calling this + * function for different devices will give the same value if they are kind + * of device. Consequently, this function should not be used to distinguish + * one device from another. amdsmi_get_gpu_bdf_id() should be used to get a + * unique identifier. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] id a pointer to uint64_t to which the device id will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_id(amdsmi_processor_handle processor_handle, uint16_t *id); + +/** + * @brief Get the device revision associated with the device + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a + * uint16_t @p revision to which the revision id will be written + * + * @param[in] processor_handle a processor handle + * + * @param[out] revision a pointer to uint16_t to which the device revision + * will be written + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_revision(amdsmi_processor_handle processor_handle, uint16_t *revision); + +/** + * @brief Get the name string for a give vendor ID + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a pointer to a caller provided + * char buffer @p name, and a length of this buffer @p len, this function will + * write the name of the vendor (up to @p len characters) buffer @p name. The + * @p id may be a device vendor or subsystem vendor ID. + * + * If the integer ID associated with the vendor is not found in one of the + * system files containing device name information (e.g. + * /usr/share/misc/pci.ids), then this function will return the hex vendor ID + * as a string. Updating the system name files can be accompplished with + * "sudo update-pciids". + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] name a pointer to a caller provided char buffer to which the + * name will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @param[in] len the length of the caller provided buffer @p name. + * + * @note ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not + * large enough to hold the entire name. In this case, only @p len bytes will + * be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_vendor_name(amdsmi_processor_handle processor_handle, char *name, + size_t len); + +/** + * @brief Get the vram vendor string of a device. + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details This function retrieves the vram vendor name given a processor handle + * @p processor_handle, a pointer to a caller provided + * char buffer @p brand, and a length of this buffer @p len, this function + * will write the vram vendor of the device (up to @p len characters) to the + * buffer @p brand. + * + * If the vram vendor for the device is not found as one of the values + * contained within amdsmi_get_gpu_vram_vendor, then this function will return + * the string 'unknown' instead of the vram vendor. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] brand a pointer to a caller provided char buffer to which the + * vram vendor will be written + * + * @param[in] len the length of the caller provided buffer @p brand. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_vram_vendor(amdsmi_processor_handle processor_handle, char *brand, uint32_t len); + +/** + * @brief Get the subsystem device id associated with the device with + * provided processor handle. + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p id, + * this function will write the subsystem device id value to the uint64_t + * pointed to by @p id. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] id a pointer to uint64_t to which the subsystem device id + * will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_subsystem_id(amdsmi_processor_handle processor_handle, uint16_t *id); + +/** + * @brief Get the name string for the device subsytem + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a pointer to a caller provided + * char buffer @p name, and a length of this buffer @p len, this function + * will write the name of the device subsystem (up to @p len characters) + * to the buffer @p name. + * + * If the integer ID associated with the sub-system is not found in one of the + * system files containing device name information (e.g. + * /usr/share/misc/pci.ids), then this function will return the hex sub-system + * ID as a string. Updating the system name files can be accompplished with + * "sudo update-pciids". + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] name a pointer to a caller provided char buffer to which the + * name will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + + * @param[in] len the length of the caller provided buffer @p name. + * + * @note ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not + * large enough to hold the entire name. In this case, only @p len bytes will + * be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_subsystem_name(amdsmi_processor_handle processor_handle, char *name, size_t len); + +/** + * @brief Returns the virtualization mode for the target device. + * + * @ingroup tagIdentQuery + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details The virtualization mode is detected and returned as an enum. + * + * @param[in] processor_handle The identifier of the given device. + * + * @param[in,out] mode Reference to the enum representing virtualization mode. + * - When zero, the virtualization mode is unknown + * - When non-zero, the virtualization mode is detected + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail. + */ +amdsmi_status_t +amdsmi_get_gpu_virtualization_mode(amdsmi_processor_handle processor_handle, + amdsmi_virtualization_mode_t* mode); + +/** @} End tagIdentQuery */ + +/*****************************************************************************/ +/** @defgroup tagPCIeQuery PCIe Queries + * These functions provide information about PCIe. + * @{ + */ + +/** + * @brief Get the list of possible PCIe bandwidths that are available. It is not + * supported on virtual machine guest + * + * @ingroup tagPCIeQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a to an + * ::amdsmi_pcie_bandwidth_t structure @p bandwidth, this function will fill in + * @p bandwidth with the possible T/s values and associated number of lanes, + * and indication of the current selection. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] bandwidth a pointer to a caller provided + * ::amdsmi_pcie_bandwidth_t structure to which the frequency information will be + * written + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_pci_bandwidth(amdsmi_processor_handle processor_handle, + amdsmi_pcie_bandwidth_t *bandwidth); + +/** + * @brief Get the unique PCI device identifier associated for a device + * + * @ingroup tagPCIeQuery + * + * @platform{gpu_bm_linux} + * + * @details Give a processor handle @p processor_handle and a pointer to a uint64_t @p + * bdfid, this function will write the Bus/Device/Function PCI identifier + * (BDFID) associated with device @p processor_handle to the value pointed to by + * @p bdfid. + * + * The format of @p bdfid will be as follows: + * + * BDFID = ((DOMAIN & 0xFFFFFFFF) << 32) | ((Partition & 0xF) << 28) + * | ((BUS & 0xFF) << 8) | ((DEVICE & 0x1F) <<3 ) + * | (FUNCTION & 0x7) + * + * | Name | Field | KFD property | KFD -> PCIe ID (uint64_t) | + * -------------- | ------- | ---------------- | ---------------------------- | + * | Domain | [63:32] | "domain" | (DOMAIN & 0xFFFFFFFF) << 32 | + * | Partition id | [31:28] | "location id" | (LOCATION & 0xF0000000) | + * | Reserved | [27:16] | "location id" | N/A | + * | Bus | [15: 8] | "location id" | (LOCATION & 0xFF00) | + * | Device | [ 7: 3] | "location id" | (LOCATION & 0xF8) | + * | Function | [ 2: 0] | "location id" | (LOCATION & 0x7) | + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] bdfid a pointer to uint64_t to which the device bdfid value + * will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_bdf_id(amdsmi_processor_handle processor_handle, uint64_t *bdfid); + +/** + * @brief Get the NUMA node associated with a device + * + * @ingroup tagPCIeQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a int32_t @p + * numa_node, this function will retrieve the NUMA node value associated + * with device @p processor_handle and store the value at location pointed to by + * @p numa_node. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] numa_node pointer to location where NUMA node value will + * be written. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_topo_numa_affinity(amdsmi_processor_handle processor_handle, int32_t *numa_node); + +/** + * @brief Get PCIe traffic information. It is not supported on virtual machine guest + * + * @ingroup tagPCIeQuery + * + * @platform{gpu_bm_linux} + * + * @details Give a processor handle @p processor_handle and pointers to a uint64_t's, @p + * sent, @p received and @p max_pkt_sz, this function will write the number + * of bytes sent and received in 1 second to @p sent and @p received, + * respectively. The maximum possible packet size will be written to + * @p max_pkt_sz. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] sent a pointer to uint64_t to which the number of bytes sent + * will be written in 1 second. If pointer is NULL, it will be ignored. + * + * @param[in,out] received a pointer to uint64_t to which the number of bytes + * received will be written. If pointer is NULL, it will be ignored. + * + * @param[in,out] max_pkt_sz a pointer to uint64_t to which the maximum packet + * size will be written. If pointer is NULL, it will be ignored. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_pci_throughput(amdsmi_processor_handle processor_handle, uint64_t *sent, + uint64_t *received, uint64_t *max_pkt_sz); + +/** + * @brief Get PCIe replay counter + * + * @ingroup tagPCIeQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint64_t @p + * counter, this function will write the sum of the number of NAK's received + * by the GPU and the NAK's generated by the GPU to memory pointed to by @p + * counter. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] counter a pointer to uint64_t to which the sum of the NAK's + * received and generated by the GPU is written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_pci_replay_counter(amdsmi_processor_handle processor_handle, uint64_t *counter); + +/** @} End tagPCIeQuery */ + +/*****************************************************************************/ +/** @defgroup tagPCIeControl PCIe Control + * These functions provide some control over PCIe. + * @{ + */ + +/** + * @brief Control the set of allowed PCIe bandwidths that can be used. It is not + * supported on virtual machine guest + * + * @ingroup tagPCIeControl + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a 64 bit bitmask @p bw_bitmask, + * this function will limit the set of allowable bandwidths. If a bit in @p + * bw_bitmask has a value of 1, then the frequency (as ordered in an + * ::amdsmi_frequencies_t returned by :: amdsmi_get_clk_freq()) corresponding + * to that bit index will be allowed. + * + * This function will change the performance level to + * ::AMDSMI_DEV_PERF_LEVEL_MANUAL in order to modify the set of allowable + * band_widths. Caller will need to set to ::AMDSMI_DEV_PERF_LEVEL_AUTO in order + * to get back to default state. + * + * All bits with indices greater than or equal to the value of the + * ::amdsmi_frequencies_t::num_supported field of ::amdsmi_pcie_bandwidth_t will be + * ignored. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] bw_bitmask A bitmask indicating the indices of the + * bandwidths that are to be enabled (1) and disabled (0). Only the lowest + * ::amdsmi_frequencies_t::num_supported (of ::amdsmi_pcie_bandwidth_t) bits of + * this mask are relevant. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_pci_bandwidth(amdsmi_processor_handle processor_handle, uint64_t bw_bitmask); + +/** @} End tagPCIeControl */ + +/*****************************************************************************/ +/** @defgroup tagPowerQuery Power Queries + * These functions provide information about power usage. + * @{ + */ + +/** + * @brief Get the energy accumulator counter of the processor with provided + * processor handle. It is not supported on virtual machine guest + * + * @ingroup tagPowerQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a pointer to a uint64_t + * @p energy_accumulator, and a pointer to a uint64_t @p timestamp, this function + * will write amount of energy consumed to the uint64_t pointed to by + * @p energy_accumulator, and the timestamp to the uint64_t pointed to by @p timestamp. + * This function accumulates all energy consumed. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] energy_accumulator a pointer to uint64_t to which the energy + * counter will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @param[in,out] counter_resolution resolution of the counter @p energy_accumulator in + * micro Joules + * + * @param[in,out] timestamp a pointer to uint64_t to which the timestamp + * will be written. Resolution: 1 ns. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_energy_count(amdsmi_processor_handle processor_handle, uint64_t *energy_accumulator, + float *counter_resolution, uint64_t *timestamp); + +/** @} End tagPowerQuery */ + +/*****************************************************************************/ +/** @defgroup tagPowerControl Power Control + * These functions provide ways to control power usage. + * @{ + */ + +/** + * @brief Set the maximum gpu power cap value. It is not supported on virtual + * machine guest + * + * @ingroup tagPowerControl + * + * @platform{host} @platform{gpu_bm_linux} + * + * @details Set the power cap to the provided value @p cap. + * @p cap must be between the minimum and maximum power cap values set by the + * system, which can be obtained from ::amdsmi_dev_power_cap_range_get. + * + * @param[in] processor_handle A processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a processor has more than one sensor, it could be greater than 0. + * + * @param[in] cap a uint64_t that indicates the desired power cap + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_power_cap(amdsmi_processor_handle processor_handle, + uint32_t sensor_ind, uint64_t cap); + +/** + * @brief Set the power performance profile. It is not supported on virtual machine guest + * + * @ingroup tagPowerControl + * + * @platform{gpu_bm_linux} + * + * @details This function will attempt to set the current profile to the provided + * profile, given a processor handle @p processor_handle and a @p profile. The provided + * profile must be one of the currently supported profiles, as indicated by a + * call to :: amdsmi_get_gpu_power_profile_presets() + * + * @param[in] processor_handle a processor handle + * + * @param[in] reserved Not currently used. Set to 0. + * + * @param[in] profile a ::amdsmi_power_profile_preset_masks_t that hold the mask + * of the desired new power profile + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_power_profile(amdsmi_processor_handle processor_handle, uint32_t reserved, + amdsmi_power_profile_preset_masks_t profile); + +/** + * @brief Get the socket power. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] ppower - Input buffer to return socket power + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_power(amdsmi_processor_handle processor_handle, + uint32_t *ppower); + +/** + * @brief Get the socket power cap. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] pcap - Input buffer to return power cap. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_power_cap(amdsmi_processor_handle processor_handle, + uint32_t *pcap); + +/** + * @brief Get the maximum power cap value for a given socket. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] pmax - Input buffer to return maximum power limit value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_power_cap_max(amdsmi_processor_handle processor_handle, + uint32_t *pmax); + +/** + * @brief Get the SVI based power telemetry for all rails. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] power - Input buffer to return svi based power value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_pwr_svi_telemetry_all_rails(amdsmi_processor_handle processor_handle, + uint32_t *power); + +/** + * @brief Set the power cap value for a given socket. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] pcap - Input power limit value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_socket_power_cap(amdsmi_processor_handle processor_handle, + uint32_t pcap); + +/** + * @brief Set the power efficiency profile policy. + * + * @ingroup tagPowerControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] mode - mode to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_pwr_efficiency_mode(amdsmi_processor_handle processor_handle, + uint8_t mode); + +/** @} End tagPowerControl */ + +/*****************************************************************************/ +/** @defgroup tagMemoryQuery Memory Queries + * These functions provide information about memory systems. + * @{ + */ + +/** + * @brief Get the total amount of memory that exists + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a type of memory @p mem_type, and + * a pointer to a uint64_t @p total, this function will write the total amount + * of @p mem_type memory that exists to the location pointed to by @p total. + * + * @param[in] processor_handle a processor handle + * + * @param[in] mem_type The type of memory for which the total amount will be + * found + * + * @param[in,out] total a pointer to uint64_t to which the total amount of + * memory will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_memory_total(amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, + uint64_t *total); + +/** + * @brief Get the current memory usage + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details This function will write the amount of @p mem_type memory that + * that is currently being used to the location pointed to by @p used. + * + * @param[in] processor_handle a processor handle + * + * @param[in] mem_type The type of memory for which the amount being used will + * be found + * + * @param[in,out] used a pointer to uint64_t to which the amount of memory + * currently being used will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_memory_usage(amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, + uint64_t *used); + +/** + * @brief Get the bad pages of a processor. It is not supported on virtual + * machine guest + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details This call will query the device @p processor_handle for the + * number of bad pages (written to @p num_pages address). The results are + * written to address held by the @p info pointer. + * The first call to this API returns the number of bad pages which + * should be used to allocate the buffer that should contain the bad page + * records. + * + * @param[in] processor_handle a processor handle + * + * @param[out] num_pages Number of bad page records. + * + * @param[out] info The results will be written to the + * amdsmi_retired_page_record_t pointer. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_bad_page_info(amdsmi_processor_handle processor_handle, uint32_t *num_pages, + amdsmi_retired_page_record_t *info); + +/** + * @brief Get the bad pages threshold of a processor. It is not supported on virtual + * machine guest + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details This call will query the device @p processor_handle for the + * threshold of bad pages (written to @p threshold address). + * + * @param[in] processor_handle a processor handle + * @param[out] threshold of bad page count. + * + * @note This function requires root access + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_bad_page_threshold(amdsmi_processor_handle processor_handle, uint32_t *threshold); + +/** + * @brief Verify the checksum of RAS EEPROM. It is not supported on virtual + * machine guest + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details This call will verify the device @p processor_handle for the + * checksum of RAS EEPROM. + * + * @param[in] processor_handle a processor handle + * + * @note This function requires root access + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success + * AMDSMI_STATUS_CORRUPTED_EEPROM on the device's EEPROM corruption + * others on fail + */ +amdsmi_status_t amdsmi_gpu_validate_ras_eeprom(amdsmi_processor_handle processor_handle); + +/** + * @brief Returns RAS features info. + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @param[in] processor_handle Device handle which to query + * + * @param[out] ras_feature RAS features that are currently enabled and supported on + * the processor. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_ras_feature_info(amdsmi_processor_handle processor_handle, amdsmi_ras_feature_t *ras_feature); + +/** + * @brief Returns if RAS features are enabled or disabled for given block. It is not + * supported on virtual machine guest + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, this function queries the + * state of RAS features for a specific block @p block. Result will be written + * to address held by pointer @p state. + * + * @param[in] processor_handle Device handle which to query + * + * @param[in] block Block which to query + * + * @param[in,out] state A pointer to amdsmi_ras_err_state_t to which the state + * of block will be written. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_ras_block_features_enabled(amdsmi_processor_handle processor_handle, + amdsmi_gpu_block_t block, + amdsmi_ras_err_state_t *state); + +/** + * @brief Get information about reserved ("retired") memory pages. It is not supported on + * virtual machine guest + * + * @ingroup tagMemoryQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, this function returns retired page + * information @p records corresponding to the device with the provided processor + * handle @p processor_handle. The number of retired page records is returned through @p + * num_pages. @p records may be NULL on input. In this case, the number of + * records available for retrieval will be returned through @p num_pages. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] num_pages a pointer to a uint32. As input, the value passed + * through this parameter is the number of ::amdsmi_retired_page_record_t's that + * may be safely written to the memory pointed to by @p records. This is the + * limit on how many records will be written to @p records. On return, @p + * num_pages will contain the number of records written to @p records, or the + * number of records that could have been written if enough memory had been + * provided. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @param[in,out] records A pointer to a block of memory to which the + * ::amdsmi_retired_page_record_t values will be written. This value may be NULL. + * In this case, this function can be used to query how many records are + * available to read. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_memory_reserved_pages(amdsmi_processor_handle processor_handle, + uint32_t *num_pages, + amdsmi_retired_page_record_t *records); + +/** @} End tagMemoryQuery */ + +/** @defgroup tagPhysicalStateQuery Physical State Queries + * These functions provide information about the physical characteristics of + * the device. + * @{ + */ + +/** + * @brief Get the fan speed in RPMs of the device with the specified processor + * handle and 0-based sensor index. It is not supported on virtual machine guest + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t + * @p speed, this function will write the current fan speed in RPMs to the + * uint32_t pointed to by @p speed + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @param[in,out] speed a pointer to uint32_t to which the speed will be + * written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_fan_rpms(amdsmi_processor_handle processor_handle, + uint32_t sensor_ind, int64_t *speed); + +/** + * @brief Get the fan speed for the specified device as a value relative to + * ::AMDSMI_MAX_FAN_SPEED. It is not supported on virtual machine guest + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t + * @p speed, this function will write the current fan speed (a value + * between 0 and the maximum fan speed, ::AMDSMI_MAX_FAN_SPEED) to the uint32_t + * pointed to by @p speed + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @param[in,out] speed a pointer to uint32_t to which the speed will be + * written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_fan_speed(amdsmi_processor_handle processor_handle, + uint32_t sensor_ind, int64_t *speed); + +/** + * @brief Get the max. fan speed of the device with provided processor handle. It is + * not supported on virtual machine guest + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t + * @p max_speed, this function will write the maximum fan speed possible to + * the uint32_t pointed to by @p max_speed + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @param[in,out] max_speed a pointer to uint32_t to which the maximum speed + * will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_fan_speed_max(amdsmi_processor_handle processor_handle, + uint32_t sensor_ind, uint64_t *max_speed); + +/** + * @brief Get the temperature metric value for the specified metric, from the + * specified temperature sensor on the specified device. It is not supported on + * virtual machine guest + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @details Given a processor handle @p processor_handle, a sensor type @p sensor_type, a + * ::amdsmi_temperature_metric_t @p metric and a pointer to an int64_t @p + * temperature, this function will write the value of the metric indicated by + * @p metric and @p sensor_type to the memory location @p temperature. + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_type part of device from which temperature should be + * obtained. This should come from the enum ::amdsmi_temperature_type_t + * + * @param[in] metric enum indicated which temperature value should be + * retrieved + * + * @param[in,out] temperature a pointer to int64_t to which the temperature + * will be written, in millidegrees Celcius. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_temp_metric(amdsmi_processor_handle processor_handle, + amdsmi_temperature_type_t sensor_type, + amdsmi_temperature_metric_t metric, int64_t *temperature); + +/** + * @brief Returns gpu cache info. + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[out] info reference to the cache info struct. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_cache_info(amdsmi_processor_handle processor_handle, amdsmi_gpu_cache_info_t *info); + +/** + * @brief Get the voltage metric value for the specified metric, from the + * specified voltage sensor on the specified device. It is not supported on + * virtual machine guest + * + * @ingroup tagPhysicalStateQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a sensor type @p sensor_type, a + * ::amdsmi_voltage_metric_t @p metric and a pointer to an int64_t @p + * voltage, this function will write the value of the metric indicated by + * @p metric and @p sensor_type to the memory location @p voltage. + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_type part of device from which voltage should be + * obtained. This should come from the enum ::amdsmi_voltage_type_t + * + * @param[in] metric enum indicated which voltage value should be + * retrieved + * + * @param[in,out] voltage a pointer to int64_t to which the voltage + * will be written, in millivolts. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_volt_metric(amdsmi_processor_handle processor_handle, + amdsmi_voltage_type_t sensor_type, + amdsmi_voltage_metric_t metric, int64_t *voltage); + +/** @} End tagPhysicalStateQuery */ + +/*****************************************************************************/ +/** @defgroup tagPhysicalStateControl Physical State Control + * These functions provide control over the physical state of a device. + * @{ + */ + +/** + * @brief Reset the fan to automatic driver control. It is not supported on virtual + * machine guest + * + * @ingroup tagPhysicalStateControl + * + * @platform{gpu_bm_linux} + * + * @details This function returns control of the fan to the system + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_reset_gpu_fan(amdsmi_processor_handle processor_handle, uint32_t sensor_ind); + +/** + * @brief Set the fan speed for the specified device with the provided speed, + * in RPMs. It is not supported on virtual machine guest + * + * @ingroup tagPhysicalStateControl + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a integer value indicating + * speed @p speed, this function will attempt to set the fan speed to @p speed. + * An error will be returned if the specified speed is outside the allowable + * range for the device. The maximum value is 255 and the minimum is 0. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @param[in] speed the speed to which the function will attempt to set the fan + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_fan_speed(amdsmi_processor_handle processor_handle, + uint32_t sensor_ind, uint64_t speed); + +/** @} End tagPhysicalStateControl */ + +/*****************************************************************************/ +/** @defgroup tagClkPowerPerfQuery Clock, Power and Performance Queries + * These functions provide information about clock frequencies and + * performance. + * @{ + */ + +/** + * @brief Get coarse grain utilization counter of the specified device + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, the array of the utilization counters, + * the size of the array, this function returns the coarse grain utilization counters + * and timestamp. + * The counter is the accumulated percentages. Every milliseconds the firmware calculates + * % busy count and then accumulates that value in the counter. This provides minimally + * invasive coarse grain GPU usage information. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] utilization_counters Multiple utilization counters can be retreived with a single + * call. The caller must allocate enough space to the utilization_counters array. The caller also + * needs to set valid AMDSMI_UTILIZATION_COUNTER_TYPE type for each element of the array. + * ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the provided arguments. + * + * If the function reutrns AMDSMI_STATUS_SUCCESS, the counter will be set in the value field of + * the amdsmi_utilization_counter_t. + * + * @param[in] count The size of @p utilization_counters array. + * + * @param[in,out] timestamp The timestamp when the counter is retrieved. Resolution: 1 ns. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_utilization_count(amdsmi_processor_handle processor_handle, + amdsmi_utilization_counter_t utilization_counters[], + uint32_t count, uint64_t *timestamp); + +/** + * @brief Get the performance level of the device. It is not supported on virtual + * machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details This function will write the ::amdsmi_dev_perf_level_t to the uint32_t + * pointed to by @p perf, for a given processor handle @p processor_handle and a pointer + * to a uint32_t @p perf. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] perf a pointer to ::amdsmi_dev_perf_level_t to which the + * performance level will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_perf_level(amdsmi_processor_handle processor_handle, + amdsmi_dev_perf_level_t *perf); + +/** + * @brief Enter performance determinism mode with provided processor handle. It is + * not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and @p clkvalue this function + * will enable performance determinism mode, which enforces a GFXCLK frequency + * SoftMax limit per GPU set by the user. This prevents the GFXCLK PLL from + * stretching when running the same workload on different GPUS, making + * performance variation minimal. This call will result in the performance + * level ::amdsmi_dev_perf_level_t of the device being + * ::AMDSMI_DEV_PERF_LEVEL_DETERMINISM. + * + * @param[in] processor_handle a processor handle + * + * @param[in] clkvalue Softmax value for GFXCLK in MHz. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_perf_determinism_mode(amdsmi_processor_handle processor_handle, uint64_t clkvalue); + +/** + * @brief Get the overdrive percent associated with the device with provided + * processor handle. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p od, + * this function will write the overdrive percentage to the uint32_t pointed + * to by @p od + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] od a pointer to uint32_t to which the overdrive percentage + * will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t *od); + +/** + * @brief Get the GPU memory clock overdrive percent associated with the device with provided + * processor handle. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p od, + * this function will write the overdrive percentage to the uint32_t pointed + * to by @p od + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] od a pointer to uint32_t to which the GPU memory clock overdrive percentage + * will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_mem_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t *od); + +/** + * @brief Get the list of possible system clock speeds of device for a + * specified clock type. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a clock type @p clk_type, and a + * pointer to a to an ::amdsmi_frequencies_t structure @p f, this function will + * fill in @p f with the possible clock speeds, and indication of the current + * clock speed selection. + * + * @param[in] processor_handle a processor handle + * + * @param[in] clk_type the type of clock for which the frequency is desired + * + * @param[in,out] f a pointer to a caller provided ::amdsmi_frequencies_t structure + * to which the frequency information will be written. Frequency values are in + * Hz. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_clk_freq(amdsmi_processor_handle processor_handle, + amdsmi_clk_type_t clk_type, amdsmi_frequencies_t *f); + +/** + * @brief Reset the gpu associated with the device with provided processor handle. It is not + * supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, this function will reset the GPU + * + * @param[in] processor_handle a processor handle + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_reset_gpu(amdsmi_processor_handle processor_handle); + +/** + * @brief This function retrieves the overdrive GFX & MCLK information. If valid + * for the GPU it will also populate the voltage curve data. It is not supported + * on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a + * ::amdsmi_od_volt_freq_data_t structure @p odv, this function will populate @p + * odv. See ::amdsmi_od_volt_freq_data_t for more details. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] odv a pointer to an ::amdsmi_od_volt_freq_data_t structure + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_od_volt_info(amdsmi_processor_handle processor_handle, + amdsmi_od_volt_freq_data_t *odv); + +/** + * @brief Get the 'metrics_header_info' from the GPU metrics associated with the device + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a amd_metrics_table_header_t in which + * the 'metrics_header_info' will stored + * + * @param[in] processor_handle Device which to query + * + * @param[inout] header_value a pointer to amd_metrics_table_header_t to which the device gpu + * metric unit will be stored + * + * @retval ::AMDSMI_STATUS_SUCCESS is returned upon successful call. + * ::AMDSMI_STATUS_NOT_SUPPORTED is returned in case the metric unit + * does not exist for the given device + * @return ::amdsmi_status_t + */ +amdsmi_status_t +amdsmi_get_gpu_metrics_header_info(amdsmi_processor_handle processor_handle, amd_metrics_table_header_t* header_value); + +/** + * @brief This function retrieves the gpu metrics information. It is not supported + * on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a + * ::amdsmi_gpu_metrics_t structure @p pgpu_metrics, this function will populate + * @p pgpu_metrics. See ::amdsmi_gpu_metrics_t for more details. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] pgpu_metrics a pointer to an ::amdsmi_gpu_metrics_t structure + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_metrics_info(amdsmi_processor_handle processor_handle, + amdsmi_gpu_metrics_t *pgpu_metrics); + +/** + * @brief Get the pm metrics table with provided device index. + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a device handle @p processor_handle, @p pm_metrics pointer, + * and @p num_of_metrics pointer, + * this function will write the pm metrics name value pair + * to the array at @p pm_metrics and the number of metrics retreived to @p num_of_metrics + * Note: the library allocated memory for pm_metrics, and user must call + * free(pm_metrics) to free it after use. + * + * @param[in] processor_handle a processor handle + * + * @param[inout] pm_metrics A pointerto an array to hold multiple PM metrics. On successs, + * the library will allocate memory of pm_metrics and write metrics to this array. + * The caller must free this memory after usage to avoid memory leak. + * + * @param[inout] num_of_metrics a pointer to uint32_t to which the number of + * metrics is allocated for pm_metrics array as input, and the number of metrics retreived + * as output. If this parameter is NULL, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function with the given arguments + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @return ::amdsmi_status_t + * + */ +amdsmi_status_t amdsmi_get_gpu_pm_metrics_info(amdsmi_processor_handle processor_handle, + amdsmi_name_value_t** pm_metrics, + uint32_t *num_of_metrics); + +/** + * @brief Get the register metrics table with provided device index and register type. + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a device handle @p processor_handle, @p reg_type, @p reg_metrics pointer, + * and @p num_of_metrics pointer, + * this function will write the register metrics name value pair + * to the array at @p reg_metrics and the number of metrics retreived to @p num_of_metrics + * Note: the library allocated memory for reg_metrics, and user must call + * free(reg_metrics) to free it after use. + * + * @param[in] processor_handle a processor handle + * + * @param[in] reg_type The register type + * + * @param[inout] reg_metrics A pointerto an array to hold multiple register metrics. On successs, + * the library will allocate memory of reg_metrics and write metrics to this array. + * The caller must free this memory after usage to avoid memory leak. + * + * @param[inout] num_of_metrics a pointer to uint32_t to which the number of + * metrics is allocated for reg_metrics array as input, and the number of metrics retreived + * as output. If this parameter is NULL, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function with the given arguments + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @return ::amdsmi_status_t + * + */ +amdsmi_status_t amdsmi_get_gpu_reg_table_info(amdsmi_processor_handle processor_handle, + amdsmi_reg_type_t reg_type, + amdsmi_name_value_t** reg_metrics, + uint32_t *num_of_metrics); + +/** + * @brief This function sets the clock range information. It is not supported on virtual + * machine guest + * + * @deprecated ::amdsmi_set_gpu_clk_limit() should be used, with an + * interface that set the min_value and then max_value. + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a minimum clock value @p minclkvalue, + * a maximum clock value @p maxclkvalue and a clock type @p clkType this function + * will set the sclk|mclk range + * + * @param[in] processor_handle a processor handle + * + * @param[in] minclkvalue value to apply to the clock range. Frequency values + * are in MHz. + * + * @param[in] maxclkvalue value to apply to the clock range. Frequency values + * are in MHz. + * + * @param[in] clkType AMDSMI_CLK_TYPE_SYS | AMDSMI_CLK_TYPE_MEM range type + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_clk_range(amdsmi_processor_handle processor_handle, + uint64_t minclkvalue, + uint64_t maxclkvalue, + amdsmi_clk_type_t clkType); + +/** + * @brief This function sets the clock sets the clock min/max level + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a clock type @p clk_type, + * a value @p clk_value needs to be set, and the @p level indicates min or max + * clock you want to set, this function the clock limit. + * + * @param[in] processor_handle a processor handle + * + * @param[in] clk_type AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_MEM and so on + * + * @param[in] limit_type AMDSMI_FREQ_IND_MIN|AMDSMI_FREQ_IND_MAX to set the + * minimum (0) or maximum (1) speed. + * + * @param[in] clk_value value to apply to. Frequency values are in MHz. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_clk_limit(amdsmi_processor_handle processor_handle, + amdsmi_clk_type_t clk_type, + amdsmi_clk_limit_type_t limit_type, + uint64_t clk_value); + +/** + * @brief Frees heap memory allocated by reg_table and pm_metrics + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Frees heap memory. + * + * @param[in] p a pointer to the memory to free. + * + * @return ::void + */ +void amdsmi_free_name_value_pairs(void *p); + +/** + * @brief This function sets the clock frequency information. It is not supported on + * virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a frequency level @p level, + * a clock value @p clkvalue and a clock type @p clkType this function + * will set the sclk|mclk range + * + * @param[in] processor_handle a processor handle + * + * @param[in] level AMDSMI_FREQ_IND_MIN|AMDSMI_FREQ_IND_MAX to set the + * minimum (0) or maximum (1) speed. + * + * @param[in] clkvalue value to apply to the clock range. Frequency values + * are in MHz. + * + * @param[in] clkType AMDSMI_CLK_TYPE_SYS | AMDSMI_CLK_TYPE_MEM range type + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_od_clk_info(amdsmi_processor_handle processor_handle, + amdsmi_freq_ind_t level, + uint64_t clkvalue, + amdsmi_clk_type_t clkType); + +/** + * @brief This function sets 1 of the 3 voltage curve points. It is not supported + * on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a voltage point @p vpoint + * and a voltage value @p voltvalue this function will set voltage curve point + * + * @param[in] processor_handle a processor handle + * + * @param[in] vpoint voltage point [0|1|2] on the voltage curve + * + * @param[in] clkvalue clock value component of voltage curve point. + * Frequency values are in MHz. + * + * @param[in] voltvalue voltage value component of voltage curve point. + * Voltage is in mV. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_od_volt_info(amdsmi_processor_handle processor_handle, + uint32_t vpoint, uint64_t clkvalue, uint64_t voltvalue); + +/** + * @brief This function will retrieve the current valid regions in the + * frequency/voltage space. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a pointer to an unsigned integer + * @p num_regions and a buffer of ::amdsmi_freq_volt_region_t structures, @p + * buffer, this function will populate @p buffer with the current + * frequency-volt space regions. The caller should assign @p buffer to memory + * that can be written to by this function. The caller should also + * indicate the number of ::amdsmi_freq_volt_region_t structures that can safely + * be written to @p buffer in @p num_regions. + * + * The number of regions to expect this function provide (@p num_regions) can + * be obtained by calling :: amdsmi_get_gpu_od_volt_info(). + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] num_regions As input, this is the number of + * ::amdsmi_freq_volt_region_t structures that can be written to @p buffer. As + * output, this is the number of ::amdsmi_freq_volt_region_t structures that were + * actually written. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @param[in,out] buffer a caller provided buffer to which + * ::amdsmi_freq_volt_region_t structures will be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_od_volt_curve_regions(amdsmi_processor_handle processor_handle, + uint32_t *num_regions, amdsmi_freq_volt_region_t *buffer); + +/** + * @brief Get the list of available preset power profiles and an indication of + * which profile is currently active. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a pointer to a + * ::amdsmi_power_profile_status_t @p status, this function will set the bits of + * the ::amdsmi_power_profile_status_t.available_profiles bit field of @p status to + * 1 if the profile corresponding to the respective + * ::amdsmi_power_profile_preset_masks_t profiles are enabled. For example, if both + * the VIDEO and VR power profiles are available selections, then + * ::AMDSMI_PWR_PROF_PRST_VIDEO_MASK AND'ed with + * ::amdsmi_power_profile_status_t.available_profiles will be non-zero as will + * ::AMDSMI_PWR_PROF_PRST_VR_MASK AND'ed with + * ::amdsmi_power_profile_status_t.available_profiles. Additionally, + * ::amdsmi_power_profile_status_t.current will be set to the + * ::amdsmi_power_profile_preset_masks_t of the profile that is currently active. + * + * @param[in] processor_handle a processor handle + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * + * @param[in,out] status a pointer to ::amdsmi_power_profile_status_t that will be + * populated by a call to this function + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_power_profile_presets(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, + amdsmi_power_profile_status_t *status); + +/** @} End tagClkPowerPerfQuery */ + +/*****************************************************************************/ +/** @defgroup tagClkPowerPerfControl Clock, Power and Performance Control + * These functions provide control over clock frequencies, power and + * performance. + * @{ + */ + +/** + * @brief Set the PowerPlay performance level associated with the device with + * provided processor handle with the provided value. It is not supported + * on virtual machine guest + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and an ::amdsmi_dev_perf_level_t @p + * perf_level, this function will set the PowerPlay performance level for the + * device to the value @p perf_lvl. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] perf_lvl the value to which the performance level should be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_perf_level(amdsmi_processor_handle processor_handle, amdsmi_dev_perf_level_t perf_lvl); + +/** + * @brief Set the overdrive percent associated with the device with provided + * processor handle with the provided value. See details for WARNING. It is + * not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and an overdrive level @p od, + * this function will set the overdrive level for the device to the value + * @p od. The overdrive level is an integer value between 0 and 20, inclusive, + * which represents the overdrive percentage; e.g., a value of 5 specifies + * an overclocking of 5%. + * + * The overdrive level is specific to the gpu system clock. + * + * The overdrive level is the percentage above the maximum Performance Level + * to which overclocking will be limited. The overclocking percentage does + * not apply to clock speeds other than the maximum. This percentage is + * limited to 20%. + * + * ******WARNING****** + * Operating your AMD GPU outside of official AMD specifications or outside of + * factory settings, including but not limited to the conducting of + * overclocking (including use of this overclocking software, even if such + * software has been directly or indirectly provided by AMD or otherwise + * affiliated in any way with AMD), may cause damage to your AMD GPU, system + * components and/or result in system failure, as well as cause other problems. + * DAMAGES CAUSED BY USE OF YOUR AMD GPU OUTSIDE OF OFFICIAL AMD SPECIFICATIONS + * OR OUTSIDE OF FACTORY SETTINGS ARE NOT COVERED UNDER ANY AMD PRODUCT + * WARRANTY AND MAY NOT BE COVERED BY YOUR BOARD OR SYSTEM MANUFACTURER'S + * WARRANTY. Please use this utility with caution. + * + * @param[in] processor_handle a processor handle + * + * @param[in] od the value to which the overdrive level should be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t od); + +/** + * @brief Control the set of allowed frequencies that can be used for the + * specified clock. It is not supported on virtual machine guest + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a clock type @p clk_type, and a + * 64 bit bitmask @p freq_bitmask, this function will limit the set of + * allowable frequencies. If a bit in @p freq_bitmask has a value of 1, then + * the frequency (as ordered in an ::amdsmi_frequencies_t returned by + * amdsmi_get_clk_freq()) corresponding to that bit index will be + * allowed. + * + * This function will change the performance level to + * ::AMDSMI_DEV_PERF_LEVEL_MANUAL in order to modify the set of allowable + * frequencies. Caller will need to set to ::AMDSMI_DEV_PERF_LEVEL_AUTO in order + * to get back to default state. + * + * All bits with indices greater than or equal to + * ::amdsmi_frequencies_t::num_supported will be ignored. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] clk_type the type of clock for which the set of frequencies + * will be modified + * + * @param[in] freq_bitmask A bitmask indicating the indices of the + * frequencies that are to be enabled (1) and disabled (0). Only the lowest + * ::amdsmi_frequencies_t.num_supported bits of this mask are relevant. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle, + amdsmi_clk_type_t clk_type, uint64_t freq_bitmask); + +/** + * @brief Get the soc pstate policy for the processor + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} + * + * @details Given a processor handle @p processor_handle, this function will write + * current soc pstate policy settings to @p policy. All the processors at the same socket + * will have the same policy. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] policy the soc pstate policy for this processor. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_soc_pstate(amdsmi_processor_handle processor_handle, + amdsmi_dpm_policy_t* policy); + +/** + * @brief Set the soc pstate policy for the processor + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} + * + * @details Given a processor handle @p processor_handle and a soc pstate policy @p policy_id, + * this function will set the soc pstate policy for this processor. All the processors at + * the same socket will be set to the same policy. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] policy_id the soc pstate policy id to set. The id is the id in + * amdsmi_dpm_policy_entry_t, which can be obtained by calling + * amdsmi_get_soc_pstate() + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_soc_pstate(amdsmi_processor_handle processor_handle, + uint32_t policy_id); + +/** + * @brief Get the xgmi per-link power down policy parameter for the processor + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} + * + * @details Given a processor handle @p processor_handle, this function will write + * current xgmi plpd settings to @p policy. All the processors at the same socket + * will have the same policy. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] xgmi_plpd the xgmi plpd for this processor. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_xgmi_plpd(amdsmi_processor_handle processor_handle, + amdsmi_dpm_policy_t* xgmi_plpd); + +/** + * @brief Set the xgmi per-link power down policy parameter for the processor + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} + * + * @details Given a processor handle @p processor_handle and a dpm policy @p policy_id, + * this function will set the xgmi plpd for this processor. All the processors at + * the same socket will be set to the same policy. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] policy_id the xgmi plpd id to set. The id is the id in + * amdsmi_dpm_policy_entry_t, which can be obtained by calling + * amdsmi_get_xgmi_plpd() + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_xgmi_plpd(amdsmi_processor_handle processor_handle, uint32_t policy_id); + +/** + * @brief Get the status of the Process Isolation + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} + * + * @details Given a processor handle @p processor_handle, this function will write + * current process isolation status to @p pisolate. The 0 is the process isolation + * disabled, and the 1 is the process isolation enabled. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] pisolate the process isolation status. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_process_isolation(amdsmi_processor_handle processor_handle, + uint32_t* pisolate); + +/** + * @brief Enable/disable the system Process Isolation + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} + * + * @details Given a processor handle @p processor_handle and a process isolation @p pisolate, + * flag, this function will set the Process Isolation for this processor. The 0 is the process + * isolation disabled, and the 1 is the process isolation enabled. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] pisolate the process isolation status to set. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_gpu_process_isolation(amdsmi_processor_handle processor_handle, + uint32_t pisolate); + +/** + * @brief Run the cleaner shader to clean up data in LDS/GPRs + * + * @ingroup tagClkPowerPerfControl + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} + * + * @details Given a processor handle @p processor_handle, + * this function will clean the local data of this processor. This can be called between + * user logins to prevent information leak. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_clean_gpu_local_data(amdsmi_processor_handle processor_handle); + +/** @} End tagClkPowerPerfControl */ + +/*****************************************************************************/ +/** @defgroup tagVersionQuery Version Queries + * These functions provide version information about various subsystems. + * @{ + */ + +/** + * @brief Get the build version information for the currently running build of AMDSMI + * + * @ingroup tagVersionQuery + * + * @platform{gpu_bm_linux} @platform{cpu_bm} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @details Get the major, minor, patch and build string for AMDSMI build + * currently in use through @p version + * + * @param[in,out] version A pointer to an ::amdsmi_version_t structure that will + * be updated with the version information upon return. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_lib_version(amdsmi_version_t *version); + +/** @} End tagVersionQuery */ + +/*****************************************************************************/ +/** @defgroup tagECCInfo ECC Information + * @{ + */ + +/** + * @brief Retrieve the error counts for a GPU block. It is not supported on virtual + * machine guest + * + * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel + * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) + * to learn how these error counts are accessed. + * + * @ingroup tagECCInfo + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details Given a processor handle @p processor_handle, an ::amdsmi_gpu_block_t @p block and a + * pointer to an ::amdsmi_error_count_t @p ec, this function will write the error + * count values for the GPU block indicated by @p block to memory pointed to by + * @p ec. + * + * @param[in] processor_handle a processor handle + * + * @param[in] block The block for which error counts should be retrieved + * + * @param[in,out] ec A pointer to an ::amdsmi_error_count_t to which the error + * counts should be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_ecc_count(amdsmi_processor_handle processor_handle, + amdsmi_gpu_block_t block, amdsmi_error_count_t *ec); + +/** + * @brief Retrieve the enabled ECC bit-mask. It is not supported on virtual machine guest + * + * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel + * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) + * to learn how these error counts are accessed. + * + * @ingroup tagECCInfo + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details Given a processor handle @p processor_handle, and a pointer to a uint64_t @p + * enabled_mask, this function will write bits to memory pointed to by + * @p enabled_blocks. Upon a successful call, @p enabled_blocks can then be + * AND'd with elements of the ::amdsmi_gpu_block_t ennumeration to determine if + * the corresponding block has ECC enabled. Note that whether a block has ECC + * enabled or not in the device is independent of whether there is kernel + * support for error counting for that block. Although a block may be enabled, + * but there may not be kernel support for reading error counters for that + * block. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] enabled_blocks A pointer to a uint64_t to which the enabled + * blocks bits will be written. + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_ecc_enabled(amdsmi_processor_handle processor_handle, + uint64_t *enabled_blocks); + +/** + * @brief Returns the total number of ECC errors (correctable, + * uncorrectable and deferred) in the given GPU. It is not supported on + * virtual machine guest + * + * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel + * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) + * to learn how these error counts are accessed. + * + * @ingroup tagECCInfo + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] ec Reference to ecc error count structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_total_ecc_count(amdsmi_processor_handle processor_handle, amdsmi_error_count_t *ec); + +/** @} End tagECCInfo */ + +/*****************************************************************************/ +/** @defgroup tagErrorQuery Error Queries + * These functions provide error information about AMDSMI calls as well as + * device errors. + * @{ + */ + +/** + * @brief Retrieve the ECC status for a GPU block. It is not supported on virtual machine + * guest + * + * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel + * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) + * to learn how these error counts are accessed. + * + * @ingroup tagErrorQuery + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, an ::amdsmi_gpu_block_t @p block and + * a pointer to an ::amdsmi_ras_err_state_t @p state, this function will write + * the current state for the GPU block indicated by @p block to memory pointed + * to by @p state. + * + * @param[in] processor_handle a processor handle + * + * @param[in] block The block for which error counts should be retrieved + * + * @param[in,out] state A pointer to an ::amdsmi_ras_err_state_t to which the + * ECC state should be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_ecc_status(amdsmi_processor_handle processor_handle, + amdsmi_gpu_block_t block, + amdsmi_ras_err_state_t *state); + +/** + * @brief Get a description of a provided AMDSMI error status + * + * @ingroup tagErrorQuery + * + * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} @platform{guest_mvf} + * + * @details Set the provided pointer to a const char *, @p status_string, to + * a string containing a description of the provided error code @p status. + * + * @param[in] status The error status for which a description is desired + * + * @param[in,out] status_string A pointer to a const char * which will be made + * to point to a description of the provided error code + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_status_code_to_string(amdsmi_status_t status, const char **status_string); + +/** @} End tagErrorQuery */ + +/*****************************************************************************/ +/** @defgroup tagPerfCounter Performance Counter Functions + * These functions are used to configure, query and control performance + * counting. + * + * These functions use the same mechanisms as the "perf" command line + * utility. They share the same underlying resources and have some similarities + * in how they are used. The events supported by this API should have + * corresponding perf events that can be seen with "perf stat ...". The events + * supported by perf can be seen with "perf list" + * + * The types of events available and the ability to count those + * events are dependent on which device is being targeted and if counters are + * still available for that device, respectively. + * ::amdsmi_gpu_counter_group_supported() can be used to see which event types + * (::amdsmi_event_group_t) are supported for a given device. Assuming a device + * supports a given event type, we can then check to see if there are counters + * available to count a specific event with + * :: amdsmi_get_gpu_available_counters(). Counters may be occupied by other + * perf based programs. + * + * Once it is determined that events are supported and counters are available, + * an event counter can be created/destroyed and controlled. + * + * ::amdsmi_gpu_create_counter() allocates internal data structures that will be + * used to used to control the event counter, and return a handle to this data + * structure. + * + * Once an event counter handle is obtained, the event counter can be + * controlled (i.e., started, stopped,...) with ::amdsmi_gpu_control_counter() by + * passing ::amdsmi_counter_command_t commands. ::AMDSMI_CNTR_CMD_START starts an + * event counter and ::AMDSMI_CNTR_CMD_STOP stops a counter. + * ::amdsmi_gpu_read_counter() reads an event counter. + * + * Once the counter is no longer needed, the resources it uses should be freed + * by calling ::amdsmi_gpu_destroy_counter(). + * + * Important Notes about Counter Values + * ==================================== + * - A running "absolute" counter is kept internally. For the discussion that + * follows, we will call the internal counter value at time @a t @a + * valt + * - Issuing ::AMDSMI_CNTR_CMD_START or calling ::amdsmi_gpu_read_counter(), causes + * AMDSMI (in kernel) to internally record the current absolute counter value + * - ::amdsmi_gpu_read_counter() returns the number of events that have occurred + * since the previously recorded value (ie, a relative value, + * @a valt - valt-1) from the issuing of + * ::AMDSMI_CNTR_CMD_START or calling ::amdsmi_gpu_read_counter() + * + * Example of event counting sequence: + * + * @latexonly + * \pagebreak + * @endlatexonly + * @code{.cpp} + * + * amdsmi_counter_value_t value; + * + * // Determine if AMDSMI_EVNT_GRP_XGMI is supported for device dv_ind + * ret = amdsmi_gpu_counter_group_supported(dv_ind, AMDSMI_EVNT_GRP_XGMI); + * + * // See if there are counters available for device dv_ind for event + * // AMDSMI_EVNT_GRP_XGMI + * + * ret = amdsmi_get_gpu_available_counters(dv_ind, + * AMDSMI_EVNT_GRP_XGMI, &counters_available); + * + * // Assuming AMDSMI_EVNT_GRP_XGMI is supported and there is at least 1 + * // counter available for AMDSMI_EVNT_GRP_XGMI on device dv_ind, create + * // an event object for an event of group AMDSMI_EVNT_GRP_XGMI (e.g., + * // AMDSMI_EVNT_XGMI_0_BEATS_TX) and get the handle + * // (amdsmi_event_handle_t). + * + * ret = amdsmi_gpu_create_counter(dv_ind, AMDSMI_EVNT_XGMI_0_BEATS_TX, + * &evnt_handle); + * + * // A program that generates the events of interest can be started + * // immediately before or after starting the counters. + * // Start counting: + * ret = amdsmi_gpu_control_counter(evnt_handle, AMDSMI_CNTR_CMD_START, NULL); + * + * // Wait... + * + * // Get the number of events since AMDSMI_CNTR_CMD_START was issued: + * ret = amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, &value) + * + * // Wait... + * + * // Get the number of events since amdsmi_gpu_read_counter() was last called: + * ret = amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, &value) + * + * // Stop counting. + * ret = amdsmi_gpu_control_counter(evnt_handle, AMDSMI_CNTR_CMD_STOP, NULL); + * + * // Release all resources (e.g., counter and memory resources) associated + * with evnt_handle. + * ret = amdsmi_gpu_destroy_counter(evnt_handle); + * @endcode + * @{ + */ + +/** + * @brief Tell if an event group is supported by a given device. It is not supported + * on virtual machine guest + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and an event group specifier @p + * group, tell if @p group type events are supported by the device associated + * with @p processor_handle + * + * @param[in] processor_handle processor handle of device being queried + * + * @param[in] group ::amdsmi_event_group_t identifier of group for which support + * is being queried + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_counter_group_supported(amdsmi_processor_handle processor_handle, amdsmi_event_group_t group); + +/** + * @brief Create a performance counter object + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Create a performance counter object of type @p type for the device + * with a processor handle of @p processor_handle, and write a handle to the object to the + * memory location pointed to by @p evnt_handle. @p evnt_handle can be used + * with other performance event operations. The handle should be deallocated + * with ::amdsmi_gpu_destroy_counter() when no longer needed. + * + * @note This function requires root access + * + * @param[in] processor_handle a processor handle + * + * @param[in] type the ::amdsmi_event_type_t of performance event to create + * + * @param[in,out] evnt_handle A pointer to a ::amdsmi_event_handle_t which will be + * associated with a newly allocated counter + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_create_counter(amdsmi_processor_handle processor_handle, amdsmi_event_type_t type, + amdsmi_event_handle_t *evnt_handle); + +/** + * @brief Deallocate a performance counter object + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Deallocate the performance counter object with the provided + * ::amdsmi_event_handle_t @p evnt_handle + * + * @note This function requires root access + * + * @param[in] evnt_handle handle to event object to be deallocated + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_destroy_counter(amdsmi_event_handle_t evnt_handle); + +/** + * @brief Issue performance counter control commands. It is not supported on + * virtual machine guest + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Issue a command @p cmd on the event counter associated with the + * provided handle @p evt_handle. + * + * @note This function requires root access + * + * @param[in] evt_handle an event handle + * + * @param[in] cmd The event counter command to be issued + * + * @param[in,out] cmd_args Currently not used. Should be set to NULL. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_control_counter(amdsmi_event_handle_t evt_handle, + amdsmi_counter_command_t cmd, void *cmd_args); + +/** + * @brief Read the current value of a performance counter + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Read the current counter value of the counter associated with the + * provided handle @p evt_handle and write the value to the location pointed + * to by @p value. + * + * @note This function requires root access + * + * @param[in] evt_handle an event handle + * + * @param[in,out] value pointer to memory of size of ::amdsmi_counter_value_t to + * which the counter value will be written + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, + amdsmi_counter_value_t *value); + +/** + * @brief Get the number of currently available counters. It is not supported on + * virtual machine guest + * + * @ingroup tagPerfCounter + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a performance event group @p grp, + * and a pointer to a uint32_t @p available, this function will write the + * number of @p grp type counters that are available on the device with handle + * @p processor_handle to the memory that @p available points to. + * + * @param[in] processor_handle a processor handle + * + * @param[in] grp an event device group + * + * @param[in,out] available A pointer to a uint32_t to which the number of + * available counters will be written + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_available_counters(amdsmi_processor_handle processor_handle, + amdsmi_event_group_t grp, uint32_t *available); + +/** @} End tagPerfCounter */ + +/*****************************************************************************/ +/** @defgroup tagSystemInfo System Information Functions + * These functions are used to configure, query and control performance + * counting. + * @{ + */ + +/** + * @brief Get process information about processes currently using GPU + * + * @ingroup tagSystemInfo + * + * @platform{gpu_bm_linux} + * + * @details Given a non-NULL pointer to an array @p procs of + * ::amdsmi_process_info_t's, of length *@p num_items, this function will write + * up to *@p num_items instances of ::amdsmi_process_info_t to the memory pointed + * to by @p procs. These instances contain information about each process + * utilizing a GPU. If @p procs is not NULL, @p num_items will be updated with + * the number of processes actually written. If @p procs is NULL, @p num_items + * will be updated with the number of processes for which there is current + * process information. Calling this function with @p procs being NULL is a way + * to determine how much memory should be allocated for when @p procs is not + * NULL. + * + * @param[in,out] procs a pointer to memory provided by the caller to which + * process information will be written. This may be NULL in which case only @p + * num_items will be updated with the number of processes found. + * + * @param[in,out] num_items A pointer to a uint32_t, which on input, should + * contain the amount of memory in ::amdsmi_process_info_t's which have been + * provided by the @p procs argument. On output, if @p procs is non-NULL, this + * will be updated with the number ::amdsmi_process_info_t structs actually + * written. If @p procs is NULL, this argument will be updated with the number + * processes for which there is information. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_compute_process_info(amdsmi_process_info_t *procs, uint32_t *num_items); + +/** + * @brief Get process information about a specific process + * + * @ingroup tagSystemInfo + * + * @platform{gpu_bm_linux} + * + * @details Given a pointer to an ::amdsmi_process_info_t @p proc and a process + * id + * @p pid, this function will write the process information for @p pid, if + * available, to the memory pointed to by @p proc. + * + * @param[in] pid The process ID for which process information is being + * requested + * + * @param[in,out] proc a pointer to a ::amdsmi_process_info_t to which + * process information for @p pid will be written if it is found. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_compute_process_info_by_pid(uint32_t pid, amdsmi_process_info_t *proc); + +/** + * @brief Get the device indices currently being used by a process + * + * @ingroup tagSystemInfo + * + * @platform{gpu_bm_linux} + * + * @details Given a process id @p pid, a non-NULL pointer to an array of + * uint32_t's @p processor_handleices of length *@p num_devices, this function will + * write up to @p num_devices device indices to the memory pointed to by + * @p processor_handleices. If @p processor_handleices is not NULL, @p num_devices will be + * updated with the number of gpu's currently being used by process @p pid. + * If @p processor_handleices is NULL, @p processor_handleices will be updated with the number of + * gpus currently being used by @p pid. Calling this function with @p + * dv_indices being NULL is a way to determine how much memory is required + * for when @p processor_handleices is not NULL. + * + * @param[in] pid The process id of the process for which the number of gpus + * currently being used is requested + * + * @param[in,out] dv_indices a pointer to memory provided by the caller to + * which indices of devices currently being used by the process will be + * written. This may be NULL in which case only @p num_devices will be + * updated with the number of devices being used. + * + * @param[in,out] num_devices A pointer to a uint32_t, which on input, should + * contain the amount of memory in uint32_t's which have been provided by the + * @p processor_handleices argument. On output, if @p processor_handleices is non-NULL, this will + * be updated with the number uint32_t's actually written. If @p processor_handleices is + * NULL, this argument will be updated with the number devices being used. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_compute_process_gpus(uint32_t pid, uint32_t *dv_indices, uint32_t *num_devices); + +/** @} End tagSystemInfo */ + +/*****************************************************************************/ +/** @defgroup tagXGMI XGMI Functions + * These functions are used to configure, query and control XGMI. + * @{ + */ + +/** + * @brief Retrieve the XGMI error status for a device. It is not supported on + * virtual machine guest + * + * @ingroup tagXGMI + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, and a pointer to an + * ::amdsmi_xgmi_status_t @p status, this function will write the current XGMI + * error state ::amdsmi_xgmi_status_t for the device @p processor_handle to the memory + * pointed to by @p status. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] status A pointer to an ::amdsmi_xgmi_status_t to which the + * XGMI error state should be written + * If this parameter is nullptr, this function will return + * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, + * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the + * provided arguments. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_gpu_xgmi_error_status(amdsmi_processor_handle processor_handle, amdsmi_xgmi_status_t *status); + +/** + * @brief Reset the XGMI error status for a device. It is not supported on virtual + * machine guest + * + * @ingroup tagXGMI + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, this function will reset the + * current XGMI error state ::amdsmi_xgmi_status_t for the device @p processor_handle to + * amdsmi_xgmi_status_t::AMDSMI_XGMI_STATUS_NO_ERRORS + * + * @param[in] processor_handle a processor handle + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_reset_gpu_xgmi_error(amdsmi_processor_handle processor_handle); + +/** + * @brief Returns XGMI information for the GPU. + * + * @ingroup tagXGMI + * + * @platform{gpu_bm_linux} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to xgmi information structure. Must be + * allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_xgmi_info(amdsmi_processor_handle processor_handle, amdsmi_xgmi_info_t *info); + +/** + * @brief Get the XGMI link status + * + * @ingroup tagXGMI + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details Given a processor handle @p processor_handle, this function + * will return the link status for each XGMI link connect to this processor. + * If the processor link type is not XGMI, it should return AMDSMI_STATUS_NOT_SUPPORTED. + * + * @param[in] processor_handle a processor handle + * + * @param[out] link_status The link status of the XGMI connect to this processor. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_xgmi_link_status(amdsmi_processor_handle processor_handle, + amdsmi_xgmi_link_status_t* link_status); + +/** @} End tagXGMI */ + +/*****************************************************************************/ +/** @defgroup tagHWTopology Hardware Topology Functions + * These functions are used to query Hardware topology. + * @{ + */ + +/** + * @brief Return link metric information + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[out] link_metrics reference to the link metrics struct. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_link_metrics(amdsmi_processor_handle processor_handle, + amdsmi_link_metrics_t *link_metrics); + +/** + * @brief Retrieve the NUMA CPU node number for a device + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, and a pointer to an + * uint32_t @p numa_node, this function will write the + * node number of NUMA CPU for the device @p processor_handle to the memory + * pointed to by @p numa_node. + * + * @param[in] processor_handle a processor handle + * + * @param[in,out] numa_node A pointer to an uint32_t to which the + * numa node number should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_topo_get_numa_node_number(amdsmi_processor_handle processor_handle, uint32_t *numa_node); + +/** + * @brief Retrieve the weight for a connection between 2 GPUs + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} + * + * @details Given a source processor handle @p processor_handle_src and + * a destination processor handle @p processor_handle_dst, and a pointer to an + * uint64_t @p weight, this function will write the + * weight for the connection between the device @p processor_handle_src + * and @p processor_handle_dst to the memory pointed to by @p weight. + * + * @param[in] processor_handle_src the source processor handle + * + * @param[in] processor_handle_dst the destination processor handle + * + * @param[in,out] weight A pointer to an uint64_t to which the + * weight for the connection should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_topo_get_link_weight(amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, + uint64_t *weight); + +/** + * @brief Retreive minimal and maximal io link bandwidth between 2 GPUs + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} + * + * @details Given a source processor handle @p processor_handle_src and + * a destination processor handle @p processor_handle_dst, pointer to an + * uint64_t @p min_bandwidth, and a pointer to uint64_t @p max_bandiwidth, + * this function will write theoretical minimal and maximal bandwidth limits. + * API works if src and dst are connected via xgmi and have 1 hop distance. + * + * @param[in] processor_handle_src the source processor handle + * + * @param[in] processor_handle_dst the destination processor handle + * + * @param[in,out] min_bandwidth A pointer to an uint64_t to which the + * minimal bandwidth for the connection should be written. + * + * @param[in,out] max_bandwidth A pointer to an uint64_t to which the + * maximal bandwidth for the connection should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_minmax_bandwidth_between_processors(amdsmi_processor_handle processor_handle_src, + amdsmi_processor_handle processor_handle_dst, + uint64_t *min_bandwidth, + uint64_t *max_bandwidth); + +/** + * @brief Retrieve the hops and the connection type between 2 GPUs + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} + * + * @details Given a source processor handle @p processor_handle_src and + * a destination processor handle @p processor_handle_dst, and a pointer to an + * uint64_t @p hops and a pointer to an AMDSMI_IO_LINK_TYPE @p type, + * this function will write the number of hops and the connection type + * between the device @p processor_handle_src and @p processor_handle_dst to the memory + * pointed to by @p hops and @p type. + * + * @param[in] processor_handle_src the source processor handle + * + * @param[in] processor_handle_dst the destination processor handle + * + * @param[in,out] hops A pointer to an uint64_t to which the + * hops for the connection should be written. + * + * @param[in,out] type A pointer to an ::AMDSMI_IO_LINK_TYPE to which the + * type for the connection should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_topo_get_link_type(amdsmi_processor_handle processor_handle_src, + amdsmi_processor_handle processor_handle_dst, + uint64_t *hops, amdsmi_io_link_type_t *type); + +/** + * @brief Retrieve the set of GPUs that are nearest to a given device + * at a specific interconnectivity level. + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} @platform{host} + * + * @details Once called topology_nearest_info will get populated with a list of + * all nearest devices for a given link_type. The list has a count of + * the number of devices found and their respective handles/identifiers. + * + * @param[in] processor_handle The identifier of the given device. + * + * @param[in] link_type The amdsmi_link_type_t level to search for nearest GPUs. + * + * @param[in,out] topology_nearest_info + * .count; + * - When zero, set to the number of matching GPUs such that .device_list can be malloc'd. + * - When non-zero, .device_list will be filled with count number of processor_handle. + * .device_list An array of processor_handle for GPUs found at level. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail. + */ +amdsmi_status_t +amdsmi_get_link_topology_nearest(amdsmi_processor_handle processor_handle, + amdsmi_link_type_t link_type, + amdsmi_topology_nearest_t* topology_nearest_info); + +/** + * @brief Return P2P availability status between 2 GPUs + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} + * + * @details Given a source processor handle @p processor_handle_src and + * a destination processor handle @p processor_handle_dst, and a pointer to a + * bool @p accessible, this function will write the P2P connection status + * between the device @p processor_handle_src and @p processor_handle_dst to the memory + * pointed to by @p accessible. + * + * @param[in] processor_handle_src the source processor handle + * + * @param[in] processor_handle_dst the destination processor handle + * + * @param[in,out] accessible A pointer to a bool to which the status for + * the P2P connection availablity should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_is_P2P_accessible(amdsmi_processor_handle processor_handle_src, + amdsmi_processor_handle processor_handle_dst, + bool *accessible); + +/** + * @brief Retrieve connection type and P2P capabilities between 2 GPUs + * + * @ingroup tagHWTopology + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @details Given a source processor handle @p processor_handle_src and + * a destination processor handle @p processor_handle_dst, a pointer to an amdsmi_io_link_type_t @p type, + * and a pointer to amdsmi_p2p_capability_t @p cap. This function will write the connection type, + * and io link capabilities between the device + * @p processor_handle_src and @p processor_handle_dst to the memory + * pointed to by @p cap and @p type. + * + * @param[in] processor_handle_src the source processor handle + * + * @param[in] processor_handle_dst the destination processor handle + * + * @param[in,out] type A pointer to an ::amdsmi_io_link_type_t to which the + * type for the connection should be written. + * + * @param[in,out] cap A pointer to an ::amdsmi_p2p_capability_t to which the + * io link capabilities should be written. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_topo_get_p2p_status(amdsmi_processor_handle processor_handle_src, + amdsmi_processor_handle processor_handle_dst, + amdsmi_io_link_type_t *type, amdsmi_p2p_capability_t *cap); + +/** @} End tagHWTopology */ + +/*****************************************************************************/ +/** @defgroup tagComputePartition Compute Partition Functions + * These functions are used to configure and query the device's + * compute parition setting. + * @{ + */ + +/** + * @brief Retrieves the current compute partitioning for a desired device + * + * @ingroup tagComputePartition + * + * @platform{gpu_bm_linux} + * + * @details + * Given a processor handle @p processor_handle and a string @p compute_partition , + * and uint32 @p len , this function will attempt to obtain the device's + * current compute partition setting string. Upon successful retreival, + * the obtained device's compute partition settings string shall be stored in + * the passed @p compute_partition char string variable. + * + * @param[in] processor_handle Device which to query + * + * @param[inout] compute_partition a pointer to a char string variable, + * which the device's current compute partition will be written to. + * + * @param[in] len the length of the caller provided buffer @p compute_partition, + * suggested length is 4 or greater. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @retval ::AMDSMI_STATUS_UNEXPECTED_DATA data provided to function is not valid + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function + * @retval ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not + * large enough to hold the entire compute partition value. In this case, + * only @p len bytes will be written. + * @return ::amdsmi_status_t + */ +amdsmi_status_t +amdsmi_get_gpu_compute_partition(amdsmi_processor_handle processor_handle, + char *compute_partition, uint32_t len); + +/** + * @brief Modifies a selected device's compute partition setting. + * + * @ingroup tagComputePartition + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle, a type of compute partition + * @p compute_partition, this function will attempt to update the selected + * device's compute partition setting. This function does not allow any concurrent operations. + * Device must be idle and have no workloads when performing set partition operations. + * + * @param[in] processor_handle Device which to query + * + * @param[in] compute_partition using enum ::amdsmi_compute_partition_type_t, + * define what the selected device's compute partition setting should be + * updated to. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_PERMISSION function requires root access + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @retval ::AMDSMI_STATUS_SETTING_UNAVAILABLE the provided setting is + * unavailable for current device + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function + * @return ::amdsmi_status_t + */ +amdsmi_status_t +amdsmi_set_gpu_compute_partition(amdsmi_processor_handle processor_handle, + amdsmi_compute_partition_type_t compute_partition); + +/** @} End tagComputePartition */ + +/*****************************************************************************/ +/** @defgroup tagMemoryPartition Memory Partition Functions + * These functions are used to query and set the device's current memory + * partition. + * @{ + */ + +/** + * @brief Retrieves the current memory partition for a desired device + * + * @ingroup tagMemoryPartition + * + * @platform{gpu_bm_linux} + * + * @details + * Given a processor handle @p processor_handle and a string @p memory_partition , + * and uint32 @p len , this function will attempt to obtain the device's + * memory partition string. Upon successful retreival, the obtained device's + * memory partition string shall be stored in the passed @p memory_partition + * char string variable. + * + * @param[in] processor_handle Device which to query + * + * @param[inout] memory_partition a pointer to a char string variable, + * which the device's memory partition will be written to. + * + * @param[in] len the length of the caller provided buffer @p memory_partition , + * suggested length is 5 or greater. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @retval ::AMDSMI_STATUS_UNEXPECTED_DATA data provided to function is not valid + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function + * @retval ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not + * large enough to hold the entire memory partition value. In this case, + * only @p len bytes will be written. + * @return ::amdsmi_status_t + */ +amdsmi_status_t +amdsmi_get_gpu_memory_partition(amdsmi_processor_handle processor_handle, char *memory_partition, uint32_t len); + +/** + * @brief Modifies a selected device's current memory partition setting. + * + * @ingroup tagMemoryPartition + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a type of memory partition + * @p memory_partition, this function will attempt to update the selected + * device's memory partition setting. This function does not allow any concurrent operations. + * Device must be idle and have no workloads when performing set partition operations. + * + * @param[in] processor_handle Device which to query + * + * @param[in] memory_partition using enum ::amdsmi_memory_partition_type_t, + * define what the selected device's current mode setting should be updated to. + * + * @retval ::AMDSMI_STATUS_SUCCESS call was successful + * @retval ::AMDSMI_STATUS_PERMISSION function requires root access + * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid + * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not + * support this function + * @retval ::AMDSMI_STATUS_AMDGPU_RESTART_ERR could not successfully restart + * the amdgpu driver + * @return ::amdsmi_status_t + * + */ +amdsmi_status_t +amdsmi_set_gpu_memory_partition(amdsmi_processor_handle processor_handle, + amdsmi_memory_partition_type_t memory_partition); +/** + * @brief Version 2.0: Returns current gpu memory partition capabilities + * + * @ingroup tagMemoryPartition + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle a processor handle + * + * @param[out] config reference to the memory partition config. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_memory_partition_config(amdsmi_processor_handle processor_handle, + amdsmi_memory_partition_config_t *config); + +/** + * @brief Version 2.0: Set accelerator partition setting based on profile_index + * from amdsmi_get_gpu_accelerator_partition_profile_config + * + * @ingroup tagMemoryPartition + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle A processor handle + * + * @param[in] mode Enum representing memory partitioning mode to set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_memory_partition_mode(amdsmi_processor_handle processor_handle, + amdsmi_memory_partition_type_t mode); + +/** @} End tagMemoryPartition */ + +/*****************************************************************************/ +/** @defgroup tagAcceleratorPartition Accelerator Partition Profile Functions + * These functions are used to configure and query the device's + * accelerator parition profile setting. + * @{ + */ + +/** + * @brief Version 2.0: Returns gpu accelerator partition caps as currently configured in the system + * User must use admin/sudo privledges to run this API, or API will not be able to + * read resources. + * + * @ingroup tagAcceleratorPartition + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle Device which to query + * + * @param[out] profile_config reference to the accelerator partition config. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_accelerator_partition_profile_config(amdsmi_processor_handle processor_handle, + amdsmi_accelerator_partition_profile_config_t *profile_config); + +/** + * @brief Version 2.0: Returns current gpu accelerator partition capabilities + * + * @ingroup tagAcceleratorPartition + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle Device which to query + * + * @param[out] profile reference to the accelerator partition profile. + * Must be allocated by user. + * + * @param[in,out] partition_id array of ids for current accelerator profile. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_accelerator_partition_profile(amdsmi_processor_handle processor_handle, + amdsmi_accelerator_partition_profile_t *profile, + uint32_t *partition_id); + +/** + * @brief Version 2.0: Set accelerator partition setting based on profile_index + * from amdsmi_get_gpu_accelerator_partition_profile_config + * + * @ingroup tagAcceleratorPartition + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle Device which to query + * + * @param[in] profile_index Represents index of a partition user wants to set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_accelerator_partition_profile(amdsmi_processor_handle processor_handle, + uint32_t profile_index); + +/** @} End tagAcceleratorPartition */ + +/*****************************************************************************/ +/** @defgroup tagEventNotification Event Notification Functions + * These functions are used to configure for and get asynchronous event + * notifications. + * @{ + */ + +/** + * @brief Prepare to collect event notifications for a GPU + * + * @ingroup tagEventNotification + * + * @platform{gpu_bm_linux} + * + * @details This function prepares to collect events for the GPU with device + * ID @p processor_handle, by initializing any required system parameters. This call + * may open files which will remain open until ::amdsmi_stop_gpu_event_notification() + * is called. + * + * @param[in] processor_handle a processor handle corresponding to the device on which to + * listen for events + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_init_gpu_event_notification(amdsmi_processor_handle processor_handle); + +/** + * @brief Specify which events to collect for a device + * + * @ingroup tagEventNotification + * + * @platform{gpu_bm_linux} + * + * @details Given a processor handle @p processor_handle and a @p mask consisting of + * elements of ::amdsmi_evt_notification_type_t OR'd together, this function + * will listen for the events specified in @p mask on the device + * corresponding to @p processor_handle. + * + * @param[in] processor_handle a processor handle corresponding to the device on which to + * listen for events + * + * @param[in] mask Bitmask generated by OR'ing 1 or more elements of + * ::amdsmi_evt_notification_type_t indicating which event types to listen for, + * where the amdsmi_evt_notification_type_t value indicates the bit field, with + * bit position starting from 1. + * For example, if the mask field is 0x0000000000000003, which means first bit, + * bit 1 (bit position start from 1) and bit 2 are set, which indicate interest + * in receiving AMDSMI_EVT_NOTIF_VMFAULT (which has a value of 1) and + * AMDSMI_EVT_NOTIF_THERMAL_THROTTLE event (which has a value of 2). + * + * @note ::AMDSMI_STATUS_INIT_ERROR is returned if + * ::amdsmi_init_gpu_event_notification() has not been called before a call to this + * function + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_set_gpu_event_notification_mask(amdsmi_processor_handle processor_handle, uint64_t mask); + +/** + * @brief Collect event notifications, waiting a specified amount of time + * + * @ingroup tagEventNotification + * + * @platform{gpu_bm_linux} + * + * @details Given a time period @p timeout_ms in milliseconds and a caller- + * provided buffer of ::amdsmi_evt_notification_data_t's @p data with a length + * (in ::amdsmi_evt_notification_data_t's, also specified by the caller) in the + * memory location pointed to by @p num_elem, this function will collect + * ::amdsmi_evt_notification_type_t events for up to @p timeout_ms milliseconds, + * and write up to *@p num_elem event items to @p data. Upon return @p num_elem + * is updated with the number of events that were actually written. If events + * are already present when this function is called, it will write the events + * to the buffer then poll for new events if there is still caller-provided + * buffer available to write any new events that would be found. + * + * This function requires prior calls to ::amdsmi_init_gpu_event_notification() and + * :: amdsmi_set_gpu_event_notification_mask(). This function polls for the + * occurrance of the events on the respective devices that were previously + * specified by :: amdsmi_set_gpu_event_notification_mask(). + * + * @param[in] timeout_ms number of milliseconds to wait for an event + * to occur + * + * @param[in,out] num_elem pointer to uint32_t, provided by the caller. On + * input, this value tells how many ::amdsmi_evt_notification_data_t elements + * are being provided by the caller with @p data. On output, the location + * pointed to by @p num_elem will contain the number of items written to + * the provided buffer. + * + * @param[out] data pointer to a caller-provided memory buffer of size + * @p num_elem ::amdsmi_evt_notification_data_t to which this function may safely + * write. If there are events found, up to @p num_elem event items will be + * written to @p data. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_event_notification(int timeout_ms, uint32_t *num_elem, amdsmi_evt_notification_data_t *data); + +/** + * @brief Close any file handles and free any resources used by event + * notification for a GPU + * + * @ingroup tagEventNotification + * + * @platform{gpu_bm_linux} + * + * @details Any resources used by event notification for the GPU with + * processor handle @p processor_handle will be free with this + * function. This includes freeing any memory and closing file handles. This + * should be called for every call to ::amdsmi_init_gpu_event_notification() + * + * @param[in] processor_handle The processor handle of the GPU for which event + * notification resources will be free + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_stop_gpu_event_notification(amdsmi_processor_handle processor_handle); + +/** @} End tagEventNotification */ + +/*****************************************************************************/ +/** @defgroup tagSoftwareVersion Software Version Information + * @{ + */ + +/** + * @brief Returns the driver version information + * + * @ingroup tagSoftwareVersion + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to driver information structure. Must be + * allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_driver_info(amdsmi_processor_handle processor_handle, amdsmi_driver_info_t *info); + +/** @} End tagSoftwareVersion */ + +/*****************************************************************************/ +/** @defgroup tagAsicBoardInfo ASIC & Board Static Information + * @{ + */ + +/** + * @brief Returns the ASIC information for the device + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @details This function returns ASIC information such as the product name, + * the vendor ID, the subvendor ID, the device ID, + * the revision ID and the serial number. + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to static asic information structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_asic_info(amdsmi_processor_handle processor_handle, amdsmi_asic_info_t *info); + + +/** + * @brief Returns the KFD (Kernel Fusion Driver) information for the device + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} + * + * @details This function returns KFD information populated into the amdsmi_kfd_info_t. + * This contains the kfd_id and node_id which allow for the ID and + * index of this device in the KFD. + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to kfd information structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_kfd_info(amdsmi_processor_handle processor_handle, amdsmi_kfd_info_t *info); + +/** + * @brief Returns vram info + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[out] info Reference to vram info structure + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_gpu_vram_info(amdsmi_processor_handle processor_handle, amdsmi_vram_info_t *info); + +/** + * @brief Returns the board part number and board information for the requested device + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to board info structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_board_info(amdsmi_processor_handle processor_handle, amdsmi_board_info_t *info); + +/** + * @brief Returns the power caps as currently configured in the system. + * Power in units of uW. It is not supported on virtual machine guest + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle Device which to query + * + * @param[in] sensor_ind A 0-based sensor index. Normally, this will be 0. + * If a device has more than one sensor, it could be greater than 0. + * @param[out] info Reference to power caps information structure. Must be + * allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_power_cap_info(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, + amdsmi_power_cap_info_t *info); + +/** + * @brief Returns the PCIe info for the GPU. + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to the PCIe information + * returned by the library. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_pcie_info(amdsmi_processor_handle processor_handle, amdsmi_pcie_info_t *info); + +/** + * @brief Returns the 'xcd_counter' from the GPU metrics associated with the device + * + * @ingroup tagAsicBoardInfo + * + * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_mvf} + * + * @param[in] processor_handle Device which to query + * + * @param[inout] xcd_count a pointer to uint16_t to which the device gpu + * metric unit will be stored. Must be allocated by user. + * + * @retval ::AMDSMI_STATUS_SUCCESS is returned upon successful call. + * ::AMDSMI_STATUS_NOT_SUPPORTED is returned in case the metric unit + * does not exist for the given device. + */ +amdsmi_status_t amdsmi_get_gpu_xcd_counter(amdsmi_processor_handle processor_handle, + uint16_t *xcd_count); + +/** @} End tagAsicBoardInfo */ + +/*****************************************************************************/ +/** @defgroup tagFWVbiosQuery Firmware & VBIOS queries + * @{ + */ + +/** + * @brief Returns the firmware versions running on the device. + * + * @ingroup tagFWVbiosQuery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to the fw info. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_fw_info(amdsmi_processor_handle processor_handle, amdsmi_fw_info_t *info); + +/** + * @brief Returns the static information for the vBIOS on the device. + * + * @ingroup tagFWVbiosQuery + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} + * @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to static vBIOS information. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_vbios_info(amdsmi_processor_handle processor_handle, amdsmi_vbios_info_t *info); + +/** @} End tagFWVbiosQuery */ + +/*****************************************************************************/ +/** @defgroup tagGPUMonitor GPU Monitoring + * @{ + */ + +/** + * @brief Returns the current usage of the GPU engines (GFX, MM and MEM). + * Each usage is reported as a percentage from 0-100%. It is not + * supported on virtual machine guest + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to the gpu engine usage structure. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_activity(amdsmi_processor_handle processor_handle, amdsmi_engine_usage_t *info); + +/** + * @brief Returns the current power and voltage of the GPU. + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @note amdsmi_power_info_t::socket_power metric can rarely spike above the socket power limit in some cases + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. + * If a processor has more than one sensor, it could be greater than 0. + * Parameter @p sensor_ind is unused on @platform{host}. + * + * @param[out] info Reference to the gpu power structure. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_power_info_v2(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, amdsmi_power_info_t *info); + +/** + * @brief Returns the current power and voltage of the GPU. + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @note amdsmi_power_info_t::socket_power metric can rarely spike above the socket power limit in some cases + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[out] info Reference to the gpu power structure. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_power_info(amdsmi_processor_handle processor_handle, amdsmi_power_info_t *info); + +/** + * @brief Returns is power management enabled + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle PF of a processor for which to query + * + * @param[out] enabled Reference to bool. Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_is_gpu_power_management_enabled(amdsmi_processor_handle processor_handle, bool *enabled); + +/** + * @brief Returns the measurements of the clocks in the GPU + * for the GFX and multimedia engines and Memory. This call + * reports the averages over 1s in MHz. It is not supported + * on virtual machine guest + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} + * + * @param[in] processor_handle Device which to query + * + * @param[in] clk_type Enum representing the clock type to query. + * + * @param[out] info Reference to the gpu clock structure. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_clock_info(amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, amdsmi_clk_info_t *info); + +/** + * @brief Returns the VRAM usage (both total and used memory) + * in MegaBytes. + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to vram information. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_gpu_vram_usage(amdsmi_processor_handle processor_handle, amdsmi_vram_usage_t *info); + +/** + * @brief Returns the violations for a processor + * + * Warning: API will be slow due to polling driver for 2 samples. Require + * a minimum wait of 100ms between the 2 samples in order to calculate. Otherwise + * users would need to use amdsmi_get_gpu_metrics_info for BM. See that API's struct + * for calculations. + * + * @ingroup tagGPUMonitor + * + * @platform{gpu_bm_linux} @platform{host} + * + * @param[in] processor_handle Device which to query + * + * @param[out] info Reference to all violation status details available. + * Must be allocated by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t +amdsmi_get_violation_status(amdsmi_processor_handle processor_handle, + amdsmi_violation_status_t *info); + +/** @} End tagGPUMonitor */ + +/*****************************************************************************/ +/** @defgroup tagProcessInfo Process information + * @{ + */ + +/** + * @brief Returns the list of process information running on a given GPU. + * If pdh.dll is not present on the system, this API returns + * AMDSMI_STATUS_NOT_SUPPORTED. + * + * @ingroup tagProcessInfo + * + * @platform{gpu_bm_linux} @platform{guest_windows} + * + * @warning IMPORTANT: To get valid return values, at least 1 second needs to pass + * from starting the program to the first call of this function, + * and before every following call of this function after that, to get correct values + * + * @note The user provides a buffer to store the list and the maximum + * number of processes that can be returned. If the user sets + * max_processes to 0, the current total number of processes will + * replace max_processes param. After that, the function needs to be + * called again, with updated max_processes, to successfully fill the + * process list, which was previously allocated with max_processes + * + * @note If the reserved size for processes is smaller than the number of + * actual processes running. The AMDSMI_STATUS_OUT_OF_RESOURCES is + * an indication the caller should handle the situation (resize). + * The max_processes is always changed to reflect the actual size of + * list of processes running, so the caller knows where it is at. + * + * @param[in] processor_handle Device which to query + * + * @param[in,out] max_processes Reference to the size of the list buffer in + * number of elements. Returns the return number of elements + * in list or the number of running processes if equal to 0, + * and if given value in param max_processes is less than + * number of processes currently running, + * AMDSMI_STATUS_OUT_OF_RESOURCES will be returned. + * + * For cases where max_process is not zero (0), it specifies the list's size limit. + * That is, the maximum size this list will be able to hold. After the list is built + * internally, as a return status, we will have AMDSMI_STATUS_OUT_OF_RESOURCES when + * the original size limit is smaller than the actual list of processes running. + * Hence, the caller is aware the list size needs to be resized, or + * AMDSMI_STATUS_SUCCESS otherwise. + * Holding a copy of max_process before it is passed in will be helpful for monitoring + * the allocations done upon each call since the max_process will permanently be changed + * to reflect the actual number of processes running. + * + * @param[out] list Reference to a user-provided buffer where the process + * list will be returned. This buffer must contain at least + * max_processes entries of type amd_proc_info_list_t. Must be allocated + * by user. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, + * | ::AMDSMI_STATUS_OUT_OF_RESOURCES, filled list buffer with data, but number of + * actual running processes is larger than the size provided. + */ +amdsmi_status_t +amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, uint32_t *max_processes, amdsmi_proc_info_t *list); + +/** @} End tagProcessInfo */ + +#ifdef ENABLE_ESMI_LIB + +/*****************************************************************************/ +/** @defgroup tagEnergyInfo Energy information (RAPL MSR) + * @{ + */ + +/** + * @brief Get the core energy for a given core. + * + * @ingroup tagEnergyInfo + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu core which to query + * + * @param[in,out] penergy - Input buffer to return the core energy + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_core_energy(amdsmi_processor_handle processor_handle, + uint64_t *penergy); + +/** + * @brief Get the socket energy for a given socket. + * + * @ingroup tagEnergyInfo + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] penergy - Input buffer to return the socket energy + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_energy(amdsmi_processor_handle processor_handle, + uint64_t *penergy); + +/** @} End tagEnergyInfo */ + +/*****************************************************************************/ +/** @defgroup tagHSMPSystemStats HSMP system statistics + * @{ + */ + +/** + * @brief Get Number of threads Per Core. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in,out] threads_per_core - Input buffer to return the Number of threads Per Core + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_threads_per_core(uint32_t *threads_per_core); + +/** + * @brief Get HSMP Driver Version. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * @param[in,out] amdsmi_hsmp_driver_ver - Input buffer to return the HSMP Driver version + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_hsmp_driver_version(amdsmi_processor_handle processor_handle, + amdsmi_hsmp_driver_version_t *amdsmi_hsmp_driver_ver); + +/** + * @brief Get SMU Firmware Version. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * @param[in,out] amdsmi_smu_fw - Input buffer to return the firmware version + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_smu_fw_version(amdsmi_processor_handle processor_handle, + amdsmi_smu_fw_version_t *amdsmi_smu_fw); + +/** + * @brief Get HSMP protocol Version. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * @param[in,out] proto_ver - Input buffer to return the protocol version + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_processor_handle processor_handle, + uint32_t *proto_ver); + +/** + * @brief Get normalized status of the processor's PROCHOT status. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] prochot - Input buffer to return the procohot status. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_prochot_status(amdsmi_processor_handle processor_handle, + uint32_t *prochot); + +/** + * @brief Get Data fabric clock and Memory clock in MHz. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] fclk - Input buffer to return fclk + * + * @param[in,out] mclk - Input buffer to return mclk + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_fclk_mclk(amdsmi_processor_handle processor_handle, + uint32_t *fclk, uint32_t *mclk); + +/** + * @brief Get core clock in MHz. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] cclk - Input buffer to return core clock + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_cclk_limit(amdsmi_processor_handle processor_handle, + uint32_t *cclk); + +/** + * @brief Get current active frequency limit of the socket. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] freq - Input buffer to return frequency value in MHz + * + * @param[in,out] src_type - Input buffer to return frequency source name + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_current_active_freq_limit(amdsmi_processor_handle processor_handle, + uint16_t *freq, char **src_type); + +/** + * @brief Get socket frequency range. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] fmax - Input buffer to return maximum frequency + * + * @param[in,out] fmin - Input buffer to return minimum frequency + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_freq_range(amdsmi_processor_handle processor_handle, + uint16_t *fmax, uint16_t *fmin); + +/** + * @brief Get socket frequency limit of the core. + * + * @ingroup tagHSMPSystemStats + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu core which to query + * + * @param[in,out] freq - Input buffer to return frequency. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_core_current_freq_limit(amdsmi_processor_handle processor_handle, + uint32_t *freq); + +/** @} tagHSMPSystemStats */ + +/*****************************************************************************/ +/** @defgroup tagPerfBoostControl Performance (Boost limit) Control + * @{ + */ + +/** + * @brief Get the core boost limit. + * + * @ingroup tagPerfBoostControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu core which to query + * + * @param[in,out] pboostlimit - Input buffer to fill the boostlimit value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_core_boostlimit(amdsmi_processor_handle processor_handle, + uint32_t *pboostlimit); + +/** + * @brief Get the socket c0 residency. + * + * @ingroup tagPerfBoostControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] pc0_residency - Input buffer to fill the c0 residency value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_c0_residency(amdsmi_processor_handle processor_handle, + uint32_t *pc0_residency); + +/** + * @brief Set the core boostlimit value. + * + * @ingroup tagPerfBoostControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu core which to query + * + * @param[in] boostlimit - boostlimit value to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_core_boostlimit(amdsmi_processor_handle processor_handle, + uint32_t boostlimit); + +/** + * @brief Set the socket boostlimit value. + * + * @ingroup tagPerfBoostControl + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] boostlimit - boostlimit value to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_socket_boostlimit(amdsmi_processor_handle processor_handle, + uint32_t boostlimit); + +/** @} tagPerfBoostControl */ + +/*****************************************************************************/ +/** @defgroup tagDDRBandwidthMonitor DDR bandwidth monitor + * @{ + */ + +/** + * @brief Get the DDR bandwidth data. + * + * @ingroup tagDDRBandwidthMonitor + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] ddr_bw - Input buffer to fill ddr bandwidth data + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_processor_handle processor_handle, + amdsmi_ddr_bw_metrics_t *ddr_bw); + +/** @} tagDDRBandwidthMonitor */ + +/*****************************************************************************/ +/** @defgroup tagTempQuery Temperature Query + * @{ + */ + +/** + * @brief Get socket temperature. + * + * @ingroup tagTempQuery + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] ptmon - Input buffer to fill temperature value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_temperature(amdsmi_processor_handle processor_handle, + uint32_t *ptmon); + +/** @} End tagTempQuery*/ + +/*****************************************************************************/ +/** @defgroup tagDimmStatistics Dimm statistics + * @{ + */ + +/** + * @brief Get DIMM temperature range and refresh rate. + * + * @ingroup tagDimmStatistics + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] dimm_addr - DIMM address + * + * @param[in,out] rate - Input buffer to fill temperature range and refresh rate value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(amdsmi_processor_handle processor_handle, + uint8_t dimm_addr, + amdsmi_temp_range_refresh_rate_t *rate); + +/** + * @brief Get DIMM power consumption. + * + * @ingroup tagDimmStatistics + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * @param[in] dimm_addr - DIMM address + * @param[in,out] dimm_pow - Input buffer to fill power consumption value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_dimm_power_consumption(amdsmi_processor_handle processor_handle, + uint8_t dimm_addr, + amdsmi_dimm_power_t *dimm_pow); + +/** + * @brief Get DIMM thermal sensor value. + * + * @ingroup tagDimmStatistics + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] dimm_addr - DIMM address + * + * @param[in,out] dimm_temp - Input buffer to fill temperature value + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_dimm_thermal_sensor(amdsmi_processor_handle processor_handle, + uint8_t dimm_addr, + amdsmi_dimm_thermal_t *dimm_temp); + +/** @} tagDimmStatistics */ + +/*****************************************************************************/ +/** @defgroup tagXGMIBandwidthCont xGMI bandwidth control + * @{ + */ + +/** + * @brief Set xgmi width. + * + * @ingroup tagXGMIBandwidthCont + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] min - Minimum xgmi width to be set + * + * @param[in] max - maximum xgmi width to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_xgmi_width(amdsmi_processor_handle processor_handle, + uint8_t min, uint8_t max); + +/** @} tagXGMIBandwidthCont*/ + +/*****************************************************************************/ +/** @defgroup tagGMI3WidthCont GMI3 width control + * @{ + */ + +/** + * @brief Set gmi3 link width range. + * + * @ingroup tagGMI3WidthCont + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] min_link_width - minimum link width to be set. + * + * @param[in] max_link_width - maximum link width to be set. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_gmi3_link_width_range(amdsmi_processor_handle processor_handle, + uint8_t min_link_width, uint8_t max_link_width); + +/** @} tagGMI3WidthCont */ + +/*****************************************************************************/ +/** @defgroup tagPstateSelect Pstate selection + * @{ + */ + +/** + * @brief Enable APB. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_cpu_apb_enable(amdsmi_processor_handle processor_handle); + +/** + * @brief Disable APB. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] pstate - pstate value to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_cpu_apb_disable(amdsmi_processor_handle processor_handle, uint8_t pstate); + +/** + * @brief Set NBIO lclk dpm level value. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] nbio_id - nbio index + * + * @param[in] min - minimum value to be set + * + * @param[in] max - maximum value to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_socket_lclk_dpm_level(amdsmi_processor_handle processor_handle, + uint8_t nbio_id, uint8_t min, uint8_t max); + +/** + * @brief Get NBIO LCLK dpm level. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] nbio_id - nbio index + * + * @param[in,out] nbio - Input buffer to fill lclk dpm level + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_socket_lclk_dpm_level(amdsmi_processor_handle processor_handle, + uint8_t nbio_id, amdsmi_dpm_level_t *nbio); + +/** + * @brief Set pcie link rate. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] rate_ctrl - rate control value to be set. + * + * @param[in,out] prev_mode - Input buffer to fill previous rate control value. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_pcie_link_rate(amdsmi_processor_handle processor_handle, + uint8_t rate_ctrl, uint8_t *prev_mode); + +/** + * @brief Set df pstate range. + * + * @ingroup tagPstateSelect + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] max_pstate - maximum pstate value to be set + * + * @param[in] min_pstate - minimum pstate value to be set + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_set_cpu_df_pstate_range(amdsmi_processor_handle processor_handle, + uint8_t max_pstate, uint8_t min_pstate); + +/** @} tagPstateSelect */ + +/*****************************************************************************/ +/** @defgroup tagBandwidthMon Bandwidth monitor + * @{ + */ + +/** + * @brief Get current input output bandwidth. + * + * @ingroup tagBandwidthMon + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] link - link id and bw type to which io bandwidth to be obtained + * + * @param[in,out] io_bw - Input buffer to fill bandwidth data + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_current_io_bandwidth(amdsmi_processor_handle processor_handle, + amdsmi_link_id_bw_type_t link, uint32_t *io_bw); + +/** + * @brief Get current input output bandwidth. + * + * @ingroup tagBandwidthMon + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in] link - link id and bw type to which xgmi bandwidth to be obtained + * + * @param[in,out] xgmi_bw - Input buffer to fill bandwidth data + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_processor_handle processor_handle, + amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw); + +/*****************************************************************************/ +/** @defgroup tagHSMPMetricsTable HSMP Metrics Table + * @{ + */ + +/** + * @brief Get HSMP metrics table version + * + * @ingroup tagHSMPMetricsTable + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] metrics_version input buffer to return the HSMP metrics table version. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_hsmp_metrics_table_version(amdsmi_processor_handle processor_handle, + uint32_t *metrics_version); + +/** + * @brief Get HSMP metrics table + * + * @ingroup tagHSMPMetricsTable + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] metrics_table input buffer to return the HSMP metrics table. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_hsmp_metrics_table(amdsmi_processor_handle processor_handle, + amdsmi_hsmp_metrics_table_t *metrics_table); + +/** @} tagHSMPMetricsTable */ + +/*****************************************************************************/ +/** @defgroup tagAuxillary Auxillary functions + * @{ + */ + +/** + * @brief Get first online core on socket. + * + * @ingroup tagAuxillary + * + * @platform{cpu_bm} + * + * @param[in] processor_handle Cpu socket which to query + * + * @param[in,out] pcore_ind - Input buffer to fill first online core on socket data + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_processor_handle processor_handle, + uint32_t *pcore_ind); + +/** + * @brief Get CPU family. + * + * @ingroup tagAuxillary + * + * @platform{cpu_bm} + * + * @param[in,out] cpu_family - Input buffer to return the cpu family + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_family(uint32_t *cpu_family); + +/** + * @brief Get CPU model. + * + * @ingroup tagAuxillary + * + * @platform{cpu_bm} + * + * @param[in,out] cpu_model - Input buffer to return the cpu model + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpu_model(uint32_t *cpu_model); + +/** + * @brief Get a description of provided AMDSMI error status for esmi errors. + * + * @ingroup tagAuxillary + * + * @platform{cpu_bm} + * + * @details Set the provided pointer to a const char *, @p status_string, to + * a string containing a description of the provided error code @p status. + * + * @param[in] status - The error status for which a description is desired. + * + * @param[in,out] status_string - A pointer to a const char * which will be made + * to point to a description of the provided error code + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_esmi_err_msg(amdsmi_status_t status, const char **status_string); + +#endif + +/** @} tagAuxillary */ + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // __AMDSMI_H__ From 37ce455a144ed5a8feb7afab24f25041468088d5 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 20:56:36 -0400 Subject: [PATCH 047/147] amd_smi: add virtualization and isolation metrics --- src/components/amd_smi/amds.c | 97 +++++++++++++++++++------ src/components/amd_smi/amds_accessors.c | 40 ++++++++-- src/components/amd_smi/amds_priv.h | 5 ++ 3 files changed, 112 insertions(+), 30 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index d0cd7ad77..a1f8fff6b 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -62,7 +62,9 @@ amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_process amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -// (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle,amdsmi_virtualization_mode_t *); +amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +amdsmi_status_t (*amdsmi_get_gpu_process_isolation_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_gpu_xcd_counter_p)(amdsmi_processor_handle, uint16_t *); amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); @@ -214,8 +216,9 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); - // amdsmi_get_gpu_virtualization_mode_p = - // sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_process_isolation_p = sym("amdsmi_get_gpu_process_isolation", NULL); + amdsmi_get_gpu_xcd_counter_p = sym("amdsmi_get_gpu_xcd_counter", NULL); amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); @@ -1501,27 +1504,29 @@ static int init_event_table(void) { htable_insert(htable, ev_bdf->name, ev_bdf); idx++; } - /* // GPU Virtualization Mode - if (amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == - AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), - "gpu_virtualization_mode:device=%d", d); snprintf(descr_buf, - sizeof(descr_buf), "Device %d GPU virtualization mode", d); native_event_t - *ev_vmode = &ntv_table.events[idx]; ev_vmode->id = idx; ev_vmode->name = - strdup(name_buf); ev_vmode->descr = strdup(descr_buf); ev_vmode->device = d; - ev_vmode->value = 0; - ev_vmode->mode = PAPI_MODE_READ; - ev_vmode->variant = 4; - ev_vmode->subvariant = 0; - ev_vmode->open_func = open_simple; - ev_vmode->close_func = close_simple; - ev_vmode->start_func = start_simple; - ev_vmode->stop_func = stop_simple; - ev_vmode->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_vmode->name, ev_vmode); - idx++; + amdsmi_virtualization_mode_t vmode; + if (amdsmi_get_gpu_virtualization_mode_p && + amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); + native_event_t *ev_vmode = &ntv_table.events[idx]; + ev_vmode->id = idx; + ev_vmode->name = strdup(name_buf); + ev_vmode->descr = strdup(descr_buf); + ev_vmode->device = d; + ev_vmode->value = 0; + ev_vmode->mode = PAPI_MODE_READ; + ev_vmode->variant = 4; + ev_vmode->subvariant = 0; + ev_vmode->open_func = open_simple; + ev_vmode->close_func = close_simple; + ev_vmode->start_func = start_simple; + ev_vmode->stop_func = stop_simple; + ev_vmode->access_func = access_amdsmi_gpu_info; + htable_insert(htable, ev_vmode->name, ev_vmode); + idx++; } - */ // GPU NUMA Node if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); @@ -1543,6 +1548,54 @@ static int init_event_table(void) { htable_insert(htable, ev_numa->name, ev_numa); idx++; } + + if (amdsmi_get_gpu_process_isolation_p) { + uint32_t pis = 0; + if (amdsmi_get_gpu_process_isolation_p(device_handles[d], &pis) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "process_isolation:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d process isolation status", d); + native_event_t *ev_iso = &ntv_table.events[idx]; + ev_iso->id = idx; + ev_iso->name = strdup(name_buf); + ev_iso->descr = strdup(descr_buf); + ev_iso->device = d; + ev_iso->value = 0; + ev_iso->mode = PAPI_MODE_READ; + ev_iso->variant = 0; + ev_iso->subvariant = 0; + ev_iso->open_func = open_simple; + ev_iso->close_func = close_simple; + ev_iso->start_func = start_simple; + ev_iso->stop_func = stop_simple; + ev_iso->access_func = access_amdsmi_process_isolation; + htable_insert(htable, ev_iso->name, ev_iso); + idx++; + } + } + + if (amdsmi_get_gpu_xcd_counter_p) { + uint16_t xcd = 0; + if (amdsmi_get_gpu_xcd_counter_p(device_handles[d], &xcd) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "xcd_counter:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XCD counter", d); + native_event_t *ev_xcd = &ntv_table.events[idx]; + ev_xcd->id = idx; + ev_xcd->name = strdup(name_buf); + ev_xcd->descr = strdup(descr_buf); + ev_xcd->device = d; + ev_xcd->value = 0; + ev_xcd->mode = PAPI_MODE_READ; + ev_xcd->variant = 0; + ev_xcd->subvariant = 0; + ev_xcd->open_func = open_simple; + ev_xcd->close_func = close_simple; + ev_xcd->start_func = start_simple; + ev_xcd->stop_func = stop_simple; + ev_xcd->access_func = access_amdsmi_xcd_counter; + htable_insert(htable, ev_xcd->name, ev_xcd); + idx++; + } + } } /* Energy consumption counter */ for (int d = 0; d < gpu_count; ++d) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 592fd52be..58fac67bb 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -600,14 +600,14 @@ int access_amdsmi_gpu_info(int mode, void *arg) { } break; } - /*case 4: { - amdsmi_virtualization_mode_t mode_val; - status = - amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], - &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { event->value = mode_val; - } - break; - }*/ + case 4: { + amdsmi_virtualization_mode_t mode_val; + status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = mode_val; + } + break; + } case 5: { int32_t numa_node = -1; status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); @@ -1233,3 +1233,27 @@ int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { event->value = (uint64_t)pol.current; return PAPI_OK; } + +int access_amdsmi_process_isolation(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_process_isolation_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t val = 0; + amdsmi_status_t st = amdsmi_get_gpu_process_isolation_p(device_handles[event->device], &val); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)val; + return PAPI_OK; +} + +int access_amdsmi_xcd_counter(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_xcd_counter_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint16_t cnt = 0; + amdsmi_status_t st = amdsmi_get_gpu_xcd_counter_p(device_handles[event->device], &cnt); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)cnt; + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 2d2a28357..28a41f8c4 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -89,6 +89,9 @@ extern amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_ extern amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); extern amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_process_isolation_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_xcd_counter_p)(amdsmi_processor_handle, uint16_t *); extern amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); extern amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); @@ -175,6 +178,8 @@ int access_amdsmi_voltage(int mode, void *arg); int access_amdsmi_vram_width(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); +int access_amdsmi_process_isolation(int mode, void *arg); +int access_amdsmi_xcd_counter(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI int access_amdsmi_cpu_socket_power(int mode, void *arg); From 2fe3bf1895de9c9e35188be7c4788abef87c3211 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 21:22:37 -0400 Subject: [PATCH 048/147] Add AMD SMI event, RAS, and power telemetry --- src/components/amd_smi/amds.c | 108 ++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 93 ++++++++++++++++++++ src/components/amd_smi/amds_priv.h | 13 +++ 3 files changed, 214 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a1f8fff6b..7123afbdd 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -85,6 +85,13 @@ amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_i amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +amdsmi_status_t (*amdsmi_get_gpu_bad_page_info_p)(amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *); +amdsmi_status_t (*amdsmi_get_gpu_bad_page_threshold_p)(amdsmi_processor_handle, uint32_t *); +amdsmi_status_t (*amdsmi_get_power_info_v2_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_info_t *); +amdsmi_status_t (*amdsmi_init_gpu_event_notification_p)(amdsmi_processor_handle); +amdsmi_status_t (*amdsmi_set_gpu_event_notification_mask_p)(amdsmi_processor_handle, uint64_t); +amdsmi_status_t (*amdsmi_get_gpu_event_notification_p)(int, uint32_t *, amdsmi_evt_notification_data_t *); +amdsmi_status_t (*amdsmi_stop_gpu_event_notification_p)(amdsmi_processor_handle); #ifndef AMDSMI_DISABLE_ESMI /* CPU function pointers */ @@ -260,6 +267,13 @@ static int load_amdsmi_sym(void) { amdsmi_get_processor_count_from_handles_p = sym("amdsmi_get_processor_count_from_handles", NULL); amdsmi_get_soc_pstate_p = sym("amdsmi_get_soc_pstate", NULL); amdsmi_get_xgmi_plpd_p = sym("amdsmi_get_xgmi_plpd", NULL); + amdsmi_get_gpu_bad_page_info_p = sym("amdsmi_get_gpu_bad_page_info", NULL); + amdsmi_get_gpu_bad_page_threshold_p = sym("amdsmi_get_gpu_bad_page_threshold", NULL); + amdsmi_get_power_info_v2_p = sym("amdsmi_get_power_info_v2", NULL); + amdsmi_init_gpu_event_notification_p = sym("amdsmi_init_gpu_event_notification", NULL); + amdsmi_set_gpu_event_notification_mask_p = sym("amdsmi_set_gpu_event_notification_mask", NULL); + amdsmi_get_gpu_event_notification_p = sym("amdsmi_get_gpu_event_notification", NULL); + amdsmi_stop_gpu_event_notification_p = sym("amdsmi_stop_gpu_event_notification", NULL); #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ @@ -1596,6 +1610,100 @@ static int init_event_table(void) { idx++; } } + + if (amdsmi_get_gpu_board_info_p) { + amdsmi_board_info_t binfo; + if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "board_serial_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); + native_event_t *ev_brd = &ntv_table.events[idx]; + ev_brd->id = idx; ev_brd->name = strdup(name_buf); ev_brd->descr = strdup(descr_buf); + ev_brd->device = d; ev_brd->value = 0; ev_brd->mode = PAPI_MODE_READ; ev_brd->variant = 0; ev_brd->subvariant = 0; + ev_brd->open_func = open_simple; ev_brd->close_func = close_simple; ev_brd->start_func = start_simple; ev_brd->stop_func = stop_simple; + ev_brd->access_func = access_amdsmi_board_serial_hash; + htable_insert(htable, ev_brd->name, ev_brd); + idx++; + } + } + + if (amdsmi_get_gpu_vram_info_p) { + amdsmi_vram_info_t vinfo; + if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); + native_event_t *ev_vbw = &ntv_table.events[idx]; + ev_vbw->id = idx; ev_vbw->name = strdup(name_buf); ev_vbw->descr = strdup(descr_buf); + ev_vbw->device = d; ev_vbw->value = 0; ev_vbw->mode = PAPI_MODE_READ; ev_vbw->variant = 0; ev_vbw->subvariant = 0; + ev_vbw->open_func = open_simple; ev_vbw->close_func = close_simple; ev_vbw->start_func = start_simple; ev_vbw->stop_func = stop_simple; + ev_vbw->access_func = access_amdsmi_vram_max_bandwidth; + htable_insert(htable, ev_vbw->name, ev_vbw); + idx++; + } + } + + if (amdsmi_get_gpu_bad_page_info_p) { + uint32_t nump = 0; + if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "bad_page_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); + native_event_t *ev_bpc = &ntv_table.events[idx]; + ev_bpc->id = idx; ev_bpc->name = strdup(name_buf); ev_bpc->descr = strdup(descr_buf); + ev_bpc->device = d; ev_bpc->value = 0; ev_bpc->mode = PAPI_MODE_READ; ev_bpc->variant = 0; ev_bpc->subvariant = 0; + ev_bpc->open_func = open_simple; ev_bpc->close_func = close_simple; ev_bpc->start_func = start_simple; ev_bpc->stop_func = stop_simple; + ev_bpc->access_func = access_amdsmi_bad_page_count; + htable_insert(htable, ev_bpc->name, ev_bpc); + idx++; + } + } + + if (amdsmi_get_gpu_bad_page_threshold_p) { + uint32_t thr = 0; + if (amdsmi_get_gpu_bad_page_threshold_p(device_handles[d], &thr) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "bad_page_threshold:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); + native_event_t *ev_bpt = &ntv_table.events[idx]; + ev_bpt->id = idx; ev_bpt->name = strdup(name_buf); ev_bpt->descr = strdup(descr_buf); + ev_bpt->device = d; ev_bpt->value = 0; ev_bpt->mode = PAPI_MODE_READ; ev_bpt->variant = 0; ev_bpt->subvariant = 0; + ev_bpt->open_func = open_simple; ev_bpt->close_func = close_simple; ev_bpt->start_func = start_simple; ev_bpt->stop_func = stop_simple; + ev_bpt->access_func = access_amdsmi_bad_page_threshold; + htable_insert(htable, ev_bpt->name, ev_bpt); + idx++; + } + } + + if (amdsmi_get_power_info_v2_p) { + amdsmi_power_info_t pinfo; + if (amdsmi_get_power_info_v2_p(device_handles[d], 0, &pinfo) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_watts:device=%d:sensor=0", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor 0 current power (W)", d); + native_event_t *ev_ps = &ntv_table.events[idx]; + ev_ps->id = idx; ev_ps->name = strdup(name_buf); ev_ps->descr = strdup(descr_buf); + ev_ps->device = d; ev_ps->value = 0; ev_ps->mode = PAPI_MODE_READ; ev_ps->variant = 0; ev_ps->subvariant = 0; + ev_ps->open_func = open_simple; ev_ps->close_func = close_simple; ev_ps->start_func = start_simple; ev_ps->stop_func = stop_simple; + ev_ps->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_ps->name, ev_ps); + idx++; + } + } + + if (amdsmi_init_gpu_event_notification_p && amdsmi_set_gpu_event_notification_mask_p && + amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d thermal throttle event notifications", d); + native_event_t *ev_tt = &ntv_table.events[idx]; + ev_tt->id = idx; ev_tt->name = strdup(name_buf); ev_tt->descr = strdup(descr_buf); + ev_tt->device = d; ev_tt->value = 0; ev_tt->mode = PAPI_MODE_READ; ev_tt->variant = AMDSMI_EVT_NOTIF_THERMAL_THROTTLE; ev_tt->subvariant = 0; + ev_tt->open_func = open_simple; ev_tt->close_func = close_simple; ev_tt->start_func = start_simple; ev_tt->stop_func = stop_simple; + ev_tt->access_func = access_amdsmi_event_notification; + htable_insert(htable, ev_tt->name, ev_tt); + idx++; + } } /* Energy consumption counter */ for (int d = 0; d < gpu_count; ++d) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 58fac67bb..ff8ce9fa8 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1257,3 +1257,96 @@ int access_amdsmi_xcd_counter(int mode, void *arg) { event->value = (int64_t)cnt; return PAPI_OK; } + +int access_amdsmi_board_serial_hash(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_board_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_board_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_board_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)_str_to_u64_hash(info.product_serial); + return PAPI_OK; +} + +int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)info.vram_max_bandwidth; /* GB/s */ + return PAPI_OK; +} + +int access_amdsmi_bad_page_count(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t num = 0; + amdsmi_status_t st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, NULL); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)num; + return PAPI_OK; +} + +int access_amdsmi_bad_page_threshold(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_threshold_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t thr = 0; + amdsmi_status_t st = amdsmi_get_gpu_bad_page_threshold_p(device_handles[event->device], &thr); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)thr; + return PAPI_OK; +} + +int access_amdsmi_power_sensor(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_power_info_v2_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_power_info_t info; + amdsmi_status_t st = amdsmi_get_power_info_v2_p(device_handles[event->device], event->subvariant, &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (event->variant == 0) + event->value = (int64_t)info.current_socket_power; + else if (event->variant == 1) + event->value = (int64_t)info.average_socket_power; + else + return PAPI_ENOSUPP; + return PAPI_OK; +} + +int access_amdsmi_event_notification(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_init_gpu_event_notification_p || !amdsmi_set_gpu_event_notification_mask_p || + !amdsmi_get_gpu_event_notification_p || !amdsmi_stop_gpu_event_notification_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_status_t st = amdsmi_init_gpu_event_notification_p(device_handles[event->device]); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + uint64_t mask = AMDSMI_EVENT_MASK_FROM_INDEX(event->variant); + st = amdsmi_set_gpu_event_notification_mask_p(device_handles[event->device], mask); + if (st != AMDSMI_STATUS_SUCCESS) { + amdsmi_stop_gpu_event_notification_p(device_handles[event->device]); + return PAPI_EMISC; + } + amdsmi_evt_notification_data_t data[8]; + uint32_t num = 8; + st = amdsmi_get_gpu_event_notification_p(0, &num, data); + uint32_t cnt = 0; + if (st == AMDSMI_STATUS_SUCCESS) { + for (uint32_t i = 0; i < num; ++i) + if (data[i].event == (amdsmi_evt_notification_type_t)event->variant) cnt++; + } + amdsmi_stop_gpu_event_notification_p(device_handles[event->device]); + event->value = (int64_t)cnt; + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 28a41f8c4..fba511484 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -112,6 +112,13 @@ extern amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); extern amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); extern amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_bad_page_info_p)(amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_bad_page_threshold_p)(amdsmi_processor_handle, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_power_info_v2_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_info_t *); +extern amdsmi_status_t (*amdsmi_init_gpu_event_notification_p)(amdsmi_processor_handle); +extern amdsmi_status_t (*amdsmi_set_gpu_event_notification_mask_p)(amdsmi_processor_handle, uint64_t); +extern amdsmi_status_t (*amdsmi_get_gpu_event_notification_p)(int, uint32_t *, amdsmi_evt_notification_data_t *); +extern amdsmi_status_t (*amdsmi_stop_gpu_event_notification_p)(amdsmi_processor_handle); #ifndef AMDSMI_DISABLE_ESMI extern amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); @@ -180,6 +187,12 @@ int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); int access_amdsmi_xcd_counter(int mode, void *arg); +int access_amdsmi_board_serial_hash(int mode, void *arg); +int access_amdsmi_vram_max_bandwidth(int mode, void *arg); +int access_amdsmi_bad_page_count(int mode, void *arg); +int access_amdsmi_bad_page_threshold(int mode, void *arg); +int access_amdsmi_power_sensor(int mode, void *arg); +int access_amdsmi_event_notification(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI int access_amdsmi_cpu_socket_power(int mode, void *arg); From 0454b4088a224e5ba851eb7144eaae1a8d1d1192 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 21:45:16 -0400 Subject: [PATCH 049/147] Expose additional AMD SMI GPU telemetry --- src/components/amd_smi/amds.c | 215 +++++++++++++++++++++--- src/components/amd_smi/amds_accessors.c | 122 +++++++++++++- src/components/amd_smi/amds_priv.h | 8 +- 3 files changed, 320 insertions(+), 25 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 7123afbdd..3c9ba8861 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -174,6 +174,19 @@ static int stop_simple(native_event_t *event) { (void)event; return PAPI_OK; } + +/* Replace any non-alphanumeric characters with '_' to build safe event names */ +static void sanitize_name(const char *src, char *dst, size_t len) { + size_t j = 0; + for (size_t i = 0; src[i] && j < len - 1; ++i) { + char c = src[i]; + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) + dst[j++] = c; + else + dst[j++] = '_'; + } + dst[j] = '\0'; +} /* Dynamic load of AMD SMI library symbols */ static void *sym(const char *preferred, const char *fallback) { void *p = dlsym(amds_dlp, preferred); @@ -576,20 +589,57 @@ static int init_event_table(void) { ev_cache->close_func = close_simple; ev_cache->start_func = start_simple; ev_cache->stop_func = stop_simple; - ev_cache->access_func = access_amdsmi_cache_size; + ev_cache->access_func = access_amdsmi_cache_stat; htable_insert(htable, ev_cache->name, ev_cache); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", level, type_str, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s max CUs sharing", d, level, type_str); + native_event_t *ev_cache_cu = &ntv_table.events[idx]; + ev_cache_cu->id = idx; + ev_cache_cu->name = strdup(name_buf); + ev_cache_cu->descr = strdup(descr_buf); + ev_cache_cu->device = d; + ev_cache_cu->value = 0; + ev_cache_cu->mode = PAPI_MODE_READ; + ev_cache_cu->variant = 1; + ev_cache_cu->subvariant = i; + ev_cache_cu->open_func = open_simple; + ev_cache_cu->close_func = close_simple; + ev_cache_cu->start_func = start_simple; + ev_cache_cu->stop_func = stop_simple; + ev_cache_cu->access_func = access_amdsmi_cache_stat; + htable_insert(htable, ev_cache_cu->name, ev_cache_cu); + idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", level, type_str, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", d, level, type_str); + native_event_t *ev_cache_inst = &ntv_table.events[idx]; + ev_cache_inst->id = idx; + ev_cache_inst->name = strdup(name_buf); + ev_cache_inst->descr = strdup(descr_buf); + ev_cache_inst->device = d; + ev_cache_inst->value = 0; + ev_cache_inst->mode = PAPI_MODE_READ; + ev_cache_inst->variant = 2; + ev_cache_inst->subvariant = i; + ev_cache_inst->open_func = open_simple; + ev_cache_inst->close_func = close_simple; + ev_cache_inst->start_func = start_simple; + ev_cache_inst->stop_func = stop_simple; + ev_cache_inst->access_func = access_amdsmi_cache_stat; + htable_insert(htable, ev_cache_inst->name, ev_cache_inst); + idx++; } } } - // GPU VRAM info event + // GPU VRAM info events if (amdsmi_get_gpu_vram_info_p) { amdsmi_vram_info_t vram_info; if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); native_event_t *ev_vram_width = &ntv_table.events[idx]; @@ -608,6 +658,66 @@ static int init_event_table(void) { ev_vram_width->access_func = access_amdsmi_vram_width; htable_insert(htable, ev_vram_width->name, ev_vram_width); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", d); + native_event_t *ev_vram_size = &ntv_table.events[idx]; + ev_vram_size->id = idx; + ev_vram_size->name = strdup(name_buf); + ev_vram_size->descr = strdup(descr_buf); + ev_vram_size->device = d; + ev_vram_size->value = 0; + ev_vram_size->mode = PAPI_MODE_READ; + ev_vram_size->variant = 0; + ev_vram_size->subvariant = 0; + ev_vram_size->open_func = open_simple; + ev_vram_size->close_func = close_simple; + ev_vram_size->start_func = start_simple; + ev_vram_size->stop_func = stop_simple; + ev_vram_size->access_func = access_amdsmi_vram_size; + htable_insert(htable, ev_vram_size->name, ev_vram_size); + idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_type:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM type id", d); + native_event_t *ev_vram_type = &ntv_table.events[idx]; + ev_vram_type->id = idx; + ev_vram_type->name = strdup(name_buf); + ev_vram_type->descr = strdup(descr_buf); + ev_vram_type->device = d; + ev_vram_type->value = 0; + ev_vram_type->mode = PAPI_MODE_READ; + ev_vram_type->variant = 0; + ev_vram_type->subvariant = 0; + ev_vram_type->open_func = open_simple; + ev_vram_type->close_func = close_simple; + ev_vram_type->start_func = start_simple; + ev_vram_type->stop_func = stop_simple; + ev_vram_type->access_func = access_amdsmi_vram_type; + htable_insert(htable, ev_vram_type->name, ev_vram_type); + idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor id", d); + native_event_t *ev_vram_vendor = &ntv_table.events[idx]; + ev_vram_vendor->id = idx; + ev_vram_vendor->name = strdup(name_buf); + ev_vram_vendor->descr = strdup(descr_buf); + ev_vram_vendor->device = d; + ev_vram_vendor->value = 0; + ev_vram_vendor->mode = PAPI_MODE_READ; + ev_vram_vendor->variant = 0; + ev_vram_vendor->subvariant = 0; + ev_vram_vendor->open_func = open_simple; + ev_vram_vendor->close_func = close_simple; + ev_vram_vendor->start_func = start_simple; + ev_vram_vendor->stop_func = stop_simple; + ev_vram_vendor->access_func = access_amdsmi_vram_vendor; + htable_insert(htable, ev_vram_vendor->name, ev_vram_vendor); + idx++; } } // GPU Overdrive level events @@ -698,14 +808,13 @@ static int init_event_table(void) { if (amdsmi_get_gpu_pm_metrics_info_p) { amdsmi_name_value_t *metrics = NULL; uint32_t mcount = 0; - - int saved_stderr = silence_stderr_begin(); // <-- mute + + int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], &metrics, &mcount); - silence_stderr_end(saved_stderr); // <-- restore - - if (metrics) papi_free(metrics); + silence_stderr_end(saved_stderr); + if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (metrics) papi_free(metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); native_event_t *ev_pmcount = &ntv_table.events[idx]; @@ -724,16 +833,38 @@ static int init_event_table(void) { ev_pmcount->access_func = access_amdsmi_pm_metrics_count; htable_insert(htable, ev_pmcount->name, ev_pmcount); idx++; + + for (uint32_t i = 0; i < mcount; ++i) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + char metric_name[MAX_AMDSMI_NAME_LENGTH]; + sanitize_name(metrics[i].name, metric_name, sizeof(metric_name)); + snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PM metric %s", d, metrics[i].name); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id = idx; + ev_pm->name = strdup(name_buf); + ev_pm->descr = strdup(descr_buf); + ev_pm->device = d; + ev_pm->value = 0; + ev_pm->mode = PAPI_MODE_READ; + ev_pm->variant = i; + ev_pm->subvariant = 0; + ev_pm->open_func = open_simple; + ev_pm->close_func = close_simple; + ev_pm->start_func = start_simple; + ev_pm->stop_func = stop_simple; + ev_pm->access_func = access_amdsmi_pm_metric_value; + htable_insert(htable, ev_pm->name, ev_pm); + idx++; + } } + if (metrics) papi_free(metrics); } // GPU RAS feature (ECC schema) event if (amdsmi_get_gpu_ras_feature_info_p) { amdsmi_ras_feature_t ras; if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); native_event_t *ev_ras = &ntv_table.events[idx]; @@ -752,6 +883,26 @@ static int init_event_table(void) { ev_ras->access_func = access_amdsmi_ras_ecc_schema; htable_insert(htable, ev_ras->name, ev_ras); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); + native_event_t *ev_ras_ver = &ntv_table.events[idx]; + ev_ras_ver->id = idx; + ev_ras_ver->name = strdup(name_buf); + ev_ras_ver->descr = strdup(descr_buf); + ev_ras_ver->device = d; + ev_ras_ver->value = 0; + ev_ras_ver->mode = PAPI_MODE_READ; + ev_ras_ver->variant = 0; + ev_ras_ver->subvariant = 0; + ev_ras_ver->open_func = open_simple; + ev_ras_ver->close_func = close_simple; + ev_ras_ver->start_func = start_simple; + ev_ras_ver->stop_func = stop_simple; + ev_ras_ver->access_func = access_amdsmi_ras_eeprom_version; + htable_insert(htable, ev_ras_ver->name, ev_ras_ver); + idx++; } } // GPU voltage metrics events @@ -887,14 +1038,13 @@ static int init_event_table(void) { for (int rt = 0; rt < 5; ++rt) { amdsmi_name_value_t *reg_metrics = NULL; uint32_t num_metrics = 0; - + int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[d], reg_types[rt], ®_metrics, &num_metrics); silence_stderr_end(saved_stderr); - - if (reg_metrics) papi_free(reg_metrics); + if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", reg_names[rt], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of %s register metrics", d, reg_names[rt]); native_event_t *ev_reg = &ntv_table.events[idx]; @@ -913,7 +1063,32 @@ static int init_event_table(void) { ev_reg->access_func = access_amdsmi_reg_count; htable_insert(htable, ev_reg->name, ev_reg); idx++; + + for (uint32_t i = 0; i < num_metrics; ++i) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + char reg_metric_name[MAX_AMDSMI_NAME_LENGTH]; + sanitize_name(reg_metrics[i].name, reg_metric_name, sizeof(reg_metric_name)); + snprintf(name_buf, sizeof(name_buf), "reg_%s_%s:device=%d", reg_names[rt], reg_metric_name, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s register %s", d, reg_names[rt], reg_metrics[i].name); + native_event_t *ev_reg_val = &ntv_table.events[idx]; + ev_reg_val->id = idx; + ev_reg_val->name = strdup(name_buf); + ev_reg_val->descr = strdup(descr_buf); + ev_reg_val->device = d; + ev_reg_val->value = 0; + ev_reg_val->mode = PAPI_MODE_READ; + ev_reg_val->variant = (uint32_t)reg_types[rt]; + ev_reg_val->subvariant = i; + ev_reg_val->open_func = open_simple; + ev_reg_val->close_func = close_simple; + ev_reg_val->start_func = start_simple; + ev_reg_val->stop_func = stop_simple; + ev_reg_val->access_func = access_amdsmi_reg_value; + htable_insert(htable, ev_reg_val->name, ev_reg_val); + idx++; + } } + if (reg_metrics) papi_free(reg_metrics); } } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index ff8ce9fa8..0759e4664 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1025,7 +1025,7 @@ int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { } #endif -int access_amdsmi_cache_size(int mode, void *arg) { +int access_amdsmi_cache_stat(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; @@ -1042,9 +1042,21 @@ int access_amdsmi_cache_size(int mode, void *arg) { /* subvariant = cache index chosen during registration */ if (event->subvariant >= info.num_cache_types) return PAPI_EMISC; - /* cache_size is KB per header; expose bytes to stay consistent with other sizes */ - uint64_t size_kb = info.cache[event->subvariant].cache_size; - event->value = (uint64_t)size_kb * 1024ULL; + uint64_t val = 0; + switch (event->variant) { + case 0: /* size in bytes (reported in KB) */ + val = (uint64_t)info.cache[event->subvariant].cache_size * 1024ULL; + break; + case 1: /* maximum number of CUs sharing this cache */ + val = (uint64_t)info.cache[event->subvariant].max_num_cu_shared; + break; + case 2: /* number of cache instances */ + val = (uint64_t)info.cache[event->subvariant].num_cache_instance; + break; + default: + return PAPI_EINVAL; + } + event->value = val; return PAPI_OK; } @@ -1139,6 +1151,26 @@ int access_amdsmi_pm_metrics_count(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_pm_metric_value(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; + + amdsmi_name_value_t *metrics = NULL; + uint32_t count = 0; + amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); + if (st != AMDSMI_STATUS_SUCCESS || event->variant >= count) { + if (metrics) papi_free(metrics); + return PAPI_EMISC; + } + event->value = (int64_t)metrics[event->variant].value; + papi_free(metrics); + return PAPI_OK; +} + int access_amdsmi_ras_ecc_schema(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1154,6 +1186,21 @@ int access_amdsmi_ras_ecc_schema(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_ras_eeprom_version(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; + + amdsmi_ras_feature_t ras = {0}; + amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)ras.ras_eeprom_version; + return PAPI_OK; +} + int access_amdsmi_reg_count(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1172,6 +1219,27 @@ int access_amdsmi_reg_count(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_reg_value(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; + + amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; + amdsmi_name_value_t *regs = NULL; + uint32_t num = 0; + amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); + if (st != AMDSMI_STATUS_SUCCESS || event->subvariant >= num) { + if (regs) papi_free(regs); + return PAPI_EMISC; + } + event->value = (int64_t)regs[event->subvariant].value; + papi_free(regs); + return PAPI_OK; +} + int access_amdsmi_voltage(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1204,6 +1272,52 @@ int access_amdsmi_vram_width(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_vram_size(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + /* vram_size reported in MB */ + event->value = (uint64_t)info.vram_size * 1024ULL * 1024ULL; + return PAPI_OK; +} + +int access_amdsmi_vram_type(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)info.vram_type; + return PAPI_OK; +} + +int access_amdsmi_vram_vendor(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)info.vram_vendor; + return PAPI_OK; +} + int access_amdsmi_soc_pstate_id(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index fba511484..cede29c7e 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -173,16 +173,22 @@ int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); int access_amdsmi_accelerator_num_partitions(int mode, void *arg); int access_amdsmi_lib_version(int mode, void *arg); -int access_amdsmi_cache_size(int mode, void *arg); +int access_amdsmi_cache_stat(int mode, void *arg); int access_amdsmi_overdrive_level(int mode, void *arg); int access_amdsmi_mem_overdrive_level(int mode, void *arg); int access_amdsmi_od_volt_regions_count(int mode, void *arg); int access_amdsmi_perf_level(int mode, void *arg); int access_amdsmi_pm_metrics_count(int mode, void *arg); +int access_amdsmi_pm_metric_value(int mode, void *arg); int access_amdsmi_ras_ecc_schema(int mode, void *arg); +int access_amdsmi_ras_eeprom_version(int mode, void *arg); int access_amdsmi_reg_count(int mode, void *arg); +int access_amdsmi_reg_value(int mode, void *arg); int access_amdsmi_voltage(int mode, void *arg); int access_amdsmi_vram_width(int mode, void *arg); +int access_amdsmi_vram_size(int mode, void *arg); +int access_amdsmi_vram_type(int mode, void *arg); +int access_amdsmi_vram_vendor(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); From dc331e384f8b9d7cd58c1540b8f0cf950953ff22 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:00:31 -0400 Subject: [PATCH 050/147] Add RAS block and VRAM usage metrics --- src/components/amd_smi/amds.c | 86 +++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 37 +++++++++++ src/components/amd_smi/amds_priv.h | 4 ++ 3 files changed, 127 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 3c9ba8861..ee3fea7ed 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -78,9 +78,11 @@ amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uin amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); +amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); +amdsmi_status_t (*amdsmi_get_gpu_vram_usage_p)(amdsmi_processor_handle, amdsmi_vram_usage_t *); amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); @@ -273,9 +275,11 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_perf_level_p = sym("amdsmi_get_gpu_perf_level", NULL); amdsmi_get_gpu_pm_metrics_info_p = sym("amdsmi_get_gpu_pm_metrics_info", NULL); amdsmi_get_gpu_ras_feature_info_p = sym("amdsmi_get_gpu_ras_feature_info", NULL); + amdsmi_get_gpu_ras_block_features_enabled_p = sym("amdsmi_get_gpu_ras_block_features_enabled", NULL); amdsmi_get_gpu_reg_table_info_p = sym("amdsmi_get_gpu_reg_table_info", NULL); amdsmi_get_gpu_volt_metric_p = sym("amdsmi_get_gpu_volt_metric", NULL); amdsmi_get_gpu_vram_info_p = sym("amdsmi_get_gpu_vram_info", NULL); + amdsmi_get_gpu_vram_usage_p = sym("amdsmi_get_gpu_vram_usage", NULL); amdsmi_get_pcie_info_p = sym("amdsmi_get_pcie_info", NULL); amdsmi_get_processor_count_from_handles_p = sym("amdsmi_get_processor_count_from_handles", NULL); amdsmi_get_soc_pstate_p = sym("amdsmi_get_soc_pstate", NULL); @@ -905,6 +909,45 @@ static int init_event_table(void) { idx++; } } + if (amdsmi_get_gpu_ras_block_features_enabled_p) { + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", + "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", + "jpeg", "ih", "mpio"}; + size_t nb = sizeof(blocks) / sizeof(blocks[0]); + for (size_t bi = 0; bi < nb; ++bi) { + amdsmi_ras_err_state_t st; + if (amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "ras_block_%s_state:device=%d", block_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS state for %s block", d, block_names[bi]); + native_event_t *ev_blk = &ntv_table.events[idx]; + ev_blk->id = idx; + ev_blk->name = strdup(name_buf); + ev_blk->descr = strdup(descr_buf); + ev_blk->device = d; + ev_blk->value = 0; + ev_blk->mode = PAPI_MODE_READ; + ev_blk->variant = (uint32_t)blocks[bi]; + ev_blk->subvariant = 0; + ev_blk->open_func = open_simple; + ev_blk->close_func = close_simple; + ev_blk->start_func = start_simple; + ev_blk->stop_func = stop_simple; + ev_blk->access_func = access_amdsmi_ras_block_state; + htable_insert(htable, ev_blk->name, ev_blk); + idx++; + } + } + } // GPU voltage metrics events if (amdsmi_get_gpu_volt_metric_p) { // Sensor 0: VDDGFX, Sensor 1: VDDBOARD @@ -1292,6 +1335,49 @@ static int init_event_table(void) { htable_insert(htable, ev->name, ev); ++idx; } + if (amdsmi_get_gpu_vram_usage_p) { + amdsmi_vram_usage_t vu; + if (amdsmi_get_gpu_vram_usage_p(device_handles[d], &vu) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_total_mb:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM (MB)", d); + native_event_t *ev_tot = &ntv_table.events[idx]; + ev_tot->id = idx; + ev_tot->name = strdup(name_buf); + ev_tot->descr = strdup(descr_buf); + ev_tot->device = d; + ev_tot->value = 0; + ev_tot->mode = PAPI_MODE_READ; + ev_tot->variant = 0; + ev_tot->subvariant = 0; + ev_tot->open_func = open_simple; + ev_tot->close_func = close_simple; + ev_tot->start_func = start_simple; + ev_tot->stop_func = stop_simple; + ev_tot->access_func = access_amdsmi_vram_usage; + htable_insert(htable, ev_tot->name, ev_tot); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "vram_used_mb:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d used VRAM (MB)", d); + native_event_t *ev_use = &ntv_table.events[idx]; + ev_use->id = idx; + ev_use->name = strdup(name_buf); + ev_use->descr = strdup(descr_buf); + ev_use->device = d; + ev_use->value = 0; + ev_use->mode = PAPI_MODE_READ; + ev_use->variant = 1; + ev_use->subvariant = 0; + ev_use->open_func = open_simple; + ev_use->close_func = close_simple; + ev_use->start_func = start_simple; + ev_use->stop_func = stop_simple; + ev_use->access_func = access_amdsmi_vram_usage; + htable_insert(htable, ev_use->name, ev_use); + idx++; + } + } } /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < gpu_count; ++d) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 0759e4664..0e7985553 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1201,6 +1201,23 @@ int access_amdsmi_ras_eeprom_version(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_ras_block_state(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_block_features_enabled_p) return PAPI_ENOSUPP; + + amdsmi_ras_err_state_t state; + amdsmi_status_t st = amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[event->device], + (amdsmi_gpu_block_t)event->variant, + &state); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)state; + return PAPI_OK; +} + int access_amdsmi_reg_count(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1318,6 +1335,26 @@ int access_amdsmi_vram_vendor(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_vram_usage(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_usage_p) return PAPI_ENOSUPP; + + amdsmi_vram_usage_t info; + amdsmi_status_t st = amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (event->variant == 0) + event->value = (uint64_t)info.vram_total; + else if (event->variant == 1) + event->value = (uint64_t)info.vram_used; + else + return PAPI_EMISC; + return PAPI_OK; +} + int access_amdsmi_soc_pstate_id(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index cede29c7e..839634fb3 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -105,9 +105,11 @@ extern amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_hand extern amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); extern amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); extern amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); extern amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); extern amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_vram_usage_p)(amdsmi_processor_handle, amdsmi_vram_usage_t *); extern amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); extern amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); @@ -182,6 +184,7 @@ int access_amdsmi_pm_metrics_count(int mode, void *arg); int access_amdsmi_pm_metric_value(int mode, void *arg); int access_amdsmi_ras_ecc_schema(int mode, void *arg); int access_amdsmi_ras_eeprom_version(int mode, void *arg); +int access_amdsmi_ras_block_state(int mode, void *arg); int access_amdsmi_reg_count(int mode, void *arg); int access_amdsmi_reg_value(int mode, void *arg); int access_amdsmi_voltage(int mode, void *arg); @@ -189,6 +192,7 @@ int access_amdsmi_vram_width(int mode, void *arg); int access_amdsmi_vram_size(int mode, void *arg); int access_amdsmi_vram_type(int mode, void *arg); int access_amdsmi_vram_vendor(int mode, void *arg); +int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); From 15ad8f9441c557e84d8f6dc88e2c28572d2ab439 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:14:57 -0400 Subject: [PATCH 051/147] Probe all GPU power sensors and expose detailed metrics --- src/components/amd_smi/amds.c | 94 ++++++++++++++++++++++--- src/components/amd_smi/amds_accessors.c | 31 ++++++-- 2 files changed, 108 insertions(+), 17 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ee3fea7ed..e78ee6a4b 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1937,18 +1937,90 @@ static int init_event_table(void) { } if (amdsmi_get_power_info_v2_p) { - amdsmi_power_info_t pinfo; - if (amdsmi_get_power_info_v2_p(device_handles[d], 0, &pinfo) == AMDSMI_STATUS_SUCCESS) { + /* Probe for available power sensors. The API uses a sensor index and + * returns AMDSMI_STATUS_SUCCESS while valid. Iterate until failure to + * discover all sensors. */ + for (uint32_t s = 0; s < 16; ++s) { + amdsmi_power_info_t pinfo; + if (amdsmi_get_power_info_v2_p(device_handles[d], s, &pinfo) != AMDSMI_STATUS_SUCCESS) + break; + + /* Register current socket power in Watts */ if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_watts:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor 0 current power (W)", d); - native_event_t *ev_ps = &ntv_table.events[idx]; - ev_ps->id = idx; ev_ps->name = strdup(name_buf); ev_ps->descr = strdup(descr_buf); - ev_ps->device = d; ev_ps->value = 0; ev_ps->mode = PAPI_MODE_READ; ev_ps->variant = 0; ev_ps->subvariant = 0; - ev_ps->open_func = open_simple; ev_ps->close_func = close_simple; ev_ps->start_func = start_simple; ev_ps->stop_func = stop_simple; - ev_ps->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_ps->name, ev_ps); - idx++; + snprintf(name_buf, sizeof(name_buf), "power_sensor_current_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u current socket power (W)", d, s); + native_event_t *ev_cur = &ntv_table.events[idx]; + ev_cur->id = idx; ev_cur->name = strdup(name_buf); ev_cur->descr = strdup(descr_buf); + ev_cur->device = d; ev_cur->value = 0; ev_cur->mode = PAPI_MODE_READ; ev_cur->variant = 0; ev_cur->subvariant = s; + ev_cur->open_func = open_simple; ev_cur->close_func = close_simple; ev_cur->start_func = start_simple; ev_cur->stop_func = stop_simple; + ev_cur->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_cur->name, ev_cur); idx++; + + /* Register average socket power in Watts */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_average_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u average socket power (W)", d, s); + native_event_t *ev_avg = &ntv_table.events[idx]; + ev_avg->id = idx; ev_avg->name = strdup(name_buf); ev_avg->descr = strdup(descr_buf); + ev_avg->device = d; ev_avg->value = 0; ev_avg->mode = PAPI_MODE_READ; ev_avg->variant = 1; ev_avg->subvariant = s; + ev_avg->open_func = open_simple; ev_avg->close_func = close_simple; ev_avg->start_func = start_simple; ev_avg->stop_func = stop_simple; + ev_avg->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_avg->name, ev_avg); idx++; + + /* Register socket power in microwatts */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u socket power (uW)", d, s); + native_event_t *ev_sock = &ntv_table.events[idx]; + ev_sock->id = idx; ev_sock->name = strdup(name_buf); ev_sock->descr = strdup(descr_buf); + ev_sock->device = d; ev_sock->value = 0; ev_sock->mode = PAPI_MODE_READ; ev_sock->variant = 2; ev_sock->subvariant = s; + ev_sock->open_func = open_simple; ev_sock->close_func = close_simple; ev_sock->start_func = start_simple; ev_sock->stop_func = stop_simple; + ev_sock->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_sock->name, ev_sock); idx++; + + /* Register GFX voltage */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u GFX voltage (mV)", d, s); + native_event_t *ev_gfx = &ntv_table.events[idx]; + ev_gfx->id = idx; ev_gfx->name = strdup(name_buf); ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; ev_gfx->value = 0; ev_gfx->mode = PAPI_MODE_READ; ev_gfx->variant = 3; ev_gfx->subvariant = s; + ev_gfx->open_func = open_simple; ev_gfx->close_func = close_simple; ev_gfx->start_func = start_simple; ev_gfx->stop_func = stop_simple; + ev_gfx->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_gfx->name, ev_gfx); idx++; + + /* Register SOC voltage */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u SOC voltage (mV)", d, s); + native_event_t *ev_soc = &ntv_table.events[idx]; + ev_soc->id = idx; ev_soc->name = strdup(name_buf); ev_soc->descr = strdup(descr_buf); + ev_soc->device = d; ev_soc->value = 0; ev_soc->mode = PAPI_MODE_READ; ev_soc->variant = 4; ev_soc->subvariant = s; + ev_soc->open_func = open_simple; ev_soc->close_func = close_simple; ev_soc->start_func = start_simple; ev_soc->stop_func = stop_simple; + ev_soc->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_soc->name, ev_soc); idx++; + + /* Register MEM voltage */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u MEM voltage (mV)", d, s); + native_event_t *ev_mem = &ntv_table.events[idx]; + ev_mem->id = idx; ev_mem->name = strdup(name_buf); ev_mem->descr = strdup(descr_buf); + ev_mem->device = d; ev_mem->value = 0; ev_mem->mode = PAPI_MODE_READ; ev_mem->variant = 5; ev_mem->subvariant = s; + ev_mem->open_func = open_simple; ev_mem->close_func = close_simple; ev_mem->start_func = start_simple; ev_mem->stop_func = stop_simple; + ev_mem->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_mem->name, ev_mem); idx++; + + /* Register power limit */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "power_sensor_limit_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u power limit (W)", d, s); + native_event_t *ev_lim = &ntv_table.events[idx]; + ev_lim->id = idx; ev_lim->name = strdup(name_buf); ev_lim->descr = strdup(descr_buf); + ev_lim->device = d; ev_lim->value = 0; ev_lim->mode = PAPI_MODE_READ; ev_lim->variant = 6; ev_lim->subvariant = s; + ev_lim->open_func = open_simple; ev_lim->close_func = close_simple; ev_lim->start_func = start_simple; ev_lim->stop_func = stop_simple; + ev_lim->access_func = access_amdsmi_power_sensor; + htable_insert(htable, ev_lim->name, ev_lim); idx++; } } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 0e7985553..a5d8428d6 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1465,12 +1465,31 @@ int access_amdsmi_power_sensor(int mode, void *arg) { amdsmi_power_info_t info; amdsmi_status_t st = amdsmi_get_power_info_v2_p(device_handles[event->device], event->subvariant, &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - if (event->variant == 0) - event->value = (int64_t)info.current_socket_power; - else if (event->variant == 1) - event->value = (int64_t)info.average_socket_power; - else - return PAPI_ENOSUPP; + switch (event->variant) { + case 0: + event->value = (int64_t)info.current_socket_power; + break; + case 1: + event->value = (int64_t)info.average_socket_power; + break; + case 2: + event->value = (int64_t)info.socket_power; + break; + case 3: + event->value = (int64_t)info.gfx_voltage; + break; + case 4: + event->value = (int64_t)info.soc_voltage; + break; + case 5: + event->value = (int64_t)info.mem_voltage; + break; + case 6: + event->value = (int64_t)info.power_limit; + break; + default: + return PAPI_ENOSUPP; + } return PAPI_OK; } From 702d122c8cb59078a736978458466c10754ef3d7 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:25:54 -0400 Subject: [PATCH 052/147] Expose XGMI PLPD policy count --- src/components/amd_smi/amds.c | 24 +++++++++++++++++++++++- src/components/amd_smi/amds_accessors.c | 15 +++++++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index e78ee6a4b..b72e80608 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1046,7 +1046,7 @@ static int init_event_table(void) { idx++; } } - // GPU XGMI PLPD policy event + // GPU XGMI PLPD policy events if (amdsmi_get_xgmi_plpd_p) { amdsmi_dpm_policy_t policy; if (amdsmi_get_xgmi_plpd_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { @@ -1072,6 +1072,28 @@ static int init_event_table(void) { ev_xplpd->access_func = access_amdsmi_xgmi_plpd_id; htable_insert(htable, ev_xplpd->name, ev_xplpd); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported XGMI PLPD policy count", d); + native_event_t *ev_xplpd_sup = &ntv_table.events[idx]; + ev_xplpd_sup->id = idx; + ev_xplpd_sup->name = strdup(name_buf); + ev_xplpd_sup->descr = strdup(descr_buf); + ev_xplpd_sup->device = d; + ev_xplpd_sup->value = 0; + ev_xplpd_sup->mode = PAPI_MODE_READ; + ev_xplpd_sup->variant = 0; + ev_xplpd_sup->subvariant = 0; + ev_xplpd_sup->open_func = open_simple; + ev_xplpd_sup->close_func = close_simple; + ev_xplpd_sup->start_func = start_simple; + ev_xplpd_sup->stop_func = stop_simple; + ev_xplpd_sup->access_func = access_amdsmi_xgmi_plpd_supported; + htable_insert(htable, ev_xplpd_sup->name, ev_xplpd_sup); + idx++; } } // GPU register table metrics count events diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index a5d8428d6..c91383ae7 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1385,6 +1385,21 @@ int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_xgmi_plpd_supported(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.num_supported; + return PAPI_OK; +} + int access_amdsmi_process_isolation(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; if (!amdsmi_get_gpu_process_isolation_p) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 839634fb3..6c9199390 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -195,6 +195,7 @@ int access_amdsmi_vram_vendor(int mode, void *arg); int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); +int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); int access_amdsmi_xcd_counter(int mode, void *arg); int access_amdsmi_board_serial_hash(int mode, void *arg); From dd7fbd3823c4475b5f3aed4032fec1a9c911e296 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:26:00 -0400 Subject: [PATCH 053/147] Limit power sensor probing to two indices --- src/components/amd_smi/amds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b72e80608..20bc75ea3 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1962,7 +1962,7 @@ static int init_event_table(void) { /* Probe for available power sensors. The API uses a sensor index and * returns AMDSMI_STATUS_SUCCESS while valid. Iterate until failure to * discover all sensors. */ - for (uint32_t s = 0; s < 16; ++s) { + for (uint32_t s = 0; s < 2; ++s) { amdsmi_power_info_t pinfo; if (amdsmi_get_power_info_v2_p(device_handles[d], s, &pinfo) != AMDSMI_STATUS_SUCCESS) break; From 22ef66c9b398133b75f5d0e3816e0b6e5101939c Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:34:30 -0400 Subject: [PATCH 054/147] Expose retired GPU page record details --- src/components/amd_smi/amds.c | 32 ++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 35 +++++++++++++++++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 68 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 20bc75ea3..d7ab8e4e9 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1939,6 +1939,38 @@ static int init_event_table(void) { ev_bpc->access_func = access_amdsmi_bad_page_count; htable_insert(htable, ev_bpc->name, ev_bpc); idx++; + for (uint32_t p = 0; p < nump; ++p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "bad_page_address:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u address", d, p); + native_event_t *ev_addr = &ntv_table.events[idx]; + ev_addr->id = idx; ev_addr->name = strdup(name_buf); ev_addr->descr = strdup(descr_buf); + ev_addr->device = d; ev_addr->value = 0; ev_addr->mode = PAPI_MODE_READ; ev_addr->variant = 0; ev_addr->subvariant = p; + ev_addr->open_func = open_simple; ev_addr->close_func = close_simple; ev_addr->start_func = start_simple; ev_addr->stop_func = stop_simple; + ev_addr->access_func = access_amdsmi_bad_page_record; + htable_insert(htable, ev_addr->name, ev_addr); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u size", d, p); + native_event_t *ev_size = &ntv_table.events[idx]; + ev_size->id = idx; ev_size->name = strdup(name_buf); ev_size->descr = strdup(descr_buf); + ev_size->device = d; ev_size->value = 0; ev_size->mode = PAPI_MODE_READ; ev_size->variant = 1; ev_size->subvariant = p; + ev_size->open_func = open_simple; ev_size->close_func = close_simple; ev_size->start_func = start_simple; ev_size->stop_func = stop_simple; + ev_size->access_func = access_amdsmi_bad_page_record; + htable_insert(htable, ev_size->name, ev_size); + idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u status", d, p); + native_event_t *ev_stat = &ntv_table.events[idx]; + ev_stat->id = idx; ev_stat->name = strdup(name_buf); ev_stat->descr = strdup(descr_buf); + ev_stat->device = d; ev_stat->value = 0; ev_stat->mode = PAPI_MODE_READ; ev_stat->variant = 2; ev_stat->subvariant = p; + ev_stat->open_func = open_simple; ev_stat->close_func = close_simple; ev_stat->start_func = start_simple; ev_stat->stop_func = stop_simple; + ev_stat->access_func = access_amdsmi_bad_page_record; + htable_insert(htable, ev_stat->name, ev_stat); + idx++; + } } } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index c91383ae7..83fa8b783 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1472,6 +1472,41 @@ int access_amdsmi_bad_page_threshold(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_bad_page_record(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + uint32_t num = 0; + amdsmi_status_t st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, NULL); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (event->subvariant >= num) return PAPI_EMISC; + amdsmi_retired_page_record_t *recs = + (amdsmi_retired_page_record_t *)papi_calloc(num, sizeof(amdsmi_retired_page_record_t)); + if (!recs) return PAPI_ENOMEM; + st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, recs); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(recs); + return PAPI_EMISC; + } + amdsmi_retired_page_record_t rec = recs[event->subvariant]; + papi_free(recs); + switch (event->variant) { + case 0: + event->value = (int64_t)rec.page_address; + break; + case 1: + event->value = (int64_t)rec.page_size; + break; + case 2: + event->value = (int64_t)rec.status; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + int access_amdsmi_power_sensor(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; if (!amdsmi_get_power_info_v2_p) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 6c9199390..94a57ca78 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -202,6 +202,7 @@ int access_amdsmi_board_serial_hash(int mode, void *arg); int access_amdsmi_vram_max_bandwidth(int mode, void *arg); int access_amdsmi_bad_page_count(int mode, void *arg); int access_amdsmi_bad_page_threshold(int mode, void *arg); +int access_amdsmi_bad_page_record(int mode, void *arg); int access_amdsmi_power_sensor(int mode, void *arg); int access_amdsmi_event_notification(int mode, void *arg); From 41e4e950bc4294898a0fd955f7ffae8046e9dc90 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:37:30 -0400 Subject: [PATCH 055/147] Expose default and DPM power cap metrics --- src/components/amd_smi/amds.c | 38 +++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 4 +++ 2 files changed, 42 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index d7ab8e4e9..8ed064a7a 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1491,6 +1491,44 @@ static int init_event_table(void) { ev_pcap_max->access_func = access_amdsmi_power_cap_range; htable_insert(htable, ev_pcap_max->name, ev_pcap_max); idx++; + // Default power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_default:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d default power cap (W)", d); + native_event_t *ev_pcap_def = &ntv_table.events[idx]; + ev_pcap_def->id = idx; + ev_pcap_def->name = strdup(name_buf); + ev_pcap_def->descr = strdup(descr_buf); + ev_pcap_def->device = d; + ev_pcap_def->value = 0; + ev_pcap_def->mode = PAPI_MODE_READ; + ev_pcap_def->variant = 3; // variant 3 => default + ev_pcap_def->subvariant = 0; + ev_pcap_def->open_func = open_simple; + ev_pcap_def->close_func = close_simple; + ev_pcap_def->start_func = start_simple; + ev_pcap_def->stop_func = stop_simple; + ev_pcap_def->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_def->name, ev_pcap_def); + idx++; + // DPM power cap + snprintf(name_buf, sizeof(name_buf), "power_cap_dpm:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DPM power cap (MHz)", d); + native_event_t *ev_pcap_dpm = &ntv_table.events[idx]; + ev_pcap_dpm->id = idx; + ev_pcap_dpm->name = strdup(name_buf); + ev_pcap_dpm->descr = strdup(descr_buf); + ev_pcap_dpm->device = d; + ev_pcap_dpm->value = 0; + ev_pcap_dpm->mode = PAPI_MODE_READ; + ev_pcap_dpm->variant = 4; // variant 4 => dpm + ev_pcap_dpm->subvariant = 0; + ev_pcap_dpm->open_func = open_simple; + ev_pcap_dpm->close_func = close_simple; + ev_pcap_dpm->start_func = start_simple; + ev_pcap_dpm->stop_func = stop_simple; + ev_pcap_dpm->access_func = access_amdsmi_power_cap_range; + htable_insert(htable, ev_pcap_dpm->name, ev_pcap_dpm); + idx++; } } /* PCIe throughput and replay counter metrics */ diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 83fa8b783..10f06ce68 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -447,6 +447,10 @@ int access_amdsmi_power_cap_range(int mode, void *arg) { event->value = (int64_t)info.min_power_cap; } else if (event->variant == 2) { event->value = (int64_t)info.max_power_cap; + } else if (event->variant == 3) { + event->value = (int64_t)info.default_power_cap; + } else if (event->variant == 4) { + event->value = (int64_t)info.dpm_cap; } else { return PAPI_EMISC; } From 7d1265eb6e91aedfd891e489cf060529bebe596f Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:40:36 -0400 Subject: [PATCH 056/147] Support additional AMD SMI clock domains --- src/components/amd_smi/amds.c | 128 ++++++++++++------------ src/components/amd_smi/amds_accessors.c | 7 +- 2 files changed, 72 insertions(+), 63 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 8ed064a7a..4e1433b15 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1683,70 +1683,74 @@ static int init_event_table(void) { idx++; } } - /* GPU clock frequency levels */ + /* GPU clock frequency levels for multiple clock domains */ for (int d = 0; d < gpu_count; ++d) { - amdsmi_frequencies_t f; - if (amdsmi_get_clk_freq_p(device_handles[d], AMDSMI_CLK_TYPE_SYS, &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { - continue; - } - // Number of supported frequencies - snprintf(name_buf, sizeof(name_buf), "clk_freq_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported GPU clock frequencies", d); - native_event_t *ev_clk_count = &ntv_table.events[idx]; - ev_clk_count->id = idx; - ev_clk_count->name = strdup(name_buf); - ev_clk_count->descr = strdup(descr_buf); - ev_clk_count->device = d; - ev_clk_count->value = 0; - ev_clk_count->mode = PAPI_MODE_READ; - ev_clk_count->variant = 0; - ev_clk_count->subvariant = 0; - ev_clk_count->open_func = open_simple; - ev_clk_count->close_func = close_simple; - ev_clk_count->start_func = start_simple; - ev_clk_count->stop_func = stop_simple; - ev_clk_count->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_count->name, ev_clk_count); - idx++; - // Current clock frequency - snprintf(name_buf, sizeof(name_buf), "clk_freq_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current GPU clock frequency (MHz)", d); - native_event_t *ev_clk_cur = &ntv_table.events[idx]; - ev_clk_cur->id = idx; - ev_clk_cur->name = strdup(name_buf); - ev_clk_cur->descr = strdup(descr_buf); - ev_clk_cur->device = d; - ev_clk_cur->value = 0; - ev_clk_cur->mode = PAPI_MODE_READ; - ev_clk_cur->variant = 0; - ev_clk_cur->subvariant = 1; - ev_clk_cur->open_func = open_simple; - ev_clk_cur->close_func = close_simple; - ev_clk_cur->start_func = start_simple; - ev_clk_cur->stop_func = stop_simple; - ev_clk_cur->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_cur->name, ev_clk_cur); - idx++; - // Supported frequency levels - for (uint32_t fi = 0; fi < f.num_supported; ++fi) { - snprintf(name_buf, sizeof(name_buf), "clk_freq_level_%u:device=%d", fi, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported clock frequency level %u (MHz)", d, fi); - native_event_t *ev_clk_lvl = &ntv_table.events[idx]; - ev_clk_lvl->id = idx; - ev_clk_lvl->name = strdup(name_buf); - ev_clk_lvl->descr = strdup(descr_buf); - ev_clk_lvl->device = d; - ev_clk_lvl->value = 0; - ev_clk_lvl->mode = PAPI_MODE_READ; - ev_clk_lvl->variant = 0; - ev_clk_lvl->subvariant = fi + 2; - ev_clk_lvl->open_func = open_simple; - ev_clk_lvl->close_func = close_simple; - ev_clk_lvl->start_func = start_simple; - ev_clk_lvl->stop_func = stop_simple; - ev_clk_lvl->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); + amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_DF, AMDSMI_CLK_TYPE_DCEF}; + const char *clk_names[] = {"sys", "df", "dcef"}; + for (int t = 0; t < 3; ++t) { + amdsmi_frequencies_t f; + if (amdsmi_get_clk_freq_p(device_handles[d], clk_types[t], &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { + continue; + } + // Number of supported frequencies for this clock domain + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_count:device=%d", clk_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported %s clock frequencies", d, clk_names[t]); + native_event_t *ev_clk_count = &ntv_table.events[idx]; + ev_clk_count->id = idx; + ev_clk_count->name = strdup(name_buf); + ev_clk_count->descr = strdup(descr_buf); + ev_clk_count->device = d; + ev_clk_count->value = 0; + ev_clk_count->mode = PAPI_MODE_READ; + ev_clk_count->variant = t; + ev_clk_count->subvariant = 0; + ev_clk_count->open_func = open_simple; + ev_clk_count->close_func = close_simple; + ev_clk_count->start_func = start_simple; + ev_clk_count->stop_func = stop_simple; + ev_clk_count->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_count->name, ev_clk_count); + idx++; + // Current clock frequency for this domain + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_current:device=%d", clk_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current %s clock frequency (MHz)", d, clk_names[t]); + native_event_t *ev_clk_cur = &ntv_table.events[idx]; + ev_clk_cur->id = idx; + ev_clk_cur->name = strdup(name_buf); + ev_clk_cur->descr = strdup(descr_buf); + ev_clk_cur->device = d; + ev_clk_cur->value = 0; + ev_clk_cur->mode = PAPI_MODE_READ; + ev_clk_cur->variant = t; + ev_clk_cur->subvariant = 1; + ev_clk_cur->open_func = open_simple; + ev_clk_cur->close_func = close_simple; + ev_clk_cur->start_func = start_simple; + ev_clk_cur->stop_func = stop_simple; + ev_clk_cur->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_cur->name, ev_clk_cur); idx++; + // Supported frequency levels for this domain + for (uint32_t fi = 0; fi < f.num_supported; ++fi) { + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_level_%u:device=%d", clk_names[t], fi, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported %s clock frequency level %u (MHz)", d, clk_names[t], fi); + native_event_t *ev_clk_lvl = &ntv_table.events[idx]; + ev_clk_lvl->id = idx; + ev_clk_lvl->name = strdup(name_buf); + ev_clk_lvl->descr = strdup(descr_buf); + ev_clk_lvl->device = d; + ev_clk_lvl->value = 0; + ev_clk_lvl->mode = PAPI_MODE_READ; + ev_clk_lvl->variant = t; + ev_clk_lvl->subvariant = fi + 2; + ev_clk_lvl->open_func = open_simple; + ev_clk_lvl->close_func = close_simple; + ev_clk_lvl->start_func = start_simple; + ev_clk_lvl->stop_func = stop_simple; + ev_clk_lvl->access_func = access_amdsmi_clk_freq; + htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); + idx++; + } } } /* GPU identification and topology metrics */ diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 10f06ce68..af8faf2da 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -521,7 +521,12 @@ int access_amdsmi_clk_freq(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_frequencies_t freq_info; - amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], AMDSMI_CLK_TYPE_SYS, &freq_info); + amdsmi_clk_type_t clk_type = AMDSMI_CLK_TYPE_SYS; + if (event->variant == 1) + clk_type = AMDSMI_CLK_TYPE_DF; + else if (event->variant == 2) + clk_type = AMDSMI_CLK_TYPE_DCEF; + amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], clk_type, &freq_info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } From 05cd5fe3c4920f84efdabd6c9fcd2947e8514343 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:44:49 -0400 Subject: [PATCH 057/147] Expose throttle status and PCIe metrics via GPU metrics table --- src/components/amd_smi/amds.c | 120 ++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 40 +++++++- 2 files changed, 157 insertions(+), 3 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 4e1433b15..a1fa054c3 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -2120,6 +2120,126 @@ static int init_event_table(void) { } } + if (amdsmi_get_gpu_metrics_info_p) { + amdsmi_gpu_metrics_t metrics; + if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == AMDSMI_STATUS_SUCCESS) { + /* Register throttle status */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); + native_event_t *ev_throttle = &ntv_table.events[idx]; + ev_throttle->id = idx; ev_throttle->name = strdup(name_buf); ev_throttle->descr = strdup(descr_buf); + ev_throttle->device = d; ev_throttle->value = 0; ev_throttle->mode = PAPI_MODE_READ; ev_throttle->variant = 0; ev_throttle->subvariant = 0; + ev_throttle->open_func = open_simple; ev_throttle->close_func = close_simple; ev_throttle->start_func = start_simple; ev_throttle->stop_func = stop_simple; + ev_throttle->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_throttle->name, ev_throttle); idx++; + + /* Register independent throttle status */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "gpu_indep_throttle_status:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d independent throttle status", d); + native_event_t *ev_ithrottle = &ntv_table.events[idx]; + ev_ithrottle->id = idx; ev_ithrottle->name = strdup(name_buf); ev_ithrottle->descr = strdup(descr_buf); + ev_ithrottle->device = d; ev_ithrottle->value = 0; ev_ithrottle->mode = PAPI_MODE_READ; ev_ithrottle->variant = 1; ev_ithrottle->subvariant = 0; + ev_ithrottle->open_func = open_simple; ev_ithrottle->close_func = close_simple; ev_ithrottle->start_func = start_simple; ev_ithrottle->stop_func = stop_simple; + ev_ithrottle->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_ithrottle->name, ev_ithrottle); idx++; + + /* Register PCIe link width */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_link_width:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); + native_event_t *ev_lw = &ntv_table.events[idx]; + ev_lw->id = idx; ev_lw->name = strdup(name_buf); ev_lw->descr = strdup(descr_buf); + ev_lw->device = d; ev_lw->value = 0; ev_lw->mode = PAPI_MODE_READ; ev_lw->variant = 2; ev_lw->subvariant = 0; + ev_lw->open_func = open_simple; ev_lw->close_func = close_simple; ev_lw->start_func = start_simple; ev_lw->stop_func = stop_simple; + ev_lw->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_lw->name, ev_lw); idx++; + + /* Register PCIe link speed */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_link_speed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); + native_event_t *ev_ls = &ntv_table.events[idx]; + ev_ls->id = idx; ev_ls->name = strdup(name_buf); ev_ls->descr = strdup(descr_buf); + ev_ls->device = d; ev_ls->value = 0; ev_ls->mode = PAPI_MODE_READ; ev_ls->variant = 3; ev_ls->subvariant = 0; + ev_ls->open_func = open_simple; ev_ls->close_func = close_simple; ev_ls->start_func = start_simple; ev_ls->stop_func = stop_simple; + ev_ls->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_ls->name, ev_ls); idx++; + + /* Register PCIe bandwidth and replay counters */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); + native_event_t *ev_bwacc = &ntv_table.events[idx]; + ev_bwacc->id = idx; ev_bwacc->name = strdup(name_buf); ev_bwacc->descr = strdup(descr_buf); + ev_bwacc->device = d; ev_bwacc->value = 0; ev_bwacc->mode = PAPI_MODE_READ; ev_bwacc->variant = 4; ev_bwacc->subvariant = 0; + ev_bwacc->open_func = open_simple; ev_bwacc->close_func = close_simple; ev_bwacc->start_func = start_simple; ev_bwacc->stop_func = stop_simple; + ev_bwacc->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_bwacc->name, ev_bwacc); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe instantaneous bandwidth (GB/s)", d); + native_event_t *ev_bwin = &ntv_table.events[idx]; + ev_bwin->id = idx; ev_bwin->name = strdup(name_buf); ev_bwin->descr = strdup(descr_buf); + ev_bwin->device = d; ev_bwin->value = 0; ev_bwin->mode = PAPI_MODE_READ; ev_bwin->variant = 5; ev_bwin->subvariant = 0; + ev_bwin->open_func = open_simple; ev_bwin->close_func = close_simple; ev_bwin->start_func = start_simple; ev_bwin->stop_func = stop_simple; + ev_bwin->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_bwin->name, ev_bwin); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recov_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); + native_event_t *ev_l0 = &ntv_table.events[idx]; + ev_l0->id = idx; ev_l0->name = strdup(name_buf); ev_l0->descr = strdup(descr_buf); + ev_l0->device = d; ev_l0->value = 0; ev_l0->mode = PAPI_MODE_READ; ev_l0->variant = 6; ev_l0->subvariant = 0; + ev_l0->open_func = open_simple; ev_l0->close_func = close_simple; ev_l0->start_func = start_simple; ev_l0->stop_func = stop_simple; + ev_l0->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_l0->name, ev_l0); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + native_event_t *ev_replay = &ntv_table.events[idx]; + ev_replay->id = idx; ev_replay->name = strdup(name_buf); ev_replay->descr = strdup(descr_buf); + ev_replay->device = d; ev_replay->value = 0; ev_replay->mode = PAPI_MODE_READ; ev_replay->variant = 7; ev_replay->subvariant = 0; + ev_replay->open_func = open_simple; ev_replay->close_func = close_simple; ev_replay->start_func = start_simple; ev_replay->stop_func = stop_simple; + ev_replay->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_replay->name, ev_replay); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_replay_rover_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); + native_event_t *ev_replay_ro = &ntv_table.events[idx]; + ev_replay_ro->id = idx; ev_replay_ro->name = strdup(name_buf); ev_replay_ro->descr = strdup(descr_buf); + ev_replay_ro->device = d; ev_replay_ro->value = 0; ev_replay_ro->mode = PAPI_MODE_READ; ev_replay_ro->variant = 8; ev_replay_ro->subvariant = 0; + ev_replay_ro->open_func = open_simple; ev_replay_ro->close_func = close_simple; ev_replay_ro->start_func = start_simple; ev_replay_ro->stop_func = stop_simple; + ev_replay_ro->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_replay_ro->name, ev_replay_ro); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); + native_event_t *ev_nak_sent = &ntv_table.events[idx]; + ev_nak_sent->id = idx; ev_nak_sent->name = strdup(name_buf); ev_nak_sent->descr = strdup(descr_buf); + ev_nak_sent->device = d; ev_nak_sent->value = 0; ev_nak_sent->mode = PAPI_MODE_READ; ev_nak_sent->variant = 9; ev_nak_sent->subvariant = 0; + ev_nak_sent->open_func = open_simple; ev_nak_sent->close_func = close_simple; ev_nak_sent->start_func = start_simple; ev_nak_sent->stop_func = stop_simple; + ev_nak_sent->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_nak_sent->name, ev_nak_sent); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_nak_rcvd_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); + native_event_t *ev_nak_rcv = &ntv_table.events[idx]; + ev_nak_rcv->id = idx; ev_nak_rcv->name = strdup(name_buf); ev_nak_rcv->descr = strdup(descr_buf); + ev_nak_rcv->device = d; ev_nak_rcv->value = 0; ev_nak_rcv->mode = PAPI_MODE_READ; ev_nak_rcv->variant = 10; ev_nak_rcv->subvariant = 0; + ev_nak_rcv->open_func = open_simple; ev_nak_rcv->close_func = close_simple; ev_nak_rcv->start_func = start_simple; ev_nak_rcv->stop_func = stop_simple; + ev_nak_rcv->access_func = access_amdsmi_gpu_metrics; + htable_insert(htable, ev_nak_rcv->name, ev_nak_rcv); idx++; + } + } + if (amdsmi_init_gpu_event_notification_p && amdsmi_set_gpu_event_notification_mask_p && amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index af8faf2da..0ccf519eb 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -562,9 +562,43 @@ int access_amdsmi_gpu_metrics(int mode, void *arg) { if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - // Parsing of metrics is not fully implemented; just return OK. - // (In a full implementation, event->variant or subvariant would select a - // specific field of 'metrics'.) + switch (event->variant) { + case 0: + event->value = metrics.throttle_status; + break; + case 1: + event->value = (int64_t)metrics.indep_throttle_status; + break; + case 2: + event->value = metrics.pcie_link_width; + break; + case 3: + event->value = metrics.pcie_link_speed; + break; + case 4: + event->value = (int64_t)metrics.pcie_bandwidth_acc; + break; + case 5: + event->value = (int64_t)metrics.pcie_bandwidth_inst; + break; + case 6: + event->value = (int64_t)metrics.pcie_l0_to_recov_count_acc; + break; + case 7: + event->value = (int64_t)metrics.pcie_replay_count_acc; + break; + case 8: + event->value = (int64_t)metrics.pcie_replay_rover_count_acc; + break; + case 9: + event->value = metrics.pcie_nak_sent_count_acc; + break; + case 10: + event->value = metrics.pcie_nak_rcvd_count_acc; + break; + default: + return PAPI_ENOSUPP; + } return PAPI_OK; } int access_amdsmi_gpu_info(int mode, void *arg) { From d3481fad2bb5deaaa3f3d817fac142bfb10004fb Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:56:01 -0400 Subject: [PATCH 058/147] Expose GPU firmware versions via amdsmi_get_fw_info --- src/components/amd_smi/amds.c | 21 +++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 23 +++++++++++++++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 45 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a1fa054c3..b9b49a503 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1936,6 +1936,27 @@ static int init_event_table(void) { } } + if (amdsmi_get_fw_info_p) { + amdsmi_fw_info_t finfo; + if (amdsmi_get_fw_info_p(device_handles[d], &finfo) == AMDSMI_STATUS_SUCCESS) { + uint8_t n = finfo.num_fw_info; + if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; + for (uint8_t f = 0; f < n; ++f) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + uint32_t fid = finfo.fw_info_list[f].fw_id; + snprintf(name_buf, sizeof(name_buf), "fw_version_id%u:device=%d", fid, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d firmware id %u version", d, fid); + native_event_t *ev_fw = &ntv_table.events[idx]; + ev_fw->id = idx; ev_fw->name = strdup(name_buf); ev_fw->descr = strdup(descr_buf); + ev_fw->device = d; ev_fw->value = 0; ev_fw->mode = PAPI_MODE_READ; ev_fw->variant = fid; ev_fw->subvariant = 0; + ev_fw->open_func = open_simple; ev_fw->close_func = close_simple; ev_fw->start_func = start_simple; ev_fw->stop_func = stop_simple; + ev_fw->access_func = access_amdsmi_fw_version; + htable_insert(htable, ev_fw->name, ev_fw); + idx++; + } + } + } + if (amdsmi_get_gpu_board_info_p) { amdsmi_board_info_t binfo; if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == AMDSMI_STATUS_SUCCESS) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 0ccf519eb..5df57a718 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1479,6 +1479,29 @@ int access_amdsmi_board_serial_hash(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_fw_version(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_fw_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_fw_info_t info; + amdsmi_status_t st = amdsmi_get_fw_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + amdsmi_fw_block_t id = (amdsmi_fw_block_t)event->variant; + uint8_t n = info.num_fw_info; + if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; + for (uint8_t i = 0; i < n; ++i) { + if (info.fw_info_list[i].fw_id == id) { + event->value = (int64_t)info.fw_info_list[i].fw_version; + return PAPI_OK; + } + } + return PAPI_EMISC; +} + int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 94a57ca78..6b89f6080 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -200,6 +200,7 @@ int access_amdsmi_process_isolation(int mode, void *arg); int access_amdsmi_xcd_counter(int mode, void *arg); int access_amdsmi_board_serial_hash(int mode, void *arg); int access_amdsmi_vram_max_bandwidth(int mode, void *arg); +int access_amdsmi_fw_version(int mode, void *arg); int access_amdsmi_bad_page_count(int mode, void *arg); int access_amdsmi_bad_page_threshold(int mode, void *arg); int access_amdsmi_bad_page_record(int mode, void *arg); From a89734d9ba384806c6902556c51e3f8340423308 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:58:20 -0400 Subject: [PATCH 059/147] Expose GPU UUID length via new event --- src/components/amd_smi/amds.c | 22 ++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 11 ++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b9b49a503..3cd71b1ec 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -2861,6 +2861,28 @@ static int init_event_table(void) { ev_uuid->access_func = access_amdsmi_uuid_hash; htable_insert(htable, ev_uuid->name, ev_uuid); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "uuid_length:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID length", d); + native_event_t *ev_uuid_len = &ntv_table.events[idx]; + ev_uuid_len->id = idx; + ev_uuid_len->name = strdup(name_buf); + ev_uuid_len->descr = strdup(descr_buf); + ev_uuid_len->device = d; + ev_uuid_len->value = 0; + ev_uuid_len->mode = PAPI_MODE_READ; + ev_uuid_len->variant = 1; + ev_uuid_len->subvariant = 0; + ev_uuid_len->open_func = open_simple; + ev_uuid_len->close_func = close_simple; + ev_uuid_len->start_func = start_simple; + ev_uuid_len->stop_func = stop_simple; + ev_uuid_len->access_func = access_amdsmi_uuid_hash; + htable_insert(htable, ev_uuid_len->name, ev_uuid_len); + idx++; } } /* Vendor / VRAM vendor / Subsystem name (hash) */ diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 5df57a718..e2296cf3c 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -54,7 +54,16 @@ int access_amdsmi_uuid_hash(int mode, void *arg) { amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[event->device], &len, buf); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - event->value = (int64_t)_str_to_u64_hash(buf); + switch (event->variant) { + case 0: /* hash */ + event->value = (int64_t)_str_to_u64_hash(buf); + break; + case 1: /* length */ + event->value = (int64_t)len; + break; + default: + return PAPI_EMISC; + } return PAPI_OK; } int access_amdsmi_gpu_string_hash(int mode, void *arg) { From 87ab7054d1239af13571354744020b555cca9fe4 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:03:02 -0400 Subject: [PATCH 060/147] Expand link metrics events --- src/components/amd_smi/amds.c | 293 +++++++++++++++++++----- src/components/amd_smi/amds_accessors.c | 30 ++- 2 files changed, 255 insertions(+), 68 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 3cd71b1ec..6f3a7be46 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3330,72 +3330,243 @@ static int init_event_table(void) { idx++; } }*/ - /* PCIe metrics via amdsmi_get_link_metrics (aggregate read/write kB over - * XGMI) */ + /* PCIe metrics via amdsmi_get_link_metrics. Register per-link events and + * aggregate totals for XGMI and PCIe links. */ amdsmi_link_metrics_t lm_probe; memset(&lm_probe, 0, sizeof(lm_probe)); int has_xgmi = 0, has_pcie = 0; if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == AMDSMI_STATUS_SUCCESS) { uint32_t n = lm_probe.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - for (uint32_t i=0;i AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) + n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + for (uint32_t i = 0; i < n; ++i) { + uint32_t type = lm_probe.links[i].link_type; + if (type == AMDSMI_LINK_TYPE_XGMI) { + has_xgmi = 1; + /* Per-link XGMI read/write/bit rate/max bandwidth */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_read_kB:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u read (kB)", d, i); + native_event_t *ev_lr = &ntv_table.events[idx]; + ev_lr->id = idx; ev_lr->name = strdup(name_buf); + ev_lr->descr = strdup(descr_buf); + if (!ev_lr->name || !ev_lr->descr) return PAPI_ENOMEM; + ev_lr->device = d; ev_lr->value = 0; + ev_lr->mode = PAPI_MODE_READ; ev_lr->variant = 0; + ev_lr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lr->open_func = open_simple; ev_lr->close_func = close_simple; + ev_lr->start_func = start_simple; ev_lr->stop_func = stop_simple; + ev_lr->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lr->name, ev_lr); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_write_kB:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u write (kB)", d, i); + native_event_t *ev_lw = &ntv_table.events[idx]; + ev_lw->id = idx; ev_lw->name = strdup(name_buf); + ev_lw->descr = strdup(descr_buf); + if (!ev_lw->name || !ev_lw->descr) return PAPI_ENOMEM; + ev_lw->device = d; ev_lw->value = 0; + ev_lw->mode = PAPI_MODE_READ; ev_lw->variant = 1; + ev_lw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lw->open_func = open_simple; ev_lw->close_func = close_simple; + ev_lw->start_func = start_simple; ev_lw->stop_func = stop_simple; + ev_lw->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lw->name, ev_lw); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u speed (Gb/s)", d, i); + native_event_t *ev_lb = &ntv_table.events[idx]; + ev_lb->id = idx; ev_lb->name = strdup(name_buf); + ev_lb->descr = strdup(descr_buf); + if (!ev_lb->name || !ev_lb->descr) return PAPI_ENOMEM; + ev_lb->device = d; ev_lb->value = 0; + ev_lb->mode = PAPI_MODE_READ; ev_lb->variant = 2; + ev_lb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lb->open_func = open_simple; ev_lb->close_func = close_simple; + ev_lb->start_func = start_simple; ev_lb->stop_func = stop_simple; + ev_lb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lb->name, ev_lb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); + native_event_t *ev_lm = &ntv_table.events[idx]; + ev_lm->id = idx; ev_lm->name = strdup(name_buf); + ev_lm->descr = strdup(descr_buf); + if (!ev_lm->name || !ev_lm->descr) return PAPI_ENOMEM; + ev_lm->device = d; ev_lm->value = 0; + ev_lm->mode = PAPI_MODE_READ; ev_lm->variant = 3; + ev_lm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lm->open_func = open_simple; ev_lm->close_func = close_simple; + ev_lm->start_func = start_simple; ev_lm->stop_func = stop_simple; + ev_lm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lm->name, ev_lm); idx++; + } else if (type == AMDSMI_LINK_TYPE_PCIE) { + has_pcie = 1; + /* Per-link PCIe bit rate/max bandwidth */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "pcie_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link %u speed (Gb/s)", d, i); + native_event_t *ev_pb = &ntv_table.events[idx]; + ev_pb->id = idx; ev_pb->name = strdup(name_buf); + ev_pb->descr = strdup(descr_buf); + if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; + ev_pb->device = d; ev_pb->value = 0; + ev_pb->mode = PAPI_MODE_READ; ev_pb->variant = 2; + ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; + ev_pb->open_func = open_simple; ev_pb->close_func = close_simple; + ev_pb->start_func = start_simple; ev_pb->stop_func = stop_simple; + ev_pb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pb->name, ev_pb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id = idx; ev_pm->name = strdup(name_buf); + ev_pm->descr = strdup(descr_buf); + if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; + ev_pm->device = d; ev_pm->value = 0; + ev_pm->mode = PAPI_MODE_READ; ev_pm->variant = 3; + ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; + ev_pm->open_func = open_simple; ev_pm->close_func = close_simple; + ev_pm->start_func = start_simple; ev_pm->stop_func = stop_simple; + ev_pm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pm->name, ev_pm); idx++; + } + } + + /* --- Aggregate totals by link type --- */ + if (has_xgmi) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_read_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total XGMI read across links (kB)", d); + native_event_t *ev_xr = &ntv_table.events[idx]; + ev_xr->id = idx; ev_xr->name = strdup(name_buf); + ev_xr->descr = strdup(descr_buf); + if (!ev_xr->name || !ev_xr->descr) return PAPI_ENOMEM; + ev_xr->device = d; ev_xr->value = 0; + ev_xr->mode = PAPI_MODE_READ; ev_xr->variant = 0; + ev_xr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xr->open_func = open_simple; ev_xr->close_func = close_simple; + ev_xr->start_func = start_simple; ev_xr->stop_func = stop_simple; + ev_xr->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xr->name, ev_xr); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_write_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total XGMI write across links (kB)", d); + native_event_t *ev_xw = &ntv_table.events[idx]; + ev_xw->id = idx; ev_xw->name = strdup(name_buf); + ev_xw->descr = strdup(descr_buf); + if (!ev_xw->name || !ev_xw->descr) return PAPI_ENOMEM; + ev_xw->device = d; ev_xw->value = 0; + ev_xw->mode = PAPI_MODE_READ; ev_xw->variant = 1; + ev_xw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xw->open_func = open_simple; ev_xw->close_func = close_simple; + ev_xw->start_func = start_simple; ev_xw->stop_func = stop_simple; + ev_xw->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xw->name, ev_xw); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate XGMI link speed (Gb/s)", d); + native_event_t *ev_xb = &ntv_table.events[idx]; + ev_xb->id = idx; ev_xb->name = strdup(name_buf); + ev_xb->descr = strdup(descr_buf); + if (!ev_xb->name || !ev_xb->descr) return PAPI_ENOMEM; + ev_xb->device = d; ev_xb->value = 0; + ev_xb->mode = PAPI_MODE_READ; ev_xb->variant = 2; + ev_xb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xb->open_func = open_simple; ev_xb->close_func = close_simple; + ev_xb->start_func = start_simple; ev_xb->stop_func = stop_simple; + ev_xb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xb->name, ev_xb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate XGMI max bandwidth (Gb/s)", d); + native_event_t *ev_xm = &ntv_table.events[idx]; + ev_xm->id = idx; ev_xm->name = strdup(name_buf); + ev_xm->descr = strdup(descr_buf); + if (!ev_xm->name || !ev_xm->descr) return PAPI_ENOMEM; + ev_xm->device = d; ev_xm->value = 0; + ev_xm->mode = PAPI_MODE_READ; ev_xm->variant = 3; + ev_xm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xm->open_func = open_simple; ev_xm->close_func = close_simple; + ev_xm->start_func = start_simple; ev_xm->stop_func = stop_simple; + ev_xm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xm->name, ev_xm); idx++; + } + + if (has_pcie) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "pcie_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate PCIe link speed (Gb/s)", d); + native_event_t *ev_pb = &ntv_table.events[idx]; + ev_pb->id = idx; ev_pb->name = strdup(name_buf); + ev_pb->descr = strdup(descr_buf); + if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; + ev_pb->device = d; ev_pb->value = 0; + ev_pb->mode = PAPI_MODE_READ; ev_pb->variant = 2; + ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; + ev_pb->open_func = open_simple; ev_pb->close_func = close_simple; + ev_pb->start_func = start_simple; ev_pb->stop_func = stop_simple; + ev_pb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pb->name, ev_pb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), + "pcie_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate PCIe max bandwidth (Gb/s)", d); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id = idx; ev_pm->name = strdup(name_buf); + ev_pm->descr = strdup(descr_buf); + if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; + ev_pm->device = d; ev_pm->value = 0; + ev_pm->mode = PAPI_MODE_READ; ev_pm->variant = 3; + ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; + ev_pm->open_func = open_simple; ev_pm->close_func = close_simple; + ev_pm->start_func = start_simple; ev_pm->stop_func = stop_simple; + ev_pm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pm->name, ev_pm); idx++; } - } - - /* --- XGMI totals (only if present). Read/Write are XGMI-only. --- */ - if (has_xgmi) { - /* xgmi_total_read_kB */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); - native_event_t *ev_xr = &ntv_table.events[idx]; - ev_xr->id=idx; ev_xr->name=strdup(name_buf); ev_xr->descr=strdup(descr_buf); - if (!ev_xr->name || !ev_xr->descr) return PAPI_ENOMEM; - ev_xr->device=d; ev_xr->value=0; ev_xr->mode=PAPI_MODE_READ; ev_xr->variant=0; - ev_xr->subvariant = AMDSMI_LINK_TYPE_XGMI; - ev_xr->open_func=open_simple; ev_xr->close_func=close_simple; ev_xr->start_func=start_simple; ev_xr->stop_func=stop_simple; - ev_xr->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xr->name, ev_xr); idx++; - - /* xgmi_total_write_kB */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); - native_event_t *ev_xw = &ntv_table.events[idx]; - ev_xw->id=idx; ev_xw->name=strdup(name_buf); ev_xw->descr=strdup(descr_buf); - if (!ev_xw->name || !ev_xw->descr) return PAPI_ENOMEM; - ev_xw->device=d; ev_xw->value=0; ev_xw->mode=PAPI_MODE_READ; ev_xw->variant=1; - ev_xw->subvariant = AMDSMI_LINK_TYPE_XGMI; - ev_xw->open_func=open_simple; ev_xw->close_func=close_simple; ev_xw->start_func=start_simple; ev_xw->stop_func=stop_simple; - ev_xw->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_xw->name, ev_xw); idx++; - - /* Optional XGMI rates */ - /* ... same pattern with variant=2 (bit_rate_Gbps) and 3 (max_bandwidth_Gbps) ... */ - } - - /* --- PCIe aggregate rates (if present). No read/write here (N/A). --- */ - if (has_pcie) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe link speed (Gb/s)", d); - native_event_t *ev_pb = &ntv_table.events[idx]; - ev_pb->id=idx; ev_pb->name=strdup(name_buf); ev_pb->descr=strdup(descr_buf); - if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; - ev_pb->device=d; ev_pb->value=0; ev_pb->mode=PAPI_MODE_READ; ev_pb->variant=2; - ev_pb->subvariant = AMDSMI_LINK_TYPE_PCIE; - ev_pb->open_func=open_simple; ev_pb->close_func=close_simple; ev_pb->start_func=start_simple; ev_pb->stop_func=stop_simple; - ev_pb->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_pb->name, ev_pb); idx++; - - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe max bandwidth (Gb/s)", d); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id=idx; ev_pm->name=strdup(name_buf); ev_pm->descr=strdup(descr_buf); - if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; - ev_pm->device=d; ev_pm->value=0; ev_pm->mode=PAPI_MODE_READ; ev_pm->variant=3; - ev_pm->subvariant = AMDSMI_LINK_TYPE_PCIE; - ev_pm->open_func=open_simple; ev_pm->close_func=close_simple; ev_pm->start_func=start_simple; ev_pm->stop_func=stop_simple; - ev_pm->access_func=access_amdsmi_link_metrics; htable_insert(htable, ev_pm->name, ev_pm); idx++; } /* Process list size (count of running GPU processes) */ diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index e2296cf3c..361ae4689 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -205,17 +205,33 @@ int access_amdsmi_link_metrics(int mode, void *arg) { amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint64_t acc = 0; uint32_t n = lm.num_links; if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - for (uint32_t i = 0; i < n; ++i) { - if (event->subvariant != 0 && lm.links[i].link_type != (uint32_t)event->subvariant) continue; + uint32_t enc = event->subvariant; + uint32_t link_type = enc >> 16; + uint32_t link_index = enc & 0xFFFF; /* 0xFFFF denotes aggregate */ + + uint64_t acc = 0; + if (link_index == 0xFFFF) { + for (uint32_t i = 0; i < n; ++i) { + if (link_type && lm.links[i].link_type != link_type) continue; + switch (event->variant) { + case 0: acc += lm.links[i].read; break; /* KB */ + case 1: acc += lm.links[i].write; break; /* KB */ + case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ + case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ + default: return PAPI_ENOSUPP; + } + } + } else { + if (link_index >= n) return PAPI_EMISC; + if (link_type && lm.links[link_index].link_type != link_type) return PAPI_EMISC; switch (event->variant) { - case 0: acc += lm.links[i].read; break; /* KB */ - case 1: acc += lm.links[i].write; break; /* KB */ - case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ - case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ + case 0: acc = lm.links[link_index].read; break; /* KB */ + case 1: acc = lm.links[link_index].write; break; /* KB */ + case 2: acc = lm.links[link_index].bit_rate; break; /* Gb/s */ + case 3: acc = lm.links[link_index].max_bandwidth;break; /* Gb/s */ default: return PAPI_ENOSUPP; } } From 4b28ad14733df372edef981bb6bd517617472dc0 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:10:10 -0400 Subject: [PATCH 061/147] Expose GPU process list details --- src/components/amd_smi/amds.c | 67 +++++++++++------- src/components/amd_smi/amds_accessors.c | 68 ++++++++++++------- src/components/amd_smi/amds_priv.h | 2 +- .../amd_smi/tests/amdsmi_basics.cpp | 53 ++++++++------- 4 files changed, 119 insertions(+), 71 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 6f3a7be46..8c1bde150 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3569,30 +3569,51 @@ static int init_event_table(void) { } } - /* Process list size (count of running GPU processes) */ + /* Per-process metrics (up to two processes) */ if (amdsmi_get_gpu_process_list_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), "process_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d active GPU process count", d); - native_event_t *ev_pc = &ntv_table.events[idx]; - ev_pc->id = idx; - ev_pc->name = strdup(name_buf); - ev_pc->descr = strdup(descr_buf); - ev_pc->device = d; - ev_pc->value = 0; - ev_pc->mode = PAPI_MODE_READ; - ev_pc->variant = 0; - ev_pc->subvariant = 0; - ev_pc->open_func = open_simple; - ev_pc->close_func = close_simple; - ev_pc->start_func = start_simple; - ev_pc->stop_func = stop_simple; - ev_pc->access_func = access_amdsmi_process_count; - htable_insert(htable, ev_pc->name, ev_pc); - idx++; + const struct { + const char *suffix; + const char *descr; + uint32_t variant; + } pf[] = { + {"pid", "PID", 0}, + {"mem_bytes", "memory usage (bytes)", 1}, + {"engine_gfx_ns", "GFX engine time (ns)", 2}, + {"engine_enc_ns", "ENC engine time (ns)", 3}, + {"gtt_mem_MB", "GTT memory (MB)", 4}, + {"cpu_mem_MB", "CPU memory (MB)", 5}, + {"vram_mem_MB", "VRAM memory (MB)", 6}, + }; + + for (int p = 0; p < 2; ++p) { + for (size_t f = 0; f < sizeof(pf) / sizeof(pf[0]); ++f) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), + "process%d_%s:device=%d", p, pf[f].suffix, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d process %d %s", d, p, pf[f].descr); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) return PAPI_ENOMEM; + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = pf[f].variant; + ev->subvariant = p; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_process_info; + htable_insert(htable, ev->name, ev); + idx++; + } + } } /* ECC totals & enabled mask (where supported) */ if (amdsmi_get_gpu_total_ecc_count_p) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 361ae4689..91107536b 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -241,7 +241,7 @@ int access_amdsmi_link_metrics(int mode, void *arg) { return PAPI_OK; } -int access_amdsmi_process_count(int mode, void *arg) { +int access_amdsmi_process_info(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; if (!amdsmi_get_gpu_process_list_p) @@ -249,30 +249,52 @@ int access_amdsmi_process_count(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - uint32_t cap = 32; - int tries = 0; - amdsmi_proc_info_t *list = NULL; - amdsmi_status_t st; - while (tries++ < 4) { - list = (amdsmi_proc_info_t *)papi_calloc(cap, sizeof(amdsmi_proc_info_t)); - if (!list) - return PAPI_ENOMEM; - uint32_t maxp = cap; - st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); - if (st == AMDSMI_STATUS_OUT_OF_RESOURCES) { - papi_free(list); - cap *= 2; - continue; - } - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(list); - return PAPI_EMISC; - } - event->value = (int64_t)maxp; - papi_free(list); + + amdsmi_proc_info_t list[2]; + uint32_t maxp = 2; + amdsmi_status_t st = + amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint32_t proc = event->subvariant; + if (proc >= 2) { + event->value = 0; return PAPI_OK; } - return PAPI_EMISC; + + if (proc >= maxp) { + event->value = 0; + return PAPI_OK; + } + + amdsmi_proc_info_t *p = &list[proc]; + switch (event->variant) { + case 0: + event->value = (int64_t)p->pid; + break; + case 1: + event->value = (int64_t)p->mem; + break; + case 2: + event->value = (int64_t)p->engine_usage.gfx; + break; + case 3: + event->value = (int64_t)p->engine_usage.enc; + break; + case 4: + event->value = (int64_t)p->memory_usage.gtt_mem; + break; + case 5: + event->value = (int64_t)p->memory_usage.cpu_mem; + break; + case 6: + event->value = (int64_t)p->memory_usage.vram_mem; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; } int access_amdsmi_ecc_total(int mode, void *arg) { if (mode != PAPI_MODE_READ) diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 6b89f6080..063e14893 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -168,7 +168,7 @@ int access_amdsmi_gpu_string_hash(int mode, void *arg); int access_amdsmi_enumeration_info(int mode, void *arg); int access_amdsmi_asic_info(int mode, void *arg); int access_amdsmi_link_metrics(int mode, void *arg); -int access_amdsmi_process_count(int mode, void *arg); +int access_amdsmi_process_info(int mode, void *arg); int access_amdsmi_ecc_total(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 8fda2b6da..330ca6c82 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -77,30 +77,35 @@ int main(int argc, char *argv[]) continue; } - printf("[%4d] Testing %s...\n", event_index++, ev_name); - - //------------------------------------------------------------------- - // 4-7. Create a fresh EventSet, read the event, print, cleanup - //------------------------------------------------------------------- - int eventSet = PAPI_NULL; - CALL_PAPI_OK(PAPI_create_eventset(&eventSet)); - CALL_PAPI_OK(PAPI_assign_eventset_component(eventSet, cid)); - - ret = PAPI_add_event(eventSet, ev_code); - if (ret != PAPI_OK) { - fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); - continue; - } - - long long value = 0; - CALL_PAPI_OK(PAPI_start(eventSet)); - CALL_PAPI_OK(PAPI_stop(eventSet, &value)); - - printf(" %-60s = %lld\n\n", ev_name, value); - - CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + if (std::strncmp(ev_name, "process", 7) == 0) { + printf("[%4d] Skipping %s (process events not testable)\n\n", event_index++, ev_name); + continue; + } + + printf("[%4d] Testing %s...\n", event_index++, ev_name); + + //------------------------------------------------------------------- + // 4-7. Create a fresh EventSet, read the event, print, cleanup + //------------------------------------------------------------------- + int eventSet = PAPI_NULL; + CALL_PAPI_OK(PAPI_create_eventset(&eventSet)); + CALL_PAPI_OK(PAPI_assign_eventset_component(eventSet, cid)); + + ret = PAPI_add_event(eventSet, ev_code); + if (ret != PAPI_OK) { + fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + continue; + } + + long long value = 0; + CALL_PAPI_OK(PAPI_start(eventSet)); + CALL_PAPI_OK(PAPI_stop(eventSet, &value)); + + printf(" %-60s = %lld\n\n", ev_name, value); + + CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); } while (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_EVENTS, cid) == PAPI_OK); From 972d83296e3cc956640a1e16797bd47352d0e5c6 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:17:34 -0400 Subject: [PATCH 062/147] Expose per-block GPU ECC error counts --- src/components/amd_smi/amds.c | 49 +++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 26 +++++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 76 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 8c1bde150..4538826c3 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3684,6 +3684,55 @@ static int init_event_table(void) { htable_insert(htable, ev_ecctd->name, ev_ecctd); idx++; } + if (amdsmi_get_gpu_ecc_count_p) { + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", + "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", + "jpeg", "ih", "mpio"}; + const char *cnt_names[] = {"correctable", "uncorrectable", "deferred"}; + size_t nb = sizeof(blocks) / sizeof(blocks[0]); + for (size_t bi = 0; bi < nb; ++bi) { + amdsmi_error_count_t ec; + if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == + AMDSMI_STATUS_SUCCESS) { + for (int t = 0; t < 3; ++t) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", + block_names[bi], cnt_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s block ECC %s errors", d, block_names[bi], + cnt_names[t]); + native_event_t *ev_blk = &ntv_table.events[idx]; + ev_blk->id = idx; + ev_blk->name = strdup(name_buf); + ev_blk->descr = strdup(descr_buf); + ev_blk->device = d; + ev_blk->value = 0; + ev_blk->mode = PAPI_MODE_READ; + ev_blk->variant = t; + ev_blk->subvariant = (uint32_t)blocks[bi]; + ev_blk->open_func = open_simple; + ev_blk->close_func = close_simple; + ev_blk->start_func = start_simple; + ev_blk->stop_func = stop_simple; + ev_blk->access_func = access_amdsmi_ecc_block; + htable_insert(htable, ev_blk->name, ev_blk); + idx++; + } + } + } + } if (amdsmi_get_gpu_ecc_enabled_p) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 91107536b..2228e3b5a 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -320,6 +320,32 @@ int access_amdsmi_ecc_total(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_ecc_block(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ecc_count_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_error_count_t ec; + memset(&ec, 0, sizeof(ec)); + amdsmi_status_t st = + amdsmi_get_gpu_ecc_count_p(device_handles[event->device], + (amdsmi_gpu_block_t)event->subvariant, &ec); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint64_t v = (event->variant == 0) ? ec.correctable_count + : (event->variant == 1) ? ec.uncorrectable_count + : ec.deferred_count; + if ((int64_t)v < 0) + return PAPI_ENOSUPP; + event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; + return PAPI_OK; +} + int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 063e14893..6b5f631fd 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -170,6 +170,7 @@ int access_amdsmi_asic_info(int mode, void *arg); int access_amdsmi_link_metrics(int mode, void *arg); int access_amdsmi_process_info(int mode, void *arg); int access_amdsmi_ecc_total(int mode, void *arg); +int access_amdsmi_ecc_block(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); From e95a9d378553ce61eb34ecb14d21e9a7c3cec671 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:23:12 -0400 Subject: [PATCH 063/147] Add per-block ECC status events --- src/components/amd_smi/amds.c | 45 +++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 18 ++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 64 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 4538826c3..87e45d56f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3733,6 +3733,51 @@ static int init_event_table(void) { } } } + if (amdsmi_get_gpu_ecc_status_p) { + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", + "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", + "jpeg", "ih", "mpio"}; + size_t nb = sizeof(blocks) / sizeof(blocks[0]); + for (size_t bi = 0; bi < nb; ++bi) { + amdsmi_ras_err_state_t st; + if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == + AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", + block_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s block ECC status", d, block_names[bi]); + native_event_t *ev_blk = &ntv_table.events[idx]; + ev_blk->id = idx; + ev_blk->name = strdup(name_buf); + ev_blk->descr = strdup(descr_buf); + ev_blk->device = d; + ev_blk->value = 0; + ev_blk->mode = PAPI_MODE_READ; + ev_blk->variant = 0; + ev_blk->subvariant = (uint32_t)blocks[bi]; + ev_blk->open_func = open_simple; + ev_blk->close_func = close_simple; + ev_blk->start_func = start_simple; + ev_blk->stop_func = stop_simple; + ev_blk->access_func = access_amdsmi_ecc_status; + htable_insert(htable, ev_blk->name, ev_blk); + idx++; + } + } + } if (amdsmi_get_gpu_ecc_enabled_p) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 2228e3b5a..a7c038d21 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -346,6 +346,24 @@ int access_amdsmi_ecc_block(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_ecc_status(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ecc_status_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_ras_err_state_t st; + amdsmi_status_t rc = amdsmi_get_gpu_ecc_status_p( + device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &st); + if (rc != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)st; + return PAPI_OK; +} + int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 6b5f631fd..86f65e0e2 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -171,6 +171,7 @@ int access_amdsmi_link_metrics(int mode, void *arg); int access_amdsmi_process_info(int mode, void *arg); int access_amdsmi_ecc_total(int mode, void *arg); int access_amdsmi_ecc_block(int mode, void *arg); +int access_amdsmi_ecc_status(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); From 1c4252966fad8c9f05e21447e2cade1c45dbc6c7 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:30:15 -0400 Subject: [PATCH 064/147] Expose energy counter resolution and timestamp --- src/components/amd_smi/amds.c | 38 +++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 18 ++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 87e45d56f..17d3b77aa 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -2301,6 +2301,44 @@ static int init_event_table(void) { ev_energy->access_func = access_amdsmi_energy_count; htable_insert(htable, ev_energy->name, ev_energy); idx++; + + snprintf(name_buf, sizeof(name_buf), "energy_resolution:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter resolution (microJoules)", d); + native_event_t *ev_res = &ntv_table.events[idx]; + ev_res->id = idx; + ev_res->name = strdup(name_buf); + ev_res->descr = strdup(descr_buf); + ev_res->device = d; + ev_res->value = 0; + ev_res->mode = PAPI_MODE_READ; + ev_res->variant = 1; + ev_res->subvariant = 0; + ev_res->open_func = open_simple; + ev_res->close_func = close_simple; + ev_res->start_func = start_simple; + ev_res->stop_func = stop_simple; + ev_res->access_func = access_amdsmi_energy_count; + htable_insert(htable, ev_res->name, ev_res); + idx++; + + snprintf(name_buf, sizeof(name_buf), "energy_timestamp:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter timestamp (ns)", d); + native_event_t *ev_ts = &ntv_table.events[idx]; + ev_ts->id = idx; + ev_ts->name = strdup(name_buf); + ev_ts->descr = strdup(descr_buf); + ev_ts->device = d; + ev_ts->value = 0; + ev_ts->mode = PAPI_MODE_READ; + ev_ts->variant = 2; + ev_ts->subvariant = 0; + ev_ts->open_func = open_simple; + ev_ts->close_func = close_simple; + ev_ts->start_func = start_simple; + ev_ts->stop_func = stop_simple; + ev_ts->access_func = access_amdsmi_energy_count; + htable_insert(htable, ev_ts->name, ev_ts); + idx++; } /* GPU power profile information */ for (int d = 0; d < gpu_count; ++d) { diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index a7c038d21..664f7923c 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -846,8 +846,22 @@ int access_amdsmi_energy_count(int mode, void *arg) { if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; } - // Convert energy count to microJoules - event->value = (int64_t)(energy * resolution); + switch (event->variant) { + case 0: + // Convert accumulated energy count to microJoules + event->value = (int64_t)(energy * resolution); + break; + case 1: + // Resolution reported in Joules; convert to microJoules per count + event->value = (int64_t)(resolution * 1.0e6); + break; + case 2: + // Raw timestamp returned by the SMI library (nanoseconds) + event->value = (int64_t)timestamp; + break; + default: + return PAPI_EMISC; + } return PAPI_OK; } int access_amdsmi_power_profile_status(int mode, void *arg) { From 1ce97c2f1478f802f7ef13d338f5ca03475526fd Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:39:28 -0400 Subject: [PATCH 065/147] Expose overdrive voltage curve ranges --- src/components/amd_smi/amds.c | 163 +++++++++++++++++++----- src/components/amd_smi/amds_accessors.c | 48 +++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 182 insertions(+), 30 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 17d3b77aa..43ddd73c8 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -982,39 +982,142 @@ static int init_event_table(void) { } } } - // GPU OD voltage curve regions count event + // GPU OD voltage curve region events if (amdsmi_get_gpu_od_volt_curve_regions_p) { uint32_t num_regions = 0; - amdsmi_freq_volt_region_t *buf = NULL; - // Try once with small buffer to check support - buf = (amdsmi_freq_volt_region_t *)papi_calloc(4, sizeof(amdsmi_freq_volt_region_t)); - if (buf) { - num_regions = 4; - amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, buf); - papi_free(buf); - if (st == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; + amdsmi_status_t st = + amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, + NULL); + if (st == AMDSMI_STATUS_SUCCESS && num_regions > 0) { + amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *) + papi_calloc(num_regions, sizeof(amdsmi_freq_volt_region_t)); + if (regs) { + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], + &num_regions, regs); + if (st == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + papi_free(regs); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), + "volt_curve_regions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of voltage curve regions", d); + native_event_t *ev_vcr = &ntv_table.events[idx]; + ev_vcr->id = idx; + ev_vcr->name = strdup(name_buf); + ev_vcr->descr = strdup(descr_buf); + ev_vcr->device = d; + ev_vcr->value = 0; + ev_vcr->mode = PAPI_MODE_READ; + ev_vcr->variant = 0; + ev_vcr->subvariant = 0; + ev_vcr->open_func = open_simple; + ev_vcr->close_func = close_simple; + ev_vcr->start_func = start_simple; + ev_vcr->stop_func = stop_simple; + ev_vcr->access_func = access_amdsmi_od_volt_regions_count; + htable_insert(htable, ev_vcr->name, ev_vcr); + idx++; + + for (uint32_t r = 0; r < num_regions; ++r) { + if (idx + 4 > MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(regs); + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + + snprintf(name_buf, sizeof(name_buf), + "volt_curve_freq_min:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency lower bound", d, + r); + native_event_t *ev_fmin = &ntv_table.events[idx]; + ev_fmin->id = idx; + ev_fmin->name = strdup(name_buf); + ev_fmin->descr = strdup(descr_buf); + ev_fmin->device = d; + ev_fmin->value = 0; + ev_fmin->mode = PAPI_MODE_READ; + ev_fmin->variant = 0; /* freq lower */ + ev_fmin->subvariant = r; + ev_fmin->open_func = open_simple; + ev_fmin->close_func = close_simple; + ev_fmin->start_func = start_simple; + ev_fmin->stop_func = stop_simple; + ev_fmin->access_func = access_amdsmi_od_volt_curve_range; + htable_insert(htable, ev_fmin->name, ev_fmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "volt_curve_freq_max:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency upper bound", d, + r); + native_event_t *ev_fmax = &ntv_table.events[idx]; + ev_fmax->id = idx; + ev_fmax->name = strdup(name_buf); + ev_fmax->descr = strdup(descr_buf); + ev_fmax->device = d; + ev_fmax->value = 0; + ev_fmax->mode = PAPI_MODE_READ; + ev_fmax->variant = 1; /* freq upper */ + ev_fmax->subvariant = r; + ev_fmax->open_func = open_simple; + ev_fmax->close_func = close_simple; + ev_fmax->start_func = start_simple; + ev_fmax->stop_func = stop_simple; + ev_fmax->access_func = access_amdsmi_od_volt_curve_range; + htable_insert(htable, ev_fmax->name, ev_fmax); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "volt_curve_volt_min:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u voltage lower bound", d, + r); + native_event_t *ev_vmin = &ntv_table.events[idx]; + ev_vmin->id = idx; + ev_vmin->name = strdup(name_buf); + ev_vmin->descr = strdup(descr_buf); + ev_vmin->device = d; + ev_vmin->value = 0; + ev_vmin->mode = PAPI_MODE_READ; + ev_vmin->variant = 2; /* volt lower */ + ev_vmin->subvariant = r; + ev_vmin->open_func = open_simple; + ev_vmin->close_func = close_simple; + ev_vmin->start_func = start_simple; + ev_vmin->stop_func = stop_simple; + ev_vmin->access_func = access_amdsmi_od_volt_curve_range; + htable_insert(htable, ev_vmin->name, ev_vmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "volt_curve_volt_max:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u voltage upper bound", d, + r); + native_event_t *ev_vmax = &ntv_table.events[idx]; + ev_vmax->id = idx; + ev_vmax->name = strdup(name_buf); + ev_vmax->descr = strdup(descr_buf); + ev_vmax->device = d; + ev_vmax->value = 0; + ev_vmax->mode = PAPI_MODE_READ; + ev_vmax->variant = 3; /* volt upper */ + ev_vmax->subvariant = r; + ev_vmax->open_func = open_simple; + ev_vmax->close_func = close_simple; + ev_vmax->start_func = start_simple; + ev_vmax->stop_func = stop_simple; + ev_vmax->access_func = access_amdsmi_od_volt_curve_range; + htable_insert(htable, ev_vmax->name, ev_vmax); + idx++; + } } - snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of voltage curve regions", d); - native_event_t *ev_vcr = &ntv_table.events[idx]; - ev_vcr->id = idx; - ev_vcr->name = strdup(name_buf); - ev_vcr->descr = strdup(descr_buf); - ev_vcr->device = d; - ev_vcr->value = 0; - ev_vcr->mode = PAPI_MODE_READ; - ev_vcr->variant = 0; - ev_vcr->subvariant = 0; - ev_vcr->open_func = open_simple; - ev_vcr->close_func = close_simple; - ev_vcr->start_func = start_simple; - ev_vcr->stop_func = stop_simple; - ev_vcr->access_func = access_amdsmi_od_volt_regions_count; - htable_insert(htable, ev_vcr->name, ev_vcr); - idx++; + papi_free(regs); } } } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 664f7923c..cbb2ca01c 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1267,6 +1267,54 @@ int access_amdsmi_od_volt_regions_count(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_od_volt_curve_range(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + + uint32_t num = 0; + amdsmi_status_t st = + amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], + &num, NULL); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (event->subvariant >= num) return PAPI_EMISC; + + amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *) + papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); + if (!regs) return PAPI_ENOMEM; + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], + &num, regs); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(regs); + return PAPI_EMISC; + } + + amdsmi_freq_volt_region_t r = regs[event->subvariant]; + papi_free(regs); + + switch (event->variant) { + case 0: + event->value = (int64_t)r.freq_range.lower_bound; + break; + case 1: + event->value = (int64_t)r.freq_range.upper_bound; + break; + case 2: + event->value = (int64_t)r.volt_range.lower_bound; + break; + case 3: + event->value = (int64_t)r.volt_range.upper_bound; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + int access_amdsmi_perf_level(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 86f65e0e2..2754dbaca 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -181,6 +181,7 @@ int access_amdsmi_cache_stat(int mode, void *arg); int access_amdsmi_overdrive_level(int mode, void *arg); int access_amdsmi_mem_overdrive_level(int mode, void *arg); int access_amdsmi_od_volt_regions_count(int mode, void *arg); +int access_amdsmi_od_volt_curve_range(int mode, void *arg); int access_amdsmi_perf_level(int mode, void *arg); int access_amdsmi_pm_metrics_count(int mode, void *arg); int access_amdsmi_pm_metric_value(int mode, void *arg); From c23569e94343b67e6a2d2a31fb4c36973dd3a3c9 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:46:18 -0400 Subject: [PATCH 066/147] Expose overdrive voltage info metrics --- src/components/amd_smi/amds.c | 226 ++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 56 ++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 283 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 43ddd73c8..4a02f188f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1121,6 +1121,232 @@ static int init_event_table(void) { } } } + if (amdsmi_get_gpu_od_volt_info_p) { + amdsmi_od_volt_freq_data_t info; + if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == + AMDSMI_STATUS_SUCCESS) { + if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > + MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), + "od_curr_sclk_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current SCLK frequency lower bound", d); + native_event_t *ev_csmin = &ntv_table.events[idx]; + ev_csmin->id = idx; + ev_csmin->name = strdup(name_buf); + ev_csmin->descr = strdup(descr_buf); + ev_csmin->device = d; + ev_csmin->value = 0; + ev_csmin->mode = PAPI_MODE_READ; + ev_csmin->variant = 0; + ev_csmin->subvariant = 0; + ev_csmin->open_func = open_simple; + ev_csmin->close_func = close_simple; + ev_csmin->start_func = start_simple; + ev_csmin->stop_func = stop_simple; + ev_csmin->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_csmin->name, ev_csmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_curr_sclk_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current SCLK frequency upper bound", d); + native_event_t *ev_csmax = &ntv_table.events[idx]; + ev_csmax->id = idx; + ev_csmax->name = strdup(name_buf); + ev_csmax->descr = strdup(descr_buf); + ev_csmax->device = d; + ev_csmax->value = 0; + ev_csmax->mode = PAPI_MODE_READ; + ev_csmax->variant = 1; + ev_csmax->subvariant = 0; + ev_csmax->open_func = open_simple; + ev_csmax->close_func = close_simple; + ev_csmax->start_func = start_simple; + ev_csmax->stop_func = stop_simple; + ev_csmax->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_csmax->name, ev_csmax); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_curr_mclk_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current MCLK frequency lower bound", d); + native_event_t *ev_cmmin = &ntv_table.events[idx]; + ev_cmmin->id = idx; + ev_cmmin->name = strdup(name_buf); + ev_cmmin->descr = strdup(descr_buf); + ev_cmmin->device = d; + ev_cmmin->value = 0; + ev_cmmin->mode = PAPI_MODE_READ; + ev_cmmin->variant = 2; + ev_cmmin->subvariant = 0; + ev_cmmin->open_func = open_simple; + ev_cmmin->close_func = close_simple; + ev_cmmin->start_func = start_simple; + ev_cmmin->stop_func = stop_simple; + ev_cmmin->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_cmmin->name, ev_cmmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_curr_mclk_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current MCLK frequency upper bound", d); + native_event_t *ev_cmmax = &ntv_table.events[idx]; + ev_cmmax->id = idx; + ev_cmmax->name = strdup(name_buf); + ev_cmmax->descr = strdup(descr_buf); + ev_cmmax->device = d; + ev_cmmax->value = 0; + ev_cmmax->mode = PAPI_MODE_READ; + ev_cmmax->variant = 3; + ev_cmmax->subvariant = 0; + ev_cmmax->open_func = open_simple; + ev_cmmax->close_func = close_simple; + ev_cmmax->start_func = start_simple; + ev_cmmax->stop_func = stop_simple; + ev_cmmax->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_cmmax->name, ev_cmmax); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_sclk_limit_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d SCLK frequency limit lower bound", d); + native_event_t *ev_slmin = &ntv_table.events[idx]; + ev_slmin->id = idx; + ev_slmin->name = strdup(name_buf); + ev_slmin->descr = strdup(descr_buf); + ev_slmin->device = d; + ev_slmin->value = 0; + ev_slmin->mode = PAPI_MODE_READ; + ev_slmin->variant = 4; + ev_slmin->subvariant = 0; + ev_slmin->open_func = open_simple; + ev_slmin->close_func = close_simple; + ev_slmin->start_func = start_simple; + ev_slmin->stop_func = stop_simple; + ev_slmin->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_slmin->name, ev_slmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_sclk_limit_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d SCLK frequency limit upper bound", d); + native_event_t *ev_slmax = &ntv_table.events[idx]; + ev_slmax->id = idx; + ev_slmax->name = strdup(name_buf); + ev_slmax->descr = strdup(descr_buf); + ev_slmax->device = d; + ev_slmax->value = 0; + ev_slmax->mode = PAPI_MODE_READ; + ev_slmax->variant = 5; + ev_slmax->subvariant = 0; + ev_slmax->open_func = open_simple; + ev_slmax->close_func = close_simple; + ev_slmax->start_func = start_simple; + ev_slmax->stop_func = stop_simple; + ev_slmax->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_slmax->name, ev_slmax); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_mclk_limit_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d MCLK frequency limit lower bound", d); + native_event_t *ev_mlmin = &ntv_table.events[idx]; + ev_mlmin->id = idx; + ev_mlmin->name = strdup(name_buf); + ev_mlmin->descr = strdup(descr_buf); + ev_mlmin->device = d; + ev_mlmin->value = 0; + ev_mlmin->mode = PAPI_MODE_READ; + ev_mlmin->variant = 6; + ev_mlmin->subvariant = 0; + ev_mlmin->open_func = open_simple; + ev_mlmin->close_func = close_simple; + ev_mlmin->start_func = start_simple; + ev_mlmin->stop_func = stop_simple; + ev_mlmin->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_mlmin->name, ev_mlmin); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "od_mclk_limit_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d MCLK frequency limit upper bound", d); + native_event_t *ev_mlmax = &ntv_table.events[idx]; + ev_mlmax->id = idx; + ev_mlmax->name = strdup(name_buf); + ev_mlmax->descr = strdup(descr_buf); + ev_mlmax->device = d; + ev_mlmax->value = 0; + ev_mlmax->mode = PAPI_MODE_READ; + ev_mlmax->variant = 7; + ev_mlmax->subvariant = 0; + ev_mlmax->open_func = open_simple; + ev_mlmax->close_func = close_simple; + ev_mlmax->start_func = start_simple; + ev_mlmax->stop_func = stop_simple; + ev_mlmax->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_mlmax->name, ev_mlmax); + idx++; + + for (uint32_t p = 0; p < AMDSMI_NUM_VOLTAGE_CURVE_POINTS; ++p) { + if (idx + 2 > MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), + "volt_curve_point_freq:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve point %u frequency", d, p); + native_event_t *ev_pf = &ntv_table.events[idx]; + ev_pf->id = idx; + ev_pf->name = strdup(name_buf); + ev_pf->descr = strdup(descr_buf); + ev_pf->device = d; + ev_pf->value = 0; + ev_pf->mode = PAPI_MODE_READ; + ev_pf->variant = 8; + ev_pf->subvariant = p; + ev_pf->open_func = open_simple; + ev_pf->close_func = close_simple; + ev_pf->start_func = start_simple; + ev_pf->stop_func = stop_simple; + ev_pf->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_pf->name, ev_pf); + idx++; + + snprintf(name_buf, sizeof(name_buf), + "volt_curve_point_volt:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve point %u voltage", d, p); + native_event_t *ev_pv = &ntv_table.events[idx]; + ev_pv->id = idx; + ev_pv->name = strdup(name_buf); + ev_pv->descr = strdup(descr_buf); + ev_pv->device = d; + ev_pv->value = 0; + ev_pv->mode = PAPI_MODE_READ; + ev_pv->variant = 9; + ev_pv->subvariant = p; + ev_pv->open_func = open_simple; + ev_pv->close_func = close_simple; + ev_pv->start_func = start_simple; + ev_pv->stop_func = stop_simple; + ev_pv->access_func = access_amdsmi_od_volt_info; + htable_insert(htable, ev_pv->name, ev_pv); + idx++; + } + } + } // GPU SoC P-state policy event if (amdsmi_get_soc_pstate_p) { amdsmi_dpm_policy_t policy; diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index cbb2ca01c..0b633b5cc 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1315,6 +1315,62 @@ int access_amdsmi_od_volt_curve_range(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_od_volt_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_od_volt_freq_data_t info; + amdsmi_status_t st = + amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + + switch (event->variant) { + case 0: + event->value = (int64_t)info.curr_sclk_range.lower_bound; + break; + case 1: + event->value = (int64_t)info.curr_sclk_range.upper_bound; + break; + case 2: + event->value = (int64_t)info.curr_mclk_range.lower_bound; + break; + case 3: + event->value = (int64_t)info.curr_mclk_range.upper_bound; + break; + case 4: + event->value = (int64_t)info.sclk_freq_limits.lower_bound; + break; + case 5: + event->value = (int64_t)info.sclk_freq_limits.upper_bound; + break; + case 6: + event->value = (int64_t)info.mclk_freq_limits.lower_bound; + break; + case 7: + event->value = (int64_t)info.mclk_freq_limits.upper_bound; + break; + case 8: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) + return PAPI_EMISC; + event->value = + (int64_t)info.curve.vc_points[event->subvariant].frequency; + break; + case 9: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) + return PAPI_EMISC; + event->value = + (int64_t)info.curve.vc_points[event->subvariant].voltage; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + int access_amdsmi_perf_level(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 2754dbaca..769cf4b6f 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -182,6 +182,7 @@ int access_amdsmi_overdrive_level(int mode, void *arg); int access_amdsmi_mem_overdrive_level(int mode, void *arg); int access_amdsmi_od_volt_regions_count(int mode, void *arg); int access_amdsmi_od_volt_curve_range(int mode, void *arg); +int access_amdsmi_od_volt_info(int mode, void *arg); int access_amdsmi_perf_level(int mode, void *arg); int access_amdsmi_pm_metrics_count(int mode, void *arg); int access_amdsmi_pm_metric_value(int mode, void *arg); From 3bc258a6d5dc066479c8017893131ea2667346b1 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:50:44 -0400 Subject: [PATCH 067/147] Enumerate all GPU voltage sensors and metrics --- src/components/amd_smi/amds.c | 48 +++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 4a02f188f..f9f28938a 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -950,19 +950,45 @@ static int init_event_table(void) { } // GPU voltage metrics events if (amdsmi_get_gpu_volt_metric_p) { - // Sensor 0: VDDGFX, Sensor 1: VDDBOARD - int sensors[2] = {0, 1}; - const char *sensor_names[2] = {"vddgfx", "vddboard"}; - for (int si = 0; si < 2; ++si) { - int64_t volt_val = 0; - amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)sensors[si], AMDSMI_VOLT_CURRENT, &volt_val); - if (st == AMDSMI_STATUS_SUCCESS) { + const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", + "vddmisc", "vdd", "vdd2", "vddboard"}; + const amdsmi_voltage_metric_t metrics[] = { + AMDSMI_VOLT_CURRENT, AMDSMI_VOLT_MAX, AMDSMI_VOLT_MIN_CRIT, + AMDSMI_VOLT_MIN, AMDSMI_VOLT_MAX_CRIT, AMDSMI_VOLT_AVERAGE, + AMDSMI_VOLT_LOWEST, AMDSMI_VOLT_HIGHEST}; + const char *metric_names[] = {"current", "max", "min_crit", + "min", "max_crit", "average", + "lowest", "highest"}; + const uint32_t max_sensors = 8; + for (uint32_t s = 0; s < max_sensors; ++s) { + int64_t dummy = 0; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p( + device_handles[d], (amdsmi_voltage_type_t)s, AMDSMI_VOLT_CURRENT, + &dummy); + if (st != AMDSMI_STATUS_SUCCESS) continue; + for (uint32_t m = 0; m < sizeof(metrics) / sizeof(metrics[0]); ++m) { + st = amdsmi_get_gpu_volt_metric_p(device_handles[d], + (amdsmi_voltage_type_t)s, + metrics[m], &dummy); + if (st != AMDSMI_STATUS_SUCCESS) continue; if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "voltage_%s:device=%d", sensor_names[si], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s voltage (mV)", d, sensor_names[si]); + const char *sname = + (s < sizeof(sensor_names) / sizeof(sensor_names[0])) + ? sensor_names[s] + : "sensor"; + char sensor_buf[32]; + if (strcmp(sname, "sensor") == 0) { + snprintf(sensor_buf, sizeof(sensor_buf), "sensor%u", s); + sname = sensor_buf; + } + snprintf(name_buf, sizeof(name_buf), "voltage_%s_%s:device=%d", + sname, metric_names[m], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s %s voltage (mV)", d, sname, + metric_names[m]); native_event_t *ev_volt = &ntv_table.events[idx]; ev_volt->id = idx; ev_volt->name = strdup(name_buf); @@ -970,8 +996,8 @@ static int init_event_table(void) { ev_volt->device = d; ev_volt->value = 0; ev_volt->mode = PAPI_MODE_READ; - ev_volt->variant = AMDSMI_VOLT_CURRENT; - ev_volt->subvariant = sensors[si]; + ev_volt->variant = metrics[m]; + ev_volt->subvariant = s; ev_volt->open_func = open_simple; ev_volt->close_func = close_simple; ev_volt->start_func = start_simple; From ad02d4a2aa44c87ff3b968a1e17133e89500d16c Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:55:24 -0400 Subject: [PATCH 068/147] Expose PCIe information metrics --- src/components/amd_smi/amds.c | 131 ++++++++++++++++++++++++ src/components/amd_smi/amds_accessors.c | 58 +++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 190 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index f9f28938a..a98a1b766 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -724,6 +724,137 @@ static int init_event_table(void) { idx++; } } + // PCIe information events + if (amdsmi_get_pcie_info_p) { + amdsmi_pcie_info_t pcie_info; + if (amdsmi_get_pcie_info_p(device_handles[d], &pcie_info) == AMDSMI_STATUS_SUCCESS) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_max_width:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); + native_event_t *ev_pw = &ntv_table.events[idx]; + ev_pw->id = idx; ev_pw->name = strdup(name_buf); ev_pw->descr = strdup(descr_buf); + ev_pw->device = d; ev_pw->value = 0; ev_pw->mode = PAPI_MODE_READ; ev_pw->variant = 0; ev_pw->subvariant = 0; + ev_pw->open_func = open_simple; ev_pw->close_func = close_simple; ev_pw->start_func = start_simple; ev_pw->stop_func = stop_simple; + ev_pw->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pw->name, ev_pw); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); + native_event_t *ev_ps = &ntv_table.events[idx]; + ev_ps->id = idx; ev_ps->name = strdup(name_buf); ev_ps->descr = strdup(descr_buf); + ev_ps->device = d; ev_ps->value = 0; ev_ps->mode = PAPI_MODE_READ; ev_ps->variant = 1; ev_ps->subvariant = 0; + ev_ps->open_func = open_simple; ev_ps->close_func = close_simple; ev_ps->start_func = start_simple; ev_ps->stop_func = stop_simple; + ev_ps->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_ps->name, ev_ps); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe interface version", d); + native_event_t *ev_piv = &ntv_table.events[idx]; + ev_piv->id = idx; ev_piv->name = strdup(name_buf); ev_piv->descr = strdup(descr_buf); + ev_piv->device = d; ev_piv->value = 0; ev_piv->mode = PAPI_MODE_READ; ev_piv->variant = 2; ev_piv->subvariant = 0; + ev_piv->open_func = open_simple; ev_piv->close_func = close_simple; ev_piv->start_func = start_simple; ev_piv->stop_func = stop_simple; + ev_piv->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_piv->name, ev_piv); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_slot_type:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe slot type", d); + native_event_t *ev_pst = &ntv_table.events[idx]; + ev_pst->id = idx; ev_pst->name = strdup(name_buf); ev_pst->descr = strdup(descr_buf); + ev_pst->device = d; ev_pst->value = 0; ev_pst->mode = PAPI_MODE_READ; ev_pst->variant = 3; ev_pst->subvariant = 0; + ev_pst->open_func = open_simple; ev_pst->close_func = close_simple; ev_pst->start_func = start_simple; ev_pst->stop_func = stop_simple; + ev_pst->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pst->name, ev_pst); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_max_interface_version:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe interface version", d); + native_event_t *ev_pmiv = &ntv_table.events[idx]; + ev_pmiv->id = idx; ev_pmiv->name = strdup(name_buf); ev_pmiv->descr = strdup(descr_buf); + ev_pmiv->device = d; ev_pmiv->value = 0; ev_pmiv->mode = PAPI_MODE_READ; ev_pmiv->variant = 4; ev_pmiv->subvariant = 0; + ev_pmiv->open_func = open_simple; ev_pmiv->close_func = close_simple; ev_pmiv->start_func = start_simple; ev_pmiv->stop_func = stop_simple; + ev_pmiv->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pmiv->name, ev_pmiv); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); + native_event_t *ev_cw = &ntv_table.events[idx]; + ev_cw->id = idx; ev_cw->name = strdup(name_buf); ev_cw->descr = strdup(descr_buf); + ev_cw->device = d; ev_cw->value = 0; ev_cw->mode = PAPI_MODE_READ; ev_cw->variant = 5; ev_cw->subvariant = 0; + ev_cw->open_func = open_simple; ev_cw->close_func = close_simple; ev_cw->start_func = start_simple; ev_cw->stop_func = stop_simple; + ev_cw->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cw->name, ev_cw); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); + native_event_t *ev_cs = &ntv_table.events[idx]; + ev_cs->id = idx; ev_cs->name = strdup(name_buf); ev_cs->descr = strdup(descr_buf); + ev_cs->device = d; ev_cs->value = 0; ev_cs->mode = PAPI_MODE_READ; ev_cs->variant = 6; ev_cs->subvariant = 0; + ev_cs->open_func = open_simple; ev_cs->close_func = close_simple; ev_cs->start_func = start_simple; ev_cs->stop_func = stop_simple; + ev_cs->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cs->name, ev_cs); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); + native_event_t *ev_cb = &ntv_table.events[idx]; + ev_cb->id = idx; ev_cb->name = strdup(name_buf); ev_cb->descr = strdup(descr_buf); + ev_cb->device = d; ev_cb->value = 0; ev_cb->mode = PAPI_MODE_READ; ev_cb->variant = 7; ev_cb->subvariant = 0; + ev_cb->open_func = open_simple; ev_cb->close_func = close_simple; ev_cb->start_func = start_simple; ev_cb->stop_func = stop_simple; + ev_cb->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cb->name, ev_cb); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + native_event_t *ev_pr = &ntv_table.events[idx]; + ev_pr->id = idx; ev_pr->name = strdup(name_buf); ev_pr->descr = strdup(descr_buf); + ev_pr->device = d; ev_pr->value = 0; ev_pr->mode = PAPI_MODE_READ; ev_pr->variant = 8; ev_pr->subvariant = 0; + ev_pr->open_func = open_simple; ev_pr->close_func = close_simple; ev_pr->start_func = start_simple; ev_pr->stop_func = stop_simple; + ev_pr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pr->name, ev_pr); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recovery_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); + native_event_t *ev_pl0 = &ntv_table.events[idx]; + ev_pl0->id = idx; ev_pl0->name = strdup(name_buf); ev_pl0->descr = strdup(descr_buf); + ev_pl0->device = d; ev_pl0->value = 0; ev_pl0->mode = PAPI_MODE_READ; ev_pl0->variant = 9; ev_pl0->subvariant = 0; + ev_pl0->open_func = open_simple; ev_pl0->close_func = close_simple; ev_pl0->start_func = start_simple; ev_pl0->stop_func = stop_simple; + ev_pl0->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pl0->name, ev_pl0); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_replay_rollover_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); + native_event_t *ev_prr = &ntv_table.events[idx]; + ev_prr->id = idx; ev_prr->name = strdup(name_buf); ev_prr->descr = strdup(descr_buf); + ev_prr->device = d; ev_prr->value = 0; ev_prr->mode = PAPI_MODE_READ; ev_prr->variant = 10; ev_prr->subvariant = 0; + ev_prr->open_func = open_simple; ev_prr->close_func = close_simple; ev_prr->start_func = start_simple; ev_prr->stop_func = stop_simple; + ev_prr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_prr->name, ev_prr); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); + native_event_t *ev_pns = &ntv_table.events[idx]; + ev_pns->id = idx; ev_pns->name = strdup(name_buf); ev_pns->descr = strdup(descr_buf); + ev_pns->device = d; ev_pns->value = 0; ev_pns->mode = PAPI_MODE_READ; ev_pns->variant = 11; ev_pns->subvariant = 0; + ev_pns->open_func = open_simple; ev_pns->close_func = close_simple; ev_pns->start_func = start_simple; ev_pns->stop_func = stop_simple; + ev_pns->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pns->name, ev_pns); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_nak_received_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); + native_event_t *ev_pnr = &ntv_table.events[idx]; + ev_pnr->id = idx; ev_pnr->name = strdup(name_buf); ev_pnr->descr = strdup(descr_buf); + ev_pnr->device = d; ev_pnr->value = 0; ev_pnr->mode = PAPI_MODE_READ; ev_pnr->variant = 12; ev_pnr->subvariant = 0; + ev_pnr->open_func = open_simple; ev_pnr->close_func = close_simple; ev_pnr->start_func = start_simple; ev_pnr->stop_func = stop_simple; + ev_pnr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pnr->name, ev_pnr); idx++; + + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_other_end_recovery_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe other-end recovery count", d); + native_event_t *ev_poer = &ntv_table.events[idx]; + ev_poer->id = idx; ev_poer->name = strdup(name_buf); ev_poer->descr = strdup(descr_buf); + ev_poer->device = d; ev_poer->value = 0; ev_poer->mode = PAPI_MODE_READ; ev_poer->variant = 13; ev_poer->subvariant = 0; + ev_poer->open_func = open_simple; ev_poer->close_func = close_simple; ev_poer->start_func = start_simple; ev_poer->stop_func = stop_simple; + ev_poer->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_poer->name, ev_poer); idx++; + } + } // GPU Overdrive level events if (amdsmi_get_gpu_overdrive_level_p) { uint32_t od_val; diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 0b633b5cc..cea61cfdd 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1818,6 +1818,64 @@ int access_amdsmi_power_sensor(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_pcie_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_pcie_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_pcie_info_t info; + amdsmi_status_t st = amdsmi_get_pcie_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = info.pcie_static.max_pcie_width; + break; + case 1: + event->value = (int64_t)info.pcie_static.max_pcie_speed; + break; + case 2: + event->value = (int64_t)info.pcie_static.pcie_interface_version; + break; + case 3: + event->value = (int64_t)info.pcie_static.slot_type; + break; + case 4: + event->value = (int64_t)info.pcie_static.max_pcie_interface_version; + break; + case 5: + event->value = info.pcie_metric.pcie_width; + break; + case 6: + event->value = (int64_t)info.pcie_metric.pcie_speed; + break; + case 7: + event->value = (int64_t)info.pcie_metric.pcie_bandwidth; + break; + case 8: + event->value = (int64_t)info.pcie_metric.pcie_replay_count; + break; + case 9: + event->value = (int64_t)info.pcie_metric.pcie_l0_to_recovery_count; + break; + case 10: + event->value = (int64_t)info.pcie_metric.pcie_replay_roll_over_count; + break; + case 11: + event->value = (int64_t)info.pcie_metric.pcie_nak_sent_count; + break; + case 12: + event->value = (int64_t)info.pcie_metric.pcie_nak_received_count; + break; + case 13: + event->value = (int64_t)info.pcie_metric.pcie_lc_perf_other_end_recovery_count; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + int access_amdsmi_event_notification(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; if (!amdsmi_init_gpu_event_notification_p || !amdsmi_set_gpu_event_notification_mask_p || diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 769cf4b6f..313e55639 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -209,6 +209,7 @@ int access_amdsmi_bad_page_count(int mode, void *arg); int access_amdsmi_bad_page_threshold(int mode, void *arg); int access_amdsmi_bad_page_record(int mode, void *arg); int access_amdsmi_power_sensor(int mode, void *arg); +int access_amdsmi_pcie_info(int mode, void *arg); int access_amdsmi_event_notification(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI From e51c700706d9ee9ed3e9d1ab248315557bf09d75 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:01:37 -0400 Subject: [PATCH 069/147] Expose SoC P-state policy count --- src/components/amd_smi/amds.c | 24 +++++++++++++++++++++++- src/components/amd_smi/amds_accessors.c | 15 +++++++++++++++ src/components/amd_smi/amds_priv.h | 1 + 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a98a1b766..f9fa461aa 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1504,7 +1504,7 @@ static int init_event_table(void) { } } } - // GPU SoC P-state policy event + // GPU SoC P-state policy events if (amdsmi_get_soc_pstate_p) { amdsmi_dpm_policy_t policy; if (amdsmi_get_soc_pstate_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { @@ -1530,6 +1530,28 @@ static int init_event_table(void) { ev_soc->access_func = access_amdsmi_soc_pstate_id; htable_insert(htable, ev_soc->name, ev_soc); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d supported SoC P-state count", d); + native_event_t *ev_soc_sup = &ntv_table.events[idx]; + ev_soc_sup->id = idx; + ev_soc_sup->name = strdup(name_buf); + ev_soc_sup->descr = strdup(descr_buf); + ev_soc_sup->device = d; + ev_soc_sup->value = 0; + ev_soc_sup->mode = PAPI_MODE_READ; + ev_soc_sup->variant = 0; + ev_soc_sup->subvariant = 0; + ev_soc_sup->open_func = open_simple; + ev_soc_sup->close_func = close_simple; + ev_soc_sup->start_func = start_simple; + ev_soc_sup->stop_func = stop_simple; + ev_soc_sup->access_func = access_amdsmi_soc_pstate_supported; + htable_insert(htable, ev_soc_sup->name, ev_soc_sup); + idx++; } } // GPU XGMI PLPD policy events diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index cea61cfdd..1c7b44257 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1622,6 +1622,21 @@ int access_amdsmi_soc_pstate_id(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_soc_pstate_supported(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; + + amdsmi_dpm_policy_t pol = {0}; + amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (uint64_t)pol.num_supported; + return PAPI_OK; +} + int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 313e55639..98675b2ed 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -198,6 +198,7 @@ int access_amdsmi_vram_type(int mode, void *arg); int access_amdsmi_vram_vendor(int mode, void *arg); int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); +int access_amdsmi_soc_pstate_supported(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); From e91d702a5d091382fa2de87be72e9e49e77043b3 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:04:31 -0400 Subject: [PATCH 070/147] Format AMD SMI sources with 140-column limit --- src/components/amd_smi/amds.c | 1895 +++++++++++------ src/components/amd_smi/amds_accessors.c | 813 ++++--- src/components/amd_smi/amds_priv.h | 21 +- .../amd_smi/tests/amdsmi_basics.cpp | 164 +- 4 files changed, 1813 insertions(+), 1080 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index f9fa461aa..3c9d3a15c 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -5,22 +5,20 @@ #include "papi.h" #include "papi_memory.h" #include +#include #include #include -#include -#include #include - #define MAX_EVENTS_PER_DEVICE 1024 +#include +#define MAX_EVENTS_PER_DEVICE 1024 unsigned int _amd_smi_lock; /* Pointers to AMD SMI library functions (dynamically loaded) */ amdsmi_status_t (*amdsmi_init_p)(uint64_t); amdsmi_status_t (*amdsmi_shut_down_p)(void); amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, - uint32_t *); -amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, - int64_t *); +amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); +amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); @@ -114,8 +112,7 @@ amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, u amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); -amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, - amdsmi_temp_range_refresh_rate_t *); +amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); #endif @@ -142,9 +139,13 @@ native_event_table_t *ntv_table_p = NULL; /* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). */ static int silence_stderr_begin(void) { int devnull = open("/dev/null", O_WRONLY); - if (devnull < 0) return -1; + if (devnull < 0) + return -1; int saved = dup(STDERR_FILENO); - if (saved < 0) { close(devnull); return -1; } + if (saved < 0) { + close(devnull); + return -1; + } (void)dup2(devnull, STDERR_FILENO); close(devnull); return saved; @@ -510,7 +511,7 @@ int amds_shutdown(void) { shutdown_event_table(); shutdown_device_table(); htable_shutdown(htable); - + return amdsmi_shut_down_p(); } int amds_err_get_last(const char **err_string) { @@ -556,10 +557,8 @@ static int init_event_table(void) { if (!device_handles || !device_handles[d]) { continue; } - - - - // GPU cache info events + + // GPU cache info events if (amdsmi_get_gpu_cache_info_p) { amdsmi_gpu_cache_info_t cache_info; if (amdsmi_get_gpu_cache_info_p(device_handles[d], &cache_info) == AMDSMI_STATUS_SUCCESS) { @@ -579,7 +578,8 @@ static int init_event_table(void) { strcpy(type_str, "cache"); } snprintf(name_buf, sizeof(name_buf), "L%u_%s_size:device=%d", level, type_str, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s size (bytes)", d, level, (strcmp(type_str, "cache")==0 ? "cache" : (strcmp(type_str, "icache")==0 ? "instruction cache" : "data cache"))); + snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s size (bytes)", d, level, + (strcmp(type_str, "cache") == 0 ? "cache" : (strcmp(type_str, "icache") == 0 ? "instruction cache" : "data cache"))); native_event_t *ev_cache = &ntv_table.events[idx]; ev_cache->id = idx; ev_cache->name = strdup(name_buf); @@ -597,7 +597,10 @@ static int init_event_table(void) { htable_insert(htable, ev_cache->name, ev_cache); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", level, type_str, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s max CUs sharing", d, level, type_str); native_event_t *ev_cache_cu = &ntv_table.events[idx]; @@ -617,7 +620,10 @@ static int init_event_table(void) { htable_insert(htable, ev_cache_cu->name, ev_cache_cu); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", level, type_str, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", d, level, type_str); native_event_t *ev_cache_inst = &ntv_table.events[idx]; @@ -643,7 +649,10 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_info_p) { amdsmi_vram_info_t vram_info; if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); native_event_t *ev_vram_width = &ntv_table.events[idx]; @@ -663,7 +672,10 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_width->name, ev_vram_width); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", d); native_event_t *ev_vram_size = &ntv_table.events[idx]; @@ -683,7 +695,10 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_size->name, ev_vram_size); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM type id", d); native_event_t *ev_vram_type = &ntv_table.events[idx]; @@ -703,7 +718,10 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_type->name, ev_vram_type); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor id", d); native_event_t *ev_vram_vendor = &ntv_table.events[idx]; @@ -728,131 +746,327 @@ static int init_event_table(void) { if (amdsmi_get_pcie_info_p) { amdsmi_pcie_info_t pcie_info; if (amdsmi_get_pcie_info_p(device_handles[d], &pcie_info) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_max_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); native_event_t *ev_pw = &ntv_table.events[idx]; - ev_pw->id = idx; ev_pw->name = strdup(name_buf); ev_pw->descr = strdup(descr_buf); - ev_pw->device = d; ev_pw->value = 0; ev_pw->mode = PAPI_MODE_READ; ev_pw->variant = 0; ev_pw->subvariant = 0; - ev_pw->open_func = open_simple; ev_pw->close_func = close_simple; ev_pw->start_func = start_simple; ev_pw->stop_func = stop_simple; - ev_pw->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pw->name, ev_pw); idx++; + ev_pw->id = idx; + ev_pw->name = strdup(name_buf); + ev_pw->descr = strdup(descr_buf); + ev_pw->device = d; + ev_pw->value = 0; + ev_pw->mode = PAPI_MODE_READ; + ev_pw->variant = 0; + ev_pw->subvariant = 0; + ev_pw->open_func = open_simple; + ev_pw->close_func = close_simple; + ev_pw->start_func = start_simple; + ev_pw->stop_func = stop_simple; + ev_pw->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pw->name, ev_pw); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); native_event_t *ev_ps = &ntv_table.events[idx]; - ev_ps->id = idx; ev_ps->name = strdup(name_buf); ev_ps->descr = strdup(descr_buf); - ev_ps->device = d; ev_ps->value = 0; ev_ps->mode = PAPI_MODE_READ; ev_ps->variant = 1; ev_ps->subvariant = 0; - ev_ps->open_func = open_simple; ev_ps->close_func = close_simple; ev_ps->start_func = start_simple; ev_ps->stop_func = stop_simple; - ev_ps->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_ps->name, ev_ps); idx++; + ev_ps->id = idx; + ev_ps->name = strdup(name_buf); + ev_ps->descr = strdup(descr_buf); + ev_ps->device = d; + ev_ps->value = 0; + ev_ps->mode = PAPI_MODE_READ; + ev_ps->variant = 1; + ev_ps->subvariant = 0; + ev_ps->open_func = open_simple; + ev_ps->close_func = close_simple; + ev_ps->start_func = start_simple; + ev_ps->stop_func = stop_simple; + ev_ps->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_ps->name, ev_ps); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe interface version", d); native_event_t *ev_piv = &ntv_table.events[idx]; - ev_piv->id = idx; ev_piv->name = strdup(name_buf); ev_piv->descr = strdup(descr_buf); - ev_piv->device = d; ev_piv->value = 0; ev_piv->mode = PAPI_MODE_READ; ev_piv->variant = 2; ev_piv->subvariant = 0; - ev_piv->open_func = open_simple; ev_piv->close_func = close_simple; ev_piv->start_func = start_simple; ev_piv->stop_func = stop_simple; - ev_piv->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_piv->name, ev_piv); idx++; + ev_piv->id = idx; + ev_piv->name = strdup(name_buf); + ev_piv->descr = strdup(descr_buf); + ev_piv->device = d; + ev_piv->value = 0; + ev_piv->mode = PAPI_MODE_READ; + ev_piv->variant = 2; + ev_piv->subvariant = 0; + ev_piv->open_func = open_simple; + ev_piv->close_func = close_simple; + ev_piv->start_func = start_simple; + ev_piv->stop_func = stop_simple; + ev_piv->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_piv->name, ev_piv); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_slot_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe slot type", d); native_event_t *ev_pst = &ntv_table.events[idx]; - ev_pst->id = idx; ev_pst->name = strdup(name_buf); ev_pst->descr = strdup(descr_buf); - ev_pst->device = d; ev_pst->value = 0; ev_pst->mode = PAPI_MODE_READ; ev_pst->variant = 3; ev_pst->subvariant = 0; - ev_pst->open_func = open_simple; ev_pst->close_func = close_simple; ev_pst->start_func = start_simple; ev_pst->stop_func = stop_simple; - ev_pst->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pst->name, ev_pst); idx++; + ev_pst->id = idx; + ev_pst->name = strdup(name_buf); + ev_pst->descr = strdup(descr_buf); + ev_pst->device = d; + ev_pst->value = 0; + ev_pst->mode = PAPI_MODE_READ; + ev_pst->variant = 3; + ev_pst->subvariant = 0; + ev_pst->open_func = open_simple; + ev_pst->close_func = close_simple; + ev_pst->start_func = start_simple; + ev_pst->stop_func = stop_simple; + ev_pst->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pst->name, ev_pst); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_max_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe interface version", d); native_event_t *ev_pmiv = &ntv_table.events[idx]; - ev_pmiv->id = idx; ev_pmiv->name = strdup(name_buf); ev_pmiv->descr = strdup(descr_buf); - ev_pmiv->device = d; ev_pmiv->value = 0; ev_pmiv->mode = PAPI_MODE_READ; ev_pmiv->variant = 4; ev_pmiv->subvariant = 0; - ev_pmiv->open_func = open_simple; ev_pmiv->close_func = close_simple; ev_pmiv->start_func = start_simple; ev_pmiv->stop_func = stop_simple; - ev_pmiv->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pmiv->name, ev_pmiv); idx++; + ev_pmiv->id = idx; + ev_pmiv->name = strdup(name_buf); + ev_pmiv->descr = strdup(descr_buf); + ev_pmiv->device = d; + ev_pmiv->value = 0; + ev_pmiv->mode = PAPI_MODE_READ; + ev_pmiv->variant = 4; + ev_pmiv->subvariant = 0; + ev_pmiv->open_func = open_simple; + ev_pmiv->close_func = close_simple; + ev_pmiv->start_func = start_simple; + ev_pmiv->stop_func = stop_simple; + ev_pmiv->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pmiv->name, ev_pmiv); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); native_event_t *ev_cw = &ntv_table.events[idx]; - ev_cw->id = idx; ev_cw->name = strdup(name_buf); ev_cw->descr = strdup(descr_buf); - ev_cw->device = d; ev_cw->value = 0; ev_cw->mode = PAPI_MODE_READ; ev_cw->variant = 5; ev_cw->subvariant = 0; - ev_cw->open_func = open_simple; ev_cw->close_func = close_simple; ev_cw->start_func = start_simple; ev_cw->stop_func = stop_simple; - ev_cw->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cw->name, ev_cw); idx++; + ev_cw->id = idx; + ev_cw->name = strdup(name_buf); + ev_cw->descr = strdup(descr_buf); + ev_cw->device = d; + ev_cw->value = 0; + ev_cw->mode = PAPI_MODE_READ; + ev_cw->variant = 5; + ev_cw->subvariant = 0; + ev_cw->open_func = open_simple; + ev_cw->close_func = close_simple; + ev_cw->start_func = start_simple; + ev_cw->stop_func = stop_simple; + ev_cw->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_cw->name, ev_cw); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); native_event_t *ev_cs = &ntv_table.events[idx]; - ev_cs->id = idx; ev_cs->name = strdup(name_buf); ev_cs->descr = strdup(descr_buf); - ev_cs->device = d; ev_cs->value = 0; ev_cs->mode = PAPI_MODE_READ; ev_cs->variant = 6; ev_cs->subvariant = 0; - ev_cs->open_func = open_simple; ev_cs->close_func = close_simple; ev_cs->start_func = start_simple; ev_cs->stop_func = stop_simple; - ev_cs->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cs->name, ev_cs); idx++; + ev_cs->id = idx; + ev_cs->name = strdup(name_buf); + ev_cs->descr = strdup(descr_buf); + ev_cs->device = d; + ev_cs->value = 0; + ev_cs->mode = PAPI_MODE_READ; + ev_cs->variant = 6; + ev_cs->subvariant = 0; + ev_cs->open_func = open_simple; + ev_cs->close_func = close_simple; + ev_cs->start_func = start_simple; + ev_cs->stop_func = stop_simple; + ev_cs->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_cs->name, ev_cs); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); native_event_t *ev_cb = &ntv_table.events[idx]; - ev_cb->id = idx; ev_cb->name = strdup(name_buf); ev_cb->descr = strdup(descr_buf); - ev_cb->device = d; ev_cb->value = 0; ev_cb->mode = PAPI_MODE_READ; ev_cb->variant = 7; ev_cb->subvariant = 0; - ev_cb->open_func = open_simple; ev_cb->close_func = close_simple; ev_cb->start_func = start_simple; ev_cb->stop_func = stop_simple; - ev_cb->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_cb->name, ev_cb); idx++; + ev_cb->id = idx; + ev_cb->name = strdup(name_buf); + ev_cb->descr = strdup(descr_buf); + ev_cb->device = d; + ev_cb->value = 0; + ev_cb->mode = PAPI_MODE_READ; + ev_cb->variant = 7; + ev_cb->subvariant = 0; + ev_cb->open_func = open_simple; + ev_cb->close_func = close_simple; + ev_cb->start_func = start_simple; + ev_cb->stop_func = stop_simple; + ev_cb->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_cb->name, ev_cb); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); native_event_t *ev_pr = &ntv_table.events[idx]; - ev_pr->id = idx; ev_pr->name = strdup(name_buf); ev_pr->descr = strdup(descr_buf); - ev_pr->device = d; ev_pr->value = 0; ev_pr->mode = PAPI_MODE_READ; ev_pr->variant = 8; ev_pr->subvariant = 0; - ev_pr->open_func = open_simple; ev_pr->close_func = close_simple; ev_pr->start_func = start_simple; ev_pr->stop_func = stop_simple; - ev_pr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pr->name, ev_pr); idx++; + ev_pr->id = idx; + ev_pr->name = strdup(name_buf); + ev_pr->descr = strdup(descr_buf); + ev_pr->device = d; + ev_pr->value = 0; + ev_pr->mode = PAPI_MODE_READ; + ev_pr->variant = 8; + ev_pr->subvariant = 0; + ev_pr->open_func = open_simple; + ev_pr->close_func = close_simple; + ev_pr->start_func = start_simple; + ev_pr->stop_func = stop_simple; + ev_pr->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pr->name, ev_pr); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); native_event_t *ev_pl0 = &ntv_table.events[idx]; - ev_pl0->id = idx; ev_pl0->name = strdup(name_buf); ev_pl0->descr = strdup(descr_buf); - ev_pl0->device = d; ev_pl0->value = 0; ev_pl0->mode = PAPI_MODE_READ; ev_pl0->variant = 9; ev_pl0->subvariant = 0; - ev_pl0->open_func = open_simple; ev_pl0->close_func = close_simple; ev_pl0->start_func = start_simple; ev_pl0->stop_func = stop_simple; - ev_pl0->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pl0->name, ev_pl0); idx++; + ev_pl0->id = idx; + ev_pl0->name = strdup(name_buf); + ev_pl0->descr = strdup(descr_buf); + ev_pl0->device = d; + ev_pl0->value = 0; + ev_pl0->mode = PAPI_MODE_READ; + ev_pl0->variant = 9; + ev_pl0->subvariant = 0; + ev_pl0->open_func = open_simple; + ev_pl0->close_func = close_simple; + ev_pl0->start_func = start_simple; + ev_pl0->stop_func = stop_simple; + ev_pl0->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pl0->name, ev_pl0); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_replay_rollover_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); native_event_t *ev_prr = &ntv_table.events[idx]; - ev_prr->id = idx; ev_prr->name = strdup(name_buf); ev_prr->descr = strdup(descr_buf); - ev_prr->device = d; ev_prr->value = 0; ev_prr->mode = PAPI_MODE_READ; ev_prr->variant = 10; ev_prr->subvariant = 0; - ev_prr->open_func = open_simple; ev_prr->close_func = close_simple; ev_prr->start_func = start_simple; ev_prr->stop_func = stop_simple; - ev_prr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_prr->name, ev_prr); idx++; + ev_prr->id = idx; + ev_prr->name = strdup(name_buf); + ev_prr->descr = strdup(descr_buf); + ev_prr->device = d; + ev_prr->value = 0; + ev_prr->mode = PAPI_MODE_READ; + ev_prr->variant = 10; + ev_prr->subvariant = 0; + ev_prr->open_func = open_simple; + ev_prr->close_func = close_simple; + ev_prr->start_func = start_simple; + ev_prr->stop_func = stop_simple; + ev_prr->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_prr->name, ev_prr); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); native_event_t *ev_pns = &ntv_table.events[idx]; - ev_pns->id = idx; ev_pns->name = strdup(name_buf); ev_pns->descr = strdup(descr_buf); - ev_pns->device = d; ev_pns->value = 0; ev_pns->mode = PAPI_MODE_READ; ev_pns->variant = 11; ev_pns->subvariant = 0; - ev_pns->open_func = open_simple; ev_pns->close_func = close_simple; ev_pns->start_func = start_simple; ev_pns->stop_func = stop_simple; - ev_pns->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pns->name, ev_pns); idx++; + ev_pns->id = idx; + ev_pns->name = strdup(name_buf); + ev_pns->descr = strdup(descr_buf); + ev_pns->device = d; + ev_pns->value = 0; + ev_pns->mode = PAPI_MODE_READ; + ev_pns->variant = 11; + ev_pns->subvariant = 0; + ev_pns->open_func = open_simple; + ev_pns->close_func = close_simple; + ev_pns->start_func = start_simple; + ev_pns->stop_func = stop_simple; + ev_pns->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pns->name, ev_pns); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_nak_received_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); native_event_t *ev_pnr = &ntv_table.events[idx]; - ev_pnr->id = idx; ev_pnr->name = strdup(name_buf); ev_pnr->descr = strdup(descr_buf); - ev_pnr->device = d; ev_pnr->value = 0; ev_pnr->mode = PAPI_MODE_READ; ev_pnr->variant = 12; ev_pnr->subvariant = 0; - ev_pnr->open_func = open_simple; ev_pnr->close_func = close_simple; ev_pnr->start_func = start_simple; ev_pnr->stop_func = stop_simple; - ev_pnr->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_pnr->name, ev_pnr); idx++; + ev_pnr->id = idx; + ev_pnr->name = strdup(name_buf); + ev_pnr->descr = strdup(descr_buf); + ev_pnr->device = d; + ev_pnr->value = 0; + ev_pnr->mode = PAPI_MODE_READ; + ev_pnr->variant = 12; + ev_pnr->subvariant = 0; + ev_pnr->open_func = open_simple; + ev_pnr->close_func = close_simple; + ev_pnr->start_func = start_simple; + ev_pnr->stop_func = stop_simple; + ev_pnr->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_pnr->name, ev_pnr); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_other_end_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe other-end recovery count", d); native_event_t *ev_poer = &ntv_table.events[idx]; - ev_poer->id = idx; ev_poer->name = strdup(name_buf); ev_poer->descr = strdup(descr_buf); - ev_poer->device = d; ev_poer->value = 0; ev_poer->mode = PAPI_MODE_READ; ev_poer->variant = 13; ev_poer->subvariant = 0; - ev_poer->open_func = open_simple; ev_poer->close_func = close_simple; ev_poer->start_func = start_simple; ev_poer->stop_func = stop_simple; - ev_poer->access_func = access_amdsmi_pcie_info; htable_insert(htable, ev_poer->name, ev_poer); idx++; + ev_poer->id = idx; + ev_poer->name = strdup(name_buf); + ev_poer->descr = strdup(descr_buf); + ev_poer->device = d; + ev_poer->value = 0; + ev_poer->mode = PAPI_MODE_READ; + ev_poer->variant = 13; + ev_poer->subvariant = 0; + ev_poer->open_func = open_simple; + ev_poer->close_func = close_simple; + ev_poer->start_func = start_simple; + ev_poer->stop_func = stop_simple; + ev_poer->access_func = access_amdsmi_pcie_info; + htable_insert(htable, ev_poer->name, ev_poer); + idx++; } } // GPU Overdrive level events @@ -938,7 +1152,7 @@ static int init_event_table(void) { idx++; } } - + // GPU PM metrics count event if (amdsmi_get_gpu_pm_metrics_info_p) { amdsmi_name_value_t *metrics = NULL; @@ -949,7 +1163,12 @@ static int init_event_table(void) { silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (metrics) papi_free(metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (metrics) + papi_free(metrics); + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); native_event_t *ev_pmcount = &ntv_table.events[idx]; @@ -970,7 +1189,11 @@ static int init_event_table(void) { idx++; for (uint32_t i = 0; i < mcount; ++i) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(metrics); + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } char metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(metrics[i].name, metric_name, sizeof(metric_name)); snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, d); @@ -993,13 +1216,17 @@ static int init_event_table(void) { idx++; } } - if (metrics) papi_free(metrics); + if (metrics) + papi_free(metrics); } // GPU RAS feature (ECC schema) event if (amdsmi_get_gpu_ras_feature_info_p) { amdsmi_ras_feature_t ras; if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); native_event_t *ev_ras = &ntv_table.events[idx]; @@ -1019,7 +1246,10 @@ static int init_event_table(void) { htable_insert(htable, ev_ras->name, ev_ras); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); native_event_t *ev_ras_ver = &ntv_table.events[idx]; @@ -1041,23 +1271,21 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_ras_block_features_enabled_p) { - amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, - AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, - AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, - AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, - AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = { - "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", - "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", - "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", + "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_ras_err_state_t st; if (amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "ras_block_%s_state:device=%d", block_names[bi], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS state for %s block", d, block_names[bi]); native_event_t *ev_blk = &ntv_table.events[idx]; @@ -1081,45 +1309,32 @@ static int init_event_table(void) { } // GPU voltage metrics events if (amdsmi_get_gpu_volt_metric_p) { - const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", - "vddmisc", "vdd", "vdd2", "vddboard"}; - const amdsmi_voltage_metric_t metrics[] = { - AMDSMI_VOLT_CURRENT, AMDSMI_VOLT_MAX, AMDSMI_VOLT_MIN_CRIT, - AMDSMI_VOLT_MIN, AMDSMI_VOLT_MAX_CRIT, AMDSMI_VOLT_AVERAGE, - AMDSMI_VOLT_LOWEST, AMDSMI_VOLT_HIGHEST}; - const char *metric_names[] = {"current", "max", "min_crit", - "min", "max_crit", "average", - "lowest", "highest"}; + const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", "vddmisc", "vdd", "vdd2", "vddboard"}; + const amdsmi_voltage_metric_t metrics[] = {AMDSMI_VOLT_CURRENT, AMDSMI_VOLT_MAX, AMDSMI_VOLT_MIN_CRIT, AMDSMI_VOLT_MIN, + AMDSMI_VOLT_MAX_CRIT, AMDSMI_VOLT_AVERAGE, AMDSMI_VOLT_LOWEST, AMDSMI_VOLT_HIGHEST}; + const char *metric_names[] = {"current", "max", "min_crit", "min", "max_crit", "average", "lowest", "highest"}; const uint32_t max_sensors = 8; for (uint32_t s = 0; s < max_sensors; ++s) { int64_t dummy = 0; - amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p( - device_handles[d], (amdsmi_voltage_type_t)s, AMDSMI_VOLT_CURRENT, - &dummy); - if (st != AMDSMI_STATUS_SUCCESS) continue; + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)s, AMDSMI_VOLT_CURRENT, &dummy); + if (st != AMDSMI_STATUS_SUCCESS) + continue; for (uint32_t m = 0; m < sizeof(metrics) / sizeof(metrics[0]); ++m) { - st = amdsmi_get_gpu_volt_metric_p(device_handles[d], - (amdsmi_voltage_type_t)s, - metrics[m], &dummy); - if (st != AMDSMI_STATUS_SUCCESS) continue; + st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)s, metrics[m], &dummy); + if (st != AMDSMI_STATUS_SUCCESS) + continue; if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - const char *sname = - (s < sizeof(sensor_names) / sizeof(sensor_names[0])) - ? sensor_names[s] - : "sensor"; + const char *sname = (s < sizeof(sensor_names) / sizeof(sensor_names[0])) ? sensor_names[s] : "sensor"; char sensor_buf[32]; if (strcmp(sname, "sensor") == 0) { snprintf(sensor_buf, sizeof(sensor_buf), "sensor%u", s); sname = sensor_buf; } - snprintf(name_buf, sizeof(name_buf), "voltage_%s_%s:device=%d", - sname, metric_names[m], d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d %s %s voltage (mV)", d, sname, - metric_names[m]); + snprintf(name_buf, sizeof(name_buf), "voltage_%s_%s:device=%d", sname, metric_names[m], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s voltage (mV)", d, sname, metric_names[m]); native_event_t *ev_volt = &ntv_table.events[idx]; ev_volt->id = idx; ev_volt->name = strdup(name_buf); @@ -1142,25 +1357,19 @@ static int init_event_table(void) { // GPU OD voltage curve region events if (amdsmi_get_gpu_od_volt_curve_regions_p) { uint32_t num_regions = 0; - amdsmi_status_t st = - amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, - NULL); + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, NULL); if (st == AMDSMI_STATUS_SUCCESS && num_regions > 0) { - amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *) - papi_calloc(num_regions, sizeof(amdsmi_freq_volt_region_t)); + amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *)papi_calloc(num_regions, sizeof(amdsmi_freq_volt_region_t)); if (regs) { - st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], - &num_regions, regs); + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, regs); if (st == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); papi_free(regs); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "volt_curve_regions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d number of voltage curve regions", d); + snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d number of voltage curve regions", d); native_event_t *ev_vcr = &ntv_table.events[idx]; ev_vcr->id = idx; ev_vcr->name = strdup(name_buf); @@ -1185,11 +1394,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "volt_curve_freq_min:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u frequency lower bound", d, - r); + snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_min:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u frequency lower bound", d, r); native_event_t *ev_fmin = &ntv_table.events[idx]; ev_fmin->id = idx; ev_fmin->name = strdup(name_buf); @@ -1207,11 +1413,8 @@ static int init_event_table(void) { htable_insert(htable, ev_fmin->name, ev_fmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "volt_curve_freq_max:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u frequency upper bound", d, - r); + snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_max:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u frequency upper bound", d, r); native_event_t *ev_fmax = &ntv_table.events[idx]; ev_fmax->id = idx; ev_fmax->name = strdup(name_buf); @@ -1229,11 +1432,8 @@ static int init_event_table(void) { htable_insert(htable, ev_fmax->name, ev_fmax); idx++; - snprintf(name_buf, sizeof(name_buf), - "volt_curve_volt_min:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u voltage lower bound", d, - r); + snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_min:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage lower bound", d, r); native_event_t *ev_vmin = &ntv_table.events[idx]; ev_vmin->id = idx; ev_vmin->name = strdup(name_buf); @@ -1251,11 +1451,8 @@ static int init_event_table(void) { htable_insert(htable, ev_vmin->name, ev_vmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "volt_curve_volt_max:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u voltage upper bound", d, - r); + snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_max:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage upper bound", d, r); native_event_t *ev_vmax = &ntv_table.events[idx]; ev_vmax->id = idx; ev_vmax->name = strdup(name_buf); @@ -1280,17 +1477,13 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_od_volt_info_p) { amdsmi_od_volt_freq_data_t info; - if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == - AMDSMI_STATUS_SUCCESS) { - if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > - MAX_EVENTS_PER_DEVICE * device_count) { + if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == AMDSMI_STATUS_SUCCESS) { + if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "od_curr_sclk_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d current SCLK frequency lower bound", d); + snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency lower bound", d); native_event_t *ev_csmin = &ntv_table.events[idx]; ev_csmin->id = idx; ev_csmin->name = strdup(name_buf); @@ -1308,10 +1501,8 @@ static int init_event_table(void) { htable_insert(htable, ev_csmin->name, ev_csmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_curr_sclk_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d current SCLK frequency upper bound", d); + snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency upper bound", d); native_event_t *ev_csmax = &ntv_table.events[idx]; ev_csmax->id = idx; ev_csmax->name = strdup(name_buf); @@ -1329,10 +1520,8 @@ static int init_event_table(void) { htable_insert(htable, ev_csmax->name, ev_csmax); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_curr_mclk_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d current MCLK frequency lower bound", d); + snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency lower bound", d); native_event_t *ev_cmmin = &ntv_table.events[idx]; ev_cmmin->id = idx; ev_cmmin->name = strdup(name_buf); @@ -1350,10 +1539,8 @@ static int init_event_table(void) { htable_insert(htable, ev_cmmin->name, ev_cmmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_curr_mclk_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d current MCLK frequency upper bound", d); + snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency upper bound", d); native_event_t *ev_cmmax = &ntv_table.events[idx]; ev_cmmax->id = idx; ev_cmmax->name = strdup(name_buf); @@ -1371,10 +1558,8 @@ static int init_event_table(void) { htable_insert(htable, ev_cmmax->name, ev_cmmax); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_sclk_limit_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d SCLK frequency limit lower bound", d); + snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit lower bound", d); native_event_t *ev_slmin = &ntv_table.events[idx]; ev_slmin->id = idx; ev_slmin->name = strdup(name_buf); @@ -1392,10 +1577,8 @@ static int init_event_table(void) { htable_insert(htable, ev_slmin->name, ev_slmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_sclk_limit_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d SCLK frequency limit upper bound", d); + snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit upper bound", d); native_event_t *ev_slmax = &ntv_table.events[idx]; ev_slmax->id = idx; ev_slmax->name = strdup(name_buf); @@ -1413,10 +1596,8 @@ static int init_event_table(void) { htable_insert(htable, ev_slmax->name, ev_slmax); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_mclk_limit_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d MCLK frequency limit lower bound", d); + snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_min:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit lower bound", d); native_event_t *ev_mlmin = &ntv_table.events[idx]; ev_mlmin->id = idx; ev_mlmin->name = strdup(name_buf); @@ -1434,10 +1615,8 @@ static int init_event_table(void) { htable_insert(htable, ev_mlmin->name, ev_mlmin); idx++; - snprintf(name_buf, sizeof(name_buf), - "od_mclk_limit_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d MCLK frequency limit upper bound", d); + snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_max:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit upper bound", d); native_event_t *ev_mlmax = &ntv_table.events[idx]; ev_mlmax->id = idx; ev_mlmax->name = strdup(name_buf); @@ -1460,10 +1639,8 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "volt_curve_point_freq:device=%d:point=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve point %u frequency", d, p); + snprintf(name_buf, sizeof(name_buf), "volt_curve_point_freq:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u frequency", d, p); native_event_t *ev_pf = &ntv_table.events[idx]; ev_pf->id = idx; ev_pf->name = strdup(name_buf); @@ -1481,10 +1658,8 @@ static int init_event_table(void) { htable_insert(htable, ev_pf->name, ev_pf); idx++; - snprintf(name_buf, sizeof(name_buf), - "volt_curve_point_volt:device=%d:point=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d voltage curve point %u voltage", d, p); + snprintf(name_buf, sizeof(name_buf), "volt_curve_point_volt:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u voltage", d, p); native_event_t *ev_pv = &ntv_table.events[idx]; ev_pv->id = idx; ev_pv->name = strdup(name_buf); @@ -1617,7 +1792,12 @@ static int init_event_table(void) { silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (reg_metrics) + papi_free(reg_metrics); + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", reg_names[rt], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of %s register metrics", d, reg_names[rt]); native_event_t *ev_reg = &ntv_table.events[idx]; @@ -1638,7 +1818,12 @@ static int init_event_table(void) { idx++; for (uint32_t i = 0; i < num_metrics; ++i) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (reg_metrics) + papi_free(reg_metrics); + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } char reg_metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(reg_metrics[i].name, reg_metric_name, sizeof(reg_metric_name)); snprintf(name_buf, sizeof(name_buf), "reg_%s_%s:device=%d", reg_names[rt], reg_metric_name, d); @@ -1661,12 +1846,11 @@ static int init_event_table(void) { idx++; } } - if (reg_metrics) papi_free(reg_metrics); + if (reg_metrics) + papi_free(reg_metrics); } } - - for (int si = 0; si < num_temp_sensors && si < 8; ++si) { // Test each sensor individually first int64_t sensor_test_val; @@ -1868,7 +2052,9 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_usage_p) { amdsmi_vram_usage_t vu; if (amdsmi_get_gpu_vram_usage_p(device_handles[d], &vu) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_total_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM (MB)", d); native_event_t *ev_tot = &ntv_table.events[idx]; @@ -1887,7 +2073,9 @@ static int init_event_table(void) { ev_tot->access_func = access_amdsmi_vram_usage; htable_insert(htable, ev_tot->name, ev_tot); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_used_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d used VRAM (MB)", d); native_event_t *ev_use = &ntv_table.events[idx]; @@ -2353,8 +2541,7 @@ static int init_event_table(void) { } // GPU Virtualization Mode amdsmi_virtualization_mode_t vmode; - if (amdsmi_get_gpu_virtualization_mode_p && - amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_virtualization_mode_p && amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); native_event_t *ev_vmode = &ntv_table.events[idx]; @@ -2448,16 +2635,29 @@ static int init_event_table(void) { amdsmi_fw_info_t finfo; if (amdsmi_get_fw_info_p(device_handles[d], &finfo) == AMDSMI_STATUS_SUCCESS) { uint8_t n = finfo.num_fw_info; - if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; + if (n > AMDSMI_FW_ID__MAX) + n = AMDSMI_FW_ID__MAX; for (uint8_t f = 0; f < n; ++f) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } uint32_t fid = finfo.fw_info_list[f].fw_id; snprintf(name_buf, sizeof(name_buf), "fw_version_id%u:device=%d", fid, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d firmware id %u version", d, fid); native_event_t *ev_fw = &ntv_table.events[idx]; - ev_fw->id = idx; ev_fw->name = strdup(name_buf); ev_fw->descr = strdup(descr_buf); - ev_fw->device = d; ev_fw->value = 0; ev_fw->mode = PAPI_MODE_READ; ev_fw->variant = fid; ev_fw->subvariant = 0; - ev_fw->open_func = open_simple; ev_fw->close_func = close_simple; ev_fw->start_func = start_simple; ev_fw->stop_func = stop_simple; + ev_fw->id = idx; + ev_fw->name = strdup(name_buf); + ev_fw->descr = strdup(descr_buf); + ev_fw->device = d; + ev_fw->value = 0; + ev_fw->mode = PAPI_MODE_READ; + ev_fw->variant = fid; + ev_fw->subvariant = 0; + ev_fw->open_func = open_simple; + ev_fw->close_func = close_simple; + ev_fw->start_func = start_simple; + ev_fw->stop_func = stop_simple; ev_fw->access_func = access_amdsmi_fw_version; htable_insert(htable, ev_fw->name, ev_fw); idx++; @@ -2468,13 +2668,25 @@ static int init_event_table(void) { if (amdsmi_get_gpu_board_info_p) { amdsmi_board_info_t binfo; if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "board_serial_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); native_event_t *ev_brd = &ntv_table.events[idx]; - ev_brd->id = idx; ev_brd->name = strdup(name_buf); ev_brd->descr = strdup(descr_buf); - ev_brd->device = d; ev_brd->value = 0; ev_brd->mode = PAPI_MODE_READ; ev_brd->variant = 0; ev_brd->subvariant = 0; - ev_brd->open_func = open_simple; ev_brd->close_func = close_simple; ev_brd->start_func = start_simple; ev_brd->stop_func = stop_simple; + ev_brd->id = idx; + ev_brd->name = strdup(name_buf); + ev_brd->descr = strdup(descr_buf); + ev_brd->device = d; + ev_brd->value = 0; + ev_brd->mode = PAPI_MODE_READ; + ev_brd->variant = 0; + ev_brd->subvariant = 0; + ev_brd->open_func = open_simple; + ev_brd->close_func = close_simple; + ev_brd->start_func = start_simple; + ev_brd->stop_func = stop_simple; ev_brd->access_func = access_amdsmi_board_serial_hash; htable_insert(htable, ev_brd->name, ev_brd); idx++; @@ -2484,13 +2696,25 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_info_p) { amdsmi_vram_info_t vinfo; if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); native_event_t *ev_vbw = &ntv_table.events[idx]; - ev_vbw->id = idx; ev_vbw->name = strdup(name_buf); ev_vbw->descr = strdup(descr_buf); - ev_vbw->device = d; ev_vbw->value = 0; ev_vbw->mode = PAPI_MODE_READ; ev_vbw->variant = 0; ev_vbw->subvariant = 0; - ev_vbw->open_func = open_simple; ev_vbw->close_func = close_simple; ev_vbw->start_func = start_simple; ev_vbw->stop_func = stop_simple; + ev_vbw->id = idx; + ev_vbw->name = strdup(name_buf); + ev_vbw->descr = strdup(descr_buf); + ev_vbw->device = d; + ev_vbw->value = 0; + ev_vbw->mode = PAPI_MODE_READ; + ev_vbw->variant = 0; + ev_vbw->subvariant = 0; + ev_vbw->open_func = open_simple; + ev_vbw->close_func = close_simple; + ev_vbw->start_func = start_simple; + ev_vbw->stop_func = stop_simple; ev_vbw->access_func = access_amdsmi_vram_max_bandwidth; htable_insert(htable, ev_vbw->name, ev_vbw); idx++; @@ -2500,44 +2724,92 @@ static int init_event_table(void) { if (amdsmi_get_gpu_bad_page_info_p) { uint32_t nump = 0; if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "bad_page_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); native_event_t *ev_bpc = &ntv_table.events[idx]; - ev_bpc->id = idx; ev_bpc->name = strdup(name_buf); ev_bpc->descr = strdup(descr_buf); - ev_bpc->device = d; ev_bpc->value = 0; ev_bpc->mode = PAPI_MODE_READ; ev_bpc->variant = 0; ev_bpc->subvariant = 0; - ev_bpc->open_func = open_simple; ev_bpc->close_func = close_simple; ev_bpc->start_func = start_simple; ev_bpc->stop_func = stop_simple; + ev_bpc->id = idx; + ev_bpc->name = strdup(name_buf); + ev_bpc->descr = strdup(descr_buf); + ev_bpc->device = d; + ev_bpc->value = 0; + ev_bpc->mode = PAPI_MODE_READ; + ev_bpc->variant = 0; + ev_bpc->subvariant = 0; + ev_bpc->open_func = open_simple; + ev_bpc->close_func = close_simple; + ev_bpc->start_func = start_simple; + ev_bpc->stop_func = stop_simple; ev_bpc->access_func = access_amdsmi_bad_page_count; htable_insert(htable, ev_bpc->name, ev_bpc); idx++; for (uint32_t p = 0; p < nump; ++p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "bad_page_address:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u address", d, p); native_event_t *ev_addr = &ntv_table.events[idx]; - ev_addr->id = idx; ev_addr->name = strdup(name_buf); ev_addr->descr = strdup(descr_buf); - ev_addr->device = d; ev_addr->value = 0; ev_addr->mode = PAPI_MODE_READ; ev_addr->variant = 0; ev_addr->subvariant = p; - ev_addr->open_func = open_simple; ev_addr->close_func = close_simple; ev_addr->start_func = start_simple; ev_addr->stop_func = stop_simple; + ev_addr->id = idx; + ev_addr->name = strdup(name_buf); + ev_addr->descr = strdup(descr_buf); + ev_addr->device = d; + ev_addr->value = 0; + ev_addr->mode = PAPI_MODE_READ; + ev_addr->variant = 0; + ev_addr->subvariant = p; + ev_addr->open_func = open_simple; + ev_addr->close_func = close_simple; + ev_addr->start_func = start_simple; + ev_addr->stop_func = stop_simple; ev_addr->access_func = access_amdsmi_bad_page_record; htable_insert(htable, ev_addr->name, ev_addr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u size", d, p); native_event_t *ev_size = &ntv_table.events[idx]; - ev_size->id = idx; ev_size->name = strdup(name_buf); ev_size->descr = strdup(descr_buf); - ev_size->device = d; ev_size->value = 0; ev_size->mode = PAPI_MODE_READ; ev_size->variant = 1; ev_size->subvariant = p; - ev_size->open_func = open_simple; ev_size->close_func = close_simple; ev_size->start_func = start_simple; ev_size->stop_func = stop_simple; + ev_size->id = idx; + ev_size->name = strdup(name_buf); + ev_size->descr = strdup(descr_buf); + ev_size->device = d; + ev_size->value = 0; + ev_size->mode = PAPI_MODE_READ; + ev_size->variant = 1; + ev_size->subvariant = p; + ev_size->open_func = open_simple; + ev_size->close_func = close_simple; + ev_size->start_func = start_simple; + ev_size->stop_func = stop_simple; ev_size->access_func = access_amdsmi_bad_page_record; htable_insert(htable, ev_size->name, ev_size); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u status", d, p); native_event_t *ev_stat = &ntv_table.events[idx]; - ev_stat->id = idx; ev_stat->name = strdup(name_buf); ev_stat->descr = strdup(descr_buf); - ev_stat->device = d; ev_stat->value = 0; ev_stat->mode = PAPI_MODE_READ; ev_stat->variant = 2; ev_stat->subvariant = p; - ev_stat->open_func = open_simple; ev_stat->close_func = close_simple; ev_stat->start_func = start_simple; ev_stat->stop_func = stop_simple; + ev_stat->id = idx; + ev_stat->name = strdup(name_buf); + ev_stat->descr = strdup(descr_buf); + ev_stat->device = d; + ev_stat->value = 0; + ev_stat->mode = PAPI_MODE_READ; + ev_stat->variant = 2; + ev_stat->subvariant = p; + ev_stat->open_func = open_simple; + ev_stat->close_func = close_simple; + ev_stat->start_func = start_simple; + ev_stat->stop_func = stop_simple; ev_stat->access_func = access_amdsmi_bad_page_record; htable_insert(htable, ev_stat->name, ev_stat); idx++; @@ -2548,13 +2820,25 @@ static int init_event_table(void) { if (amdsmi_get_gpu_bad_page_threshold_p) { uint32_t thr = 0; if (amdsmi_get_gpu_bad_page_threshold_p(device_handles[d], &thr) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "bad_page_threshold:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); native_event_t *ev_bpt = &ntv_table.events[idx]; - ev_bpt->id = idx; ev_bpt->name = strdup(name_buf); ev_bpt->descr = strdup(descr_buf); - ev_bpt->device = d; ev_bpt->value = 0; ev_bpt->mode = PAPI_MODE_READ; ev_bpt->variant = 0; ev_bpt->subvariant = 0; - ev_bpt->open_func = open_simple; ev_bpt->close_func = close_simple; ev_bpt->start_func = start_simple; ev_bpt->stop_func = stop_simple; + ev_bpt->id = idx; + ev_bpt->name = strdup(name_buf); + ev_bpt->descr = strdup(descr_buf); + ev_bpt->device = d; + ev_bpt->value = 0; + ev_bpt->mode = PAPI_MODE_READ; + ev_bpt->variant = 0; + ev_bpt->subvariant = 0; + ev_bpt->open_func = open_simple; + ev_bpt->close_func = close_simple; + ev_bpt->start_func = start_simple; + ev_bpt->stop_func = stop_simple; ev_bpt->access_func = access_amdsmi_bad_page_threshold; htable_insert(htable, ev_bpt->name, ev_bpt); idx++; @@ -2571,81 +2855,172 @@ static int init_event_table(void) { break; /* Register current socket power in Watts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_current_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u current socket power (W)", d, s); native_event_t *ev_cur = &ntv_table.events[idx]; - ev_cur->id = idx; ev_cur->name = strdup(name_buf); ev_cur->descr = strdup(descr_buf); - ev_cur->device = d; ev_cur->value = 0; ev_cur->mode = PAPI_MODE_READ; ev_cur->variant = 0; ev_cur->subvariant = s; - ev_cur->open_func = open_simple; ev_cur->close_func = close_simple; ev_cur->start_func = start_simple; ev_cur->stop_func = stop_simple; + ev_cur->id = idx; + ev_cur->name = strdup(name_buf); + ev_cur->descr = strdup(descr_buf); + ev_cur->device = d; + ev_cur->value = 0; + ev_cur->mode = PAPI_MODE_READ; + ev_cur->variant = 0; + ev_cur->subvariant = s; + ev_cur->open_func = open_simple; + ev_cur->close_func = close_simple; + ev_cur->start_func = start_simple; + ev_cur->stop_func = stop_simple; ev_cur->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_cur->name, ev_cur); idx++; + htable_insert(htable, ev_cur->name, ev_cur); + idx++; /* Register average socket power in Watts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_average_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u average socket power (W)", d, s); native_event_t *ev_avg = &ntv_table.events[idx]; - ev_avg->id = idx; ev_avg->name = strdup(name_buf); ev_avg->descr = strdup(descr_buf); - ev_avg->device = d; ev_avg->value = 0; ev_avg->mode = PAPI_MODE_READ; ev_avg->variant = 1; ev_avg->subvariant = s; - ev_avg->open_func = open_simple; ev_avg->close_func = close_simple; ev_avg->start_func = start_simple; ev_avg->stop_func = stop_simple; + ev_avg->id = idx; + ev_avg->name = strdup(name_buf); + ev_avg->descr = strdup(descr_buf); + ev_avg->device = d; + ev_avg->value = 0; + ev_avg->mode = PAPI_MODE_READ; + ev_avg->variant = 1; + ev_avg->subvariant = s; + ev_avg->open_func = open_simple; + ev_avg->close_func = close_simple; + ev_avg->start_func = start_simple; + ev_avg->stop_func = stop_simple; ev_avg->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_avg->name, ev_avg); idx++; + htable_insert(htable, ev_avg->name, ev_avg); + idx++; /* Register socket power in microwatts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u socket power (uW)", d, s); native_event_t *ev_sock = &ntv_table.events[idx]; - ev_sock->id = idx; ev_sock->name = strdup(name_buf); ev_sock->descr = strdup(descr_buf); - ev_sock->device = d; ev_sock->value = 0; ev_sock->mode = PAPI_MODE_READ; ev_sock->variant = 2; ev_sock->subvariant = s; - ev_sock->open_func = open_simple; ev_sock->close_func = close_simple; ev_sock->start_func = start_simple; ev_sock->stop_func = stop_simple; + ev_sock->id = idx; + ev_sock->name = strdup(name_buf); + ev_sock->descr = strdup(descr_buf); + ev_sock->device = d; + ev_sock->value = 0; + ev_sock->mode = PAPI_MODE_READ; + ev_sock->variant = 2; + ev_sock->subvariant = s; + ev_sock->open_func = open_simple; + ev_sock->close_func = close_simple; + ev_sock->start_func = start_simple; + ev_sock->stop_func = stop_simple; ev_sock->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_sock->name, ev_sock); idx++; + htable_insert(htable, ev_sock->name, ev_sock); + idx++; /* Register GFX voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u GFX voltage (mV)", d, s); native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; ev_gfx->name = strdup(name_buf); ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; ev_gfx->value = 0; ev_gfx->mode = PAPI_MODE_READ; ev_gfx->variant = 3; ev_gfx->subvariant = s; - ev_gfx->open_func = open_simple; ev_gfx->close_func = close_simple; ev_gfx->start_func = start_simple; ev_gfx->stop_func = stop_simple; + ev_gfx->id = idx; + ev_gfx->name = strdup(name_buf); + ev_gfx->descr = strdup(descr_buf); + ev_gfx->device = d; + ev_gfx->value = 0; + ev_gfx->mode = PAPI_MODE_READ; + ev_gfx->variant = 3; + ev_gfx->subvariant = s; + ev_gfx->open_func = open_simple; + ev_gfx->close_func = close_simple; + ev_gfx->start_func = start_simple; + ev_gfx->stop_func = stop_simple; ev_gfx->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_gfx->name, ev_gfx); idx++; + htable_insert(htable, ev_gfx->name, ev_gfx); + idx++; /* Register SOC voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u SOC voltage (mV)", d, s); native_event_t *ev_soc = &ntv_table.events[idx]; - ev_soc->id = idx; ev_soc->name = strdup(name_buf); ev_soc->descr = strdup(descr_buf); - ev_soc->device = d; ev_soc->value = 0; ev_soc->mode = PAPI_MODE_READ; ev_soc->variant = 4; ev_soc->subvariant = s; - ev_soc->open_func = open_simple; ev_soc->close_func = close_simple; ev_soc->start_func = start_simple; ev_soc->stop_func = stop_simple; + ev_soc->id = idx; + ev_soc->name = strdup(name_buf); + ev_soc->descr = strdup(descr_buf); + ev_soc->device = d; + ev_soc->value = 0; + ev_soc->mode = PAPI_MODE_READ; + ev_soc->variant = 4; + ev_soc->subvariant = s; + ev_soc->open_func = open_simple; + ev_soc->close_func = close_simple; + ev_soc->start_func = start_simple; + ev_soc->stop_func = stop_simple; ev_soc->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_soc->name, ev_soc); idx++; + htable_insert(htable, ev_soc->name, ev_soc); + idx++; /* Register MEM voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u MEM voltage (mV)", d, s); native_event_t *ev_mem = &ntv_table.events[idx]; - ev_mem->id = idx; ev_mem->name = strdup(name_buf); ev_mem->descr = strdup(descr_buf); - ev_mem->device = d; ev_mem->value = 0; ev_mem->mode = PAPI_MODE_READ; ev_mem->variant = 5; ev_mem->subvariant = s; - ev_mem->open_func = open_simple; ev_mem->close_func = close_simple; ev_mem->start_func = start_simple; ev_mem->stop_func = stop_simple; + ev_mem->id = idx; + ev_mem->name = strdup(name_buf); + ev_mem->descr = strdup(descr_buf); + ev_mem->device = d; + ev_mem->value = 0; + ev_mem->mode = PAPI_MODE_READ; + ev_mem->variant = 5; + ev_mem->subvariant = s; + ev_mem->open_func = open_simple; + ev_mem->close_func = close_simple; + ev_mem->start_func = start_simple; + ev_mem->stop_func = stop_simple; ev_mem->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_mem->name, ev_mem); idx++; + htable_insert(htable, ev_mem->name, ev_mem); + idx++; /* Register power limit */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "power_sensor_limit_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u power limit (W)", d, s); native_event_t *ev_lim = &ntv_table.events[idx]; - ev_lim->id = idx; ev_lim->name = strdup(name_buf); ev_lim->descr = strdup(descr_buf); - ev_lim->device = d; ev_lim->value = 0; ev_lim->mode = PAPI_MODE_READ; ev_lim->variant = 6; ev_lim->subvariant = s; - ev_lim->open_func = open_simple; ev_lim->close_func = close_simple; ev_lim->start_func = start_simple; ev_lim->stop_func = stop_simple; + ev_lim->id = idx; + ev_lim->name = strdup(name_buf); + ev_lim->descr = strdup(descr_buf); + ev_lim->device = d; + ev_lim->value = 0; + ev_lim->mode = PAPI_MODE_READ; + ev_lim->variant = 6; + ev_lim->subvariant = s; + ev_lim->open_func = open_simple; + ev_lim->close_func = close_simple; + ev_lim->start_func = start_simple; + ev_lim->stop_func = stop_simple; ev_lim->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_lim->name, ev_lim); idx++; + htable_insert(htable, ev_lim->name, ev_lim); + idx++; } } @@ -2653,131 +3028,286 @@ static int init_event_table(void) { amdsmi_gpu_metrics_t metrics; if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == AMDSMI_STATUS_SUCCESS) { /* Register throttle status */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); native_event_t *ev_throttle = &ntv_table.events[idx]; - ev_throttle->id = idx; ev_throttle->name = strdup(name_buf); ev_throttle->descr = strdup(descr_buf); - ev_throttle->device = d; ev_throttle->value = 0; ev_throttle->mode = PAPI_MODE_READ; ev_throttle->variant = 0; ev_throttle->subvariant = 0; - ev_throttle->open_func = open_simple; ev_throttle->close_func = close_simple; ev_throttle->start_func = start_simple; ev_throttle->stop_func = stop_simple; + ev_throttle->id = idx; + ev_throttle->name = strdup(name_buf); + ev_throttle->descr = strdup(descr_buf); + ev_throttle->device = d; + ev_throttle->value = 0; + ev_throttle->mode = PAPI_MODE_READ; + ev_throttle->variant = 0; + ev_throttle->subvariant = 0; + ev_throttle->open_func = open_simple; + ev_throttle->close_func = close_simple; + ev_throttle->start_func = start_simple; + ev_throttle->stop_func = stop_simple; ev_throttle->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_throttle->name, ev_throttle); idx++; + htable_insert(htable, ev_throttle->name, ev_throttle); + idx++; /* Register independent throttle status */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "gpu_indep_throttle_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d independent throttle status", d); native_event_t *ev_ithrottle = &ntv_table.events[idx]; - ev_ithrottle->id = idx; ev_ithrottle->name = strdup(name_buf); ev_ithrottle->descr = strdup(descr_buf); - ev_ithrottle->device = d; ev_ithrottle->value = 0; ev_ithrottle->mode = PAPI_MODE_READ; ev_ithrottle->variant = 1; ev_ithrottle->subvariant = 0; - ev_ithrottle->open_func = open_simple; ev_ithrottle->close_func = close_simple; ev_ithrottle->start_func = start_simple; ev_ithrottle->stop_func = stop_simple; + ev_ithrottle->id = idx; + ev_ithrottle->name = strdup(name_buf); + ev_ithrottle->descr = strdup(descr_buf); + ev_ithrottle->device = d; + ev_ithrottle->value = 0; + ev_ithrottle->mode = PAPI_MODE_READ; + ev_ithrottle->variant = 1; + ev_ithrottle->subvariant = 0; + ev_ithrottle->open_func = open_simple; + ev_ithrottle->close_func = close_simple; + ev_ithrottle->start_func = start_simple; + ev_ithrottle->stop_func = stop_simple; ev_ithrottle->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_ithrottle->name, ev_ithrottle); idx++; + htable_insert(htable, ev_ithrottle->name, ev_ithrottle); + idx++; /* Register PCIe link width */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_link_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); native_event_t *ev_lw = &ntv_table.events[idx]; - ev_lw->id = idx; ev_lw->name = strdup(name_buf); ev_lw->descr = strdup(descr_buf); - ev_lw->device = d; ev_lw->value = 0; ev_lw->mode = PAPI_MODE_READ; ev_lw->variant = 2; ev_lw->subvariant = 0; - ev_lw->open_func = open_simple; ev_lw->close_func = close_simple; ev_lw->start_func = start_simple; ev_lw->stop_func = stop_simple; + ev_lw->id = idx; + ev_lw->name = strdup(name_buf); + ev_lw->descr = strdup(descr_buf); + ev_lw->device = d; + ev_lw->value = 0; + ev_lw->mode = PAPI_MODE_READ; + ev_lw->variant = 2; + ev_lw->subvariant = 0; + ev_lw->open_func = open_simple; + ev_lw->close_func = close_simple; + ev_lw->start_func = start_simple; + ev_lw->stop_func = stop_simple; ev_lw->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_lw->name, ev_lw); idx++; + htable_insert(htable, ev_lw->name, ev_lw); + idx++; /* Register PCIe link speed */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_link_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); native_event_t *ev_ls = &ntv_table.events[idx]; - ev_ls->id = idx; ev_ls->name = strdup(name_buf); ev_ls->descr = strdup(descr_buf); - ev_ls->device = d; ev_ls->value = 0; ev_ls->mode = PAPI_MODE_READ; ev_ls->variant = 3; ev_ls->subvariant = 0; - ev_ls->open_func = open_simple; ev_ls->close_func = close_simple; ev_ls->start_func = start_simple; ev_ls->stop_func = stop_simple; + ev_ls->id = idx; + ev_ls->name = strdup(name_buf); + ev_ls->descr = strdup(descr_buf); + ev_ls->device = d; + ev_ls->value = 0; + ev_ls->mode = PAPI_MODE_READ; + ev_ls->variant = 3; + ev_ls->subvariant = 0; + ev_ls->open_func = open_simple; + ev_ls->close_func = close_simple; + ev_ls->start_func = start_simple; + ev_ls->stop_func = stop_simple; ev_ls->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_ls->name, ev_ls); idx++; + htable_insert(htable, ev_ls->name, ev_ls); + idx++; /* Register PCIe bandwidth and replay counters */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); native_event_t *ev_bwacc = &ntv_table.events[idx]; - ev_bwacc->id = idx; ev_bwacc->name = strdup(name_buf); ev_bwacc->descr = strdup(descr_buf); - ev_bwacc->device = d; ev_bwacc->value = 0; ev_bwacc->mode = PAPI_MODE_READ; ev_bwacc->variant = 4; ev_bwacc->subvariant = 0; - ev_bwacc->open_func = open_simple; ev_bwacc->close_func = close_simple; ev_bwacc->start_func = start_simple; ev_bwacc->stop_func = stop_simple; + ev_bwacc->id = idx; + ev_bwacc->name = strdup(name_buf); + ev_bwacc->descr = strdup(descr_buf); + ev_bwacc->device = d; + ev_bwacc->value = 0; + ev_bwacc->mode = PAPI_MODE_READ; + ev_bwacc->variant = 4; + ev_bwacc->subvariant = 0; + ev_bwacc->open_func = open_simple; + ev_bwacc->close_func = close_simple; + ev_bwacc->start_func = start_simple; + ev_bwacc->stop_func = stop_simple; ev_bwacc->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_bwacc->name, ev_bwacc); idx++; + htable_insert(htable, ev_bwacc->name, ev_bwacc); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe instantaneous bandwidth (GB/s)", d); native_event_t *ev_bwin = &ntv_table.events[idx]; - ev_bwin->id = idx; ev_bwin->name = strdup(name_buf); ev_bwin->descr = strdup(descr_buf); - ev_bwin->device = d; ev_bwin->value = 0; ev_bwin->mode = PAPI_MODE_READ; ev_bwin->variant = 5; ev_bwin->subvariant = 0; - ev_bwin->open_func = open_simple; ev_bwin->close_func = close_simple; ev_bwin->start_func = start_simple; ev_bwin->stop_func = stop_simple; + ev_bwin->id = idx; + ev_bwin->name = strdup(name_buf); + ev_bwin->descr = strdup(descr_buf); + ev_bwin->device = d; + ev_bwin->value = 0; + ev_bwin->mode = PAPI_MODE_READ; + ev_bwin->variant = 5; + ev_bwin->subvariant = 0; + ev_bwin->open_func = open_simple; + ev_bwin->close_func = close_simple; + ev_bwin->start_func = start_simple; + ev_bwin->stop_func = stop_simple; ev_bwin->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_bwin->name, ev_bwin); idx++; + htable_insert(htable, ev_bwin->name, ev_bwin); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recov_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); native_event_t *ev_l0 = &ntv_table.events[idx]; - ev_l0->id = idx; ev_l0->name = strdup(name_buf); ev_l0->descr = strdup(descr_buf); - ev_l0->device = d; ev_l0->value = 0; ev_l0->mode = PAPI_MODE_READ; ev_l0->variant = 6; ev_l0->subvariant = 0; - ev_l0->open_func = open_simple; ev_l0->close_func = close_simple; ev_l0->start_func = start_simple; ev_l0->stop_func = stop_simple; + ev_l0->id = idx; + ev_l0->name = strdup(name_buf); + ev_l0->descr = strdup(descr_buf); + ev_l0->device = d; + ev_l0->value = 0; + ev_l0->mode = PAPI_MODE_READ; + ev_l0->variant = 6; + ev_l0->subvariant = 0; + ev_l0->open_func = open_simple; + ev_l0->close_func = close_simple; + ev_l0->start_func = start_simple; + ev_l0->stop_func = stop_simple; ev_l0->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_l0->name, ev_l0); idx++; + htable_insert(htable, ev_l0->name, ev_l0); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); native_event_t *ev_replay = &ntv_table.events[idx]; - ev_replay->id = idx; ev_replay->name = strdup(name_buf); ev_replay->descr = strdup(descr_buf); - ev_replay->device = d; ev_replay->value = 0; ev_replay->mode = PAPI_MODE_READ; ev_replay->variant = 7; ev_replay->subvariant = 0; - ev_replay->open_func = open_simple; ev_replay->close_func = close_simple; ev_replay->start_func = start_simple; ev_replay->stop_func = stop_simple; + ev_replay->id = idx; + ev_replay->name = strdup(name_buf); + ev_replay->descr = strdup(descr_buf); + ev_replay->device = d; + ev_replay->value = 0; + ev_replay->mode = PAPI_MODE_READ; + ev_replay->variant = 7; + ev_replay->subvariant = 0; + ev_replay->open_func = open_simple; + ev_replay->close_func = close_simple; + ev_replay->start_func = start_simple; + ev_replay->stop_func = stop_simple; ev_replay->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_replay->name, ev_replay); idx++; + htable_insert(htable, ev_replay->name, ev_replay); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_replay_rover_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); native_event_t *ev_replay_ro = &ntv_table.events[idx]; - ev_replay_ro->id = idx; ev_replay_ro->name = strdup(name_buf); ev_replay_ro->descr = strdup(descr_buf); - ev_replay_ro->device = d; ev_replay_ro->value = 0; ev_replay_ro->mode = PAPI_MODE_READ; ev_replay_ro->variant = 8; ev_replay_ro->subvariant = 0; - ev_replay_ro->open_func = open_simple; ev_replay_ro->close_func = close_simple; ev_replay_ro->start_func = start_simple; ev_replay_ro->stop_func = stop_simple; + ev_replay_ro->id = idx; + ev_replay_ro->name = strdup(name_buf); + ev_replay_ro->descr = strdup(descr_buf); + ev_replay_ro->device = d; + ev_replay_ro->value = 0; + ev_replay_ro->mode = PAPI_MODE_READ; + ev_replay_ro->variant = 8; + ev_replay_ro->subvariant = 0; + ev_replay_ro->open_func = open_simple; + ev_replay_ro->close_func = close_simple; + ev_replay_ro->start_func = start_simple; + ev_replay_ro->stop_func = stop_simple; ev_replay_ro->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_replay_ro->name, ev_replay_ro); idx++; + htable_insert(htable, ev_replay_ro->name, ev_replay_ro); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); native_event_t *ev_nak_sent = &ntv_table.events[idx]; - ev_nak_sent->id = idx; ev_nak_sent->name = strdup(name_buf); ev_nak_sent->descr = strdup(descr_buf); - ev_nak_sent->device = d; ev_nak_sent->value = 0; ev_nak_sent->mode = PAPI_MODE_READ; ev_nak_sent->variant = 9; ev_nak_sent->subvariant = 0; - ev_nak_sent->open_func = open_simple; ev_nak_sent->close_func = close_simple; ev_nak_sent->start_func = start_simple; ev_nak_sent->stop_func = stop_simple; + ev_nak_sent->id = idx; + ev_nak_sent->name = strdup(name_buf); + ev_nak_sent->descr = strdup(descr_buf); + ev_nak_sent->device = d; + ev_nak_sent->value = 0; + ev_nak_sent->mode = PAPI_MODE_READ; + ev_nak_sent->variant = 9; + ev_nak_sent->subvariant = 0; + ev_nak_sent->open_func = open_simple; + ev_nak_sent->close_func = close_simple; + ev_nak_sent->start_func = start_simple; + ev_nak_sent->stop_func = stop_simple; ev_nak_sent->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_nak_sent->name, ev_nak_sent); idx++; + htable_insert(htable, ev_nak_sent->name, ev_nak_sent); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "pcie_nak_rcvd_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); native_event_t *ev_nak_rcv = &ntv_table.events[idx]; - ev_nak_rcv->id = idx; ev_nak_rcv->name = strdup(name_buf); ev_nak_rcv->descr = strdup(descr_buf); - ev_nak_rcv->device = d; ev_nak_rcv->value = 0; ev_nak_rcv->mode = PAPI_MODE_READ; ev_nak_rcv->variant = 10; ev_nak_rcv->subvariant = 0; - ev_nak_rcv->open_func = open_simple; ev_nak_rcv->close_func = close_simple; ev_nak_rcv->start_func = start_simple; ev_nak_rcv->stop_func = stop_simple; + ev_nak_rcv->id = idx; + ev_nak_rcv->name = strdup(name_buf); + ev_nak_rcv->descr = strdup(descr_buf); + ev_nak_rcv->device = d; + ev_nak_rcv->value = 0; + ev_nak_rcv->mode = PAPI_MODE_READ; + ev_nak_rcv->variant = 10; + ev_nak_rcv->subvariant = 0; + ev_nak_rcv->open_func = open_simple; + ev_nak_rcv->close_func = close_simple; + ev_nak_rcv->start_func = start_simple; + ev_nak_rcv->stop_func = stop_simple; ev_nak_rcv->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_nak_rcv->name, ev_nak_rcv); idx++; + htable_insert(htable, ev_nak_rcv->name, ev_nak_rcv); + idx++; } } - if (amdsmi_init_gpu_event_notification_p && amdsmi_set_gpu_event_notification_mask_p && - amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } + if (amdsmi_init_gpu_event_notification_p && amdsmi_set_gpu_event_notification_mask_p && amdsmi_get_gpu_event_notification_p && + amdsmi_stop_gpu_event_notification_p) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d thermal throttle event notifications", d); native_event_t *ev_tt = &ntv_table.events[idx]; - ev_tt->id = idx; ev_tt->name = strdup(name_buf); ev_tt->descr = strdup(descr_buf); - ev_tt->device = d; ev_tt->value = 0; ev_tt->mode = PAPI_MODE_READ; ev_tt->variant = AMDSMI_EVT_NOTIF_THERMAL_THROTTLE; ev_tt->subvariant = 0; - ev_tt->open_func = open_simple; ev_tt->close_func = close_simple; ev_tt->start_func = start_simple; ev_tt->stop_func = stop_simple; + ev_tt->id = idx; + ev_tt->name = strdup(name_buf); + ev_tt->descr = strdup(descr_buf); + ev_tt->device = d; + ev_tt->value = 0; + ev_tt->mode = PAPI_MODE_READ; + ev_tt->variant = AMDSMI_EVT_NOTIF_THERMAL_THROTTLE; + ev_tt->subvariant = 0; + ev_tt->open_func = open_simple; + ev_tt->close_func = close_simple; + ev_tt->start_func = start_simple; + ev_tt->stop_func = stop_simple; ev_tt->access_func = access_amdsmi_event_notification; htable_insert(htable, ev_tt->name, ev_tt); idx++; @@ -3878,288 +4408,372 @@ static int init_event_table(void) { }*/ /* PCIe metrics via amdsmi_get_link_metrics. Register per-link events and * aggregate totals for XGMI and PCIe links. */ - amdsmi_link_metrics_t lm_probe; memset(&lm_probe, 0, sizeof(lm_probe)); + amdsmi_link_metrics_t lm_probe; + memset(&lm_probe, 0, sizeof(lm_probe)); int has_xgmi = 0, has_pcie = 0; if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == AMDSMI_STATUS_SUCCESS) { - uint32_t n = lm_probe.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) - n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - for (uint32_t i = 0; i < n; ++i) { - uint32_t type = lm_probe.links[i].link_type; - if (type == AMDSMI_LINK_TYPE_XGMI) { - has_xgmi = 1; - /* Per-link XGMI read/write/bit rate/max bandwidth */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_read_kB:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u read (kB)", d, i); - native_event_t *ev_lr = &ntv_table.events[idx]; - ev_lr->id = idx; ev_lr->name = strdup(name_buf); - ev_lr->descr = strdup(descr_buf); - if (!ev_lr->name || !ev_lr->descr) return PAPI_ENOMEM; - ev_lr->device = d; ev_lr->value = 0; - ev_lr->mode = PAPI_MODE_READ; ev_lr->variant = 0; - ev_lr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lr->open_func = open_simple; ev_lr->close_func = close_simple; - ev_lr->start_func = start_simple; ev_lr->stop_func = stop_simple; - ev_lr->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lr->name, ev_lr); idx++; + uint32_t n = lm_probe.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) + n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + for (uint32_t i = 0; i < n; ++i) { + uint32_t type = lm_probe.links[i].link_type; + if (type == AMDSMI_LINK_TYPE_XGMI) { + has_xgmi = 1; + /* Per-link XGMI read/write/bit rate/max bandwidth */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_read_kB:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u read (kB)", d, i); + native_event_t *ev_lr = &ntv_table.events[idx]; + ev_lr->id = idx; + ev_lr->name = strdup(name_buf); + ev_lr->descr = strdup(descr_buf); + if (!ev_lr->name || !ev_lr->descr) + return PAPI_ENOMEM; + ev_lr->device = d; + ev_lr->value = 0; + ev_lr->mode = PAPI_MODE_READ; + ev_lr->variant = 0; + ev_lr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lr->open_func = open_simple; + ev_lr->close_func = close_simple; + ev_lr->start_func = start_simple; + ev_lr->stop_func = stop_simple; + ev_lr->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lr->name, ev_lr); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_write_kB:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u write (kB)", d, i); - native_event_t *ev_lw = &ntv_table.events[idx]; - ev_lw->id = idx; ev_lw->name = strdup(name_buf); - ev_lw->descr = strdup(descr_buf); - if (!ev_lw->name || !ev_lw->descr) return PAPI_ENOMEM; - ev_lw->device = d; ev_lw->value = 0; - ev_lw->mode = PAPI_MODE_READ; ev_lw->variant = 1; - ev_lw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lw->open_func = open_simple; ev_lw->close_func = close_simple; - ev_lw->start_func = start_simple; ev_lw->stop_func = stop_simple; - ev_lw->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lw->name, ev_lw); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_write_kB:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u write (kB)", d, i); + native_event_t *ev_lw = &ntv_table.events[idx]; + ev_lw->id = idx; + ev_lw->name = strdup(name_buf); + ev_lw->descr = strdup(descr_buf); + if (!ev_lw->name || !ev_lw->descr) + return PAPI_ENOMEM; + ev_lw->device = d; + ev_lw->value = 0; + ev_lw->mode = PAPI_MODE_READ; + ev_lw->variant = 1; + ev_lw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lw->open_func = open_simple; + ev_lw->close_func = close_simple; + ev_lw->start_func = start_simple; + ev_lw->stop_func = stop_simple; + ev_lw->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lw->name, ev_lw); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u speed (Gb/s)", d, i); - native_event_t *ev_lb = &ntv_table.events[idx]; - ev_lb->id = idx; ev_lb->name = strdup(name_buf); - ev_lb->descr = strdup(descr_buf); - if (!ev_lb->name || !ev_lb->descr) return PAPI_ENOMEM; - ev_lb->device = d; ev_lb->value = 0; - ev_lb->mode = PAPI_MODE_READ; ev_lb->variant = 2; - ev_lb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lb->open_func = open_simple; ev_lb->close_func = close_simple; - ev_lb->start_func = start_simple; ev_lb->stop_func = stop_simple; - ev_lb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lb->name, ev_lb); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u speed (Gb/s)", d, i); + native_event_t *ev_lb = &ntv_table.events[idx]; + ev_lb->id = idx; + ev_lb->name = strdup(name_buf); + ev_lb->descr = strdup(descr_buf); + if (!ev_lb->name || !ev_lb->descr) + return PAPI_ENOMEM; + ev_lb->device = d; + ev_lb->value = 0; + ev_lb->mode = PAPI_MODE_READ; + ev_lb->variant = 2; + ev_lb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lb->open_func = open_simple; + ev_lb->close_func = close_simple; + ev_lb->start_func = start_simple; + ev_lb->stop_func = stop_simple; + ev_lb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lb->name, ev_lb); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); - native_event_t *ev_lm = &ntv_table.events[idx]; - ev_lm->id = idx; ev_lm->name = strdup(name_buf); - ev_lm->descr = strdup(descr_buf); - if (!ev_lm->name || !ev_lm->descr) return PAPI_ENOMEM; - ev_lm->device = d; ev_lm->value = 0; - ev_lm->mode = PAPI_MODE_READ; ev_lm->variant = 3; - ev_lm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lm->open_func = open_simple; ev_lm->close_func = close_simple; - ev_lm->start_func = start_simple; ev_lm->stop_func = stop_simple; - ev_lm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lm->name, ev_lm); idx++; - } else if (type == AMDSMI_LINK_TYPE_PCIE) { - has_pcie = 1; - /* Per-link PCIe bit rate/max bandwidth */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "pcie_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe link %u speed (Gb/s)", d, i); - native_event_t *ev_pb = &ntv_table.events[idx]; - ev_pb->id = idx; ev_pb->name = strdup(name_buf); - ev_pb->descr = strdup(descr_buf); - if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; - ev_pb->device = d; ev_pb->value = 0; - ev_pb->mode = PAPI_MODE_READ; ev_pb->variant = 2; - ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; - ev_pb->open_func = open_simple; ev_pb->close_func = close_simple; - ev_pb->start_func = start_simple; ev_pb->stop_func = stop_simple; - ev_pb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pb->name, ev_pb); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); + native_event_t *ev_lm = &ntv_table.events[idx]; + ev_lm->id = idx; + ev_lm->name = strdup(name_buf); + ev_lm->descr = strdup(descr_buf); + if (!ev_lm->name || !ev_lm->descr) + return PAPI_ENOMEM; + ev_lm->device = d; + ev_lm->value = 0; + ev_lm->mode = PAPI_MODE_READ; + ev_lm->variant = 3; + ev_lm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; + ev_lm->open_func = open_simple; + ev_lm->close_func = close_simple; + ev_lm->start_func = start_simple; + ev_lm->stop_func = stop_simple; + ev_lm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_lm->name, ev_lm); + idx++; + } else if (type == AMDSMI_LINK_TYPE_PCIE) { + has_pcie = 1; + /* Per-link PCIe bit rate/max bandwidth */ + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "pcie_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link %u speed (Gb/s)", d, i); + native_event_t *ev_pb = &ntv_table.events[idx]; + ev_pb->id = idx; + ev_pb->name = strdup(name_buf); + ev_pb->descr = strdup(descr_buf); + if (!ev_pb->name || !ev_pb->descr) + return PAPI_ENOMEM; + ev_pb->device = d; + ev_pb->value = 0; + ev_pb->mode = PAPI_MODE_READ; + ev_pb->variant = 2; + ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; + ev_pb->open_func = open_simple; + ev_pb->close_func = close_simple; + ev_pb->start_func = start_simple; + ev_pb->stop_func = stop_simple; + ev_pb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pb->name, ev_pb); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id = idx; ev_pm->name = strdup(name_buf); - ev_pm->descr = strdup(descr_buf); - if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; - ev_pm->device = d; ev_pm->value = 0; - ev_pm->mode = PAPI_MODE_READ; ev_pm->variant = 3; - ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; - ev_pm->open_func = open_simple; ev_pm->close_func = close_simple; - ev_pm->start_func = start_simple; ev_pm->stop_func = stop_simple; - ev_pm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pm->name, ev_pm); idx++; - } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id = idx; + ev_pm->name = strdup(name_buf); + ev_pm->descr = strdup(descr_buf); + if (!ev_pm->name || !ev_pm->descr) + return PAPI_ENOMEM; + ev_pm->device = d; + ev_pm->value = 0; + ev_pm->mode = PAPI_MODE_READ; + ev_pm->variant = 3; + ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; + ev_pm->open_func = open_simple; + ev_pm->close_func = close_simple; + ev_pm->start_func = start_simple; + ev_pm->stop_func = stop_simple; + ev_pm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pm->name, ev_pm); + idx++; } + } - /* --- Aggregate totals by link type --- */ - if (has_xgmi) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_read_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total XGMI read across links (kB)", d); - native_event_t *ev_xr = &ntv_table.events[idx]; - ev_xr->id = idx; ev_xr->name = strdup(name_buf); - ev_xr->descr = strdup(descr_buf); - if (!ev_xr->name || !ev_xr->descr) return PAPI_ENOMEM; - ev_xr->device = d; ev_xr->value = 0; - ev_xr->mode = PAPI_MODE_READ; ev_xr->variant = 0; - ev_xr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xr->open_func = open_simple; ev_xr->close_func = close_simple; - ev_xr->start_func = start_simple; ev_xr->stop_func = stop_simple; - ev_xr->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xr->name, ev_xr); idx++; + /* --- Aggregate totals by link type --- */ + if (has_xgmi) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); + native_event_t *ev_xr = &ntv_table.events[idx]; + ev_xr->id = idx; + ev_xr->name = strdup(name_buf); + ev_xr->descr = strdup(descr_buf); + if (!ev_xr->name || !ev_xr->descr) + return PAPI_ENOMEM; + ev_xr->device = d; + ev_xr->value = 0; + ev_xr->mode = PAPI_MODE_READ; + ev_xr->variant = 0; + ev_xr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xr->open_func = open_simple; + ev_xr->close_func = close_simple; + ev_xr->start_func = start_simple; + ev_xr->stop_func = stop_simple; + ev_xr->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xr->name, ev_xr); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_write_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total XGMI write across links (kB)", d); - native_event_t *ev_xw = &ntv_table.events[idx]; - ev_xw->id = idx; ev_xw->name = strdup(name_buf); - ev_xw->descr = strdup(descr_buf); - if (!ev_xw->name || !ev_xw->descr) return PAPI_ENOMEM; - ev_xw->device = d; ev_xw->value = 0; - ev_xw->mode = PAPI_MODE_READ; ev_xw->variant = 1; - ev_xw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xw->open_func = open_simple; ev_xw->close_func = close_simple; - ev_xw->start_func = start_simple; ev_xw->stop_func = stop_simple; - ev_xw->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xw->name, ev_xw); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); + native_event_t *ev_xw = &ntv_table.events[idx]; + ev_xw->id = idx; + ev_xw->name = strdup(name_buf); + ev_xw->descr = strdup(descr_buf); + if (!ev_xw->name || !ev_xw->descr) + return PAPI_ENOMEM; + ev_xw->device = d; + ev_xw->value = 0; + ev_xw->mode = PAPI_MODE_READ; + ev_xw->variant = 1; + ev_xw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xw->open_func = open_simple; + ev_xw->close_func = close_simple; + ev_xw->start_func = start_simple; + ev_xw->stop_func = stop_simple; + ev_xw->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xw->name, ev_xw); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate XGMI link speed (Gb/s)", d); - native_event_t *ev_xb = &ntv_table.events[idx]; - ev_xb->id = idx; ev_xb->name = strdup(name_buf); - ev_xb->descr = strdup(descr_buf); - if (!ev_xb->name || !ev_xb->descr) return PAPI_ENOMEM; - ev_xb->device = d; ev_xb->value = 0; - ev_xb->mode = PAPI_MODE_READ; ev_xb->variant = 2; - ev_xb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xb->open_func = open_simple; ev_xb->close_func = close_simple; - ev_xb->start_func = start_simple; ev_xb->stop_func = stop_simple; - ev_xb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xb->name, ev_xb); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate XGMI link speed (Gb/s)", d); + native_event_t *ev_xb = &ntv_table.events[idx]; + ev_xb->id = idx; + ev_xb->name = strdup(name_buf); + ev_xb->descr = strdup(descr_buf); + if (!ev_xb->name || !ev_xb->descr) + return PAPI_ENOMEM; + ev_xb->device = d; + ev_xb->value = 0; + ev_xb->mode = PAPI_MODE_READ; + ev_xb->variant = 2; + ev_xb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xb->open_func = open_simple; + ev_xb->close_func = close_simple; + ev_xb->start_func = start_simple; + ev_xb->stop_func = stop_simple; + ev_xb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xb->name, ev_xb); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate XGMI max bandwidth (Gb/s)", d); - native_event_t *ev_xm = &ntv_table.events[idx]; - ev_xm->id = idx; ev_xm->name = strdup(name_buf); - ev_xm->descr = strdup(descr_buf); - if (!ev_xm->name || !ev_xm->descr) return PAPI_ENOMEM; - ev_xm->device = d; ev_xm->value = 0; - ev_xm->mode = PAPI_MODE_READ; ev_xm->variant = 3; - ev_xm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xm->open_func = open_simple; ev_xm->close_func = close_simple; - ev_xm->start_func = start_simple; ev_xm->stop_func = stop_simple; - ev_xm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xm->name, ev_xm); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "xgmi_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate XGMI max bandwidth (Gb/s)", d); + native_event_t *ev_xm = &ntv_table.events[idx]; + ev_xm->id = idx; + ev_xm->name = strdup(name_buf); + ev_xm->descr = strdup(descr_buf); + if (!ev_xm->name || !ev_xm->descr) + return PAPI_ENOMEM; + ev_xm->device = d; + ev_xm->value = 0; + ev_xm->mode = PAPI_MODE_READ; + ev_xm->variant = 3; + ev_xm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; + ev_xm->open_func = open_simple; + ev_xm->close_func = close_simple; + ev_xm->start_func = start_simple; + ev_xm->stop_func = stop_simple; + ev_xm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_xm->name, ev_xm); + idx++; + } - if (has_pcie) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "pcie_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate PCIe link speed (Gb/s)", d); - native_event_t *ev_pb = &ntv_table.events[idx]; - ev_pb->id = idx; ev_pb->name = strdup(name_buf); - ev_pb->descr = strdup(descr_buf); - if (!ev_pb->name || !ev_pb->descr) return PAPI_ENOMEM; - ev_pb->device = d; ev_pb->value = 0; - ev_pb->mode = PAPI_MODE_READ; ev_pb->variant = 2; - ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; - ev_pb->open_func = open_simple; ev_pb->close_func = close_simple; - ev_pb->start_func = start_simple; ev_pb->stop_func = stop_simple; - ev_pb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pb->name, ev_pb); idx++; + if (has_pcie) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "pcie_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe link speed (Gb/s)", d); + native_event_t *ev_pb = &ntv_table.events[idx]; + ev_pb->id = idx; + ev_pb->name = strdup(name_buf); + ev_pb->descr = strdup(descr_buf); + if (!ev_pb->name || !ev_pb->descr) + return PAPI_ENOMEM; + ev_pb->device = d; + ev_pb->value = 0; + ev_pb->mode = PAPI_MODE_READ; + ev_pb->variant = 2; + ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; + ev_pb->open_func = open_simple; + ev_pb->close_func = close_simple; + ev_pb->start_func = start_simple; + ev_pb->stop_func = stop_simple; + ev_pb->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pb->name, ev_pb); + idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), - "pcie_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate PCIe max bandwidth (Gb/s)", d); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id = idx; ev_pm->name = strdup(name_buf); - ev_pm->descr = strdup(descr_buf); - if (!ev_pm->name || !ev_pm->descr) return PAPI_ENOMEM; - ev_pm->device = d; ev_pm->value = 0; - ev_pm->mode = PAPI_MODE_READ; ev_pm->variant = 3; - ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; - ev_pm->open_func = open_simple; ev_pm->close_func = close_simple; - ev_pm->start_func = start_simple; ev_pm->stop_func = stop_simple; - ev_pm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pm->name, ev_pm); idx++; + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; } + snprintf(name_buf, sizeof(name_buf), "pcie_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe max bandwidth (Gb/s)", d); + native_event_t *ev_pm = &ntv_table.events[idx]; + ev_pm->id = idx; + ev_pm->name = strdup(name_buf); + ev_pm->descr = strdup(descr_buf); + if (!ev_pm->name || !ev_pm->descr) + return PAPI_ENOMEM; + ev_pm->device = d; + ev_pm->value = 0; + ev_pm->mode = PAPI_MODE_READ; + ev_pm->variant = 3; + ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; + ev_pm->open_func = open_simple; + ev_pm->close_func = close_simple; + ev_pm->start_func = start_simple; + ev_pm->stop_func = stop_simple; + ev_pm->access_func = access_amdsmi_link_metrics; + htable_insert(htable, ev_pm->name, ev_pm); + idx++; + } } /* Per-process metrics (up to two processes) */ if (amdsmi_get_gpu_process_list_p) { - const struct { - const char *suffix; - const char *descr; - uint32_t variant; - } pf[] = { - {"pid", "PID", 0}, - {"mem_bytes", "memory usage (bytes)", 1}, - {"engine_gfx_ns", "GFX engine time (ns)", 2}, - {"engine_enc_ns", "ENC engine time (ns)", 3}, - {"gtt_mem_MB", "GTT memory (MB)", 4}, - {"cpu_mem_MB", "CPU memory (MB)", 5}, - {"vram_mem_MB", "VRAM memory (MB)", 6}, - }; + const struct { + const char *suffix; + const char *descr; + uint32_t variant; + } pf[] = { + {"pid", "PID", 0}, + {"mem_bytes", "memory usage (bytes)", 1}, + {"engine_gfx_ns", "GFX engine time (ns)", 2}, + {"engine_enc_ns", "ENC engine time (ns)", 3}, + {"gtt_mem_MB", "GTT memory (MB)", 4}, + {"cpu_mem_MB", "CPU memory (MB)", 5}, + {"vram_mem_MB", "VRAM memory (MB)", 6}, + }; - for (int p = 0; p < 2; ++p) { - for (size_t f = 0; f < sizeof(pf) / sizeof(pf[0]); ++f) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } - snprintf(name_buf, sizeof(name_buf), - "process%d_%s:device=%d", p, pf[f].suffix, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d process %d %s", d, p, pf[f].descr); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) return PAPI_ENOMEM; - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = pf[f].variant; - ev->subvariant = p; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_process_info; - htable_insert(htable, ev->name, ev); - idx++; - } + for (int p = 0; p < 2; ++p) { + for (size_t f = 0; f < sizeof(pf) / sizeof(pf[0]); ++f) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + papi_free(ntv_table.events); + return PAPI_ENOSUPP; + } + snprintf(name_buf, sizeof(name_buf), "process%d_%s:device=%d", p, pf[f].suffix, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d process %d %s", d, p, pf[f].descr); + native_event_t *ev = &ntv_table.events[idx]; + ev->id = idx; + ev->name = strdup(name_buf); + ev->descr = strdup(descr_buf); + if (!ev->name || !ev->descr) + return PAPI_ENOMEM; + ev->device = d; + ev->value = 0; + ev->mode = PAPI_MODE_READ; + ev->variant = pf[f].variant; + ev->subvariant = p; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_amdsmi_process_info; + htable_insert(htable, ev->name, ev); + idx++; } + } } /* ECC totals & enabled mask (where supported) */ if (amdsmi_get_gpu_total_ecc_count_p) { @@ -4231,34 +4845,25 @@ static int init_event_table(void) { idx++; } if (amdsmi_get_gpu_ecc_count_p) { - amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, - AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, - AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, - AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, - AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = { - "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", - "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", - "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", + "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; const char *cnt_names[] = {"correctable", "uncorrectable", "deferred"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_error_count_t ec; - if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == - AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == AMDSMI_STATUS_SUCCESS) { for (int t = 0; t < 3; ++t) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", - block_names[bi], cnt_names[t], d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d %s block ECC %s errors", d, block_names[bi], - cnt_names[t]); + snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", block_names[bi], cnt_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s block ECC %s errors", d, block_names[bi], cnt_names[t]); native_event_t *ev_blk = &ntv_table.events[idx]; ev_blk->id = idx; ev_blk->name = strdup(name_buf); @@ -4280,31 +4885,23 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_ecc_status_p) { - amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, - AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, - AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, - AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, - AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = { - "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", - "df", "smn", "sem", "mp0", "mp1", "fuse", "mca", "vcn", - "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", + "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_ras_err_state_t st; - if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == - AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", - block_names[bi], d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d %s block ECC status", d, block_names[bi]); + snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", block_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s block ECC status", d, block_names[bi]); native_event_t *ev_blk = &ntv_table.events[idx]; ev_blk->id = idx; ev_blk->name = strdup(name_buf); diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 1c7b44257..15138e5ee 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1,9 +1,9 @@ #include "amds_priv.h" #include "papi.h" #include "papi_memory.h" -#include -#include #include +#include +#include /* -------- Helpers and new accessors (GPU read-only additions) -------- */ static uint64_t _str_to_u64_hash(const char *s) { /* djb2 64-bit */ @@ -198,47 +198,74 @@ int access_amdsmi_asic_info(int mode, void *arg) { return PAPI_OK; } int access_amdsmi_link_metrics(int mode, void *arg) { - if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - - amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); - if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - - uint32_t n = lm.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - - uint32_t enc = event->subvariant; - uint32_t link_type = enc >> 16; - uint32_t link_index = enc & 0xFFFF; /* 0xFFFF denotes aggregate */ - - uint64_t acc = 0; - if (link_index == 0xFFFF) { - for (uint32_t i = 0; i < n; ++i) { - if (link_type && lm.links[i].link_type != link_type) continue; - switch (event->variant) { - case 0: acc += lm.links[i].read; break; /* KB */ - case 1: acc += lm.links[i].write; break; /* KB */ - case 2: acc += lm.links[i].bit_rate; break; /* Gb/s */ - case 3: acc += lm.links[i].max_bandwidth;break; /* Gb/s */ - default: return PAPI_ENOSUPP; - } - } - } else { - if (link_index >= n) return PAPI_EMISC; - if (link_type && lm.links[link_index].link_type != link_type) return PAPI_EMISC; - switch (event->variant) { - case 0: acc = lm.links[link_index].read; break; /* KB */ - case 1: acc = lm.links[link_index].write; break; /* KB */ - case 2: acc = lm.links[link_index].bit_rate; break; /* Gb/s */ - case 3: acc = lm.links[link_index].max_bandwidth;break; /* Gb/s */ - default: return PAPI_ENOSUPP; - } + if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_link_metrics_t lm; + memset(&lm, 0, sizeof(lm)); + if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint32_t n = lm.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) + n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + + uint32_t enc = event->subvariant; + uint32_t link_type = enc >> 16; + uint32_t link_index = enc & 0xFFFF; /* 0xFFFF denotes aggregate */ + + uint64_t acc = 0; + if (link_index == 0xFFFF) { + for (uint32_t i = 0; i < n; ++i) { + if (link_type && lm.links[i].link_type != link_type) + continue; + switch (event->variant) { + case 0: + acc += lm.links[i].read; + break; /* KB */ + case 1: + acc += lm.links[i].write; + break; /* KB */ + case 2: + acc += lm.links[i].bit_rate; + break; /* Gb/s */ + case 3: + acc += lm.links[i].max_bandwidth; + break; /* Gb/s */ + default: + return PAPI_ENOSUPP; + } } + } else { + if (link_index >= n) + return PAPI_EMISC; + if (link_type && lm.links[link_index].link_type != link_type) + return PAPI_EMISC; + switch (event->variant) { + case 0: + acc = lm.links[link_index].read; + break; /* KB */ + case 1: + acc = lm.links[link_index].write; + break; /* KB */ + case 2: + acc = lm.links[link_index].bit_rate; + break; /* Gb/s */ + case 3: + acc = lm.links[link_index].max_bandwidth; + break; /* Gb/s */ + default: + return PAPI_ENOSUPP; + } + } - if (acc > (uint64_t)INT64_MAX) acc = (uint64_t)INT64_MAX; /* defensive */ - event->value = (int64_t)acc; - return PAPI_OK; + if (acc > (uint64_t)INT64_MAX) + acc = (uint64_t)INT64_MAX; /* defensive */ + event->value = (int64_t)acc; + return PAPI_OK; } int access_amdsmi_process_info(int mode, void *arg) { @@ -252,8 +279,7 @@ int access_amdsmi_process_info(int mode, void *arg) { amdsmi_proc_info_t list[2]; uint32_t maxp = 2; - amdsmi_status_t st = - amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); + amdsmi_status_t st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -331,15 +357,11 @@ int access_amdsmi_ecc_block(int mode, void *arg) { amdsmi_error_count_t ec; memset(&ec, 0, sizeof(ec)); - amdsmi_status_t st = - amdsmi_get_gpu_ecc_count_p(device_handles[event->device], - (amdsmi_gpu_block_t)event->subvariant, &ec); + amdsmi_status_t st = amdsmi_get_gpu_ecc_count_p(device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &ec); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint64_t v = (event->variant == 0) ? ec.correctable_count - : (event->variant == 1) ? ec.uncorrectable_count - : ec.deferred_count; + uint64_t v = (event->variant == 0) ? ec.correctable_count : (event->variant == 1) ? ec.uncorrectable_count : ec.deferred_count; if ((int64_t)v < 0) return PAPI_ENOSUPP; event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; @@ -352,12 +374,10 @@ int access_amdsmi_ecc_status(int mode, void *arg) { if (!amdsmi_get_gpu_ecc_status_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || - !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_ras_err_state_t st; - amdsmi_status_t rc = amdsmi_get_gpu_ecc_status_p( - device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &st); + amdsmi_status_t rc = amdsmi_get_gpu_ecc_status_p(device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &st); if (rc != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)st; @@ -1181,28 +1201,31 @@ int access_amdsmi_cache_stat(int mode, void *arg) { if (mode != PAPI_MODE_READ) { return PAPI_ENOSUPP; } - if (!amdsmi_get_gpu_cache_info_p) return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_cache_info_p) + return PAPI_ENOSUPP; amdsmi_gpu_cache_info_t info; amdsmi_status_t st = amdsmi_get_gpu_cache_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; /* subvariant = cache index chosen during registration */ - if (event->subvariant >= info.num_cache_types) return PAPI_EMISC; + if (event->subvariant >= info.num_cache_types) + return PAPI_EMISC; uint64_t val = 0; switch (event->variant) { - case 0: /* size in bytes (reported in KB) */ - val = (uint64_t)info.cache[event->subvariant].cache_size * 1024ULL; - break; - case 1: /* maximum number of CUs sharing this cache */ - val = (uint64_t)info.cache[event->subvariant].max_num_cu_shared; - break; - case 2: /* number of cache instances */ - val = (uint64_t)info.cache[event->subvariant].num_cache_instance; - break; - default: - return PAPI_EINVAL; + case 0: /* size in bytes (reported in KB) */ + val = (uint64_t)info.cache[event->subvariant].cache_size * 1024ULL; + break; + case 1: /* maximum number of CUs sharing this cache */ + val = (uint64_t)info.cache[event->subvariant].max_num_cu_shared; + break; + case 2: /* number of cache instances */ + val = (uint64_t)info.cache[event->subvariant].num_cache_instance; + break; + default: + return PAPI_EINVAL; } event->value = val; return PAPI_OK; @@ -1213,12 +1236,15 @@ int access_amdsmi_overdrive_level(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_overdrive_level_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_overdrive_level_p) + return PAPI_ENOSUPP; uint32_t od = 0; amdsmi_status_t st = amdsmi_get_gpu_overdrive_level_p(device_handles[event->device], &od); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)od; return PAPI_OK; } @@ -1228,12 +1254,15 @@ int access_amdsmi_mem_overdrive_level(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_mem_overdrive_level_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_mem_overdrive_level_p) + return PAPI_ENOSUPP; uint32_t od = 0; amdsmi_status_t st = amdsmi_get_gpu_mem_overdrive_level_p(device_handles[event->device], &od); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)od; return PAPI_OK; } @@ -1243,8 +1272,10 @@ int access_amdsmi_od_volt_regions_count(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_curve_regions_p) + return PAPI_ENOSUPP; /* Probe to get count; API requires a buffer, so do a two-call pattern */ uint32_t num = 0; @@ -1253,41 +1284,45 @@ int access_amdsmi_od_volt_regions_count(int mode, void *arg) { /* First call: ask for 0 (expect MORE_DATA/INSUFFICIENT_SIZE with num set) */ amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); if (st == AMDSMI_STATUS_INSUFFICIENT_SIZE || st == AMDSMI_STATUS_NO_DATA) { - if (num == 0) return PAPI_EMISC; + if (num == 0) + return PAPI_EMISC; buf = (amdsmi_freq_volt_region_t *)papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); - if (!buf) return PAPI_ENOMEM; + if (!buf) + return PAPI_ENOMEM; st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, buf); } if (st != AMDSMI_STATUS_SUCCESS) { - if (buf) papi_free(buf); + if (buf) + papi_free(buf); return PAPI_EMISC; } event->value = (uint64_t)num; - if (buf) papi_free(buf); + if (buf) + papi_free(buf); return PAPI_OK; } int access_amdsmi_od_volt_curve_range(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_od_volt_curve_regions_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_curve_regions_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || - !device_handles[event->device]) { + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } uint32_t num = 0; - amdsmi_status_t st = - amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], - &num, NULL); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - if (event->subvariant >= num) return PAPI_EMISC; - - amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *) - papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); - if (!regs) return PAPI_ENOMEM; - st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], - &num, regs); + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, NULL); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + if (event->subvariant >= num) + return PAPI_EMISC; + + amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *)papi_calloc(num, sizeof(amdsmi_freq_volt_region_t)); + if (!regs) + return PAPI_ENOMEM; + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[event->device], &num, regs); if (st != AMDSMI_STATUS_SUCCESS) { papi_free(regs); return PAPI_EMISC; @@ -1297,76 +1332,75 @@ int access_amdsmi_od_volt_curve_range(int mode, void *arg) { papi_free(regs); switch (event->variant) { - case 0: - event->value = (int64_t)r.freq_range.lower_bound; - break; - case 1: - event->value = (int64_t)r.freq_range.upper_bound; - break; - case 2: - event->value = (int64_t)r.volt_range.lower_bound; - break; - case 3: - event->value = (int64_t)r.volt_range.upper_bound; - break; - default: - return PAPI_ENOSUPP; + case 0: + event->value = (int64_t)r.freq_range.lower_bound; + break; + case 1: + event->value = (int64_t)r.freq_range.upper_bound; + break; + case 2: + event->value = (int64_t)r.volt_range.lower_bound; + break; + case 3: + event->value = (int64_t)r.volt_range.upper_bound; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } int access_amdsmi_od_volt_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_od_volt_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_od_volt_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || - !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) return PAPI_EMISC; amdsmi_od_volt_freq_data_t info; - amdsmi_status_t st = - amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + amdsmi_status_t st = amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; switch (event->variant) { - case 0: - event->value = (int64_t)info.curr_sclk_range.lower_bound; - break; - case 1: - event->value = (int64_t)info.curr_sclk_range.upper_bound; - break; - case 2: - event->value = (int64_t)info.curr_mclk_range.lower_bound; - break; - case 3: - event->value = (int64_t)info.curr_mclk_range.upper_bound; - break; - case 4: - event->value = (int64_t)info.sclk_freq_limits.lower_bound; - break; - case 5: - event->value = (int64_t)info.sclk_freq_limits.upper_bound; - break; - case 6: - event->value = (int64_t)info.mclk_freq_limits.lower_bound; - break; - case 7: - event->value = (int64_t)info.mclk_freq_limits.upper_bound; - break; - case 8: - if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) - return PAPI_EMISC; - event->value = - (int64_t)info.curve.vc_points[event->subvariant].frequency; - break; - case 9: - if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) - return PAPI_EMISC; - event->value = - (int64_t)info.curve.vc_points[event->subvariant].voltage; - break; - default: - return PAPI_ENOSUPP; + case 0: + event->value = (int64_t)info.curr_sclk_range.lower_bound; + break; + case 1: + event->value = (int64_t)info.curr_sclk_range.upper_bound; + break; + case 2: + event->value = (int64_t)info.curr_mclk_range.lower_bound; + break; + case 3: + event->value = (int64_t)info.curr_mclk_range.upper_bound; + break; + case 4: + event->value = (int64_t)info.sclk_freq_limits.lower_bound; + break; + case 5: + event->value = (int64_t)info.sclk_freq_limits.upper_bound; + break; + case 6: + event->value = (int64_t)info.mclk_freq_limits.lower_bound; + break; + case 7: + event->value = (int64_t)info.mclk_freq_limits.upper_bound; + break; + case 8: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) + return PAPI_EMISC; + event->value = (int64_t)info.curve.vc_points[event->subvariant].frequency; + break; + case 9: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) + return PAPI_EMISC; + event->value = (int64_t)info.curve.vc_points[event->subvariant].voltage; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } @@ -1376,12 +1410,15 @@ int access_amdsmi_perf_level(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_perf_level_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_perf_level_p) + return PAPI_ENOSUPP; amdsmi_dev_perf_level_t perf = AMDSMI_DEV_PERF_LEVEL_UNKNOWN; amdsmi_status_t st = amdsmi_get_gpu_perf_level_p(device_handles[event->device], &perf); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)perf; return PAPI_OK; } @@ -1391,14 +1428,18 @@ int access_amdsmi_pm_metrics_count(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_pm_metrics_info_p) + return PAPI_ENOSUPP; amdsmi_name_value_t *metrics = NULL; uint32_t count = 0; amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); - if (metrics) papi_free(metrics); /* library allocates */ - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (metrics) + papi_free(metrics); /* library allocates */ + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)count; return PAPI_OK; } @@ -1408,14 +1449,17 @@ int access_amdsmi_pm_metric_value(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_pm_metrics_info_p) + return PAPI_ENOSUPP; amdsmi_name_value_t *metrics = NULL; uint32_t count = 0; amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); if (st != AMDSMI_STATUS_SUCCESS || event->variant >= count) { - if (metrics) papi_free(metrics); + if (metrics) + papi_free(metrics); return PAPI_EMISC; } event->value = (int64_t)metrics[event->variant].value; @@ -1428,12 +1472,15 @@ int access_amdsmi_ras_ecc_schema(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_feature_info_p) + return PAPI_ENOSUPP; amdsmi_ras_feature_t ras = {0}; amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)ras.ecc_correction_schema_flag; return PAPI_OK; } @@ -1443,12 +1490,15 @@ int access_amdsmi_ras_eeprom_version(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ras_feature_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_feature_info_p) + return PAPI_ENOSUPP; amdsmi_ras_feature_t ras = {0}; amdsmi_status_t st = amdsmi_get_gpu_ras_feature_info_p(device_handles[event->device], &ras); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)ras.ras_eeprom_version; return PAPI_OK; } @@ -1458,14 +1508,16 @@ int access_amdsmi_ras_block_state(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ras_block_features_enabled_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_ras_block_features_enabled_p) + return PAPI_ENOSUPP; amdsmi_ras_err_state_t state; - amdsmi_status_t st = amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[event->device], - (amdsmi_gpu_block_t)event->variant, - &state); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + amdsmi_status_t st = + amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[event->device], (amdsmi_gpu_block_t)event->variant, &state); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)state; return PAPI_OK; } @@ -1475,15 +1527,19 @@ int access_amdsmi_reg_count(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_reg_table_info_p) + return PAPI_ENOSUPP; amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; /* set at registration */ amdsmi_name_value_t *regs = NULL; uint32_t num = 0; amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); - if (regs) papi_free(regs); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (regs) + papi_free(regs); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)num; return PAPI_OK; } @@ -1493,15 +1549,18 @@ int access_amdsmi_reg_value(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_reg_table_info_p) + return PAPI_ENOSUPP; amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; amdsmi_name_value_t *regs = NULL; uint32_t num = 0; amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); if (st != AMDSMI_STATUS_SUCCESS || event->subvariant >= num) { - if (regs) papi_free(regs); + if (regs) + papi_free(regs); return PAPI_EMISC; } event->value = (int64_t)regs[event->subvariant].value; @@ -1514,14 +1573,17 @@ int access_amdsmi_voltage(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_volt_metric_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_volt_metric_p) + return PAPI_ENOSUPP; - amdsmi_voltage_type_t sensor = (amdsmi_voltage_type_t)event->subvariant; /* set at registration */ + amdsmi_voltage_type_t sensor = (amdsmi_voltage_type_t)event->subvariant; /* set at registration */ amdsmi_voltage_metric_t metric = (amdsmi_voltage_metric_t)event->variant; /* e.g., AMDSMI_VOLT_CURRENT */ int64_t mv = 0; amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[event->device], sensor, metric, &mv); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)mv; /* API reports mV */ return PAPI_OK; } @@ -1531,12 +1593,15 @@ int access_amdsmi_vram_width(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) + return PAPI_ENOSUPP; amdsmi_vram_info_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)info.vram_bit_width; return PAPI_OK; } @@ -1546,12 +1611,15 @@ int access_amdsmi_vram_size(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) + return PAPI_ENOSUPP; amdsmi_vram_info_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; /* vram_size reported in MB */ event->value = (uint64_t)info.vram_size * 1024ULL * 1024ULL; return PAPI_OK; @@ -1562,12 +1630,15 @@ int access_amdsmi_vram_type(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) + return PAPI_ENOSUPP; amdsmi_vram_info_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)info.vram_type; return PAPI_OK; } @@ -1577,12 +1648,15 @@ int access_amdsmi_vram_vendor(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) + return PAPI_ENOSUPP; amdsmi_vram_info_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)info.vram_vendor; return PAPI_OK; } @@ -1592,12 +1666,15 @@ int access_amdsmi_vram_usage(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_usage_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_usage_p) + return PAPI_ENOSUPP; amdsmi_vram_usage_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; if (event->variant == 0) event->value = (uint64_t)info.vram_total; else if (event->variant == 1) @@ -1612,12 +1689,15 @@ int access_amdsmi_soc_pstate_id(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_soc_pstate_p) + return PAPI_ENOSUPP; amdsmi_dpm_policy_t pol = {0}; amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)pol.current; return PAPI_OK; } @@ -1627,12 +1707,15 @@ int access_amdsmi_soc_pstate_supported(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_soc_pstate_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_soc_pstate_p) + return PAPI_ENOSUPP; amdsmi_dpm_policy_t pol = {0}; amdsmi_status_t st = amdsmi_get_soc_pstate_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)pol.num_supported; return PAPI_OK; } @@ -1642,12 +1725,15 @@ int access_amdsmi_xgmi_plpd_id(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_xgmi_plpd_p) + return PAPI_ENOSUPP; amdsmi_dpm_policy_t pol = {0}; amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)pol.current; return PAPI_OK; } @@ -1657,66 +1743,85 @@ int access_amdsmi_xgmi_plpd_supported(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_xgmi_plpd_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_xgmi_plpd_p) + return PAPI_ENOSUPP; amdsmi_dpm_policy_t pol = {0}; amdsmi_status_t st = amdsmi_get_xgmi_plpd_p(device_handles[event->device], &pol); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (uint64_t)pol.num_supported; return PAPI_OK; } int access_amdsmi_process_isolation(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_process_isolation_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_process_isolation_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; uint32_t val = 0; amdsmi_status_t st = amdsmi_get_gpu_process_isolation_p(device_handles[event->device], &val); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)val; return PAPI_OK; } int access_amdsmi_xcd_counter(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_xcd_counter_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_xcd_counter_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; uint16_t cnt = 0; amdsmi_status_t st = amdsmi_get_gpu_xcd_counter_p(device_handles[event->device], &cnt); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)cnt; return PAPI_OK; } int access_amdsmi_board_serial_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_board_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_board_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; amdsmi_board_info_t info; amdsmi_status_t st = amdsmi_get_gpu_board_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)_str_to_u64_hash(info.product_serial); return PAPI_OK; } int access_amdsmi_fw_version(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_fw_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_fw_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) return PAPI_EMISC; amdsmi_fw_info_t info; amdsmi_status_t st = amdsmi_get_fw_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; amdsmi_fw_block_t id = (amdsmi_fw_block_t)event->variant; uint8_t n = info.num_fw_info; - if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; + if (n > AMDSMI_FW_ID__MAX) + n = AMDSMI_FW_ID__MAX; for (uint8_t i = 0; i < n; ++i) { if (info.fw_info_list[i].fw_id == id) { event->value = (int64_t)info.fw_info_list[i].fw_version; @@ -1727,53 +1832,70 @@ int access_amdsmi_fw_version(int mode, void *arg) { } int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_vram_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; amdsmi_vram_info_t info; amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)info.vram_max_bandwidth; /* GB/s */ return PAPI_OK; } int access_amdsmi_bad_page_count(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_bad_page_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; uint32_t num = 0; amdsmi_status_t st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, NULL); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)num; return PAPI_OK; } int access_amdsmi_bad_page_threshold(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_bad_page_threshold_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_threshold_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; uint32_t thr = 0; amdsmi_status_t st = amdsmi_get_gpu_bad_page_threshold_p(device_handles[event->device], &thr); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; event->value = (int64_t)thr; return PAPI_OK; } int access_amdsmi_bad_page_record(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_bad_page_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_gpu_bad_page_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; uint32_t num = 0; amdsmi_status_t st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, NULL); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - if (event->subvariant >= num) return PAPI_EMISC; - amdsmi_retired_page_record_t *recs = - (amdsmi_retired_page_record_t *)papi_calloc(num, sizeof(amdsmi_retired_page_record_t)); - if (!recs) return PAPI_ENOMEM; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + if (event->subvariant >= num) + return PAPI_EMISC; + amdsmi_retired_page_record_t *recs = (amdsmi_retired_page_record_t *)papi_calloc(num, sizeof(amdsmi_retired_page_record_t)); + if (!recs) + return PAPI_ENOMEM; st = amdsmi_get_gpu_bad_page_info_p(device_handles[event->device], &num, recs); if (st != AMDSMI_STATUS_SUCCESS) { papi_free(recs); @@ -1782,124 +1904,134 @@ int access_amdsmi_bad_page_record(int mode, void *arg) { amdsmi_retired_page_record_t rec = recs[event->subvariant]; papi_free(recs); switch (event->variant) { - case 0: - event->value = (int64_t)rec.page_address; - break; - case 1: - event->value = (int64_t)rec.page_size; - break; - case 2: - event->value = (int64_t)rec.status; - break; - default: - return PAPI_ENOSUPP; + case 0: + event->value = (int64_t)rec.page_address; + break; + case 1: + event->value = (int64_t)rec.page_size; + break; + case 2: + event->value = (int64_t)rec.status; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } int access_amdsmi_power_sensor(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_power_info_v2_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_power_info_v2_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; amdsmi_power_info_t info; amdsmi_status_t st = amdsmi_get_power_info_v2_p(device_handles[event->device], event->subvariant, &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; switch (event->variant) { - case 0: - event->value = (int64_t)info.current_socket_power; - break; - case 1: - event->value = (int64_t)info.average_socket_power; - break; - case 2: - event->value = (int64_t)info.socket_power; - break; - case 3: - event->value = (int64_t)info.gfx_voltage; - break; - case 4: - event->value = (int64_t)info.soc_voltage; - break; - case 5: - event->value = (int64_t)info.mem_voltage; - break; - case 6: - event->value = (int64_t)info.power_limit; - break; - default: - return PAPI_ENOSUPP; + case 0: + event->value = (int64_t)info.current_socket_power; + break; + case 1: + event->value = (int64_t)info.average_socket_power; + break; + case 2: + event->value = (int64_t)info.socket_power; + break; + case 3: + event->value = (int64_t)info.gfx_voltage; + break; + case 4: + event->value = (int64_t)info.soc_voltage; + break; + case 5: + event->value = (int64_t)info.mem_voltage; + break; + case 6: + event->value = (int64_t)info.power_limit; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } int access_amdsmi_pcie_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_pcie_info_p) return PAPI_ENOSUPP; + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_pcie_info_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_pcie_info_t info; amdsmi_status_t st = amdsmi_get_pcie_info_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; switch (event->variant) { - case 0: - event->value = info.pcie_static.max_pcie_width; - break; - case 1: - event->value = (int64_t)info.pcie_static.max_pcie_speed; - break; - case 2: - event->value = (int64_t)info.pcie_static.pcie_interface_version; - break; - case 3: - event->value = (int64_t)info.pcie_static.slot_type; - break; - case 4: - event->value = (int64_t)info.pcie_static.max_pcie_interface_version; - break; - case 5: - event->value = info.pcie_metric.pcie_width; - break; - case 6: - event->value = (int64_t)info.pcie_metric.pcie_speed; - break; - case 7: - event->value = (int64_t)info.pcie_metric.pcie_bandwidth; - break; - case 8: - event->value = (int64_t)info.pcie_metric.pcie_replay_count; - break; - case 9: - event->value = (int64_t)info.pcie_metric.pcie_l0_to_recovery_count; - break; - case 10: - event->value = (int64_t)info.pcie_metric.pcie_replay_roll_over_count; - break; - case 11: - event->value = (int64_t)info.pcie_metric.pcie_nak_sent_count; - break; - case 12: - event->value = (int64_t)info.pcie_metric.pcie_nak_received_count; - break; - case 13: - event->value = (int64_t)info.pcie_metric.pcie_lc_perf_other_end_recovery_count; - break; - default: - return PAPI_ENOSUPP; + case 0: + event->value = info.pcie_static.max_pcie_width; + break; + case 1: + event->value = (int64_t)info.pcie_static.max_pcie_speed; + break; + case 2: + event->value = (int64_t)info.pcie_static.pcie_interface_version; + break; + case 3: + event->value = (int64_t)info.pcie_static.slot_type; + break; + case 4: + event->value = (int64_t)info.pcie_static.max_pcie_interface_version; + break; + case 5: + event->value = info.pcie_metric.pcie_width; + break; + case 6: + event->value = (int64_t)info.pcie_metric.pcie_speed; + break; + case 7: + event->value = (int64_t)info.pcie_metric.pcie_bandwidth; + break; + case 8: + event->value = (int64_t)info.pcie_metric.pcie_replay_count; + break; + case 9: + event->value = (int64_t)info.pcie_metric.pcie_l0_to_recovery_count; + break; + case 10: + event->value = (int64_t)info.pcie_metric.pcie_replay_roll_over_count; + break; + case 11: + event->value = (int64_t)info.pcie_metric.pcie_nak_sent_count; + break; + case 12: + event->value = (int64_t)info.pcie_metric.pcie_nak_received_count; + break; + case 13: + event->value = (int64_t)info.pcie_metric.pcie_lc_perf_other_end_recovery_count; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } int access_amdsmi_event_notification(int mode, void *arg) { - if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_init_gpu_event_notification_p || !amdsmi_set_gpu_event_notification_mask_p || - !amdsmi_get_gpu_event_notification_p || !amdsmi_stop_gpu_event_notification_p) + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_init_gpu_event_notification_p || !amdsmi_set_gpu_event_notification_mask_p || !amdsmi_get_gpu_event_notification_p || + !amdsmi_stop_gpu_event_notification_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + return PAPI_EMISC; amdsmi_status_t st = amdsmi_init_gpu_event_notification_p(device_handles[event->device]); - if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; uint64_t mask = AMDSMI_EVENT_MASK_FROM_INDEX(event->variant); st = amdsmi_set_gpu_event_notification_mask_p(device_handles[event->device], mask); if (st != AMDSMI_STATUS_SUCCESS) { @@ -1912,7 +2044,8 @@ int access_amdsmi_event_notification(int mode, void *arg) { uint32_t cnt = 0; if (st == AMDSMI_STATUS_SUCCESS) { for (uint32_t i = 0; i < num; ++i) - if (data[i].event == (amdsmi_evt_notification_type_t)event->variant) cnt++; + if (data[i].event == (amdsmi_evt_notification_type_t)event->variant) + cnt++; } amdsmi_stop_gpu_event_notification_p(device_handles[event->device]); event->value = (int64_t)cnt; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 98675b2ed..6f48d8257 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -49,8 +49,10 @@ extern unsigned int _amd_smi_lock; extern amdsmi_status_t (*amdsmi_init_p)(uint64_t); extern amdsmi_status_t (*amdsmi_shut_down_p)(void); extern amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -extern amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); +extern amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, + uint32_t *); +extern amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, + int64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); @@ -85,7 +87,8 @@ extern amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, am extern amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); extern amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); extern amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); -extern amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, + uint32_t *); extern amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); extern amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); @@ -105,13 +108,15 @@ extern amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_hand extern amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); extern amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); extern amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); +extern amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, + amdsmi_ras_err_state_t *); extern amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); extern amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); extern amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); extern amdsmi_status_t (*amdsmi_get_gpu_vram_usage_p)(amdsmi_processor_handle, amdsmi_vram_usage_t *); extern amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); -extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); +extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, + uint32_t *); extern amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); extern amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); extern amdsmi_status_t (*amdsmi_get_gpu_bad_page_info_p)(amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *); @@ -138,8 +143,10 @@ extern amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_hand extern amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); extern amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); extern amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); +extern amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, + uint64_t *); +extern amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, + amdsmi_temp_range_refresh_rate_t *); extern amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); extern amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); #endif diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 330ca6c82..ade662623 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -17,101 +17,97 @@ #include "papi.h" - - // --------------------------------------------------------------------------- // Simple helper for PAPI error handling // --------------------------------------------------------------------------- -#define CALL_PAPI_OK(call) \ - do { \ - int _ret = (call); \ - if (_ret != PAPI_OK) { \ - fprintf(stderr, "%s:%d: PAPI error in '" #call "': %s\n", \ - __FILE__, __LINE__, PAPI_strerror(_ret)); \ - std::exit(EXIT_FAILURE); \ - } \ - } while (0) - -int main(int argc, char *argv[]) -{ - //------------------------------------------------------------------- - // 1. Initialise PAPI - //------------------------------------------------------------------- - int ret = PAPI_library_init(PAPI_VER_CURRENT); - if (ret != PAPI_VER_CURRENT) { - fprintf(stderr, "PAPI_library_init failed: %s\n", PAPI_strerror(ret)); - return EXIT_FAILURE; +#define CALL_PAPI_OK(call) \ + do { \ + int _ret = (call); \ + if (_ret != PAPI_OK) { \ + fprintf(stderr, "%s:%d: PAPI error in '" #call "': %s\n", __FILE__, __LINE__, PAPI_strerror(_ret)); \ + std::exit(EXIT_FAILURE); \ + } \ + } while (0) + +int main(int argc, char *argv[]) { + //------------------------------------------------------------------- + // 1. Initialise PAPI + //------------------------------------------------------------------- + int ret = PAPI_library_init(PAPI_VER_CURRENT); + if (ret != PAPI_VER_CURRENT) { + fprintf(stderr, "PAPI_library_init failed: %s\n", PAPI_strerror(ret)); + return EXIT_FAILURE; + } + + //------------------------------------------------------------------- + // 2. Locate the AMD-SMI component + //------------------------------------------------------------------- + int cid = -1; + const int ncomps = PAPI_num_components(); + for (int i = 0; i < ncomps && cid < 0; ++i) { + const PAPI_component_info_t *cinfo = PAPI_get_component_info(i); + if (cinfo && std::strcmp(cinfo->name, "amd_smi") == 0) { + cid = i; } + } + if (cid < 0) { + fprintf(stderr, "Unable to locate the amd_smi component ? is PAPI built with ROCm support?\n"); + return EXIT_FAILURE; + } + printf("Using AMD-SMI component id %d\n\n", cid); - //------------------------------------------------------------------- - // 2. Locate the AMD-SMI component - //------------------------------------------------------------------- - int cid = -1; - const int ncomps = PAPI_num_components(); - for (int i = 0; i < ncomps && cid < 0; ++i) { - const PAPI_component_info_t* cinfo = PAPI_get_component_info(i); - if (cinfo && std::strcmp(cinfo->name, "amd_smi") == 0) { - cid = i; - } + //------------------------------------------------------------------- + // 3. Enumerate every native event + //------------------------------------------------------------------- + int ev_code = PAPI_NATIVE_MASK; + if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { + fprintf(stderr, "No native events found for AMD-SMI component.\n"); + return EXIT_SUCCESS; // Nothing more to do + } + + int event_index = 0; + do { + char ev_name[PAPI_MAX_STR_LEN]{}; + if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { + // Should not happen, but skip if it does. + continue; } - if (cid < 0) { - fprintf(stderr, "Unable to locate the amd_smi component ? is PAPI built with ROCm support?\n"); - return EXIT_FAILURE; + + if (std::strncmp(ev_name, "process", 7) == 0) { + printf("[%4d] Skipping %s (process events not testable)\n\n", event_index++, ev_name); + continue; } - printf("Using AMD-SMI component id %d\n\n", cid); + + printf("[%4d] Testing %s...\n", event_index++, ev_name); //------------------------------------------------------------------- - // 3. Enumerate every native event + // 4-7. Create a fresh EventSet, read the event, print, cleanup //------------------------------------------------------------------- - int ev_code = PAPI_NATIVE_MASK; - if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { - fprintf(stderr, "No native events found for AMD-SMI component.\n"); - return EXIT_SUCCESS; // Nothing more to do + int eventSet = PAPI_NULL; + CALL_PAPI_OK(PAPI_create_eventset(&eventSet)); + CALL_PAPI_OK(PAPI_assign_eventset_component(eventSet, cid)); + + ret = PAPI_add_event(eventSet, ev_code); + if (ret != PAPI_OK) { + fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + continue; } - int event_index = 0; - do { - char ev_name[PAPI_MAX_STR_LEN]{}; - if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { - // Should not happen, but skip if it does. - continue; - } - - if (std::strncmp(ev_name, "process", 7) == 0) { - printf("[%4d] Skipping %s (process events not testable)\n\n", event_index++, ev_name); - continue; - } - - printf("[%4d] Testing %s...\n", event_index++, ev_name); - - //------------------------------------------------------------------- - // 4-7. Create a fresh EventSet, read the event, print, cleanup - //------------------------------------------------------------------- - int eventSet = PAPI_NULL; - CALL_PAPI_OK(PAPI_create_eventset(&eventSet)); - CALL_PAPI_OK(PAPI_assign_eventset_component(eventSet, cid)); - - ret = PAPI_add_event(eventSet, ev_code); - if (ret != PAPI_OK) { - fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); - continue; - } - - long long value = 0; - CALL_PAPI_OK(PAPI_start(eventSet)); - CALL_PAPI_OK(PAPI_stop(eventSet, &value)); - - printf(" %-60s = %lld\n\n", ev_name, value); - - CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); - - } while (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_EVENTS, cid) == PAPI_OK); + long long value = 0; + CALL_PAPI_OK(PAPI_start(eventSet)); + CALL_PAPI_OK(PAPI_stop(eventSet, &value)); - //------------------------------------------------------------------- - // 8. Shutdown - //------------------------------------------------------------------- - PAPI_shutdown(); - return EXIT_SUCCESS; + printf(" %-60s = %lld\n\n", ev_name, value); + + CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); + CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + + } while (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_EVENTS, cid) == PAPI_OK); + + //------------------------------------------------------------------- + // 8. Shutdown + //------------------------------------------------------------------- + PAPI_shutdown(); + return EXIT_SUCCESS; } From 1d20feb0edf6bbe900c36cfeb522d6ab5283c2a3 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:11:25 -0400 Subject: [PATCH 071/147] centralize amdsmi function pointer declarations --- src/components/amd_smi/amds.c | 1406 +++++++++++++++++---------- src/components/amd_smi/amds_funcs.h | 197 ++++ src/components/amd_smi/amds_priv.h | 107 +- 3 files changed, 1082 insertions(+), 628 deletions(-) create mode 100644 src/components/amd_smi/amds_funcs.h diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 3c9d3a15c..8b4ab498a 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -14,108 +14,13 @@ unsigned int _amd_smi_lock; /* Pointers to AMD SMI library functions (dynamically loaded) */ -amdsmi_status_t (*amdsmi_init_p)(uint64_t); -amdsmi_status_t (*amdsmi_shut_down_p)(void); -amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, uint32_t *); -amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, int64_t *); -amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); -amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); -amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); -amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); -amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); -amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); -amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); -amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); -amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); -amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); -amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); - -/* Additional read-only AMD SMI function pointers */ -amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); -amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); -amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); -amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); -amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); -amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); -amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); -amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); -amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); -amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); -amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); -amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); -amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); -amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, - uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); -amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); -amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); -amdsmi_status_t (*amdsmi_get_gpu_process_isolation_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_xcd_counter_p)(amdsmi_processor_handle, uint16_t *); -amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); -amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); -amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); -amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); -amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); -amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); -amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); -amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); -amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); -amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); -amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); -amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); -amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); -amdsmi_status_t (*amdsmi_get_gpu_vram_usage_p)(amdsmi_processor_handle, amdsmi_vram_usage_t *); -amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); -amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, uint32_t *); -amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); -amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); -amdsmi_status_t (*amdsmi_get_gpu_bad_page_info_p)(amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *); -amdsmi_status_t (*amdsmi_get_gpu_bad_page_threshold_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_power_info_v2_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_info_t *); -amdsmi_status_t (*amdsmi_init_gpu_event_notification_p)(amdsmi_processor_handle); -amdsmi_status_t (*amdsmi_set_gpu_event_notification_mask_p)(amdsmi_processor_handle, uint64_t); -amdsmi_status_t (*amdsmi_get_gpu_event_notification_p)(int, uint32_t *, amdsmi_evt_notification_data_t *); -amdsmi_status_t (*amdsmi_stop_gpu_event_notification_p)(amdsmi_processor_handle); - +#include "amds_funcs.h" +#define DEFINE_AMDSMI(name, ret, args) ret(*name) args; +AMD_SMI_GPU_FUNCTIONS(DEFINE_AMDSMI) #ifndef AMDSMI_DISABLE_ESMI -/* CPU function pointers */ -amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); -amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); -amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); -amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); -amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); -amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); -amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); -amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, - uint64_t *); -amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *); -amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); -amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +AMD_SMI_CPU_FUNCTIONS(DEFINE_AMDSMI) #endif +#undef DEFINE_AMDSMI /* Global device list and count */ int32_t device_count = 0; amdsmi_processor_handle *device_handles = NULL; @@ -136,7 +41,8 @@ static int shutdown_event_table(void); native_event_table_t ntv_table; native_event_table_t *ntv_table_p = NULL; -/* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). */ +/* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). + */ static int silence_stderr_begin(void) { int devnull = open("/dev/null", O_WRONLY); if (devnull < 0) @@ -183,7 +89,8 @@ static void sanitize_name(const char *src, char *dst, size_t len) { size_t j = 0; for (size_t i = 0; src[i] && j < len - 1; ++i) { char c = src[i]; - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9')) dst[j++] = c; else dst[j++] = '_'; @@ -199,37 +106,45 @@ static int load_amdsmi_sym(void) { const char *root = getenv("PAPI_AMDSMI_ROOT"); char so_path[PATH_MAX] = {0}; if (!root) { - snprintf(error_string, sizeof(error_string), "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); + snprintf(error_string, sizeof(error_string), + "PAPI_AMDSMI_ROOT not set; cannot find libamd_smi.so"); return PAPI_ENOSUPP; } snprintf(so_path, sizeof(so_path), "%s/lib/libamd_smi.so", root); amds_dlp = dlopen(so_path, RTLD_NOW | RTLD_GLOBAL); if (!amds_dlp) { - snprintf(error_string, sizeof(error_string), "dlopen(\"%s\"): %s", so_path, dlerror()); + snprintf(error_string, sizeof(error_string), "dlopen(\"%s\"): %s", so_path, + dlerror()); return PAPI_ENOSUPP; } /* Resolve required function symbols */ amdsmi_init_p = sym("amdsmi_init", NULL); amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); - amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); + amdsmi_get_processor_handles_by_type_p = + sym("amdsmi_get_processor_handles_by_type", NULL); /* Sensors */ amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); /* Memory */ - amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); - amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); + amdsmi_get_total_memory_p = + sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); + amdsmi_get_memory_usage_p = + sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); /* Utilization / activity */ - amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); + amdsmi_get_gpu_activity_p = + sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); /* Power */ amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); - amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); + amdsmi_set_power_cap_p = + sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); /* PCIe */ amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); - amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); + amdsmi_get_gpu_pci_replay_counter_p = + sym("amdsmi_get_gpu_pci_replay_counter", NULL); /* Clocks */ amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); @@ -239,14 +154,18 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); - amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); - amdsmi_get_gpu_process_isolation_p = sym("amdsmi_get_gpu_process_isolation", NULL); + amdsmi_get_gpu_virtualization_mode_p = + sym("amdsmi_get_gpu_virtualization_mode", NULL); + amdsmi_get_gpu_process_isolation_p = + sym("amdsmi_get_gpu_process_isolation", NULL); amdsmi_get_gpu_xcd_counter_p = sym("amdsmi_get_gpu_xcd_counter", NULL); amdsmi_get_gpu_pci_bandwidth_p = sym("amdsmi_get_gpu_pci_bandwidth", NULL); amdsmi_get_gpu_bdf_id_p = sym("amdsmi_get_gpu_bdf_id", NULL); - amdsmi_get_gpu_topo_numa_affinity_p = sym("amdsmi_get_gpu_topo_numa_affinity", NULL); + amdsmi_get_gpu_topo_numa_affinity_p = + sym("amdsmi_get_gpu_topo_numa_affinity", NULL); amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); - amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); + amdsmi_get_gpu_power_profile_presets_p = + sym("amdsmi_get_gpu_power_profile_presets", NULL); /* Additional read-only queries */ amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); @@ -255,65 +174,92 @@ static int load_amdsmi_sym(void) { amdsmi_get_fw_info_p = sym("amdsmi_get_fw_info", NULL); amdsmi_get_gpu_vbios_info_p = sym("amdsmi_get_gpu_vbios_info", NULL); amdsmi_get_gpu_device_uuid_p = sym("amdsmi_get_gpu_device_uuid", NULL); - amdsmi_get_gpu_enumeration_info_p = sym("amdsmi_get_gpu_enumeration_info", NULL); + amdsmi_get_gpu_enumeration_info_p = + sym("amdsmi_get_gpu_enumeration_info", NULL); amdsmi_get_gpu_vendor_name_p = sym("amdsmi_get_gpu_vendor_name", NULL); amdsmi_get_gpu_vram_vendor_p = sym("amdsmi_get_gpu_vram_vendor", NULL); amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); amdsmi_get_link_metrics_p = sym("amdsmi_get_link_metrics", NULL); amdsmi_get_gpu_process_list_p = sym("amdsmi_get_gpu_process_list", NULL); amdsmi_get_gpu_ecc_enabled_p = sym("amdsmi_get_gpu_ecc_enabled", NULL); - amdsmi_get_gpu_total_ecc_count_p = sym("amdsmi_get_gpu_total_ecc_count", NULL); + amdsmi_get_gpu_total_ecc_count_p = + sym("amdsmi_get_gpu_total_ecc_count", NULL); amdsmi_get_gpu_ecc_count_p = sym("amdsmi_get_gpu_ecc_count", NULL); amdsmi_get_gpu_ecc_status_p = sym("amdsmi_get_gpu_ecc_status", NULL); - amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); - amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); - amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); + amdsmi_get_gpu_compute_partition_p = + sym("amdsmi_get_gpu_compute_partition", NULL); + amdsmi_get_gpu_memory_partition_p = + sym("amdsmi_get_gpu_memory_partition", NULL); + amdsmi_get_gpu_accelerator_partition_profile_p = + sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); amdsmi_get_gpu_cache_info_p = sym("amdsmi_get_gpu_cache_info", NULL); - amdsmi_get_gpu_mem_overdrive_level_p = sym("amdsmi_get_gpu_mem_overdrive_level", NULL); - amdsmi_get_gpu_od_volt_curve_regions_p = sym("amdsmi_get_gpu_od_volt_curve_regions", NULL); + amdsmi_get_gpu_mem_overdrive_level_p = + sym("amdsmi_get_gpu_mem_overdrive_level", NULL); + amdsmi_get_gpu_od_volt_curve_regions_p = + sym("amdsmi_get_gpu_od_volt_curve_regions", NULL); amdsmi_get_gpu_od_volt_info_p = sym("amdsmi_get_gpu_od_volt_info", NULL); - amdsmi_get_gpu_overdrive_level_p = sym("amdsmi_get_gpu_overdrive_level", NULL); + amdsmi_get_gpu_overdrive_level_p = + sym("amdsmi_get_gpu_overdrive_level", NULL); amdsmi_get_gpu_perf_level_p = sym("amdsmi_get_gpu_perf_level", NULL); - amdsmi_get_gpu_pm_metrics_info_p = sym("amdsmi_get_gpu_pm_metrics_info", NULL); - amdsmi_get_gpu_ras_feature_info_p = sym("amdsmi_get_gpu_ras_feature_info", NULL); - amdsmi_get_gpu_ras_block_features_enabled_p = sym("amdsmi_get_gpu_ras_block_features_enabled", NULL); + amdsmi_get_gpu_pm_metrics_info_p = + sym("amdsmi_get_gpu_pm_metrics_info", NULL); + amdsmi_get_gpu_ras_feature_info_p = + sym("amdsmi_get_gpu_ras_feature_info", NULL); + amdsmi_get_gpu_ras_block_features_enabled_p = + sym("amdsmi_get_gpu_ras_block_features_enabled", NULL); amdsmi_get_gpu_reg_table_info_p = sym("amdsmi_get_gpu_reg_table_info", NULL); amdsmi_get_gpu_volt_metric_p = sym("amdsmi_get_gpu_volt_metric", NULL); amdsmi_get_gpu_vram_info_p = sym("amdsmi_get_gpu_vram_info", NULL); amdsmi_get_gpu_vram_usage_p = sym("amdsmi_get_gpu_vram_usage", NULL); amdsmi_get_pcie_info_p = sym("amdsmi_get_pcie_info", NULL); - amdsmi_get_processor_count_from_handles_p = sym("amdsmi_get_processor_count_from_handles", NULL); + amdsmi_get_processor_count_from_handles_p = + sym("amdsmi_get_processor_count_from_handles", NULL); amdsmi_get_soc_pstate_p = sym("amdsmi_get_soc_pstate", NULL); amdsmi_get_xgmi_plpd_p = sym("amdsmi_get_xgmi_plpd", NULL); amdsmi_get_gpu_bad_page_info_p = sym("amdsmi_get_gpu_bad_page_info", NULL); - amdsmi_get_gpu_bad_page_threshold_p = sym("amdsmi_get_gpu_bad_page_threshold", NULL); + amdsmi_get_gpu_bad_page_threshold_p = + sym("amdsmi_get_gpu_bad_page_threshold", NULL); amdsmi_get_power_info_v2_p = sym("amdsmi_get_power_info_v2", NULL); - amdsmi_init_gpu_event_notification_p = sym("amdsmi_init_gpu_event_notification", NULL); - amdsmi_set_gpu_event_notification_mask_p = sym("amdsmi_set_gpu_event_notification_mask", NULL); - amdsmi_get_gpu_event_notification_p = sym("amdsmi_get_gpu_event_notification", NULL); - amdsmi_stop_gpu_event_notification_p = sym("amdsmi_stop_gpu_event_notification", NULL); + amdsmi_init_gpu_event_notification_p = + sym("amdsmi_init_gpu_event_notification", NULL); + amdsmi_set_gpu_event_notification_mask_p = + sym("amdsmi_set_gpu_event_notification_mask", NULL); + amdsmi_get_gpu_event_notification_p = + sym("amdsmi_get_gpu_event_notification", NULL); + amdsmi_stop_gpu_event_notification_p = + sym("amdsmi_stop_gpu_event_notification", NULL); #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); amdsmi_get_cpucore_handles_p = sym("amdsmi_get_cpucore_handles", NULL); amdsmi_get_cpu_socket_power_p = sym("amdsmi_get_cpu_socket_power", NULL); - amdsmi_get_cpu_socket_power_cap_p = sym("amdsmi_get_cpu_socket_power_cap", NULL); - amdsmi_get_cpu_socket_power_cap_max_p = sym("amdsmi_get_cpu_socket_power_cap_max", NULL); + amdsmi_get_cpu_socket_power_cap_p = + sym("amdsmi_get_cpu_socket_power_cap", NULL); + amdsmi_get_cpu_socket_power_cap_max_p = + sym("amdsmi_get_cpu_socket_power_cap_max", NULL); amdsmi_get_cpu_core_energy_p = sym("amdsmi_get_cpu_core_energy", NULL); amdsmi_get_cpu_socket_energy_p = sym("amdsmi_get_cpu_socket_energy", NULL); amdsmi_get_cpu_smu_fw_version_p = sym("amdsmi_get_cpu_smu_fw_version", NULL); amdsmi_get_threads_per_core_p = sym("amdsmi_get_threads_per_core", NULL); amdsmi_get_cpu_family_p = sym("amdsmi_get_cpu_family", NULL); amdsmi_get_cpu_model_p = sym("amdsmi_get_cpu_model", NULL); - amdsmi_get_cpu_core_boostlimit_p = sym("amdsmi_get_cpu_core_boostlimit", NULL); - amdsmi_get_cpu_socket_current_active_freq_limit_p = sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); - amdsmi_get_cpu_socket_freq_range_p = sym("amdsmi_get_cpu_socket_freq_range", NULL); - amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); - amdsmi_get_minmax_bandwidth_between_processors_p = sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); - amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); - amdsmi_get_cpu_dimm_power_consumption_p = sym("amdsmi_get_cpu_dimm_power_consumption", NULL); - amdsmi_get_cpu_dimm_thermal_sensor_p = sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); + amdsmi_get_cpu_core_boostlimit_p = + sym("amdsmi_get_cpu_core_boostlimit", NULL); + amdsmi_get_cpu_socket_current_active_freq_limit_p = + sym("amdsmi_get_cpu_socket_current_active_freq_limit", NULL); + amdsmi_get_cpu_socket_freq_range_p = + sym("amdsmi_get_cpu_socket_freq_range", NULL); + amdsmi_get_cpu_core_current_freq_limit_p = + sym("amdsmi_get_cpu_core_current_freq_limit", NULL); + amdsmi_get_minmax_bandwidth_between_processors_p = + sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = + sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); + amdsmi_get_cpu_dimm_power_consumption_p = + sym("amdsmi_get_cpu_dimm_power_consumption", NULL); + amdsmi_get_cpu_dimm_thermal_sensor_p = + sym("amdsmi_get_cpu_dimm_thermal_sensor", NULL); #endif return PAPI_OK; } @@ -343,7 +289,8 @@ int amds_init(void) { papi_errno = PAPI_ENOEVNT; goto fn_fail; } - amdsmi_socket_handle *sockets = (amdsmi_socket_handle *)papi_calloc(socket_count, sizeof(amdsmi_socket_handle)); + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *)papi_calloc( + socket_count, sizeof(amdsmi_socket_handle)); if (!sockets) { papi_errno = PAPI_ENOMEM; goto fn_fail; @@ -360,7 +307,8 @@ int amds_init(void) { for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count_local = 0; processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( + sockets[s], proc_type, NULL, &gpu_count_local); if (st == AMDSMI_STATUS_SUCCESS) { total_gpu_count += gpu_count_local; } @@ -378,7 +326,8 @@ int amds_init(void) { papi_free(sockets); goto fn_fail; } - device_handles = (amdsmi_processor_handle *)papi_calloc(total_gpu_count + total_cpu_count, sizeof(*device_handles)); + device_handles = (amdsmi_processor_handle *)papi_calloc( + total_gpu_count + total_cpu_count, sizeof(*device_handles)); if (!device_handles) { papi_errno = PAPI_ENOMEM; sprintf(error_string, "Memory allocation error for device handles."); @@ -390,13 +339,15 @@ int amds_init(void) { for (uint32_t s = 0; s < socket_count; ++s) { uint32_t gpu_count_local = 0; processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, + &gpu_count_local); if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { continue; // no GPU on this socket or error } // Use the main device_handles array directly to avoid extra allocation amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, gpu_handles, &gpu_count_local); + status = amdsmi_get_processor_handles_by_type_p( + sockets[s], proc_type, gpu_handles, &gpu_count_local); if (status == AMDSMI_STATUS_SUCCESS) { device_count += gpu_count_local; } @@ -408,7 +359,8 @@ int amds_init(void) { // Retrieve CPU socket handles amdsmi_processor_handle *cpu_handles = NULL; if (total_cpu_count > 0) { - cpu_handles = (amdsmi_processor_handle *)papi_calloc(total_cpu_count, sizeof(amdsmi_processor_handle)); + cpu_handles = (amdsmi_processor_handle *)papi_calloc( + total_cpu_count, sizeof(amdsmi_processor_handle)); if (!cpu_handles) { papi_errno = PAPI_ENOMEM; sprintf(error_string, "Memory allocation error for CPU handles."); @@ -433,7 +385,8 @@ int amds_init(void) { cpu_count = total_cpu_count; // Retrieve CPU core handles for each CPU socket if (cpu_count > 0) { - cpu_core_handles = (amdsmi_processor_handle **)papi_calloc(cpu_count, sizeof(amdsmi_processor_handle *)); + cpu_core_handles = (amdsmi_processor_handle **)papi_calloc( + cpu_count, sizeof(amdsmi_processor_handle *)); cores_per_socket = (uint32_t *)papi_calloc(cpu_count, sizeof(uint32_t)); if (!cpu_core_handles || !cores_per_socket) { papi_errno = PAPI_ENOMEM; @@ -446,17 +399,21 @@ int amds_init(void) { } for (uint32_t s = 0; s < cpu_count; ++s) { uint32_t core_count = 0; - amdsmi_status_t st = - amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, NULL, &core_count); + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( + device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, + NULL, &core_count); if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { cores_per_socket[s] = 0; cpu_core_handles[s] = NULL; continue; } - cpu_core_handles[s] = (amdsmi_processor_handle *)papi_calloc(core_count, sizeof(amdsmi_processor_handle)); + cpu_core_handles[s] = (amdsmi_processor_handle *)papi_calloc( + core_count, sizeof(amdsmi_processor_handle)); if (!cpu_core_handles[s]) { papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles on socket %u.", s); + sprintf(error_string, + "Memory allocation error for CPU core handles on socket %u.", + s); for (uint32_t t = 0; t < s; ++t) { if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); @@ -465,8 +422,9 @@ int amds_init(void) { papi_free(cores_per_socket); goto fn_fail; } - st = amdsmi_get_processor_handles_by_type_p(device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, cpu_core_handles[s], - &core_count); + st = amdsmi_get_processor_handles_by_type_p( + device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, + cpu_core_handles[s], &core_count); if (st != AMDSMI_STATUS_SUCCESS) { papi_free(cpu_core_handles[s]); cpu_core_handles[s] = NULL; @@ -533,7 +491,8 @@ static int init_event_table(void) { return PAPI_OK; } // Keep original allocation approach - ntv_table.events = (native_event_t *)papi_calloc(MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); + ntv_table.events = (native_event_t *)papi_calloc( + MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); if (!ntv_table.events) { return PAPI_ENOMEM; } @@ -541,16 +500,32 @@ static int init_event_table(void) { char descr_buf[PAPI_MAX_STR_LEN]; // Define sensor arrays first amdsmi_temperature_type_t temp_sensors[] = { - AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, - AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX}; + AMDSMI_TEMPERATURE_TYPE_EDGE, AMDSMI_TEMPERATURE_TYPE_JUNCTION, + AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, + AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, + AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX}; const int num_temp_sensors = sizeof(temp_sensors) / sizeof(temp_sensors[0]); const amdsmi_temperature_metric_t temp_metrics[] = { - AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, - AMDSMI_TEMP_CRITICAL, AMDSMI_TEMP_CRITICAL_HYST, AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, AMDSMI_TEMP_CRIT_MIN, - AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST}; - const char *temp_metric_names[] = {"temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", - "temp_critical", "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", "temp_crit_min", - "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest"}; + AMDSMI_TEMP_CURRENT, + AMDSMI_TEMP_MAX, + AMDSMI_TEMP_MIN, + AMDSMI_TEMP_MAX_HYST, + AMDSMI_TEMP_MIN_HYST, + AMDSMI_TEMP_CRITICAL, + AMDSMI_TEMP_CRITICAL_HYST, + AMDSMI_TEMP_EMERGENCY, + AMDSMI_TEMP_EMERGENCY_HYST, + AMDSMI_TEMP_CRIT_MIN, + AMDSMI_TEMP_CRIT_MIN_HYST, + AMDSMI_TEMP_OFFSET, + AMDSMI_TEMP_LOWEST, + AMDSMI_TEMP_HIGHEST}; + const char *temp_metric_names[] = { + "temp_current", "temp_max", "temp_min", + "temp_max_hyst", "temp_min_hyst", "temp_critical", + "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", + "temp_crit_min", "temp_crit_min_hyst", "temp_offset", + "temp_lowest", "temp_highest"}; /* Temperature sensors - device-level cache + individual testing */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle @@ -561,7 +536,8 @@ static int init_event_table(void) { // GPU cache info events if (amdsmi_get_gpu_cache_info_p) { amdsmi_gpu_cache_info_t cache_info; - if (amdsmi_get_gpu_cache_info_p(device_handles[d], &cache_info) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_cache_info_p(device_handles[d], &cache_info) == + AMDSMI_STATUS_SUCCESS) { for (uint32_t i = 0; i < cache_info.num_cache_types; ++i) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); @@ -570,16 +546,23 @@ static int init_event_table(void) { uint32_t level = cache_info.cache[i].cache_level; uint32_t prop = cache_info.cache[i].cache_properties; char type_str[8] = "cache"; - if ((prop & AMDSMI_CACHE_PROPERTY_INST_CACHE) && !(prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE)) { + if ((prop & AMDSMI_CACHE_PROPERTY_INST_CACHE) && + !(prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE)) { strcpy(type_str, "icache"); - } else if ((prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE) && !(prop & AMDSMI_CACHE_PROPERTY_INST_CACHE)) { + } else if ((prop & AMDSMI_CACHE_PROPERTY_DATA_CACHE) && + !(prop & AMDSMI_CACHE_PROPERTY_INST_CACHE)) { strcpy(type_str, "dcache"); } else { strcpy(type_str, "cache"); } - snprintf(name_buf, sizeof(name_buf), "L%u_%s_size:device=%d", level, type_str, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s size (bytes)", d, level, - (strcmp(type_str, "cache") == 0 ? "cache" : (strcmp(type_str, "icache") == 0 ? "instruction cache" : "data cache"))); + snprintf(name_buf, sizeof(name_buf), "L%u_%s_size:device=%d", level, + type_str, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d L%u %s size (bytes)", d, level, + (strcmp(type_str, "cache") == 0 + ? "cache" + : (strcmp(type_str, "icache") == 0 ? "instruction cache" + : "data cache"))); native_event_t *ev_cache = &ntv_table.events[idx]; ev_cache->id = idx; ev_cache->name = strdup(name_buf); @@ -601,8 +584,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", level, type_str, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s max CUs sharing", d, level, type_str); + snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", + level, type_str, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d L%u %s max CUs sharing", d, level, type_str); native_event_t *ev_cache_cu = &ntv_table.events[idx]; ev_cache_cu->id = idx; ev_cache_cu->name = strdup(name_buf); @@ -624,8 +609,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", level, type_str, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", d, level, type_str); + snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", + level, type_str, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", + d, level, type_str); native_event_t *ev_cache_inst = &ntv_table.events[idx]; ev_cache_inst->id = idx; ev_cache_inst->name = strdup(name_buf); @@ -648,13 +635,15 @@ static int init_event_table(void) { // GPU VRAM info events if (amdsmi_get_gpu_vram_info_p) { amdsmi_vram_info_t vram_info; - if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM bus width (bits)", d); native_event_t *ev_vram_width = &ntv_table.events[idx]; ev_vram_width->id = idx; ev_vram_width->name = strdup(name_buf); @@ -677,7 +666,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", + d); native_event_t *ev_vram_size = &ntv_table.events[idx]; ev_vram_size->id = idx; ev_vram_size->name = strdup(name_buf); @@ -745,13 +735,15 @@ static int init_event_table(void) { // PCIe information events if (amdsmi_get_pcie_info_p) { amdsmi_pcie_info_t pcie_info; - if (amdsmi_get_pcie_info_p(device_handles[d], &pcie_info) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_pcie_info_p(device_handles[d], &pcie_info) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_max_width:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d maximum PCIe link width (lanes)", d); native_event_t *ev_pw = &ntv_table.events[idx]; ev_pw->id = idx; ev_pw->name = strdup(name_buf); @@ -774,7 +766,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d maximum PCIe link speed (GT/s)", d); native_event_t *ev_ps = &ntv_table.events[idx]; ev_ps->id = idx; ev_ps->name = strdup(name_buf); @@ -796,8 +789,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe interface version", d); + snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe interface version", d); native_event_t *ev_piv = &ntv_table.events[idx]; ev_piv->id = idx; ev_piv->name = strdup(name_buf); @@ -842,8 +837,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_max_interface_version:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe interface version", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_max_interface_version:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d maximum PCIe interface version", d); native_event_t *ev_pmiv = &ntv_table.events[idx]; ev_pmiv->id = idx; ev_pmiv->name = strdup(name_buf); @@ -866,7 +863,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current PCIe link width (lanes)", d); native_event_t *ev_cw = &ntv_table.events[idx]; ev_cw->id = idx; ev_cw->name = strdup(name_buf); @@ -889,7 +887,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current PCIe link speed (MT/s)", d); native_event_t *ev_cs = &ntv_table.events[idx]; ev_cs->id = idx; ev_cs->name = strdup(name_buf); @@ -912,7 +911,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d instantaneous PCIe bandwidth (Mb/s)", d); native_event_t *ev_cb = &ntv_table.events[idx]; ev_cb->id = idx; ev_cb->name = strdup(name_buf); @@ -935,7 +935,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", + d); native_event_t *ev_pr = &ntv_table.events[idx]; ev_pr->id = idx; ev_pr->name = strdup(name_buf); @@ -957,8 +958,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recovery_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_l0_to_recovery_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe L0->recovery count", d); native_event_t *ev_pl0 = &ntv_table.events[idx]; ev_pl0->id = idx; ev_pl0->name = strdup(name_buf); @@ -980,8 +983,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_replay_rollover_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_replay_rollover_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe replay rollover count", d); native_event_t *ev_prr = &ntv_table.events[idx]; ev_prr->id = idx; ev_prr->name = strdup(name_buf); @@ -1003,8 +1008,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); + snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", + d); native_event_t *ev_pns = &ntv_table.events[idx]; ev_pns->id = idx; ev_pns->name = strdup(name_buf); @@ -1026,8 +1033,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_nak_received_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_nak_received_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe NAK received count", d); native_event_t *ev_pnr = &ntv_table.events[idx]; ev_pnr->id = idx; ev_pnr->name = strdup(name_buf); @@ -1049,8 +1058,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_other_end_recovery_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe other-end recovery count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_other_end_recovery_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe other-end recovery count", d); native_event_t *ev_poer = &ntv_table.events[idx]; ev_poer->id = idx; ev_poer->name = strdup(name_buf); @@ -1072,13 +1083,16 @@ static int init_event_table(void) { // GPU Overdrive level events if (amdsmi_get_gpu_overdrive_level_p) { uint32_t od_val; - if (amdsmi_get_gpu_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_overdrive_level_p(device_handles[d], &od_val) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU core clock overdrive (%%)", d); + snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GPU core clock overdrive (%%)", d); native_event_t *ev_od = &ntv_table.events[idx]; ev_od->id = idx; ev_od->name = strdup(name_buf); @@ -1099,13 +1113,16 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_mem_overdrive_level_p) { uint32_t od_val; - if (amdsmi_get_gpu_mem_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_mem_overdrive_level_p(device_handles[d], &od_val) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "gpu_mem_overdrive_percent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU memory clock overdrive (%%)", d); + snprintf(name_buf, sizeof(name_buf), + "gpu_mem_overdrive_percent:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GPU memory clock overdrive (%%)", d); native_event_t *ev_mod = &ntv_table.events[idx]; ev_mod->id = idx; ev_mod->name = strdup(name_buf); @@ -1127,13 +1144,15 @@ static int init_event_table(void) { // GPU performance level event if (amdsmi_get_gpu_perf_level_p) { amdsmi_dev_perf_level_t perf; - if (amdsmi_get_gpu_perf_level_p(device_handles[d], &perf) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_perf_level_p(device_handles[d], &perf) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "perf_level:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current performance level", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current performance level", d); native_event_t *ev_perf = &ntv_table.events[idx]; ev_perf->id = idx; ev_perf->name = strdup(name_buf); @@ -1159,7 +1178,8 @@ static int init_event_table(void) { uint32_t mcount = 0; int saved_stderr = silence_stderr_begin(); - amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], &metrics, &mcount); + amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], + &metrics, &mcount); silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { @@ -1170,7 +1190,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of PM metrics available", d); native_event_t *ev_pmcount = &ntv_table.events[idx]; ev_pmcount->id = idx; ev_pmcount->name = strdup(name_buf); @@ -1196,8 +1217,10 @@ static int init_event_table(void) { } char metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(metrics[i].name, metric_name, sizeof(metric_name)); - snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PM metric %s", d, metrics[i].name); + snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, + d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PM metric %s", d, + metrics[i].name); native_event_t *ev_pm = &ntv_table.events[idx]; ev_pm->id = idx; ev_pm->name = strdup(name_buf); @@ -1222,13 +1245,16 @@ static int init_event_table(void) { // GPU RAS feature (ECC schema) event if (amdsmi_get_gpu_ras_feature_info_p) { amdsmi_ras_feature_t ras; - if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); + snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d ECC correction features mask", d); native_event_t *ev_ras = &ntv_table.events[idx]; ev_ras->id = idx; ev_ras->name = strdup(name_buf); @@ -1251,7 +1277,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", + d); native_event_t *ev_ras_ver = &ntv_table.events[idx]; ev_ras_ver->id = idx; ev_ras_ver->name = strdup(name_buf); @@ -1271,23 +1298,34 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_ras_block_features_enabled_p) { - amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", - "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, + AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, + AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, + AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", + "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", + "mca", "vcn", "jpeg", "ih", "mpio"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_ras_err_state_t st; - if (amdsmi_get_gpu_ras_block_features_enabled_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ras_block_features_enabled_p( + device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ras_block_%s_state:device=%d", block_names[bi], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS state for %s block", d, block_names[bi]); + snprintf(name_buf, sizeof(name_buf), "ras_block_%s_state:device=%d", + block_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d RAS state for %s block", d, block_names[bi]); native_event_t *ev_blk = &ntv_table.events[idx]; ev_blk->id = idx; ev_blk->name = strdup(name_buf); @@ -1309,32 +1347,45 @@ static int init_event_table(void) { } // GPU voltage metrics events if (amdsmi_get_gpu_volt_metric_p) { - const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", "vddmisc", "vdd", "vdd2", "vddboard"}; - const amdsmi_voltage_metric_t metrics[] = {AMDSMI_VOLT_CURRENT, AMDSMI_VOLT_MAX, AMDSMI_VOLT_MIN_CRIT, AMDSMI_VOLT_MIN, - AMDSMI_VOLT_MAX_CRIT, AMDSMI_VOLT_AVERAGE, AMDSMI_VOLT_LOWEST, AMDSMI_VOLT_HIGHEST}; - const char *metric_names[] = {"current", "max", "min_crit", "min", "max_crit", "average", "lowest", "highest"}; + const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", + "vddmisc", "vdd", "vdd2", "vddboard"}; + const amdsmi_voltage_metric_t metrics[] = { + AMDSMI_VOLT_CURRENT, AMDSMI_VOLT_MAX, AMDSMI_VOLT_MIN_CRIT, + AMDSMI_VOLT_MIN, AMDSMI_VOLT_MAX_CRIT, AMDSMI_VOLT_AVERAGE, + AMDSMI_VOLT_LOWEST, AMDSMI_VOLT_HIGHEST}; + const char *metric_names[] = {"current", "max", "min_crit", + "min", "max_crit", "average", + "lowest", "highest"}; const uint32_t max_sensors = 8; for (uint32_t s = 0; s < max_sensors; ++s) { int64_t dummy = 0; - amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)s, AMDSMI_VOLT_CURRENT, &dummy); + amdsmi_status_t st = amdsmi_get_gpu_volt_metric_p( + device_handles[d], (amdsmi_voltage_type_t)s, AMDSMI_VOLT_CURRENT, + &dummy); if (st != AMDSMI_STATUS_SUCCESS) continue; for (uint32_t m = 0; m < sizeof(metrics) / sizeof(metrics[0]); ++m) { - st = amdsmi_get_gpu_volt_metric_p(device_handles[d], (amdsmi_voltage_type_t)s, metrics[m], &dummy); + st = amdsmi_get_gpu_volt_metric_p( + device_handles[d], (amdsmi_voltage_type_t)s, metrics[m], &dummy); if (st != AMDSMI_STATUS_SUCCESS) continue; if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - const char *sname = (s < sizeof(sensor_names) / sizeof(sensor_names[0])) ? sensor_names[s] : "sensor"; + const char *sname = + (s < sizeof(sensor_names) / sizeof(sensor_names[0])) + ? sensor_names[s] + : "sensor"; char sensor_buf[32]; if (strcmp(sname, "sensor") == 0) { snprintf(sensor_buf, sizeof(sensor_buf), "sensor%u", s); sname = sensor_buf; } - snprintf(name_buf, sizeof(name_buf), "voltage_%s_%s:device=%d", sname, metric_names[m], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s voltage (mV)", d, sname, metric_names[m]); + snprintf(name_buf, sizeof(name_buf), "voltage_%s_%s:device=%d", sname, + metric_names[m], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s voltage (mV)", + d, sname, metric_names[m]); native_event_t *ev_volt = &ntv_table.events[idx]; ev_volt->id = idx; ev_volt->name = strdup(name_buf); @@ -1357,19 +1408,25 @@ static int init_event_table(void) { // GPU OD voltage curve region events if (amdsmi_get_gpu_od_volt_curve_regions_p) { uint32_t num_regions = 0; - amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, NULL); + amdsmi_status_t st = amdsmi_get_gpu_od_volt_curve_regions_p( + device_handles[d], &num_regions, NULL); if (st == AMDSMI_STATUS_SUCCESS && num_regions > 0) { - amdsmi_freq_volt_region_t *regs = (amdsmi_freq_volt_region_t *)papi_calloc(num_regions, sizeof(amdsmi_freq_volt_region_t)); + amdsmi_freq_volt_region_t *regs = + (amdsmi_freq_volt_region_t *)papi_calloc( + num_regions, sizeof(amdsmi_freq_volt_region_t)); if (regs) { - st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, regs); + st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], + &num_regions, regs); if (st == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); papi_free(regs); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of voltage curve regions", d); + snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of voltage curve regions", d); native_event_t *ev_vcr = &ntv_table.events[idx]; ev_vcr->id = idx; ev_vcr->name = strdup(name_buf); @@ -1394,8 +1451,12 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_min:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u frequency lower bound", d, r); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_freq_min:device=%d:region=%u", d, r); + snprintf( + descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency lower bound", d, + r); native_event_t *ev_fmin = &ntv_table.events[idx]; ev_fmin->id = idx; ev_fmin->name = strdup(name_buf); @@ -1413,8 +1474,12 @@ static int init_event_table(void) { htable_insert(htable, ev_fmin->name, ev_fmin); idx++; - snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_max:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u frequency upper bound", d, r); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_freq_max:device=%d:region=%u", d, r); + snprintf( + descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency upper bound", d, + r); native_event_t *ev_fmax = &ntv_table.events[idx]; ev_fmax->id = idx; ev_fmax->name = strdup(name_buf); @@ -1432,8 +1497,11 @@ static int init_event_table(void) { htable_insert(htable, ev_fmax->name, ev_fmax); idx++; - snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_min:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage lower bound", d, r); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_volt_min:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u voltage lower bound", + d, r); native_event_t *ev_vmin = &ntv_table.events[idx]; ev_vmin->id = idx; ev_vmin->name = strdup(name_buf); @@ -1451,8 +1519,11 @@ static int init_event_table(void) { htable_insert(htable, ev_vmin->name, ev_vmin); idx++; - snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_max:device=%d:region=%u", d, r); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage upper bound", d, r); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_volt_max:device=%d:region=%u", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u voltage upper bound", + d, r); native_event_t *ev_vmax = &ntv_table.events[idx]; ev_vmax->id = idx; ev_vmax->name = strdup(name_buf); @@ -1477,13 +1548,16 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_od_volt_info_p) { amdsmi_od_volt_freq_data_t info; - if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == AMDSMI_STATUS_SUCCESS) { - if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > MAX_EVENTS_PER_DEVICE * device_count) { + if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == + AMDSMI_STATUS_SUCCESS) { + if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > + MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency lower bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current SCLK frequency lower bound", d); native_event_t *ev_csmin = &ntv_table.events[idx]; ev_csmin->id = idx; ev_csmin->name = strdup(name_buf); @@ -1502,7 +1576,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency upper bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current SCLK frequency upper bound", d); native_event_t *ev_csmax = &ntv_table.events[idx]; ev_csmax->id = idx; ev_csmax->name = strdup(name_buf); @@ -1521,7 +1596,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency lower bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current MCLK frequency lower bound", d); native_event_t *ev_cmmin = &ntv_table.events[idx]; ev_cmmin->id = idx; ev_cmmin->name = strdup(name_buf); @@ -1540,7 +1616,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency upper bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current MCLK frequency upper bound", d); native_event_t *ev_cmmax = &ntv_table.events[idx]; ev_cmmax->id = idx; ev_cmmax->name = strdup(name_buf); @@ -1559,7 +1636,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit lower bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d SCLK frequency limit lower bound", d); native_event_t *ev_slmin = &ntv_table.events[idx]; ev_slmin->id = idx; ev_slmin->name = strdup(name_buf); @@ -1578,7 +1656,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit upper bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d SCLK frequency limit upper bound", d); native_event_t *ev_slmax = &ntv_table.events[idx]; ev_slmax->id = idx; ev_slmax->name = strdup(name_buf); @@ -1597,7 +1676,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit lower bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d MCLK frequency limit lower bound", d); native_event_t *ev_mlmin = &ntv_table.events[idx]; ev_mlmin->id = idx; ev_mlmin->name = strdup(name_buf); @@ -1616,7 +1696,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit upper bound", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d MCLK frequency limit upper bound", d); native_event_t *ev_mlmax = &ntv_table.events[idx]; ev_mlmax->id = idx; ev_mlmax->name = strdup(name_buf); @@ -1639,8 +1720,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "volt_curve_point_freq:device=%d:point=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u frequency", d, p); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_point_freq:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve point %u frequency", d, p); native_event_t *ev_pf = &ntv_table.events[idx]; ev_pf->id = idx; ev_pf->name = strdup(name_buf); @@ -1658,8 +1741,10 @@ static int init_event_table(void) { htable_insert(htable, ev_pf->name, ev_pf); idx++; - snprintf(name_buf, sizeof(name_buf), "volt_curve_point_volt:device=%d:point=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u voltage", d, p); + snprintf(name_buf, sizeof(name_buf), + "volt_curve_point_volt:device=%d:point=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve point %u voltage", d, p); native_event_t *ev_pv = &ntv_table.events[idx]; ev_pv->id = idx; ev_pv->name = strdup(name_buf); @@ -1682,13 +1767,16 @@ static int init_event_table(void) { // GPU SoC P-state policy events if (amdsmi_get_soc_pstate_p) { amdsmi_dpm_policy_t policy; - if (amdsmi_get_soc_pstate_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { + if (amdsmi_get_soc_pstate_p(device_handles[d], &policy) == + AMDSMI_STATUS_SUCCESS && + policy.num_supported > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "soc_pstate_policy:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current SoC P-state policy id", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current SoC P-state policy id", d); native_event_t *ev_soc = &ntv_table.events[idx]; ev_soc->id = idx; ev_soc->name = strdup(name_buf); @@ -1709,8 +1797,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported SoC P-state count", d); + snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d supported SoC P-state count", d); native_event_t *ev_soc_sup = &ntv_table.events[idx]; ev_soc_sup->id = idx; ev_soc_sup->name = strdup(name_buf); @@ -1732,13 +1822,16 @@ static int init_event_table(void) { // GPU XGMI PLPD policy events if (amdsmi_get_xgmi_plpd_p) { amdsmi_dpm_policy_t policy; - if (amdsmi_get_xgmi_plpd_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { + if (amdsmi_get_xgmi_plpd_p(device_handles[d], &policy) == + AMDSMI_STATUS_SUCCESS && + policy.num_supported > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "xgmi_plpd:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current XGMI PLPD policy id", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current XGMI PLPD policy id", d); native_event_t *ev_xplpd = &ntv_table.events[idx]; ev_xplpd->id = idx; ev_xplpd->name = strdup(name_buf); @@ -1759,8 +1852,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported XGMI PLPD policy count", d); + snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d supported XGMI PLPD policy count", d); native_event_t *ev_xplpd_sup = &ntv_table.events[idx]; ev_xplpd_sup->id = idx; ev_xplpd_sup->name = strdup(name_buf); @@ -1781,14 +1876,17 @@ static int init_event_table(void) { } // GPU register table metrics count events if (amdsmi_get_gpu_reg_table_info_p) { - amdsmi_reg_type_t reg_types[] = {AMDSMI_REG_XGMI, AMDSMI_REG_WAFL, AMDSMI_REG_PCIE, AMDSMI_REG_USR, AMDSMI_REG_USR1}; + amdsmi_reg_type_t reg_types[] = {AMDSMI_REG_XGMI, AMDSMI_REG_WAFL, + AMDSMI_REG_PCIE, AMDSMI_REG_USR, + AMDSMI_REG_USR1}; const char *reg_names[] = {"XGMI", "WAFL", "PCIE", "USR", "USR1"}; for (int rt = 0; rt < 5; ++rt) { amdsmi_name_value_t *reg_metrics = NULL; uint32_t num_metrics = 0; int saved_stderr = silence_stderr_begin(); - amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[d], reg_types[rt], ®_metrics, &num_metrics); + amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p( + device_handles[d], reg_types[rt], ®_metrics, &num_metrics); silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { @@ -1798,8 +1896,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", reg_names[rt], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of %s register metrics", d, reg_names[rt]); + snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", + reg_names[rt], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of %s register metrics", d, reg_names[rt]); native_event_t *ev_reg = &ntv_table.events[idx]; ev_reg->id = idx; ev_reg->name = strdup(name_buf); @@ -1825,9 +1925,12 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } char reg_metric_name[MAX_AMDSMI_NAME_LENGTH]; - sanitize_name(reg_metrics[i].name, reg_metric_name, sizeof(reg_metric_name)); - snprintf(name_buf, sizeof(name_buf), "reg_%s_%s:device=%d", reg_names[rt], reg_metric_name, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s register %s", d, reg_names[rt], reg_metrics[i].name); + sanitize_name(reg_metrics[i].name, reg_metric_name, + sizeof(reg_metric_name)); + snprintf(name_buf, sizeof(name_buf), "reg_%s_%s:device=%d", + reg_names[rt], reg_metric_name, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s register %s", + d, reg_names[rt], reg_metrics[i].name); native_event_t *ev_reg_val = &ntv_table.events[idx]; ev_reg_val->id = idx; ev_reg_val->name = strdup(name_buf); @@ -1855,23 +1958,30 @@ static int init_event_table(void) { // Test each sensor individually first int64_t sensor_test_val; if (!amdsmi_get_temp_metric_p || - amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { + amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + AMDSMI_TEMP_CURRENT, + &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { continue; // Skip this specific sensor if it doesn't work } // Register metrics for this working sensor, testing each metric // individually - for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); ++mi) { + for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); + ++mi) { // Bounds check to prevent buffer overflow if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; // Too many events } // Test this specific metric on this specific sensor int64_t metric_val; - if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], temp_metrics[mi], &metric_val) != AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], + temp_metrics[mi], + &metric_val) != AMDSMI_STATUS_SUCCESS) { continue; /* skip this specific metric if not supported */ } - snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int)temp_sensors[si]); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, temp_metric_names[mi], (int)temp_sensors[si]); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", + temp_metric_names[mi], d, (int)temp_sensors[si]); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, + temp_metric_names[mi], (int)temp_sensors[si]); native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); @@ -1902,7 +2012,9 @@ static int init_event_table(void) { } /* Register Fan RPM if available */ int64_t dummy_rpm; - if (amdsmi_get_gpu_fan_rpms_p && amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_fan_rpms_p && + amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } @@ -1930,12 +2042,15 @@ static int init_event_table(void) { } /* Register Fan SPEED if available */ int64_t dummy_speed; - if (amdsmi_get_gpu_fan_speed_p && amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_fan_speed_p && + amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan speed (0-255 relative)", d); native_event_t *ev_fan = &ntv_table.events[idx]; ev_fan->id = idx; ev_fan->name = strdup(name_buf); @@ -1958,12 +2073,16 @@ static int init_event_table(void) { } /* Register Fan Max Speed - always probe directly */ int64_t dummy_max; - if (amdsmi_get_gpu_fan_speed_max_p && amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_fan_speed_max_p && + amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); + snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d fan maximum speed in RPM", d); native_event_t *ev_fanmax = &ntv_table.events[idx]; ev_fanmax->id = idx; ev_fanmax->name = strdup(name_buf); @@ -1994,12 +2113,14 @@ static int init_event_table(void) { /* total VRAM bytes - test directly */ uint64_t dummy_total; if (amdsmi_get_total_memory_p && - amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { + amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, + &dummy_total) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total VRAM memory (bytes)", d); native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); @@ -2023,12 +2144,14 @@ static int init_event_table(void) { /* used VRAM bytes - test directly */ uint64_t dummy_usage; if (amdsmi_get_memory_usage_p && - amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { + amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, + &dummy_usage) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM memory usage (bytes)", d); native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); @@ -2051,7 +2174,8 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_vram_usage_p) { amdsmi_vram_usage_t vu; - if (amdsmi_get_gpu_vram_usage_p(device_handles[d], &vu) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_vram_usage_p(device_handles[d], &vu) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } @@ -2105,10 +2229,13 @@ static int init_event_table(void) { } // Register power average event - test directly amdsmi_power_info_t dummy_power; - if (amdsmi_get_power_info_p && amdsmi_get_power_info_p(device_handles[d], &dummy_power) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_power_info_p && + amdsmi_get_power_info_p(device_handles[d], &dummy_power) == + AMDSMI_STATUS_SUCCESS) { // Average power consumption (in Watts or microWatts) snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d average power consumption (W)", d); native_event_t *ev_pwr_avg = &ntv_table.events[idx]; ev_pwr_avg->id = idx; ev_pwr_avg->name = strdup(name_buf); @@ -2129,10 +2256,13 @@ static int init_event_table(void) { // Register power cap events (if power cap functions are available) - test // directly amdsmi_power_cap_info_t dummy_cap_info; - if (amdsmi_get_power_cap_info_p && amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_power_cap_info_p && + amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == + AMDSMI_STATUS_SUCCESS) { // Current power cap limit snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", + d); native_event_t *ev_pcap = &ntv_table.events[idx]; ev_pcap->id = idx; ev_pcap->name = strdup(name_buf); @@ -2151,7 +2281,8 @@ static int init_event_table(void) { idx++; // Minimum allowed power cap snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d minimum allowed power cap (W)", d); native_event_t *ev_pcap_min = &ntv_table.events[idx]; ev_pcap_min->id = idx; ev_pcap_min->name = strdup(name_buf); @@ -2170,7 +2301,8 @@ static int init_event_table(void) { idx++; // Maximum allowed power cap snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d maximum allowed power cap (W)", d); native_event_t *ev_pcap_max = &ntv_table.events[idx]; ev_pcap_max->id = idx; ev_pcap_max->name = strdup(name_buf); @@ -2189,7 +2321,8 @@ static int init_event_table(void) { idx++; // Default power cap snprintf(name_buf, sizeof(name_buf), "power_cap_default:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d default power cap (W)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d default power cap (W)", + d); native_event_t *ev_pcap_def = &ntv_table.events[idx]; ev_pcap_def->id = idx; ev_pcap_def->name = strdup(name_buf); @@ -2208,7 +2341,8 @@ static int init_event_table(void) { idx++; // DPM power cap snprintf(name_buf, sizeof(name_buf), "power_cap_dpm:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d DPM power cap (MHz)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d DPM power cap (MHz)", + d); native_event_t *ev_pcap_dpm = &ntv_table.events[idx]; ev_pcap_dpm->id = idx; ev_pcap_dpm->name = strdup(name_buf); @@ -2229,13 +2363,15 @@ static int init_event_table(void) { } /* PCIe throughput and replay counter metrics */ uint64_t tx = 0, rx = 0, pkt = 0; - amdsmi_status_t st_thr = amdsmi_get_gpu_pci_throughput_p(device_handles[0], &tx, &rx, &pkt); + amdsmi_status_t st_thr = + amdsmi_get_gpu_pci_throughput_p(device_handles[0], &tx, &rx, &pkt); for (int d = 0; d < gpu_count; ++d) { if (st_thr == AMDSMI_STATUS_SUCCESS) { /* bytes sent per second */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes sent per second", d); native_event_t *ev_tx = &ntv_table.events[idx]; ev_tx->id = idx; ev_tx->name = strdup(name_buf); @@ -2253,8 +2389,10 @@ static int init_event_table(void) { htable_insert(htable, ev_tx->name, ev_tx); ++idx; /* bytes received per second */ - snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); + snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe bytes received per second", d); native_event_t *ev_rx = &ntv_table.events[idx]; ev_rx->id = idx; ev_rx->name = strdup(name_buf); @@ -2272,8 +2410,10 @@ static int init_event_table(void) { htable_insert(htable, ev_rx->name, ev_rx); ++idx; /* max packet size */ - snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); + snprintf(name_buf, sizeof(name_buf), + "pci_throughput_max_packet:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe max packet size (bytes)", d); native_event_t *ev_pkt = &ntv_table.events[idx]; ev_pkt->id = idx; ev_pkt->name = strdup(name_buf); @@ -2292,9 +2432,11 @@ static int init_event_table(void) { ++idx; } uint64_t replay = 0; - if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe replay (NAK) counter", d); native_event_t *ev_rep = &ntv_table.events[idx]; ev_rep->id = idx; ev_rep->name = strdup(name_buf); @@ -2322,9 +2464,12 @@ static int init_event_table(void) { } // Register GFX activity event - test directly amdsmi_engine_usage_t dummy_usage; - if (amdsmi_get_gpu_activity_p && amdsmi_get_gpu_activity_p(device_handles[d], &dummy_usage) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_activity_p && + amdsmi_get_gpu_activity_p(device_handles[d], &dummy_usage) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GFX engine activity (%%)", d); native_event_t *ev_gfx = &ntv_table.events[idx]; ev_gfx->id = idx; ev_gfx->name = strdup(name_buf); @@ -2342,7 +2487,8 @@ static int init_event_table(void) { htable_insert(htable, ev_gfx->name, ev_gfx); idx++; snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d UMC engine activity (%%)", d); native_event_t *ev_umc = &ntv_table.events[idx]; ev_umc->id = idx; ev_umc->name = strdup(name_buf); @@ -2360,7 +2506,8 @@ static int init_event_table(void) { htable_insert(htable, ev_umc->name, ev_umc); idx++; snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d MM engine activity (%%)", d); native_event_t *ev_mm = &ntv_table.events[idx]; ev_mm->id = idx; ev_mm->name = strdup(name_buf); @@ -2381,16 +2528,22 @@ static int init_event_table(void) { } /* GPU clock frequency levels for multiple clock domains */ for (int d = 0; d < gpu_count; ++d) { - amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_DF, AMDSMI_CLK_TYPE_DCEF}; + amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_DF, + AMDSMI_CLK_TYPE_DCEF}; const char *clk_names[] = {"sys", "df", "dcef"}; for (int t = 0; t < 3; ++t) { amdsmi_frequencies_t f; - if (amdsmi_get_clk_freq_p(device_handles[d], clk_types[t], &f) != AMDSMI_STATUS_SUCCESS || f.num_supported == 0) { + if (amdsmi_get_clk_freq_p(device_handles[d], clk_types[t], &f) != + AMDSMI_STATUS_SUCCESS || + f.num_supported == 0) { continue; } // Number of supported frequencies for this clock domain - snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_count:device=%d", clk_names[t], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported %s clock frequencies", d, clk_names[t]); + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_count:device=%d", + clk_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of supported %s clock frequencies", d, + clk_names[t]); native_event_t *ev_clk_count = &ntv_table.events[idx]; ev_clk_count->id = idx; ev_clk_count->name = strdup(name_buf); @@ -2408,8 +2561,10 @@ static int init_event_table(void) { htable_insert(htable, ev_clk_count->name, ev_clk_count); idx++; // Current clock frequency for this domain - snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_current:device=%d", clk_names[t], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current %s clock frequency (MHz)", d, clk_names[t]); + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_current:device=%d", + clk_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current %s clock frequency (MHz)", d, clk_names[t]); native_event_t *ev_clk_cur = &ntv_table.events[idx]; ev_clk_cur->id = idx; ev_clk_cur->name = strdup(name_buf); @@ -2428,8 +2583,11 @@ static int init_event_table(void) { idx++; // Supported frequency levels for this domain for (uint32_t fi = 0; fi < f.num_supported; ++fi) { - snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_level_%u:device=%d", clk_names[t], fi, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d supported %s clock frequency level %u (MHz)", d, clk_names[t], fi); + snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_level_%u:device=%d", + clk_names[t], fi, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d supported %s clock frequency level %u (MHz)", d, + clk_names[t], fi); native_event_t *ev_clk_lvl = &ntv_table.events[idx]; ev_clk_lvl->id = idx; ev_clk_lvl->name = strdup(name_buf); @@ -2456,9 +2614,11 @@ static int init_event_table(void) { // amdsmi_virtualization_mode_t vmode; int32_t numa; // GPU ID - if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GPU identifier (Device ID)", d); native_event_t *ev_id = &ntv_table.events[idx]; ev_id->id = idx; ev_id->name = strdup(name_buf); @@ -2477,7 +2637,8 @@ static int init_event_table(void) { idx++; } // GPU Revision - if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); native_event_t *ev_rev = &ntv_table.events[idx]; @@ -2498,7 +2659,8 @@ static int init_event_table(void) { idx++; } // GPU Subsystem ID - if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); native_event_t *ev_subid = &ntv_table.events[idx]; @@ -2519,9 +2681,11 @@ static int init_event_table(void) { idx++; } // GPU BDF ID - if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", + d); native_event_t *ev_bdf = &ntv_table.events[idx]; ev_bdf->id = idx; ev_bdf->name = strdup(name_buf); @@ -2541,9 +2705,13 @@ static int init_event_table(void) { } // GPU Virtualization Mode amdsmi_virtualization_mode_t vmode; - if (amdsmi_get_gpu_virtualization_mode_p && amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); + if (amdsmi_get_gpu_virtualization_mode_p && + amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GPU virtualization mode", d); native_event_t *ev_vmode = &ntv_table.events[idx]; ev_vmode->id = idx; ev_vmode->name = strdup(name_buf); @@ -2562,7 +2730,8 @@ static int init_event_table(void) { idx++; } // GPU NUMA Node - if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); native_event_t *ev_numa = &ntv_table.events[idx]; @@ -2585,9 +2754,11 @@ static int init_event_table(void) { if (amdsmi_get_gpu_process_isolation_p) { uint32_t pis = 0; - if (amdsmi_get_gpu_process_isolation_p(device_handles[d], &pis) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_process_isolation_p(device_handles[d], &pis) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "process_isolation:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d process isolation status", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d process isolation status", d); native_event_t *ev_iso = &ntv_table.events[idx]; ev_iso->id = idx; ev_iso->name = strdup(name_buf); @@ -2609,7 +2780,8 @@ static int init_event_table(void) { if (amdsmi_get_gpu_xcd_counter_p) { uint16_t xcd = 0; - if (amdsmi_get_gpu_xcd_counter_p(device_handles[d], &xcd) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_xcd_counter_p(device_handles[d], &xcd) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "xcd_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d XCD counter", d); native_event_t *ev_xcd = &ntv_table.events[idx]; @@ -2633,7 +2805,8 @@ static int init_event_table(void) { if (amdsmi_get_fw_info_p) { amdsmi_fw_info_t finfo; - if (amdsmi_get_fw_info_p(device_handles[d], &finfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_fw_info_p(device_handles[d], &finfo) == + AMDSMI_STATUS_SUCCESS) { uint8_t n = finfo.num_fw_info; if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; @@ -2643,8 +2816,10 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } uint32_t fid = finfo.fw_info_list[f].fw_id; - snprintf(name_buf, sizeof(name_buf), "fw_version_id%u:device=%d", fid, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d firmware id %u version", d, fid); + snprintf(name_buf, sizeof(name_buf), "fw_version_id%u:device=%d", fid, + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d firmware id %u version", d, fid); native_event_t *ev_fw = &ntv_table.events[idx]; ev_fw->id = idx; ev_fw->name = strdup(name_buf); @@ -2667,13 +2842,15 @@ static int init_event_table(void) { if (amdsmi_get_gpu_board_info_p) { amdsmi_board_info_t binfo; - if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "board_serial_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d board serial number (hash)", d); native_event_t *ev_brd = &ntv_table.events[idx]; ev_brd->id = idx; ev_brd->name = strdup(name_buf); @@ -2695,13 +2872,15 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_info_p) { amdsmi_vram_info_t vinfo; - if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM max bandwidth (GB/s)", d); native_event_t *ev_vbw = &ntv_table.events[idx]; ev_vbw->id = idx; ev_vbw->name = strdup(name_buf); @@ -2723,13 +2902,15 @@ static int init_event_table(void) { if (amdsmi_get_gpu_bad_page_info_p) { uint32_t nump = 0; - if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "bad_page_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", + d); native_event_t *ev_bpc = &ntv_table.events[idx]; ev_bpc->id = idx; ev_bpc->name = strdup(name_buf); @@ -2751,8 +2932,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "bad_page_address:device=%d:page=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u address", d, p); + snprintf(name_buf, sizeof(name_buf), + "bad_page_address:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d retired page %u address", d, p); native_event_t *ev_addr = &ntv_table.events[idx]; ev_addr->id = idx; ev_addr->name = strdup(name_buf); @@ -2773,8 +2956,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u size", d, p); + snprintf(name_buf, sizeof(name_buf), + "bad_page_size:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d retired page %u size", d, p); native_event_t *ev_size = &ntv_table.events[idx]; ev_size->id = idx; ev_size->name = strdup(name_buf); @@ -2795,8 +2980,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); - snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u status", d, p); + snprintf(name_buf, sizeof(name_buf), + "bad_page_status:device=%d:page=%u", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d retired page %u status", d, p); native_event_t *ev_stat = &ntv_table.events[idx]; ev_stat->id = idx; ev_stat->name = strdup(name_buf); @@ -2819,13 +3006,15 @@ static int init_event_table(void) { if (amdsmi_get_gpu_bad_page_threshold_p) { uint32_t thr = 0; - if (amdsmi_get_gpu_bad_page_threshold_p(device_handles[d], &thr) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_bad_page_threshold_p(device_handles[d], &thr) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "bad_page_threshold:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", + d); native_event_t *ev_bpt = &ntv_table.events[idx]; ev_bpt->id = idx; ev_bpt->name = strdup(name_buf); @@ -2851,7 +3040,8 @@ static int init_event_table(void) { * discover all sensors. */ for (uint32_t s = 0; s < 2; ++s) { amdsmi_power_info_t pinfo; - if (amdsmi_get_power_info_v2_p(device_handles[d], s, &pinfo) != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_power_info_v2_p(device_handles[d], s, &pinfo) != + AMDSMI_STATUS_SUCCESS) break; /* Register current socket power in Watts */ @@ -2859,8 +3049,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_current_watts:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u current socket power (W)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_current_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u current socket power (W)", d, s); native_event_t *ev_cur = &ntv_table.events[idx]; ev_cur->id = idx; ev_cur->name = strdup(name_buf); @@ -2883,8 +3075,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_average_watts:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u average socket power (W)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_average_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u average socket power (W)", d, s); native_event_t *ev_avg = &ntv_table.events[idx]; ev_avg->id = idx; ev_avg->name = strdup(name_buf); @@ -2907,8 +3101,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u socket power (uW)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u socket power (uW)", d, s); native_event_t *ev_sock = &ntv_table.events[idx]; ev_sock->id = idx; ev_sock->name = strdup(name_buf); @@ -2931,8 +3127,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u GFX voltage (mV)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u GFX voltage (mV)", d, s); native_event_t *ev_gfx = &ntv_table.events[idx]; ev_gfx->id = idx; ev_gfx->name = strdup(name_buf); @@ -2955,8 +3153,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u SOC voltage (mV)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u SOC voltage (mV)", d, s); native_event_t *ev_soc = &ntv_table.events[idx]; ev_soc->id = idx; ev_soc->name = strdup(name_buf); @@ -2979,8 +3179,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u MEM voltage (mV)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u MEM voltage (mV)", d, s); native_event_t *ev_mem = &ntv_table.events[idx]; ev_mem->id = idx; ev_mem->name = strdup(name_buf); @@ -3003,8 +3205,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "power_sensor_limit_watts:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u power limit (W)", d, s); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_limit_watts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u power limit (W)", d, s); native_event_t *ev_lim = &ntv_table.events[idx]; ev_lim->id = idx; ev_lim->name = strdup(name_buf); @@ -3026,13 +3230,15 @@ static int init_event_table(void) { if (amdsmi_get_gpu_metrics_info_p) { amdsmi_gpu_metrics_t metrics; - if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == + AMDSMI_STATUS_SUCCESS) { /* Register throttle status */ if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", d); + snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", + d); snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); native_event_t *ev_throttle = &ntv_table.events[idx]; ev_throttle->id = idx; @@ -3056,8 +3262,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "gpu_indep_throttle_status:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d independent throttle status", d); + snprintf(name_buf, sizeof(name_buf), + "gpu_indep_throttle_status:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d independent throttle status", d); native_event_t *ev_ithrottle = &ntv_table.events[idx]; ev_ithrottle->id = idx; ev_ithrottle->name = strdup(name_buf); @@ -3081,7 +3289,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_link_width:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link width (lanes)", d); native_event_t *ev_lw = &ntv_table.events[idx]; ev_lw->id = idx; ev_lw->name = strdup(name_buf); @@ -3105,7 +3314,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_link_speed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link speed (0.1 GT/s)", d); native_event_t *ev_ls = &ntv_table.events[idx]; ev_ls->id = idx; ev_ls->name = strdup(name_buf); @@ -3129,7 +3339,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe accumulated bandwidth (GB/s)", d); native_event_t *ev_bwacc = &ntv_table.events[idx]; ev_bwacc->id = idx; ev_bwacc->name = strdup(name_buf); @@ -3151,8 +3362,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe instantaneous bandwidth (GB/s)", d); + snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe instantaneous bandwidth (GB/s)", d); native_event_t *ev_bwin = &ntv_table.events[idx]; ev_bwin->id = idx; ev_bwin->name = strdup(name_buf); @@ -3174,8 +3387,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recov_count_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_l0_to_recov_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe L0->recovery count", d); native_event_t *ev_l0 = &ntv_table.events[idx]; ev_l0->id = idx; ev_l0->name = strdup(name_buf); @@ -3197,8 +3412,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", + d); native_event_t *ev_replay = &ntv_table.events[idx]; ev_replay->id = idx; ev_replay->name = strdup(name_buf); @@ -3220,8 +3437,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_replay_rover_count_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_replay_rover_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe replay rollover count", d); native_event_t *ev_replay_ro = &ntv_table.events[idx]; ev_replay_ro->id = idx; ev_replay_ro->name = strdup(name_buf); @@ -3243,8 +3462,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_nak_sent_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", + d); native_event_t *ev_nak_sent = &ntv_table.events[idx]; ev_nak_sent->id = idx; ev_nak_sent->name = strdup(name_buf); @@ -3266,8 +3487,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_nak_rcvd_count_acc:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_nak_rcvd_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe NAK received count", d); native_event_t *ev_nak_rcv = &ntv_table.events[idx]; ev_nak_rcv->id = idx; ev_nak_rcv->name = strdup(name_buf); @@ -3287,14 +3510,18 @@ static int init_event_table(void) { } } - if (amdsmi_init_gpu_event_notification_p && amdsmi_set_gpu_event_notification_mask_p && amdsmi_get_gpu_event_notification_p && + if (amdsmi_init_gpu_event_notification_p && + amdsmi_set_gpu_event_notification_mask_p && + amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d thermal throttle event notifications", d); + snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d thermal throttle event notifications", d); native_event_t *ev_tt = &ntv_table.events[idx]; ev_tt->id = idx; ev_tt->name = strdup(name_buf); @@ -3318,11 +3545,13 @@ static int init_event_table(void) { uint64_t energy = 0; float resolution = 0.0; uint64_t timestamp = 0; - if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, ×tamp) != AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, + ×tamp) != AMDSMI_STATUS_SUCCESS) { continue; } snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d energy consumed (microJoules)", d); native_event_t *ev_energy = &ntv_table.events[idx]; ev_energy->id = idx; ev_energy->name = strdup(name_buf); @@ -3341,7 +3570,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "energy_resolution:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter resolution (microJoules)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d energy counter resolution (microJoules)", d); native_event_t *ev_res = &ntv_table.events[idx]; ev_res->id = idx; ev_res->name = strdup(name_buf); @@ -3360,7 +3590,8 @@ static int init_event_table(void) { idx++; snprintf(name_buf, sizeof(name_buf), "energy_timestamp:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter timestamp (ns)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d energy counter timestamp (ns)", d); native_event_t *ev_ts = &ntv_table.events[idx]; ev_ts->id = idx; ev_ts->name = strdup(name_buf); @@ -3381,11 +3612,13 @@ static int init_event_table(void) { /* GPU power profile information */ for (int d = 0; d < gpu_count; ++d) { amdsmi_power_profile_status_t profile_status; - if (amdsmi_get_gpu_power_profile_presets_p(device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_power_profile_presets_p( + device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { continue; } snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of supported power profiles", d); native_event_t *ev_prof_count = &ntv_table.events[idx]; ev_prof_count->id = idx; ev_prof_count->name = strdup(name_buf); @@ -3403,7 +3636,8 @@ static int init_event_table(void) { htable_insert(htable, ev_prof_count->name, ev_prof_count); idx++; snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current power profile mask", d); native_event_t *ev_prof_curr = &ntv_table.events[idx]; ev_prof_curr->id = idx; ev_prof_curr->name = strdup(name_buf); @@ -3428,7 +3662,8 @@ static int init_event_table(void) { for (int s = 0; s < cpu_count; ++s) { int dev = gpu_count + s; uint32_t pwr; - if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_cpu_socket_power_p(device_handles[dev], &pwr) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); native_event_t *ev_pwr = &ntv_table.events[idx]; @@ -3449,9 +3684,11 @@ static int init_event_table(void) { idx++; } uint64_t sock_energy; - if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", + s); native_event_t *ev_sock_energy = &ntv_table.events[idx]; ev_sock_energy->id = idx; ev_sock_energy->name = strdup(name_buf); @@ -3470,9 +3707,11 @@ static int init_event_table(void) { idx++; } uint16_t fmax, fmin; - if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, &fmin) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, + &fmin) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d maximum frequency (MHz)", s); native_event_t *ev_fmax = &ntv_table.events[idx]; ev_fmax->id = idx; ev_fmax->name = strdup(name_buf); @@ -3490,7 +3729,8 @@ static int init_event_table(void) { htable_insert(htable, ev_fmax->name, ev_fmax); idx++; snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d minimum frequency (MHz)", s); native_event_t *ev_fmin = &ntv_table.events[idx]; ev_fmin->id = idx; ev_fmin->name = strdup(name_buf); @@ -3509,13 +3749,17 @@ static int init_event_table(void) { idx++; } uint32_t cap; - amdsmi_status_t st_cap = amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); + amdsmi_status_t st_cap = + amdsmi_get_cpu_socket_power_cap_p(device_handles[dev], &cap); uint32_t cap_max; - amdsmi_status_t st_capmax = amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); - if (st_cap == AMDSMI_STATUS_SUCCESS || st_capmax == AMDSMI_STATUS_SUCCESS) { + amdsmi_status_t st_capmax = + amdsmi_get_cpu_socket_power_cap_max_p(device_handles[dev], &cap_max); + if (st_cap == AMDSMI_STATUS_SUCCESS || + st_capmax == AMDSMI_STATUS_SUCCESS) { if (st_cap == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d current power cap (W)", s); native_event_t *ev_cap = &ntv_table.events[idx]; ev_cap->id = idx; ev_cap->name = strdup(name_buf); @@ -3535,7 +3779,8 @@ static int init_event_table(void) { } if (st_capmax == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", + s); native_event_t *ev_capmax = &ntv_table.events[idx]; ev_capmax->id = idx; ev_capmax->name = strdup(name_buf); @@ -3556,11 +3801,13 @@ static int init_event_table(void) { } uint16_t freq; char *src_type = NULL; - if (amdsmi_get_cpu_socket_current_active_freq_limit_p(device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_cpu_socket_current_active_freq_limit_p( + device_handles[dev], &freq, &src_type) == AMDSMI_STATUS_SUCCESS) { if (src_type) free(src_type); snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d current frequency limit (MHz)", s); native_event_t *ev_flim = &ntv_table.events[idx]; ev_flim->id = idx; ev_flim->name = strdup(name_buf); @@ -3579,9 +3826,11 @@ static int init_event_table(void) { idx++; } amdsmi_smu_fw_version_t fw; - if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == + AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d SMU firmware version (encoded)", s); native_event_t *ev_fw = &ntv_table.events[idx]; ev_fw->id = idx; ev_fw->name = strdup(name_buf); @@ -3605,9 +3854,12 @@ static int init_event_table(void) { int dev = gpu_count + s; for (uint32_t c = 0; c < cores_per_socket[s]; ++c) { uint64_t energy; - if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); + if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, + c); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d Core %d energy (uJ)", s, c); native_event_t *ev_core_energy = &ntv_table.events[idx]; ev_core_energy->id = idx; ev_core_energy->name = strdup(name_buf); @@ -3626,9 +3878,12 @@ static int init_event_table(void) { idx++; } uint32_t freq; - if (amdsmi_get_cpu_core_current_freq_limit_p(cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); + if (amdsmi_get_cpu_core_current_freq_limit_p( + cpu_core_handles[s][c], &freq) == AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d:core=%d", + s, c); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d Core %d frequency limit (MHz)", s, c); native_event_t *ev_core_flim = &ntv_table.events[idx]; ev_core_flim->id = idx; ev_core_flim->name = strdup(name_buf); @@ -3647,9 +3902,12 @@ static int init_event_table(void) { idx++; } uint32_t boost; - if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", s, c); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); + if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "boostlimit:socket=%d:core=%d", + s, c); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d Core %d boost limit (MHz)", s, c); native_event_t *ev_boost = &ntv_table.events[idx]; ev_boost->id = idx; ev_boost->name = strdup(name_buf); @@ -3676,15 +3934,23 @@ static int init_event_table(void) { amdsmi_dimm_thermal_t dimm_temp; amdsmi_dimm_power_t dimm_pow; amdsmi_temp_range_refresh_rate_t range_info; - amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[dev], dimm, &dimm_temp); - amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[dev], dimm, &dimm_pow); - amdsmi_status_t st_range = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[dev], dimm, &range_info); - if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && st_range != AMDSMI_STATUS_SUCCESS) { + amdsmi_status_t st_temp = amdsmi_get_cpu_dimm_thermal_sensor_p( + device_handles[dev], dimm, &dimm_temp); + amdsmi_status_t st_power = amdsmi_get_cpu_dimm_power_consumption_p( + device_handles[dev], dimm, &dimm_pow); + amdsmi_status_t st_range = + amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p( + device_handles[dev], dimm, &range_info); + if (st_temp != AMDSMI_STATUS_SUCCESS && + st_power != AMDSMI_STATUS_SUCCESS && + st_range != AMDSMI_STATUS_SUCCESS) { continue; } if (st_temp == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); + snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, + dimm); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DIMM %d temperature (C)", s, dimm); native_event_t *ev_dimm_temp = &ntv_table.events[idx]; ev_dimm_temp->id = idx; ev_dimm_temp->name = strdup(name_buf); @@ -3703,8 +3969,10 @@ static int init_event_table(void) { idx++; } if (st_power == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); + snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", + s, dimm); + snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", + s, dimm); native_event_t *ev_dimm_pow = &ntv_table.events[idx]; ev_dimm_pow->id = idx; ev_dimm_pow->name = strdup(name_buf); @@ -3723,8 +3991,10 @@ static int init_event_table(void) { idx++; } if (st_range == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); + snprintf(name_buf, sizeof(name_buf), + "dimm_temp_range:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DIMM %d temperature range", s, dimm); native_event_t *ev_range = &ntv_table.events[idx]; ev_range->id = idx; ev_range->name = strdup(name_buf); @@ -3741,8 +4011,10 @@ static int init_event_table(void) { ev_range->access_func = access_amdsmi_dimm_range_refresh; htable_insert(htable, ev_range->name, ev_range); idx++; - snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); + snprintf(name_buf, sizeof(name_buf), + "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DIMM %d refresh rate mode", s, dimm); native_event_t *ev_ref = &ntv_table.events[idx]; ev_ref->id = idx; ev_ref->name = strdup(name_buf); @@ -3883,7 +4155,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "lib_version_release"); - snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); + snprintf(descr_buf, sizeof(descr_buf), + "AMD SMI library release/patch version"); native_event_t *ev_lrel = &ntv_table.events[idx]; ev_lrel->id = idx; ev_lrel->name = strdup(name_buf); @@ -3908,7 +4181,8 @@ static int init_event_table(void) { /* Device UUID (hash) */ if (amdsmi_get_gpu_device_uuid_p) { unsigned int uuid_len = 0; - amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); + amdsmi_status_t st = + amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); /* Some builds require preflight to get length; we just attempt a fixed * buffer */ char uuid_buf[128]; @@ -3920,7 +4194,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d UUID (djb2 64-bit hash)", d); native_event_t *ev_uuid = &ntv_table.events[idx]; ev_uuid->id = idx; ev_uuid->name = strdup(name_buf); @@ -3964,13 +4239,15 @@ static int init_event_table(void) { /* Vendor / VRAM vendor / Subsystem name (hash) */ if (amdsmi_get_gpu_vendor_name_p) { char tmp[256] = {0}; - if (amdsmi_get_gpu_vendor_name_p(device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_vendor_name_p(device_handles[d], tmp, sizeof(tmp)) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", + d); native_event_t *ev_vn = &ntv_table.events[idx]; ev_vn->id = idx; ev_vn->name = strdup(name_buf); @@ -3994,13 +4271,16 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_vendor_p) { char tmp[256] = {0}; - if (amdsmi_get_gpu_vram_vendor_p(device_handles[d], tmp, (uint32_t)sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_vram_vendor_p(device_handles[d], tmp, + (uint32_t)sizeof(tmp)) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", + d); native_event_t *ev_vrv = &ntv_table.events[idx]; ev_vrv->id = idx; ev_vrv->name = strdup(name_buf); @@ -4024,13 +4304,16 @@ static int init_event_table(void) { if (amdsmi_get_gpu_subsystem_name_p) { char tmp[256] = {0}; - if (amdsmi_get_gpu_subsystem_name_p(device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_subsystem_name_p( + device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); + snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d subsystem name (hash)", d); native_event_t *ev_ssn = &ntv_table.events[idx]; ev_ssn->id = idx; ev_ssn->name = strdup(name_buf); @@ -4040,7 +4323,8 @@ static int init_event_table(void) { ev_ssn->device = d; ev_ssn->value = 0; ev_ssn->mode = PAPI_MODE_READ; - ev_ssn->variant = 2; /* access_amdsmi_gpu_string_hash -> subsystem name */ + ev_ssn->variant = + 2; /* access_amdsmi_gpu_string_hash -> subsystem name */ ev_ssn->subvariant = 0; ev_ssn->open_func = open_simple; ev_ssn->close_func = close_simple; @@ -4055,7 +4339,8 @@ static int init_event_table(void) { /* Enumeration info (drm render/card, hsa/hip ids) */ if (amdsmi_get_gpu_enumeration_info_p) { amdsmi_enumeration_info_t einfo; - if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; @@ -4149,7 +4434,8 @@ static int init_event_table(void) { /* ASIC info (numeric IDs & CU count) */ if (amdsmi_get_gpu_asic_info_p) { amdsmi_asic_info_t ainfo; - if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; @@ -4198,8 +4484,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); + snprintf(name_buf, sizeof(name_buf), + "asic_subsystem_vendor_id:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d ASIC subsystem vendor id", d); native_event_t *ev_asv = &ntv_table.events[idx]; ev_asv->id = idx; ev_asv->name = strdup(name_buf); @@ -4221,7 +4509,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", + d); native_event_t *ev_ass = &ntv_table.events[idx]; ev_ass->id = idx; ev_ass->name = strdup(name_buf); @@ -4265,7 +4554,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of compute units", d); native_event_t *ev_cu = &ntv_table.events[idx]; ev_cu->id = idx; ev_cu->name = strdup(name_buf); @@ -4287,13 +4577,15 @@ static int init_event_table(void) { /* Driver info (strings hashed) */ if (amdsmi_get_gpu_driver_info_p) { amdsmi_driver_info_t dinfo; - if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", + d); native_event_t *ev_dname = &ntv_table.events[idx]; ev_dname->id = idx; ev_dname->name = strdup(name_buf); @@ -4315,7 +4607,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", + d); native_event_t *ev_dd = &ntv_table.events[idx]; ev_dd->id = idx; ev_dd->name = strdup(name_buf); @@ -4337,15 +4630,14 @@ static int init_event_table(void) { /* VBIOS info (strings hashed) */ /*if (amdsmi_get_gpu_vbios_info_p) { amdsmi_vbios_info_t vb; - if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", d); - native_event_t *ev_vbv = &ntv_table.events[idx]; - ev_vbv->id = idx; + snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", + d); native_event_t *ev_vbv = &ntv_table.events[idx]; ev_vbv->id = idx; ev_vbv->name = strdup(name_buf); ev_vbv->descr = strdup(descr_buf); ev_vbv->device = d; @@ -4364,12 +4656,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number (hash)", d); - native_event_t *ev_vbp = &ntv_table.events[idx]; - ev_vbp->id = idx; - ev_vbp->name = strdup(name_buf); - ev_vbp->descr = strdup(descr_buf); + snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", + d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number + (hash)", d); native_event_t *ev_vbp = &ntv_table.events[idx]; ev_vbp->id = + idx; ev_vbp->name = strdup(name_buf); ev_vbp->descr = strdup(descr_buf); ev_vbp->device = d; ev_vbp->value = 0; ev_vbp->mode = PAPI_MODE_READ; @@ -4386,12 +4676,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date (hash)", d); - native_event_t *ev_vbd = &ntv_table.events[idx]; - ev_vbd->id = idx; - ev_vbd->name = strdup(name_buf); - ev_vbd->descr = strdup(descr_buf); + snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", + d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date + (hash)", d); native_event_t *ev_vbd = &ntv_table.events[idx]; ev_vbd->id = + idx; ev_vbd->name = strdup(name_buf); ev_vbd->descr = strdup(descr_buf); ev_vbd->device = d; ev_vbd->value = 0; ev_vbd->mode = PAPI_MODE_READ; @@ -4411,7 +4699,8 @@ static int init_event_table(void) { amdsmi_link_metrics_t lm_probe; memset(&lm_probe, 0, sizeof(lm_probe)); int has_xgmi = 0, has_pcie = 0; - if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == + AMDSMI_STATUS_SUCCESS) { uint32_t n = lm_probe.num_links; if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; @@ -4424,8 +4713,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_read_kB:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u read (kB)", d, i); + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_read_kB:device=%d", + i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u read (kB)", d, i); native_event_t *ev_lr = &ntv_table.events[idx]; ev_lr->id = idx; ev_lr->name = strdup(name_buf); @@ -4449,8 +4740,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_write_kB:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u write (kB)", d, i); + snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_write_kB:device=%d", + i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u write (kB)", d, i); native_event_t *ev_lw = &ntv_table.events[idx]; ev_lw->id = idx; ev_lw->name = strdup(name_buf); @@ -4474,8 +4767,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u speed (Gb/s)", d, i); + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u speed (Gb/s)", d, i); native_event_t *ev_lb = &ntv_table.events[idx]; ev_lb->id = idx; ev_lb->name = strdup(name_buf); @@ -4499,8 +4794,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); + snprintf(name_buf, sizeof(name_buf), + "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); native_event_t *ev_lm = &ntv_table.events[idx]; ev_lm->id = idx; ev_lm->name = strdup(name_buf); @@ -4526,8 +4823,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link %u speed (Gb/s)", d, i); + snprintf(name_buf, sizeof(name_buf), + "pcie_link%u_bit_rate_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link %u speed (Gb/s)", d, i); native_event_t *ev_pb = &ntv_table.events[idx]; ev_pb->id = idx; ev_pb->name = strdup(name_buf); @@ -4551,8 +4850,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); + snprintf(name_buf, sizeof(name_buf), + "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); native_event_t *ev_pm = &ntv_table.events[idx]; ev_pm->id = idx; ev_pm->name = strdup(name_buf); @@ -4581,7 +4882,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total XGMI read across links (kB)", d); native_event_t *ev_xr = &ntv_table.events[idx]; ev_xr->id = idx; ev_xr->name = strdup(name_buf); @@ -4605,8 +4907,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI write across links (kB)", d); + snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total XGMI write across links (kB)", d); native_event_t *ev_xw = &ntv_table.events[idx]; ev_xw->id = idx; ev_xw->name = strdup(name_buf); @@ -4630,8 +4934,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate XGMI link speed (Gb/s)", d); + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate XGMI link speed (Gb/s)", d); native_event_t *ev_xb = &ntv_table.events[idx]; ev_xb->id = idx; ev_xb->name = strdup(name_buf); @@ -4655,8 +4961,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "xgmi_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate XGMI max bandwidth (Gb/s)", d); + snprintf(name_buf, sizeof(name_buf), + "xgmi_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate XGMI max bandwidth (Gb/s)", d); native_event_t *ev_xm = &ntv_table.events[idx]; ev_xm->id = idx; ev_xm->name = strdup(name_buf); @@ -4682,8 +4990,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe link speed (Gb/s)", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_total_bit_rate_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate PCIe link speed (Gb/s)", d); native_event_t *ev_pb = &ntv_table.events[idx]; ev_pb->id = idx; ev_pb->name = strdup(name_buf); @@ -4707,8 +5017,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "pcie_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d aggregate PCIe max bandwidth (Gb/s)", d); + snprintf(name_buf, sizeof(name_buf), + "pcie_total_max_bandwidth_Gbps:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d aggregate PCIe max bandwidth (Gb/s)", d); native_event_t *ev_pm = &ntv_table.events[idx]; ev_pm->id = idx; ev_pm->name = strdup(name_buf); @@ -4752,8 +5064,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "process%d_%s:device=%d", p, pf[f].suffix, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d process %d %s", d, p, pf[f].descr); + snprintf(name_buf, sizeof(name_buf), "process%d_%s:device=%d", p, + pf[f].suffix, d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d process %d %s", d, + p, pf[f].descr); native_event_t *ev = &ntv_table.events[idx]; ev->id = idx; ev->name = strdup(name_buf); @@ -4781,8 +5095,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC correctable errors", d); + snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total ECC correctable errors", d); native_event_t *ev_ecct = &ntv_table.events[idx]; ev_ecct->id = idx; ev_ecct->name = strdup(name_buf); @@ -4803,8 +5119,10 @@ static int init_event_table(void) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC uncorrectable errors", d); + snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total ECC uncorrectable errors", d); native_event_t *ev_ecctu = &ntv_table.events[idx]; ev_ecctu->id = idx; ev_ecctu->name = strdup(name_buf); @@ -4826,7 +5144,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC deferred errors", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total ECC deferred errors", d); native_event_t *ev_ecctd = &ntv_table.events[idx]; ev_ecctd->id = idx; ev_ecctd->name = strdup(name_buf); @@ -4845,25 +5164,37 @@ static int init_event_table(void) { idx++; } if (amdsmi_get_gpu_ecc_count_p) { - amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", - "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, + AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, + AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, + AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", + "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", + "mca", "vcn", "jpeg", "ih", "mpio"}; const char *cnt_names[] = {"correctable", "uncorrectable", "deferred"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_error_count_t ec; - if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == + AMDSMI_STATUS_SUCCESS) { for (int t = 0; t < 3; ++t) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", block_names[bi], cnt_names[t], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s block ECC %s errors", d, block_names[bi], cnt_names[t]); + snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", + block_names[bi], cnt_names[t], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s block ECC %s errors", d, block_names[bi], + cnt_names[t]); native_event_t *ev_blk = &ntv_table.events[idx]; ev_blk->id = idx; ev_blk->name = strdup(name_buf); @@ -4885,23 +5216,34 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_ecc_status_p) { - amdsmi_gpu_block_t blocks[] = {AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = {"umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", "xgmi_wafl", "df", "smn", - "sem", "mp0", "mp1", "fuse", "mca", "vcn", "jpeg", "ih", "mpio"}; + amdsmi_gpu_block_t blocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, + AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, + AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, + AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, + AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, + AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, + AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *block_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", + "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", + "mca", "vcn", "jpeg", "ih", "mpio"}; size_t nb = sizeof(blocks) / sizeof(blocks[0]); for (size_t bi = 0; bi < nb; ++bi) { amdsmi_ras_err_state_t st; - if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", block_names[bi], d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d %s block ECC status", d, block_names[bi]); + snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", + block_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s block ECC status", d, block_names[bi]); native_event_t *ev_blk = &ntv_table.events[idx]; ev_blk->id = idx; ev_blk->name = strdup(name_buf); @@ -4927,7 +5269,8 @@ static int init_event_table(void) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block bitmask", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d ECC enabled block bitmask", d); native_event_t *ev_eccm = &ntv_table.events[idx]; ev_eccm->id = idx; ev_eccm->name = strdup(name_buf); @@ -4948,13 +5291,17 @@ static int init_event_table(void) { /* Partitioning state (hash/enumeration) */ if (amdsmi_get_gpu_compute_partition_p) { char dummy[128] = {0}; - if (amdsmi_get_gpu_compute_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_compute_partition_p(device_handles[d], dummy, + sizeof(dummy)) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d compute partition (hash)", d); + snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d compute partition (hash)", d); native_event_t *ev_cpart = &ntv_table.events[idx]; ev_cpart->id = idx; ev_cpart->name = strdup(name_buf); @@ -4978,13 +5325,17 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_memory_partition_p) { char dummy[128] = {0}; - if (amdsmi_get_gpu_memory_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_memory_partition_p(device_handles[d], dummy, + sizeof(dummy)) == + AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); + snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", + d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d memory partition (hash)", d); native_event_t *ev_mpart = &ntv_table.events[idx]; ev_mpart->id = idx; ev_mpart->name = strdup(name_buf); @@ -5009,13 +5360,16 @@ static int init_event_table(void) { if (amdsmi_get_gpu_accelerator_partition_profile_p) { amdsmi_accelerator_partition_profile_t prof; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_accelerator_partition_profile_p( + device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { papi_free(ntv_table.events); return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator profile partitions", d); + snprintf(name_buf, sizeof(name_buf), + "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d accelerator profile partitions", d); native_event_t *ev_anp = &ntv_table.events[idx]; ev_anp->id = idx; ev_anp->name = strdup(name_buf); diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h new file mode 100644 index 000000000..d5fb284cd --- /dev/null +++ b/src/components/amd_smi/amds_funcs.h @@ -0,0 +1,197 @@ +#ifndef AMDS_FUNCS_H +#define AMDS_FUNCS_H + +#define AMD_SMI_GPU_FUNCTIONS(_) \ + _(amdsmi_init_p, amdsmi_status_t, (uint64_t)) \ + _(amdsmi_shut_down_p, amdsmi_status_t, (void)) \ + _(amdsmi_get_socket_handles_p, amdsmi_status_t, \ + (uint32_t *, amdsmi_socket_handle *)) \ + _(amdsmi_get_processor_handles_by_type_p, amdsmi_status_t, \ + (amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, \ + uint32_t *)) \ + _(amdsmi_get_temp_metric_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_temperature_type_t, \ + amdsmi_temperature_metric_t, int64_t *)) \ + _(amdsmi_get_gpu_fan_rpms_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, int64_t *)) \ + _(amdsmi_get_gpu_fan_speed_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, int64_t *)) \ + _(amdsmi_get_gpu_fan_speed_max_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, int64_t *)) \ + _(amdsmi_get_total_memory_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *)) \ + _(amdsmi_get_memory_usage_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *)) \ + _(amdsmi_get_gpu_activity_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_engine_usage_t *)) \ + _(amdsmi_get_power_cap_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *)) \ + _(amdsmi_get_gpu_power_cap_set_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, uint64_t)) \ + _(amdsmi_get_power_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_power_info_t *)) \ + _(amdsmi_set_power_cap_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, uint64_t)) \ + _(amdsmi_get_gpu_pci_throughput_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *)) \ + _(amdsmi_get_gpu_pci_replay_counter_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_clk_freq_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *)) \ + _(amdsmi_set_clk_freq_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t)) \ + _(amdsmi_get_gpu_metrics_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_gpu_metrics_t *)) \ + _(amdsmi_get_lib_version_p, amdsmi_status_t, (amdsmi_version_t *)) \ + _(amdsmi_get_gpu_driver_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_driver_info_t *)) \ + _(amdsmi_get_gpu_asic_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_asic_info_t *)) \ + _(amdsmi_get_gpu_board_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_board_info_t *)) \ + _(amdsmi_get_fw_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_fw_info_t *)) \ + _(amdsmi_get_gpu_vbios_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_vbios_info_t *)) \ + _(amdsmi_get_gpu_device_uuid_p, amdsmi_status_t, \ + (amdsmi_processor_handle, unsigned int *, char *)) \ + _(amdsmi_get_gpu_enumeration_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_enumeration_info_t *)) \ + _(amdsmi_get_gpu_vendor_name_p, amdsmi_status_t, \ + (amdsmi_processor_handle, char *, size_t)) \ + _(amdsmi_get_gpu_vram_vendor_p, amdsmi_status_t, \ + (amdsmi_processor_handle, char *, uint32_t)) \ + _(amdsmi_get_gpu_subsystem_name_p, amdsmi_status_t, \ + (amdsmi_processor_handle, char *, size_t)) \ + _(amdsmi_get_link_metrics_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_link_metrics_t *)) \ + _(amdsmi_get_gpu_process_list_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *)) \ + _(amdsmi_get_gpu_ecc_enabled_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_gpu_total_ecc_count_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_error_count_t *)) \ + _(amdsmi_get_gpu_ecc_count_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *)) \ + _(amdsmi_get_gpu_ecc_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *)) \ + _(amdsmi_get_gpu_compute_partition_p, amdsmi_status_t, \ + (amdsmi_processor_handle, char *, uint32_t)) \ + _(amdsmi_get_gpu_memory_partition_p, amdsmi_status_t, \ + (amdsmi_processor_handle, char *, uint32_t)) \ + _(amdsmi_get_gpu_accelerator_partition_profile_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, \ + uint32_t *)) \ + _(amdsmi_get_gpu_id_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *)) \ + _(amdsmi_get_gpu_revision_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *)) \ + _(amdsmi_get_gpu_subsystem_id_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *)) \ + _(amdsmi_get_gpu_virtualization_mode_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_virtualization_mode_t *)) \ + _(amdsmi_get_gpu_process_isolation_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_gpu_xcd_counter_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *)) \ + _(amdsmi_get_gpu_pci_bandwidth_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *)) \ + _(amdsmi_get_gpu_bdf_id_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_gpu_topo_numa_affinity_p, amdsmi_status_t, \ + (amdsmi_processor_handle, int32_t *)) \ + _(amdsmi_get_energy_count_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *, float *, uint64_t *)) \ + _(amdsmi_get_gpu_power_profile_presets_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *)) \ + _(amdsmi_get_gpu_cache_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_gpu_cache_info_t *)) \ + _(amdsmi_get_gpu_mem_overdrive_level_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_gpu_od_volt_curve_regions_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *)) \ + _(amdsmi_get_gpu_od_volt_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *)) \ + _(amdsmi_get_gpu_overdrive_level_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_gpu_perf_level_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_dev_perf_level_t *)) \ + _(amdsmi_get_gpu_pm_metrics_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *)) \ + _(amdsmi_get_gpu_ras_feature_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_ras_feature_t *)) \ + _(amdsmi_get_gpu_ras_block_features_enabled_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *)) \ + _(amdsmi_get_gpu_reg_table_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, \ + uint32_t *)) \ + _(amdsmi_get_gpu_volt_metric_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, \ + int64_t *)) \ + _(amdsmi_get_gpu_vram_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_vram_info_t *)) \ + _(amdsmi_get_gpu_vram_usage_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_vram_usage_t *)) \ + _(amdsmi_get_pcie_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_pcie_info_t *)) \ + _(amdsmi_get_processor_count_from_handles_p, amdsmi_status_t, \ + (amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, \ + uint32_t *)) \ + _(amdsmi_get_soc_pstate_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_dpm_policy_t *)) \ + _(amdsmi_get_xgmi_plpd_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_dpm_policy_t *)) \ + _(amdsmi_get_gpu_bad_page_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *)) \ + _(amdsmi_get_gpu_bad_page_threshold_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_power_info_v2_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t, amdsmi_power_info_t *)) \ + _(amdsmi_init_gpu_event_notification_p, amdsmi_status_t, \ + (amdsmi_processor_handle)) \ + _(amdsmi_set_gpu_event_notification_mask_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t)) \ + _(amdsmi_get_gpu_event_notification_p, amdsmi_status_t, \ + (int, uint32_t *, amdsmi_evt_notification_data_t *)) \ + _(amdsmi_stop_gpu_event_notification_p, amdsmi_status_t, \ + (amdsmi_processor_handle)) + +#define AMD_SMI_CPU_FUNCTIONS(_) \ + _(amdsmi_get_cpu_handles_p, amdsmi_status_t, \ + (uint32_t *, amdsmi_processor_handle *)) \ + _(amdsmi_get_cpucore_handles_p, amdsmi_status_t, \ + (uint32_t *, amdsmi_processor_handle *)) \ + _(amdsmi_get_cpu_socket_power_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_socket_power_cap_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_socket_power_cap_max_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_core_energy_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_cpu_socket_energy_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_cpu_smu_fw_version_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_smu_fw_version_t *)) \ + _(amdsmi_get_threads_per_core_p, amdsmi_status_t, (uint32_t *)) \ + _(amdsmi_get_cpu_family_p, amdsmi_status_t, (uint32_t *)) \ + _(amdsmi_get_cpu_model_p, amdsmi_status_t, (uint32_t *)) \ + _(amdsmi_get_cpu_core_boostlimit_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_socket_current_active_freq_limit_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *, char **)) \ + _(amdsmi_get_cpu_socket_freq_range_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint16_t *, uint16_t *)) \ + _(amdsmi_get_cpu_core_current_freq_limit_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_minmax_bandwidth_between_processors_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, \ + uint64_t *)) \ + _(amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *)) \ + _(amdsmi_get_cpu_dimm_power_consumption_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *)) \ + _(amdsmi_get_cpu_dimm_thermal_sensor_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *)) + +#endif /* AMDS_FUNCS_H */ diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 6f48d8257..f6bc7867f 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -46,110 +46,13 @@ extern native_event_table_t *ntv_table_p; extern unsigned int _amd_smi_lock; /* AMD SMI function pointers */ -extern amdsmi_status_t (*amdsmi_init_p)(uint64_t); -extern amdsmi_status_t (*amdsmi_shut_down_p)(void); -extern amdsmi_status_t (*amdsmi_get_socket_handles_p)(uint32_t *, amdsmi_socket_handle *); -extern amdsmi_status_t (*amdsmi_get_processor_handles_by_type_p)(amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, - uint32_t *); -extern amdsmi_status_t (*amdsmi_get_temp_metric_p)(amdsmi_processor_handle, amdsmi_temperature_type_t, amdsmi_temperature_metric_t, - int64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_fan_rpms_p)(amdsmi_processor_handle, uint32_t, int64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_p)(amdsmi_processor_handle, uint32_t, int64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_fan_speed_max_p)(amdsmi_processor_handle, uint32_t, int64_t *); -extern amdsmi_status_t (*amdsmi_get_total_memory_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_memory_usage_p)(amdsmi_processor_handle, amdsmi_memory_type_t, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_activity_p)(amdsmi_processor_handle, amdsmi_engine_usage_t *); -extern amdsmi_status_t (*amdsmi_get_power_cap_info_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_cap_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_power_cap_set_p)(amdsmi_processor_handle, uint32_t, uint64_t); -extern amdsmi_status_t (*amdsmi_get_power_info_p)(amdsmi_processor_handle, amdsmi_power_info_t *); -extern amdsmi_status_t (*amdsmi_set_power_cap_p)(amdsmi_processor_handle, uint32_t, uint64_t); -extern amdsmi_status_t (*amdsmi_get_gpu_pci_throughput_p)(amdsmi_processor_handle, uint64_t *, uint64_t *, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_pci_replay_counter_p)(amdsmi_processor_handle, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *); -extern amdsmi_status_t (*amdsmi_set_clk_freq_p)(amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t); -extern amdsmi_status_t (*amdsmi_get_gpu_metrics_info_p)(amdsmi_processor_handle, amdsmi_gpu_metrics_t *); -extern amdsmi_status_t (*amdsmi_get_lib_version_p)(amdsmi_version_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_driver_info_p)(amdsmi_processor_handle, amdsmi_driver_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_asic_info_p)(amdsmi_processor_handle, amdsmi_asic_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_board_info_p)(amdsmi_processor_handle, amdsmi_board_info_t *); -extern amdsmi_status_t (*amdsmi_get_fw_info_p)(amdsmi_processor_handle, amdsmi_fw_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_vbios_info_p)(amdsmi_processor_handle, amdsmi_vbios_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_device_uuid_p)(amdsmi_processor_handle, unsigned int *, char *); -extern amdsmi_status_t (*amdsmi_get_gpu_enumeration_info_p)(amdsmi_processor_handle, amdsmi_enumeration_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_vendor_name_p)(amdsmi_processor_handle, char *, size_t); -extern amdsmi_status_t (*amdsmi_get_gpu_vram_vendor_p)(amdsmi_processor_handle, char *, uint32_t); -extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_name_p)(amdsmi_processor_handle, char *, size_t); -extern amdsmi_status_t (*amdsmi_get_link_metrics_p)(amdsmi_processor_handle, amdsmi_link_metrics_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_process_list_p)(amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ecc_enabled_p)(amdsmi_processor_handle, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_total_ecc_count_p)(amdsmi_processor_handle, amdsmi_error_count_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ecc_count_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_error_count_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ecc_status_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, amdsmi_ras_err_state_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_compute_partition_p)(amdsmi_processor_handle, char *, uint32_t); -extern amdsmi_status_t (*amdsmi_get_gpu_memory_partition_p)(amdsmi_processor_handle, char *, uint32_t); -extern amdsmi_status_t (*amdsmi_get_gpu_accelerator_partition_profile_p)(amdsmi_processor_handle, amdsmi_accelerator_partition_profile_t *, - uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_id_p)(amdsmi_processor_handle, uint16_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_revision_p)(amdsmi_processor_handle, uint16_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_subsystem_id_p)(amdsmi_processor_handle, uint16_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_virtualization_mode_p)(amdsmi_processor_handle, amdsmi_virtualization_mode_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_process_isolation_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_xcd_counter_p)(amdsmi_processor_handle, uint16_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_pci_bandwidth_p)(amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_bdf_id_p)(amdsmi_processor_handle, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_topo_numa_affinity_p)(amdsmi_processor_handle, int32_t *); -extern amdsmi_status_t (*amdsmi_get_energy_count_p)(amdsmi_processor_handle, uint64_t *, float *, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_power_profile_presets_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_profile_status_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_cache_info_p)(amdsmi_processor_handle, amdsmi_gpu_cache_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_mem_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_od_volt_curve_regions_p)(amdsmi_processor_handle, uint32_t *, amdsmi_freq_volt_region_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_od_volt_info_p)(amdsmi_processor_handle, amdsmi_od_volt_freq_data_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_overdrive_level_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_perf_level_p)(amdsmi_processor_handle, amdsmi_dev_perf_level_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_pm_metrics_info_p)(amdsmi_processor_handle, amdsmi_name_value_t **, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ras_feature_info_p)(amdsmi_processor_handle, amdsmi_ras_feature_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_ras_block_features_enabled_p)(amdsmi_processor_handle, amdsmi_gpu_block_t, - amdsmi_ras_err_state_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_reg_table_info_p)(amdsmi_processor_handle, amdsmi_reg_type_t, amdsmi_name_value_t **, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_volt_metric_p)(amdsmi_processor_handle, amdsmi_voltage_type_t, amdsmi_voltage_metric_t, int64_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_vram_info_p)(amdsmi_processor_handle, amdsmi_vram_info_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_vram_usage_p)(amdsmi_processor_handle, amdsmi_vram_usage_t *); -extern amdsmi_status_t (*amdsmi_get_pcie_info_p)(amdsmi_processor_handle, amdsmi_pcie_info_t *); -extern amdsmi_status_t (*amdsmi_get_processor_count_from_handles_p)(amdsmi_processor_handle *, uint32_t *, uint32_t *, uint32_t *, - uint32_t *); -extern amdsmi_status_t (*amdsmi_get_soc_pstate_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); -extern amdsmi_status_t (*amdsmi_get_xgmi_plpd_p)(amdsmi_processor_handle, amdsmi_dpm_policy_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_bad_page_info_p)(amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *); -extern amdsmi_status_t (*amdsmi_get_gpu_bad_page_threshold_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_power_info_v2_p)(amdsmi_processor_handle, uint32_t, amdsmi_power_info_t *); -extern amdsmi_status_t (*amdsmi_init_gpu_event_notification_p)(amdsmi_processor_handle); -extern amdsmi_status_t (*amdsmi_set_gpu_event_notification_mask_p)(amdsmi_processor_handle, uint64_t); -extern amdsmi_status_t (*amdsmi_get_gpu_event_notification_p)(int, uint32_t *, amdsmi_evt_notification_data_t *); -extern amdsmi_status_t (*amdsmi_stop_gpu_event_notification_p)(amdsmi_processor_handle); - +#include "amds_funcs.h" +#define DECLARE_AMDSMI(name, ret, args) extern ret(*name) args; +AMD_SMI_GPU_FUNCTIONS(DECLARE_AMDSMI) #ifndef AMDSMI_DISABLE_ESMI -extern amdsmi_status_t (*amdsmi_get_cpu_handles_p)(uint32_t *, amdsmi_processor_handle *); -extern amdsmi_status_t (*amdsmi_get_cpucore_handles_p)(uint32_t *, amdsmi_processor_handle *); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_power_cap_max_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_core_energy_p)(amdsmi_processor_handle, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_energy_p)(amdsmi_processor_handle, uint64_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_smu_fw_version_p)(amdsmi_processor_handle, amdsmi_smu_fw_version_t *); -extern amdsmi_status_t (*amdsmi_get_threads_per_core_p)(uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_family_p)(uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_model_p)(uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_core_boostlimit_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_current_active_freq_limit_p)(amdsmi_processor_handle, uint16_t *, char **); -extern amdsmi_status_t (*amdsmi_get_cpu_socket_freq_range_p)(amdsmi_processor_handle, uint16_t *, uint16_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_core_current_freq_limit_p)(amdsmi_processor_handle, uint32_t *); -extern amdsmi_status_t (*amdsmi_get_minmax_bandwidth_between_processors_p)(amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, - uint64_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p)(amdsmi_processor_handle, uint8_t, - amdsmi_temp_range_refresh_rate_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_dimm_power_consumption_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_power_t *); -extern amdsmi_status_t (*amdsmi_get_cpu_dimm_thermal_sensor_p)(amdsmi_processor_handle, uint8_t, amdsmi_dimm_thermal_t *); +AMD_SMI_CPU_FUNCTIONS(DECLARE_AMDSMI) #endif +#undef DECLARE_AMDSMI /* Accessor prototypes */ int access_amdsmi_temp_metric(int mode, void *arg); From c8842bb2fb47532eff1129d0f5cde78cebb24bf3 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 00:18:52 -0400 Subject: [PATCH 072/147] refactor: reposition AMD SMI table helpers --- src/components/amd_smi/amds.c | 80 ++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 8b4ab498a..88ffcbc0d 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -477,6 +477,47 @@ int amds_err_get_last(const char **err_string) { *err_string = error_string; return PAPI_OK; } + +static int shutdown_event_table(void) { + // Remove all events from hash table and free their names/descr + for (int i = 0; i < ntv_table.count; ++i) { + htable_delete(htable, ntv_table.events[i].name); + papi_free(ntv_table.events[i].name); + papi_free(ntv_table.events[i].descr); + } + papi_free(ntv_table.events); + ntv_table.events = NULL; + ntv_table.count = 0; + return PAPI_OK; +} + +static int init_device_table(void) { + // Nothing to do (device_handles and device_count already set in amds_init) + return PAPI_OK; +} + +static int shutdown_device_table(void) { + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + } + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) + papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + device_count = 0; + gpu_count = 0; + cpu_count = 0; + return PAPI_OK; +} /* Initialize native event table: enumerate all supported events */ static int init_event_table(void) { // Check if event table is already initialized @@ -5396,42 +5437,3 @@ static int init_event_table(void) { ntv_table.count = idx; return PAPI_OK; } - -static int shutdown_event_table(void) { - // Remove all events from hash table and free their names/descr - for (int i = 0; i < ntv_table.count; ++i) { - htable_delete(htable, ntv_table.events[i].name); - papi_free(ntv_table.events[i].name); - papi_free(ntv_table.events[i].descr); - } - papi_free(ntv_table.events); - ntv_table.events = NULL; - ntv_table.count = 0; - return PAPI_OK; -} -static int init_device_table(void) { - // Nothing to do (device_handles and device_count already set in amds_init) - return PAPI_OK; -} -static int shutdown_device_table(void) { - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - } - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) - papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - device_count = 0; - gpu_count = 0; - cpu_count = 0; - return PAPI_OK; -} From 861557076ff8c48a4bf3094fe84ac4e0c081d712 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 01:14:31 -0400 Subject: [PATCH 073/147] refactor amd_smi event helpers --- src/components/amd_smi/amds.c | 640 +++++++++------------------------- 1 file changed, 163 insertions(+), 477 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 88ffcbc0d..ff72e6445 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -13,7 +13,7 @@ #define MAX_EVENTS_PER_DEVICE 1024 unsigned int _amd_smi_lock; -/* Pointers to AMD SMI library functions (dynamically loaded) */ +// Pointers to AMD SMI library functions (dynamically loaded) #include "amds_funcs.h" #define DEFINE_AMDSMI(name, ret, args) ret(*name) args; AMD_SMI_GPU_FUNCTIONS(DEFINE_AMDSMI) @@ -21,7 +21,7 @@ AMD_SMI_GPU_FUNCTIONS(DEFINE_AMDSMI) AMD_SMI_CPU_FUNCTIONS(DEFINE_AMDSMI) #endif #undef DEFINE_AMDSMI -/* Global device list and count */ +// Global device list and count int32_t device_count = 0; amdsmi_processor_handle *device_handles = NULL; int32_t device_mask = 0; @@ -32,7 +32,7 @@ uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; -/* forward declarations for internal helpers */ +// Forward declarations for internal helpers static int load_amdsmi_sym(void); static int init_device_table(void); static int shutdown_device_table(void); @@ -41,8 +41,14 @@ static int shutdown_event_table(void); native_event_table_t ntv_table; native_event_table_t *ntv_table_p = NULL; -/* Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure). - */ +#define CHECK_EVENT_IDX(i) \ + do { \ + if ((i) >= MAX_EVENTS_PER_DEVICE * device_count) { \ + papi_free(ntv_table.events); \ + return PAPI_ENOSUPP; \ + } \ + } while (0) +// Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure) static int silence_stderr_begin(void) { int devnull = open("/dev/null", O_WRONLY); if (devnull < 0) @@ -57,7 +63,7 @@ static int silence_stderr_begin(void) { return saved; } -/* Restores stderr using the fd returned by silence_stderr_begin(). */ +// Restores stderr using the fd returned by silence_stderr_begin() static void silence_stderr_end(int saved_fd) { if (saved_fd >= 0) { (void)dup2(saved_fd, STDERR_FILENO); @@ -65,8 +71,8 @@ static void silence_stderr_end(int saved_fd) { } } -/* Simple open/close/start/stop functions (no special handling needed for most - * events) */ +// Simple open/close/start/stop functions (no special handling needed for most +// events) static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; @@ -84,7 +90,7 @@ static int stop_simple(native_event_t *event) { return PAPI_OK; } -/* Replace any non-alphanumeric characters with '_' to build safe event names */ +// Replace any non-alphanumeric characters with '_' to build safe event names static void sanitize_name(const char *src, char *dst, size_t len) { size_t j = 0; for (size_t i = 0; src[i] && j < len - 1; ++i) { @@ -97,7 +103,7 @@ static void sanitize_name(const char *src, char *dst, size_t len) { } dst[j] = '\0'; } -/* Dynamic load of AMD SMI library symbols */ +// Dynamic load of AMD SMI library symbols static void *sym(const char *preferred, const char *fallback) { void *p = dlsym(amds_dlp, preferred); return p ? p : (fallback ? dlsym(amds_dlp, fallback) : NULL); @@ -117,40 +123,40 @@ static int load_amdsmi_sym(void) { dlerror()); return PAPI_ENOSUPP; } - /* Resolve required function symbols */ + // Resolve required function symbols amdsmi_init_p = sym("amdsmi_init", NULL); amdsmi_shut_down_p = sym("amdsmi_shut_down", NULL); amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); - /* Sensors */ + // Sensors amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); amdsmi_get_gpu_fan_speed_p = sym("amdsmi_get_gpu_fan_speed", NULL); amdsmi_get_gpu_fan_speed_max_p = sym("amdsmi_get_gpu_fan_speed_max", NULL); - /* Memory */ + // Memory amdsmi_get_total_memory_p = sym("amdsmi_get_gpu_memory_total", "amdsmi_get_total_memory"); amdsmi_get_memory_usage_p = sym("amdsmi_get_gpu_memory_usage", "amdsmi_get_memory_usage"); - /* Utilization / activity */ + // Utilization / activity amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); - /* Power */ + // Power amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); amdsmi_set_power_cap_p = sym("amdsmi_set_power_cap", "amdsmi_dev_set_power_cap"); - /* PCIe */ + // PCIe amdsmi_get_gpu_pci_throughput_p = sym("amdsmi_get_gpu_pci_throughput", NULL); amdsmi_get_gpu_pci_replay_counter_p = sym("amdsmi_get_gpu_pci_replay_counter", NULL); - /* Clocks */ + // Clocks amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); - /* GPU metrics */ + // GPU metrics amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); - /* Identification and other queries */ + // Identification and other queries amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); @@ -166,7 +172,7 @@ static int load_amdsmi_sym(void) { amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); - /* Additional read-only queries */ + // Additional read-only queries amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); amdsmi_get_gpu_asic_info_p = sym("amdsmi_get_gpu_asic_info", NULL); @@ -264,7 +270,7 @@ static int load_amdsmi_sym(void) { return PAPI_OK; } -/* Initialize AMD SMI library and discover devices */ +// Initialize AMD SMI library and discover devices int amds_init(void) { // Check if already initialized to avoid expensive re-initialization if (device_handles != NULL && device_count > 0) { @@ -285,7 +291,8 @@ int amds_init(void) { uint32_t socket_count = 0; status = amdsmi_get_socket_handles_p(&socket_count, NULL); if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { - sprintf(error_string, "Error discovering sockets or no AMD socket found."); + snprintf(error_string, sizeof(error_string), + "Error discovering sockets or no AMD socket found."); papi_errno = PAPI_ENOEVNT; goto fn_fail; } @@ -297,7 +304,8 @@ int amds_init(void) { } status = amdsmi_get_socket_handles_p(&socket_count, sockets); if (status != AMDSMI_STATUS_SUCCESS) { - sprintf(error_string, "Error getting socket handles."); + snprintf(error_string, sizeof(error_string), + "Error getting socket handles."); papi_free(sockets); papi_errno = PAPI_ENOSUPP; goto fn_fail; @@ -321,7 +329,8 @@ int amds_init(void) { } #endif if (total_gpu_count == 0 && total_cpu_count == 0) { - sprintf(error_string, "No AMD GPU or CPU devices found."); + snprintf(error_string, sizeof(error_string), + "No AMD GPU or CPU devices found."); papi_errno = PAPI_ENOEVNT; papi_free(sockets); goto fn_fail; @@ -330,7 +339,8 @@ int amds_init(void) { total_gpu_count + total_cpu_count, sizeof(*device_handles)); if (!device_handles) { papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for device handles."); + snprintf(error_string, sizeof(error_string), + "Memory allocation error for device handles."); papi_free(sockets); goto fn_fail; } @@ -363,7 +373,8 @@ int amds_init(void) { total_cpu_count, sizeof(amdsmi_processor_handle)); if (!cpu_handles) { papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU handles."); + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU handles."); goto fn_fail; } status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); @@ -390,7 +401,8 @@ int amds_init(void) { cores_per_socket = (uint32_t *)papi_calloc(cpu_count, sizeof(uint32_t)); if (!cpu_core_handles || !cores_per_socket) { papi_errno = PAPI_ENOMEM; - sprintf(error_string, "Memory allocation error for CPU core handles."); + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU core handles."); if (cpu_core_handles) papi_free(cpu_core_handles); if (cores_per_socket) @@ -411,9 +423,9 @@ int amds_init(void) { core_count, sizeof(amdsmi_processor_handle)); if (!cpu_core_handles[s]) { papi_errno = PAPI_ENOMEM; - sprintf(error_string, - "Memory allocation error for CPU core handles on socket %u.", - s); + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU core handles on socket %u.", + s); for (uint32_t t = 0; t < s; ++t) { if (cpu_core_handles[t]) papi_free(cpu_core_handles[t]); @@ -437,7 +449,8 @@ int amds_init(void) { // Initialize the native event table for all discovered metrics papi_errno = init_event_table(); if (papi_errno != PAPI_OK) { - sprintf(error_string, "Error while initializing the native event table."); + snprintf(error_string, sizeof(error_string), + "Error while initializing the native event table."); goto fn_fail; } ntv_table_p = &ntv_table; @@ -518,7 +531,7 @@ static int shutdown_device_table(void) { cpu_count = 0; return PAPI_OK; } -/* Initialize native event table: enumerate all supported events */ +// Initialize native event table: enumerate all supported events static int init_event_table(void) { // Check if event table is already initialized if (ntv_table.count > 0 && ntv_table.events != NULL) { @@ -567,7 +580,7 @@ static int init_event_table(void) { "temp_critical_hyst", "temp_emergency", "temp_emergency_hyst", "temp_crit_min", "temp_crit_min_hyst", "temp_offset", "temp_lowest", "temp_highest"}; - /* Temperature sensors - device-level cache + individual testing */ + // Temperature sensors - device-level cache + individual testing for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle if (!device_handles || !device_handles[d]) { @@ -580,10 +593,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_cache_info_p(device_handles[d], &cache_info) == AMDSMI_STATUS_SUCCESS) { for (uint32_t i = 0; i < cache_info.num_cache_types; ++i) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); uint32_t level = cache_info.cache[i].cache_level; uint32_t prop = cache_info.cache[i].cache_properties; char type_str[8] = "cache"; @@ -621,10 +631,7 @@ static int init_event_table(void) { htable_insert(htable, ev_cache->name, ev_cache); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", level, type_str, d); snprintf(descr_buf, sizeof(descr_buf), @@ -646,10 +653,7 @@ static int init_event_table(void) { htable_insert(htable, ev_cache_cu->name, ev_cache_cu); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", level, type_str, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", @@ -678,10 +682,7 @@ static int init_event_table(void) { amdsmi_vram_info_t vram_info; if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vram_info) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); @@ -702,10 +703,7 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_width->name, ev_vram_width); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", d); @@ -726,10 +724,7 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_size->name, ev_vram_size); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM type id", d); native_event_t *ev_vram_type = &ntv_table.events[idx]; @@ -749,10 +744,7 @@ static int init_event_table(void) { htable_insert(htable, ev_vram_type->name, ev_vram_type); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor id", d); native_event_t *ev_vram_vendor = &ntv_table.events[idx]; @@ -778,10 +770,7 @@ static int init_event_table(void) { amdsmi_pcie_info_t pcie_info; if (amdsmi_get_pcie_info_p(device_handles[d], &pcie_info) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); @@ -802,10 +791,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pw->name, ev_pw); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); @@ -826,10 +812,7 @@ static int init_event_table(void) { htable_insert(htable, ev_ps->name, ev_ps); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -851,10 +834,7 @@ static int init_event_table(void) { htable_insert(htable, ev_piv->name, ev_piv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_slot_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe slot type", d); native_event_t *ev_pst = &ntv_table.events[idx]; @@ -874,10 +854,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pst->name, ev_pst); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -899,10 +876,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pmiv->name, ev_pmiv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); @@ -923,10 +897,7 @@ static int init_event_table(void) { htable_insert(htable, ev_cw->name, ev_cw); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); @@ -947,10 +918,7 @@ static int init_event_table(void) { htable_insert(htable, ev_cs->name, ev_cs); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); @@ -971,10 +939,7 @@ static int init_event_table(void) { htable_insert(htable, ev_cb->name, ev_cb); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); @@ -995,10 +960,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pr->name, ev_pr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1020,10 +982,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pl0->name, ev_pl0); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_rollover_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1045,10 +1004,7 @@ static int init_event_table(void) { htable_insert(htable, ev_prr->name, ev_prr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", @@ -1070,10 +1026,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pns->name, ev_pns); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_received_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1095,10 +1048,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pnr->name, ev_pnr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_other_end_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1126,10 +1076,7 @@ static int init_event_table(void) { uint32_t od_val; if (amdsmi_get_gpu_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1156,10 +1103,7 @@ static int init_event_table(void) { uint32_t od_val; if (amdsmi_get_gpu_mem_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "gpu_mem_overdrive_percent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1187,10 +1131,7 @@ static int init_event_table(void) { amdsmi_dev_perf_level_t perf; if (amdsmi_get_gpu_perf_level_p(device_handles[d], &perf) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "perf_level:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current performance level", d); @@ -1224,12 +1165,9 @@ static int init_event_table(void) { silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - if (metrics) - papi_free(metrics); - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + if (idx >= MAX_EVENTS_PER_DEVICE * device_count && metrics) + papi_free(metrics); + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); @@ -1251,11 +1189,9 @@ static int init_event_table(void) { idx++; for (uint32_t i = 0; i < mcount; ++i) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) papi_free(metrics); - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); char metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(metrics[i].name, metric_name, sizeof(metric_name)); snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, @@ -1288,10 +1224,7 @@ static int init_event_table(void) { amdsmi_ras_feature_t ras; if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1313,10 +1246,7 @@ static int init_event_table(void) { htable_insert(htable, ev_ras->name, ev_ras); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); @@ -1359,10 +1289,7 @@ static int init_event_table(void) { amdsmi_ras_err_state_t st; if (amdsmi_get_gpu_ras_block_features_enabled_p( device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ras_block_%s_state:device=%d", block_names[bi], d); snprintf(descr_buf, sizeof(descr_buf), @@ -1410,10 +1337,7 @@ static int init_event_table(void) { device_handles[d], (amdsmi_voltage_type_t)s, metrics[m], &dummy); if (st != AMDSMI_STATUS_SUCCESS) continue; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); const char *sname = (s < sizeof(sensor_names) / sizeof(sensor_names[0])) ? sensor_names[s] @@ -1459,11 +1383,9 @@ static int init_event_table(void) { st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], &num_regions, regs); if (st == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) papi_free(regs); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "volt_curve_regions:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1486,11 +1408,9 @@ static int init_event_table(void) { idx++; for (uint32_t r = 0; r < num_regions; ++r) { - if (idx + 4 > MAX_EVENTS_PER_DEVICE * device_count) { + if (idx + 4 > MAX_EVENTS_PER_DEVICE * device_count) papi_free(regs); - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx + 4); snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_min:device=%d:region=%u", d, r); @@ -1593,8 +1513,7 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; + CHECK_EVENT_IDX(idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS); } snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1757,10 +1676,7 @@ static int init_event_table(void) { idx++; for (uint32_t p = 0; p < AMDSMI_NUM_VOLTAGE_CURVE_POINTS; ++p) { - if (idx + 2 > MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx + 2); snprintf(name_buf, sizeof(name_buf), "volt_curve_point_freq:device=%d:point=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), @@ -1811,10 +1727,7 @@ static int init_event_table(void) { if (amdsmi_get_soc_pstate_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "soc_pstate_policy:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SoC P-state policy id", d); @@ -1834,10 +1747,7 @@ static int init_event_table(void) { ev_soc->access_func = access_amdsmi_soc_pstate_id; htable_insert(htable, ev_soc->name, ev_soc); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1866,10 +1776,7 @@ static int init_event_table(void) { if (amdsmi_get_xgmi_plpd_p(device_handles[d], &policy) == AMDSMI_STATUS_SUCCESS && policy.num_supported > 0) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_plpd:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current XGMI PLPD policy id", d); @@ -1889,10 +1796,7 @@ static int init_event_table(void) { ev_xplpd->access_func = access_amdsmi_xgmi_plpd_id; htable_insert(htable, ev_xplpd->name, ev_xplpd); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -1934,8 +1838,7 @@ static int init_event_table(void) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); - papi_free(ntv_table.events); - return PAPI_ENOSUPP; + CHECK_EVENT_IDX(idx); } snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", reg_names[rt], d); @@ -1962,8 +1865,7 @@ static int init_event_table(void) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) papi_free(reg_metrics); - papi_free(ntv_table.events); - return PAPI_ENOSUPP; + CHECK_EVENT_IDX(idx); } char reg_metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(reg_metrics[i].name, reg_metric_name, @@ -2852,10 +2754,7 @@ static int init_event_table(void) { if (n > AMDSMI_FW_ID__MAX) n = AMDSMI_FW_ID__MAX; for (uint8_t f = 0; f < n; ++f) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); uint32_t fid = finfo.fw_info_list[f].fw_id; snprintf(name_buf, sizeof(name_buf), "fw_version_id%u:device=%d", fid, d); @@ -2885,10 +2784,7 @@ static int init_event_table(void) { amdsmi_board_info_t binfo; if (amdsmi_get_gpu_board_info_p(device_handles[d], &binfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "board_serial_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); @@ -2915,10 +2811,7 @@ static int init_event_table(void) { amdsmi_vram_info_t vinfo; if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); @@ -2945,10 +2838,7 @@ static int init_event_table(void) { uint32_t nump = 0; if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); @@ -2969,10 +2859,7 @@ static int init_event_table(void) { htable_insert(htable, ev_bpc->name, ev_bpc); idx++; for (uint32_t p = 0; p < nump; ++p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_address:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), @@ -2993,10 +2880,7 @@ static int init_event_table(void) { ev_addr->access_func = access_amdsmi_bad_page_record; htable_insert(htable, ev_addr->name, ev_addr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), @@ -3017,10 +2901,7 @@ static int init_event_table(void) { ev_size->access_func = access_amdsmi_bad_page_record; htable_insert(htable, ev_size->name, ev_size); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), @@ -3049,10 +2930,7 @@ static int init_event_table(void) { uint32_t thr = 0; if (amdsmi_get_gpu_bad_page_threshold_p(device_handles[d], &thr) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_threshold:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); @@ -3086,10 +2964,7 @@ static int init_event_table(void) { break; /* Register current socket power in Watts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_current_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3112,10 +2987,7 @@ static int init_event_table(void) { idx++; /* Register average socket power in Watts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_average_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3138,10 +3010,7 @@ static int init_event_table(void) { idx++; /* Register socket power in microwatts */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3164,10 +3033,7 @@ static int init_event_table(void) { idx++; /* Register GFX voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3190,10 +3056,7 @@ static int init_event_table(void) { idx++; /* Register SOC voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3216,10 +3079,7 @@ static int init_event_table(void) { idx++; /* Register MEM voltage */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3242,10 +3102,7 @@ static int init_event_table(void) { idx++; /* Register power limit */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_sensor_limit_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), @@ -3274,10 +3131,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == AMDSMI_STATUS_SUCCESS) { /* Register throttle status */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); @@ -3299,10 +3153,7 @@ static int init_event_table(void) { idx++; /* Register independent throttle status */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "gpu_indep_throttle_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -3325,10 +3176,7 @@ static int init_event_table(void) { idx++; /* Register PCIe link width */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); @@ -3350,10 +3198,7 @@ static int init_event_table(void) { idx++; /* Register PCIe link speed */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); @@ -3375,10 +3220,7 @@ static int init_event_table(void) { idx++; /* Register PCIe bandwidth and replay counters */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); @@ -3399,10 +3241,7 @@ static int init_event_table(void) { htable_insert(htable, ev_bwacc->name, ev_bwacc); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -3424,10 +3263,7 @@ static int init_event_table(void) { htable_insert(htable, ev_bwin->name, ev_bwin); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recov_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -3449,10 +3285,7 @@ static int init_event_table(void) { htable_insert(htable, ev_l0->name, ev_l0); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", @@ -3474,10 +3307,7 @@ static int init_event_table(void) { htable_insert(htable, ev_replay->name, ev_replay); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_rover_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -3499,10 +3329,7 @@ static int init_event_table(void) { htable_insert(htable, ev_replay_ro->name, ev_replay_ro); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", @@ -3524,10 +3351,7 @@ static int init_event_table(void) { htable_insert(htable, ev_nak_sent->name, ev_nak_sent); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_rcvd_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -3555,10 +3379,7 @@ static int init_event_table(void) { amdsmi_set_gpu_event_notification_mask_p && amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -4147,10 +3968,7 @@ static int init_event_table(void) { if (amdsmi_get_lib_version_p) { amdsmi_version_t vinfo; if (amdsmi_get_lib_version_p(&vinfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_major"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); native_event_t *ev_lmaj = &ntv_table.events[idx]; @@ -4169,10 +3987,7 @@ static int init_event_table(void) { ev_lmaj->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmaj->name, ev_lmaj); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); native_event_t *ev_lmin = &ntv_table.events[idx]; @@ -4191,10 +4006,7 @@ static int init_event_table(void) { ev_lmin->access_func = access_amdsmi_lib_version; htable_insert(htable, ev_lmin->name, ev_lmin); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_release"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); @@ -4230,10 +4042,7 @@ static int init_event_table(void) { uuid_len = sizeof(uuid_buf); st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, uuid_buf); if (st == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); @@ -4253,10 +4062,7 @@ static int init_event_table(void) { ev_uuid->access_func = access_amdsmi_uuid_hash; htable_insert(htable, ev_uuid->name, ev_uuid); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "uuid_length:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID length", d); native_event_t *ev_uuid_len = &ntv_table.events[idx]; @@ -4282,10 +4088,7 @@ static int init_event_table(void) { char tmp[256] = {0}; if (amdsmi_get_gpu_vendor_name_p(device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); @@ -4315,10 +4118,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_vram_vendor_p(device_handles[d], tmp, (uint32_t)sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); @@ -4347,10 +4147,7 @@ static int init_event_table(void) { char tmp[256] = {0}; if (amdsmi_get_gpu_subsystem_name_p( device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -4382,10 +4179,7 @@ static int init_event_table(void) { amdsmi_enumeration_info_t einfo; if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); native_event_t *ev_er = &ntv_table.events[idx]; @@ -4404,10 +4198,7 @@ static int init_event_table(void) { ev_er->access_func = access_amdsmi_enumeration_info; htable_insert(htable, ev_er->name, ev_er); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); native_event_t *ev_ec = &ntv_table.events[idx]; @@ -4426,10 +4217,7 @@ static int init_event_table(void) { ev_ec->access_func = access_amdsmi_enumeration_info; htable_insert(htable, ev_ec->name, ev_ec); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); native_event_t *ev_eh = &ntv_table.events[idx]; @@ -4448,10 +4236,7 @@ static int init_event_table(void) { ev_eh->access_func = access_amdsmi_enumeration_info; htable_insert(htable, ev_eh->name, ev_eh); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); native_event_t *ev_ehip = &ntv_table.events[idx]; @@ -4477,10 +4262,7 @@ static int init_event_table(void) { amdsmi_asic_info_t ainfo; if (amdsmi_get_gpu_asic_info_p(device_handles[d], &ainfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); native_event_t *ev_av = &ntv_table.events[idx]; @@ -4499,10 +4281,7 @@ static int init_event_table(void) { ev_av->access_func = access_amdsmi_asic_info; htable_insert(htable, ev_av->name, ev_av); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); native_event_t *ev_ad = &ntv_table.events[idx]; @@ -4521,10 +4300,7 @@ static int init_event_table(void) { ev_ad->access_func = access_amdsmi_asic_info; htable_insert(htable, ev_ad->name, ev_ad); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -4545,10 +4321,7 @@ static int init_event_table(void) { ev_asv->access_func = access_amdsmi_asic_info; htable_insert(htable, ev_asv->name, ev_asv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); @@ -4568,10 +4341,7 @@ static int init_event_table(void) { ev_ass->access_func = access_amdsmi_asic_info; htable_insert(htable, ev_ass->name, ev_ass); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); native_event_t *ev_ar = &ntv_table.events[idx]; @@ -4590,10 +4360,7 @@ static int init_event_table(void) { ev_ar->access_func = access_amdsmi_asic_info; htable_insert(htable, ev_ar->name, ev_ar); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); @@ -4620,10 +4387,7 @@ static int init_event_table(void) { amdsmi_driver_info_t dinfo; if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); @@ -4643,10 +4407,7 @@ static int init_event_table(void) { ev_dname->access_func = access_amdsmi_gpu_string_hash; htable_insert(htable, ev_dname->name, ev_dname); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); @@ -4672,10 +4433,7 @@ static int init_event_table(void) { /*if (amdsmi_get_gpu_vbios_info_p) { amdsmi_vbios_info_t vb; if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == - AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", d); native_event_t *ev_vbv = &ntv_table.events[idx]; ev_vbv->id = idx; @@ -4693,10 +4451,7 @@ static int init_event_table(void) { ev_vbv->access_func = access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbv->name, ev_vbv); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number (hash)", d); native_event_t *ev_vbp = &ntv_table.events[idx]; ev_vbp->id = @@ -4713,10 +4468,7 @@ static int init_event_table(void) { ev_vbp->access_func = access_amdsmi_gpu_string_hash; htable_insert(htable, ev_vbp->name, ev_vbp); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date (hash)", d); native_event_t *ev_vbd = &ntv_table.events[idx]; ev_vbd->id = @@ -4750,10 +4502,7 @@ static int init_event_table(void) { if (type == AMDSMI_LINK_TYPE_XGMI) { has_xgmi = 1; /* Per-link XGMI read/write/bit rate/max bandwidth */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_read_kB:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4777,10 +4526,7 @@ static int init_event_table(void) { htable_insert(htable, ev_lr->name, ev_lr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_write_kB:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4804,10 +4550,7 @@ static int init_event_table(void) { htable_insert(htable, ev_lw->name, ev_lw); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4831,10 +4574,7 @@ static int init_event_table(void) { htable_insert(htable, ev_lb->name, ev_lb); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4860,10 +4600,7 @@ static int init_event_table(void) { } else if (type == AMDSMI_LINK_TYPE_PCIE) { has_pcie = 1; /* Per-link PCIe bit rate/max bandwidth */ - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link%u_bit_rate_Gbps:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4887,10 +4624,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pb->name, ev_pb); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); snprintf(descr_buf, sizeof(descr_buf), @@ -4918,10 +4652,7 @@ static int init_event_table(void) { /* --- Aggregate totals by link type --- */ if (has_xgmi) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total XGMI read across links (kB)", d); @@ -4944,10 +4675,7 @@ static int init_event_table(void) { htable_insert(htable, ev_xr->name, ev_xr); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -4971,10 +4699,7 @@ static int init_event_table(void) { htable_insert(htable, ev_xw->name, ev_xw); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_total_bit_rate_Gbps:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -4998,10 +4723,7 @@ static int init_event_table(void) { htable_insert(htable, ev_xb->name, ev_xb); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_total_max_bandwidth_Gbps:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5027,10 +4749,7 @@ static int init_event_table(void) { } if (has_pcie) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_total_bit_rate_Gbps:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5054,10 +4773,7 @@ static int init_event_table(void) { htable_insert(htable, ev_pb->name, ev_pb); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_total_max_bandwidth_Gbps:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5101,10 +4817,7 @@ static int init_event_table(void) { for (int p = 0; p < 2; ++p) { for (size_t f = 0; f < sizeof(pf) / sizeof(pf[0]); ++f) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "process%d_%s:device=%d", p, pf[f].suffix, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d process %d %s", d, @@ -5132,10 +4845,7 @@ static int init_event_table(void) { } /* ECC totals & enabled mask (where supported) */ if (amdsmi_get_gpu_total_ecc_count_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5156,10 +4866,7 @@ static int init_event_table(void) { ev_ecct->access_func = access_amdsmi_ecc_total; htable_insert(htable, ev_ecct->name, ev_ecct); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5180,10 +4887,7 @@ static int init_event_table(void) { ev_ecctu->access_func = access_amdsmi_ecc_total; htable_insert(htable, ev_ecctu->name, ev_ecctu); idx++; - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total ECC deferred errors", d); @@ -5227,10 +4931,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == AMDSMI_STATUS_SUCCESS) { for (int t = 0; t < 3; ++t) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", block_names[bi], cnt_names[t], d); snprintf(descr_buf, sizeof(descr_buf), @@ -5277,10 +4978,7 @@ static int init_event_table(void) { amdsmi_ras_err_state_t st; if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", block_names[bi], d); snprintf(descr_buf, sizeof(descr_buf), @@ -5305,10 +5003,7 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_ecc_enabled_p) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block bitmask", d); @@ -5335,10 +5030,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_compute_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5369,10 +5061,7 @@ static int init_event_table(void) { if (amdsmi_get_gpu_memory_partition_p(device_handles[d], dummy, sizeof(dummy)) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), @@ -5403,10 +5092,7 @@ static int init_event_table(void) { uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; if (amdsmi_get_gpu_accelerator_partition_profile_p( device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - papi_free(ntv_table.events); - return PAPI_ENOSUPP; - } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), From 439d534b3138b7f3f89b097e20e0e7427bae2c49 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 01:21:17 -0400 Subject: [PATCH 074/147] Limit AMD SMI globals to internal scope --- src/components/amd_smi/amds.c | 36 ++++++++++++++++++-------- src/components/amd_smi/amds_ctx.c | 2 ++ src/components/amd_smi/amds_priv.h | 34 +++++++++++++++--------- src/components/amd_smi/linux-amd-smi.c | 4 +-- 4 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ff72e6445..cadf3a356 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,4 +1,5 @@ #include "amds.h" +#define AMDS_PRIV_IMPL #include "amds_priv.h" #include "amdsmi.h" #include "htable.h" @@ -12,7 +13,7 @@ #include #define MAX_EVENTS_PER_DEVICE 1024 -unsigned int _amd_smi_lock; +static unsigned int _amd_smi_lock; // Pointers to AMD SMI library functions (dynamically loaded) #include "amds_funcs.h" #define DEFINE_AMDSMI(name, ret, args) ret(*name) args; @@ -22,15 +23,14 @@ AMD_SMI_CPU_FUNCTIONS(DEFINE_AMDSMI) #endif #undef DEFINE_AMDSMI // Global device list and count -int32_t device_count = 0; -amdsmi_processor_handle *device_handles = NULL; -int32_t device_mask = 0; -int32_t gpu_count = 0; -int32_t cpu_count = 0; -amdsmi_processor_handle **cpu_core_handles = NULL; -uint32_t *cores_per_socket = NULL; +static int32_t device_count = 0; +static amdsmi_processor_handle *device_handles = NULL; +static int32_t gpu_count = 0; +static int32_t cpu_count = 0; +static amdsmi_processor_handle **cpu_core_handles = NULL; +static uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; -void *htable = NULL; +static void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; // Forward declarations for internal helpers static int load_amdsmi_sym(void); @@ -38,8 +38,22 @@ static int init_device_table(void); static int shutdown_device_table(void); static int init_event_table(void); static int shutdown_event_table(void); -native_event_table_t ntv_table; -native_event_table_t *ntv_table_p = NULL; +static native_event_table_t ntv_table; +static native_event_table_t *ntv_table_p = NULL; + +/* Internal state accessors */ +unsigned int amds_get_lock(void) { return _amd_smi_lock; } +void amds_set_lock(unsigned int lock) { _amd_smi_lock = lock; } +int32_t amds_get_device_count(void) { return device_count; } +amdsmi_processor_handle *amds_get_device_handles(void) { return device_handles; } +int32_t amds_get_gpu_count(void) { return gpu_count; } +int32_t amds_get_cpu_count(void) { return cpu_count; } +amdsmi_processor_handle **amds_get_cpu_core_handles(void) { + return cpu_core_handles; +} +uint32_t *amds_get_cores_per_socket(void) { return cores_per_socket; } +native_event_table_t *amds_get_ntv_table(void) { return ntv_table_p; } +void *amds_get_htable(void) { return htable; } #define CHECK_EVENT_IDX(i) \ do { \ diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 91b0d33fb..8bb3321f0 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -2,6 +2,8 @@ #include "amds_priv.h" #include "papi.h" #include "papi_memory.h" +static int32_t device_mask = 0; + static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { int32_t mask_acq = 0; for (int i = 0; i < num_events; ++i) { diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index f6bc7867f..1f4be316c 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -32,18 +32,28 @@ typedef struct { int count; } native_event_table_t; -/* Global state */ -extern amdsmi_processor_handle *device_handles; -extern int32_t device_count; -extern int32_t gpu_count; -extern int32_t cpu_count; -extern int32_t device_mask; -extern amdsmi_processor_handle **cpu_core_handles; -extern uint32_t *cores_per_socket; -extern void *htable; -extern native_event_table_t ntv_table; -extern native_event_table_t *ntv_table_p; -extern unsigned int _amd_smi_lock; +/* Global state accessors */ +int32_t amds_get_device_count(void); +amdsmi_processor_handle *amds_get_device_handles(void); +int32_t amds_get_gpu_count(void); +int32_t amds_get_cpu_count(void); +amdsmi_processor_handle **amds_get_cpu_core_handles(void); +uint32_t *amds_get_cores_per_socket(void); +void *amds_get_htable(void); +native_event_table_t *amds_get_ntv_table(void); +unsigned int amds_get_lock(void); +void amds_set_lock(unsigned int lock); + +#ifndef AMDS_PRIV_IMPL +#define device_handles (amds_get_device_handles()) +#define device_count (amds_get_device_count()) +#define gpu_count (amds_get_gpu_count()) +#define cpu_count (amds_get_cpu_count()) +#define cpu_core_handles (amds_get_cpu_core_handles()) +#define cores_per_socket (amds_get_cores_per_socket()) +#define htable (amds_get_htable()) +#define ntv_table_p (amds_get_ntv_table()) +#endif /* AMD SMI function pointers */ #include "amds_funcs.h" diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index d8faef4ab..f10a76cee 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -16,6 +16,7 @@ #include "papi_memory.h" #include "extras.h" #include "amds.h" +#include "amds_priv.h" typedef struct { int initialized; @@ -30,7 +31,6 @@ typedef struct { amds_ctx_t amds_ctx; } amdsmi_control_t; -extern unsigned int _amd_smi_lock; papi_vector_t _amd_smi_vector; static int _amd_smi_init_private(void); @@ -54,7 +54,7 @@ static int _amd_smi_init_component(int cidx) { _amd_smi_vector.cmp_info.num_native_events = -1; _amd_smi_vector.cmp_info.num_cntrs = -1; _amd_smi_vector.cmp_info.num_mpx_cntrs = -1; - _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; + amds_set_lock(PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx); sprintf(_amd_smi_vector.cmp_info.disabled_reason, "Not initialized. Access an AMD SMI event to initialize."); From 5b0e36aa5831037efcc7b746fc301c32ee25fd31 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:25:18 -0400 Subject: [PATCH 075/147] Fix AMD SMI accessor signatures and link order --- src/components/amd_smi/Rules.amd_smi | 8 ++++---- src/components/amd_smi/amds_priv.h | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 669ff4846..27eedc7d1 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -75,13 +75,13 @@ PAPI_AMDSMI_ROOT ?= /opt/rocm # for disabling is shown using the papi utility, # papi/src/utils/papi_component_avail. -COMPSRCS += components/amd_smi/linux-amd-smi.c \ - components/amd_smi/amds.c \ +COMPSRCS += components/amd_smi/amds.c \ + components/amd_smi/linux-amd-smi.c \ components/amd_smi/amds_accessors.c \ components/amd_smi/amds_evtapi.c \ components/amd_smi/amds_ctx.c -COMPOBJS += linux-amd-smi.o \ - amds.o \ +COMPOBJS += amds.o \ + linux-amd-smi.o \ amds_accessors.o \ amds_evtapi.o \ amds_ctx.o diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 1f4be316c..663bd0ced 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -13,6 +13,8 @@ typedef enum { PAPI_MODE_RDWR, } rocs_access_mode_e; +typedef int (*amds_accessor_t)(int mode, void *arg); + /* Native event descriptor */ typedef struct native_event { unsigned int id; @@ -24,7 +26,7 @@ typedef struct native_event { int (*close_func)(struct native_event *); int (*start_func)(struct native_event *); int (*stop_func)(struct native_event *); - int (*access_func)(int mode, void *arg); + amds_accessor_t access_func; } native_event_t; typedef struct { From 878a86dcc823c3e0f6a741b531bb05f2f2b3f813 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Thu, 28 Aug 2025 10:28:13 -0700 Subject: [PATCH 076/147] refactor init itable --- src/components/amd_smi/amds.c | 4248 ++++++--------------------------- 1 file changed, 724 insertions(+), 3524 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index cadf3a356..b1f7ea670 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -85,8 +85,7 @@ static void silence_stderr_end(int saved_fd) { } } -// Simple open/close/start/stop functions (no special handling needed for most -// events) +// Simple open/close/start/stop functions (no special handling needed for most events) static int open_simple(native_event_t *event) { (void)event; return PAPI_OK; @@ -117,6 +116,7 @@ static void sanitize_name(const char *src, char *dst, size_t len) { } dst[j] = '\0'; } + // Dynamic load of AMD SMI library symbols static void *sym(const char *preferred, const char *fallback) { void *p = dlsym(amds_dlp, preferred); @@ -248,7 +248,6 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_gpu_event_notification", NULL); amdsmi_stop_gpu_event_notification_p = sym("amdsmi_stop_gpu_event_notification", NULL); - #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); @@ -284,267 +283,32 @@ static int load_amdsmi_sym(void) { return PAPI_OK; } -// Initialize AMD SMI library and discover devices -int amds_init(void) { - // Check if already initialized to avoid expensive re-initialization - if (device_handles != NULL && device_count > 0) { - return PAPI_OK; // Already initialized - } - int papi_errno = load_amdsmi_sym(); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - // AMDSMI_INIT_AMD_CPUS - amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); - if (status != AMDSMI_STATUS_SUCCESS) { - strcpy(error_string, "amdsmi_init failed"); - return PAPI_ENOSUPP; - } - htable_init(&htable); - // Discover GPU and CPU devices - uint32_t socket_count = 0; - status = amdsmi_get_socket_handles_p(&socket_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { - snprintf(error_string, sizeof(error_string), - "Error discovering sockets or no AMD socket found."); - papi_errno = PAPI_ENOEVNT; - goto fn_fail; - } - amdsmi_socket_handle *sockets = (amdsmi_socket_handle *)papi_calloc( - socket_count, sizeof(amdsmi_socket_handle)); - if (!sockets) { - papi_errno = PAPI_ENOMEM; - goto fn_fail; - } - status = amdsmi_get_socket_handles_p(&socket_count, sockets); - if (status != AMDSMI_STATUS_SUCCESS) { - snprintf(error_string, sizeof(error_string), - "Error getting socket handles."); - papi_free(sockets); - papi_errno = PAPI_ENOSUPP; - goto fn_fail; - } - device_count = 0; - uint32_t total_gpu_count = 0; - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( - sockets[s], proc_type, NULL, &gpu_count_local); - if (st == AMDSMI_STATUS_SUCCESS) { - total_gpu_count += gpu_count_local; - } - } - uint32_t total_cpu_count = 0; -#ifndef AMDSMI_DISABLE_ESMI - status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) { - total_cpu_count = 0; - } -#endif - if (total_gpu_count == 0 && total_cpu_count == 0) { - snprintf(error_string, sizeof(error_string), - "No AMD GPU or CPU devices found."); - papi_errno = PAPI_ENOEVNT; - papi_free(sockets); - goto fn_fail; - } - device_handles = (amdsmi_processor_handle *)papi_calloc( - total_gpu_count + total_cpu_count, sizeof(*device_handles)); - if (!device_handles) { - papi_errno = PAPI_ENOMEM; - snprintf(error_string, sizeof(error_string), - "Memory allocation error for device handles."); - papi_free(sockets); - goto fn_fail; - } - // Retrieve GPU processor handles for each socket - optimized to reduce - // allocations - for (uint32_t s = 0; s < socket_count; ++s) { - uint32_t gpu_count_local = 0; - processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; - status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, - &gpu_count_local); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { - continue; // no GPU on this socket or error - } - // Use the main device_handles array directly to avoid extra allocation - amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; - status = amdsmi_get_processor_handles_by_type_p( - sockets[s], proc_type, gpu_handles, &gpu_count_local); - if (status == AMDSMI_STATUS_SUCCESS) { - device_count += gpu_count_local; - } - } - papi_free(sockets); - // Set gpu_count for use in event table initialization - gpu_count = device_count; // All devices added so far are GPUs -#ifndef AMDSMI_DISABLE_ESMI - // Retrieve CPU socket handles - amdsmi_processor_handle *cpu_handles = NULL; - if (total_cpu_count > 0) { - cpu_handles = (amdsmi_processor_handle *)papi_calloc( - total_cpu_count, sizeof(amdsmi_processor_handle)); - if (!cpu_handles) { - papi_errno = PAPI_ENOMEM; - snprintf(error_string, sizeof(error_string), - "Memory allocation error for CPU handles."); - goto fn_fail; - } - status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); - if (status != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_handles); - cpu_handles = NULL; - total_cpu_count = 0; - } - } - if (cpu_handles) { - for (uint32_t i = 0; i < total_cpu_count; ++i) { - device_handles[device_count++] = cpu_handles[i]; - } - papi_free(cpu_handles); - } -#endif - // Set global GPU/CPU counts - gpu_count = total_gpu_count; - cpu_count = total_cpu_count; - // Retrieve CPU core handles for each CPU socket - if (cpu_count > 0) { - cpu_core_handles = (amdsmi_processor_handle **)papi_calloc( - cpu_count, sizeof(amdsmi_processor_handle *)); - cores_per_socket = (uint32_t *)papi_calloc(cpu_count, sizeof(uint32_t)); - if (!cpu_core_handles || !cores_per_socket) { - papi_errno = PAPI_ENOMEM; - snprintf(error_string, sizeof(error_string), - "Memory allocation error for CPU core handles."); - if (cpu_core_handles) - papi_free(cpu_core_handles); - if (cores_per_socket) - papi_free(cores_per_socket); - goto fn_fail; - } - for (uint32_t s = 0; s < cpu_count; ++s) { - uint32_t core_count = 0; - amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( - device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, - NULL, &core_count); - if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { - cores_per_socket[s] = 0; - cpu_core_handles[s] = NULL; - continue; - } - cpu_core_handles[s] = (amdsmi_processor_handle *)papi_calloc( - core_count, sizeof(amdsmi_processor_handle)); - if (!cpu_core_handles[s]) { - papi_errno = PAPI_ENOMEM; - snprintf(error_string, sizeof(error_string), - "Memory allocation error for CPU core handles on socket %u.", - s); - for (uint32_t t = 0; t < s; ++t) { - if (cpu_core_handles[t]) - papi_free(cpu_core_handles[t]); - } - papi_free(cpu_core_handles); - papi_free(cores_per_socket); - goto fn_fail; - } - st = amdsmi_get_processor_handles_by_type_p( - device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, - cpu_core_handles[s], &core_count); - if (st != AMDSMI_STATUS_SUCCESS) { - papi_free(cpu_core_handles[s]); - cpu_core_handles[s] = NULL; - cores_per_socket[s] = 0; - } else { - cores_per_socket[s] = core_count; - } - } - } - // Initialize the native event table for all discovered metrics - papi_errno = init_event_table(); - if (papi_errno != PAPI_OK) { - snprintf(error_string, sizeof(error_string), - "Error while initializing the native event table."); - goto fn_fail; - } - ntv_table_p = &ntv_table; - return PAPI_OK; -fn_fail: - htable_shutdown(htable); - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - device_count = 0; - } - // sockets already freed if allocated - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) - papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - amdsmi_shut_down_p(); - return papi_errno; -} -int amds_shutdown(void) { - shutdown_event_table(); - shutdown_device_table(); - htable_shutdown(htable); - - return amdsmi_shut_down_p(); -} -int amds_err_get_last(const char **err_string) { - if (err_string) - *err_string = error_string; - return PAPI_OK; -} - -static int shutdown_event_table(void) { - // Remove all events from hash table and free their names/descr - for (int i = 0; i < ntv_table.count; ++i) { - htable_delete(htable, ntv_table.events[i].name); - papi_free(ntv_table.events[i].name); - papi_free(ntv_table.events[i].descr); +// Helper to add a new event entry to ntv_table +static int add_event(int *idx_ptr, const char *name, const char *descr, int device, + uint32_t variant, uint32_t subvariant, int mode, + int (*access_func)(native_event_t *)) { + native_event_t *ev = &ntv_table.events[*idx_ptr]; + ev->id = *idx_ptr; + ev->name = strdup(name); + ev->descr = strdup(descr); + if (!ev->name || !ev->descr) { + return PAPI_ENOMEM; } - papi_free(ntv_table.events); - ntv_table.events = NULL; - ntv_table.count = 0; - return PAPI_OK; -} - -static int init_device_table(void) { - // Nothing to do (device_handles and device_count already set in amds_init) + ev->device = device; + ev->value = 0; + ev->mode = mode; + ev->variant = variant; + ev->subvariant = subvariant; + ev->open_func = open_simple; + ev->close_func = close_simple; + ev->start_func = start_simple; + ev->stop_func = stop_simple; + ev->access_func = access_func; + htable_insert(htable, ev->name, ev); + (*idx_ptr)++; return PAPI_OK; } -static int shutdown_device_table(void) { - if (device_handles) { - papi_free(device_handles); - device_handles = NULL; - } - if (cpu_core_handles) { - for (int s = 0; s < cpu_count; ++s) { - if (cpu_core_handles[s]) - papi_free(cpu_core_handles[s]); - } - papi_free(cpu_core_handles); - cpu_core_handles = NULL; - } - if (cores_per_socket) { - papi_free(cores_per_socket); - cores_per_socket = NULL; - } - device_count = 0; - gpu_count = 0; - cpu_count = 0; - return PAPI_OK; -} // Initialize native event table: enumerate all supported events static int init_event_table(void) { // Check if event table is already initialized @@ -572,22 +336,14 @@ static int init_event_table(void) { AMDSMI_TEMPERATURE_TYPE_VRAM, AMDSMI_TEMPERATURE_TYPE_HBM_0, AMDSMI_TEMPERATURE_TYPE_HBM_1, AMDSMI_TEMPERATURE_TYPE_HBM_2, AMDSMI_TEMPERATURE_TYPE_HBM_3, AMDSMI_TEMPERATURE_TYPE_PLX}; - const int num_temp_sensors = sizeof(temp_sensors) / sizeof(temp_sensors[0]); + const int num_temp_sensors = + sizeof(temp_sensors) / sizeof(temp_sensors[0]); const amdsmi_temperature_metric_t temp_metrics[] = { - AMDSMI_TEMP_CURRENT, - AMDSMI_TEMP_MAX, - AMDSMI_TEMP_MIN, - AMDSMI_TEMP_MAX_HYST, - AMDSMI_TEMP_MIN_HYST, - AMDSMI_TEMP_CRITICAL, - AMDSMI_TEMP_CRITICAL_HYST, - AMDSMI_TEMP_EMERGENCY, - AMDSMI_TEMP_EMERGENCY_HYST, - AMDSMI_TEMP_CRIT_MIN, - AMDSMI_TEMP_CRIT_MIN_HYST, - AMDSMI_TEMP_OFFSET, - AMDSMI_TEMP_LOWEST, - AMDSMI_TEMP_HIGHEST}; + AMDSMI_TEMP_CURRENT, AMDSMI_TEMP_MAX, AMDSMI_TEMP_MIN, + AMDSMI_TEMP_MAX_HYST, AMDSMI_TEMP_MIN_HYST, AMDSMI_TEMP_CRITICAL, + AMDSMI_TEMP_CRITICAL_HYST, AMDSMI_TEMP_EMERGENCY, AMDSMI_TEMP_EMERGENCY_HYST, + AMDSMI_TEMP_CRIT_MIN, AMDSMI_TEMP_CRIT_MIN_HYST, AMDSMI_TEMP_OFFSET, + AMDSMI_TEMP_LOWEST, AMDSMI_TEMP_HIGHEST}; const char *temp_metric_names[] = { "temp_current", "temp_max", "temp_min", "temp_max_hyst", "temp_min_hyst", "temp_critical", @@ -624,70 +380,33 @@ static int init_event_table(void) { type_str, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s size (bytes)", d, level, - (strcmp(type_str, "cache") == 0 - ? "cache" - : (strcmp(type_str, "icache") == 0 ? "instruction cache" - : "data cache"))); - native_event_t *ev_cache = &ntv_table.events[idx]; - ev_cache->id = idx; - ev_cache->name = strdup(name_buf); - ev_cache->descr = strdup(descr_buf); - ev_cache->device = d; - ev_cache->value = 0; - ev_cache->mode = PAPI_MODE_READ; - ev_cache->variant = 0; - ev_cache->subvariant = i; - ev_cache->open_func = open_simple; - ev_cache->close_func = close_simple; - ev_cache->start_func = start_simple; - ev_cache->stop_func = stop_simple; - ev_cache->access_func = access_amdsmi_cache_stat; - htable_insert(htable, ev_cache->name, ev_cache); - idx++; + (strcmp(type_str, "cache") == 0 ? "cache" + : (strcmp(type_str, "icache") == 0 ? "instruction cache" + : "data cache"))); + if (add_event(&idx, name_buf, descr_buf, d, 0, i, PAPI_MODE_READ, + access_amdsmi_cache_stat) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", level, type_str, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s max CUs sharing", d, level, type_str); - native_event_t *ev_cache_cu = &ntv_table.events[idx]; - ev_cache_cu->id = idx; - ev_cache_cu->name = strdup(name_buf); - ev_cache_cu->descr = strdup(descr_buf); - ev_cache_cu->device = d; - ev_cache_cu->value = 0; - ev_cache_cu->mode = PAPI_MODE_READ; - ev_cache_cu->variant = 1; - ev_cache_cu->subvariant = i; - ev_cache_cu->open_func = open_simple; - ev_cache_cu->close_func = close_simple; - ev_cache_cu->start_func = start_simple; - ev_cache_cu->stop_func = stop_simple; - ev_cache_cu->access_func = access_amdsmi_cache_stat; - htable_insert(htable, ev_cache_cu->name, ev_cache_cu); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, i, PAPI_MODE_READ, + access_amdsmi_cache_stat) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", level, type_str, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", - d, level, type_str); - native_event_t *ev_cache_inst = &ntv_table.events[idx]; - ev_cache_inst->id = idx; - ev_cache_inst->name = strdup(name_buf); - ev_cache_inst->descr = strdup(descr_buf); - ev_cache_inst->device = d; - ev_cache_inst->value = 0; - ev_cache_inst->mode = PAPI_MODE_READ; - ev_cache_inst->variant = 2; - ev_cache_inst->subvariant = i; - ev_cache_inst->open_func = open_simple; - ev_cache_inst->close_func = close_simple; - ev_cache_inst->start_func = start_simple; - ev_cache_inst->stop_func = stop_simple; - ev_cache_inst->access_func = access_amdsmi_cache_stat; - htable_insert(htable, ev_cache_inst->name, ev_cache_inst); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d L%u %s instances", d, level, type_str); + if (add_event(&idx, name_buf, descr_buf, d, 2, i, PAPI_MODE_READ, + access_amdsmi_cache_stat) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -700,83 +419,35 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "vram_bus_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); - native_event_t *ev_vram_width = &ntv_table.events[idx]; - ev_vram_width->id = idx; - ev_vram_width->name = strdup(name_buf); - ev_vram_width->descr = strdup(descr_buf); - ev_vram_width->device = d; - ev_vram_width->value = 0; - ev_vram_width->mode = PAPI_MODE_READ; - ev_vram_width->variant = 0; - ev_vram_width->subvariant = 0; - ev_vram_width->open_func = open_simple; - ev_vram_width->close_func = close_simple; - ev_vram_width->start_func = start_simple; - ev_vram_width->stop_func = stop_simple; - ev_vram_width->access_func = access_amdsmi_vram_width; - htable_insert(htable, ev_vram_width->name, ev_vram_width); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_width) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", - d); - native_event_t *ev_vram_size = &ntv_table.events[idx]; - ev_vram_size->id = idx; - ev_vram_size->name = strdup(name_buf); - ev_vram_size->descr = strdup(descr_buf); - ev_vram_size->device = d; - ev_vram_size->value = 0; - ev_vram_size->mode = PAPI_MODE_READ; - ev_vram_size->variant = 0; - ev_vram_size->subvariant = 0; - ev_vram_size->open_func = open_simple; - ev_vram_size->close_func = close_simple; - ev_vram_size->start_func = start_simple; - ev_vram_size->stop_func = stop_simple; - ev_vram_size->access_func = access_amdsmi_vram_size; - htable_insert(htable, ev_vram_size->name, ev_vram_size); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM size (bytes)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_size) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM type id", d); - native_event_t *ev_vram_type = &ntv_table.events[idx]; - ev_vram_type->id = idx; - ev_vram_type->name = strdup(name_buf); - ev_vram_type->descr = strdup(descr_buf); - ev_vram_type->device = d; - ev_vram_type->value = 0; - ev_vram_type->mode = PAPI_MODE_READ; - ev_vram_type->variant = 0; - ev_vram_type->subvariant = 0; - ev_vram_type->open_func = open_simple; - ev_vram_type->close_func = close_simple; - ev_vram_type->start_func = start_simple; - ev_vram_type->stop_func = stop_simple; - ev_vram_type->access_func = access_amdsmi_vram_type; - htable_insert(htable, ev_vram_type->name, ev_vram_type); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_type) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor id", d); - native_event_t *ev_vram_vendor = &ntv_table.events[idx]; - ev_vram_vendor->id = idx; - ev_vram_vendor->name = strdup(name_buf); - ev_vram_vendor->descr = strdup(descr_buf); - ev_vram_vendor->device = d; - ev_vram_vendor->value = 0; - ev_vram_vendor->mode = PAPI_MODE_READ; - ev_vram_vendor->variant = 0; - ev_vram_vendor->subvariant = 0; - ev_vram_vendor->open_func = open_simple; - ev_vram_vendor->close_func = close_simple; - ev_vram_vendor->start_func = start_simple; - ev_vram_vendor->stop_func = stop_simple; - ev_vram_vendor->access_func = access_amdsmi_vram_vendor; - htable_insert(htable, ev_vram_vendor->name, ev_vram_vendor); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_vendor) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // PCIe information events @@ -788,301 +459,132 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "pcie_max_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); - native_event_t *ev_pw = &ntv_table.events[idx]; - ev_pw->id = idx; - ev_pw->name = strdup(name_buf); - ev_pw->descr = strdup(descr_buf); - ev_pw->device = d; - ev_pw->value = 0; - ev_pw->mode = PAPI_MODE_READ; - ev_pw->variant = 0; - ev_pw->subvariant = 0; - ev_pw->open_func = open_simple; - ev_pw->close_func = close_simple; - ev_pw->start_func = start_simple; - ev_pw->stop_func = stop_simple; - ev_pw->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pw->name, ev_pw); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); - native_event_t *ev_ps = &ntv_table.events[idx]; - ev_ps->id = idx; - ev_ps->name = strdup(name_buf); - ev_ps->descr = strdup(descr_buf); - ev_ps->device = d; - ev_ps->value = 0; - ev_ps->mode = PAPI_MODE_READ; - ev_ps->variant = 1; - ev_ps->subvariant = 0; - ev_ps->open_func = open_simple; - ev_ps->close_func = close_simple; - ev_ps->start_func = start_simple; - ev_ps->stop_func = stop_simple; - ev_ps->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_ps->name, ev_ps); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe interface version", d); - native_event_t *ev_piv = &ntv_table.events[idx]; - ev_piv->id = idx; - ev_piv->name = strdup(name_buf); - ev_piv->descr = strdup(descr_buf); - ev_piv->device = d; - ev_piv->value = 0; - ev_piv->mode = PAPI_MODE_READ; - ev_piv->variant = 2; - ev_piv->subvariant = 0; - ev_piv->open_func = open_simple; - ev_piv->close_func = close_simple; - ev_piv->start_func = start_simple; - ev_piv->stop_func = stop_simple; - ev_piv->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_piv->name, ev_piv); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_slot_type:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe slot type", d); - native_event_t *ev_pst = &ntv_table.events[idx]; - ev_pst->id = idx; - ev_pst->name = strdup(name_buf); - ev_pst->descr = strdup(descr_buf); - ev_pst->device = d; - ev_pst->value = 0; - ev_pst->mode = PAPI_MODE_READ; - ev_pst->variant = 3; - ev_pst->subvariant = 0; - ev_pst->open_func = open_simple; - ev_pst->close_func = close_simple; - ev_pst->start_func = start_simple; - ev_pst->stop_func = stop_simple; - ev_pst->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pst->name, ev_pst); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe slot type", d); + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_interface_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe interface version", d); - native_event_t *ev_pmiv = &ntv_table.events[idx]; - ev_pmiv->id = idx; - ev_pmiv->name = strdup(name_buf); - ev_pmiv->descr = strdup(descr_buf); - ev_pmiv->device = d; - ev_pmiv->value = 0; - ev_pmiv->mode = PAPI_MODE_READ; - ev_pmiv->variant = 4; - ev_pmiv->subvariant = 0; - ev_pmiv->open_func = open_simple; - ev_pmiv->close_func = close_simple; - ev_pmiv->start_func = start_simple; - ev_pmiv->stop_func = stop_simple; - ev_pmiv->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pmiv->name, ev_pmiv); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); - native_event_t *ev_cw = &ntv_table.events[idx]; - ev_cw->id = idx; - ev_cw->name = strdup(name_buf); - ev_cw->descr = strdup(descr_buf); - ev_cw->device = d; - ev_cw->value = 0; - ev_cw->mode = PAPI_MODE_READ; - ev_cw->variant = 5; - ev_cw->subvariant = 0; - ev_cw->open_func = open_simple; - ev_cw->close_func = close_simple; - ev_cw->start_func = start_simple; - ev_cw->stop_func = stop_simple; - ev_cw->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_cw->name, ev_cw); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); - native_event_t *ev_cs = &ntv_table.events[idx]; - ev_cs->id = idx; - ev_cs->name = strdup(name_buf); - ev_cs->descr = strdup(descr_buf); - ev_cs->device = d; - ev_cs->value = 0; - ev_cs->mode = PAPI_MODE_READ; - ev_cs->variant = 6; - ev_cs->subvariant = 0; - ev_cs->open_func = open_simple; - ev_cs->close_func = close_simple; - ev_cs->start_func = start_simple; - ev_cs->stop_func = stop_simple; - ev_cs->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_cs->name, ev_cs); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); - native_event_t *ev_cb = &ntv_table.events[idx]; - ev_cb->id = idx; - ev_cb->name = strdup(name_buf); - ev_cb->descr = strdup(descr_buf); - ev_cb->device = d; - ev_cb->value = 0; - ev_cb->mode = PAPI_MODE_READ; - ev_cb->variant = 7; - ev_cb->subvariant = 0; - ev_cb->open_func = open_simple; - ev_cb->close_func = close_simple; - ev_cb->start_func = start_simple; - ev_cb->stop_func = stop_simple; - ev_cb->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_cb->name, ev_cb); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", - d); - native_event_t *ev_pr = &ntv_table.events[idx]; - ev_pr->id = idx; - ev_pr->name = strdup(name_buf); - ev_pr->descr = strdup(descr_buf); - ev_pr->device = d; - ev_pr->value = 0; - ev_pr->mode = PAPI_MODE_READ; - ev_pr->variant = 8; - ev_pr->subvariant = 0; - ev_pr->open_func = open_simple; - ev_pr->close_func = close_simple; - ev_pr->start_func = start_simple; - ev_pr->stop_func = stop_simple; - ev_pr->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pr->name, ev_pr); - idx++; + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + if (add_event(&idx, name_buf, descr_buf, d, 8, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); - native_event_t *ev_pl0 = &ntv_table.events[idx]; - ev_pl0->id = idx; - ev_pl0->name = strdup(name_buf); - ev_pl0->descr = strdup(descr_buf); - ev_pl0->device = d; - ev_pl0->value = 0; - ev_pl0->mode = PAPI_MODE_READ; - ev_pl0->variant = 9; - ev_pl0->subvariant = 0; - ev_pl0->open_func = open_simple; - ev_pl0->close_func = close_simple; - ev_pl0->start_func = start_simple; - ev_pl0->stop_func = stop_simple; - ev_pl0->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pl0->name, ev_pl0); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 9, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_rollover_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); - native_event_t *ev_prr = &ntv_table.events[idx]; - ev_prr->id = idx; - ev_prr->name = strdup(name_buf); - ev_prr->descr = strdup(descr_buf); - ev_prr->device = d; - ev_prr->value = 0; - ev_prr->mode = PAPI_MODE_READ; - ev_prr->variant = 10; - ev_prr->subvariant = 0; - ev_prr->open_func = open_simple; - ev_prr->close_func = close_simple; - ev_prr->start_func = start_simple; - ev_prr->stop_func = stop_simple; - ev_prr->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_prr->name, ev_prr); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 10, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", - d); - native_event_t *ev_pns = &ntv_table.events[idx]; - ev_pns->id = idx; - ev_pns->name = strdup(name_buf); - ev_pns->descr = strdup(descr_buf); - ev_pns->device = d; - ev_pns->value = 0; - ev_pns->mode = PAPI_MODE_READ; - ev_pns->variant = 11; - ev_pns->subvariant = 0; - ev_pns->open_func = open_simple; - ev_pns->close_func = close_simple; - ev_pns->start_func = start_simple; - ev_pns->stop_func = stop_simple; - ev_pns->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pns->name, ev_pns); - idx++; + snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d PCIe NAK sent count", d); + if (add_event(&idx, name_buf, descr_buf, d, 11, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_received_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); - native_event_t *ev_pnr = &ntv_table.events[idx]; - ev_pnr->id = idx; - ev_pnr->name = strdup(name_buf); - ev_pnr->descr = strdup(descr_buf); - ev_pnr->device = d; - ev_pnr->value = 0; - ev_pnr->mode = PAPI_MODE_READ; - ev_pnr->variant = 12; - ev_pnr->subvariant = 0; - ev_pnr->open_func = open_simple; - ev_pnr->close_func = close_simple; - ev_pnr->start_func = start_simple; - ev_pnr->stop_func = stop_simple; - ev_pnr->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_pnr->name, ev_pnr); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 12, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_other_end_recovery_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe other-end recovery count", d); - native_event_t *ev_poer = &ntv_table.events[idx]; - ev_poer->id = idx; - ev_poer->name = strdup(name_buf); - ev_poer->descr = strdup(descr_buf); - ev_poer->device = d; - ev_poer->value = 0; - ev_poer->mode = PAPI_MODE_READ; - ev_poer->variant = 13; - ev_poer->subvariant = 0; - ev_poer->open_func = open_simple; - ev_poer->close_func = close_simple; - ev_poer->start_func = start_simple; - ev_poer->stop_func = stop_simple; - ev_poer->access_func = access_amdsmi_pcie_info; - htable_insert(htable, ev_poer->name, ev_poer); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 13, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // GPU Overdrive level events @@ -1091,26 +593,13 @@ static int init_event_table(void) { if (amdsmi_get_gpu_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "gpu_overdrive_percent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU core clock overdrive (%%)", d); - native_event_t *ev_od = &ntv_table.events[idx]; - ev_od->id = idx; - ev_od->name = strdup(name_buf); - ev_od->descr = strdup(descr_buf); - ev_od->device = d; - ev_od->value = 0; - ev_od->mode = PAPI_MODE_READ; - ev_od->variant = 0; - ev_od->subvariant = 0; - ev_od->open_func = open_simple; - ev_od->close_func = close_simple; - ev_od->start_func = start_simple; - ev_od->stop_func = stop_simple; - ev_od->access_func = access_amdsmi_overdrive_level; - htable_insert(htable, ev_od->name, ev_od); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_overdrive_level) != PAPI_OK) { + return PAPI_ENOMEM; + } } } if (amdsmi_get_gpu_mem_overdrive_level_p) { @@ -1118,26 +607,14 @@ static int init_event_table(void) { if (amdsmi_get_gpu_mem_overdrive_level_p(device_handles[d], &od_val) == AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "gpu_mem_overdrive_percent:device=%d", d); + snprintf(name_buf, sizeof(name_buf), "gpu_mem_overdrive_percent:device=%d", + d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU memory clock overdrive (%%)", d); - native_event_t *ev_mod = &ntv_table.events[idx]; - ev_mod->id = idx; - ev_mod->name = strdup(name_buf); - ev_mod->descr = strdup(descr_buf); - ev_mod->device = d; - ev_mod->value = 0; - ev_mod->mode = PAPI_MODE_READ; - ev_mod->variant = 0; - ev_mod->subvariant = 0; - ev_mod->open_func = open_simple; - ev_mod->close_func = close_simple; - ev_mod->start_func = start_simple; - ev_mod->stop_func = stop_simple; - ev_mod->access_func = access_amdsmi_mem_overdrive_level; - htable_insert(htable, ev_mod->name, ev_mod); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_mem_overdrive_level) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // GPU performance level event @@ -1149,22 +626,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "perf_level:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current performance level", d); - native_event_t *ev_perf = &ntv_table.events[idx]; - ev_perf->id = idx; - ev_perf->name = strdup(name_buf); - ev_perf->descr = strdup(descr_buf); - ev_perf->device = d; - ev_perf->value = 0; - ev_perf->mode = PAPI_MODE_READ; - ev_perf->variant = 0; - ev_perf->subvariant = 0; - ev_perf->open_func = open_simple; - ev_perf->close_func = close_simple; - ev_perf->start_func = start_simple; - ev_perf->stop_func = stop_simple; - ev_perf->access_func = access_amdsmi_perf_level; - htable_insert(htable, ev_perf->name, ev_perf); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_perf_level) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -1185,49 +650,27 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); - native_event_t *ev_pmcount = &ntv_table.events[idx]; - ev_pmcount->id = idx; - ev_pmcount->name = strdup(name_buf); - ev_pmcount->descr = strdup(descr_buf); - ev_pmcount->device = d; - ev_pmcount->value = 0; - ev_pmcount->mode = PAPI_MODE_READ; - ev_pmcount->variant = 0; - ev_pmcount->subvariant = 0; - ev_pmcount->open_func = open_simple; - ev_pmcount->close_func = close_simple; - ev_pmcount->start_func = start_simple; - ev_pmcount->stop_func = stop_simple; - ev_pmcount->access_func = access_amdsmi_pm_metrics_count; - htable_insert(htable, ev_pmcount->name, ev_pmcount); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pm_metrics_count) != PAPI_OK) { + if (metrics) papi_free(metrics); + return PAPI_ENOMEM; + } for (uint32_t i = 0; i < mcount; ++i) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) - papi_free(metrics); - CHECK_EVENT_IDX(idx); + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (metrics) papi_free(metrics); + CHECK_EVENT_IDX(idx); + } char metric_name[MAX_AMDSMI_NAME_LENGTH]; sanitize_name(metrics[i].name, metric_name, sizeof(metric_name)); - snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, - d); + snprintf(name_buf, sizeof(name_buf), "pm_%s:device=%d", metric_name, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PM metric %s", d, metrics[i].name); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id = idx; - ev_pm->name = strdup(name_buf); - ev_pm->descr = strdup(descr_buf); - ev_pm->device = d; - ev_pm->value = 0; - ev_pm->mode = PAPI_MODE_READ; - ev_pm->variant = i; - ev_pm->subvariant = 0; - ev_pm->open_func = open_simple; - ev_pm->close_func = close_simple; - ev_pm->start_func = start_simple; - ev_pm->stop_func = stop_simple; - ev_pm->access_func = access_amdsmi_pm_metric_value; - htable_insert(htable, ev_pm->name, ev_pm); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, i, 0, PAPI_MODE_READ, + access_amdsmi_pm_metric_value) != PAPI_OK) { + if (metrics) papi_free(metrics); + return PAPI_ENOMEM; + } } } if (metrics) @@ -1239,60 +682,31 @@ static int init_event_table(void) { if (amdsmi_get_gpu_ras_feature_info_p(device_handles[d], &ras) == AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "ecc_correction_mask:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); - native_event_t *ev_ras = &ntv_table.events[idx]; - ev_ras->id = idx; - ev_ras->name = strdup(name_buf); - ev_ras->descr = strdup(descr_buf); - ev_ras->device = d; - ev_ras->value = 0; - ev_ras->mode = PAPI_MODE_READ; - ev_ras->variant = 0; - ev_ras->subvariant = 0; - ev_ras->open_func = open_simple; - ev_ras->close_func = close_simple; - ev_ras->start_func = start_simple; - ev_ras->stop_func = stop_simple; - ev_ras->access_func = access_amdsmi_ras_ecc_schema; - htable_insert(htable, ev_ras->name, ev_ras); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_ras_ecc_schema) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", - d); - native_event_t *ev_ras_ver = &ntv_table.events[idx]; - ev_ras_ver->id = idx; - ev_ras_ver->name = strdup(name_buf); - ev_ras_ver->descr = strdup(descr_buf); - ev_ras_ver->device = d; - ev_ras_ver->value = 0; - ev_ras_ver->mode = PAPI_MODE_READ; - ev_ras_ver->variant = 0; - ev_ras_ver->subvariant = 0; - ev_ras_ver->open_func = open_simple; - ev_ras_ver->close_func = close_simple; - ev_ras_ver->start_func = start_simple; - ev_ras_ver->stop_func = stop_simple; - ev_ras_ver->access_func = access_amdsmi_ras_eeprom_version; - htable_insert(htable, ev_ras_ver->name, ev_ras_ver); - idx++; + snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_ras_eeprom_version) != PAPI_OK) { + return PAPI_ENOMEM; + } } } if (amdsmi_get_gpu_ras_block_features_enabled_p) { amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, - AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, - AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, - AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, AMDSMI_GPU_BLOCK_MPIO}; const char *block_names[] = { "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", @@ -1308,22 +722,10 @@ static int init_event_table(void) { block_names[bi], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS state for %s block", d, block_names[bi]); - native_event_t *ev_blk = &ntv_table.events[idx]; - ev_blk->id = idx; - ev_blk->name = strdup(name_buf); - ev_blk->descr = strdup(descr_buf); - ev_blk->device = d; - ev_blk->value = 0; - ev_blk->mode = PAPI_MODE_READ; - ev_blk->variant = (uint32_t)blocks[bi]; - ev_blk->subvariant = 0; - ev_blk->open_func = open_simple; - ev_blk->close_func = close_simple; - ev_blk->start_func = start_simple; - ev_blk->stop_func = stop_simple; - ev_blk->access_func = access_amdsmi_ras_block_state; - htable_insert(htable, ev_blk->name, ev_blk); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)blocks[bi], 0, + PAPI_MODE_READ, access_amdsmi_ras_block_state) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -1365,22 +767,10 @@ static int init_event_table(void) { metric_names[m], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s voltage (mV)", d, sname, metric_names[m]); - native_event_t *ev_volt = &ntv_table.events[idx]; - ev_volt->id = idx; - ev_volt->name = strdup(name_buf); - ev_volt->descr = strdup(descr_buf); - ev_volt->device = d; - ev_volt->value = 0; - ev_volt->mode = PAPI_MODE_READ; - ev_volt->variant = metrics[m]; - ev_volt->subvariant = s; - ev_volt->open_func = open_simple; - ev_volt->close_func = close_simple; - ev_volt->start_func = start_simple; - ev_volt->stop_func = stop_simple; - ev_volt->access_func = access_amdsmi_voltage; - htable_insert(htable, ev_volt->name, ev_volt); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, metrics[m], s, PAPI_MODE_READ, + access_amdsmi_voltage) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -1395,7 +785,7 @@ static int init_event_table(void) { num_regions, sizeof(amdsmi_freq_volt_region_t)); if (regs) { st = amdsmi_get_gpu_od_volt_curve_regions_p(device_handles[d], - &num_regions, regs); + &num_regions, regs); if (st == AMDSMI_STATUS_SUCCESS) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) papi_free(regs); @@ -1404,22 +794,11 @@ static int init_event_table(void) { d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of voltage curve regions", d); - native_event_t *ev_vcr = &ntv_table.events[idx]; - ev_vcr->id = idx; - ev_vcr->name = strdup(name_buf); - ev_vcr->descr = strdup(descr_buf); - ev_vcr->device = d; - ev_vcr->value = 0; - ev_vcr->mode = PAPI_MODE_READ; - ev_vcr->variant = 0; - ev_vcr->subvariant = 0; - ev_vcr->open_func = open_simple; - ev_vcr->close_func = close_simple; - ev_vcr->start_func = start_simple; - ev_vcr->stop_func = stop_simple; - ev_vcr->access_func = access_amdsmi_od_volt_regions_count; - htable_insert(htable, ev_vcr->name, ev_vcr); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_regions_count) != PAPI_OK) { + papi_free(regs); + return PAPI_ENOMEM; + } for (uint32_t r = 0; r < num_regions; ++r) { if (idx + 4 > MAX_EVENTS_PER_DEVICE * device_count) @@ -1428,93 +807,47 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_min:device=%d:region=%u", d, r); - snprintf( - descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u frequency lower bound", d, - r); - native_event_t *ev_fmin = &ntv_table.events[idx]; - ev_fmin->id = idx; - ev_fmin->name = strdup(name_buf); - ev_fmin->descr = strdup(descr_buf); - ev_fmin->device = d; - ev_fmin->value = 0; - ev_fmin->mode = PAPI_MODE_READ; - ev_fmin->variant = 0; /* freq lower */ - ev_fmin->subvariant = r; - ev_fmin->open_func = open_simple; - ev_fmin->close_func = close_simple; - ev_fmin->start_func = start_simple; - ev_fmin->stop_func = stop_simple; - ev_fmin->access_func = access_amdsmi_od_volt_curve_range; - htable_insert(htable, ev_fmin->name, ev_fmin); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency lower bound", + d, r); + if (add_event(&idx, name_buf, descr_buf, d, 0, r, PAPI_MODE_READ, + access_amdsmi_od_volt_curve_range) != PAPI_OK) { + papi_free(regs); + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "volt_curve_freq_max:device=%d:region=%u", d, r); - snprintf( - descr_buf, sizeof(descr_buf), - "Device %d voltage curve region %u frequency upper bound", d, - r); - native_event_t *ev_fmax = &ntv_table.events[idx]; - ev_fmax->id = idx; - ev_fmax->name = strdup(name_buf); - ev_fmax->descr = strdup(descr_buf); - ev_fmax->device = d; - ev_fmax->value = 0; - ev_fmax->mode = PAPI_MODE_READ; - ev_fmax->variant = 1; /* freq upper */ - ev_fmax->subvariant = r; - ev_fmax->open_func = open_simple; - ev_fmax->close_func = close_simple; - ev_fmax->start_func = start_simple; - ev_fmax->stop_func = stop_simple; - ev_fmax->access_func = access_amdsmi_od_volt_curve_range; - htable_insert(htable, ev_fmax->name, ev_fmax); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d voltage curve region %u frequency upper bound", + d, r); + if (add_event(&idx, name_buf, descr_buf, d, 1, r, PAPI_MODE_READ, + access_amdsmi_od_volt_curve_range) != PAPI_OK) { + papi_free(regs); + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_min:device=%d:region=%u", d, r); snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage lower bound", d, r); - native_event_t *ev_vmin = &ntv_table.events[idx]; - ev_vmin->id = idx; - ev_vmin->name = strdup(name_buf); - ev_vmin->descr = strdup(descr_buf); - ev_vmin->device = d; - ev_vmin->value = 0; - ev_vmin->mode = PAPI_MODE_READ; - ev_vmin->variant = 2; /* volt lower */ - ev_vmin->subvariant = r; - ev_vmin->open_func = open_simple; - ev_vmin->close_func = close_simple; - ev_vmin->start_func = start_simple; - ev_vmin->stop_func = stop_simple; - ev_vmin->access_func = access_amdsmi_od_volt_curve_range; - htable_insert(htable, ev_vmin->name, ev_vmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, r, PAPI_MODE_READ, + access_amdsmi_od_volt_curve_range) != PAPI_OK) { + papi_free(regs); + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "volt_curve_volt_max:device=%d:region=%u", d, r); snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve region %u voltage upper bound", d, r); - native_event_t *ev_vmax = &ntv_table.events[idx]; - ev_vmax->id = idx; - ev_vmax->name = strdup(name_buf); - ev_vmax->descr = strdup(descr_buf); - ev_vmax->device = d; - ev_vmax->value = 0; - ev_vmax->mode = PAPI_MODE_READ; - ev_vmax->variant = 3; /* volt upper */ - ev_vmax->subvariant = r; - ev_vmax->open_func = open_simple; - ev_vmax->close_func = close_simple; - ev_vmax->start_func = start_simple; - ev_vmax->stop_func = stop_simple; - ev_vmax->access_func = access_amdsmi_od_volt_curve_range; - htable_insert(htable, ev_vmax->name, ev_vmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 3, r, PAPI_MODE_READ, + access_amdsmi_od_volt_curve_range) != PAPI_OK) { + papi_free(regs); + return PAPI_ENOMEM; + } } } papi_free(regs); @@ -1532,162 +865,66 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency lower bound", d); - native_event_t *ev_csmin = &ntv_table.events[idx]; - ev_csmin->id = idx; - ev_csmin->name = strdup(name_buf); - ev_csmin->descr = strdup(descr_buf); - ev_csmin->device = d; - ev_csmin->value = 0; - ev_csmin->mode = PAPI_MODE_READ; - ev_csmin->variant = 0; - ev_csmin->subvariant = 0; - ev_csmin->open_func = open_simple; - ev_csmin->close_func = close_simple; - ev_csmin->start_func = start_simple; - ev_csmin->stop_func = stop_simple; - ev_csmin->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_csmin->name, ev_csmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency upper bound", d); - native_event_t *ev_csmax = &ntv_table.events[idx]; - ev_csmax->id = idx; - ev_csmax->name = strdup(name_buf); - ev_csmax->descr = strdup(descr_buf); - ev_csmax->device = d; - ev_csmax->value = 0; - ev_csmax->mode = PAPI_MODE_READ; - ev_csmax->variant = 1; - ev_csmax->subvariant = 0; - ev_csmax->open_func = open_simple; - ev_csmax->close_func = close_simple; - ev_csmax->start_func = start_simple; - ev_csmax->stop_func = stop_simple; - ev_csmax->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_csmax->name, ev_csmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency lower bound", d); - native_event_t *ev_cmmin = &ntv_table.events[idx]; - ev_cmmin->id = idx; - ev_cmmin->name = strdup(name_buf); - ev_cmmin->descr = strdup(descr_buf); - ev_cmmin->device = d; - ev_cmmin->value = 0; - ev_cmmin->mode = PAPI_MODE_READ; - ev_cmmin->variant = 2; - ev_cmmin->subvariant = 0; - ev_cmmin->open_func = open_simple; - ev_cmmin->close_func = close_simple; - ev_cmmin->start_func = start_simple; - ev_cmmin->stop_func = stop_simple; - ev_cmmin->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_cmmin->name, ev_cmmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency upper bound", d); - native_event_t *ev_cmmax = &ntv_table.events[idx]; - ev_cmmax->id = idx; - ev_cmmax->name = strdup(name_buf); - ev_cmmax->descr = strdup(descr_buf); - ev_cmmax->device = d; - ev_cmmax->value = 0; - ev_cmmax->mode = PAPI_MODE_READ; - ev_cmmax->variant = 3; - ev_cmmax->subvariant = 0; - ev_cmmax->open_func = open_simple; - ev_cmmax->close_func = close_simple; - ev_cmmax->start_func = start_simple; - ev_cmmax->stop_func = stop_simple; - ev_cmmax->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_cmmax->name, ev_cmmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit lower bound", d); - native_event_t *ev_slmin = &ntv_table.events[idx]; - ev_slmin->id = idx; - ev_slmin->name = strdup(name_buf); - ev_slmin->descr = strdup(descr_buf); - ev_slmin->device = d; - ev_slmin->value = 0; - ev_slmin->mode = PAPI_MODE_READ; - ev_slmin->variant = 4; - ev_slmin->subvariant = 0; - ev_slmin->open_func = open_simple; - ev_slmin->close_func = close_simple; - ev_slmin->start_func = start_simple; - ev_slmin->stop_func = stop_simple; - ev_slmin->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_slmin->name, ev_slmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit upper bound", d); - native_event_t *ev_slmax = &ntv_table.events[idx]; - ev_slmax->id = idx; - ev_slmax->name = strdup(name_buf); - ev_slmax->descr = strdup(descr_buf); - ev_slmax->device = d; - ev_slmax->value = 0; - ev_slmax->mode = PAPI_MODE_READ; - ev_slmax->variant = 5; - ev_slmax->subvariant = 0; - ev_slmax->open_func = open_simple; - ev_slmax->close_func = close_simple; - ev_slmax->start_func = start_simple; - ev_slmax->stop_func = stop_simple; - ev_slmax->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_slmax->name, ev_slmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit lower bound", d); - native_event_t *ev_mlmin = &ntv_table.events[idx]; - ev_mlmin->id = idx; - ev_mlmin->name = strdup(name_buf); - ev_mlmin->descr = strdup(descr_buf); - ev_mlmin->device = d; - ev_mlmin->value = 0; - ev_mlmin->mode = PAPI_MODE_READ; - ev_mlmin->variant = 6; - ev_mlmin->subvariant = 0; - ev_mlmin->open_func = open_simple; - ev_mlmin->close_func = close_simple; - ev_mlmin->start_func = start_simple; - ev_mlmin->stop_func = stop_simple; - ev_mlmin->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_mlmin->name, ev_mlmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit upper bound", d); - native_event_t *ev_mlmax = &ntv_table.events[idx]; - ev_mlmax->id = idx; - ev_mlmax->name = strdup(name_buf); - ev_mlmax->descr = strdup(descr_buf); - ev_mlmax->device = d; - ev_mlmax->value = 0; - ev_mlmax->mode = PAPI_MODE_READ; - ev_mlmax->variant = 7; - ev_mlmax->subvariant = 0; - ev_mlmax->open_func = open_simple; - ev_mlmax->close_func = close_simple; - ev_mlmax->start_func = start_simple; - ev_mlmax->stop_func = stop_simple; - ev_mlmax->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_mlmax->name, ev_mlmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } for (uint32_t p = 0; p < AMDSMI_NUM_VOLTAGE_CURVE_POINTS; ++p) { CHECK_EVENT_IDX(idx + 2); @@ -1695,43 +932,19 @@ static int init_event_table(void) { "volt_curve_point_freq:device=%d:point=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u frequency", d, p); - native_event_t *ev_pf = &ntv_table.events[idx]; - ev_pf->id = idx; - ev_pf->name = strdup(name_buf); - ev_pf->descr = strdup(descr_buf); - ev_pf->device = d; - ev_pf->value = 0; - ev_pf->mode = PAPI_MODE_READ; - ev_pf->variant = 8; - ev_pf->subvariant = p; - ev_pf->open_func = open_simple; - ev_pf->close_func = close_simple; - ev_pf->start_func = start_simple; - ev_pf->stop_func = stop_simple; - ev_pf->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_pf->name, ev_pf); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 8, p, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "volt_curve_point_volt:device=%d:point=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u voltage", d, p); - native_event_t *ev_pv = &ntv_table.events[idx]; - ev_pv->id = idx; - ev_pv->name = strdup(name_buf); - ev_pv->descr = strdup(descr_buf); - ev_pv->device = d; - ev_pv->value = 0; - ev_pv->mode = PAPI_MODE_READ; - ev_pv->variant = 9; - ev_pv->subvariant = p; - ev_pv->open_func = open_simple; - ev_pv->close_func = close_simple; - ev_pv->start_func = start_simple; - ev_pv->stop_func = stop_simple; - ev_pv->access_func = access_amdsmi_od_volt_info; - htable_insert(htable, ev_pv->name, ev_pv); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 9, p, PAPI_MODE_READ, + access_amdsmi_od_volt_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -1745,43 +958,18 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "soc_pstate_policy:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SoC P-state policy id", d); - native_event_t *ev_soc = &ntv_table.events[idx]; - ev_soc->id = idx; - ev_soc->name = strdup(name_buf); - ev_soc->descr = strdup(descr_buf); - ev_soc->device = d; - ev_soc->value = 0; - ev_soc->mode = PAPI_MODE_READ; - ev_soc->variant = 0; - ev_soc->subvariant = 0; - ev_soc->open_func = open_simple; - ev_soc->close_func = close_simple; - ev_soc->start_func = start_simple; - ev_soc->stop_func = stop_simple; - ev_soc->access_func = access_amdsmi_soc_pstate_id; - htable_insert(htable, ev_soc->name, ev_soc); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_soc_pstate_id) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d supported SoC P-state count", d); - native_event_t *ev_soc_sup = &ntv_table.events[idx]; - ev_soc_sup->id = idx; - ev_soc_sup->name = strdup(name_buf); - ev_soc_sup->descr = strdup(descr_buf); - ev_soc_sup->device = d; - ev_soc_sup->value = 0; - ev_soc_sup->mode = PAPI_MODE_READ; - ev_soc_sup->variant = 0; - ev_soc_sup->subvariant = 0; - ev_soc_sup->open_func = open_simple; - ev_soc_sup->close_func = close_simple; - ev_soc_sup->start_func = start_simple; - ev_soc_sup->stop_func = stop_simple; - ev_soc_sup->access_func = access_amdsmi_soc_pstate_supported; - htable_insert(htable, ev_soc_sup->name, ev_soc_sup); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_soc_pstate_supported) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // GPU XGMI PLPD policy events @@ -1794,43 +982,18 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "xgmi_plpd:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current XGMI PLPD policy id", d); - native_event_t *ev_xplpd = &ntv_table.events[idx]; - ev_xplpd->id = idx; - ev_xplpd->name = strdup(name_buf); - ev_xplpd->descr = strdup(descr_buf); - ev_xplpd->device = d; - ev_xplpd->value = 0; - ev_xplpd->mode = PAPI_MODE_READ; - ev_xplpd->variant = 0; - ev_xplpd->subvariant = 0; - ev_xplpd->open_func = open_simple; - ev_xplpd->close_func = close_simple; - ev_xplpd->start_func = start_simple; - ev_xplpd->stop_func = stop_simple; - ev_xplpd->access_func = access_amdsmi_xgmi_plpd_id; - htable_insert(htable, ev_xplpd->name, ev_xplpd); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_xgmi_plpd_id) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d supported XGMI PLPD policy count", d); - native_event_t *ev_xplpd_sup = &ntv_table.events[idx]; - ev_xplpd_sup->id = idx; - ev_xplpd_sup->name = strdup(name_buf); - ev_xplpd_sup->descr = strdup(descr_buf); - ev_xplpd_sup->device = d; - ev_xplpd_sup->value = 0; - ev_xplpd_sup->mode = PAPI_MODE_READ; - ev_xplpd_sup->variant = 0; - ev_xplpd_sup->subvariant = 0; - ev_xplpd_sup->open_func = open_simple; - ev_xplpd_sup->close_func = close_simple; - ev_xplpd_sup->start_func = start_simple; - ev_xplpd_sup->stop_func = stop_simple; - ev_xplpd_sup->access_func = access_amdsmi_xgmi_plpd_supported; - htable_insert(htable, ev_xplpd_sup->name, ev_xplpd_sup); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_xgmi_plpd_supported) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // GPU register table metrics count events @@ -1858,22 +1021,11 @@ static int init_event_table(void) { reg_names[rt], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of %s register metrics", d, reg_names[rt]); - native_event_t *ev_reg = &ntv_table.events[idx]; - ev_reg->id = idx; - ev_reg->name = strdup(name_buf); - ev_reg->descr = strdup(descr_buf); - ev_reg->device = d; - ev_reg->value = 0; - ev_reg->mode = PAPI_MODE_READ; - ev_reg->variant = (uint32_t)reg_types[rt]; - ev_reg->subvariant = 0; - ev_reg->open_func = open_simple; - ev_reg->close_func = close_simple; - ev_reg->start_func = start_simple; - ev_reg->stop_func = stop_simple; - ev_reg->access_func = access_amdsmi_reg_count; - htable_insert(htable, ev_reg->name, ev_reg); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)reg_types[rt], 0, + PAPI_MODE_READ, access_amdsmi_reg_count) != PAPI_OK) { + if (reg_metrics) papi_free(reg_metrics); + return PAPI_ENOMEM; + } for (uint32_t i = 0; i < num_metrics; ++i) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { @@ -1888,22 +1040,11 @@ static int init_event_table(void) { reg_names[rt], reg_metric_name, d); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s register %s", d, reg_names[rt], reg_metrics[i].name); - native_event_t *ev_reg_val = &ntv_table.events[idx]; - ev_reg_val->id = idx; - ev_reg_val->name = strdup(name_buf); - ev_reg_val->descr = strdup(descr_buf); - ev_reg_val->device = d; - ev_reg_val->value = 0; - ev_reg_val->mode = PAPI_MODE_READ; - ev_reg_val->variant = (uint32_t)reg_types[rt]; - ev_reg_val->subvariant = i; - ev_reg_val->open_func = open_simple; - ev_reg_val->close_func = close_simple; - ev_reg_val->start_func = start_simple; - ev_reg_val->stop_func = stop_simple; - ev_reg_val->access_func = access_amdsmi_reg_value; - htable_insert(htable, ev_reg_val->name, ev_reg_val); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)reg_types[rt], + i, PAPI_MODE_READ, access_amdsmi_reg_value) != PAPI_OK) { + if (reg_metrics) papi_free(reg_metrics); + return PAPI_ENOMEM; + } } } if (reg_metrics) @@ -1920,8 +1061,7 @@ static int init_event_table(void) { &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { continue; // Skip this specific sensor if it doesn't work } - // Register metrics for this working sensor, testing each metric - // individually + // Register metrics for this working sensor, testing each metric individually for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow @@ -1939,25 +1079,11 @@ static int init_event_table(void) { temp_metric_names[mi], d, (int)temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, temp_metric_names[mi], (int)temp_sensors[si]); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) { + if (add_event(&idx, name_buf, descr_buf, d, temp_metrics[mi], + temp_sensors[si], PAPI_MODE_READ, + access_amdsmi_temp_metric) != PAPI_OK) { return PAPI_ENOMEM; } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = temp_metrics[mi]; - ev->subvariant = temp_sensors[si]; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_temp_metric; - htable_insert(htable, ev->name, ev); - idx++; } } } @@ -1977,25 +1103,10 @@ static int init_event_table(void) { } snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); - native_event_t *ev_rpm = &ntv_table.events[idx]; - ev_rpm->id = idx; - ev_rpm->name = strdup(name_buf); - ev_rpm->descr = strdup(descr_buf); - if (!ev_rpm->name || !ev_rpm->descr) { + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_fan_rpms) != PAPI_OK) { return PAPI_ENOMEM; } - ev_rpm->device = d; - ev_rpm->value = 0; - ev_rpm->mode = PAPI_MODE_READ; - ev_rpm->variant = 0; - ev_rpm->subvariant = 0; - ev_rpm->open_func = open_simple; - ev_rpm->close_func = close_simple; - ev_rpm->start_func = start_simple; - ev_rpm->stop_func = stop_simple; - ev_rpm->access_func = access_amdsmi_fan_rpms; - htable_insert(htable, ev_rpm->name, ev_rpm); - idx++; } /* Register Fan SPEED if available */ int64_t dummy_speed; @@ -2008,25 +1119,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); - native_event_t *ev_fan = &ntv_table.events[idx]; - ev_fan->id = idx; - ev_fan->name = strdup(name_buf); - ev_fan->descr = strdup(descr_buf); - if (!ev_fan->name || !ev_fan->descr) { + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_fan_speed) != PAPI_OK) { return PAPI_ENOMEM; } - ev_fan->device = d; - ev_fan->value = 0; - ev_fan->mode = PAPI_MODE_READ; - ev_fan->variant = 0; - ev_fan->subvariant = 0; - ev_fan->open_func = open_simple; - ev_fan->close_func = close_simple; - ev_fan->start_func = start_simple; - ev_fan->stop_func = stop_simple; - ev_fan->access_func = access_amdsmi_fan_speed; - htable_insert(htable, ev_fan->name, ev_fan); - idx++; } /* Register Fan Max Speed - always probe directly */ int64_t dummy_max; @@ -2036,29 +1132,13 @@ static int init_event_table(void) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } - snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", - d); + snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); - native_event_t *ev_fanmax = &ntv_table.events[idx]; - ev_fanmax->id = idx; - ev_fanmax->name = strdup(name_buf); - ev_fanmax->descr = strdup(descr_buf); - if (!ev_fanmax->name || !ev_fanmax->descr) { + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_fan_speed_max) != PAPI_OK) { return PAPI_ENOMEM; } - ev_fanmax->device = d; - ev_fanmax->value = 0; - ev_fanmax->mode = PAPI_MODE_READ; - ev_fanmax->variant = 0; - ev_fanmax->subvariant = 0; - ev_fanmax->open_func = open_simple; - ev_fanmax->close_func = close_simple; - ev_fanmax->start_func = start_simple; - ev_fanmax->stop_func = stop_simple; - ev_fanmax->access_func = access_amdsmi_fan_speed_max; - htable_insert(htable, ev_fanmax->name, ev_fanmax); - idx++; } } /* VRAM memory metrics - test each device individually */ @@ -2078,25 +1158,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) { + if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_MEM_TYPE_VRAM, 0, + PAPI_MODE_READ, access_amdsmi_mem_total) != PAPI_OK) { return PAPI_ENOMEM; } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_mem_total; - htable_insert(htable, ev->name, ev); - ++idx; } /* used VRAM bytes - test directly */ uint64_t dummy_usage; @@ -2109,25 +1174,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) { + if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_MEM_TYPE_VRAM, 0, + PAPI_MODE_READ, access_amdsmi_mem_usage) != PAPI_OK) { return PAPI_ENOMEM; } - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = AMDSMI_MEM_TYPE_VRAM; - ev->subvariant = 0; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_mem_usage; - htable_insert(htable, ev->name, ev); - ++idx; } if (amdsmi_get_gpu_vram_usage_p) { amdsmi_vram_usage_t vu; @@ -2138,43 +1188,19 @@ static int init_event_table(void) { } snprintf(name_buf, sizeof(name_buf), "vram_total_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM (MB)", d); - native_event_t *ev_tot = &ntv_table.events[idx]; - ev_tot->id = idx; - ev_tot->name = strdup(name_buf); - ev_tot->descr = strdup(descr_buf); - ev_tot->device = d; - ev_tot->value = 0; - ev_tot->mode = PAPI_MODE_READ; - ev_tot->variant = 0; - ev_tot->subvariant = 0; - ev_tot->open_func = open_simple; - ev_tot->close_func = close_simple; - ev_tot->start_func = start_simple; - ev_tot->stop_func = stop_simple; - ev_tot->access_func = access_amdsmi_vram_usage; - htable_insert(htable, ev_tot->name, ev_tot); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_usage) != PAPI_OK) { + return PAPI_ENOMEM; + } if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; } snprintf(name_buf, sizeof(name_buf), "vram_used_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d used VRAM (MB)", d); - native_event_t *ev_use = &ntv_table.events[idx]; - ev_use->id = idx; - ev_use->name = strdup(name_buf); - ev_use->descr = strdup(descr_buf); - ev_use->device = d; - ev_use->value = 0; - ev_use->mode = PAPI_MODE_READ; - ev_use->variant = 1; - ev_use->subvariant = 0; - ev_use->open_func = open_simple; - ev_use->close_func = close_simple; - ev_use->start_func = start_simple; - ev_use->stop_func = stop_simple; - ev_use->access_func = access_amdsmi_vram_usage; - htable_insert(htable, ev_use->name, ev_use); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_vram_usage) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -2189,133 +1215,65 @@ static int init_event_table(void) { if (amdsmi_get_power_info_p && amdsmi_get_power_info_p(device_handles[d], &dummy_power) == AMDSMI_STATUS_SUCCESS) { - // Average power consumption (in Watts or microWatts) + // Average power consumption (W) snprintf(name_buf, sizeof(name_buf), "power_average:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); - native_event_t *ev_pwr_avg = &ntv_table.events[idx]; - ev_pwr_avg->id = idx; - ev_pwr_avg->name = strdup(name_buf); - ev_pwr_avg->descr = strdup(descr_buf); - ev_pwr_avg->device = d; - ev_pwr_avg->value = 0; - ev_pwr_avg->mode = PAPI_MODE_READ; - ev_pwr_avg->variant = 0; - ev_pwr_avg->subvariant = 0; - ev_pwr_avg->open_func = open_simple; - ev_pwr_avg->close_func = close_simple; - ev_pwr_avg->start_func = start_simple; - ev_pwr_avg->stop_func = stop_simple; - ev_pwr_avg->access_func = access_amdsmi_power_average; - htable_insert(htable, ev_pwr_avg->name, ev_pwr_avg); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_power_average) != PAPI_OK) { + return PAPI_ENOMEM; + } } - // Register power cap events (if power cap functions are available) - test - // directly + // Register power cap events (if available) - test directly amdsmi_power_cap_info_t dummy_cap_info; if (amdsmi_get_power_cap_info_p && amdsmi_get_power_cap_info_p(device_handles[d], 0, &dummy_cap_info) == AMDSMI_STATUS_SUCCESS) { // Current power cap limit snprintf(name_buf, sizeof(name_buf), "power_cap:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d current power cap (W)", - d); - native_event_t *ev_pcap = &ntv_table.events[idx]; - ev_pcap->id = idx; - ev_pcap->name = strdup(name_buf); - ev_pcap->descr = strdup(descr_buf); - ev_pcap->device = d; - ev_pcap->value = 0; - ev_pcap->mode = PAPI_MODE_READ | PAPI_MODE_WRITE; - ev_pcap->variant = 0; - ev_pcap->subvariant = 0; - ev_pcap->open_func = open_simple; - ev_pcap->close_func = close_simple; - ev_pcap->start_func = start_simple; - ev_pcap->stop_func = stop_simple; - ev_pcap->access_func = access_amdsmi_power_cap; - htable_insert(htable, ev_pcap->name, ev_pcap); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current power cap (W)", d); + if (add_event(&idx, name_buf, descr_buf, d, + 0, 0, PAPI_MODE_READ | PAPI_MODE_WRITE, + access_amdsmi_power_cap) != PAPI_OK) { + return PAPI_ENOMEM; + } // Minimum allowed power cap + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); - native_event_t *ev_pcap_min = &ntv_table.events[idx]; - ev_pcap_min->id = idx; - ev_pcap_min->name = strdup(name_buf); - ev_pcap_min->descr = strdup(descr_buf); - ev_pcap_min->device = d; - ev_pcap_min->value = 0; - ev_pcap_min->mode = PAPI_MODE_READ; - ev_pcap_min->variant = 1; // variant 1 => min - ev_pcap_min->subvariant = 0; - ev_pcap_min->open_func = open_simple; - ev_pcap_min->close_func = close_simple; - ev_pcap_min->start_func = start_simple; - ev_pcap_min->stop_func = stop_simple; - ev_pcap_min->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_min->name, ev_pcap_min); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_power_cap_range) != PAPI_OK) { + return PAPI_ENOMEM; + } // Maximum allowed power cap + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); - native_event_t *ev_pcap_max = &ntv_table.events[idx]; - ev_pcap_max->id = idx; - ev_pcap_max->name = strdup(name_buf); - ev_pcap_max->descr = strdup(descr_buf); - ev_pcap_max->device = d; - ev_pcap_max->value = 0; - ev_pcap_max->mode = PAPI_MODE_READ; - ev_pcap_max->variant = 2; // variant 2 => max - ev_pcap_max->subvariant = 0; - ev_pcap_max->open_func = open_simple; - ev_pcap_max->close_func = close_simple; - ev_pcap_max->start_func = start_simple; - ev_pcap_max->stop_func = stop_simple; - ev_pcap_max->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_max->name, ev_pcap_max); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_power_cap_range) != PAPI_OK) { + return PAPI_ENOMEM; + } // Default power cap + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_default:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d default power cap (W)", - d); - native_event_t *ev_pcap_def = &ntv_table.events[idx]; - ev_pcap_def->id = idx; - ev_pcap_def->name = strdup(name_buf); - ev_pcap_def->descr = strdup(descr_buf); - ev_pcap_def->device = d; - ev_pcap_def->value = 0; - ev_pcap_def->mode = PAPI_MODE_READ; - ev_pcap_def->variant = 3; // variant 3 => default - ev_pcap_def->subvariant = 0; - ev_pcap_def->open_func = open_simple; - ev_pcap_def->close_func = close_simple; - ev_pcap_def->start_func = start_simple; - ev_pcap_def->stop_func = stop_simple; - ev_pcap_def->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_def->name, ev_pcap_def); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d default power cap (W)", d); + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_power_cap_range) != PAPI_OK) { + return PAPI_ENOMEM; + } // DPM power cap + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_dpm:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d DPM power cap (MHz)", - d); - native_event_t *ev_pcap_dpm = &ntv_table.events[idx]; - ev_pcap_dpm->id = idx; - ev_pcap_dpm->name = strdup(name_buf); - ev_pcap_dpm->descr = strdup(descr_buf); - ev_pcap_dpm->device = d; - ev_pcap_dpm->value = 0; - ev_pcap_dpm->mode = PAPI_MODE_READ; - ev_pcap_dpm->variant = 4; // variant 4 => dpm - ev_pcap_dpm->subvariant = 0; - ev_pcap_dpm->open_func = open_simple; - ev_pcap_dpm->close_func = close_simple; - ev_pcap_dpm->start_func = start_simple; - ev_pcap_dpm->stop_func = stop_simple; - ev_pcap_dpm->access_func = access_amdsmi_power_cap_range; - htable_insert(htable, ev_pcap_dpm->name, ev_pcap_dpm); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d DPM power cap (MHz)", d); + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_power_cap_range) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* PCIe throughput and replay counter metrics */ @@ -2329,64 +1287,27 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "pci_throughput_sent:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); - native_event_t *ev_tx = &ntv_table.events[idx]; - ev_tx->id = idx; - ev_tx->name = strdup(name_buf); - ev_tx->descr = strdup(descr_buf); - ev_tx->device = d; - ev_tx->value = 0; - ev_tx->mode = PAPI_MODE_READ; - ev_tx->variant = 0; /* sent */ - ev_tx->subvariant = 0; - ev_tx->open_func = open_simple; - ev_tx->close_func = close_simple; - ev_tx->start_func = start_simple; - ev_tx->stop_func = stop_simple; - ev_tx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_tx->name, ev_tx); - ++idx; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pci_throughput) != PAPI_OK) { + return PAPI_ENOMEM; + } /* bytes received per second */ - snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); - native_event_t *ev_rx = &ntv_table.events[idx]; - ev_rx->id = idx; - ev_rx->name = strdup(name_buf); - ev_rx->descr = strdup(descr_buf); - ev_rx->device = d; - ev_rx->value = 0; - ev_rx->mode = PAPI_MODE_READ; - ev_rx->variant = 1; /* received */ - ev_rx->subvariant = 0; - ev_rx->open_func = open_simple; - ev_rx->close_func = close_simple; - ev_rx->start_func = start_simple; - ev_rx->stop_func = stop_simple; - ev_rx->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_rx->name, ev_rx); - ++idx; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_pci_throughput) != PAPI_OK) { + return PAPI_ENOMEM; + } /* max packet size */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); - native_event_t *ev_pkt = &ntv_table.events[idx]; - ev_pkt->id = idx; - ev_pkt->name = strdup(name_buf); - ev_pkt->descr = strdup(descr_buf); - ev_pkt->device = d; - ev_pkt->value = 0; - ev_pkt->mode = PAPI_MODE_READ; - ev_pkt->variant = 2; /* max pkt */ - ev_pkt->subvariant = 0; - ev_pkt->open_func = open_simple; - ev_pkt->close_func = close_simple; - ev_pkt->start_func = start_simple; - ev_pkt->stop_func = stop_simple; - ev_pkt->access_func = access_amdsmi_pci_throughput; - htable_insert(htable, ev_pkt->name, ev_pkt); - ++idx; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_pci_throughput) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint64_t replay = 0; if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == @@ -2394,22 +1315,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "pci_replay_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); - native_event_t *ev_rep = &ntv_table.events[idx]; - ev_rep->id = idx; - ev_rep->name = strdup(name_buf); - ev_rep->descr = strdup(descr_buf); - ev_rep->device = d; - ev_rep->value = 0; - ev_rep->mode = PAPI_MODE_READ; - ev_rep->variant = 0; - ev_rep->subvariant = 0; - ev_rep->open_func = open_simple; - ev_rep->close_func = close_simple; - ev_rep->start_func = start_simple; - ev_rep->stop_func = stop_simple; - ev_rep->access_func = access_amdsmi_pci_replay_counter; - htable_insert(htable, ev_rep->name, ev_rep); - ++idx; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pci_replay_counter) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* Additional GPU metrics and system information */ @@ -2427,60 +1336,24 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "gfx_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); - native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; - ev_gfx->name = strdup(name_buf); - ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; - ev_gfx->value = 0; - ev_gfx->mode = PAPI_MODE_READ; - ev_gfx->variant = 0; - ev_gfx->subvariant = 0; - ev_gfx->open_func = open_simple; - ev_gfx->close_func = close_simple; - ev_gfx->start_func = start_simple; - ev_gfx->stop_func = stop_simple; - ev_gfx->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_gfx->name, ev_gfx); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_gpu_activity) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); - native_event_t *ev_umc = &ntv_table.events[idx]; - ev_umc->id = idx; - ev_umc->name = strdup(name_buf); - ev_umc->descr = strdup(descr_buf); - ev_umc->device = d; - ev_umc->value = 0; - ev_umc->mode = PAPI_MODE_READ; - ev_umc->variant = 1; - ev_umc->subvariant = 0; - ev_umc->open_func = open_simple; - ev_umc->close_func = close_simple; - ev_umc->start_func = start_simple; - ev_umc->stop_func = stop_simple; - ev_umc->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_umc->name, ev_umc); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_gpu_activity) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); - native_event_t *ev_mm = &ntv_table.events[idx]; - ev_mm->id = idx; - ev_mm->name = strdup(name_buf); - ev_mm->descr = strdup(descr_buf); - ev_mm->device = d; - ev_mm->value = 0; - ev_mm->mode = PAPI_MODE_READ; - ev_mm->variant = 2; - ev_mm->subvariant = 0; - ev_mm->open_func = open_simple; - ev_mm->close_func = close_simple; - ev_mm->start_func = start_simple; - ev_mm->stop_func = stop_simple; - ev_mm->access_func = access_amdsmi_gpu_activity; - htable_insert(htable, ev_mm->name, ev_mm); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_gpu_activity) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* GPU clock frequency levels for multiple clock domains */ @@ -2501,43 +1374,19 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported %s clock frequencies", d, clk_names[t]); - native_event_t *ev_clk_count = &ntv_table.events[idx]; - ev_clk_count->id = idx; - ev_clk_count->name = strdup(name_buf); - ev_clk_count->descr = strdup(descr_buf); - ev_clk_count->device = d; - ev_clk_count->value = 0; - ev_clk_count->mode = PAPI_MODE_READ; - ev_clk_count->variant = t; - ev_clk_count->subvariant = 0; - ev_clk_count->open_func = open_simple; - ev_clk_count->close_func = close_simple; - ev_clk_count->start_func = start_simple; - ev_clk_count->stop_func = stop_simple; - ev_clk_count->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_count->name, ev_clk_count); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, t, 0, PAPI_MODE_READ, + access_amdsmi_clk_freq) != PAPI_OK) { + return PAPI_ENOMEM; + } // Current clock frequency for this domain snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_current:device=%d", clk_names[t], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current %s clock frequency (MHz)", d, clk_names[t]); - native_event_t *ev_clk_cur = &ntv_table.events[idx]; - ev_clk_cur->id = idx; - ev_clk_cur->name = strdup(name_buf); - ev_clk_cur->descr = strdup(descr_buf); - ev_clk_cur->device = d; - ev_clk_cur->value = 0; - ev_clk_cur->mode = PAPI_MODE_READ; - ev_clk_cur->variant = t; - ev_clk_cur->subvariant = 1; - ev_clk_cur->open_func = open_simple; - ev_clk_cur->close_func = close_simple; - ev_clk_cur->start_func = start_simple; - ev_clk_cur->stop_func = stop_simple; - ev_clk_cur->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_cur->name, ev_clk_cur); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, t, 1, PAPI_MODE_READ, + access_amdsmi_clk_freq) != PAPI_OK) { + return PAPI_ENOMEM; + } // Supported frequency levels for this domain for (uint32_t fi = 0; fi < f.num_supported; ++fi) { snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_level_%u:device=%d", @@ -2545,22 +1394,10 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d supported %s clock frequency level %u (MHz)", d, clk_names[t], fi); - native_event_t *ev_clk_lvl = &ntv_table.events[idx]; - ev_clk_lvl->id = idx; - ev_clk_lvl->name = strdup(name_buf); - ev_clk_lvl->descr = strdup(descr_buf); - ev_clk_lvl->device = d; - ev_clk_lvl->value = 0; - ev_clk_lvl->mode = PAPI_MODE_READ; - ev_clk_lvl->variant = t; - ev_clk_lvl->subvariant = fi + 2; - ev_clk_lvl->open_func = open_simple; - ev_clk_lvl->close_func = close_simple; - ev_clk_lvl->start_func = start_simple; - ev_clk_lvl->stop_func = stop_simple; - ev_clk_lvl->access_func = access_amdsmi_clk_freq; - htable_insert(htable, ev_clk_lvl->name, ev_clk_lvl); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, t, fi + 2, PAPI_MODE_READ, + access_amdsmi_clk_freq) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -2568,7 +1405,6 @@ static int init_event_table(void) { for (int d = 0; d < gpu_count; ++d) { uint16_t id16; uint64_t id64; - // amdsmi_virtualization_mode_t vmode; int32_t numa; // GPU ID if (amdsmi_get_gpu_id_p(device_handles[d], &id16) == @@ -2576,89 +1412,41 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "gpu_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); - native_event_t *ev_id = &ntv_table.events[idx]; - ev_id->id = idx; - ev_id->name = strdup(name_buf); - ev_id->descr = strdup(descr_buf); - ev_id->device = d; - ev_id->value = 0; - ev_id->mode = PAPI_MODE_READ; - ev_id->variant = 0; - ev_id->subvariant = 0; - ev_id->open_func = open_simple; - ev_id->close_func = close_simple; - ev_id->start_func = start_simple; - ev_id->stop_func = stop_simple; - ev_id->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_id->name, ev_id); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } // GPU Revision if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); - native_event_t *ev_rev = &ntv_table.events[idx]; - ev_rev->id = idx; - ev_rev->name = strdup(name_buf); - ev_rev->descr = strdup(descr_buf); - ev_rev->device = d; - ev_rev->value = 0; - ev_rev->mode = PAPI_MODE_READ; - ev_rev->variant = 1; - ev_rev->subvariant = 0; - ev_rev->open_func = open_simple; - ev_rev->close_func = close_simple; - ev_rev->start_func = start_simple; - ev_rev->stop_func = stop_simple; - ev_rev->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_rev->name, ev_rev); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } // GPU Subsystem ID if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); - native_event_t *ev_subid = &ntv_table.events[idx]; - ev_subid->id = idx; - ev_subid->name = strdup(name_buf); - ev_subid->descr = strdup(descr_buf); - ev_subid->device = d; - ev_subid->value = 0; - ev_subid->mode = PAPI_MODE_READ; - ev_subid->variant = 2; - ev_subid->subvariant = 0; - ev_subid->open_func = open_simple; - ev_subid->close_func = close_simple; - ev_subid->start_func = start_simple; - ev_subid->stop_func = stop_simple; - ev_subid->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_subid->name, ev_subid); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } // GPU BDF ID if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_bdfid:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", - d); - native_event_t *ev_bdf = &ntv_table.events[idx]; - ev_bdf->id = idx; - ev_bdf->name = strdup(name_buf); - ev_bdf->descr = strdup(descr_buf); - ev_bdf->device = d; - ev_bdf->value = 0; - ev_bdf->mode = PAPI_MODE_READ; - ev_bdf->variant = 3; - ev_bdf->subvariant = 0; - ev_bdf->open_func = open_simple; - ev_bdf->close_func = close_simple; - ev_bdf->start_func = start_simple; - ev_bdf->stop_func = stop_simple; - ev_bdf->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_bdf->name, ev_bdf); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Device %d GPU PCI BDF identifier", d); + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } // GPU Virtualization Mode amdsmi_virtualization_mode_t vmode; @@ -2669,44 +1457,20 @@ static int init_event_table(void) { d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); - native_event_t *ev_vmode = &ntv_table.events[idx]; - ev_vmode->id = idx; - ev_vmode->name = strdup(name_buf); - ev_vmode->descr = strdup(descr_buf); - ev_vmode->device = d; - ev_vmode->value = 0; - ev_vmode->mode = PAPI_MODE_READ; - ev_vmode->variant = 4; - ev_vmode->subvariant = 0; - ev_vmode->open_func = open_simple; - ev_vmode->close_func = close_simple; - ev_vmode->start_func = start_simple; - ev_vmode->stop_func = stop_simple; - ev_vmode->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_vmode->name, ev_vmode); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } // GPU NUMA Node if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); - native_event_t *ev_numa = &ntv_table.events[idx]; - ev_numa->id = idx; - ev_numa->name = strdup(name_buf); - ev_numa->descr = strdup(descr_buf); - ev_numa->device = d; - ev_numa->value = 0; - ev_numa->mode = PAPI_MODE_READ; - ev_numa->variant = 5; - ev_numa->subvariant = 0; - ev_numa->open_func = open_simple; - ev_numa->close_func = close_simple; - ev_numa->start_func = start_simple; - ev_numa->stop_func = stop_simple; - ev_numa->access_func = access_amdsmi_gpu_info; - htable_insert(htable, ev_numa->name, ev_numa); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, + access_amdsmi_gpu_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } if (amdsmi_get_gpu_process_isolation_p) { @@ -2716,22 +1480,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "process_isolation:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d process isolation status", d); - native_event_t *ev_iso = &ntv_table.events[idx]; - ev_iso->id = idx; - ev_iso->name = strdup(name_buf); - ev_iso->descr = strdup(descr_buf); - ev_iso->device = d; - ev_iso->value = 0; - ev_iso->mode = PAPI_MODE_READ; - ev_iso->variant = 0; - ev_iso->subvariant = 0; - ev_iso->open_func = open_simple; - ev_iso->close_func = close_simple; - ev_iso->start_func = start_simple; - ev_iso->stop_func = stop_simple; - ev_iso->access_func = access_amdsmi_process_isolation; - htable_insert(htable, ev_iso->name, ev_iso); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_process_isolation) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -2741,22 +1493,10 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "xcd_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d XCD counter", d); - native_event_t *ev_xcd = &ntv_table.events[idx]; - ev_xcd->id = idx; - ev_xcd->name = strdup(name_buf); - ev_xcd->descr = strdup(descr_buf); - ev_xcd->device = d; - ev_xcd->value = 0; - ev_xcd->mode = PAPI_MODE_READ; - ev_xcd->variant = 0; - ev_xcd->subvariant = 0; - ev_xcd->open_func = open_simple; - ev_xcd->close_func = close_simple; - ev_xcd->start_func = start_simple; - ev_xcd->stop_func = stop_simple; - ev_xcd->access_func = access_amdsmi_xcd_counter; - htable_insert(htable, ev_xcd->name, ev_xcd); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_xcd_counter) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -2774,22 +1514,10 @@ static int init_event_table(void) { d); snprintf(descr_buf, sizeof(descr_buf), "Device %d firmware id %u version", d, fid); - native_event_t *ev_fw = &ntv_table.events[idx]; - ev_fw->id = idx; - ev_fw->name = strdup(name_buf); - ev_fw->descr = strdup(descr_buf); - ev_fw->device = d; - ev_fw->value = 0; - ev_fw->mode = PAPI_MODE_READ; - ev_fw->variant = fid; - ev_fw->subvariant = 0; - ev_fw->open_func = open_simple; - ev_fw->close_func = close_simple; - ev_fw->start_func = start_simple; - ev_fw->stop_func = stop_simple; - ev_fw->access_func = access_amdsmi_fw_version; - htable_insert(htable, ev_fw->name, ev_fw); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, fid, 0, PAPI_MODE_READ, + access_amdsmi_fw_version) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -2802,23 +1530,11 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "board_serial_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); - native_event_t *ev_brd = &ntv_table.events[idx]; - ev_brd->id = idx; - ev_brd->name = strdup(name_buf); - ev_brd->descr = strdup(descr_buf); - ev_brd->device = d; - ev_brd->value = 0; - ev_brd->mode = PAPI_MODE_READ; - ev_brd->variant = 0; - ev_brd->subvariant = 0; - ev_brd->open_func = open_simple; - ev_brd->close_func = close_simple; - ev_brd->start_func = start_simple; - ev_brd->stop_func = stop_simple; - ev_brd->access_func = access_amdsmi_board_serial_hash; - htable_insert(htable, ev_brd->name, ev_brd); - idx++; - } + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_board_serial_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } + } } if (amdsmi_get_gpu_vram_info_p) { @@ -2829,22 +1545,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); - native_event_t *ev_vbw = &ntv_table.events[idx]; - ev_vbw->id = idx; - ev_vbw->name = strdup(name_buf); - ev_vbw->descr = strdup(descr_buf); - ev_vbw->device = d; - ev_vbw->value = 0; - ev_vbw->mode = PAPI_MODE_READ; - ev_vbw->variant = 0; - ev_vbw->subvariant = 0; - ev_vbw->open_func = open_simple; - ev_vbw->close_func = close_simple; - ev_vbw->start_func = start_simple; - ev_vbw->stop_func = stop_simple; - ev_vbw->access_func = access_amdsmi_vram_max_bandwidth; - htable_insert(htable, ev_vbw->name, ev_vbw); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_max_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -2856,86 +1560,38 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "bad_page_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); - native_event_t *ev_bpc = &ntv_table.events[idx]; - ev_bpc->id = idx; - ev_bpc->name = strdup(name_buf); - ev_bpc->descr = strdup(descr_buf); - ev_bpc->device = d; - ev_bpc->value = 0; - ev_bpc->mode = PAPI_MODE_READ; - ev_bpc->variant = 0; - ev_bpc->subvariant = 0; - ev_bpc->open_func = open_simple; - ev_bpc->close_func = close_simple; - ev_bpc->start_func = start_simple; - ev_bpc->stop_func = stop_simple; - ev_bpc->access_func = access_amdsmi_bad_page_count; - htable_insert(htable, ev_bpc->name, ev_bpc); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_bad_page_count) != PAPI_OK) { + return PAPI_ENOMEM; + } for (uint32_t p = 0; p < nump; ++p) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_address:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u address", d, p); - native_event_t *ev_addr = &ntv_table.events[idx]; - ev_addr->id = idx; - ev_addr->name = strdup(name_buf); - ev_addr->descr = strdup(descr_buf); - ev_addr->device = d; - ev_addr->value = 0; - ev_addr->mode = PAPI_MODE_READ; - ev_addr->variant = 0; - ev_addr->subvariant = p; - ev_addr->open_func = open_simple; - ev_addr->close_func = close_simple; - ev_addr->start_func = start_simple; - ev_addr->stop_func = stop_simple; - ev_addr->access_func = access_amdsmi_bad_page_record; - htable_insert(htable, ev_addr->name, ev_addr); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, + access_amdsmi_bad_page_record) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u size", d, p); - native_event_t *ev_size = &ntv_table.events[idx]; - ev_size->id = idx; - ev_size->name = strdup(name_buf); - ev_size->descr = strdup(descr_buf); - ev_size->device = d; - ev_size->value = 0; - ev_size->mode = PAPI_MODE_READ; - ev_size->variant = 1; - ev_size->subvariant = p; - ev_size->open_func = open_simple; - ev_size->close_func = close_simple; - ev_size->start_func = start_simple; - ev_size->stop_func = stop_simple; - ev_size->access_func = access_amdsmi_bad_page_record; - htable_insert(htable, ev_size->name, ev_size); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, p, PAPI_MODE_READ, + access_amdsmi_bad_page_record) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u status", d, p); - native_event_t *ev_stat = &ntv_table.events[idx]; - ev_stat->id = idx; - ev_stat->name = strdup(name_buf); - ev_stat->descr = strdup(descr_buf); - ev_stat->device = d; - ev_stat->value = 0; - ev_stat->mode = PAPI_MODE_READ; - ev_stat->variant = 2; - ev_stat->subvariant = p; - ev_stat->open_func = open_simple; - ev_stat->close_func = close_simple; - ev_stat->start_func = start_simple; - ev_stat->stop_func = stop_simple; - ev_stat->access_func = access_amdsmi_bad_page_record; - htable_insert(htable, ev_stat->name, ev_stat); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, p, PAPI_MODE_READ, + access_amdsmi_bad_page_record) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -2948,29 +1604,15 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "bad_page_threshold:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); - native_event_t *ev_bpt = &ntv_table.events[idx]; - ev_bpt->id = idx; - ev_bpt->name = strdup(name_buf); - ev_bpt->descr = strdup(descr_buf); - ev_bpt->device = d; - ev_bpt->value = 0; - ev_bpt->mode = PAPI_MODE_READ; - ev_bpt->variant = 0; - ev_bpt->subvariant = 0; - ev_bpt->open_func = open_simple; - ev_bpt->close_func = close_simple; - ev_bpt->start_func = start_simple; - ev_bpt->stop_func = stop_simple; - ev_bpt->access_func = access_amdsmi_bad_page_threshold; - htable_insert(htable, ev_bpt->name, ev_bpt); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_bad_page_threshold) != PAPI_OK) { + return PAPI_ENOMEM; + } } } if (amdsmi_get_power_info_v2_p) { - /* Probe for available power sensors. The API uses a sensor index and - * returns AMDSMI_STATUS_SUCCESS while valid. Iterate until failure to - * discover all sensors. */ + /* Probe for available power sensors. */ for (uint32_t s = 0; s < 2; ++s) { amdsmi_power_info_t pinfo; if (amdsmi_get_power_info_v2_p(device_handles[d], s, &pinfo) != @@ -2983,22 +1625,10 @@ static int init_event_table(void) { "power_sensor_current_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u current socket power (W)", d, s); - native_event_t *ev_cur = &ntv_table.events[idx]; - ev_cur->id = idx; - ev_cur->name = strdup(name_buf); - ev_cur->descr = strdup(descr_buf); - ev_cur->device = d; - ev_cur->value = 0; - ev_cur->mode = PAPI_MODE_READ; - ev_cur->variant = 0; - ev_cur->subvariant = s; - ev_cur->open_func = open_simple; - ev_cur->close_func = close_simple; - ev_cur->start_func = start_simple; - ev_cur->stop_func = stop_simple; - ev_cur->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_cur->name, ev_cur); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register average socket power in Watts */ CHECK_EVENT_IDX(idx); @@ -3006,22 +1636,10 @@ static int init_event_table(void) { "power_sensor_average_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u average socket power (W)", d, s); - native_event_t *ev_avg = &ntv_table.events[idx]; - ev_avg->id = idx; - ev_avg->name = strdup(name_buf); - ev_avg->descr = strdup(descr_buf); - ev_avg->device = d; - ev_avg->value = 0; - ev_avg->mode = PAPI_MODE_READ; - ev_avg->variant = 1; - ev_avg->subvariant = s; - ev_avg->open_func = open_simple; - ev_avg->close_func = close_simple; - ev_avg->start_func = start_simple; - ev_avg->stop_func = stop_simple; - ev_avg->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_avg->name, ev_avg); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register socket power in microwatts */ CHECK_EVENT_IDX(idx); @@ -3029,22 +1647,10 @@ static int init_event_table(void) { "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u socket power (uW)", d, s); - native_event_t *ev_sock = &ntv_table.events[idx]; - ev_sock->id = idx; - ev_sock->name = strdup(name_buf); - ev_sock->descr = strdup(descr_buf); - ev_sock->device = d; - ev_sock->value = 0; - ev_sock->mode = PAPI_MODE_READ; - ev_sock->variant = 2; - ev_sock->subvariant = s; - ev_sock->open_func = open_simple; - ev_sock->close_func = close_simple; - ev_sock->start_func = start_simple; - ev_sock->stop_func = stop_simple; - ev_sock->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_sock->name, ev_sock); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register GFX voltage */ CHECK_EVENT_IDX(idx); @@ -3052,22 +1658,10 @@ static int init_event_table(void) { "power_sensor_gfx_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u GFX voltage (mV)", d, s); - native_event_t *ev_gfx = &ntv_table.events[idx]; - ev_gfx->id = idx; - ev_gfx->name = strdup(name_buf); - ev_gfx->descr = strdup(descr_buf); - ev_gfx->device = d; - ev_gfx->value = 0; - ev_gfx->mode = PAPI_MODE_READ; - ev_gfx->variant = 3; - ev_gfx->subvariant = s; - ev_gfx->open_func = open_simple; - ev_gfx->close_func = close_simple; - ev_gfx->start_func = start_simple; - ev_gfx->stop_func = stop_simple; - ev_gfx->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_gfx->name, ev_gfx); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 3, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register SOC voltage */ CHECK_EVENT_IDX(idx); @@ -3075,22 +1669,10 @@ static int init_event_table(void) { "power_sensor_soc_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u SOC voltage (mV)", d, s); - native_event_t *ev_soc = &ntv_table.events[idx]; - ev_soc->id = idx; - ev_soc->name = strdup(name_buf); - ev_soc->descr = strdup(descr_buf); - ev_soc->device = d; - ev_soc->value = 0; - ev_soc->mode = PAPI_MODE_READ; - ev_soc->variant = 4; - ev_soc->subvariant = s; - ev_soc->open_func = open_simple; - ev_soc->close_func = close_simple; - ev_soc->start_func = start_simple; - ev_soc->stop_func = stop_simple; - ev_soc->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_soc->name, ev_soc); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register MEM voltage */ CHECK_EVENT_IDX(idx); @@ -3098,22 +1680,10 @@ static int init_event_table(void) { "power_sensor_mem_voltage_mv:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u MEM voltage (mV)", d, s); - native_event_t *ev_mem = &ntv_table.events[idx]; - ev_mem->id = idx; - ev_mem->name = strdup(name_buf); - ev_mem->descr = strdup(descr_buf); - ev_mem->device = d; - ev_mem->value = 0; - ev_mem->mode = PAPI_MODE_READ; - ev_mem->variant = 5; - ev_mem->subvariant = s; - ev_mem->open_func = open_simple; - ev_mem->close_func = close_simple; - ev_mem->start_func = start_simple; - ev_mem->stop_func = stop_simple; - ev_mem->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_mem->name, ev_mem); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register power limit */ CHECK_EVENT_IDX(idx); @@ -3121,22 +1691,10 @@ static int init_event_table(void) { "power_sensor_limit_watts:device=%d:sensor=%u", d, s); snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u power limit (W)", d, s); - native_event_t *ev_lim = &ntv_table.events[idx]; - ev_lim->id = idx; - ev_lim->name = strdup(name_buf); - ev_lim->descr = strdup(descr_buf); - ev_lim->device = d; - ev_lim->value = 0; - ev_lim->mode = PAPI_MODE_READ; - ev_lim->variant = 6; - ev_lim->subvariant = s; - ev_lim->open_func = open_simple; - ev_lim->close_func = close_simple; - ev_lim->start_func = start_simple; - ev_lim->stop_func = stop_simple; - ev_lim->access_func = access_amdsmi_power_sensor; - htable_insert(htable, ev_lim->name, ev_lim); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 6, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -3146,25 +1704,13 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { /* Register throttle status */ CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); - native_event_t *ev_throttle = &ntv_table.events[idx]; - ev_throttle->id = idx; - ev_throttle->name = strdup(name_buf); - ev_throttle->descr = strdup(descr_buf); - ev_throttle->device = d; - ev_throttle->value = 0; - ev_throttle->mode = PAPI_MODE_READ; - ev_throttle->variant = 0; - ev_throttle->subvariant = 0; - ev_throttle->open_func = open_simple; - ev_throttle->close_func = close_simple; - ev_throttle->start_func = start_simple; - ev_throttle->stop_func = stop_simple; - ev_throttle->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_throttle->name, ev_throttle); - idx++; + snprintf(name_buf, sizeof(name_buf), "gpu_throttle_status:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d throttle status", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register independent throttle status */ CHECK_EVENT_IDX(idx); @@ -3172,220 +1718,98 @@ static int init_event_table(void) { "gpu_indep_throttle_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d independent throttle status", d); - native_event_t *ev_ithrottle = &ntv_table.events[idx]; - ev_ithrottle->id = idx; - ev_ithrottle->name = strdup(name_buf); - ev_ithrottle->descr = strdup(descr_buf); - ev_ithrottle->device = d; - ev_ithrottle->value = 0; - ev_ithrottle->mode = PAPI_MODE_READ; - ev_ithrottle->variant = 1; - ev_ithrottle->subvariant = 0; - ev_ithrottle->open_func = open_simple; - ev_ithrottle->close_func = close_simple; - ev_ithrottle->start_func = start_simple; - ev_ithrottle->stop_func = stop_simple; - ev_ithrottle->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_ithrottle->name, ev_ithrottle); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register PCIe link width */ CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link_width:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); - native_event_t *ev_lw = &ntv_table.events[idx]; - ev_lw->id = idx; - ev_lw->name = strdup(name_buf); - ev_lw->descr = strdup(descr_buf); - ev_lw->device = d; - ev_lw->value = 0; - ev_lw->mode = PAPI_MODE_READ; - ev_lw->variant = 2; - ev_lw->subvariant = 0; - ev_lw->open_func = open_simple; - ev_lw->close_func = close_simple; - ev_lw->start_func = start_simple; - ev_lw->stop_func = stop_simple; - ev_lw->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_lw->name, ev_lw); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register PCIe link speed */ CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_link_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); - native_event_t *ev_ls = &ntv_table.events[idx]; - ev_ls->id = idx; - ev_ls->name = strdup(name_buf); - ev_ls->descr = strdup(descr_buf); - ev_ls->device = d; - ev_ls->value = 0; - ev_ls->mode = PAPI_MODE_READ; - ev_ls->variant = 3; - ev_ls->subvariant = 0; - ev_ls->open_func = open_simple; - ev_ls->close_func = close_simple; - ev_ls->start_func = start_simple; - ev_ls->stop_func = stop_simple; - ev_ls->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_ls->name, ev_ls); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } /* Register PCIe bandwidth and replay counters */ CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); - native_event_t *ev_bwacc = &ntv_table.events[idx]; - ev_bwacc->id = idx; - ev_bwacc->name = strdup(name_buf); - ev_bwacc->descr = strdup(descr_buf); - ev_bwacc->device = d; - ev_bwacc->value = 0; - ev_bwacc->mode = PAPI_MODE_READ; - ev_bwacc->variant = 4; - ev_bwacc->subvariant = 0; - ev_bwacc->open_func = open_simple; - ev_bwacc->close_func = close_simple; - ev_bwacc->start_func = start_simple; - ev_bwacc->stop_func = stop_simple; - ev_bwacc->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_bwacc->name, ev_bwacc); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe instantaneous bandwidth (GB/s)", d); - native_event_t *ev_bwin = &ntv_table.events[idx]; - ev_bwin->id = idx; - ev_bwin->name = strdup(name_buf); - ev_bwin->descr = strdup(descr_buf); - ev_bwin->device = d; - ev_bwin->value = 0; - ev_bwin->mode = PAPI_MODE_READ; - ev_bwin->variant = 5; - ev_bwin->subvariant = 0; - ev_bwin->open_func = open_simple; - ev_bwin->close_func = close_simple; - ev_bwin->start_func = start_simple; - ev_bwin->stop_func = stop_simple; - ev_bwin->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_bwin->name, ev_bwin); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_l0_to_recov_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); - native_event_t *ev_l0 = &ntv_table.events[idx]; - ev_l0->id = idx; - ev_l0->name = strdup(name_buf); - ev_l0->descr = strdup(descr_buf); - ev_l0->device = d; - ev_l0->value = 0; - ev_l0->mode = PAPI_MODE_READ; - ev_l0->variant = 6; - ev_l0->subvariant = 0; - ev_l0->open_func = open_simple; - ev_l0->close_func = close_simple; - ev_l0->start_func = start_simple; - ev_l0->stop_func = stop_simple; - ev_l0->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_l0->name, ev_l0); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", - d); - native_event_t *ev_replay = &ntv_table.events[idx]; - ev_replay->id = idx; - ev_replay->name = strdup(name_buf); - ev_replay->descr = strdup(descr_buf); - ev_replay->device = d; - ev_replay->value = 0; - ev_replay->mode = PAPI_MODE_READ; - ev_replay->variant = 7; - ev_replay->subvariant = 0; - ev_replay->open_func = open_simple; - ev_replay->close_func = close_simple; - ev_replay->start_func = start_simple; - ev_replay->stop_func = stop_simple; - ev_replay->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_replay->name, ev_replay); - idx++; + snprintf(name_buf, sizeof(name_buf), + "pcie_replay_count_acc:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); + if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_rover_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); - native_event_t *ev_replay_ro = &ntv_table.events[idx]; - ev_replay_ro->id = idx; - ev_replay_ro->name = strdup(name_buf); - ev_replay_ro->descr = strdup(descr_buf); - ev_replay_ro->device = d; - ev_replay_ro->value = 0; - ev_replay_ro->mode = PAPI_MODE_READ; - ev_replay_ro->variant = 8; - ev_replay_ro->subvariant = 0; - ev_replay_ro->open_func = open_simple; - ev_replay_ro->close_func = close_simple; - ev_replay_ro->start_func = start_simple; - ev_replay_ro->stop_func = stop_simple; - ev_replay_ro->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_replay_ro->name, ev_replay_ro); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 8, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); - native_event_t *ev_nak_sent = &ntv_table.events[idx]; - ev_nak_sent->id = idx; - ev_nak_sent->name = strdup(name_buf); - ev_nak_sent->descr = strdup(descr_buf); - ev_nak_sent->device = d; - ev_nak_sent->value = 0; - ev_nak_sent->mode = PAPI_MODE_READ; - ev_nak_sent->variant = 9; - ev_nak_sent->subvariant = 0; - ev_nak_sent->open_func = open_simple; - ev_nak_sent->close_func = close_simple; - ev_nak_sent->start_func = start_simple; - ev_nak_sent->stop_func = stop_simple; - ev_nak_sent->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_nak_sent->name, ev_nak_sent); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 9, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_rcvd_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); - native_event_t *ev_nak_rcv = &ntv_table.events[idx]; - ev_nak_rcv->id = idx; - ev_nak_rcv->name = strdup(name_buf); - ev_nak_rcv->descr = strdup(descr_buf); - ev_nak_rcv->device = d; - ev_nak_rcv->value = 0; - ev_nak_rcv->mode = PAPI_MODE_READ; - ev_nak_rcv->variant = 10; - ev_nak_rcv->subvariant = 0; - ev_nak_rcv->open_func = open_simple; - ev_nak_rcv->close_func = close_simple; - ev_nak_rcv->start_func = start_simple; - ev_nak_rcv->stop_func = stop_simple; - ev_nak_rcv->access_func = access_amdsmi_gpu_metrics; - htable_insert(htable, ev_nak_rcv->name, ev_nak_rcv); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 10, 0, PAPI_MODE_READ, + access_amdsmi_gpu_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } } } @@ -3394,26 +1818,13 @@ static int init_event_table(void) { amdsmi_get_gpu_event_notification_p && amdsmi_stop_gpu_event_notification_p) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "thermal_throttle_events:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d thermal throttle event notifications", d); - native_event_t *ev_tt = &ntv_table.events[idx]; - ev_tt->id = idx; - ev_tt->name = strdup(name_buf); - ev_tt->descr = strdup(descr_buf); - ev_tt->device = d; - ev_tt->value = 0; - ev_tt->mode = PAPI_MODE_READ; - ev_tt->variant = AMDSMI_EVT_NOTIF_THERMAL_THROTTLE; - ev_tt->subvariant = 0; - ev_tt->open_func = open_simple; - ev_tt->close_func = close_simple; - ev_tt->start_func = start_simple; - ev_tt->stop_func = stop_simple; - ev_tt->access_func = access_amdsmi_event_notification; - htable_insert(htable, ev_tt->name, ev_tt); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_EVT_NOTIF_THERMAL_THROTTLE, + 0, PAPI_MODE_READ, access_amdsmi_event_notification) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* Energy consumption counter */ @@ -3428,62 +1839,26 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); - native_event_t *ev_energy = &ntv_table.events[idx]; - ev_energy->id = idx; - ev_energy->name = strdup(name_buf); - ev_energy->descr = strdup(descr_buf); - ev_energy->device = d; - ev_energy->value = 0; - ev_energy->mode = PAPI_MODE_READ; - ev_energy->variant = 0; - ev_energy->subvariant = 0; - ev_energy->open_func = open_simple; - ev_energy->close_func = close_simple; - ev_energy->start_func = start_simple; - ev_energy->stop_func = stop_simple; - ev_energy->access_func = access_amdsmi_energy_count; - htable_insert(htable, ev_energy->name, ev_energy); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_energy_count) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "energy_resolution:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter resolution (microJoules)", d); - native_event_t *ev_res = &ntv_table.events[idx]; - ev_res->id = idx; - ev_res->name = strdup(name_buf); - ev_res->descr = strdup(descr_buf); - ev_res->device = d; - ev_res->value = 0; - ev_res->mode = PAPI_MODE_READ; - ev_res->variant = 1; - ev_res->subvariant = 0; - ev_res->open_func = open_simple; - ev_res->close_func = close_simple; - ev_res->start_func = start_simple; - ev_res->stop_func = stop_simple; - ev_res->access_func = access_amdsmi_energy_count; - htable_insert(htable, ev_res->name, ev_res); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_energy_count) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "energy_timestamp:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter timestamp (ns)", d); - native_event_t *ev_ts = &ntv_table.events[idx]; - ev_ts->id = idx; - ev_ts->name = strdup(name_buf); - ev_ts->descr = strdup(descr_buf); - ev_ts->device = d; - ev_ts->value = 0; - ev_ts->mode = PAPI_MODE_READ; - ev_ts->variant = 2; - ev_ts->subvariant = 0; - ev_ts->open_func = open_simple; - ev_ts->close_func = close_simple; - ev_ts->start_func = start_simple; - ev_ts->stop_func = stop_simple; - ev_ts->access_func = access_amdsmi_energy_count; - htable_insert(htable, ev_ts->name, ev_ts); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_energy_count) != PAPI_OK) { + return PAPI_ENOMEM; + } } /* GPU power profile information */ for (int d = 0; d < gpu_count; ++d) { @@ -3495,41 +1870,17 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); - native_event_t *ev_prof_count = &ntv_table.events[idx]; - ev_prof_count->id = idx; - ev_prof_count->name = strdup(name_buf); - ev_prof_count->descr = strdup(descr_buf); - ev_prof_count->device = d; - ev_prof_count->value = 0; - ev_prof_count->mode = PAPI_MODE_READ; - ev_prof_count->variant = 0; - ev_prof_count->subvariant = 0; - ev_prof_count->open_func = open_simple; - ev_prof_count->close_func = close_simple; - ev_prof_count->start_func = start_simple; - ev_prof_count->stop_func = stop_simple; - ev_prof_count->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_count->name, ev_prof_count); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_power_profile_status) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); - native_event_t *ev_prof_curr = &ntv_table.events[idx]; - ev_prof_curr->id = idx; - ev_prof_curr->name = strdup(name_buf); - ev_prof_curr->descr = strdup(descr_buf); - ev_prof_curr->device = d; - ev_prof_curr->value = 0; - ev_prof_curr->mode = PAPI_MODE_READ; - ev_prof_curr->variant = 1; - ev_prof_curr->subvariant = 0; - ev_prof_curr->open_func = open_simple; - ev_prof_curr->close_func = close_simple; - ev_prof_curr->start_func = start_simple; - ev_prof_curr->stop_func = stop_simple; - ev_prof_curr->access_func = access_amdsmi_power_profile_status; - htable_insert(htable, ev_prof_curr->name, ev_prof_curr); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_power_profile_status) != PAPI_OK) { + return PAPI_ENOMEM; + } } #ifndef AMDSMI_DISABLE_ESMI /* CPU metrics events */ @@ -3542,45 +1893,21 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); - native_event_t *ev_pwr = &ntv_table.events[idx]; - ev_pwr->id = idx; - ev_pwr->name = strdup(name_buf); - ev_pwr->descr = strdup(descr_buf); - ev_pwr->device = dev; - ev_pwr->value = 0; - ev_pwr->mode = PAPI_MODE_READ; - ev_pwr->variant = 0; - ev_pwr->subvariant = 0; - ev_pwr->open_func = open_simple; - ev_pwr->close_func = close_simple; - ev_pwr->start_func = start_simple; - ev_pwr->stop_func = stop_simple; - ev_pwr->access_func = access_amdsmi_cpu_socket_power; - htable_insert(htable, ev_pwr->name, ev_pwr); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_socket_power) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint64_t sock_energy; if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "energy:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", - s); - native_event_t *ev_sock_energy = &ntv_table.events[idx]; - ev_sock_energy->id = idx; - ev_sock_energy->name = strdup(name_buf); - ev_sock_energy->descr = strdup(descr_buf); - ev_sock_energy->device = dev; - ev_sock_energy->value = 0; - ev_sock_energy->mode = PAPI_MODE_READ; - ev_sock_energy->variant = 0; - ev_sock_energy->subvariant = 0; - ev_sock_energy->open_func = open_simple; - ev_sock_energy->close_func = close_simple; - ev_sock_energy->start_func = start_simple; - ev_sock_energy->stop_func = stop_simple; - ev_sock_energy->access_func = access_amdsmi_cpu_socket_energy; - htable_insert(htable, ev_sock_energy->name, ev_sock_energy); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d energy consumed (uJ)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_socket_energy) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint16_t fmax, fmin; if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, @@ -3588,41 +1915,17 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "freq_max:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); - native_event_t *ev_fmax = &ntv_table.events[idx]; - ev_fmax->id = idx; - ev_fmax->name = strdup(name_buf); - ev_fmax->descr = strdup(descr_buf); - ev_fmax->device = dev; - ev_fmax->value = 0; - ev_fmax->mode = PAPI_MODE_READ; - ev_fmax->variant = 1; - ev_fmax->subvariant = 0; - ev_fmax->open_func = open_simple; - ev_fmax->close_func = close_simple; - ev_fmax->start_func = start_simple; - ev_fmax->stop_func = stop_simple; - ev_fmax->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmax->name, ev_fmax); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, + access_amdsmi_cpu_socket_freq_range) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); - native_event_t *ev_fmin = &ntv_table.events[idx]; - ev_fmin->id = idx; - ev_fmin->name = strdup(name_buf); - ev_fmin->descr = strdup(descr_buf); - ev_fmin->device = dev; - ev_fmin->value = 0; - ev_fmin->mode = PAPI_MODE_READ; - ev_fmin->variant = 0; - ev_fmin->subvariant = 0; - ev_fmin->open_func = open_simple; - ev_fmin->close_func = close_simple; - ev_fmin->start_func = start_simple; - ev_fmin->stop_func = stop_simple; - ev_fmin->access_func = access_amdsmi_cpu_socket_freq_range; - htable_insert(htable, ev_fmin->name, ev_fmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_socket_freq_range) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint32_t cap; amdsmi_status_t st_cap = @@ -3636,43 +1939,19 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "power_cap:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); - native_event_t *ev_cap = &ntv_table.events[idx]; - ev_cap->id = idx; - ev_cap->name = strdup(name_buf); - ev_cap->descr = strdup(descr_buf); - ev_cap->device = dev; - ev_cap->value = 0; - ev_cap->mode = PAPI_MODE_READ; - ev_cap->variant = 0; - ev_cap->subvariant = 0; - ev_cap->open_func = open_simple; - ev_cap->close_func = close_simple; - ev_cap->start_func = start_simple; - ev_cap->stop_func = stop_simple; - ev_cap->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_cap->name, ev_cap); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_power_cap) != PAPI_OK) { + return PAPI_ENOMEM; + } } if (st_capmax == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); - snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", - s); - native_event_t *ev_capmax = &ntv_table.events[idx]; - ev_capmax->id = idx; - ev_capmax->name = strdup(name_buf); - ev_capmax->descr = strdup(descr_buf); - ev_capmax->device = dev; - ev_capmax->value = 0; - ev_capmax->mode = PAPI_MODE_READ; - ev_capmax->variant = 1; - ev_capmax->subvariant = 0; - ev_capmax->open_func = open_simple; - ev_capmax->close_func = close_simple; - ev_capmax->start_func = start_simple; - ev_capmax->stop_func = stop_simple; - ev_capmax->access_func = access_amdsmi_cpu_power_cap; - htable_insert(htable, ev_capmax->name, ev_capmax); - idx++; + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d max power cap (W)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, + access_amdsmi_cpu_power_cap) != PAPI_OK) { + return PAPI_ENOMEM; + } } } uint16_t freq; @@ -3684,22 +1963,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "freq_limit:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); - native_event_t *ev_flim = &ntv_table.events[idx]; - ev_flim->id = idx; - ev_flim->name = strdup(name_buf); - ev_flim->descr = strdup(descr_buf); - ev_flim->device = dev; - ev_flim->value = 0; - ev_flim->mode = PAPI_MODE_READ; - ev_flim->variant = 0; - ev_flim->subvariant = 0; - ev_flim->open_func = open_simple; - ev_flim->close_func = close_simple; - ev_flim->start_func = start_simple; - ev_flim->stop_func = stop_simple; - ev_flim->access_func = access_amdsmi_cpu_socket_freq_limit; - htable_insert(htable, ev_flim->name, ev_flim); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_socket_freq_limit) != PAPI_OK) { + return PAPI_ENOMEM; + } } amdsmi_smu_fw_version_t fw; if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == @@ -3707,22 +1974,10 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "smu_fw_version:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); - native_event_t *ev_fw = &ntv_table.events[idx]; - ev_fw->id = idx; - ev_fw->name = strdup(name_buf); - ev_fw->descr = strdup(descr_buf); - ev_fw->device = dev; - ev_fw->value = 0; - ev_fw->mode = PAPI_MODE_READ; - ev_fw->variant = 0; - ev_fw->subvariant = 0; - ev_fw->open_func = open_simple; - ev_fw->close_func = close_simple; - ev_fw->start_func = start_simple; - ev_fw->stop_func = stop_simple; - ev_fw->access_func = access_amdsmi_smu_fw_version; - htable_insert(htable, ev_fw->name, ev_fw); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_smu_fw_version) != PAPI_OK) { + return PAPI_ENOMEM; + } } } // CPU core-level events @@ -3732,26 +1987,13 @@ static int init_event_table(void) { uint64_t energy; if (amdsmi_get_cpu_core_energy_p(cpu_core_handles[s][c], &energy) == AMDSMI_STATUS_SUCCESS) { - snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, - c); + snprintf(name_buf, sizeof(name_buf), "energy:socket=%d:core=%d", s, c); snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); - native_event_t *ev_core_energy = &ntv_table.events[idx]; - ev_core_energy->id = idx; - ev_core_energy->name = strdup(name_buf); - ev_core_energy->descr = strdup(descr_buf); - ev_core_energy->device = dev; - ev_core_energy->value = 0; - ev_core_energy->mode = PAPI_MODE_READ; - ev_core_energy->variant = 0; - ev_core_energy->subvariant = c; - ev_core_energy->open_func = open_simple; - ev_core_energy->close_func = close_simple; - ev_core_energy->start_func = start_simple; - ev_core_energy->stop_func = stop_simple; - ev_core_energy->access_func = access_amdsmi_cpu_core_energy; - htable_insert(htable, ev_core_energy->name, ev_core_energy); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, + access_amdsmi_cpu_core_energy) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint32_t freq; if (amdsmi_get_cpu_core_current_freq_limit_p( @@ -3760,22 +2002,10 @@ static int init_event_table(void) { s, c); snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); - native_event_t *ev_core_flim = &ntv_table.events[idx]; - ev_core_flim->id = idx; - ev_core_flim->name = strdup(name_buf); - ev_core_flim->descr = strdup(descr_buf); - ev_core_flim->device = dev; - ev_core_flim->value = 0; - ev_core_flim->mode = PAPI_MODE_READ; - ev_core_flim->variant = 0; - ev_core_flim->subvariant = c; - ev_core_flim->open_func = open_simple; - ev_core_flim->close_func = close_simple; - ev_core_flim->start_func = start_simple; - ev_core_flim->stop_func = stop_simple; - ev_core_flim->access_func = access_amdsmi_cpu_core_freq_limit; - htable_insert(htable, ev_core_flim->name, ev_core_flim); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, + access_amdsmi_cpu_core_freq_limit) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint32_t boost; if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == @@ -3784,22 +2014,10 @@ static int init_event_table(void) { s, c); snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); - native_event_t *ev_boost = &ntv_table.events[idx]; - ev_boost->id = idx; - ev_boost->name = strdup(name_buf); - ev_boost->descr = strdup(descr_buf); - ev_boost->device = dev; - ev_boost->value = 0; - ev_boost->mode = PAPI_MODE_READ; - ev_boost->variant = 0; - ev_boost->subvariant = c; - ev_boost->open_func = open_simple; - ev_boost->close_func = close_simple; - ev_boost->start_func = start_simple; - ev_boost->stop_func = stop_simple; - ev_boost->access_func = access_amdsmi_cpu_core_boostlimit; - htable_insert(htable, ev_boost->name, ev_boost); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, + access_amdsmi_cpu_core_boostlimit) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -3827,86 +2045,38 @@ static int init_event_table(void) { dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); - native_event_t *ev_dimm_temp = &ntv_table.events[idx]; - ev_dimm_temp->id = idx; - ev_dimm_temp->name = strdup(name_buf); - ev_dimm_temp->descr = strdup(descr_buf); - ev_dimm_temp->device = dev; - ev_dimm_temp->value = 0; - ev_dimm_temp->mode = PAPI_MODE_READ; - ev_dimm_temp->variant = 0; - ev_dimm_temp->subvariant = dimm; - ev_dimm_temp->open_func = open_simple; - ev_dimm_temp->close_func = close_simple; - ev_dimm_temp->start_func = start_simple; - ev_dimm_temp->stop_func = stop_simple; - ev_dimm_temp->access_func = access_amdsmi_dimm_temp; - htable_insert(htable, ev_dimm_temp->name, ev_dimm_temp); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, + access_amdsmi_dimm_temp) != PAPI_OK) { + return PAPI_ENOMEM; + } } if (st_power == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", s, dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); - native_event_t *ev_dimm_pow = &ntv_table.events[idx]; - ev_dimm_pow->id = idx; - ev_dimm_pow->name = strdup(name_buf); - ev_dimm_pow->descr = strdup(descr_buf); - ev_dimm_pow->device = dev; - ev_dimm_pow->value = 0; - ev_dimm_pow->mode = PAPI_MODE_READ; - ev_dimm_pow->variant = 0; - ev_dimm_pow->subvariant = dimm; - ev_dimm_pow->open_func = open_simple; - ev_dimm_pow->close_func = close_simple; - ev_dimm_pow->start_func = start_simple; - ev_dimm_pow->stop_func = stop_simple; - ev_dimm_pow->access_func = access_amdsmi_dimm_power; - htable_insert(htable, ev_dimm_pow->name, ev_dimm_pow); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, + access_amdsmi_dimm_power) != PAPI_OK) { + return PAPI_ENOMEM; + } } if (st_range == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "dimm_temp_range:socket=%d:dimm=%d", s, dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); - native_event_t *ev_range = &ntv_table.events[idx]; - ev_range->id = idx; - ev_range->name = strdup(name_buf); - ev_range->descr = strdup(descr_buf); - ev_range->device = dev; - ev_range->value = 0; - ev_range->mode = PAPI_MODE_READ; - ev_range->variant = 0; - ev_range->subvariant = dimm; - ev_range->open_func = open_simple; - ev_range->close_func = close_simple; - ev_range->start_func = start_simple; - ev_range->stop_func = stop_simple; - ev_range->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_range->name, ev_range); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, + access_amdsmi_dimm_range_refresh) != PAPI_OK) { + return PAPI_ENOMEM; + } snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); - native_event_t *ev_ref = &ntv_table.events[idx]; - ev_ref->id = idx; - ev_ref->name = strdup(name_buf); - ev_ref->descr = strdup(descr_buf); - ev_ref->device = dev; - ev_ref->value = 0; - ev_ref->mode = PAPI_MODE_READ; - ev_ref->variant = 1; - ev_ref->subvariant = dimm; - ev_ref->open_func = open_simple; - ev_ref->close_func = close_simple; - ev_ref->start_func = start_simple; - ev_ref->stop_func = stop_simple; - ev_ref->access_func = access_amdsmi_dimm_range_refresh; - htable_insert(htable, ev_ref->name, ev_ref); - idx++; + if (add_event(&idx, name_buf, descr_buf, dev, 1, dimm, PAPI_MODE_READ, + access_amdsmi_dimm_range_refresh) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } @@ -3915,64 +2085,28 @@ static int init_event_table(void) { if (amdsmi_get_threads_per_core_p(&threads) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "threads_per_core"); snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); - native_event_t *ev_threads = &ntv_table.events[idx]; - ev_threads->id = idx; - ev_threads->name = strdup(name_buf); - ev_threads->descr = strdup(descr_buf); - ev_threads->device = -1; - ev_threads->value = 0; - ev_threads->mode = PAPI_MODE_READ; - ev_threads->variant = 0; - ev_threads->subvariant = 0; - ev_threads->open_func = open_simple; - ev_threads->close_func = close_simple; - ev_threads->start_func = start_simple; - ev_threads->stop_func = stop_simple; - ev_threads->access_func = access_amdsmi_threads_per_core; - htable_insert(htable, ev_threads->name, ev_threads); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, + access_amdsmi_threads_per_core) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint32_t family; if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "cpu_family"); snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); - native_event_t *ev_family = &ntv_table.events[idx]; - ev_family->id = idx; - ev_family->name = strdup(name_buf); - ev_family->descr = strdup(descr_buf); - ev_family->device = -1; - ev_family->value = 0; - ev_family->mode = PAPI_MODE_READ; - ev_family->variant = 0; - ev_family->subvariant = 0; - ev_family->open_func = open_simple; - ev_family->close_func = close_simple; - ev_family->start_func = start_simple; - ev_family->stop_func = stop_simple; - ev_family->access_func = access_amdsmi_cpu_family; - htable_insert(htable, ev_family->name, ev_family); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_family) != PAPI_OK) { + return PAPI_ENOMEM; + } } uint32_t model; if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "cpu_model"); snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); - native_event_t *ev_model = &ntv_table.events[idx]; - ev_model->id = idx; - ev_model->name = strdup(name_buf); - ev_model->descr = strdup(descr_buf); - ev_model->device = -1; - ev_model->value = 0; - ev_model->mode = PAPI_MODE_READ; - ev_model->variant = 0; - ev_model->subvariant = 0; - ev_model->open_func = open_simple; - ev_model->close_func = close_simple; - ev_model->start_func = start_simple; - ev_model->stop_func = stop_simple; - ev_model->access_func = access_amdsmi_cpu_model; - htable_insert(htable, ev_model->name, ev_model); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_model) != PAPI_OK) { + return PAPI_ENOMEM; + } } } #endif @@ -3985,61 +2119,25 @@ static int init_event_table(void) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_major"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); - native_event_t *ev_lmaj = &ntv_table.events[idx]; - ev_lmaj->id = idx; - ev_lmaj->name = strdup(name_buf); - ev_lmaj->descr = strdup(descr_buf); - ev_lmaj->device = -1; - ev_lmaj->value = 0; - ev_lmaj->mode = PAPI_MODE_READ; - ev_lmaj->variant = 0; - ev_lmaj->subvariant = 0; - ev_lmaj->open_func = open_simple; - ev_lmaj->close_func = close_simple; - ev_lmaj->start_func = start_simple; - ev_lmaj->stop_func = stop_simple; - ev_lmaj->access_func = access_amdsmi_lib_version; - htable_insert(htable, ev_lmaj->name, ev_lmaj); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, + access_amdsmi_lib_version) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); - native_event_t *ev_lmin = &ntv_table.events[idx]; - ev_lmin->id = idx; - ev_lmin->name = strdup(name_buf); - ev_lmin->descr = strdup(descr_buf); - ev_lmin->device = -1; - ev_lmin->value = 0; - ev_lmin->mode = PAPI_MODE_READ; - ev_lmin->variant = 1; - ev_lmin->subvariant = 0; - ev_lmin->open_func = open_simple; - ev_lmin->close_func = close_simple; - ev_lmin->start_func = start_simple; - ev_lmin->stop_func = stop_simple; - ev_lmin->access_func = access_amdsmi_lib_version; - htable_insert(htable, ev_lmin->name, ev_lmin); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 1, 0, PAPI_MODE_READ, + access_amdsmi_lib_version) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_release"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); - native_event_t *ev_lrel = &ntv_table.events[idx]; - ev_lrel->id = idx; - ev_lrel->name = strdup(name_buf); - ev_lrel->descr = strdup(descr_buf); - ev_lrel->device = -1; - ev_lrel->value = 0; - ev_lrel->mode = PAPI_MODE_READ; - ev_lrel->variant = 2; - ev_lrel->subvariant = 0; - ev_lrel->open_func = open_simple; - ev_lrel->close_func = close_simple; - ev_lrel->start_func = start_simple; - ev_lrel->stop_func = stop_simple; - ev_lrel->access_func = access_amdsmi_lib_version; - htable_insert(htable, ev_lrel->name, ev_lrel); - idx++; + if (add_event(&idx, name_buf, descr_buf, -1, 2, 0, PAPI_MODE_READ, + access_amdsmi_lib_version) != PAPI_OK) { + return PAPI_ENOMEM; + } } } for (int d = 0; d < gpu_count; ++d) { @@ -4050,8 +2148,7 @@ static int init_event_table(void) { unsigned int uuid_len = 0; amdsmi_status_t st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, NULL); - /* Some builds require preflight to get length; we just attempt a fixed - * buffer */ + /* Some builds require preflight to get length; we just attempt a fixed buffer */ char uuid_buf[128]; uuid_len = sizeof(uuid_buf); st = amdsmi_get_gpu_device_uuid_p(device_handles[d], &uuid_len, uuid_buf); @@ -4060,41 +2157,17 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "uuid_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); - native_event_t *ev_uuid = &ntv_table.events[idx]; - ev_uuid->id = idx; - ev_uuid->name = strdup(name_buf); - ev_uuid->descr = strdup(descr_buf); - ev_uuid->device = d; - ev_uuid->value = 0; - ev_uuid->mode = PAPI_MODE_READ; - ev_uuid->variant = 0; - ev_uuid->subvariant = 0; - ev_uuid->open_func = open_simple; - ev_uuid->close_func = close_simple; - ev_uuid->start_func = start_simple; - ev_uuid->stop_func = stop_simple; - ev_uuid->access_func = access_amdsmi_uuid_hash; - htable_insert(htable, ev_uuid->name, ev_uuid); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_uuid_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "uuid_length:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID length", d); - native_event_t *ev_uuid_len = &ntv_table.events[idx]; - ev_uuid_len->id = idx; - ev_uuid_len->name = strdup(name_buf); - ev_uuid_len->descr = strdup(descr_buf); - ev_uuid_len->device = d; - ev_uuid_len->value = 0; - ev_uuid_len->mode = PAPI_MODE_READ; - ev_uuid_len->variant = 1; - ev_uuid_len->subvariant = 0; - ev_uuid_len->open_func = open_simple; - ev_uuid_len->close_func = close_simple; - ev_uuid_len->start_func = start_simple; - ev_uuid_len->stop_func = stop_simple; - ev_uuid_len->access_func = access_amdsmi_uuid_hash; - htable_insert(htable, ev_uuid_len->name, ev_uuid_len); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_uuid_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* Vendor / VRAM vendor / Subsystem name (hash) */ @@ -4104,26 +2177,11 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", - d); - native_event_t *ev_vn = &ntv_table.events[idx]; - ev_vn->id = idx; - ev_vn->name = strdup(name_buf); - ev_vn->descr = strdup(descr_buf); - if (!ev_vn->name || !ev_vn->descr) + snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_gpu_string_hash) != PAPI_OK) { return PAPI_ENOMEM; - ev_vn->device = d; - ev_vn->value = 0; - ev_vn->mode = PAPI_MODE_READ; - ev_vn->variant = 0; /* access_amdsmi_gpu_string_hash -> vendor name */ - ev_vn->subvariant = 0; - ev_vn->open_func = open_simple; - ev_vn->close_func = close_simple; - ev_vn->start_func = start_simple; - ev_vn->stop_func = stop_simple; - ev_vn->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_vn->name, ev_vn); - idx++; + } } } @@ -4134,57 +2192,26 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", - d); - native_event_t *ev_vrv = &ntv_table.events[idx]; - ev_vrv->id = idx; - ev_vrv->name = strdup(name_buf); - ev_vrv->descr = strdup(descr_buf); - if (!ev_vrv->name || !ev_vrv->descr) + snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_gpu_string_hash) != PAPI_OK) { return PAPI_ENOMEM; - ev_vrv->device = d; - ev_vrv->value = 0; - ev_vrv->mode = PAPI_MODE_READ; - ev_vrv->variant = 1; /* access_amdsmi_gpu_string_hash -> VRAM vendor */ - ev_vrv->subvariant = 0; - ev_vrv->open_func = open_simple; - ev_vrv->close_func = close_simple; - ev_vrv->start_func = start_simple; - ev_vrv->stop_func = stop_simple; - ev_vrv->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_vrv->name, ev_vrv); - idx++; + } } } if (amdsmi_get_gpu_subsystem_name_p) { char tmp[256] = {0}; - if (amdsmi_get_gpu_subsystem_name_p( - device_handles[d], tmp, sizeof(tmp)) == AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_subsystem_name_p(device_handles[d], tmp, sizeof(tmp)) == + AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", - d); + snprintf(name_buf, sizeof(name_buf), "subsystem_name_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); - native_event_t *ev_ssn = &ntv_table.events[idx]; - ev_ssn->id = idx; - ev_ssn->name = strdup(name_buf); - ev_ssn->descr = strdup(descr_buf); - if (!ev_ssn->name || !ev_ssn->descr) + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_gpu_string_hash) != PAPI_OK) { return PAPI_ENOMEM; - ev_ssn->device = d; - ev_ssn->value = 0; - ev_ssn->mode = PAPI_MODE_READ; - ev_ssn->variant = - 2; /* access_amdsmi_gpu_string_hash -> subsystem name */ - ev_ssn->subvariant = 0; - ev_ssn->open_func = open_simple; - ev_ssn->close_func = close_simple; - ev_ssn->start_func = start_simple; - ev_ssn->stop_func = stop_simple; - ev_ssn->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_ssn->name, ev_ssn); - idx++; + } } } @@ -4196,79 +2223,31 @@ static int init_event_table(void) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); - native_event_t *ev_er = &ntv_table.events[idx]; - ev_er->id = idx; - ev_er->name = strdup(name_buf); - ev_er->descr = strdup(descr_buf); - ev_er->device = d; - ev_er->value = 0; - ev_er->mode = PAPI_MODE_READ; - ev_er->variant = 0; - ev_er->subvariant = 0; - ev_er->open_func = open_simple; - ev_er->close_func = close_simple; - ev_er->start_func = start_simple; - ev_er->stop_func = stop_simple; - ev_er->access_func = access_amdsmi_enumeration_info; - htable_insert(htable, ev_er->name, ev_er); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_enumeration_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); - native_event_t *ev_ec = &ntv_table.events[idx]; - ev_ec->id = idx; - ev_ec->name = strdup(name_buf); - ev_ec->descr = strdup(descr_buf); - ev_ec->device = d; - ev_ec->value = 0; - ev_ec->mode = PAPI_MODE_READ; - ev_ec->variant = 1; - ev_ec->subvariant = 0; - ev_ec->open_func = open_simple; - ev_ec->close_func = close_simple; - ev_ec->start_func = start_simple; - ev_ec->stop_func = stop_simple; - ev_ec->access_func = access_amdsmi_enumeration_info; - htable_insert(htable, ev_ec->name, ev_ec); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_enumeration_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); - native_event_t *ev_eh = &ntv_table.events[idx]; - ev_eh->id = idx; - ev_eh->name = strdup(name_buf); - ev_eh->descr = strdup(descr_buf); - ev_eh->device = d; - ev_eh->value = 0; - ev_eh->mode = PAPI_MODE_READ; - ev_eh->variant = 2; - ev_eh->subvariant = 0; - ev_eh->open_func = open_simple; - ev_eh->close_func = close_simple; - ev_eh->start_func = start_simple; - ev_eh->stop_func = stop_simple; - ev_eh->access_func = access_amdsmi_enumeration_info; - htable_insert(htable, ev_eh->name, ev_eh); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_enumeration_info) != PAPI_OK) { + return PAPI_ENOMEM; + } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); - native_event_t *ev_ehip = &ntv_table.events[idx]; - ev_ehip->id = idx; - ev_ehip->name = strdup(name_buf); - ev_ehip->descr = strdup(descr_buf); - ev_ehip->device = d; - ev_ehip->value = 0; - ev_ehip->mode = PAPI_MODE_READ; - ev_ehip->variant = 3; - ev_ehip->subvariant = 0; - ev_ehip->open_func = open_simple; - ev_ehip->close_func = close_simple; - ev_ehip->start_func = start_simple; - ev_ehip->stop_func = stop_simple; - ev_ehip->access_func = access_amdsmi_enumeration_info; - htable_insert(htable, ev_ehip->name, ev_ehip); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_enumeration_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* ASIC info (numeric IDs & CU count) */ @@ -4279,121 +2258,53 @@ static int init_event_table(void) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); - native_event_t *ev_av = &ntv_table.events[idx]; - ev_av->id = idx; - ev_av->name = strdup(name_buf); - ev_av->descr = strdup(descr_buf); - ev_av->device = d; - ev_av->value = 0; - ev_av->mode = PAPI_MODE_READ; - ev_av->variant = 0; - ev_av->subvariant = 0; - ev_av->open_func = open_simple; - ev_av->close_func = close_simple; - ev_av->start_func = start_simple; - ev_av->stop_func = stop_simple; - ev_av->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_av->name, ev_av); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); - native_event_t *ev_ad = &ntv_table.events[idx]; - ev_ad->id = idx; - ev_ad->name = strdup(name_buf); - ev_ad->descr = strdup(descr_buf); - ev_ad->device = d; - ev_ad->value = 0; - ev_ad->mode = PAPI_MODE_READ; - ev_ad->variant = 1; - ev_ad->subvariant = 0; - ev_ad->open_func = open_simple; - ev_ad->close_func = close_simple; - ev_ad->start_func = start_simple; - ev_ad->stop_func = stop_simple; - ev_ad->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_ad->name, ev_ad); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_subsystem_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); - native_event_t *ev_asv = &ntv_table.events[idx]; - ev_asv->id = idx; - ev_asv->name = strdup(name_buf); - ev_asv->descr = strdup(descr_buf); - ev_asv->device = d; - ev_asv->value = 0; - ev_asv->mode = PAPI_MODE_READ; - ev_asv->variant = 2; - ev_asv->subvariant = 0; - ev_asv->open_func = open_simple; - ev_asv->close_func = close_simple; - ev_asv->start_func = start_simple; - ev_asv->stop_func = stop_simple; - ev_asv->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_asv->name, ev_asv); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", - d); - native_event_t *ev_ass = &ntv_table.events[idx]; - ev_ass->id = idx; - ev_ass->name = strdup(name_buf); - ev_ass->descr = strdup(descr_buf); - ev_ass->device = d; - ev_ass->value = 0; - ev_ass->mode = PAPI_MODE_READ; - ev_ass->variant = 3; - ev_ass->subvariant = 0; - ev_ass->open_func = open_simple; - ev_ass->close_func = close_simple; - ev_ass->start_func = start_simple; - ev_ass->stop_func = stop_simple; - ev_ass->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_ass->name, ev_ass); - idx++; + snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); - native_event_t *ev_ar = &ntv_table.events[idx]; - ev_ar->id = idx; - ev_ar->name = strdup(name_buf); - ev_ar->descr = strdup(descr_buf); - ev_ar->device = d; - ev_ar->value = 0; - ev_ar->mode = PAPI_MODE_READ; - ev_ar->variant = 4; - ev_ar->subvariant = 0; - ev_ar->open_func = open_simple; - ev_ar->close_func = close_simple; - ev_ar->start_func = start_simple; - ev_ar->stop_func = stop_simple; - ev_ar->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_ar->name, ev_ar); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } + CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); - native_event_t *ev_cu = &ntv_table.events[idx]; - ev_cu->id = idx; - ev_cu->name = strdup(name_buf); - ev_cu->descr = strdup(descr_buf); - ev_cu->device = d; - ev_cu->value = 0; - ev_cu->mode = PAPI_MODE_READ; - ev_cu->variant = 5; - ev_cu->subvariant = 0; - ev_cu->open_func = open_simple; - ev_cu->close_func = close_simple; - ev_cu->start_func = start_simple; - ev_cu->stop_func = stop_simple; - ev_cu->access_func = access_amdsmi_asic_info; - htable_insert(htable, ev_cu->name, ev_cu); - idx++; + if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, + access_amdsmi_asic_info) != PAPI_OK) { + return PAPI_ENOSUPP; + } } } /* Driver info (strings hashed) */ @@ -4403,737 +2314,26 @@ static int init_event_table(void) { AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "driver_name_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", - d); - native_event_t *ev_dname = &ntv_table.events[idx]; - ev_dname->id = idx; - ev_dname->name = strdup(name_buf); - ev_dname->descr = strdup(descr_buf); - ev_dname->device = d; - ev_dname->value = 0; - ev_dname->mode = PAPI_MODE_READ; - ev_dname->variant = 3; - ev_dname->subvariant = 0; - ev_dname->open_func = open_simple; - ev_dname->close_func = close_simple; - ev_dname->start_func = start_simple; - ev_dname->stop_func = stop_simple; - ev_dname->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_dname->name, ev_dname); - idx++; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", - d); - native_event_t *ev_dd = &ntv_table.events[idx]; - ev_dd->id = idx; - ev_dd->name = strdup(name_buf); - ev_dd->descr = strdup(descr_buf); - ev_dd->device = d; - ev_dd->value = 0; - ev_dd->mode = PAPI_MODE_READ; - ev_dd->variant = 4; - ev_dd->subvariant = 0; - ev_dd->open_func = open_simple; - ev_dd->close_func = close_simple; - ev_dd->start_func = start_simple; - ev_dd->stop_func = stop_simple; - ev_dd->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_dd->name, ev_dd); - idx++; - } - } - /* VBIOS info (strings hashed) */ - /*if (amdsmi_get_gpu_vbios_info_p) { - amdsmi_vbios_info_t vb; - if (amdsmi_get_gpu_vbios_info_p(device_handles[d], &vb) == - AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "vbios_version_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS version (hash)", - d); native_event_t *ev_vbv = &ntv_table.events[idx]; ev_vbv->id = idx; - ev_vbv->name = strdup(name_buf); - ev_vbv->descr = strdup(descr_buf); - ev_vbv->device = d; - ev_vbv->value = 0; - ev_vbv->mode = PAPI_MODE_READ; - ev_vbv->variant = 5; - ev_vbv->subvariant = 0; - ev_vbv->open_func = open_simple; - ev_vbv->close_func = close_simple; - ev_vbv->start_func = start_simple; - ev_vbv->stop_func = stop_simple; - ev_vbv->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_vbv->name, ev_vbv); - idx++; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "vbios_part_number_hash:device=%d", - d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS part number - (hash)", d); native_event_t *ev_vbp = &ntv_table.events[idx]; ev_vbp->id = - idx; ev_vbp->name = strdup(name_buf); ev_vbp->descr = strdup(descr_buf); - ev_vbp->device = d; - ev_vbp->value = 0; - ev_vbp->mode = PAPI_MODE_READ; - ev_vbp->variant = 6; - ev_vbp->subvariant = 0; - ev_vbp->open_func = open_simple; - ev_vbp->close_func = close_simple; - ev_vbp->start_func = start_simple; - ev_vbp->stop_func = stop_simple; - ev_vbp->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_vbp->name, ev_vbp); - idx++; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "vbios_build_date_hash:device=%d", - d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vBIOS build date - (hash)", d); native_event_t *ev_vbd = &ntv_table.events[idx]; ev_vbd->id = - idx; ev_vbd->name = strdup(name_buf); ev_vbd->descr = strdup(descr_buf); - ev_vbd->device = d; - ev_vbd->value = 0; - ev_vbd->mode = PAPI_MODE_READ; - ev_vbd->variant = 7; - ev_vbd->subvariant = 0; - ev_vbd->open_func = open_simple; - ev_vbd->close_func = close_simple; - ev_vbd->start_func = start_simple; - ev_vbd->stop_func = stop_simple; - ev_vbd->access_func = access_amdsmi_gpu_string_hash; - htable_insert(htable, ev_vbd->name, ev_vbd); - idx++; - } - }*/ - /* PCIe metrics via amdsmi_get_link_metrics. Register per-link events and - * aggregate totals for XGMI and PCIe links. */ - amdsmi_link_metrics_t lm_probe; - memset(&lm_probe, 0, sizeof(lm_probe)); - int has_xgmi = 0, has_pcie = 0; - if (amdsmi_get_link_metrics_p(device_handles[d], &lm_probe) == - AMDSMI_STATUS_SUCCESS) { - uint32_t n = lm_probe.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) - n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; - for (uint32_t i = 0; i < n; ++i) { - uint32_t type = lm_probe.links[i].link_type; - if (type == AMDSMI_LINK_TYPE_XGMI) { - has_xgmi = 1; - /* Per-link XGMI read/write/bit rate/max bandwidth */ - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_read_kB:device=%d", - i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u read (kB)", d, i); - native_event_t *ev_lr = &ntv_table.events[idx]; - ev_lr->id = idx; - ev_lr->name = strdup(name_buf); - ev_lr->descr = strdup(descr_buf); - if (!ev_lr->name || !ev_lr->descr) - return PAPI_ENOMEM; - ev_lr->device = d; - ev_lr->value = 0; - ev_lr->mode = PAPI_MODE_READ; - ev_lr->variant = 0; - ev_lr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lr->open_func = open_simple; - ev_lr->close_func = close_simple; - ev_lr->start_func = start_simple; - ev_lr->stop_func = stop_simple; - ev_lr->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lr->name, ev_lr); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "xgmi_link%u_write_kB:device=%d", - i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u write (kB)", d, i); - native_event_t *ev_lw = &ntv_table.events[idx]; - ev_lw->id = idx; - ev_lw->name = strdup(name_buf); - ev_lw->descr = strdup(descr_buf); - if (!ev_lw->name || !ev_lw->descr) - return PAPI_ENOMEM; - ev_lw->device = d; - ev_lw->value = 0; - ev_lw->mode = PAPI_MODE_READ; - ev_lw->variant = 1; - ev_lw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lw->open_func = open_simple; - ev_lw->close_func = close_simple; - ev_lw->start_func = start_simple; - ev_lw->stop_func = stop_simple; - ev_lw->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lw->name, ev_lw); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u speed (Gb/s)", d, i); - native_event_t *ev_lb = &ntv_table.events[idx]; - ev_lb->id = idx; - ev_lb->name = strdup(name_buf); - ev_lb->descr = strdup(descr_buf); - if (!ev_lb->name || !ev_lb->descr) - return PAPI_ENOMEM; - ev_lb->device = d; - ev_lb->value = 0; - ev_lb->mode = PAPI_MODE_READ; - ev_lb->variant = 2; - ev_lb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lb->open_func = open_simple; - ev_lb->close_func = close_simple; - ev_lb->start_func = start_simple; - ev_lb->stop_func = stop_simple; - ev_lb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lb->name, ev_lb); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "xgmi_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d XGMI link %u max bandwidth (Gb/s)", d, i); - native_event_t *ev_lm = &ntv_table.events[idx]; - ev_lm->id = idx; - ev_lm->name = strdup(name_buf); - ev_lm->descr = strdup(descr_buf); - if (!ev_lm->name || !ev_lm->descr) - return PAPI_ENOMEM; - ev_lm->device = d; - ev_lm->value = 0; - ev_lm->mode = PAPI_MODE_READ; - ev_lm->variant = 3; - ev_lm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | i; - ev_lm->open_func = open_simple; - ev_lm->close_func = close_simple; - ev_lm->start_func = start_simple; - ev_lm->stop_func = stop_simple; - ev_lm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_lm->name, ev_lm); - idx++; - } else if (type == AMDSMI_LINK_TYPE_PCIE) { - has_pcie = 1; - /* Per-link PCIe bit rate/max bandwidth */ - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "pcie_link%u_bit_rate_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe link %u speed (Gb/s)", d, i); - native_event_t *ev_pb = &ntv_table.events[idx]; - ev_pb->id = idx; - ev_pb->name = strdup(name_buf); - ev_pb->descr = strdup(descr_buf); - if (!ev_pb->name || !ev_pb->descr) - return PAPI_ENOMEM; - ev_pb->device = d; - ev_pb->value = 0; - ev_pb->mode = PAPI_MODE_READ; - ev_pb->variant = 2; - ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; - ev_pb->open_func = open_simple; - ev_pb->close_func = close_simple; - ev_pb->start_func = start_simple; - ev_pb->stop_func = stop_simple; - ev_pb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pb->name, ev_pb); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "pcie_link%u_max_bandwidth_Gbps:device=%d", i, d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d PCIe link %u max bandwidth (Gb/s)", d, i); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id = idx; - ev_pm->name = strdup(name_buf); - ev_pm->descr = strdup(descr_buf); - if (!ev_pm->name || !ev_pm->descr) - return PAPI_ENOMEM; - ev_pm->device = d; - ev_pm->value = 0; - ev_pm->mode = PAPI_MODE_READ; - ev_pm->variant = 3; - ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | i; - ev_pm->open_func = open_simple; - ev_pm->close_func = close_simple; - ev_pm->start_func = start_simple; - ev_pm->stop_func = stop_simple; - ev_pm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pm->name, ev_pm); - idx++; - } - } - - /* --- Aggregate totals by link type --- */ - if (has_xgmi) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "xgmi_total_read_kB:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total XGMI read across links (kB)", d); - native_event_t *ev_xr = &ntv_table.events[idx]; - ev_xr->id = idx; - ev_xr->name = strdup(name_buf); - ev_xr->descr = strdup(descr_buf); - if (!ev_xr->name || !ev_xr->descr) - return PAPI_ENOMEM; - ev_xr->device = d; - ev_xr->value = 0; - ev_xr->mode = PAPI_MODE_READ; - ev_xr->variant = 0; - ev_xr->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xr->open_func = open_simple; - ev_xr->close_func = close_simple; - ev_xr->start_func = start_simple; - ev_xr->stop_func = stop_simple; - ev_xr->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xr->name, ev_xr); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "xgmi_total_write_kB:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total XGMI write across links (kB)", d); - native_event_t *ev_xw = &ntv_table.events[idx]; - ev_xw->id = idx; - ev_xw->name = strdup(name_buf); - ev_xw->descr = strdup(descr_buf); - if (!ev_xw->name || !ev_xw->descr) - return PAPI_ENOMEM; - ev_xw->device = d; - ev_xw->value = 0; - ev_xw->mode = PAPI_MODE_READ; - ev_xw->variant = 1; - ev_xw->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xw->open_func = open_simple; - ev_xw->close_func = close_simple; - ev_xw->start_func = start_simple; - ev_xw->stop_func = stop_simple; - ev_xw->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xw->name, ev_xw); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate XGMI link speed (Gb/s)", d); - native_event_t *ev_xb = &ntv_table.events[idx]; - ev_xb->id = idx; - ev_xb->name = strdup(name_buf); - ev_xb->descr = strdup(descr_buf); - if (!ev_xb->name || !ev_xb->descr) - return PAPI_ENOMEM; - ev_xb->device = d; - ev_xb->value = 0; - ev_xb->mode = PAPI_MODE_READ; - ev_xb->variant = 2; - ev_xb->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xb->open_func = open_simple; - ev_xb->close_func = close_simple; - ev_xb->start_func = start_simple; - ev_xb->stop_func = stop_simple; - ev_xb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xb->name, ev_xb); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "xgmi_total_max_bandwidth_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate XGMI max bandwidth (Gb/s)", d); - native_event_t *ev_xm = &ntv_table.events[idx]; - ev_xm->id = idx; - ev_xm->name = strdup(name_buf); - ev_xm->descr = strdup(descr_buf); - if (!ev_xm->name || !ev_xm->descr) - return PAPI_ENOMEM; - ev_xm->device = d; - ev_xm->value = 0; - ev_xm->mode = PAPI_MODE_READ; - ev_xm->variant = 3; - ev_xm->subvariant = (AMDSMI_LINK_TYPE_XGMI << 16) | 0xFFFF; - ev_xm->open_func = open_simple; - ev_xm->close_func = close_simple; - ev_xm->start_func = start_simple; - ev_xm->stop_func = stop_simple; - ev_xm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_xm->name, ev_xm); - idx++; - } - - if (has_pcie) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "pcie_total_bit_rate_Gbps:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate PCIe link speed (Gb/s)", d); - native_event_t *ev_pb = &ntv_table.events[idx]; - ev_pb->id = idx; - ev_pb->name = strdup(name_buf); - ev_pb->descr = strdup(descr_buf); - if (!ev_pb->name || !ev_pb->descr) - return PAPI_ENOMEM; - ev_pb->device = d; - ev_pb->value = 0; - ev_pb->mode = PAPI_MODE_READ; - ev_pb->variant = 2; - ev_pb->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; - ev_pb->open_func = open_simple; - ev_pb->close_func = close_simple; - ev_pb->start_func = start_simple; - ev_pb->stop_func = stop_simple; - ev_pb->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pb->name, ev_pb); - idx++; - - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "pcie_total_max_bandwidth_Gbps:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), - "Device %d aggregate PCIe max bandwidth (Gb/s)", d); - native_event_t *ev_pm = &ntv_table.events[idx]; - ev_pm->id = idx; - ev_pm->name = strdup(name_buf); - ev_pm->descr = strdup(descr_buf); - if (!ev_pm->name || !ev_pm->descr) + "Device %d driver name (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, + access_amdsmi_gpu_string_hash) != PAPI_OK) { return PAPI_ENOMEM; - ev_pm->device = d; - ev_pm->value = 0; - ev_pm->mode = PAPI_MODE_READ; - ev_pm->variant = 3; - ev_pm->subvariant = (AMDSMI_LINK_TYPE_PCIE << 16) | 0xFFFF; - ev_pm->open_func = open_simple; - ev_pm->close_func = close_simple; - ev_pm->start_func = start_simple; - ev_pm->stop_func = stop_simple; - ev_pm->access_func = access_amdsmi_link_metrics; - htable_insert(htable, ev_pm->name, ev_pm); - idx++; - } - } - - /* Per-process metrics (up to two processes) */ - if (amdsmi_get_gpu_process_list_p) { - const struct { - const char *suffix; - const char *descr; - uint32_t variant; - } pf[] = { - {"pid", "PID", 0}, - {"mem_bytes", "memory usage (bytes)", 1}, - {"engine_gfx_ns", "GFX engine time (ns)", 2}, - {"engine_enc_ns", "ENC engine time (ns)", 3}, - {"gtt_mem_MB", "GTT memory (MB)", 4}, - {"cpu_mem_MB", "CPU memory (MB)", 5}, - {"vram_mem_MB", "VRAM memory (MB)", 6}, - }; - - for (int p = 0; p < 2; ++p) { - for (size_t f = 0; f < sizeof(pf) / sizeof(pf[0]); ++f) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "process%d_%s:device=%d", p, - pf[f].suffix, d); - snprintf(descr_buf, sizeof(descr_buf), "Device %d process %d %s", d, - p, pf[f].descr); - native_event_t *ev = &ntv_table.events[idx]; - ev->id = idx; - ev->name = strdup(name_buf); - ev->descr = strdup(descr_buf); - if (!ev->name || !ev->descr) - return PAPI_ENOMEM; - ev->device = d; - ev->value = 0; - ev->mode = PAPI_MODE_READ; - ev->variant = pf[f].variant; - ev->subvariant = p; - ev->open_func = open_simple; - ev->close_func = close_simple; - ev->start_func = start_simple; - ev->stop_func = stop_simple; - ev->access_func = access_amdsmi_process_info; - htable_insert(htable, ev->name, ev); - idx++; - } - } - } - /* ECC totals & enabled mask (where supported) */ - if (amdsmi_get_gpu_total_ecc_count_p) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_total_correctable:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total ECC correctable errors", d); - native_event_t *ev_ecct = &ntv_table.events[idx]; - ev_ecct->id = idx; - ev_ecct->name = strdup(name_buf); - ev_ecct->descr = strdup(descr_buf); - ev_ecct->device = d; - ev_ecct->value = 0; - ev_ecct->mode = PAPI_MODE_READ; - ev_ecct->variant = 0; - ev_ecct->subvariant = 0; - ev_ecct->open_func = open_simple; - ev_ecct->close_func = close_simple; - ev_ecct->start_func = start_simple; - ev_ecct->stop_func = stop_simple; - ev_ecct->access_func = access_amdsmi_ecc_total; - htable_insert(htable, ev_ecct->name, ev_ecct); - idx++; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total ECC uncorrectable errors", d); - native_event_t *ev_ecctu = &ntv_table.events[idx]; - ev_ecctu->id = idx; - ev_ecctu->name = strdup(name_buf); - ev_ecctu->descr = strdup(descr_buf); - ev_ecctu->device = d; - ev_ecctu->value = 0; - ev_ecctu->mode = PAPI_MODE_READ; - ev_ecctu->variant = 1; - ev_ecctu->subvariant = 0; - ev_ecctu->open_func = open_simple; - ev_ecctu->close_func = close_simple; - ev_ecctu->start_func = start_simple; - ev_ecctu->stop_func = stop_simple; - ev_ecctu->access_func = access_amdsmi_ecc_total; - htable_insert(htable, ev_ecctu->name, ev_ecctu); - idx++; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d total ECC deferred errors", d); - native_event_t *ev_ecctd = &ntv_table.events[idx]; - ev_ecctd->id = idx; - ev_ecctd->name = strdup(name_buf); - ev_ecctd->descr = strdup(descr_buf); - ev_ecctd->device = d; - ev_ecctd->value = 0; - ev_ecctd->mode = PAPI_MODE_READ; - ev_ecctd->variant = 2; - ev_ecctd->subvariant = 0; - ev_ecctd->open_func = open_simple; - ev_ecctd->close_func = close_simple; - ev_ecctd->start_func = start_simple; - ev_ecctd->stop_func = stop_simple; - ev_ecctd->access_func = access_amdsmi_ecc_total; - htable_insert(htable, ev_ecctd->name, ev_ecctd); - idx++; - } - if (amdsmi_get_gpu_ecc_count_p) { - amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, - AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, - AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, - AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, - AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = { - "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", - "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", - "mca", "vcn", "jpeg", "ih", "mpio"}; - const char *cnt_names[] = {"correctable", "uncorrectable", "deferred"}; - size_t nb = sizeof(blocks) / sizeof(blocks[0]); - for (size_t bi = 0; bi < nb; ++bi) { - amdsmi_error_count_t ec; - if (amdsmi_get_gpu_ecc_count_p(device_handles[d], blocks[bi], &ec) == - AMDSMI_STATUS_SUCCESS) { - for (int t = 0; t < 3; ++t) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_%s_%s:device=%d", - block_names[bi], cnt_names[t], d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d %s block ECC %s errors", d, block_names[bi], - cnt_names[t]); - native_event_t *ev_blk = &ntv_table.events[idx]; - ev_blk->id = idx; - ev_blk->name = strdup(name_buf); - ev_blk->descr = strdup(descr_buf); - ev_blk->device = d; - ev_blk->value = 0; - ev_blk->mode = PAPI_MODE_READ; - ev_blk->variant = t; - ev_blk->subvariant = (uint32_t)blocks[bi]; - ev_blk->open_func = open_simple; - ev_blk->close_func = close_simple; - ev_blk->start_func = start_simple; - ev_blk->stop_func = stop_simple; - ev_blk->access_func = access_amdsmi_ecc_block; - htable_insert(htable, ev_blk->name, ev_blk); - idx++; - } } - } - } - if (amdsmi_get_gpu_ecc_status_p) { - amdsmi_gpu_block_t blocks[] = { - AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, - AMDSMI_GPU_BLOCK_GFX, AMDSMI_GPU_BLOCK_MMHUB, - AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, - AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, - AMDSMI_GPU_BLOCK_DF, AMDSMI_GPU_BLOCK_SMN, - AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, - AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, - AMDSMI_GPU_BLOCK_MCA, AMDSMI_GPU_BLOCK_VCN, - AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, - AMDSMI_GPU_BLOCK_MPIO}; - const char *block_names[] = { - "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", - "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", - "mca", "vcn", "jpeg", "ih", "mpio"}; - size_t nb = sizeof(blocks) / sizeof(blocks[0]); - for (size_t bi = 0; bi < nb; ++bi) { - amdsmi_ras_err_state_t st; - if (amdsmi_get_gpu_ecc_status_p(device_handles[d], blocks[bi], &st) == - AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", - block_names[bi], d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d %s block ECC status", d, block_names[bi]); - native_event_t *ev_blk = &ntv_table.events[idx]; - ev_blk->id = idx; - ev_blk->name = strdup(name_buf); - ev_blk->descr = strdup(descr_buf); - ev_blk->device = d; - ev_blk->value = 0; - ev_blk->mode = PAPI_MODE_READ; - ev_blk->variant = 0; - ev_blk->subvariant = (uint32_t)blocks[bi]; - ev_blk->open_func = open_simple; - ev_blk->close_func = close_simple; - ev_blk->start_func = start_simple; - ev_blk->stop_func = stop_simple; - ev_blk->access_func = access_amdsmi_ecc_status; - htable_insert(htable, ev_blk->name, ev_blk); - idx++; - } - } - } - if (amdsmi_get_gpu_ecc_enabled_p) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d ECC enabled block bitmask", d); - native_event_t *ev_eccm = &ntv_table.events[idx]; - ev_eccm->id = idx; - ev_eccm->name = strdup(name_buf); - ev_eccm->descr = strdup(descr_buf); - ev_eccm->device = d; - ev_eccm->value = 0; - ev_eccm->mode = PAPI_MODE_READ; - ev_eccm->variant = 0; - ev_eccm->subvariant = 0; - ev_eccm->open_func = open_simple; - ev_eccm->close_func = close_simple; - ev_eccm->start_func = start_simple; - ev_eccm->stop_func = stop_simple; - ev_eccm->access_func = access_amdsmi_ecc_enabled_mask; - htable_insert(htable, ev_eccm->name, ev_eccm); - idx++; - } - /* Partitioning state (hash/enumeration) */ - if (amdsmi_get_gpu_compute_partition_p) { - char dummy[128] = {0}; - if (amdsmi_get_gpu_compute_partition_p(device_handles[d], dummy, - sizeof(dummy)) == - AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "compute_partition_hash:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d compute partition (hash)", d); - native_event_t *ev_cpart = &ntv_table.events[idx]; - ev_cpart->id = idx; - ev_cpart->name = strdup(name_buf); - ev_cpart->descr = strdup(descr_buf); - if (!ev_cpart->name || !ev_cpart->descr) { - return PAPI_ENOMEM; - } - ev_cpart->device = d; - ev_cpart->value = 0; - ev_cpart->mode = PAPI_MODE_READ; - ev_cpart->variant = 0; - ev_cpart->subvariant = 0; - ev_cpart->open_func = open_simple; - ev_cpart->close_func = close_simple; - ev_cpart->start_func = start_simple; - ev_cpart->stop_func = stop_simple; - ev_cpart->access_func = access_amdsmi_compute_partition_hash; - htable_insert(htable, ev_cpart->name, ev_cpart); - idx++; - } - } - if (amdsmi_get_gpu_memory_partition_p) { - char dummy[128] = {0}; - if (amdsmi_get_gpu_memory_partition_p(device_handles[d], dummy, - sizeof(dummy)) == - AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", - d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d memory partition (hash)", d); - native_event_t *ev_mpart = &ntv_table.events[idx]; - ev_mpart->id = idx; - ev_mpart->name = strdup(name_buf); - ev_mpart->descr = strdup(descr_buf); - if (!ev_mpart->name || !ev_mpart->descr) { - return PAPI_ENOMEM; - } - ev_mpart->device = d; - ev_mpart->value = 0; - ev_mpart->mode = PAPI_MODE_READ; - ev_mpart->variant = 0; - ev_mpart->subvariant = 0; - ev_mpart->open_func = open_simple; - ev_mpart->close_func = close_simple; - ev_mpart->start_func = start_simple; - ev_mpart->stop_func = stop_simple; - ev_mpart->access_func = access_amdsmi_memory_partition_hash; - htable_insert(htable, ev_mpart->name, ev_mpart); - idx++; - } - } - if (amdsmi_get_gpu_accelerator_partition_profile_p) { - amdsmi_accelerator_partition_profile_t prof; - uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - if (amdsmi_get_gpu_accelerator_partition_profile_p( - device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d accelerator profile partitions", d); - native_event_t *ev_anp = &ntv_table.events[idx]; - ev_anp->id = idx; - ev_anp->name = strdup(name_buf); - ev_anp->descr = strdup(descr_buf); - if (!ev_anp->name || !ev_anp->descr) { + snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_gpu_string_hash) != PAPI_OK) { return PAPI_ENOMEM; } - ev_anp->device = d; - ev_anp->value = 0; - ev_anp->mode = PAPI_MODE_READ; - ev_anp->variant = 0; - ev_anp->subvariant = 0; - ev_anp->open_func = open_simple; - ev_anp->close_func = close_simple; - ev_anp->start_func = start_simple; - ev_anp->stop_func = stop_simple; - ev_anp->access_func = access_amdsmi_accelerator_num_partitions; - htable_insert(htable, ev_anp->name, ev_anp); - idx++; } } + /* VBIOS info (strings hashed) */ + // (vBIOS events omitted) + /* PCIe link metrics via amdsmi_get_link_metrics (XGMI and PCIe links). + These events were enumerated above in XGMI throughput and replay sections. */ } - // Cleanup - no device capabilities cache to free ntv_table.count = idx; return PAPI_OK; } From c770de7e28066579322fc3b3c43ebdd898640d8c Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 28 Aug 2025 14:19:10 -0400 Subject: [PATCH 077/147] Move AMD SMI helper functions earlier --- src/components/amd_smi/amds.c | 267 +++++++++++++++++++++++++++++++++- 1 file changed, 266 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index b1f7ea670..fe436edd6 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -5,6 +5,7 @@ #include "htable.h" #include "papi.h" #include "papi_memory.h" +#include #include #include #include @@ -283,10 +284,273 @@ static int load_amdsmi_sym(void) { return PAPI_OK; } +static int shutdown_event_table(void) { + // Remove all events from hash table and free their names/descr + for (int i = 0; i < ntv_table.count; ++i) { + htable_delete(htable, ntv_table.events[i].name); + papi_free(ntv_table.events[i].name); + papi_free(ntv_table.events[i].descr); + } + papi_free(ntv_table.events); + ntv_table.events = NULL; + ntv_table.count = 0; + return PAPI_OK; +} + +static int init_device_table(void) { + // Nothing to do (device_handles and device_count already set in amds_init) + return PAPI_OK; +} + +static int shutdown_device_table(void) { + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + } + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) + papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + device_count = 0; + gpu_count = 0; + cpu_count = 0; + return PAPI_OK; +} + +int amds_init(void) { + // Check if already initialized to avoid expensive re-initialization + if (device_handles != NULL && device_count > 0) { + return PAPI_OK; // Already initialized + } + int papi_errno = load_amdsmi_sym(); + if (papi_errno != PAPI_OK) { + return papi_errno; + } + // AMDSMI_INIT_AMD_CPUS + amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); + if (status != AMDSMI_STATUS_SUCCESS) { + strcpy(error_string, "amdsmi_init failed"); + return PAPI_ENOSUPP; + } + htable_init(&htable); + // Discover GPU and CPU devices + uint32_t socket_count = 0; + status = amdsmi_get_socket_handles_p(&socket_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS || socket_count == 0) { + snprintf(error_string, sizeof(error_string), + "Error discovering sockets or no AMD socket found."); + papi_errno = PAPI_ENOEVNT; + goto fn_fail; + } + amdsmi_socket_handle *sockets = (amdsmi_socket_handle *)papi_calloc( + socket_count, sizeof(amdsmi_socket_handle)); + if (!sockets) { + papi_errno = PAPI_ENOMEM; + goto fn_fail; + } + status = amdsmi_get_socket_handles_p(&socket_count, sockets); + if (status != AMDSMI_STATUS_SUCCESS) { + snprintf(error_string, sizeof(error_string), + "Error getting socket handles."); + papi_free(sockets); + papi_errno = PAPI_ENOSUPP; + goto fn_fail; + } + device_count = 0; + uint32_t total_gpu_count = 0; + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( + sockets[s], proc_type, NULL, &gpu_count_local); + if (st == AMDSMI_STATUS_SUCCESS) { + total_gpu_count += gpu_count_local; + } + } + uint32_t total_cpu_count = 0; +#ifndef AMDSMI_DISABLE_ESMI + status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); + if (status != AMDSMI_STATUS_SUCCESS) { + total_cpu_count = 0; + } +#endif + if (total_gpu_count == 0 && total_cpu_count == 0) { + snprintf(error_string, sizeof(error_string), + "No AMD GPU or CPU devices found."); + papi_errno = PAPI_ENOEVNT; + papi_free(sockets); + goto fn_fail; + } + device_handles = (amdsmi_processor_handle *)papi_calloc( + total_gpu_count + total_cpu_count, sizeof(*device_handles)); + if (!device_handles) { + papi_errno = PAPI_ENOMEM; + snprintf(error_string, sizeof(error_string), + "Memory allocation error for device handles."); + papi_free(sockets); + goto fn_fail; + } + // Retrieve GPU processor handles for each socket - optimized to reduce + // allocations + for (uint32_t s = 0; s < socket_count; ++s) { + uint32_t gpu_count_local = 0; + processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; + status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, + &gpu_count_local); + if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { + continue; // no GPU on this socket or error + } + // Use the main device_handles array directly to avoid extra allocation + amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; + status = amdsmi_get_processor_handles_by_type_p( + sockets[s], proc_type, gpu_handles, &gpu_count_local); + if (status == AMDSMI_STATUS_SUCCESS) { + device_count += gpu_count_local; + } + } + papi_free(sockets); + // Set gpu_count for use in event table initialization + gpu_count = device_count; // All devices added so far are GPUs +#ifndef AMDSMI_DISABLE_ESMI + // Retrieve CPU socket handles + amdsmi_processor_handle *cpu_handles = NULL; + if (total_cpu_count > 0) { + cpu_handles = (amdsmi_processor_handle *)papi_calloc( + total_cpu_count, sizeof(amdsmi_processor_handle)); + if (!cpu_handles) { + papi_errno = PAPI_ENOMEM; + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU handles."); + goto fn_fail; + } + status = amdsmi_get_cpu_handles_p(&total_cpu_count, cpu_handles); + if (status != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_handles); + cpu_handles = NULL; + total_cpu_count = 0; + } + } + if (cpu_handles) { + for (uint32_t i = 0; i < total_cpu_count; ++i) { + device_handles[device_count++] = cpu_handles[i]; + } + papi_free(cpu_handles); + } +#endif + // Set global GPU/CPU counts + gpu_count = total_gpu_count; + cpu_count = total_cpu_count; + // Retrieve CPU core handles for each CPU socket + if (cpu_count > 0) { + cpu_core_handles = (amdsmi_processor_handle **)papi_calloc( + cpu_count, sizeof(amdsmi_processor_handle *)); + cores_per_socket = (uint32_t *)papi_calloc(cpu_count, sizeof(uint32_t)); + if (!cpu_core_handles || !cores_per_socket) { + papi_errno = PAPI_ENOMEM; + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU core handles."); + if (cpu_core_handles) + papi_free(cpu_core_handles); + if (cores_per_socket) + papi_free(cores_per_socket); + goto fn_fail; + } + for (uint32_t s = 0; s < cpu_count; ++s) { + uint32_t core_count = 0; + amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( + device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, + NULL, &core_count); + if (st != AMDSMI_STATUS_SUCCESS || core_count == 0) { + cores_per_socket[s] = 0; + cpu_core_handles[s] = NULL; + continue; + } + cpu_core_handles[s] = (amdsmi_processor_handle *)papi_calloc( + core_count, sizeof(amdsmi_processor_handle)); + if (!cpu_core_handles[s]) { + papi_errno = PAPI_ENOMEM; + snprintf(error_string, sizeof(error_string), + "Memory allocation error for CPU core handles on socket %u.", + s); + for (uint32_t t = 0; t < s; ++t) { + if (cpu_core_handles[t]) + papi_free(cpu_core_handles[t]); + } + papi_free(cpu_core_handles); + papi_free(cores_per_socket); + goto fn_fail; + } + st = amdsmi_get_processor_handles_by_type_p( + device_handles[gpu_count + s], AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, + cpu_core_handles[s], &core_count); + if (st != AMDSMI_STATUS_SUCCESS) { + papi_free(cpu_core_handles[s]); + cpu_core_handles[s] = NULL; + cores_per_socket[s] = 0; + } else { + cores_per_socket[s] = core_count; + } + } + } + // Initialize the native event table for all discovered metrics + papi_errno = init_event_table(); + if (papi_errno != PAPI_OK) { + snprintf(error_string, sizeof(error_string), + "Error while initializing the native event table."); + goto fn_fail; + } + ntv_table_p = &ntv_table; + return PAPI_OK; +fn_fail: + htable_shutdown(htable); + if (device_handles) { + papi_free(device_handles); + device_handles = NULL; + device_count = 0; + } + // sockets already freed if allocated + if (cpu_core_handles) { + for (int s = 0; s < cpu_count; ++s) { + if (cpu_core_handles[s]) + papi_free(cpu_core_handles[s]); + } + papi_free(cpu_core_handles); + cpu_core_handles = NULL; + } + if (cores_per_socket) { + papi_free(cores_per_socket); + cores_per_socket = NULL; + } + amdsmi_shut_down_p(); + return papi_errno; +} + +int amds_shutdown(void) { + shutdown_event_table(); + shutdown_device_table(); + htable_shutdown(htable); + + return amdsmi_shut_down_p(); +} + +int amds_err_get_last(const char **err_string) { + if (err_string) + *err_string = error_string; + return PAPI_OK; +} + // Helper to add a new event entry to ntv_table static int add_event(int *idx_ptr, const char *name, const char *descr, int device, uint32_t variant, uint32_t subvariant, int mode, - int (*access_func)(native_event_t *)) { + amds_accessor_t access_func) { native_event_t *ev = &ntv_table.events[*idx_ptr]; ev->id = *idx_ptr; ev->name = strdup(name); @@ -2337,3 +2601,4 @@ static int init_event_table(void) { ntv_table.count = idx; return PAPI_OK; } + From c1a0bd77f0bc3674b0252f5f6d637e1780cdbabd Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Fri, 29 Aug 2025 14:08:35 -0700 Subject: [PATCH 078/147] update amdsmi.h reference --- src/components/amd_smi/amds.c | 2 +- src/components/amd_smi/amds_priv.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index fe436edd6..21c748d68 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,7 +1,7 @@ #include "amds.h" #define AMDS_PRIV_IMPL #include "amds_priv.h" -#include "amdsmi.h" +#include #include "htable.h" #include "papi.h" #include "papi_memory.h" diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 663bd0ced..9cd56740a 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -3,7 +3,7 @@ #define AMDSMI_DISABLE_ESMI -#include "amdsmi.h" +#include #include /* Mode enumeration used by accessors */ From b5c70b2235b507d2b297d5bca67fb2a05f5abb72 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sat, 30 Aug 2025 22:14:25 -0400 Subject: [PATCH 079/147] Add AMD SMI version gating --- src/components/amd_smi/amds.c | 16 ++++++++++++---- src/components/amd_smi/amds_accessors.c | 8 ++++---- src/components/amd_smi/amds_priv.h | 2 ++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 21c748d68..e47319990 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -33,6 +33,7 @@ static uint32_t *cores_per_socket = NULL; static void *amds_dlp = NULL; static void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; +static uint32_t amdsmi_lib_major = 0; // Forward declarations for internal helpers static int load_amdsmi_sym(void); static int init_device_table(void); @@ -55,6 +56,7 @@ amdsmi_processor_handle **amds_get_cpu_core_handles(void) { uint32_t *amds_get_cores_per_socket(void) { return cores_per_socket; } native_event_table_t *amds_get_ntv_table(void) { return ntv_table_p; } void *amds_get_htable(void) { return htable; } +uint32_t amds_get_lib_major(void) { return amdsmi_lib_major; } #define CHECK_EVENT_IDX(i) \ do { \ @@ -340,6 +342,12 @@ int amds_init(void) { strcpy(error_string, "amdsmi_init failed"); return PAPI_ENOSUPP; } + if (amdsmi_get_lib_version_p) { + amdsmi_version_t vinfo; + if (amdsmi_get_lib_version_p(&vinfo) == AMDSMI_STATUS_SUCCESS) { + amdsmi_lib_major = vinfo.major; + } + } htable_init(&htable); // Discover GPU and CPU devices uint32_t socket_count = 0; @@ -897,8 +905,8 @@ static int init_event_table(void) { } } - // GPU PM metrics count event - if (amdsmi_get_gpu_pm_metrics_info_p) { + // GPU PM metrics count event (available in lib version 25+) + if (amdsmi_lib_major >= 25 && amdsmi_get_gpu_pm_metrics_info_p) { amdsmi_name_value_t *metrics = NULL; uint32_t mcount = 0; @@ -1260,8 +1268,8 @@ static int init_event_table(void) { } } } - // GPU register table metrics count events - if (amdsmi_get_gpu_reg_table_info_p) { + // GPU register table metrics count events (available in lib version 25+) + if (amdsmi_lib_major >= 25 && amdsmi_get_gpu_reg_table_info_p) { amdsmi_reg_type_t reg_types[] = {AMDSMI_REG_XGMI, AMDSMI_REG_WAFL, AMDSMI_REG_PCIE, AMDSMI_REG_USR, AMDSMI_REG_USR1}; diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 15138e5ee..c237c5cc4 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1430,7 +1430,7 @@ int access_amdsmi_pm_metrics_count(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_pm_metrics_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; amdsmi_name_value_t *metrics = NULL; @@ -1451,7 +1451,7 @@ int access_amdsmi_pm_metric_value(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_pm_metrics_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_pm_metrics_info_p) return PAPI_ENOSUPP; amdsmi_name_value_t *metrics = NULL; @@ -1529,7 +1529,7 @@ int access_amdsmi_reg_count(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_reg_table_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; /* set at registration */ @@ -1551,7 +1551,7 @@ int access_amdsmi_reg_value(int mode, void *arg) { } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_reg_table_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_reg_table_info_p) return PAPI_ENOSUPP; amdsmi_reg_type_t reg_type = (amdsmi_reg_type_t)event->variant; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 9cd56740a..f7af3b32b 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -45,6 +45,7 @@ void *amds_get_htable(void); native_event_table_t *amds_get_ntv_table(void); unsigned int amds_get_lock(void); void amds_set_lock(unsigned int lock); +uint32_t amds_get_lib_major(void); #ifndef AMDS_PRIV_IMPL #define device_handles (amds_get_device_handles()) @@ -55,6 +56,7 @@ void amds_set_lock(unsigned int lock); #define cores_per_socket (amds_get_cores_per_socket()) #define htable (amds_get_htable()) #define ntv_table_p (amds_get_ntv_table()) +#define amdsmi_lib_major (amds_get_lib_major()) #endif /* AMD SMI function pointers */ From 4b0f0ac4ebb590202530ebecfc89f3cef785e255 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sat, 30 Aug 2025 22:29:14 -0400 Subject: [PATCH 080/147] Gate additional AMD SMI features by version --- src/components/amd_smi/amds.c | 77 ++++++++++++++++--------- src/components/amd_smi/amds_accessors.c | 20 ++++++- src/components/amd_smi/amds_funcs.h | 17 ++++-- src/components/amd_smi/amds_priv.h | 8 +++ 4 files changed, 87 insertions(+), 35 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index e47319990..de651735b 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -177,8 +177,10 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_id_p = sym("amdsmi_get_gpu_id", NULL); amdsmi_get_gpu_revision_p = sym("amdsmi_get_gpu_revision", NULL); amdsmi_get_gpu_subsystem_id_p = sym("amdsmi_get_gpu_subsystem_id", NULL); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 amdsmi_get_gpu_virtualization_mode_p = sym("amdsmi_get_gpu_virtualization_mode", NULL); +#endif amdsmi_get_gpu_process_isolation_p = sym("amdsmi_get_gpu_process_isolation", NULL); amdsmi_get_gpu_xcd_counter_p = sym("amdsmi_get_gpu_xcd_counter", NULL); @@ -197,8 +199,10 @@ static int load_amdsmi_sym(void) { amdsmi_get_fw_info_p = sym("amdsmi_get_fw_info", NULL); amdsmi_get_gpu_vbios_info_p = sym("amdsmi_get_gpu_vbios_info", NULL); amdsmi_get_gpu_device_uuid_p = sym("amdsmi_get_gpu_device_uuid", NULL); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 amdsmi_get_gpu_enumeration_info_p = sym("amdsmi_get_gpu_enumeration_info", NULL); +#endif amdsmi_get_gpu_vendor_name_p = sym("amdsmi_get_gpu_vendor_name", NULL); amdsmi_get_gpu_vram_vendor_p = sym("amdsmi_get_gpu_vram_vendor", NULL); amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); @@ -764,15 +768,19 @@ static int init_event_table(void) { return PAPI_ENOMEM; } - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "pcie_max_interface_version:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d maximum PCIe interface version", d); - if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { - return PAPI_ENOMEM; +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + if (amdsmi_lib_major >= 25) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "pcie_max_interface_version:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d maximum PCIe interface version", d); + if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, + access_amdsmi_pcie_info) != PAPI_OK) { + return PAPI_ENOMEM; + } } +#endif CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_width:device=%d", d); @@ -1721,8 +1729,9 @@ static int init_event_table(void) { } } // GPU Virtualization Mode +#if AMDSMI_LIB_VERSION_MAJOR >= 25 amdsmi_virtualization_mode_t vmode; - if (amdsmi_get_gpu_virtualization_mode_p && + if (amdsmi_lib_major >= 25 && amdsmi_get_gpu_virtualization_mode_p && amdsmi_get_gpu_virtualization_mode_p(device_handles[d], &vmode) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "gpu_virtualization_mode:device=%d", @@ -1734,6 +1743,7 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } +#endif // GPU NUMA Node if (amdsmi_get_gpu_topo_numa_affinity_p(device_handles[d], &numa) == AMDSMI_STATUS_SUCCESS) { @@ -1810,18 +1820,23 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_vram_info_p) { - amdsmi_vram_info_t vinfo; - if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == - AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "vram_max_bandwidth:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d VRAM max bandwidth (GB/s)", d); - if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_max_bandwidth) != PAPI_OK) { - return PAPI_ENOMEM; +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + if (amdsmi_lib_major >= 25) { + amdsmi_vram_info_t vinfo; + if (amdsmi_get_gpu_vram_info_p(device_handles[d], &vinfo) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "vram_max_bandwidth:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d VRAM max bandwidth (GB/s)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_vram_max_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } } } +#endif } if (amdsmi_get_gpu_bad_page_info_p) { @@ -1914,15 +1929,19 @@ static int init_event_table(void) { } /* Register socket power in microwatts */ - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d power sensor %u socket power (uW)", d, s); - if (add_event(&idx, name_buf, descr_buf, d, 2, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { - return PAPI_ENOMEM; +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + if (amdsmi_lib_major >= 25) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "power_sensor_socket_microwatts:device=%d:sensor=%u", d, s); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power sensor %u socket power (uW)", d, s); + if (add_event(&idx, name_buf, descr_buf, d, 2, s, PAPI_MODE_READ, + access_amdsmi_power_sensor) != PAPI_OK) { + return PAPI_ENOMEM; + } } +#endif /* Register GFX voltage */ CHECK_EVENT_IDX(idx); @@ -2488,7 +2507,8 @@ static int init_event_table(void) { } /* Enumeration info (drm render/card, hsa/hip ids) */ - if (amdsmi_get_gpu_enumeration_info_p) { +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + if (amdsmi_lib_major >= 25 && amdsmi_get_gpu_enumeration_info_p) { amdsmi_enumeration_info_t einfo; if (amdsmi_get_gpu_enumeration_info_p(device_handles[d], &einfo) == AMDSMI_STATUS_SUCCESS) { @@ -2522,6 +2542,7 @@ static int init_event_table(void) { } } } +#endif /* ASIC info (numeric IDs & CU count) */ if (amdsmi_get_gpu_asic_info_p) { amdsmi_asic_info_t ainfo; diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index c237c5cc4..f9f22ef2d 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -131,10 +131,11 @@ int access_amdsmi_gpu_string_hash(int mode, void *arg) { event->value = (int64_t)_str_to_u64_hash(buf); return PAPI_OK; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_enumeration_info(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_enumeration_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_enumeration_info_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) @@ -161,6 +162,7 @@ int access_amdsmi_enumeration_info(int mode, void *arg) { } return PAPI_OK; } +#endif int access_amdsmi_asic_info(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; @@ -754,7 +756,10 @@ int access_amdsmi_gpu_info(int mode, void *arg) { } break; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 case 4: { + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_virtualization_mode_p) + return PAPI_ENOSUPP; amdsmi_virtualization_mode_t mode_val; status = amdsmi_get_gpu_virtualization_mode_p(device_handles[event->device], &mode_val); if (status == AMDSMI_STATUS_SUCCESS) { @@ -762,6 +767,7 @@ int access_amdsmi_gpu_info(int mode, void *arg) { } break; } +#endif case 5: { int32_t numa_node = -1; status = amdsmi_get_gpu_topo_numa_affinity_p(device_handles[event->device], &numa_node); @@ -1831,10 +1837,11 @@ int access_amdsmi_fw_version(int mode, void *arg) { return PAPI_EMISC; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_info_p) + if (amdsmi_lib_major < 25 || !amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) @@ -1846,6 +1853,7 @@ int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { event->value = (int64_t)info.vram_max_bandwidth; /* GB/s */ return PAPI_OK; } +#endif int access_amdsmi_bad_page_count(int mode, void *arg) { if (mode != PAPI_MODE_READ) @@ -1938,9 +1946,13 @@ int access_amdsmi_power_sensor(int mode, void *arg) { case 1: event->value = (int64_t)info.average_socket_power; break; +#if AMDSMI_LIB_VERSION_MAJOR >= 25 case 2: + if (amdsmi_lib_major < 25) + return PAPI_ENOSUPP; event->value = (int64_t)info.socket_power; break; +#endif case 3: event->value = (int64_t)info.gfx_voltage; break; @@ -1984,9 +1996,13 @@ int access_amdsmi_pcie_info(int mode, void *arg) { case 3: event->value = (int64_t)info.pcie_static.slot_type; break; +#if AMDSMI_LIB_VERSION_MAJOR >= 25 case 4: + if (amdsmi_lib_major < 25) + return PAPI_ENOSUPP; event->value = (int64_t)info.pcie_static.max_pcie_interface_version; break; +#endif case 5: event->value = info.pcie_metric.pcie_width; break; diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h index d5fb284cd..bd44ce1ae 100644 --- a/src/components/amd_smi/amds_funcs.h +++ b/src/components/amd_smi/amds_funcs.h @@ -1,7 +1,7 @@ #ifndef AMDS_FUNCS_H #define AMDS_FUNCS_H -#define AMD_SMI_GPU_FUNCTIONS(_) \ +#define AMD_SMI_GPU_FUNCTIONS_BASE(_) \ _(amdsmi_init_p, amdsmi_status_t, (uint64_t)) \ _(amdsmi_shut_down_p, amdsmi_status_t, (void)) \ _(amdsmi_get_socket_handles_p, amdsmi_status_t, \ @@ -55,8 +55,6 @@ (amdsmi_processor_handle, amdsmi_vbios_info_t *)) \ _(amdsmi_get_gpu_device_uuid_p, amdsmi_status_t, \ (amdsmi_processor_handle, unsigned int *, char *)) \ - _(amdsmi_get_gpu_enumeration_info_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_enumeration_info_t *)) \ _(amdsmi_get_gpu_vendor_name_p, amdsmi_status_t, \ (amdsmi_processor_handle, char *, size_t)) \ _(amdsmi_get_gpu_vram_vendor_p, amdsmi_status_t, \ @@ -88,8 +86,6 @@ (amdsmi_processor_handle, uint16_t *)) \ _(amdsmi_get_gpu_subsystem_id_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint16_t *)) \ - _(amdsmi_get_gpu_virtualization_mode_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_virtualization_mode_t *)) \ _(amdsmi_get_gpu_process_isolation_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint32_t *)) \ _(amdsmi_get_gpu_xcd_counter_p, amdsmi_status_t, \ @@ -156,6 +152,17 @@ _(amdsmi_stop_gpu_event_notification_p, amdsmi_status_t, \ (amdsmi_processor_handle)) +#if AMDSMI_LIB_VERSION_MAJOR >= 25 +#define AMD_SMI_GPU_FUNCTIONS(_) \ + AMD_SMI_GPU_FUNCTIONS_BASE(_) \ + _(amdsmi_get_gpu_enumeration_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_enumeration_info_t *)) \ + _(amdsmi_get_gpu_virtualization_mode_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_virtualization_mode_t *)) +#else +#define AMD_SMI_GPU_FUNCTIONS(_) AMD_SMI_GPU_FUNCTIONS_BASE(_) +#endif + #define AMD_SMI_CPU_FUNCTIONS(_) \ _(amdsmi_get_cpu_handles_p, amdsmi_status_t, \ (uint32_t *, amdsmi_processor_handle *)) \ diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index f7af3b32b..f7bb24f16 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -6,6 +6,10 @@ #include #include +#ifndef AMDSMI_LIB_VERSION_MAJOR +#define AMDSMI_LIB_VERSION_MAJOR 0 +#endif + /* Mode enumeration used by accessors */ typedef enum { PAPI_MODE_READ = 1, @@ -89,7 +93,9 @@ int access_amdsmi_energy_count(int mode, void *arg); int access_amdsmi_power_profile_status(int mode, void *arg); int access_amdsmi_uuid_hash(int mode, void *arg); int access_amdsmi_gpu_string_hash(int mode, void *arg); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_enumeration_info(int mode, void *arg); +#endif int access_amdsmi_asic_info(int mode, void *arg); int access_amdsmi_link_metrics(int mode, void *arg); int access_amdsmi_process_info(int mode, void *arg); @@ -128,7 +134,9 @@ int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); int access_amdsmi_xcd_counter(int mode, void *arg); int access_amdsmi_board_serial_hash(int mode, void *arg); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_vram_max_bandwidth(int mode, void *arg); +#endif int access_amdsmi_fw_version(int mode, void *arg); int access_amdsmi_bad_page_count(int mode, void *arg); int access_amdsmi_bad_page_threshold(int mode, void *arg); From 3ad83e0bc5541e7fe3259d8f384358f91bc82f01 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 3 Sep 2025 14:24:47 -0400 Subject: [PATCH 081/147] Add AMD SMI XGMI info, power management, and RAS validation events --- src/components/amd_smi/amds.c | 1060 ++++++++++++++++++++++- src/components/amd_smi/amds_accessors.c | 939 +++++++++++++++++--- src/components/amd_smi/amds_ctx.c | 46 +- src/components/amd_smi/amds_funcs.h | 89 +- src/components/amd_smi/amds_priv.h | 29 +- 5 files changed, 2021 insertions(+), 142 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index de651735b..ea7e616d2 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -106,6 +106,73 @@ static int stop_simple(native_event_t *event) { return PAPI_OK; } +typedef struct { + amdsmi_event_handle_t handle; + uint64_t accum; +} counter_priv_t; + +static int open_counter(native_event_t *event) { + if (!amdsmi_gpu_create_counter_p) + return PAPI_ENOSUPP; + counter_priv_t *priv = (counter_priv_t *)papi_calloc(1, sizeof(counter_priv_t)); + if (!priv) + return PAPI_ENOMEM; + amdsmi_status_t ret = amdsmi_gpu_create_counter_p( + device_handles[event->device], (amdsmi_event_type_t)event->variant, + &priv->handle); + if (ret != AMDSMI_STATUS_SUCCESS) { + papi_free(priv); + return PAPI_ENOSUPP; + } + event->priv = priv; + return PAPI_OK; +} + +static int close_counter(native_event_t *event) { + counter_priv_t *priv = (counter_priv_t *)event->priv; + if (priv) { + if (amdsmi_gpu_destroy_counter_p) + amdsmi_gpu_destroy_counter_p(priv->handle); + papi_free(priv); + event->priv = NULL; + } + return PAPI_OK; +} + +static int start_counter(native_event_t *event) { + counter_priv_t *priv = (counter_priv_t *)event->priv; + if (!priv || !amdsmi_gpu_control_counter_p) + return PAPI_ENOSUPP; + priv->accum = 0; + amdsmi_status_t ret = amdsmi_gpu_control_counter_p( + priv->handle, AMDSMI_CNTR_CMD_START, NULL); + return (ret == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; +} + +static int stop_counter(native_event_t *event) { + counter_priv_t *priv = (counter_priv_t *)event->priv; + if (!priv || !amdsmi_gpu_control_counter_p) + return PAPI_ENOSUPP; + amdsmi_status_t ret = + amdsmi_gpu_control_counter_p(priv->handle, AMDSMI_CNTR_CMD_STOP, NULL); + return (ret == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; +} + +static int access_amdsmi_gpu_counter(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + counter_priv_t *priv = (counter_priv_t *)event->priv; + if (!priv || !amdsmi_gpu_read_counter_p) + return PAPI_ENOSUPP; + amdsmi_counter_value_t val; + if (amdsmi_gpu_read_counter_p(priv->handle, &val) != AMDSMI_STATUS_SUCCESS) + return PAPI_ENOSUPP; + priv->accum += val.value; + event->value = priv->accum; + return PAPI_OK; +} + // Replace any non-alphanumeric characters with '_' to build safe event names static void sanitize_name(const char *src, char *dst, size_t len) { size_t j = 0; @@ -146,6 +213,13 @@ static int load_amdsmi_sym(void) { amdsmi_get_socket_handles_p = sym("amdsmi_get_socket_handles", NULL); amdsmi_get_processor_handles_by_type_p = sym("amdsmi_get_processor_handles_by_type", NULL); + amdsmi_get_processor_handles_p = + sym("amdsmi_get_processor_handles", NULL); + amdsmi_get_processor_info_p = + sym("amdsmi_get_processor_info", NULL); + amdsmi_get_processor_type_p = + sym("amdsmi_get_processor_type", NULL); + amdsmi_get_socket_info_p = sym("amdsmi_get_socket_info", NULL); // Sensors amdsmi_get_temp_metric_p = sym("amdsmi_get_temp_metric", NULL); amdsmi_get_gpu_fan_rpms_p = sym("amdsmi_get_gpu_fan_rpms", NULL); @@ -159,6 +233,8 @@ static int load_amdsmi_sym(void) { // Utilization / activity amdsmi_get_gpu_activity_p = sym("amdsmi_get_gpu_activity", "amdsmi_get_engine_usage"); + amdsmi_get_utilization_count_p = + sym("amdsmi_get_utilization_count", NULL); // Power amdsmi_get_power_info_p = sym("amdsmi_get_power_info", NULL); amdsmi_get_power_cap_info_p = sym("amdsmi_get_power_cap_info", NULL); @@ -170,6 +246,7 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_gpu_pci_replay_counter", NULL); // Clocks amdsmi_get_clk_freq_p = sym("amdsmi_get_clk_freq", NULL); + amdsmi_get_clock_info_p = sym("amdsmi_get_clock_info", NULL); amdsmi_set_clk_freq_p = sym("amdsmi_set_clk_freq", NULL); // GPU metrics amdsmi_get_gpu_metrics_info_p = sym("amdsmi_get_gpu_metrics_info", NULL); @@ -191,6 +268,8 @@ static int load_amdsmi_sym(void) { amdsmi_get_energy_count_p = sym("amdsmi_get_energy_count", NULL); amdsmi_get_gpu_power_profile_presets_p = sym("amdsmi_get_gpu_power_profile_presets", NULL); + amdsmi_get_violation_status_p = + sym("amdsmi_get_violation_status", NULL); // Additional read-only queries amdsmi_get_lib_version_p = sym("amdsmi_get_lib_version", NULL); amdsmi_get_gpu_driver_info_p = sym("amdsmi_get_gpu_driver_info", NULL); @@ -208,6 +287,15 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_subsystem_name_p = sym("amdsmi_get_gpu_subsystem_name", NULL); amdsmi_get_link_metrics_p = sym("amdsmi_get_link_metrics", NULL); amdsmi_get_gpu_process_list_p = sym("amdsmi_get_gpu_process_list", NULL); + amdsmi_topo_get_numa_node_number_p = + sym("amdsmi_topo_get_numa_node_number", NULL); + amdsmi_topo_get_link_weight_p = sym("amdsmi_topo_get_link_weight", NULL); + amdsmi_topo_get_link_type_p = sym("amdsmi_topo_get_link_type", NULL); + amdsmi_topo_get_p2p_status_p = sym("amdsmi_topo_get_p2p_status", NULL); + amdsmi_is_P2P_accessible_p = sym("amdsmi_is_P2P_accessible", NULL); + amdsmi_get_link_topology_nearest_p = + sym("amdsmi_get_link_topology_nearest", NULL); + amdsmi_get_gpu_device_bdf_p = sym("amdsmi_get_gpu_device_bdf", NULL); amdsmi_get_gpu_ecc_enabled_p = sym("amdsmi_get_gpu_ecc_enabled", NULL); amdsmi_get_gpu_total_ecc_count_p = sym("amdsmi_get_gpu_total_ecc_count", NULL); @@ -217,6 +305,18 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_gpu_compute_partition", NULL); amdsmi_get_gpu_memory_partition_p = sym("amdsmi_get_gpu_memory_partition", NULL); + amdsmi_get_gpu_memory_partition_config_p = + sym("amdsmi_get_gpu_memory_partition_config", NULL); + amdsmi_get_gpu_memory_reserved_pages_p = + sym("amdsmi_get_gpu_memory_reserved_pages", NULL); + amdsmi_get_gpu_kfd_info_p = sym("amdsmi_get_gpu_kfd_info", NULL); + amdsmi_get_gpu_metrics_header_info_p = + sym("amdsmi_get_gpu_metrics_header_info", NULL); + amdsmi_get_gpu_xgmi_link_status_p = + sym("amdsmi_get_gpu_xgmi_link_status", NULL); + amdsmi_get_xgmi_info_p = sym("amdsmi_get_xgmi_info", NULL); + amdsmi_gpu_xgmi_error_status_p = + sym("amdsmi_gpu_xgmi_error_status", NULL); amdsmi_get_gpu_accelerator_partition_profile_p = sym("amdsmi_get_gpu_accelerator_partition_profile", NULL); amdsmi_get_gpu_cache_info_p = sym("amdsmi_get_gpu_cache_info", NULL); @@ -230,10 +330,14 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_perf_level_p = sym("amdsmi_get_gpu_perf_level", NULL); amdsmi_get_gpu_pm_metrics_info_p = sym("amdsmi_get_gpu_pm_metrics_info", NULL); + amdsmi_is_gpu_power_management_enabled_p = + sym("amdsmi_is_gpu_power_management_enabled", NULL); amdsmi_get_gpu_ras_feature_info_p = sym("amdsmi_get_gpu_ras_feature_info", NULL); amdsmi_get_gpu_ras_block_features_enabled_p = sym("amdsmi_get_gpu_ras_block_features_enabled", NULL); + amdsmi_gpu_validate_ras_eeprom_p = + sym("amdsmi_gpu_validate_ras_eeprom", NULL); amdsmi_get_gpu_reg_table_info_p = sym("amdsmi_get_gpu_reg_table_info", NULL); amdsmi_get_gpu_volt_metric_p = sym("amdsmi_get_gpu_volt_metric", NULL); amdsmi_get_gpu_vram_info_p = sym("amdsmi_get_gpu_vram_info", NULL); @@ -255,6 +359,19 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_gpu_event_notification", NULL); amdsmi_stop_gpu_event_notification_p = sym("amdsmi_stop_gpu_event_notification", NULL); + amdsmi_gpu_counter_group_supported_p = + sym("amdsmi_gpu_counter_group_supported", NULL); + amdsmi_get_gpu_available_counters_p = + sym("amdsmi_get_gpu_available_counters", NULL); + amdsmi_gpu_create_counter_p = + sym("amdsmi_gpu_create_counter", NULL); + amdsmi_gpu_control_counter_p = + sym("amdsmi_gpu_control_counter", NULL); + amdsmi_gpu_read_counter_p = sym("amdsmi_gpu_read_counter", NULL); + amdsmi_gpu_destroy_counter_p = + sym("amdsmi_gpu_destroy_counter", NULL); + amdsmi_get_minmax_bandwidth_between_processors_p = + sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); #ifndef AMDSMI_DISABLE_ESMI /* CPU functions */ amdsmi_get_cpu_handles_p = sym("amdsmi_get_cpu_handles", NULL); @@ -278,8 +395,20 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_cpu_socket_freq_range", NULL); amdsmi_get_cpu_core_current_freq_limit_p = sym("amdsmi_get_cpu_core_current_freq_limit", NULL); - amdsmi_get_minmax_bandwidth_between_processors_p = - sym("amdsmi_get_minmax_bandwidth_between_processors", NULL); + amdsmi_get_cpu_cclk_limit_p = sym("amdsmi_get_cpu_cclk_limit", NULL); + amdsmi_get_cpu_current_io_bandwidth_p = + sym("amdsmi_get_cpu_current_io_bandwidth", NULL); + amdsmi_get_cpu_current_xgmi_bw_p = + sym("amdsmi_get_cpu_current_xgmi_bw", NULL); + amdsmi_get_cpu_ddr_bw_p = sym("amdsmi_get_cpu_ddr_bw", NULL); + amdsmi_get_cpu_fclk_mclk_p = sym("amdsmi_get_cpu_fclk_mclk", NULL); + amdsmi_get_cpu_hsmp_driver_version_p = + sym("amdsmi_get_cpu_hsmp_driver_version", NULL); + amdsmi_get_cpu_hsmp_proto_ver_p = sym("amdsmi_get_cpu_hsmp_proto_ver", NULL); + amdsmi_get_cpu_prochot_status_p = + sym("amdsmi_get_cpu_prochot_status", NULL); + amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p = + sym("amdsmi_get_cpu_pwr_svi_telemetry_all_rails", NULL); amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p = sym("amdsmi_get_cpu_dimm_temp_range_and_refresh_rate", NULL); amdsmi_get_cpu_dimm_power_consumption_p = @@ -575,6 +704,7 @@ static int add_event(int *idx_ptr, const char *name, const char *descr, int devi ev->mode = mode; ev->variant = variant; ev->subvariant = subvariant; + ev->priv = NULL; ev->open_func = open_simple; ev->close_func = close_simple; ev->start_func = start_simple; @@ -585,6 +715,20 @@ static int add_event(int *idx_ptr, const char *name, const char *descr, int devi return PAPI_OK; } +static int add_counter_event(int *idx_ptr, const char *name, const char *descr, + int device, uint32_t variant, uint32_t subvariant) { + int ret = add_event(idx_ptr, name, descr, device, variant, subvariant, + PAPI_MODE_READ, access_amdsmi_gpu_counter); + if (ret != PAPI_OK) + return ret; + native_event_t *ev = &ntv_table.events[*idx_ptr - 1]; + ev->open_func = open_counter; + ev->close_func = close_counter; + ev->start_func = start_counter; + ev->stop_func = stop_counter; + return PAPI_OK; +} + // Initialize native event table: enumerate all supported events static int init_event_table(void) { // Check if event table is already initialized @@ -956,6 +1100,20 @@ static int init_event_table(void) { if (metrics) papi_free(metrics); } + if (amdsmi_is_gpu_power_management_enabled_p) { + bool enabled = false; + if (amdsmi_is_gpu_power_management_enabled_p(device_handles[d], &enabled) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "pm_enabled:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d power management enabled", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pm_enabled) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } // GPU RAS feature (ECC schema) event if (amdsmi_get_gpu_ras_feature_info_p) { amdsmi_ras_feature_t ras; @@ -979,6 +1137,16 @@ static int init_event_table(void) { } } } + if (amdsmi_gpu_validate_ras_eeprom_p) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "ras_eeprom_valid:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d RAS EEPROM validation status", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_ras_eeprom_validate) != PAPI_OK) { + return PAPI_ENOMEM; + } + } if (amdsmi_get_gpu_ras_block_features_enabled_p) { amdsmi_gpu_block_t blocks[] = { AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, @@ -1009,6 +1177,125 @@ static int init_event_table(void) { } } } + + /* ECC related events */ + if (amdsmi_get_gpu_total_ecc_count_p) { + amdsmi_error_count_t ec; + if (amdsmi_get_gpu_total_ecc_count_p(device_handles[d], &ec) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "ecc_total_correctable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total correctable ECC errors", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_ecc_total) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "ecc_total_uncorrectable:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total uncorrectable ECC errors", d); + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_ecc_total) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "ecc_total_deferred:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d total deferred ECC errors", d); + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_ecc_total) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + + if (amdsmi_get_gpu_ecc_enabled_p) { + uint64_t mask = 0; + if (amdsmi_get_gpu_ecc_enabled_p(device_handles[d], &mask) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "ecc_enabled_mask:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d ECC enabled block mask", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_ecc_enabled_mask) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + + if (amdsmi_get_gpu_ecc_count_p) { + amdsmi_gpu_block_t eblocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *eblock_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", + "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", + "mca", "vcn", "jpeg", "ih", "mpio"}; + size_t nb = sizeof(eblocks) / sizeof(eblocks[0]); + for (size_t bi = 0; bi < nb; ++bi) { + amdsmi_error_count_t ec; + if (amdsmi_get_gpu_ecc_count_p(device_handles[d], eblocks[bi], &ec) == + AMDSMI_STATUS_SUCCESS) { + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + const char *suf = + (v == 0) ? "correctable" : (v == 1) ? "uncorrectable" : "deferred"; + snprintf(name_buf, sizeof(name_buf), + "ecc_%s_%s:device=%d", eblock_names[bi], suf, d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s %s ECC errors", d, eblock_names[bi], suf); + if (add_event(&idx, name_buf, descr_buf, d, v, + (uint32_t)eblocks[bi], PAPI_MODE_READ, + access_amdsmi_ecc_block) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + } + + if (amdsmi_get_gpu_ecc_status_p) { + amdsmi_gpu_block_t eblocks[] = { + AMDSMI_GPU_BLOCK_UMC, AMDSMI_GPU_BLOCK_SDMA, AMDSMI_GPU_BLOCK_GFX, + AMDSMI_GPU_BLOCK_MMHUB, AMDSMI_GPU_BLOCK_ATHUB, AMDSMI_GPU_BLOCK_PCIE_BIF, + AMDSMI_GPU_BLOCK_HDP, AMDSMI_GPU_BLOCK_XGMI_WAFL, AMDSMI_GPU_BLOCK_DF, + AMDSMI_GPU_BLOCK_SMN, AMDSMI_GPU_BLOCK_SEM, AMDSMI_GPU_BLOCK_MP0, + AMDSMI_GPU_BLOCK_MP1, AMDSMI_GPU_BLOCK_FUSE, AMDSMI_GPU_BLOCK_MCA, + AMDSMI_GPU_BLOCK_VCN, AMDSMI_GPU_BLOCK_JPEG, AMDSMI_GPU_BLOCK_IH, + AMDSMI_GPU_BLOCK_MPIO}; + const char *eblock_names[] = { + "umc", "sdma", "gfx", "mmhub", "athub", "pcie_bif", "hdp", + "xgmi_wafl", "df", "smn", "sem", "mp0", "mp1", "fuse", + "mca", "vcn", "jpeg", "ih", "mpio"}; + size_t nb = sizeof(eblocks) / sizeof(eblocks[0]); + for (size_t bi = 0; bi < nb; ++bi) { + amdsmi_ras_err_state_t st; + if (amdsmi_get_gpu_ecc_status_p(device_handles[d], eblocks[bi], &st) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "ecc_%s_status:device=%d", + eblock_names[bi], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d ECC status for %s block", d, eblock_names[bi]); + if (add_event(&idx, name_buf, descr_buf, d, 0, + (uint32_t)eblocks[bi], PAPI_MODE_READ, + access_amdsmi_ecc_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + // GPU voltage metrics events if (amdsmi_get_gpu_volt_metric_p) { const char *sensor_names[] = {"vddgfx", "vddmem", "vddsoc", "vddio", @@ -1600,6 +1887,40 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } + + if (amdsmi_get_gpu_pci_bandwidth_p) { + amdsmi_pcie_bandwidth_t bw; + if (amdsmi_get_gpu_pci_bandwidth_p(device_handles[d], &bw) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "pci_bandwidth_supported:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d number of supported PCIe transfer rates", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_pci_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "pci_bandwidth_current:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current PCIe transfer rate (MT/s)", d); + if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, + access_amdsmi_pci_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "pci_bandwidth_lanes:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d current PCIe lane count", d); + if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, + access_amdsmi_pci_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } } /* Additional GPU metrics and system information */ /* GPU engine utilization metrics - test each device individually */ @@ -1636,6 +1957,55 @@ static int init_event_table(void) { } } } + /* GPU utilization counters */ + if (amdsmi_get_utilization_count_p) { + for (int d = 0; d < gpu_count; ++d) { + amdsmi_utilization_counter_t uc; + uint64_t ts; + uc.type = AMDSMI_COARSE_GRAIN_GFX_ACTIVITY; + if (amdsmi_get_utilization_count_p(device_handles[d], &uc, 1, &ts) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "util_counter_gfx:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d coarse grain GFX activity counter", d); + if (add_event(&idx, name_buf, descr_buf, d, + AMDSMI_COARSE_GRAIN_GFX_ACTIVITY, 0, PAPI_MODE_READ, + access_amdsmi_utilization_count) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uc.type = AMDSMI_COARSE_GRAIN_MEM_ACTIVITY; + if (amdsmi_get_utilization_count_p(device_handles[d], &uc, 1, &ts) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "util_counter_mem:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d coarse grain memory activity counter", d); + if (add_event(&idx, name_buf, descr_buf, d, + AMDSMI_COARSE_GRAIN_MEM_ACTIVITY, 0, PAPI_MODE_READ, + access_amdsmi_utilization_count) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uc.type = AMDSMI_COARSE_DECODER_ACTIVITY; + if (amdsmi_get_utilization_count_p(device_handles[d], &uc, 1, &ts) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "util_counter_dec:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d coarse grain decoder activity counter", d); + if (add_event(&idx, name_buf, descr_buf, d, + AMDSMI_COARSE_DECODER_ACTIVITY, 0, PAPI_MODE_READ, + access_amdsmi_utilization_count) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } /* GPU clock frequency levels for multiple clock domains */ for (int d = 0; d < gpu_count; ++d) { amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_DF, @@ -1681,6 +2051,35 @@ static int init_event_table(void) { } } } + if (amdsmi_get_clock_info_p) { + for (int d = 0; d < gpu_count; ++d) { + amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_MEM}; + const char *clk_names[] = {"sys", "mem"}; + const char *field_names[] = {"current", "min", "max", "locked", + "deep_sleep"}; + const char *field_descr[] = { + "current frequency (MHz)", "minimum frequency (MHz)", + "maximum frequency (MHz)", "lock state (bool)", + "deep sleep frequency (MHz)"}; + for (int t = 0; t < 2; ++t) { + amdsmi_clk_info_t info; + if (amdsmi_get_clock_info_p(device_handles[d], clk_types[t], &info) != + AMDSMI_STATUS_SUCCESS) + continue; + for (int f = 0; f < 5; ++f) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "clk_%s_%s:device=%d", + clk_names[t], field_names[f], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s", d, + clk_names[t], field_descr[f]); + if (add_event(&idx, name_buf, descr_buf, d, t, f, PAPI_MODE_READ, + access_amdsmi_clock_info) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + } /* GPU identification and topology metrics */ for (int d = 0; d < gpu_count; ++d) { uint16_t id16; @@ -1728,6 +2127,84 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } + // GPU device BDF components + if (amdsmi_get_gpu_device_bdf_p) { + amdsmi_bdf_t bdf; + if (amdsmi_get_gpu_device_bdf_p(device_handles[d], &bdf) == + AMDSMI_STATUS_SUCCESS) { + const char *bdf_names[] = {"gpu_bdf_domain", "gpu_bdf_bus", + "gpu_bdf_device", "gpu_bdf_function"}; + const char *bdf_descr[] = { + "GPU PCI domain number", "GPU PCI bus number", + "GPU PCI device number", "GPU PCI function number"}; + for (uint32_t v = 0; v < 4; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", + bdf_names[v], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s", d, + bdf_descr[v]); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_device_bdf) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_get_xgmi_info_p) { + amdsmi_xgmi_info_t xi; + if (amdsmi_get_xgmi_info_p(device_handles[d], &xi) == AMDSMI_STATUS_SUCCESS) { + const char *xinames[] = {"xgmi_lanes", "xgmi_hive_id", "xgmi_node_id", + "xgmi_index"}; + const char *xidescr[] = {"Device %d XGMI lane count", + "Device %d XGMI hive identifier", + "Device %d XGMI node identifier", + "Device %d XGMI link index"}; + for (uint32_t v = 0; v < 4; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", xinames[v], d); + snprintf(descr_buf, sizeof(descr_buf), xidescr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_xgmi_info) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_get_gpu_kfd_info_p) { + amdsmi_kfd_info_t kinfo; + if (amdsmi_get_gpu_kfd_info_p(device_handles[d], &kinfo) == + AMDSMI_STATUS_SUCCESS) { + const char *knames[] = {"kfd_id", "kfd_node_id", + "kfd_current_partition_id"}; + const char *kdescr[] = {"Device %d KFD identifier", + "Device %d KFD node id", + "Device %d KFD current partition id"}; + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", knames[v], d); + snprintf(descr_buf, sizeof(descr_buf), kdescr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_kfd_info) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + // NUMA node via topology API + if (amdsmi_topo_get_numa_node_number_p) { + uint32_t node; + if (amdsmi_topo_get_numa_node_number_p(device_handles[d], &node) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "topo_numa_node:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d NUMA node number", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_topo_numa) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } // GPU Virtualization Mode #if AMDSMI_LIB_VERSION_MAJOR >= 25 amdsmi_virtualization_mode_t vmode; @@ -1755,6 +2232,35 @@ static int init_event_table(void) { } } + if (amdsmi_get_gpu_process_list_p) { + amdsmi_proc_info_t plist[2]; + uint32_t maxp = 2; + if (amdsmi_get_gpu_process_list_p(device_handles[d], &maxp, plist) == + AMDSMI_STATUS_SUCCESS) { + const char *pmetric_names[] = {"pid", "mem", "eng_gfx", + "eng_enc", "gtt_mem", "cpu_mem", + "vram_mem", "cu_occupancy"}; + const char *pmetric_descr[] = { + "PID", "memory usage (bytes)", + "GFX engine time (ns)", "ENC engine time (ns)", + "GTT memory (bytes)", "CPU memory (bytes)", + "VRAM memory (bytes)", "Compute units utilized"}; + for (uint32_t p = 0; p < 2; ++p) { + for (uint32_t v = 0; v < 8; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "process_%s:device=%d:proc=%u", pmetric_names[v], d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d process %u %s", d, p, pmetric_descr[v]); + if (add_event(&idx, name_buf, descr_buf, d, v, p, PAPI_MODE_READ, + access_amdsmi_process_info) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + } + if (amdsmi_get_gpu_process_isolation_p) { uint32_t pis = 0; if (amdsmi_get_gpu_process_isolation_p(device_handles[d], &pis) == @@ -1782,6 +2288,82 @@ static int init_event_table(void) { } } + if (amdsmi_get_minmax_bandwidth_between_processors_p) { + for (int r = 0; r < gpu_count; ++r) { + if (r == d) + continue; + uint64_t min_bw = 0, max_bw = 0; + if (amdsmi_get_minmax_bandwidth_between_processors_p( + device_handles[d], device_handles[r], &min_bw, &max_bw) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "xgmi_min_bandwidth:src=%d:dst=%d", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Min XGMI bandwidth from device %d to %d (MB/s)", d, r); + if (add_event(&idx, name_buf, descr_buf, d, 0, r, PAPI_MODE_READ, + access_amdsmi_xgmi_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "xgmi_max_bandwidth:src=%d:dst=%d", d, r); + snprintf(descr_buf, sizeof(descr_buf), + "Max XGMI bandwidth from device %d to %d (MB/s)", d, r); + if (add_event(&idx, name_buf, descr_buf, d, 1, r, PAPI_MODE_READ, + access_amdsmi_xgmi_bandwidth) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + + if (amdsmi_gpu_counter_group_supported_p && + amdsmi_get_gpu_available_counters_p && amdsmi_gpu_create_counter_p && + amdsmi_gpu_control_counter_p && amdsmi_gpu_read_counter_p && + amdsmi_gpu_destroy_counter_p) { + if (amdsmi_gpu_counter_group_supported_p( + device_handles[d], AMDSMI_EVNT_GRP_XGMI) == + AMDSMI_STATUS_SUCCESS) { + uint32_t avail = 0; + if (amdsmi_get_gpu_available_counters_p( + device_handles[d], AMDSMI_EVNT_GRP_XGMI, &avail) == + AMDSMI_STATUS_SUCCESS && + avail > 0) { + static const struct { + const char *suffix; + amdsmi_event_type_t type[2]; + } xgmi_desc[] = { + {"nop_tx", {AMDSMI_EVNT_XGMI_0_NOP_TX, + AMDSMI_EVNT_XGMI_1_NOP_TX}}, + {"request_tx", + {AMDSMI_EVNT_XGMI_0_REQUEST_TX, + AMDSMI_EVNT_XGMI_1_REQUEST_TX}}, + {"response_tx", + {AMDSMI_EVNT_XGMI_0_RESPONSE_TX, + AMDSMI_EVNT_XGMI_1_RESPONSE_TX}}, + {"beats_tx", {AMDSMI_EVNT_XGMI_0_BEATS_TX, + AMDSMI_EVNT_XGMI_1_BEATS_TX}}, + }; + for (int link = 0; link < 2; ++link) { + for (size_t m = 0; m < sizeof(xgmi_desc) / sizeof(xgmi_desc[0]); + ++m) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "xgmi_%s:device=%d:link=%d", xgmi_desc[m].suffix, d, link); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI %s on link %d", d, xgmi_desc[m].suffix, + link); + if (add_counter_event(&idx, name_buf, descr_buf, d, + xgmi_desc[m].type[link], link) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + } + } + if (amdsmi_get_fw_info_p) { amdsmi_fw_info_t finfo; if (amdsmi_get_fw_info_p(device_handles[d], &finfo) == @@ -1839,6 +2421,22 @@ static int init_event_table(void) { #endif } + if (amdsmi_get_gpu_memory_reserved_pages_p) { + uint32_t nump = 0; + if (amdsmi_get_gpu_memory_reserved_pages_p(device_handles[d], &nump, + NULL) == AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "memory_reserved_pages:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d reserved memory pages", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_memory_reserved_pages) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + if (amdsmi_get_gpu_bad_page_info_p) { uint32_t nump = 0; if (amdsmi_get_gpu_bad_page_info_p(device_handles[d], &nump, NULL) == @@ -1989,6 +2587,28 @@ static int init_event_table(void) { } } + if (amdsmi_get_gpu_metrics_header_info_p) { + amd_metrics_table_header_t hdr; + if (amdsmi_get_gpu_metrics_header_info_p(device_handles[d], &hdr) == + AMDSMI_STATUS_SUCCESS) { + const char *hnames[] = {"metrics_header_size", + "metrics_header_format_rev", + "metrics_header_content_rev"}; + const char *hdescr[] = {"Device %d metrics header structure size", + "Device %d metrics header format revision", + "Device %d metrics header content revision"}; + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", hnames[v], d); + snprintf(descr_buf, sizeof(descr_buf), hdescr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_metrics_header_info) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_get_gpu_metrics_info_p) { amdsmi_gpu_metrics_t metrics; if (amdsmi_get_gpu_metrics_info_p(device_handles[d], &metrics) == @@ -2173,6 +2793,40 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } + /* GPU violation status metrics */ + if (amdsmi_get_violation_status_p) { + for (int d = 0; d < gpu_count; ++d) { + amdsmi_violation_status_t vinfo; + if (amdsmi_get_violation_status_p(device_handles[d], &vinfo) != + AMDSMI_STATUS_SUCCESS) + continue; + const char *names[] = { + "ppt_pwr_violation_acc", "socket_thrm_violation_acc", + "vr_thrm_violation_acc", "ppt_pwr_violation_pct", + "socket_thrm_violation_pct", "vr_thrm_violation_pct", + "ppt_pwr_violation_active", "socket_thrm_violation_active", + "vr_thrm_violation_active"}; + const char *descr[] = { + "Package power tracking violation count", + "Socket thermal violation count", + "Voltage regulator thermal violation count", + "Package power tracking violation percentage", + "Socket thermal violation percentage", + "Voltage regulator thermal violation percentage", + "Package power tracking violation active flag", + "Socket thermal violation active flag", + "Voltage regulator thermal violation active flag"}; + for (int v = 0; v < 9; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", names[v], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s", d, descr[v]); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_violation_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } #ifndef AMDSMI_DISABLE_ESMI /* CPU metrics events */ if (cpu_count > 0) { @@ -2259,6 +2913,124 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } + uint32_t cclk; + if (amdsmi_get_cpu_cclk_limit_p && + amdsmi_get_cpu_cclk_limit_p(device_handles[dev], &cclk) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "cclk_limit:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d core clock limit (MHz)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_cclk_limit) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uint32_t fclk, mclk; + if (amdsmi_get_cpu_fclk_mclk_p && + amdsmi_get_cpu_fclk_mclk_p(device_handles[dev], &fclk, &mclk) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "fclk:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d fclk (MHz)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_fclk_mclk) != PAPI_OK) { + return PAPI_ENOMEM; + } + snprintf(name_buf, sizeof(name_buf), "mclk:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d mclk (MHz)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, + access_amdsmi_cpu_fclk_mclk) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + amdsmi_ddr_bw_metrics_t ddr_bw; + if (amdsmi_get_cpu_ddr_bw_p && + amdsmi_get_cpu_ddr_bw_p(device_handles[dev], &ddr_bw) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "ddr_bw_max:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DDR max bandwidth (GB/s)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + return PAPI_ENOMEM; + } + snprintf(name_buf, sizeof(name_buf), "ddr_bw_utilized:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DDR utilized bandwidth (GB/s)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, + access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + return PAPI_ENOMEM; + } + snprintf(name_buf, sizeof(name_buf), + "ddr_bw_utilized_pct:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d DDR bandwidth utilization (pct)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 2, 0, PAPI_MODE_READ, + access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + amdsmi_hsmp_driver_version_t dver; + if (amdsmi_get_cpu_hsmp_driver_version_p && + amdsmi_get_cpu_hsmp_driver_version_p(device_handles[dev], &dver) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "hsmp_driver_major:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d HSMP driver major version", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) { + return PAPI_ENOMEM; + } + snprintf(name_buf, sizeof(name_buf), + "hsmp_driver_minor:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d HSMP driver minor version", s); + if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, + access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uint32_t proto; + if (amdsmi_get_cpu_hsmp_proto_ver_p && + amdsmi_get_cpu_hsmp_proto_ver_p(device_handles[dev], &proto) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "hsmp_proto_ver:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d HSMP protocol version", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_hsmp_proto_ver) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uint32_t prochot; + if (amdsmi_get_cpu_prochot_status_p && + amdsmi_get_cpu_prochot_status_p(device_handles[dev], &prochot) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), + "prochot_status:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d PROCHOT status", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_prochot_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + uint32_t svi_power; + if (amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p && + amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p(device_handles[dev], + &svi_power) == + AMDSMI_STATUS_SUCCESS) { + snprintf(name_buf, sizeof(name_buf), "svi_power:socket=%d", s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d SVI power (all rails, W)", s); + if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, + access_amdsmi_cpu_svi_power) != PAPI_OK) { + return PAPI_ENOMEM; + } + } amdsmi_smu_fw_version_t fw; if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == AMDSMI_STATUS_SUCCESS) { @@ -2270,6 +3042,57 @@ static int init_event_table(void) { return PAPI_ENOMEM; } } + if (amdsmi_get_cpu_current_io_bandwidth_p) { + const char *links[] = {"P0", "P1", "P2", "P3", "P4"}; + const char *bwnames[] = {"agg", "read", "write"}; + amdsmi_io_bw_encoding_t bw_types[] = {AGG_BW0, RD_BW0, WR_BW0}; + for (int l = 0; l < 5; ++l) { + for (int t = 0; t < 3; ++t) { + amdsmi_link_id_bw_type_t link = {bw_types[t], (char *)links[l]}; + uint32_t bw = 0; + if (amdsmi_get_cpu_current_io_bandwidth_p(device_handles[dev], link, + &bw) != + AMDSMI_STATUS_SUCCESS) + continue; + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "io_bw_%s_%s:socket=%d", links[l], bwnames[t], s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d IO link %s %s bandwidth (MB/s)", s, + links[l], bwnames[t]); + if (add_event(&idx, name_buf, descr_buf, dev, l, t, PAPI_MODE_READ, + access_amdsmi_cpu_io_bw) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_get_cpu_current_xgmi_bw_p) { + const char *links[] = {"G0", "G1", "G2", "G3", + "G4", "G5", "G6", "G7"}; + const char *bwnames[] = {"agg", "read", "write"}; + amdsmi_io_bw_encoding_t bw_types[] = {AGG_BW0, RD_BW0, WR_BW0}; + for (int l = 0; l < 8; ++l) { + for (int t = 0; t < 3; ++t) { + amdsmi_link_id_bw_type_t link = {bw_types[t], (char *)links[l]}; + uint32_t bw = 0; + if (amdsmi_get_cpu_current_xgmi_bw_p(device_handles[dev], link, + &bw) != + AMDSMI_STATUS_SUCCESS) + continue; + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "xgmi_bw_%s_%s:socket=%d", links[l], bwnames[t], s); + snprintf(descr_buf, sizeof(descr_buf), + "Socket %d XGMI link %s %s bandwidth (MB/s)", s, + links[l], bwnames[t]); + if (add_event(&idx, name_buf, descr_buf, dev, l, t, PAPI_MODE_READ, + access_amdsmi_cpu_xgmi_bw) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } } // CPU core-level events for (int s = 0; s < cpu_count; ++s) { @@ -2600,6 +3423,75 @@ static int init_event_table(void) { } } } + if (amdsmi_get_gpu_compute_partition_p) { + char part[128] = {0}; + if (amdsmi_get_gpu_compute_partition_p(device_handles[d], part, + sizeof(part)) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "compute_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d compute partition (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_compute_partition_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + if (amdsmi_get_gpu_memory_partition_p) { + char part[128] = {0}; + if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, + sizeof(part)) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "memory_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d memory partition (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + if (amdsmi_get_gpu_memory_partition_config_p) { + amdsmi_memory_partition_config_t cfg; + if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == + AMDSMI_STATUS_SUCCESS) { + const char *mpc_names[] = {"memory_partition_caps", + "memory_partition_mode", + "memory_partition_numa_count"}; + const char *mpc_descr[] = {"Device %d memory partition capabilities", + "Device %d memory partition mode", + "Device %d NUMA range count"}; + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); + snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_config) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_get_gpu_accelerator_partition_profile_p) { + amdsmi_accelerator_partition_profile_t prof; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, + ids) == AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d accelerator partition count", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_accelerator_num_partitions) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } /* Driver info (strings hashed) */ if (amdsmi_get_gpu_driver_info_p) { amdsmi_driver_info_t dinfo; @@ -2624,8 +3516,168 @@ static int init_event_table(void) { } /* VBIOS info (strings hashed) */ // (vBIOS events omitted) - /* PCIe link metrics via amdsmi_get_link_metrics (XGMI and PCIe links). - These events were enumerated above in XGMI throughput and replay sections. */ + if (amdsmi_get_link_metrics_p) { + amdsmi_link_metrics_t lm; + if (amdsmi_get_link_metrics_p(device_handles[d], &lm) == + AMDSMI_STATUS_SUCCESS) { + int types[] = {AMDSMI_LINK_TYPE_XGMI, AMDSMI_LINK_TYPE_PCIE}; + const char *type_names[] = {"xgmi", "pcie"}; + for (int ti = 0; ti < 2; ++ti) { + uint32_t link_type = (uint32_t)types[ti]; + uint32_t sv = (link_type << 16) | 0xFFFF; + int present = 0; + uint32_t n = lm.num_links; + if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) + n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + for (uint32_t li = 0; li < n; ++li) { + if (lm.links[li].link_type == link_type) { + present = 1; + break; + } + } + if (!present) + continue; + const char *mnames[] = {"read_kb", "write_kb", "bit_rate", + "max_bandwidth"}; + const char *mdescr[] = {"read throughput (KB)", + "write throughput (KB)", + "link bit rate (Gb/s)", + "max bandwidth (Gb/s)"}; + for (uint32_t v = 0; v < 4; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s_%s:device=%d", + type_names[ti], mnames[v], d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s", d, + type_names[ti], mdescr[v]); + if (add_event(&idx, name_buf, descr_buf, d, v, sv, PAPI_MODE_READ, + access_amdsmi_link_metrics) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + } + if (amdsmi_get_gpu_xgmi_link_status_p) { + amdsmi_xgmi_link_status_t st; + if (amdsmi_get_gpu_xgmi_link_status_p(device_handles[d], &st) == + AMDSMI_STATUS_SUCCESS) { + uint32_t n = st.total_links; + if (n > AMDSMI_MAX_NUM_XGMI_LINKS) + n = AMDSMI_MAX_NUM_XGMI_LINKS; + for (uint32_t li = 0; li < n; ++li) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "xgmi_link_status:device=%d:link=%u", d, li); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d XGMI link %u status", d, li); + if (add_event(&idx, name_buf, descr_buf, d, 0, li, PAPI_MODE_READ, + access_amdsmi_xgmi_link_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + if (amdsmi_gpu_xgmi_error_status_p) { + amdsmi_xgmi_status_t st; + if (amdsmi_gpu_xgmi_error_status_p(device_handles[d], &st) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "xgmi_error_status:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI error status", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_xgmi_error_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + if (amdsmi_get_link_topology_nearest_p) { + amdsmi_link_type_t lt_types[] = {AMDSMI_LINK_TYPE_XGMI, + AMDSMI_LINK_TYPE_PCIE}; + const char *lt_names[] = {"xgmi", "pcie"}; + for (int ti = 0; ti < 2; ++ti) { + amdsmi_topology_nearest_t info; + memset(&info, 0, sizeof(info)); + if (amdsmi_get_link_topology_nearest_p(device_handles[d], lt_types[ti], + &info) == AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s_nearest_count:device=%d", + lt_names[ti], d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d %s nearest GPU count", d, lt_names[ti]); + if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)lt_types[ti], 0, + PAPI_MODE_READ, access_amdsmi_link_topology_nearest) != + PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + } + for (int p = 0; p < gpu_count; ++p) { + if (p == d) + continue; + if (amdsmi_topo_get_link_weight_p) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "link_weight:device=%d,peer=%d", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Link weight between device %d and %d", d, p); + if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, + access_amdsmi_link_weight) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + if (amdsmi_topo_get_link_type_p) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "link_hops:device=%d,peer=%d", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "Hops between device %d and %d", d, p); + if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, + access_amdsmi_link_type) != PAPI_OK) { + return PAPI_ENOMEM; + } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "link_type:device=%d,peer=%d", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "IO link type between device %d and %d", d, p); + if (add_event(&idx, name_buf, descr_buf, d, 1, p, PAPI_MODE_READ, + access_amdsmi_link_type) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + if (amdsmi_topo_get_p2p_status_p) { + const char *p2p_names[] = {"p2p_type", "p2p_coherent", + "p2p_atomics32", "p2p_atomics64", + "p2p_dma", "p2p_bidir"}; + const char *p2p_desc[] = { + "P2P IO link type", "P2P coherent support", + "P2P 32-bit atomics", "P2P 64-bit atomics", + "P2P DMA support", "P2P bidirectional support"}; + for (int v = 0; v < 6; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d,peer=%d", + p2p_names[v], d, p); + snprintf(descr_buf, sizeof(descr_buf), "Device %d vs %d %s", d, p, + p2p_desc[v]); + if (add_event(&idx, name_buf, descr_buf, d, v, p, PAPI_MODE_READ, + access_amdsmi_p2p_status) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } + if (amdsmi_is_P2P_accessible_p) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "p2p_accessible:device=%d,peer=%d", d, p); + snprintf(descr_buf, sizeof(descr_buf), + "P2P accessibility between device %d and %d", d, p); + if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, + access_amdsmi_p2p_accessible) != PAPI_OK) { + return PAPI_ENOMEM; + } + } + } } ntv_table.count = idx; return PAPI_OK; diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index f9f22ef2d..9cf49df1e 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -203,95 +203,346 @@ int access_amdsmi_link_metrics(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_link_metrics_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; amdsmi_link_metrics_t lm; memset(&lm, 0, sizeof(lm)); - if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_link_metrics_p(device_handles[event->device], &lm) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint32_t n = lm.num_links; - if (n > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) - n = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; + uint32_t count = lm.num_links; + if (count > AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK) + count = AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK; uint32_t enc = event->subvariant; uint32_t link_type = enc >> 16; - uint32_t link_index = enc & 0xFFFF; /* 0xFFFF denotes aggregate */ + uint32_t link_index = enc & 0xFFFF; /* 0xFFFF aggregates all links */ - uint64_t acc = 0; + uint64_t total = 0; if (link_index == 0xFFFF) { - for (uint32_t i = 0; i < n; ++i) { + for (uint32_t i = 0; i < count; ++i) { if (link_type && lm.links[i].link_type != link_type) continue; switch (event->variant) { case 0: - acc += lm.links[i].read; - break; /* KB */ + total += lm.links[i].read; /* KB */ + break; case 1: - acc += lm.links[i].write; - break; /* KB */ + total += lm.links[i].write; /* KB */ + break; case 2: - acc += lm.links[i].bit_rate; - break; /* Gb/s */ + total += lm.links[i].bit_rate; /* Gb/s */ + break; case 3: - acc += lm.links[i].max_bandwidth; - break; /* Gb/s */ + total += lm.links[i].max_bandwidth; /* Gb/s */ + break; default: return PAPI_ENOSUPP; } } } else { - if (link_index >= n) + if (link_index >= count) return PAPI_EMISC; if (link_type && lm.links[link_index].link_type != link_type) return PAPI_EMISC; switch (event->variant) { case 0: - acc = lm.links[link_index].read; - break; /* KB */ + total = lm.links[link_index].read; /* KB */ + break; case 1: - acc = lm.links[link_index].write; - break; /* KB */ + total = lm.links[link_index].write; /* KB */ + break; case 2: - acc = lm.links[link_index].bit_rate; - break; /* Gb/s */ + total = lm.links[link_index].bit_rate; /* Gb/s */ + break; case 3: - acc = lm.links[link_index].max_bandwidth; - break; /* Gb/s */ + total = lm.links[link_index].max_bandwidth; /* Gb/s */ + break; default: return PAPI_ENOSUPP; } } - if (acc > (uint64_t)INT64_MAX) - acc = (uint64_t)INT64_MAX; /* defensive */ - event->value = (int64_t)acc; + if (total > (uint64_t)INT64_MAX) + total = (uint64_t)INT64_MAX; + event->value = (int64_t)total; return PAPI_OK; } -int access_amdsmi_process_info(int mode, void *arg) { - if (mode != PAPI_MODE_READ) +int access_amdsmi_xgmi_link_status(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_xgmi_link_status_p) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_process_list_p) + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_xgmi_link_status_t st; + if (amdsmi_get_gpu_xgmi_link_status_p(device_handles[event->device], &st) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + uint32_t li = (uint32_t)event->subvariant; + if (li >= st.total_links || li >= AMDSMI_MAX_NUM_XGMI_LINKS) + return PAPI_EMISC; + event->value = (int64_t)st.status[li]; + return PAPI_OK; +} + +int access_amdsmi_xgmi_error_status(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_gpu_xgmi_error_status_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_xgmi_status_t st; + if (amdsmi_gpu_xgmi_error_status_p(device_handles[event->device], &st) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + event->value = (int64_t)st; + return PAPI_OK; +} - amdsmi_proc_info_t list[2]; - uint32_t maxp = 2; - amdsmi_status_t st = amdsmi_get_gpu_process_list_p(device_handles[event->device], &maxp, list); - if (st != AMDSMI_STATUS_SUCCESS) +int access_amdsmi_link_weight(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_topo_get_link_weight_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + int src = event->device; + int dst = (int)event->subvariant; + if (src < 0 || src >= device_count || dst < 0 || dst >= device_count || + !device_handles[src] || !device_handles[dst] || src == dst) + return PAPI_EMISC; + uint64_t weight = 0; + if (amdsmi_topo_get_link_weight_p(device_handles[src], + device_handles[dst], &weight) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + if (weight > (uint64_t)INT64_MAX) + weight = (uint64_t)INT64_MAX; + event->value = (int64_t)weight; + return PAPI_OK; +} - uint32_t proc = event->subvariant; - if (proc >= 2) { - event->value = 0; - return PAPI_OK; +int access_amdsmi_link_type(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_topo_get_link_type_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + int src = event->device; + int dst = (int)event->subvariant; + if (src < 0 || src >= device_count || dst < 0 || dst >= device_count || + !device_handles[src] || !device_handles[dst] || src == dst) + return PAPI_EMISC; + uint64_t hops = 0; + amdsmi_io_link_type_t type; + if (amdsmi_topo_get_link_type_p(device_handles[src], device_handles[dst], + &hops, &type) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + if (event->variant == 0) { + if (hops > (uint64_t)INT64_MAX) + hops = (uint64_t)INT64_MAX; + event->value = (int64_t)hops; + } else if (event->variant == 1) { + event->value = (int64_t)type; + } else { + return PAPI_ENOSUPP; } + return PAPI_OK; +} - if (proc >= maxp) { +int access_amdsmi_p2p_status(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_topo_get_p2p_status_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + int src = event->device; + int dst = (int)event->subvariant; + if (src < 0 || src >= device_count || dst < 0 || dst >= device_count || + !device_handles[src] || !device_handles[dst] || src == dst) + return PAPI_EMISC; + amdsmi_io_link_type_t type; + amdsmi_p2p_capability_t cap; + if (amdsmi_topo_get_p2p_status_p(device_handles[src], device_handles[dst], + &type, &cap) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)type; + break; + case 1: + event->value = cap.is_iolink_coherent; + break; + case 2: + event->value = cap.is_iolink_atomics_32bit; + break; + case 3: + event->value = cap.is_iolink_atomics_64bit; + break; + case 4: + event->value = cap.is_iolink_dma; + break; + case 5: + event->value = cap.is_iolink_bi_directional; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + +int access_amdsmi_p2p_accessible(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_is_P2P_accessible_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + int src = event->device; + int dst = (int)event->subvariant; + if (src < 0 || src >= device_count || dst < 0 || dst >= device_count || + !device_handles[src] || !device_handles[dst] || src == dst) + return PAPI_EMISC; + bool accessible = false; + if (amdsmi_is_P2P_accessible_p(device_handles[src], device_handles[dst], + &accessible) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = accessible ? 1 : 0; + return PAPI_OK; +} + +int access_amdsmi_link_topology_nearest(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_link_topology_nearest_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_topology_nearest_t info; + memset(&info, 0, sizeof(info)); + if (amdsmi_get_link_topology_nearest_p( + device_handles[event->device], (amdsmi_link_type_t)event->variant, + &info) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)info.count; + return PAPI_OK; +} + +int access_amdsmi_topo_numa(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_topo_get_numa_node_number_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + uint32_t node = 0; + if (amdsmi_topo_get_numa_node_number_p(device_handles[event->device], &node) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)node; + return PAPI_OK; +} + +int access_amdsmi_device_bdf(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_device_bdf_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_bdf_t bdf; + if (amdsmi_get_gpu_device_bdf_p(device_handles[event->device], &bdf) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)bdf.domain_number; + break; + case 1: + event->value = (int64_t)bdf.bus_number; + break; + case 2: + event->value = (int64_t)bdf.device_number; + break; + case 3: + event->value = (int64_t)bdf.function_number; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + +int access_amdsmi_kfd_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_kfd_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_kfd_info_t info; + if (amdsmi_get_gpu_kfd_info_p(device_handles[event->device], &info) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.kfd_id; + break; + case 1: + event->value = (int64_t)info.node_id; + break; + case 2: + event->value = (int64_t)info.current_partition_id; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + +int access_amdsmi_xgmi_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_xgmi_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_xgmi_info_t info; + if (amdsmi_get_xgmi_info_p(device_handles[event->device], &info) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.xgmi_lanes; + break; + case 1: + event->value = (int64_t)info.xgmi_hive_id; + break; + case 2: + event->value = (int64_t)info.xgmi_node_id; + break; + case 3: + event->value = (int64_t)info.index; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} + +int access_amdsmi_process_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_process_list_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + + amdsmi_proc_info_t list[16]; + uint32_t count = 16; + amdsmi_status_t st = + amdsmi_get_gpu_process_list_p(device_handles[event->device], &count, list); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + uint32_t proc = event->subvariant; + if (proc >= count) { event->value = 0; return PAPI_OK; } @@ -319,130 +570,191 @@ int access_amdsmi_process_info(int mode, void *arg) { case 6: event->value = (int64_t)p->memory_usage.vram_mem; break; + case 7: + /* cu_occupancy added in AMD SMI 6.4.3; earlier versions store it in + the first reserved slot which remains zero. */ +#if defined(AMDSMI_LIB_VERSION_MINOR) && AMDSMI_LIB_VERSION_MINOR >= 4 + event->value = (int64_t)p->cu_occupancy; +#else + event->value = (int64_t)p->reserved[0]; +#endif + break; default: return PAPI_ENOSUPP; } return PAPI_OK; } int access_amdsmi_ecc_total(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_total_ecc_count_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_total_ecc_count_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; amdsmi_error_count_t ec; - memset(&ec, 0, sizeof(ec)); // <-- important - amdsmi_status_t st = amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec); - if (st != AMDSMI_STATUS_SUCCESS) + memset(&ec, 0, sizeof(ec)); + if (amdsmi_get_gpu_total_ecc_count_p(device_handles[event->device], &ec) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint64_t v = (event->variant == 0) ? ec.correctable_count - : (event->variant == 1) ? ec.uncorrectable_count - : ec.deferred_count; // some ASICs may not set this - if ((int64_t)v < 0) - return PAPI_ENOSUPP; // defensive: treat bogus as unsupported - event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; + uint64_t val; + switch (event->variant) { + case 0: + val = ec.correctable_count; + break; + case 1: + val = ec.uncorrectable_count; + break; + case 2: + val = ec.deferred_count; + break; + default: + return PAPI_ENOSUPP; + } + + if (val > (uint64_t)INT64_MAX) + val = (uint64_t)INT64_MAX; + event->value = (int64_t)val; return PAPI_OK; } int access_amdsmi_ecc_block(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ecc_count_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_ecc_count_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; amdsmi_error_count_t ec; memset(&ec, 0, sizeof(ec)); - amdsmi_status_t st = amdsmi_get_gpu_ecc_count_p(device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &ec); - if (st != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_ecc_count_p(device_handles[event->device], + (amdsmi_gpu_block_t)event->subvariant, &ec) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - uint64_t v = (event->variant == 0) ? ec.correctable_count : (event->variant == 1) ? ec.uncorrectable_count : ec.deferred_count; - if ((int64_t)v < 0) + uint64_t val; + switch (event->variant) { + case 0: + val = ec.correctable_count; + break; + case 1: + val = ec.uncorrectable_count; + break; + case 2: + val = ec.deferred_count; + break; + default: return PAPI_ENOSUPP; - event->value = (v > (uint64_t)INT64_MAX) ? INT64_MAX : (int64_t)v; + } + + if (val > (uint64_t)INT64_MAX) + val = (uint64_t)INT64_MAX; + event->value = (int64_t)val; return PAPI_OK; } int access_amdsmi_ecc_status(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ecc_status_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_ecc_status_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; + if (event->variant != 0) + return PAPI_ENOSUPP; + amdsmi_ras_err_state_t st; - amdsmi_status_t rc = amdsmi_get_gpu_ecc_status_p(device_handles[event->device], (amdsmi_gpu_block_t)event->subvariant, &st); - if (rc != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_ecc_status_p(device_handles[event->device], + (amdsmi_gpu_block_t)event->subvariant, &st) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)st; return PAPI_OK; } int access_amdsmi_ecc_enabled_mask(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_ecc_enabled_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_ecc_enabled_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; uint64_t mask = 0; - amdsmi_status_t st = amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask); - if (st != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_ecc_enabled_p(device_handles[event->device], &mask) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)mask; return PAPI_OK; } int access_amdsmi_compute_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_compute_partition_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_compute_partition_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_compute_partition_p(device_handles[event->device], buf, + sizeof(buf)) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)_str_to_u64_hash(buf); return PAPI_OK; } int access_amdsmi_memory_partition_hash(int mode, void *arg) { - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_memory_partition_p) + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_memory_partition_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; char buf[128] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)); - if (st != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, + sizeof(buf)) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)_str_to_u64_hash(buf); return PAPI_OK; } -int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { - if (mode != PAPI_MODE_READ) + +int access_amdsmi_memory_partition_config(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_memory_partition_config_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_memory_partition_config_t cfg; + if (amdsmi_get_gpu_memory_partition_config_p(device_handles[event->device], + &cfg) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)cfg.partition_caps; + break; + case 1: + event->value = (int64_t)cfg.mp_mode; + break; + case 2: + event->value = (int64_t)cfg.num_numa_ranges; + break; + default: return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_accelerator_partition_profile_p) + } + return PAPI_OK; +} +int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_accelerator_partition_profile_p) return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; amdsmi_accelerator_partition_profile_t prof; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - amdsmi_status_t st = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids); - if (st != AMDSMI_STATUS_SUCCESS) + if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], + &prof, ids) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (int64_t)prof.num_partitions; return PAPI_OK; @@ -663,6 +975,72 @@ int access_amdsmi_clk_freq(int mode, void *arg) { } return PAPI_OK; } + +int access_amdsmi_clock_info(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_MEM}; + if (event->variant < 0 || event->variant >= 2) + return PAPI_EMISC; + amdsmi_clk_info_t info; + amdsmi_status_t status = + amdsmi_get_clock_info_p(device_handles[event->device], + clk_types[event->variant], &info); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->subvariant) { + case 0: + event->value = info.clk; + break; + case 1: + event->value = info.min_clk; + break; + case 2: + event->value = info.max_clk; + break; + case 3: + event->value = info.clk_locked; + break; + case 4: + event->value = info.clk_deep_sleep; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} + +int access_amdsmi_metrics_header_info(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_metrics_header_info_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amd_metrics_table_header_t hdr; + if (amdsmi_get_gpu_metrics_header_info_p(device_handles[event->device], &hdr) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = hdr.structure_size; + break; + case 1: + event->value = hdr.format_revision; + break; + case 2: + event->value = hdr.content_revision; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} int access_amdsmi_gpu_metrics(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -826,34 +1204,34 @@ int access_amdsmi_fan_speed_max(int mode, void *arg) { return PAPI_OK; } int access_amdsmi_pci_bandwidth(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_pci_bandwidth_p) + return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + if (event->device < 0 || event->device >= device_count || + !device_handles || !device_handles[event->device]) return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } + amdsmi_pcie_bandwidth_t bw; - amdsmi_status_t status = amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw); - if (status != AMDSMI_STATUS_SUCCESS) { + if (amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw) != + AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; - } - uint32_t cur_index = bw.transfer_rate.current; - if (cur_index >= bw.transfer_rate.num_supported) { + + uint32_t cur = bw.transfer_rate.current; + if (cur >= bw.transfer_rate.num_supported) return PAPI_EMISC; - } + switch (event->variant) { case 0: event->value = bw.transfer_rate.num_supported; break; case 1: - event->value = (int64_t)bw.transfer_rate.frequency[cur_index]; + event->value = (int64_t)bw.transfer_rate.frequency[cur]; break; case 2: - event->value = bw.lanes[cur_index]; + event->value = bw.lanes[cur]; break; default: - return PAPI_EMISC; + return PAPI_ENOSUPP; } return PAPI_OK; } @@ -890,6 +1268,29 @@ int access_amdsmi_energy_count(int mode, void *arg) { } return PAPI_OK; } + +int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_minmax_bandwidth_between_processors_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= gpu_count || !device_handles || + !device_handles[event->device]) + return PAPI_EMISC; + if (event->subvariant < 0 || event->subvariant >= gpu_count || + !device_handles[event->subvariant]) + return PAPI_EMISC; + + amdsmi_processor_handle src = device_handles[event->device]; + amdsmi_processor_handle dst = device_handles[event->subvariant]; + uint64_t min_bw = 0, max_bw = 0; + if (amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, + &max_bw) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + + event->value = (event->variant == 0) ? (int64_t)min_bw : (int64_t)max_bw; + return PAPI_OK; +} int access_amdsmi_power_profile_status(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1066,6 +1467,187 @@ int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { event->value = boost; return PAPI_OK; } +int access_amdsmi_cpu_cclk_limit(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint32_t cclk = 0; + amdsmi_status_t status = + amdsmi_get_cpu_cclk_limit_p(device_handles[event->device], &cclk); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = cclk; + return PAPI_OK; +} +int access_amdsmi_cpu_io_bw(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + const char *links[] = {"P0", "P1", "P2", "P3", "P4"}; + amdsmi_io_bw_encoding_t bw_types[] = {AGG_BW0, RD_BW0, WR_BW0}; + if (event->variant < 0 || event->variant >= 5 || event->subvariant < 0 || + event->subvariant >= 3) + return PAPI_EMISC; + amdsmi_link_id_bw_type_t link = {bw_types[event->subvariant], + (char *)links[event->variant]}; + uint32_t bw = 0; + amdsmi_status_t status = amdsmi_get_cpu_current_io_bandwidth_p( + device_handles[event->device], link, &bw); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = bw; + return PAPI_OK; +} +int access_amdsmi_cpu_xgmi_bw(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + const char *links[] = {"G0", "G1", "G2", "G3", + "G4", "G5", "G6", "G7"}; + amdsmi_io_bw_encoding_t bw_types[] = {AGG_BW0, RD_BW0, WR_BW0}; + if (event->variant < 0 || event->variant >= 8 || event->subvariant < 0 || + event->subvariant >= 3) + return PAPI_EMISC; + amdsmi_link_id_bw_type_t link = {bw_types[event->subvariant], + (char *)links[event->variant]}; + uint32_t bw = 0; + amdsmi_status_t status = amdsmi_get_cpu_current_xgmi_bw_p( + device_handles[event->device], link, &bw); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = bw; + return PAPI_OK; +} +int access_amdsmi_cpu_ddr_bw(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_ddr_bw_metrics_t bw; + amdsmi_status_t status = + amdsmi_get_cpu_ddr_bw_p(device_handles[event->device], &bw); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = bw.max_bw; + break; + case 1: + event->value = bw.utilized_bw; + break; + case 2: + event->value = bw.utilized_pct; + break; + default: + return PAPI_EMISC; + } + return PAPI_OK; +} +int access_amdsmi_cpu_fclk_mclk(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint32_t fclk = 0, mclk = 0; + amdsmi_status_t status = amdsmi_get_cpu_fclk_mclk_p( + device_handles[event->device], &fclk, &mclk); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + if (event->variant == 0) + event->value = fclk; + else if (event->variant == 1) + event->value = mclk; + else + return PAPI_EMISC; + return PAPI_OK; +} +int access_amdsmi_cpu_hsmp_driver_version(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + amdsmi_hsmp_driver_version_t ver; + amdsmi_status_t status = amdsmi_get_cpu_hsmp_driver_version_p( + device_handles[event->device], &ver); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + if (event->variant == 0) + event->value = ver.major; + else if (event->variant == 1) + event->value = ver.minor; + else + return PAPI_EMISC; + return PAPI_OK; +} +int access_amdsmi_cpu_hsmp_proto_ver(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint32_t ver = 0; + amdsmi_status_t status = + amdsmi_get_cpu_hsmp_proto_ver_p(device_handles[event->device], &ver); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = ver; + return PAPI_OK; +} +int access_amdsmi_cpu_prochot_status(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint32_t status = 0; + amdsmi_status_t ret = amdsmi_get_cpu_prochot_status_p( + device_handles[event->device], &status); + if (ret != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = status; + return PAPI_OK; +} +int access_amdsmi_cpu_svi_power(int mode, void *arg) { + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { + return PAPI_EMISC; + } + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + uint32_t power = 0; + amdsmi_status_t status = amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p( + device_handles[event->device], &power); + if (status != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = power; + return PAPI_OK; +} int access_amdsmi_dimm_temp(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles) { @@ -1175,28 +1757,6 @@ int access_amdsmi_smu_fw_version(int mode, void *arg) { event->value = encoded; return PAPI_OK; } -int access_amdsmi_xgmi_bandwidth(int mode, void *arg) { - native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { - return PAPI_EMISC; - } - if (mode != PAPI_MODE_READ) { - return PAPI_ENOSUPP; - } - amdsmi_processor_handle src = device_handles[event->device]; - amdsmi_processor_handle dst = device_handles[gpu_count + event->subvariant]; - uint64_t min_bw = 0, max_bw = 0; - amdsmi_status_t status = amdsmi_get_minmax_bandwidth_between_processors_p(src, dst, &min_bw, &max_bw); - if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; - } - if (event->variant == 0) { - event->value = (int64_t)min_bw; - } else { - event->value = (int64_t)max_bw; - } - return PAPI_OK; -} #endif int access_amdsmi_cache_stat(int mode, void *arg) { @@ -1473,6 +2033,22 @@ int access_amdsmi_pm_metric_value(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_pm_enabled(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_is_gpu_power_management_enabled_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + bool enabled = false; + if (amdsmi_is_gpu_power_management_enabled_p(device_handles[event->device], + &enabled) != + AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = enabled ? 1 : 0; + return PAPI_OK; +} + int access_amdsmi_ras_ecc_schema(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1509,6 +2085,19 @@ int access_amdsmi_ras_eeprom_version(int mode, void *arg) { return PAPI_OK; } +int access_amdsmi_ras_eeprom_validate(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_gpu_validate_ras_eeprom_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_status_t st = + amdsmi_gpu_validate_ras_eeprom_p(device_handles[event->device]); + event->value = (int64_t)st; + return PAPI_OK; +} + int access_amdsmi_ras_block_state(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -1855,6 +2444,21 @@ int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { } #endif +int access_amdsmi_memory_reserved_pages(int mode, void *arg) { + if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_memory_reserved_pages_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) + return PAPI_EMISC; + uint32_t num = 0; + if (amdsmi_get_gpu_memory_reserved_pages_p(device_handles[event->device], &num, + NULL) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)num; + return PAPI_OK; +} + int access_amdsmi_bad_page_count(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; @@ -1983,6 +2587,13 @@ int access_amdsmi_pcie_info(int mode, void *arg) { amdsmi_status_t st = amdsmi_get_pcie_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + // Variant mapping: + // 0 max width, 1 max speed, 2 interface version, 3 slot type, + // 4 max interface version (lib >=25), + // 5 current width, 6 current speed, 7 bandwidth, + // 8 replay count, 9 L0->recovery count, 10 replay rollover count, + // 11 NAK sent count, 12 NAK received count, + // 13 other-end recovery count switch (event->variant) { case 0: event->value = info.pcie_static.max_pcie_width; @@ -2067,3 +2678,73 @@ int access_amdsmi_event_notification(int mode, void *arg) { event->value = (int64_t)cnt; return PAPI_OK; } + +int access_amdsmi_utilization_count(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_utilization_count_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_utilization_counter_t cnt; + memset(&cnt, 0, sizeof(cnt)); + cnt.type = (amdsmi_utilization_counter_type_t)event->variant; + uint64_t ts = 0; + amdsmi_status_t st = + amdsmi_get_utilization_count_p(device_handles[event->device], &cnt, 1, &ts); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + event->value = (int64_t)cnt.value; + return PAPI_OK; +} + +int access_amdsmi_violation_status(int mode, void *arg) { + if (mode != PAPI_MODE_READ) + return PAPI_ENOSUPP; + if (!amdsmi_get_violation_status_p) + return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) + return PAPI_EMISC; + amdsmi_violation_status_t info; + memset(&info, 0, sizeof(info)); + amdsmi_status_t st = + amdsmi_get_violation_status_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; + switch (event->variant) { + case 0: + event->value = (int64_t)info.acc_ppt_pwr; + break; + case 1: + event->value = (int64_t)info.acc_socket_thrm; + break; + case 2: + event->value = (int64_t)info.acc_vr_thrm; + break; + case 3: + event->value = (int64_t)info.per_ppt_pwr; + break; + case 4: + event->value = (int64_t)info.per_socket_thrm; + break; + case 5: + event->value = (int64_t)info.per_vr_thrm; + break; + case 6: + event->value = (int64_t)info.active_ppt_pwr; + break; + case 7: + event->value = (int64_t)info.active_socket_thrm; + break; + case 8: + event->value = (int64_t)info.active_vr_thrm; + break; + default: + return PAPI_ENOSUPP; + } + return PAPI_OK; +} diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 8bb3321f0..5f6341dd3 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -56,12 +56,34 @@ int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { papi_free(new_ctx); return papi_errno; } + for (int i = 0; i < num_events; ++i) { + native_event_t *ev = &ntv_table_p->events[event_ids[i]]; + if (ev->open_func) { + papi_errno = ev->open_func(ev); + if (papi_errno != PAPI_OK) { + for (int j = 0; j < i; ++j) { + native_event_t *prev = &ntv_table_p->events[event_ids[j]]; + if (prev->close_func) + prev->close_func(prev); + } + release_devices(&new_ctx->device_mask); + papi_free(new_ctx->counters); + papi_free(new_ctx); + return papi_errno; + } + } + } *ctx = new_ctx; return PAPI_OK; } int amds_ctx_close(amds_ctx_t ctx) { if (!ctx) return PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + native_event_t *ev = &ntv_table_p->events[ctx->events_id[i]]; + if (ev->close_func) + ev->close_func(ev); + } // release device usage release_devices(&ctx->device_mask); papi_free(ctx->counters); @@ -69,17 +91,33 @@ int amds_ctx_close(amds_ctx_t ctx) { return PAPI_OK; } int amds_ctx_start(amds_ctx_t ctx) { - // No additional actions needed to start in this design (all reads are - // on-demand) + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + native_event_t *ev = &ntv_table_p->events[ctx->events_id[i]]; + if (ev->start_func) { + papi_errno = ev->start_func(ev); + if (papi_errno != PAPI_OK) + return papi_errno; + } + } ctx->state |= AMDS_EVENTS_RUNNING; - return PAPI_OK; + return papi_errno; } int amds_ctx_stop(amds_ctx_t ctx) { if (!(ctx->state & AMDS_EVENTS_RUNNING)) { return PAPI_OK; } + int papi_errno = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { + native_event_t *ev = &ntv_table_p->events[ctx->events_id[i]]; + if (ev->stop_func) { + int ret = ev->stop_func(ev); + if (papi_errno == PAPI_OK) + papi_errno = ret; + } + } ctx->state &= ~AMDS_EVENTS_RUNNING; - return PAPI_OK; + return papi_errno; } int amds_ctx_read(amds_ctx_t ctx, long long **counts) { int papi_errno = PAPI_OK; diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h index bd44ce1ae..8ebdd3e95 100644 --- a/src/components/amd_smi/amds_funcs.h +++ b/src/components/amd_smi/amds_funcs.h @@ -9,6 +9,19 @@ _(amdsmi_get_processor_handles_by_type_p, amdsmi_status_t, \ (amdsmi_socket_handle, processor_type_t, amdsmi_processor_handle *, \ uint32_t *)) \ + _(amdsmi_get_processor_handles_p, amdsmi_status_t, \ + (amdsmi_socket_handle, uint32_t *, amdsmi_processor_handle *)) \ + _(amdsmi_get_processor_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, size_t, char *)) \ + _(amdsmi_get_processor_type_p, amdsmi_status_t, \ + (amdsmi_processor_handle, processor_type_t *)) \ + _(amdsmi_get_socket_info_p, amdsmi_status_t, \ + (amdsmi_socket_handle, size_t, char *)) \ + _(amdsmi_get_utilization_count_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_utilization_counter_t *, uint32_t, \ + uint64_t *)) \ + _(amdsmi_get_violation_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_violation_status_t *)) \ _(amdsmi_get_temp_metric_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_temperature_type_t, \ amdsmi_temperature_metric_t, int64_t *)) \ @@ -38,6 +51,8 @@ (amdsmi_processor_handle, uint64_t *)) \ _(amdsmi_get_clk_freq_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_frequencies_t *)) \ + _(amdsmi_get_clock_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_clk_type_t, amdsmi_clk_info_t *)) \ _(amdsmi_set_clk_freq_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t)) \ _(amdsmi_get_gpu_metrics_info_p, amdsmi_status_t, \ @@ -63,6 +78,9 @@ (amdsmi_processor_handle, char *, size_t)) \ _(amdsmi_get_link_metrics_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_link_metrics_t *)) \ + _(amdsmi_get_minmax_bandwidth_between_processors_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, \ + uint64_t *)) \ _(amdsmi_get_gpu_process_list_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint32_t *, amdsmi_proc_info_t *)) \ _(amdsmi_get_gpu_ecc_enabled_p, amdsmi_status_t, \ @@ -94,8 +112,25 @@ (amdsmi_processor_handle, amdsmi_pcie_bandwidth_t *)) \ _(amdsmi_get_gpu_bdf_id_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_get_gpu_device_bdf_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_bdf_t *)) \ _(amdsmi_get_gpu_topo_numa_affinity_p, amdsmi_status_t, \ (amdsmi_processor_handle, int32_t *)) \ + _(amdsmi_topo_get_numa_node_number_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_topo_get_link_weight_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *)) \ + _(amdsmi_topo_get_link_type_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, \ + amdsmi_io_link_type_t *)) \ + _(amdsmi_topo_get_p2p_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, amdsmi_io_link_type_t *,\ + amdsmi_p2p_capability_t *)) \ + _(amdsmi_is_P2P_accessible_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_processor_handle, bool *)) \ + _(amdsmi_get_link_topology_nearest_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_link_type_t, \ + amdsmi_topology_nearest_t *)) \ _(amdsmi_get_energy_count_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint64_t *, float *, uint64_t *)) \ _(amdsmi_get_gpu_power_profile_presets_p, amdsmi_status_t, \ @@ -150,7 +185,38 @@ _(amdsmi_get_gpu_event_notification_p, amdsmi_status_t, \ (int, uint32_t *, amdsmi_evt_notification_data_t *)) \ _(amdsmi_stop_gpu_event_notification_p, amdsmi_status_t, \ - (amdsmi_processor_handle)) + (amdsmi_processor_handle)) \ + _(amdsmi_gpu_counter_group_supported_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_event_group_t)) \ + _(amdsmi_get_gpu_available_counters_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_event_group_t, uint32_t *)) \ + _(amdsmi_gpu_create_counter_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_event_type_t, \ + amdsmi_event_handle_t *)) \ + _(amdsmi_gpu_control_counter_p, amdsmi_status_t, \ + (amdsmi_event_handle_t, amdsmi_counter_command_t, void *)) \ + _(amdsmi_gpu_read_counter_p, amdsmi_status_t, \ + (amdsmi_event_handle_t, amdsmi_counter_value_t *)) \ + _(amdsmi_get_gpu_kfd_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_kfd_info_t *)) \ + _(amdsmi_get_gpu_memory_partition_config_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_memory_partition_config_t *)) \ + _(amdsmi_get_gpu_memory_reserved_pages_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *)) \ + _(amdsmi_get_gpu_metrics_header_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amd_metrics_table_header_t *)) \ + _(amdsmi_get_gpu_xgmi_link_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_xgmi_link_status_t *)) \ + _(amdsmi_get_xgmi_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_xgmi_info_t *)) \ + _(amdsmi_gpu_xgmi_error_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_xgmi_status_t *)) \ + _(amdsmi_is_gpu_power_management_enabled_p, amdsmi_status_t, \ + (amdsmi_processor_handle, bool *)) \ + _(amdsmi_gpu_validate_ras_eeprom_p, amdsmi_status_t, \ + (amdsmi_processor_handle)) \ + _(amdsmi_gpu_destroy_counter_p, amdsmi_status_t, \ + (amdsmi_event_handle_t)) #if AMDSMI_LIB_VERSION_MAJOR >= 25 #define AMD_SMI_GPU_FUNCTIONS(_) \ @@ -191,9 +257,24 @@ (amdsmi_processor_handle, uint16_t *, uint16_t *)) \ _(amdsmi_get_cpu_core_current_freq_limit_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint32_t *)) \ - _(amdsmi_get_minmax_bandwidth_between_processors_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_processor_handle, uint64_t *, \ - uint64_t *)) \ + _(amdsmi_get_cpu_cclk_limit_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_current_io_bandwidth_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_link_id_bw_type_t, uint32_t *)) \ + _(amdsmi_get_cpu_current_xgmi_bw_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_link_id_bw_type_t, uint32_t *)) \ + _(amdsmi_get_cpu_ddr_bw_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_ddr_bw_metrics_t *)) \ + _(amdsmi_get_cpu_fclk_mclk_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *, uint32_t *)) \ + _(amdsmi_get_cpu_hsmp_driver_version_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_hsmp_driver_version_t *)) \ + _(amdsmi_get_cpu_hsmp_proto_ver_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_prochot_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ + _(amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p, amdsmi_status_t, \ + (amdsmi_processor_handle, uint32_t *)) \ _(amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint8_t, amdsmi_temp_range_refresh_rate_t *)) \ _(amdsmi_get_cpu_dimm_power_consumption_p, amdsmi_status_t, \ diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index f7bb24f16..b912a82b5 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -26,6 +26,7 @@ typedef struct native_event { int32_t device; uint64_t value; uint32_t mode, variant, subvariant; + void *priv; int (*open_func)(struct native_event *); int (*close_func)(struct native_event *); int (*start_func)(struct native_event *); @@ -84,6 +85,7 @@ int access_amdsmi_power_average(int mode, void *arg); int access_amdsmi_pci_throughput(int mode, void *arg); int access_amdsmi_pci_replay_counter(int mode, void *arg); int access_amdsmi_clk_freq(int mode, void *arg); +int access_amdsmi_clock_info(int mode, void *arg); int access_amdsmi_gpu_metrics(int mode, void *arg); int access_amdsmi_gpu_info(int mode, void *arg); int access_amdsmi_gpu_activity(int mode, void *arg); @@ -98,6 +100,15 @@ int access_amdsmi_enumeration_info(int mode, void *arg); #endif int access_amdsmi_asic_info(int mode, void *arg); int access_amdsmi_link_metrics(int mode, void *arg); +int access_amdsmi_link_weight(int mode, void *arg); +int access_amdsmi_link_type(int mode, void *arg); +int access_amdsmi_p2p_status(int mode, void *arg); +int access_amdsmi_p2p_accessible(int mode, void *arg); +int access_amdsmi_link_topology_nearest(int mode, void *arg); +int access_amdsmi_topo_numa(int mode, void *arg); +int access_amdsmi_device_bdf(int mode, void *arg); +int access_amdsmi_kfd_info(int mode, void *arg); +int access_amdsmi_xgmi_info(int mode, void *arg); int access_amdsmi_process_info(int mode, void *arg); int access_amdsmi_ecc_total(int mode, void *arg); int access_amdsmi_ecc_block(int mode, void *arg); @@ -105,6 +116,8 @@ int access_amdsmi_ecc_status(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); +int access_amdsmi_memory_partition_config(int mode, void *arg); +int access_amdsmi_memory_reserved_pages(int mode, void *arg); int access_amdsmi_accelerator_num_partitions(int mode, void *arg); int access_amdsmi_lib_version(int mode, void *arg); int access_amdsmi_cache_stat(int mode, void *arg); @@ -116,8 +129,10 @@ int access_amdsmi_od_volt_info(int mode, void *arg); int access_amdsmi_perf_level(int mode, void *arg); int access_amdsmi_pm_metrics_count(int mode, void *arg); int access_amdsmi_pm_metric_value(int mode, void *arg); +int access_amdsmi_pm_enabled(int mode, void *arg); int access_amdsmi_ras_ecc_schema(int mode, void *arg); int access_amdsmi_ras_eeprom_version(int mode, void *arg); +int access_amdsmi_ras_eeprom_validate(int mode, void *arg); int access_amdsmi_ras_block_state(int mode, void *arg); int access_amdsmi_reg_count(int mode, void *arg); int access_amdsmi_reg_value(int mode, void *arg); @@ -129,6 +144,9 @@ int access_amdsmi_vram_vendor(int mode, void *arg); int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_soc_pstate_supported(int mode, void *arg); +int access_amdsmi_metrics_header_info(int mode, void *arg); +int access_amdsmi_xgmi_link_status(int mode, void *arg); +int access_amdsmi_xgmi_error_status(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); @@ -144,6 +162,7 @@ int access_amdsmi_bad_page_record(int mode, void *arg); int access_amdsmi_power_sensor(int mode, void *arg); int access_amdsmi_pcie_info(int mode, void *arg); int access_amdsmi_event_notification(int mode, void *arg); +int access_amdsmi_xgmi_bandwidth(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI int access_amdsmi_cpu_socket_power(int mode, void *arg); @@ -154,6 +173,15 @@ int access_amdsmi_cpu_power_cap(int mode, void *arg); int access_amdsmi_cpu_core_energy(int mode, void *arg); int access_amdsmi_cpu_core_freq_limit(int mode, void *arg); int access_amdsmi_cpu_core_boostlimit(int mode, void *arg); +int access_amdsmi_cpu_cclk_limit(int mode, void *arg); +int access_amdsmi_cpu_io_bw(int mode, void *arg); +int access_amdsmi_cpu_xgmi_bw(int mode, void *arg); +int access_amdsmi_cpu_ddr_bw(int mode, void *arg); +int access_amdsmi_cpu_fclk_mclk(int mode, void *arg); +int access_amdsmi_cpu_hsmp_driver_version(int mode, void *arg); +int access_amdsmi_cpu_hsmp_proto_ver(int mode, void *arg); +int access_amdsmi_cpu_prochot_status(int mode, void *arg); +int access_amdsmi_cpu_svi_power(int mode, void *arg); int access_amdsmi_dimm_temp(int mode, void *arg); int access_amdsmi_dimm_power(int mode, void *arg); int access_amdsmi_dimm_range_refresh(int mode, void *arg); @@ -161,7 +189,6 @@ int access_amdsmi_threads_per_core(int mode, void *arg); int access_amdsmi_cpu_family(int mode, void *arg); int access_amdsmi_cpu_model(int mode, void *arg); int access_amdsmi_smu_fw_version(int mode, void *arg); -int access_amdsmi_xgmi_bandwidth(int mode, void *arg); #endif #endif /* __AMDS_PRIV_H__ */ From 5a94204da4e334333c9e471a9a3e270514f9812f Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Wed, 3 Sep 2025 14:42:24 -0400 Subject: [PATCH 082/147] Declare missing accessors and fix partition config --- src/components/amd_smi/amds_accessors.c | 3 ++- src/components/amd_smi/amds_priv.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 9cf49df1e..7386be22b 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -730,7 +730,8 @@ int access_amdsmi_memory_partition_config(int mode, void *arg) { return PAPI_EMISC; switch (event->variant) { case 0: - event->value = (int64_t)cfg.partition_caps; + /* Union holds bit flags; expose the mask value */ + event->value = (int64_t)cfg.partition_caps.nps_cap_mask; break; case 1: event->value = (int64_t)cfg.mp_mode; diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index b912a82b5..b29e7f6da 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -163,6 +163,8 @@ int access_amdsmi_power_sensor(int mode, void *arg); int access_amdsmi_pcie_info(int mode, void *arg); int access_amdsmi_event_notification(int mode, void *arg); int access_amdsmi_xgmi_bandwidth(int mode, void *arg); +int access_amdsmi_utilization_count(int mode, void *arg); +int access_amdsmi_violation_status(int mode, void *arg); #ifndef AMDSMI_DISABLE_ESMI int access_amdsmi_cpu_socket_power(int mode, void *arg); From b61b4d13cb385e51ccf6ce422cfb648ddc7c5fd4 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 3 Sep 2025 14:05:24 -0700 Subject: [PATCH 083/147] test update --- .../amd_smi/tests/amdsmi_basics.cpp | 163 +++++++---- .../amd_smi/tests/amdsmi_ctx_conflict.cpp | 118 ++++++++ .../amd_smi/tests/amdsmi_energy_monotonic.cpp | 73 +++++ src/components/amd_smi/tests/amdsmi_gemm.cpp | 258 ++++++++++++++++++ src/components/amd_smi/tests/amdsmi_hello.cpp | 78 ++++++ src/components/amd_smi/tests/runtest.sh | 89 ++++++ src/components/amd_smi/tests/test_harness.hpp | 88 ++++++ 7 files changed, 811 insertions(+), 56 deletions(-) create mode 100644 src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp create mode 100644 src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp create mode 100644 src/components/amd_smi/tests/amdsmi_gemm.cpp create mode 100644 src/components/amd_smi/tests/amdsmi_hello.cpp create mode 100755 src/components/amd_smi/tests/runtest.sh create mode 100644 src/components/amd_smi/tests/test_harness.hpp diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index ade662623..9b0890aaf 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -1,47 +1,35 @@ //----------------------------------------------------------------------------- -// amd_smi_single_event_test.cpp +// amdsmi_basics.cpp (harness-integrated) // Enumerates every native AMD-SMI event exposed through PAPI and measures -// them **one at a time**. This isolates each counter in its own EventSet so -// that you can verify the event works independently of the others. -// Designed for C++17 / hipcc builds. -// -// Build example: -// make -f ROCM_SMI_Makefile amd_smi_single_event_test.out +// them one at a time. Minimal changes from your original: now uses the +// test_harness.hpp to support --print and final PASS/FAIL lines. //----------------------------------------------------------------------------- -#define __HIP_PLATFORM_HCC__ - #include #include #include - #include "papi.h" +#include "test_harness.hpp" -// --------------------------------------------------------------------------- -// Simple helper for PAPI error handling -// --------------------------------------------------------------------------- -#define CALL_PAPI_OK(call) \ - do { \ - int _ret = (call); \ - if (_ret != PAPI_OK) { \ - fprintf(stderr, "%s:%d: PAPI error in '" #call "': %s\n", __FILE__, __LINE__, PAPI_strerror(_ret)); \ - std::exit(EXIT_FAILURE); \ - } \ - } while (0) +// Return true if rc is a "warning, not failure" status for add/start/stop. +static inline bool is_warning_rc(int rc) { + return (rc == PAPI_ENOEVNT) || (rc == PAPI_ECNFLCT) || (rc == PAPI_EPERM); +} int main(int argc, char *argv[]) { - //------------------------------------------------------------------- - // 1. Initialise PAPI - //------------------------------------------------------------------- + // Unbuffer stdout so the final status line shows promptly. + setvbuf(stdout, nullptr, _IONBF, 0); + + auto opts = parse_harness_cli(argc, argv); + + // 1. Initialise PAPI int ret = PAPI_library_init(PAPI_VER_CURRENT); if (ret != PAPI_VER_CURRENT) { - fprintf(stderr, "PAPI_library_init failed: %s\n", PAPI_strerror(ret)); - return EXIT_FAILURE; + NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); + return eval_result(opts, 1); } - //------------------------------------------------------------------- - // 2. Locate the AMD-SMI component - //------------------------------------------------------------------- + // 2. Locate the AMD-SMI component int cid = -1; const int ncomps = PAPI_num_components(); for (int i = 0; i < ncomps && cid < 0; ++i) { @@ -51,63 +39,126 @@ int main(int argc, char *argv[]) { } } if (cid < 0) { - fprintf(stderr, "Unable to locate the amd_smi component ? is PAPI built with ROCm support?\n"); - return EXIT_FAILURE; + // Can't conduct on this build/platform ¡æ pass with warning. + SKIP("Unable to locate the amd_smi component (PAPI built without ROCm?)"); } - printf("Using AMD-SMI component id %d\n\n", cid); - //------------------------------------------------------------------- - // 3. Enumerate every native event - //------------------------------------------------------------------- + NOTE("Using AMD-SMI component id %d\n", cid); + + // 3. Enumerate every native event int ev_code = PAPI_NATIVE_MASK; if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { - fprintf(stderr, "No native events found for AMD-SMI component.\n"); - return EXIT_SUCCESS; // Nothing more to do + // No events ¡æ treat as ¡°nothing to do¡± (warning instead of failing) + SKIP("No native events found for AMD-SMI component"); } int event_index = 0; + int passed = 0, warned = 0, failed = 0, skipped = 0; + do { char ev_name[PAPI_MAX_STR_LEN]{}; if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { - // Should not happen, but skip if it does. + // Shouldn't happen; skip silently + ++skipped; continue; } - if (std::strncmp(ev_name, "process", 7) == 0) { - printf("[%4d] Skipping %s (process events not testable)\n\n", event_index++, ev_name); + // Preserve your original skip for process* events + if (std::strncmp(ev_name, "amd_smi:::process", 17) == 0 || + std::strncmp(ev_name, "process", 7) == 0) { + ++skipped; + NOTE("[%4d] Skipping %s (process events not testable)\n", event_index++, ev_name); continue; } - printf("[%4d] Testing %s...\n", event_index++, ev_name); + NOTE("[%4d] Testing %s...", event_index, ev_name); - //------------------------------------------------------------------- // 4-7. Create a fresh EventSet, read the event, print, cleanup - //------------------------------------------------------------------- int eventSet = PAPI_NULL; - CALL_PAPI_OK(PAPI_create_eventset(&eventSet)); - CALL_PAPI_OK(PAPI_assign_eventset_component(eventSet, cid)); + ret = PAPI_create_eventset(&eventSet); + if (ret != PAPI_OK) { + // Hard failure to create an EventSet + NOTE(" ? create_eventset failed: %s", PAPI_strerror(ret)); + ++failed; ++event_index; + continue; + } + + // Keep original explicit assignment to the component + ret = PAPI_assign_eventset_component(eventSet, cid); + if (ret != PAPI_OK) { + NOTE(" ? assign_eventset_component failed: %s", PAPI_strerror(ret)); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + continue; + } ret = PAPI_add_event(eventSet, ev_code); if (ret != PAPI_OK) { - fprintf(stderr, " ? Could not add %s (%s)\n\n", ev_name, PAPI_strerror(ret)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + if (is_warning_rc(ret)) { + WARNF("Could not add %-50s (%s)", ev_name, PAPI_strerror(ret)); + (void)PAPI_destroy_eventset(&eventSet); + ++warned; ++event_index; + } else { + NOTE(" ? Could not add %s (%s)", ev_name, PAPI_strerror(ret)); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + } continue; } long long value = 0; - CALL_PAPI_OK(PAPI_start(eventSet)); - CALL_PAPI_OK(PAPI_stop(eventSet, &value)); + ret = PAPI_start(eventSet); + if (ret != PAPI_OK) { + if (is_warning_rc(ret)) { + WARNF("start %-54s (%s)", ev_name, PAPI_strerror(ret)); + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++warned; ++event_index; + } else { + NOTE(" ? start failed for %s (%s)", ev_name, PAPI_strerror(ret)); + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + } + continue; + } + + // Read once via stop (same as original) + ret = PAPI_stop(eventSet, &value); + if (ret != PAPI_OK) { + if (is_warning_rc(ret)) { + WARNF("stop %-54s (%s)", ev_name, PAPI_strerror(ret)); + ++warned; + } else { + NOTE(" ? stop failed for %s (%s)", ev_name, PAPI_strerror(ret)); + ++failed; + } + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++event_index; + continue; + } - printf(" %-60s = %lld\n\n", ev_name, value); + // Success path + ++passed; + if (opts.print) { + printf(" %-60s = %lld\n\n", ev_name, value); + } - CALL_PAPI_OK(PAPI_cleanup_eventset(eventSet)); - CALL_PAPI_OK(PAPI_destroy_eventset(&eventSet)); + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++event_index; } while (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_EVENTS, cid) == PAPI_OK); - //------------------------------------------------------------------- - // 8. Shutdown - //------------------------------------------------------------------- + if (opts.print) { + printf("Summary: passed=%d warned=%d skipped=%d failed=%d\n", + passed, warned, skipped, failed); + } + PAPI_shutdown(); - return EXIT_SUCCESS; + + // Final: fail only if we had real failures; warnings/skips are allowed. + int rc = (failed == 0) ? 0 : 1; + return eval_result(opts, rc); } diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp new file mode 100644 index 000000000..ffe39ad4a --- /dev/null +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp @@ -0,0 +1,118 @@ +// amdsmi_ctx_conflict.cpp ? contention test (refactor) +#include +#include +#include +#include +#include +#include "papi.h" +#include "test_harness.hpp" + +static unsigned long get_tid() { return (unsigned long)pthread_self(); } + +struct ThreadState { int start_rc = PAPI_OK; }; +static std::atomic t1_started(false); + +// Default event; you can override with argv[1] (any amd_smi native event string) +static const char* g_event = "amd_smi:::temp_current:device=0:sensor=0"; + +static void* thread_fn1(void* arg) { + PAPI_register_thread(); + ThreadState* st = reinterpret_cast(arg); + + int EventSet = PAPI_NULL; + int rc = PAPI_create_eventset(&EventSet); + if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return nullptr; } + + rc = PAPI_add_named_event(EventSet, g_event); + if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } + if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } + if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return nullptr; } + + rc = PAPI_start(EventSet); + st->start_rc = rc; + if (rc == PAPI_OK) { + t1_started.store(true, std::memory_order_release); + long long v=0; (void)PAPI_read(EventSet, &v); + usleep(100000); // keep running long enough for thread2 to collide + (void)PAPI_stop(EventSet, &v); + } else { + // If thread 1 cannot start, we cannot conduct the test => PASS with WARNING + SKIP("Cannot start thread1 due to HW/resource limits"); + } + + (void)PAPI_cleanup_eventset(EventSet); + (void)PAPI_destroy_eventset(&EventSet); + PAPI_unregister_thread(); + return nullptr; +} + +static void* thread_fn2(void* arg) { + PAPI_register_thread(); + ThreadState* st = reinterpret_cast(arg); + + int EventSet = PAPI_NULL; + int rc = PAPI_create_eventset(&EventSet); + if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return nullptr; } + + rc = PAPI_add_named_event(EventSet, g_event); + if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } + if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } + if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return nullptr; } + + // Wait until thread1 is actually running the event + while (!t1_started.load(std::memory_order_acquire)) { /* spin */ } + + rc = PAPI_start(EventSet); + st->start_rc = rc; + if (rc != PAPI_OK) { + NOTE("t2 start expected fail: %s", PAPI_strerror(rc)); + } else { + NOTE("t2 start unexpectedly succeeded"); + long long v=0; (void)PAPI_stop(EventSet, &v); + } + + (void)PAPI_cleanup_eventset(EventSet); + (void)PAPI_destroy_eventset(&EventSet); + PAPI_unregister_thread(); + return nullptr; +} + +int main(int argc, char** argv) { + // Unbuffer stdout so the final status line always shows promptly + setvbuf(stdout, nullptr, _IONBF, 0); + + auto opts = parse_harness_cli(argc, argv); + // Optional override of the event: ./amdsmi_ctx_conflict "" [--print ...] + if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; + + const char* root = std::getenv("PAPI_AMDSMI_ROOT"); + if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); + + int rc = PAPI_library_init(PAPI_VER_CURRENT); + if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } + + if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } + + t1_started.store(false, std::memory_order_relaxed); + + ThreadState s1{}, s2{}; + pthread_t th1, th2; + pthread_create(&th1, nullptr, thread_fn1, &s1); + pthread_create(&th2, nullptr, thread_fn2, &s2); + pthread_join(th1, nullptr); + pthread_join(th2, nullptr); + + if (opts.print) { + printf("event: %s\n", g_event); + printf("t1 start rc: %d (%s)\n", s1.start_rc, PAPI_strerror(s1.start_rc)); + printf("t2 start rc: %d (%s)\n", s2.start_rc, PAPI_strerror(s2.start_rc)); + } + + // PASS when expected contention occurred; else FAIL. + int final_rc = (s1.start_rc == PAPI_OK && s2.start_rc == PAPI_ECNFLCT) ? 0 : 1; + if (final_rc != 0) NOTE("Unexpected results (wanted t1 OK, t2 PAPI_ECNFLCT)."); + + int exit_code = eval_result(opts, final_rc); + fflush(stdout); + return exit_code; +} diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp new file mode 100644 index 000000000..1d5eb906b --- /dev/null +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp @@ -0,0 +1,73 @@ +// amdsmi_energy_monotonic.cpp +#include +#include +#include +#include "papi.h" +#include "test_harness.hpp" + +int main(int argc, char **argv) { + auto opts = parse_harness_cli(argc, argv); + + const char* root = std::getenv("PAPI_AMDSMI_ROOT"); + if (!root || !*root) { + SKIP("PAPI_AMDSMI_ROOT not set"); + } + + int ret = PAPI_library_init(PAPI_VER_CURRENT); + if (ret != PAPI_VER_CURRENT) { + NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); + return eval_result(opts, 1); + } + + int EventSet = PAPI_NULL; + ret = PAPI_create_eventset(&EventSet); + if (ret != PAPI_OK) { + NOTE("PAPI_create_eventset: %s", PAPI_strerror(ret)); + return eval_result(opts, 1); + } + + const char *ev = "amd_smi:::energy_consumed:device=0"; + ret = PAPI_add_named_event(EventSet, ev); + if (ret == PAPI_ENOEVNT) { + SKIP("energy_consumed:device=0 not supported"); + } else if (ret != PAPI_OK) { + NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(ret)); + return eval_result(opts, 1); + } + + ret = PAPI_start(EventSet); + if (ret != PAPI_OK) { + NOTE("PAPI_start: %s", PAPI_strerror(ret)); + return eval_result(opts, 1); + } + + long long v1 = 0, v2 = 0; + ret = PAPI_read(EventSet, &v1); + if (ret != PAPI_OK) { + NOTE("PAPI_read(1): %s", PAPI_strerror(ret)); + long long dummy=0; PAPI_stop(EventSet, &dummy); + return eval_result(opts, 1); + } + + usleep(100000); + + ret = PAPI_read(EventSet, &v2); + if (ret != PAPI_OK) { + NOTE("PAPI_read(2): %s", PAPI_strerror(ret)); + long long dummy=0; PAPI_stop(EventSet, &dummy); + return eval_result(opts, 1); + } + + long long dummy=0; + PAPI_stop(EventSet, &dummy); + PAPI_cleanup_eventset(EventSet); + PAPI_destroy_eventset(&EventSet); + + if (opts.print) { + printf("energy_consumed: first=%lld second=%lld delta=%lld\n", v1, v2, (v2 - v1)); + } + + int failed = (v2 <= v1) ? 1 : 0; + if (failed) NOTE("Energy did not increase"); + return eval_result(opts, failed); +} diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.cpp new file mode 100644 index 000000000..46dde37ff --- /dev/null +++ b/src/components/amd_smi/tests/amdsmi_gemm.cpp @@ -0,0 +1,258 @@ +// gemm.cpp ? harness-integrated, keeps your HIP threading/monitoring logic, +// removes CSV output (prints readings only when --print), default PASS/FAIL. +#include +#include +#include "papi.h" +#include "hip/hip_runtime.h" +#include +#include +#include + +#include "test_harness.hpp" + +#define M_DIM 7296 +#define K_DIM 14592 +#define N_DIM 7296 + +#define NUM_STREAMS 1 +#define ITERATIONS_PER_STREAM 1 + +#define HIP_CHECK(cmd) do { \ + hipError_t e = cmd; \ + if (e != hipSuccess) { \ + fprintf(stderr, "Failed: HIP error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + return 1; \ + } \ +} while(0) + +#define HIP_CHECK_CLEANUP(cmd) do { \ + hipError_t e = cmd; \ + if (e != hipSuccess) { \ + fprintf(stderr, "Warning: HIP cleanup error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + } \ +} while(0) + +static volatile int stop_monitor = 0; + +struct monitor_params { + int EventSet; + struct timeval start_time; + int print; // 0/1: whether to print readings (controls stdout chatter) +}; + +static void *monitor_events(void *args) { + struct monitor_params *params = (struct monitor_params *)args; + int statusFlag; + long long values[5]; + + while (!stop_monitor) { + statusFlag = PAPI_read(params->EventSet, values); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI read failed in monitor: %s\n", PAPI_strerror(statusFlag)); + break; + } + + struct timeval current_time; + gettimeofday(¤t_time, NULL); + double elapsed = (current_time.tv_sec - params->start_time.tv_sec) + + (current_time.tv_usec - params->start_time.tv_usec) / 1e6; + + if (params->print) { + fprintf(stdout, + "Time: %.6f sec -> event1: %lld, event2: %lld, event3: %lld, event4: %lld, event5: %lld\n", + elapsed, values[0], values[1], values[2], values[3], values[4]); + fflush(stdout); + } + + usleep(300000); + } + return NULL; +} + +__global__ void dgemm_kernel(const double *A, const double *B, double *C, + int M, int N, int K, double alpha, double beta) { + int row = blockIdx.y * blockDim.y + threadIdx.y; + int col = blockIdx.x * blockDim.x + threadIdx.x; + + if (row < M && col < N) { + double sum = 0.0; + for (int k = 0; k < K; k++) { + sum += A[row * K + k] * B[k * N + col]; + } + C[row * N + col] = alpha * sum + beta * C[row * N + col]; + } +} + +static int real_main(const HarnessOpts& opts) { + // Graceful AMD SMI availability check (library path) + const char* root = getenv("PAPI_AMDSMI_ROOT"); + if (!root || !*root) { + SKIP("PAPI_AMDSMI_ROOT not set"); + } + + // Initialize PAPI + int statusFlag = PAPI_library_init(PAPI_VER_CURRENT); + if (statusFlag != PAPI_VER_CURRENT) { + fprintf(stderr, "PAPI shared library version error: %s\n", PAPI_strerror(statusFlag)); + return 1; + } + + // Create EventSet + int EventSet = PAPI_NULL; + statusFlag = PAPI_create_eventset(&EventSet); + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI create eventset: %s\n", PAPI_strerror(statusFlag)); + return 1; + } + + // Required events (same as your original) + const char *event1 = "amd_smi:::temp_current:device=0:sensor=1"; + const char *event2 = "amd_smi:::temp_current:device=0:sensor=2"; + const char *event3 = "amd_smi:::mem_total_VRAM:device=0"; + const char *event4 = "amd_smi:::mem_usage_VRAM:device=0"; + const char *event5 = "amd_smi:::power_average:device=0"; + + // Add events; treat ENOEVNT as SKIP so the test suite stays portable + statusFlag = PAPI_add_named_event(EventSet, event1); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: mem_total_VRAM:device=0"); + if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event1, PAPI_strerror(statusFlag)); return 1; } + + statusFlag = PAPI_add_named_event(EventSet, event2); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=1"); + if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event2, PAPI_strerror(statusFlag)); return 1; } + + statusFlag = PAPI_add_named_event(EventSet, event3); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=2"); + if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event3, PAPI_strerror(statusFlag)); return 1; } + + statusFlag = PAPI_add_named_event(EventSet, event4); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: clk_freq_current:device=0"); + if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event4, PAPI_strerror(statusFlag)); return 1; } + + statusFlag = PAPI_add_named_event(EventSet, event5); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: power_average:device=0"); + if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event5, PAPI_strerror(statusFlag)); return 1; } + + // HIP runtime preflight so HIP_CHECK won't hard-exit + int device_count = 0; + if (hipGetDeviceCount(&device_count) != hipSuccess || device_count <= 1) { + SKIP("HIP device 1 not available"); + } + + // Set device 1 and show properties (only in --print mode) + HIP_CHECK(hipSetDevice(1)); + hipDeviceProp_t deviceProp; + HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); + if (opts.print) { + printf("Device Name: %s\n", deviceProp.name); + printf("Compute Units: %d\n", deviceProp.multiProcessorCount); + printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); + } + + // Host buffers (pinned) + size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); + size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); + size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); + + double *h_A=nullptr, *h_B=nullptr, *h_C=nullptr; + HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); + HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); + HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); + if (!h_A || !h_B || !h_C) { + fprintf(stderr, "Host memory allocation failed.\n"); + if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); + if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); + if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); + return 1; + } + + for (int i = 0; i < M_DIM * K_DIM; i++) h_A[i] = (double)(i % 100); + for (int i = 0; i < K_DIM * N_DIM; i++) h_B[i] = (double)(i % 100); + for (int i = 0; i < M_DIM * N_DIM; i++) h_C[i] = 0.0; + + // Device buffers + double *d_A[NUM_STREAMS], *d_B[NUM_STREAMS], *d_C[NUM_STREAMS]; + for (int s = 0; s < NUM_STREAMS; s++) { + HIP_CHECK(hipMalloc((void**)&d_A[s], size_A)); + HIP_CHECK(hipMalloc((void**)&d_B[s], size_B)); + HIP_CHECK(hipMalloc((void**)&d_C[s], size_C)); + } + + hipStream_t streams[NUM_STREAMS]; + hipEvent_t events[NUM_STREAMS]; + for (int s = 0; s < NUM_STREAMS; s++) { + HIP_CHECK(hipStreamCreateWithFlags(&streams[s], hipStreamNonBlocking)); + HIP_CHECK(hipEventCreate(&events[s])); + } + + for (int s = 0; s < NUM_STREAMS; s++) { + HIP_CHECK(hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s])); + HIP_CHECK(hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s])); + HIP_CHECK(hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s])); + } + + // Start PAPI + statusFlag = PAPI_start(EventSet); + if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_start: %s\n", PAPI_strerror(statusFlag)); return 1; } + + // Launch monitor thread (prints only when --print is given) + pthread_t monitor_thread; + struct monitor_params params; + params.EventSet = EventSet; + params.print = opts.print ? 1 : 0; + gettimeofday(¶ms.start_time, NULL); + statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); + if (statusFlag != 0) { fprintf(stderr, "pthread_create failed\n"); return 1; } + + // Ensure copies are done + for (int s = 0; s < NUM_STREAMS; s++) HIP_CHECK(hipStreamSynchronize(streams[s])); + + double alpha = 0.75; + double beta = 0.5; + + dim3 blockDim(32, 32); + dim3 gridDim((N_DIM + blockDim.x - 1) / blockDim.x, + (M_DIM + blockDim.y - 1) / blockDim.y); + + for (int iter = 0; iter < ITERATIONS_PER_STREAM; iter++) { + for (int s = 0; s < NUM_STREAMS; s++) { + hipLaunchKernelGGL(dgemm_kernel, gridDim, blockDim, 0, streams[s], + d_A[s], d_B[s], d_C[s], + M_DIM, N_DIM, K_DIM, alpha, beta); + HIP_CHECK(hipEventRecord(events[s], streams[s])); + HIP_CHECK(hipStreamSynchronize(streams[s])); + usleep(3000000); + } + } + + stop_monitor = 1; + pthread_join(monitor_thread, NULL); + + // Cleanup + for (int s = 0; s < NUM_STREAMS; s++) { + HIP_CHECK_CLEANUP(hipEventDestroy(events[s])); + HIP_CHECK_CLEANUP(hipStreamDestroy(streams[s])); + HIP_CHECK_CLEANUP(hipFree(d_A[s])); + HIP_CHECK_CLEANUP(hipFree(d_B[s])); + HIP_CHECK_CLEANUP(hipFree(d_C[s])); + } + HIP_CHECK_CLEANUP(hipHostFree(h_A)); + HIP_CHECK_CLEANUP(hipHostFree(h_B)); + HIP_CHECK_CLEANUP(hipHostFree(h_C)); + + long long dummy=0; + statusFlag = PAPI_stop(EventSet, &dummy); + if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_stop: %s\n", PAPI_strerror(statusFlag)); return 1; } + statusFlag = PAPI_cleanup_eventset(EventSet); + if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_cleanup_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } + statusFlag = PAPI_destroy_eventset(&EventSet); + if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_destroy_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } + + return 0; +} + +int main(int argc, char *argv[]) { + auto opts = parse_harness_cli(argc, argv); + int rc = real_main(opts); + return eval_result(opts, rc); +} diff --git a/src/components/amd_smi/tests/amdsmi_hello.cpp b/src/components/amd_smi/tests/amdsmi_hello.cpp new file mode 100644 index 000000000..c6aeecf58 --- /dev/null +++ b/src/components/amd_smi/tests/amdsmi_hello.cpp @@ -0,0 +1,78 @@ +// amdsmi_hello.cpp ? minimal harness-aware AMD SMI smoke test +#include +#include +#include +#include "papi.h" +#include "test_harness.hpp" + +int main(int argc, char** argv) { + // Unbuffer stdout so the final status line always shows. + setvbuf(stdout, nullptr, _IONBF, 0); + + auto opts = parse_harness_cli(argc, argv); + + // Default event (can override via argv[1], e.g. "./amdsmi_hello amd_smi:::power_average:device=0") + const char* ev = "amd_smi:::temp_current:device=0:sensor=1"; + if (argc > 1 && strncmp(argv[1], "--", 2) != 0) ev = argv[1]; + + // Require AMD SMI root so the component can dlopen the library + const char* root = getenv("PAPI_AMDSMI_ROOT"); + if (!root || !*root) { + SKIP("PAPI_AMDSMI_ROOT not set"); + } + + // Init PAPI + int rc = PAPI_library_init(PAPI_VER_CURRENT); + if (rc != PAPI_VER_CURRENT) { + NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); + return eval_result(opts, 1); + } + + // Create an EventSet + int EventSet = PAPI_NULL; + rc = PAPI_create_eventset(&EventSet); + if (rc != PAPI_OK) { + NOTE("PAPI_create_eventset: %s", PAPI_strerror(rc)); + return eval_result(opts, 1); + } + + // Add event + rc = PAPI_add_named_event(EventSet, ev); + if (rc == PAPI_ENOEVNT || rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { + NOTE("Event unavailable or HW/resource-limited: %s (%s)", ev, PAPI_strerror(rc)); + SKIP("Event unavailable or HW/resource-limited"); + } else if (rc != PAPI_OK) { + NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(rc)); + PAPI_destroy_eventset(&EventSet); + return eval_result(opts, 1); + } + + // Start ¡æ short wait ¡æ stop/read + rc = PAPI_start(EventSet); + if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { + NOTE("Cannot start counters: %s", PAPI_strerror(rc)); + SKIP("Cannot start counters"); + } else if (rc != PAPI_OK) { + NOTE("PAPI_start: %s", PAPI_strerror(rc)); + PAPI_destroy_eventset(&EventSet); + return eval_result(opts, 1); + } + + usleep(100000); // ~100ms + long long val = 0; + rc = PAPI_stop(EventSet, &val); + if (rc != PAPI_OK) { + NOTE("PAPI_stop: %s", PAPI_strerror(rc)); + PAPI_destroy_eventset(&EventSet); + return eval_result(opts, 1); + } + + (void)PAPI_cleanup_eventset(EventSet); + (void)PAPI_destroy_eventset(&EventSet); + PAPI_shutdown(); + + if (opts.print) { + printf("Event: %s\nValue: %lld\n", ev, val); + } + return eval_result(opts, 0); +} diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh new file mode 100755 index 000000000..6e851f42a --- /dev/null +++ b/src/components/amd_smi/tests/runtest.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# AMD SMI test runner (no build) with print control + +# Be reasonably strict but compatible with older bash +set -e +set -u +( set -o pipefail ) 2>/dev/null || true + +# Try to infer AMD SMI root if not set +: "${PAPI_AMDSMI_ROOT:=${PAPI_ROCM_ROOT:-/opt/rocm-6.4.0}}" + +banner() { printf "Running: \033[36m%s\033[0m %s\n" "$1" "${2-}"; } +sep() { printf "%s\n\n" "-------------------------------------"; } + +# --------------------------- +# CLI: --print | --print-only +# --------------------------- +PRINT_ALL=0 +PRINT_SET="" # comma list: hello,basics,gemm,energy,conflict +HELLO_EVENT="amd_smi:::temp_current:device=0:sensor=1" + +usage() { + cat < +#include +#include +#include "papi.h" // for PAPI_* error codes used by helper macros + +struct HarnessOpts { + bool print; + bool expect_fail; + int had_warning; // set to 1 if we hit ENOEVNT/ECNFLCT or any warning +}; + +static HarnessOpts harness_opts; + +// Parse CLI +static HarnessOpts parse_harness_cli(int argc, char **argv) { + harness_opts.print = false; + harness_opts.expect_fail = false; + harness_opts.had_warning = 0; + + for (int i = 1; i < argc; ++i) { + if (strcmp(argv[i], "--print") == 0) harness_opts.print = true; + else if (strncmp(argv[i], "--expect=", 9) == 0) { + const char *v = argv[i] + 9; + harness_opts.expect_fail = (strcmp(v, "fail") == 0); + } + } + if (!harness_opts.print) { + const char* q = getenv("PAPI_AMDSMI_TEST_QUIET"); + if (!q || q[0] != '1') setenv("PAPI_AMDSMI_TEST_QUIET", "1", 1); + } else { + unsetenv("PAPI_AMDSMI_TEST_QUIET"); + } + return harness_opts; +} + +// Final status line +static int eval_result(const HarnessOpts &opts, int result_code) { + bool passed = opts.expect_fail ? (result_code != 0) : (result_code == 0); + if (passed) { + if (opts.had_warning) printf("PASSED with WARNING\n"); + else printf("PASSED\n"); + } else { + printf("FAILED!!!\n"); // always the shouty failure you wanted + } + return passed ? 0 : 1; +} + +// Print note only with --print +#define NOTE(...) do { \ + if (harness_opts.print) { fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ +} while (0) + +// Mark a warning (does not exit) +#define WARNF(...) do { \ + harness_opts.had_warning = 1; \ + if (harness_opts.print) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ +} while (0) + +// === ¡°Can¡¯t conduct¡± helpers === +// Exit immediately as PASSED with WARNING (portable success) +#define EXIT_WARNING(...) do { \ + harness_opts.had_warning = 1; \ + if (harness_opts.print && *#__VA_ARGS__) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ + printf("PASSED with WARNING\n"); fflush(stdout); exit(0); \ +} while (0) + +// If add fails due to unsupported or HW/resource limits ¡æ end as PASSED with WARNING +#define EXIT_WARNING_ON_ADD(rc, evname) do { \ + if ((rc) == PAPI_ENOEVNT || (rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ + EXIT_WARNING("Event unavailable (%s): %s", \ + ((rc) == PAPI_ENOEVNT ? "ENOEVNT" : (rc) == PAPI_ECNFLCT ? "ECNFLCT" : "EPERM"), (evname)); \ + } \ +} while (0) + +// If start fails due to HW/resource limits ¡æ end as PASSED with WARNING +#define EXIT_WARNING_ON_START(rc, ctx) do { \ + if ((rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ + EXIT_WARNING("Cannot start counters (%s): %s", (ctx), PAPI_strerror(rc)); \ + } \ +} while (0) + +// Keep SKIP as a ¡°can¡¯t conduct¡± success-with-warning +#define SKIP(reason) EXIT_WARNING("%s", (reason)) + +#endif // TEST_HARNESS_HPP From eaee92d22e270aac4a76cb3e082b23921ccd25d4 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 8 Sep 2025 11:41:00 -0700 Subject: [PATCH 084/147] tests amd_smi --- src/components/amd_smi/tests/Makefile | 119 ++++----- .../amd_smi/tests/amdsmi_example.cpp | 126 ---------- src/components/amd_smi/tests/gemm.cpp | 227 ------------------ 3 files changed, 64 insertions(+), 408 deletions(-) delete mode 100644 src/components/amd_smi/tests/amdsmi_example.cpp delete mode 100644 src/components/amd_smi/tests/gemm.cpp diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index df21f642a..7d0c64740 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,59 +1,46 @@ # ***NOTE*** The Environment Variable PAPI_ROCM_ROOT must be defined for -# programs to compile correctly. one typical location is /opt/rocm, but -# contact your sysadmin if you cannot find it. - -# Set the default PAPI_ROCM_ROOT if not already set in the environment -PAPI_ROCM_ROOT ?= /opt/rocm-6.4.0 # Updated to match your log, or ensure your env var is set +# programs to compile correctly. One typical location is /opt/rocm. +PAPI_ROCM_ROOT ?= /opt/rocm-6.4.0 HIP_PATH := $(PAPI_ROCM_ROOT) HIPCC := $(HIP_PATH)/bin/hipcc -# --- DIAGNOSIS STEP: Comment out the include temporarily --- -# include ../../Makefile_comp_tests.target - -# --- Manually define variables expected from Makefile_comp_tests.target --- -# For C++ specific flags, you might need CXXFLAGS -CXXFLAGS ?= $(CFLAGS) -std=c++17 # Add -std=c++17 if not already in CFLAGS from an outer makefile -CFLAGS ?= -DPAPI_NUM_COMP=3 +# Toolchain / flags +CFLAGS ?= -DPAPI_NUM_COMP=3 +CXXFLAGS ?= $(CFLAGS) -std=c++17 OPTFLAGS ?= -O2 + UTILOBJS ?= ../../../testlib/libtestlib.a -PAPILIB ?= ../../../libpapi.a +PAPILIB ?= ../../../libpapi.a -# Base includes that were part of your amdsmi_example compilation log +# Includes (from your logs) BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests +PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include -# Specific PAPI include path -PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include # Your path - -# Consolidate INCLUDE paths EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi # For amdsmi.h if needed by amdsmi_example +EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hip EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hsa EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocprofiler EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocblas -# Common Linker Flags -COMMON_LDFLAGS = -ldl -g -lpthread - -# Specific linker flags for AMD SMI tests -# Assuming the library is libamdsmi_runtime.so. Adjust if it's libamdsmi.so -# Also ensure that PAPI_ROCM_ROOT/lib is the correct path for this library. -LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) +# Linker flags +COMMON_LDFLAGS = -ldl -g -lpthread +LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) +LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) -# Specific linker flags for GEMM example -LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) +# New AMD SMI tests +TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict -# Default target -all: amdsmi_example amdsmi_basics gemm +# Default target (now builds amdsmi_hello) +all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) # ------------------------ # Pattern rules # ------------------------ -# Generic rule for .c to .o compilation (if you still have pure C files) -# Note: If amdsmi_basics.c was indeed C++, this rule won't be used for it after renaming. +# .c -> .o %.o: %.c @echo "Compiling C source $< to $@..." @echo "HIPCC: $(HIPCC)" @@ -61,46 +48,60 @@ all: amdsmi_example amdsmi_basics gemm @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ -# Generic rule for .cpp to .o compilation +# .cpp -> .o (generic C++) %.o: %.cpp @echo "Compiling C++ source $< to $@..." @echo "HIPCC: $(HIPCC)" - @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" # Use CXXFLAGS here + @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ +# HIP override for the GEMM-like file (renamed): compile with -x hip +amdsmi_gemm.o: amdsmi_gemm.cpp + @echo "Compiling HIP source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ + # ------------------------ -# AMD SMI example +# Link rules # ------------------------ -# amdsmi_example.o will use the generic %.o: %.cpp rule -# amdsmi_example.o: amdsmi_example.cpp # This explicit rule is fine but not strictly necessary if generic one exists - -amdsmi_example: amdsmi_example.o $(UTILOBJS) $(PAPILIB) +# amdsmi_hello replaces amdsmi_example +amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_example.o $(LDFLAGS_AMDSMI) + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) -# Assuming amdsmi_basics.c has been renamed to amdsmi_basics.cpp -# amdsmi_basics.o will use the generic %.o: %.cpp rule -# amdsmi_basics.o: amdsmi_basics.cpp # This explicit rule is fine but not strictly necessary +# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello +amdsmi_example: amdsmi_hello + @true amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) -# ------------------------ -# GEMM example -# ------------------------ +# renamed GEMM target +amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) -# gemm.o will use the generic %.o: %.cpp rule -# gemm.o: gemm.cpp # This explicit rule is fine but not strictly necessary +# New tests +amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) -gemm: gemm.o $(UTILOBJS) $(PAPILIB) +amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." - @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ gemm.o $(LDFLAGS_GEMM) + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) + +# Convenience meta-target +tests: $(TESTS_AMDSMI) # ------------------------ # Cleanup and diagnostics @@ -108,9 +109,14 @@ gemm: gemm.o $(UTILOBJS) $(PAPILIB) clean: @echo "Cleaning up..." - rm -f amdsmi_example amdsmi_example.o \ - amdsmi_basics amdsmi_basics.o \ - gemm gemm.o *.exe + rm -f \ + amdsmi_hello amdsmi_hello.o \ + amdsmi_basics amdsmi_basics.o \ + amdsmi_gemm amdsmi_gemm.o \ + gemm gemm.o \ + amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ + amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ + *.exe checkpath: @echo "--- Variables ---" @@ -125,5 +131,8 @@ checkpath: @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" + @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" -.PHONY: all clean checkpath amdsmi_example amdsmi_basics gemm \ No newline at end of file +.PHONY: all clean checkpath tests \ + amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ + amdsmi_energy_monotonic amdsmi_ctx_conflict diff --git a/src/components/amd_smi/tests/amdsmi_example.cpp b/src/components/amd_smi/tests/amdsmi_example.cpp deleted file mode 100644 index 71d2c1cc5..000000000 --- a/src/components/amd_smi/tests/amdsmi_example.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include -#include - -#include "papi.h" // PAPI header file - -// Basic PAPI error handling function -static void handle_papi_error(int retval, const char *function_name, int current_event_set, int papi_initialized_flag) { - if (retval != PAPI_OK) { - fprintf(stderr, "PAPI error in function %s(): %s (Error Code: %d)\n", - function_name, PAPI_strerror(retval), retval); - if (papi_initialized_flag) { - if (current_event_set != PAPI_NULL) { - // Attempt to clean up the event set if it exists - // Note: Depending on when the error occurred, events might still be in the set. - // PAPI_cleanup_eventset or PAPI_destroy_eventset handles this. - char event_name_buf[PAPI_MAX_STR_LEN]; - if (PAPI_list_events(current_event_set, NULL, NULL) > 0) { // Check if events are in set - // If specific event name was stored, it could be removed here. - // For simplicity, PAPI_destroy_eventset will handle cleanup. - } - PAPI_destroy_eventset(¤t_event_set); - } - PAPI_shutdown(); - } - exit(EXIT_FAILURE); - } -} - -int main(int argc, char **argv) { - (void)argc; // Unused - (void)argv; // Unused - - int retval=0; - int EventSet = PAPI_NULL; - long_long event_values[1]; // PAPI counters are long_long - int papi_is_initialized = 0; - - - - // --- Step 1: Initialize the PAPI library --- - retval = PAPI_library_init(PAPI_VER_CURRENT); - if (retval != PAPI_VER_CURRENT && retval > 0) { - // PAPI_VER_CURRENT is the version, > 0 are error codes - fprintf(stderr, "PAPI library version mismatch! Expected %d, got %d\n", - PAPI_VER_CURRENT, retval); - exit(EXIT_FAILURE); - } - - - - // --- Step 2: Create an EventSet --- - retval = PAPI_create_eventset(&EventSet); - handle_papi_error(retval, "PAPI_create_eventset", EventSet, papi_is_initialized); - printf("PAPI EventSet created.\n"); - - // --- Step 3: Add a PAPI event to the EventSet --- - // You can change "PAPI_TOT_INS" to any available PAPI event. - // For CPU events: "PAPI_TOT_CYC" (Total Cycles), "PAPI_L1_DCM" (L1 Data Cache Misses), etc. - // For rocm_smi events (if PAPI is configured for it and you have a ROCm GPU): - // e.g., "rocm_smi:::power_average:device=0" (Average GPU Power) - // e.g., "rocm_smi:::temp_rx_soc:device=0" (GPU Temperature) - // Check availability with `papi_avail` or `papi_native_avail` utilities. - const char *eventName = "amd_smi:::temp_current:device=0:sensor=1"; // Example: Total Instructions Executed - - printf("Attempting to add event: %s\n", eventName); - retval = PAPI_add_named_event(EventSet, eventName); - if (retval != PAPI_OK) { - fprintf(stderr, "Failed to add PAPI event '%s'. Error: %s (Code: %d)\n", - eventName, PAPI_strerror(retval), retval); - if (retval == PAPI_ECMP) { // Component not available error - fprintf(stderr, "This error often means the PAPI component required for '%s' (e.g., 'rocm_smi' for GPU events) is not available, not configured, or the event name is incorrect for your hardware.\n", eventName); - fprintf(stderr, "Please use PAPI utilities like 'papi_components_avail' and 'papi_native_avail' to check available components and events.\n"); - } - handle_papi_error(retval, "PAPI_add_named_event", EventSet, papi_is_initialized); // Will cleanup and exit - } - printf("Successfully added event '%s' to EventSet.\n", eventName); - - // --- Step 4: Start counting events in the EventSet --- - retval = PAPI_start(EventSet); - handle_papi_error(retval, "PAPI_start", EventSet, papi_is_initialized); - printf("PAPI event counting started.\n"); - - // --- Optional: Perform some work --- - // The PAPI counters will measure events that occur between PAPI_start() and PAPI_stop(). - // For a simple check, even a small amount of computation will do. - printf("Performing some dummy computation...\n"); - volatile double work_dummy = 0.0; - for (long i = 0; i < 20000000; ++i) { // Increased loop iterations - work_dummy += (double)i / (double)(i + 1); - } - printf("Dummy computation finished. (Result: %f to prevent optimization)\n", work_dummy); - - // --- Step 5: Stop counting events and retrieve the values --- - // PAPI_stop() will read the current values of the events in EventSet into event_values. - retval = PAPI_stop(EventSet, event_values); - handle_papi_error(retval, "PAPI_stop", EventSet, papi_is_initialized); - printf("PAPI event counting stopped.\n"); - - // --- Step 6: Print the event value --- - printf("\n--- PAPI Event Value ---\n"); - printf("Event: %s\n", eventName); - printf("Value: %lld\n\n", event_values[0]); - - // --- Step 7: Clean up PAPI resources --- - // Remove the event (optional if PAPI_destroy_eventset is called, but good practice) - // PAPI_cleanup_eventset also works and is sometimes preferred as it can clear, stop, and remove events. - retval = PAPI_remove_named_event(EventSet, eventName); - // Don't treat "event not in set" or "set not running" as fatal after stop for simple cleanup - if (retval != PAPI_OK && retval != PAPI_ENOEVNT && retval != PAPI_ENOTRUN ) { - handle_papi_error(retval, "PAPI_remove_named_event", EventSet, papi_is_initialized); - } else if (retval == PAPI_OK) { - printf("PAPI event '%s' removed from EventSet.\n", eventName); - } - - - // Destroy the EventSet - retval = PAPI_destroy_eventset(&EventSet); - handle_papi_error(retval, "PAPI_destroy_eventset", EventSet, papi_is_initialized); // EventSet becomes PAPI_NULL internally - printf("PAPI EventSet destroyed.\n"); - - // Shutdown the PAPI library - PAPI_shutdown(); - printf("PAPI library shut down successfully.\n"); - - return EXIT_SUCCESS; -} \ No newline at end of file diff --git a/src/components/amd_smi/tests/gemm.cpp b/src/components/amd_smi/tests/gemm.cpp deleted file mode 100644 index e29cb2f93..000000000 --- a/src/components/amd_smi/tests/gemm.cpp +++ /dev/null @@ -1,227 +0,0 @@ -#include -#include -#include "papi.h" -#include "hip/hip_runtime.h" -#include -#include -#include - -#define M_DIM 7296 -#define K_DIM 14592 -#define N_DIM 7296 - -#define NUM_STREAMS 1 -#define ITERATIONS_PER_STREAM 1 - -#define HIP_CHECK(cmd) do { \ - hipError_t e = cmd; \ - if (e != hipSuccess) { \ - fprintf(stderr, "Failed: HIP error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ - exit(EXIT_FAILURE); \ - } \ -} while(0) - -#define HIP_CHECK_CLEANUP(cmd) do { \ - hipError_t e = cmd; \ - if (e != hipSuccess) { \ - fprintf(stderr, "Warning: HIP cleanup error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ - } \ -} while(0) - -volatile int stop_monitor = 0; - -struct monitor_params { - int EventSet; - FILE *csvFile; - struct timeval start_time; -}; - -void *monitor_events(void *args) { - struct monitor_params *params = (struct monitor_params *)args; - int statusFlag; - long long values[5]; - - while (!stop_monitor) { - statusFlag = PAPI_read(params->EventSet, values); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI read failed in monitor: %s\n", PAPI_strerror(statusFlag)); - break; - } - - struct timeval current_time; - gettimeofday(¤t_time, NULL); - double elapsed = (current_time.tv_sec - params->start_time.tv_sec) + - (current_time.tv_usec - params->start_time.tv_usec) / 1e6; - - fprintf(params->csvFile, "%.6f,%lld,%lld,%lld,%lld,%lld\n", - elapsed, values[0], values[1], values[2], values[3], values[4]); - fflush(params->csvFile); - - fprintf(stdout, - "Time: %.6f sec -> event1: %lld, event2: %lld, event3: %lld, event4: %lld, event5: %lld\n", - elapsed, values[0], values[1], values[2], values[3], values[4]); - - usleep(300000); - } - return NULL; -} - -__global__ void dgemm_kernel(const double *A, const double *B, double *C, - int M, int N, int K, double alpha, double beta) { - int row = blockIdx.y * blockDim.y + threadIdx.y; - int col = blockIdx.x * blockDim.x + threadIdx.x; - - if (row < M && col < N) { - double sum = 0.0; - for (int k = 0; k < K; k++) { - sum += A[row * K + k] * B[k * N + col]; - } - C[row * N + col] = alpha * sum + beta * C[row * N + col]; - } -} - -int main(int argc, char *argv[]) { - int statusFlag; - int EventSet = PAPI_NULL; - - statusFlag = PAPI_library_init(PAPI_VER_CURRENT); - if (statusFlag != PAPI_VER_CURRENT) { - fprintf(stderr, "PAPI shared library version error: %s\n", PAPI_strerror(statusFlag)); - return -1; - } - - statusFlag = PAPI_create_eventset(&EventSet); - if (statusFlag != PAPI_OK) { - fprintf(stderr, "PAPI create eventset: %s\n", PAPI_strerror(statusFlag)); - return -1; - } - - const char *event1 = "amd_smi:::mem_total_VRAM:device=0"; - const char *event2 = "amd_smi:::temp_current:device=0:sensor=1"; - const char *event3 = "amd_smi:::temp_current:device=0:sensor=2"; - const char *event4 = "amd_smi:::clk_freq_current:device=0"; - const char *event5 = "amd_smi:::power_average:device=0"; - - statusFlag = PAPI_add_named_event(EventSet, event1); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_add_named_event(EventSet, event2); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_add_named_event(EventSet, event3); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_add_named_event(EventSet, event4); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_add_named_event(EventSet, event5); - if (statusFlag != PAPI_OK) return -1; - - HIP_CHECK(hipSetDevice(1)); - hipDeviceProp_t deviceProp; - HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); - printf("Device Name: %s\n", deviceProp.name); - printf("Compute Units: %d\n", deviceProp.multiProcessorCount); - printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); - - size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); - size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); - size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); - - double *h_A, *h_B, *h_C; - HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); - HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); - HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); - - if (!h_A || !h_B || !h_C) { - fprintf(stderr, "Host memory allocation failed.\n"); - if (h_A) HIP_CHECK_CLEANUP(hipHostFree(h_A)); - if (h_B) HIP_CHECK_CLEANUP(hipHostFree(h_B)); - if (h_C) HIP_CHECK_CLEANUP(hipHostFree(h_C)); - return -1; - } - - for (int i = 0; i < M_DIM * K_DIM; i++) h_A[i] = (double)(i % 100); - for (int i = 0; i < K_DIM * N_DIM; i++) h_B[i] = (double)(i % 100); - for (int i = 0; i < M_DIM * N_DIM; i++) h_C[i] = 0.0; - - double *d_A[NUM_STREAMS], *d_B[NUM_STREAMS], *d_C[NUM_STREAMS]; - for (int s = 0; s < NUM_STREAMS; s++) { - HIP_CHECK(hipMalloc((void**)&d_A[s], size_A)); - HIP_CHECK(hipMalloc((void**)&d_B[s], size_B)); - HIP_CHECK(hipMalloc((void**)&d_C[s], size_C)); - } - - hipStream_t streams[NUM_STREAMS]; - hipEvent_t events[NUM_STREAMS]; - for (int s = 0; s < NUM_STREAMS; s++) { - HIP_CHECK(hipStreamCreateWithFlags(&streams[s], hipStreamNonBlocking)); - HIP_CHECK(hipEventCreate(&events[s])); - } - - for (int s = 0; s < NUM_STREAMS; s++) { - HIP_CHECK(hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s])); - HIP_CHECK(hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s])); - HIP_CHECK(hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s])); - } - - FILE *csvFile = fopen("test.csv", "w"); - if (!csvFile) { - fprintf(stderr, "Failed to open CSV file for writing.\n"); - return -1; - } - fprintf(csvFile, "timestamp,%s,%s,%s,%s,%s\n", - event1, event2, event3, event4, event5); - - statusFlag = PAPI_start(EventSet); - if (statusFlag != PAPI_OK) return -1; - - pthread_t monitor_thread; - struct monitor_params params; - params.EventSet = EventSet; - params.csvFile = csvFile; - gettimeofday(¶ms.start_time, NULL); - statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); - if (statusFlag != 0) return -1; - - for (int s = 0; s < NUM_STREAMS; s++) HIP_CHECK(hipStreamSynchronize(streams[s])); - - double alpha = 0.75; - double beta = 0.5; - - dim3 blockDim(32, 32); - dim3 gridDim((N_DIM + blockDim.x - 1) / blockDim.x, - (M_DIM + blockDim.y - 1) / blockDim.y); - - for (int iter = 0; iter < ITERATIONS_PER_STREAM; iter++) { - for (int s = 0; s < NUM_STREAMS; s++) { - hipLaunchKernelGGL(dgemm_kernel, gridDim, blockDim, 0, streams[s], - d_A[s], d_B[s], d_C[s], - M_DIM, N_DIM, K_DIM, alpha, beta); - HIP_CHECK(hipEventRecord(events[s], streams[s])); - HIP_CHECK(hipStreamSynchronize(streams[s])); - usleep(3000000); - } - } - - stop_monitor = 1; - pthread_join(monitor_thread, NULL); - - fclose(csvFile); - for (int s = 0; s < NUM_STREAMS; s++) { - HIP_CHECK_CLEANUP(hipEventDestroy(events[s])); - HIP_CHECK_CLEANUP(hipStreamDestroy(streams[s])); - HIP_CHECK_CLEANUP(hipFree(d_A[s])); - HIP_CHECK_CLEANUP(hipFree(d_B[s])); - HIP_CHECK_CLEANUP(hipFree(d_C[s])); - } - - HIP_CHECK_CLEANUP(hipHostFree(h_A)); - HIP_CHECK_CLEANUP(hipHostFree(h_B)); - HIP_CHECK_CLEANUP(hipHostFree(h_C)); - - statusFlag = PAPI_stop(EventSet, NULL); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_cleanup_eventset(EventSet); - if (statusFlag != PAPI_OK) return -1; - statusFlag = PAPI_destroy_eventset(&EventSet); - if (statusFlag != PAPI_OK) return -1; - - return 0; -} From 5a0322b9538426cd7ec7180aba2b5b01a74a702b Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 8 Sep 2025 12:19:34 -0700 Subject: [PATCH 085/147] remove executable --- src/components/amd_smi/tests/runtest.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) mode change 100755 => 100644 src/components/amd_smi/tests/runtest.sh diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh old mode 100755 new mode 100644 index 6e851f42a..a66669812 --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -31,14 +31,16 @@ EOF for arg in "$@"; do case "$arg" in - --print) PRINT_ALL=1 ;; + TESTS_QUIET) ;; # ignore, invoked by src/run_tests.sh + --print) PRINT_ALL=1 ;; --print-only=*) PRINT_SET="${arg#*=}" ;; --hello-event=*) HELLO_EVENT="${arg#*=}" ;; - -h|--help) usage; exit 0 ;; + -h|--help) usage; exit 0 ;; *) echo "Unknown option: $arg"; usage; exit 2 ;; esac done + in_set() { # $1 = token, $2 = comma list case ",$2," in From 6ae86d4a6da8a0a39cd5351c4c22bf0b9d59183d Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 15:56:38 -0400 Subject: [PATCH 086/147] harden AMD SMI memory partition queries --- src/components/amd_smi/amds.c | 88 ++++++++++++++++--------- src/components/amd_smi/amds_accessors.c | 22 ++++++- src/components/amd_smi/amds_funcs.h | 2 + 3 files changed, 80 insertions(+), 32 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ea7e616d2..8b0dc0a64 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #define MAX_EVENTS_PER_DEVICE 1024 @@ -307,6 +308,8 @@ static int load_amdsmi_sym(void) { sym("amdsmi_get_gpu_memory_partition", NULL); amdsmi_get_gpu_memory_partition_config_p = sym("amdsmi_get_gpu_memory_partition_config", NULL); + amdsmi_is_gpu_memory_partition_supported_p = + sym("amdsmi_is_gpu_memory_partition_supported", NULL); amdsmi_get_gpu_memory_reserved_pages_p = sym("amdsmi_get_gpu_memory_reserved_pages", NULL); amdsmi_get_gpu_kfd_info_p = sym("amdsmi_get_gpu_kfd_info", NULL); @@ -3440,44 +3443,69 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_memory_partition_p) { - char part[128] = {0}; - if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, - sizeof(part)) == - AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "memory_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d memory partition (hash)", d); - if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_hash) != PAPI_OK) { - return PAPI_ENOMEM; + bool supported = true; + if (amdsmi_is_gpu_memory_partition_supported_p) { + supported = false; + if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], + &supported) != + AMDSMI_STATUS_SUCCESS || + !supported) { + supported = false; + } + } + if (supported) { + char part[128] = {0}; + if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, + sizeof(part)) == + AMDSMI_STATUS_SUCCESS) { + part[sizeof(part) - 1] = '\0'; + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "memory_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d memory partition (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_hash) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } if (amdsmi_get_gpu_memory_partition_config_p) { - amdsmi_memory_partition_config_t cfg; - if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == - AMDSMI_STATUS_SUCCESS) { - const char *mpc_names[] = {"memory_partition_caps", - "memory_partition_mode", - "memory_partition_numa_count"}; - const char *mpc_descr[] = {"Device %d memory partition capabilities", - "Device %d memory partition mode", - "Device %d NUMA range count"}; - for (uint32_t v = 0; v < 3; ++v) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); - snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); - if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_config) != PAPI_OK) { - return PAPI_ENOMEM; + bool supported = true; + if (amdsmi_is_gpu_memory_partition_supported_p) { + supported = false; + if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], + &supported) != + AMDSMI_STATUS_SUCCESS || + !supported) { + supported = false; + } + } + if (supported) { + amdsmi_memory_partition_config_t cfg = {0}; + if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == + AMDSMI_STATUS_SUCCESS) { + const char *mpc_names[] = {"memory_partition_caps", + "memory_partition_mode", + "memory_partition_numa_count"}; + const char *mpc_descr[] = {"Device %d memory partition capabilities", + "Device %d memory partition mode", + "Device %d NUMA range count"}; + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); + snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_config) != PAPI_OK) { + return PAPI_ENOMEM; + } } } } } if (amdsmi_get_gpu_accelerator_partition_profile_p) { - amdsmi_accelerator_partition_profile_t prof; + amdsmi_accelerator_partition_profile_t prof = {0}; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids) == AMDSMI_STATUS_SUCCESS) { @@ -3494,7 +3522,7 @@ static int init_event_table(void) { } /* Driver info (strings hashed) */ if (amdsmi_get_gpu_driver_info_p) { - amdsmi_driver_info_t dinfo; + amdsmi_driver_info_t dinfo = {0}; if (amdsmi_get_gpu_driver_info_p(device_handles[d], &dinfo) == AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 7386be22b..b77d37c39 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -4,6 +4,7 @@ #include #include #include +#include /* -------- Helpers and new accessors (GPU read-only additions) -------- */ static uint64_t _str_to_u64_hash(const char *s) { /* djb2 64-bit */ @@ -709,10 +710,19 @@ int access_amdsmi_memory_partition_hash(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + if (amdsmi_is_gpu_memory_partition_supported_p) { + bool supported = false; + if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[event->device], + &supported) != + AMDSMI_STATUS_SUCCESS || + !supported) + return PAPI_ENOSUPP; + } char buf[128] = {0}; if (amdsmi_get_gpu_memory_partition_p(device_handles[event->device], buf, sizeof(buf)) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; + buf[sizeof(buf) - 1] = '\0'; event->value = (int64_t)_str_to_u64_hash(buf); return PAPI_OK; } @@ -724,7 +734,15 @@ int access_amdsmi_memory_partition_config(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_memory_partition_config_t cfg; + if (amdsmi_is_gpu_memory_partition_supported_p) { + bool supported = false; + if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[event->device], + &supported) != + AMDSMI_STATUS_SUCCESS || + !supported) + return PAPI_ENOSUPP; + } + amdsmi_memory_partition_config_t cfg = {0}; if (amdsmi_get_gpu_memory_partition_config_p(device_handles[event->device], &cfg) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -751,7 +769,7 @@ int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; - amdsmi_accelerator_partition_profile_t prof; + amdsmi_accelerator_partition_profile_t prof = {0}; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[event->device], &prof, ids) != diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h index 8ebdd3e95..85c4b17a2 100644 --- a/src/components/amd_smi/amds_funcs.h +++ b/src/components/amd_smi/amds_funcs.h @@ -201,6 +201,8 @@ (amdsmi_processor_handle, amdsmi_kfd_info_t *)) \ _(amdsmi_get_gpu_memory_partition_config_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_memory_partition_config_t *)) \ + _(amdsmi_is_gpu_memory_partition_supported_p, amdsmi_status_t, \ + (amdsmi_processor_handle, bool *)) \ _(amdsmi_get_gpu_memory_reserved_pages_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *)) \ _(amdsmi_get_gpu_metrics_header_info_p, amdsmi_status_t, \ From fc7310ec2f199913a0e0b36800c173999ad2dee2 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 16:09:37 -0400 Subject: [PATCH 087/147] Avoid probing AMD SMI partition getters at init --- src/components/amd_smi/amds.c | 87 ++++++++++++++++------------------- 1 file changed, 39 insertions(+), 48 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 8b0dc0a64..101ceec08 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3442,32 +3442,27 @@ static int init_event_table(void) { } } } + /* Register memory partition string hash without probing the value at init. + Probing via amdsmi_get_gpu_memory_partition_* in ROCm 6.4.0 can trigger + a Valgrind UMR inside libamd_smi. We only check feature support here and + fetch the value later in the accessor. */ if (amdsmi_get_gpu_memory_partition_p) { bool supported = true; if (amdsmi_is_gpu_memory_partition_supported_p) { supported = false; if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], - &supported) != - AMDSMI_STATUS_SUCCESS || + &supported) != AMDSMI_STATUS_SUCCESS || !supported) { supported = false; } } if (supported) { - char part[128] = {0}; - if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, - sizeof(part)) == - AMDSMI_STATUS_SUCCESS) { - part[sizeof(part) - 1] = '\0'; - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "memory_partition_hash:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d memory partition (hash)", d); - if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_hash) != PAPI_OK) { - return PAPI_ENOMEM; - } + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_hash) != PAPI_OK) { + return PAPI_ENOMEM; } } } @@ -3476,48 +3471,44 @@ static int init_event_table(void) { if (amdsmi_is_gpu_memory_partition_supported_p) { supported = false; if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], - &supported) != - AMDSMI_STATUS_SUCCESS || + &supported) != AMDSMI_STATUS_SUCCESS || !supported) { supported = false; } } if (supported) { - amdsmi_memory_partition_config_t cfg = {0}; - if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == - AMDSMI_STATUS_SUCCESS) { - const char *mpc_names[] = {"memory_partition_caps", - "memory_partition_mode", - "memory_partition_numa_count"}; - const char *mpc_descr[] = {"Device %d memory partition capabilities", - "Device %d memory partition mode", - "Device %d NUMA range count"}; - for (uint32_t v = 0; v < 3; ++v) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); - snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); - if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_config) != PAPI_OK) { - return PAPI_ENOMEM; - } + /* Do not call amdsmi_get_gpu_memory_partition_config at init-time. + It can hit a UMR in libamd_smi on 6.4.0. Just register the events; + the accessor will fetch values on demand. */ + const char *mpc_names[] = {"memory_partition_caps", + "memory_partition_mode", + "memory_partition_numa_count"}; + const char *mpc_descr[] = {"Device %d memory partition capabilities", + "Device %d memory partition mode", + "Device %d NUMA range count"}; + for (uint32_t v = 0; v < 3; ++v) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); + snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); + if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, + access_amdsmi_memory_partition_config) != PAPI_OK) { + return PAPI_ENOMEM; } } } } if (amdsmi_get_gpu_accelerator_partition_profile_p) { - amdsmi_accelerator_partition_profile_t prof = {0}; - uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, - ids) == AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d accelerator partition count", d); - if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_accelerator_num_partitions) != PAPI_OK) { - return PAPI_ENOMEM; - } + /* Avoid probing amdsmi_get_gpu_accelerator_partition_profile at init-time: + ROCm 6.4.0 may trigger strlen/ostream on uninitialized data inside the lib. + Register the count event and let the accessor fetch later. */ + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d accelerator partition count", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_accelerator_num_partitions) != PAPI_OK) { + return PAPI_ENOMEM; } } /* Driver info (strings hashed) */ From 159d76d322f0072c8e6e9f844363c3dd2992a519 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 16:47:55 -0400 Subject: [PATCH 088/147] Gracefully handle AMD SMI read errors --- src/components/amd_smi/amds_ctx.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 5f6341dd3..764e64068 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -120,17 +120,20 @@ int amds_ctx_stop(amds_ctx_t ctx) { return papi_errno; } int amds_ctx_read(amds_ctx_t ctx, long long **counts) { - int papi_errno = PAPI_OK; + /* Read each event individually. If an accessor fails, set the value to 0 but + continue so that PAPI_stop() can still clean up the context. Returning an + error here would prevent _amd_smi_stop() from executing and leave devices + marked as in-use for subsequent tests. */ for (int i = 0; i < ctx->num_events; ++i) { unsigned int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; + if (ntv_table_p->events[id].access_func(PAPI_MODE_READ, + &ntv_table_p->events[id]) != PAPI_OK) { + ntv_table_p->events[id].value = 0; } ctx->counters[i] = (long long)ntv_table_p->events[id].value; } *counts = ctx->counters; - return papi_errno; + return PAPI_OK; } int amds_ctx_write(amds_ctx_t ctx, long long *counts) { int papi_errno = PAPI_OK; From 378549c34f4e6b24bd906f5aa054a421958760b8 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 17:00:40 -0400 Subject: [PATCH 089/147] Propagate AMD SMI read errors --- src/components/amd_smi/amds_ctx.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 764e64068..95f688dbd 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -120,15 +120,13 @@ int amds_ctx_stop(amds_ctx_t ctx) { return papi_errno; } int amds_ctx_read(amds_ctx_t ctx, long long **counts) { - /* Read each event individually. If an accessor fails, set the value to 0 but - continue so that PAPI_stop() can still clean up the context. Returning an - error here would prevent _amd_smi_stop() from executing and leave devices - marked as in-use for subsequent tests. */ + int papi_errno = PAPI_OK; for (int i = 0; i < ctx->num_events; ++i) { unsigned int id = ctx->events_id[i]; - if (ntv_table_p->events[id].access_func(PAPI_MODE_READ, - &ntv_table_p->events[id]) != PAPI_OK) { - ntv_table_p->events[id].value = 0; + papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, + &ntv_table_p->events[id]); + if (papi_errno != PAPI_OK) { + return papi_errno; } ctx->counters[i] = (long long)ntv_table_p->events[id].value; } From b4875f9b43f4d5de00ea291aa7db42b96f81a372 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 17:42:26 -0400 Subject: [PATCH 090/147] Handle TESTS_QUIET token and fix AMD SMI read --- src/components/amd_smi/amds_ctx.c | 2 +- .../amd_smi/tests/amdsmi_basics.cpp | 9 +- .../amd_smi/tests/amdsmi_ctx_conflict.cpp | 5 +- .../amd_smi/tests/amdsmi_energy_monotonic.cpp | 3 +- src/components/amd_smi/tests/amdsmi_gemm.cpp | 3 +- src/components/amd_smi/tests/amdsmi_hello.cpp | 3 +- src/components/amd_smi/tests/test_harness.hpp | 199 ++++++++++-------- 7 files changed, 126 insertions(+), 98 deletions(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 95f688dbd..20fb422b3 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -131,7 +131,7 @@ int amds_ctx_read(amds_ctx_t ctx, long long **counts) { ctx->counters[i] = (long long)ntv_table_p->events[id].value; } *counts = ctx->counters; - return PAPI_OK; + return papi_errno; } int amds_ctx_write(amds_ctx_t ctx, long long *counts) { int papi_errno = PAPI_OK; diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 9b0890aaf..5a9b4c75b 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -18,8 +18,9 @@ static inline bool is_warning_rc(int rc) { int main(int argc, char *argv[]) { // Unbuffer stdout so the final status line shows promptly. - setvbuf(stdout, nullptr, _IONBF, 0); - + setvbuf(stdout, nullptr, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); // 1. Initialise PAPI @@ -39,7 +40,7 @@ int main(int argc, char *argv[]) { } } if (cid < 0) { - // Can't conduct on this build/platform ¡æ pass with warning. + // Can't conduct on this build/platform ¡æ pass with warning. SKIP("Unable to locate the amd_smi component (PAPI built without ROCm?)"); } @@ -48,7 +49,7 @@ int main(int argc, char *argv[]) { // 3. Enumerate every native event int ev_code = PAPI_NATIVE_MASK; if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { - // No events ¡æ treat as ¡°nothing to do¡± (warning instead of failing) + // No events ¡æ treat as ¡°nothing to do¡± (warning instead of failing) SKIP("No native events found for AMD-SMI component"); } diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp index ffe39ad4a..7adf4e477 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp @@ -79,8 +79,9 @@ static void* thread_fn2(void* arg) { int main(int argc, char** argv) { // Unbuffer stdout so the final status line always shows promptly - setvbuf(stdout, nullptr, _IONBF, 0); - + setvbuf(stdout, nullptr, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); // Optional override of the event: ./amdsmi_ctx_conflict "" [--print ...] if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp index 1d5eb906b..51c1c97ee 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp @@ -5,7 +5,8 @@ #include "papi.h" #include "test_harness.hpp" -int main(int argc, char **argv) { +int main(int argc, char **argv) { + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); const char* root = std::getenv("PAPI_AMDSMI_ROOT"); diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.cpp index 46dde37ff..7045efb4e 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.cpp +++ b/src/components/amd_smi/tests/amdsmi_gemm.cpp @@ -251,7 +251,8 @@ static int real_main(const HarnessOpts& opts) { return 0; } -int main(int argc, char *argv[]) { +int main(int argc, char *argv[]) { + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); int rc = real_main(opts); return eval_result(opts, rc); diff --git a/src/components/amd_smi/tests/amdsmi_hello.cpp b/src/components/amd_smi/tests/amdsmi_hello.cpp index c6aeecf58..9dc9d68c2 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.cpp +++ b/src/components/amd_smi/tests/amdsmi_hello.cpp @@ -9,6 +9,7 @@ int main(int argc, char** argv) { // Unbuffer stdout so the final status line always shows. setvbuf(stdout, nullptr, _IONBF, 0); + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); // Default event (can override via argv[1], e.g. "./amdsmi_hello amd_smi:::power_average:device=0") @@ -47,7 +48,7 @@ int main(int argc, char** argv) { return eval_result(opts, 1); } - // Start ¡æ short wait ¡æ stop/read + // Start ¡æ short wait ¡æ stop/read rc = PAPI_start(EventSet); if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { NOTE("Cannot start counters: %s", PAPI_strerror(rc)); diff --git a/src/components/amd_smi/tests/test_harness.hpp b/src/components/amd_smi/tests/test_harness.hpp index 31b87a6c4..57fc338ea 100644 --- a/src/components/amd_smi/tests/test_harness.hpp +++ b/src/components/amd_smi/tests/test_harness.hpp @@ -1,88 +1,111 @@ -#ifndef TEST_HARNESS_HPP -#define TEST_HARNESS_HPP - -#include -#include -#include -#include "papi.h" // for PAPI_* error codes used by helper macros - -struct HarnessOpts { - bool print; - bool expect_fail; - int had_warning; // set to 1 if we hit ENOEVNT/ECNFLCT or any warning -}; - -static HarnessOpts harness_opts; - -// Parse CLI -static HarnessOpts parse_harness_cli(int argc, char **argv) { - harness_opts.print = false; - harness_opts.expect_fail = false; - harness_opts.had_warning = 0; - - for (int i = 1; i < argc; ++i) { - if (strcmp(argv[i], "--print") == 0) harness_opts.print = true; - else if (strncmp(argv[i], "--expect=", 9) == 0) { - const char *v = argv[i] + 9; - harness_opts.expect_fail = (strcmp(v, "fail") == 0); - } - } - if (!harness_opts.print) { - const char* q = getenv("PAPI_AMDSMI_TEST_QUIET"); - if (!q || q[0] != '1') setenv("PAPI_AMDSMI_TEST_QUIET", "1", 1); - } else { - unsetenv("PAPI_AMDSMI_TEST_QUIET"); - } - return harness_opts; -} - -// Final status line -static int eval_result(const HarnessOpts &opts, int result_code) { - bool passed = opts.expect_fail ? (result_code != 0) : (result_code == 0); - if (passed) { - if (opts.had_warning) printf("PASSED with WARNING\n"); - else printf("PASSED\n"); - } else { - printf("FAILED!!!\n"); // always the shouty failure you wanted - } - return passed ? 0 : 1; -} - -// Print note only with --print -#define NOTE(...) do { \ - if (harness_opts.print) { fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ -} while (0) - -// Mark a warning (does not exit) -#define WARNF(...) do { \ - harness_opts.had_warning = 1; \ - if (harness_opts.print) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ -} while (0) - -// === ¡°Can¡¯t conduct¡± helpers === -// Exit immediately as PASSED with WARNING (portable success) -#define EXIT_WARNING(...) do { \ - harness_opts.had_warning = 1; \ - if (harness_opts.print && *#__VA_ARGS__) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ - printf("PASSED with WARNING\n"); fflush(stdout); exit(0); \ -} while (0) - -// If add fails due to unsupported or HW/resource limits ¡æ end as PASSED with WARNING -#define EXIT_WARNING_ON_ADD(rc, evname) do { \ - if ((rc) == PAPI_ENOEVNT || (rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ - EXIT_WARNING("Event unavailable (%s): %s", \ - ((rc) == PAPI_ENOEVNT ? "ENOEVNT" : (rc) == PAPI_ECNFLCT ? "ECNFLCT" : "EPERM"), (evname)); \ - } \ -} while (0) - -// If start fails due to HW/resource limits ¡æ end as PASSED with WARNING -#define EXIT_WARNING_ON_START(rc, ctx) do { \ - if ((rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ - EXIT_WARNING("Cannot start counters (%s): %s", (ctx), PAPI_strerror(rc)); \ - } \ -} while (0) - -// Keep SKIP as a ¡°can¡¯t conduct¡± success-with-warning -#define SKIP(reason) EXIT_WARNING("%s", (reason)) - -#endif // TEST_HARNESS_HPP +#ifndef TEST_HARNESS_HPP +#define TEST_HARNESS_HPP + +#include +#include +#include +#include "papi.h" // for PAPI_* error codes used by helper macros + +struct HarnessOpts { + bool print; + bool expect_fail; + int had_warning; // set to 1 if we hit ENOEVNT/ECNFLCT or any warning +}; + +static HarnessOpts harness_opts; + +// Accept the positional token "TESTS_QUIET" (or "QUIET"): +// - remove it from argv so it can't be mistaken for a positional arg, +// - enable quiet mode via env for the harness to pick up. +static inline void harness_accept_tests_quiet(int *argc, char **argv) { + int w = 1; + int saw_quiet = 0; + for (int r = 1; r < *argc; ++r) { + const char *a = argv[r]; + if (a && (!strcmp(a, "TESTS_QUIET") || !strcmp(a, "QUIET"))) { + saw_quiet = 1; + continue; + } + argv[w++] = argv[r]; + } + argv[w] = NULL; + *argc = w; + if (saw_quiet) setenv("TESTS_QUIET", "1", 1); +} + +// Parse CLI +static HarnessOpts parse_harness_cli(int argc, char **argv) { + harness_opts.print = false; + harness_opts.expect_fail = false; + harness_opts.had_warning = 0; + + for (int i = 1; i < argc; ++i) { + if (strcmp(argv[i], "--print") == 0) harness_opts.print = true; + else if (strncmp(argv[i], "--expect=", 9) == 0) { + const char *v = argv[i] + 9; + harness_opts.expect_fail = (strcmp(v, "fail") == 0); + } + } + if (!harness_opts.print) { + const char *tq = getenv("TESTS_QUIET"); + if (tq && *tq) harness_opts.print = false; + } + if (!harness_opts.print) { + const char* q = getenv("PAPI_AMDSMI_TEST_QUIET"); + if (!q || q[0] != '1') setenv("PAPI_AMDSMI_TEST_QUIET", "1", 1); + } else { + unsetenv("PAPI_AMDSMI_TEST_QUIET"); + } + return harness_opts; +} + +// Final status line +static int eval_result(const HarnessOpts &opts, int result_code) { + bool passed = opts.expect_fail ? (result_code != 0) : (result_code == 0); + if (passed) { + if (opts.had_warning) printf("PASSED with WARNING\n"); + else printf("PASSED\n"); + } else { + printf("FAILED!!!\n"); // always the shouty failure you wanted + } + return passed ? 0 : 1; +} + +// Print note only with --print +#define NOTE(...) do { \ + if (harness_opts.print) { fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ +} while (0) + +// Mark a warning (does not exit) +#define WARNF(...) do { \ + harness_opts.had_warning = 1; \ + if (harness_opts.print) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ +} while (0) + +// === Cant conduct helpers === +// Exit immediately as PASSED with WARNING (portable success) +#define EXIT_WARNING(...) do { \ + harness_opts.had_warning = 1; \ + if (harness_opts.print && *#__VA_ARGS__) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ + printf("PASSED with WARNING\n"); fflush(stdout); exit(0); \ +} while (0) + +// If add fails due to unsupported or HW/resource limits end as PASSED with WARNING +#define EXIT_WARNING_ON_ADD(rc, evname) do { \ + if ((rc) == PAPI_ENOEVNT || (rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ + EXIT_WARNING("Event unavailable (%s): %s", \ + ((rc) == PAPI_ENOEVNT ? "ENOEVNT" : (rc) == PAPI_ECNFLCT ? "ECNFLCT" : "EPERM"), (evname)); \ + } \ +} while (0) + +// If start fails due to HW/resource limits end as PASSED with WARNING +#define EXIT_WARNING_ON_START(rc, ctx) do { \ + if ((rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ + EXIT_WARNING("Cannot start counters (%s): %s", (ctx), PAPI_strerror(rc)); \ + } \ +} while (0) + +// Keep SKIP as a cant conduct success-with-warning +#define SKIP(reason) EXIT_WARNING("%s", (reason)) + +#endif // TEST_HARNESS_HPP From 4204a2a3300880ec636ca993c8b39a2d0ce8b88d Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Mon, 8 Sep 2025 23:59:19 -0400 Subject: [PATCH 091/147] Probe memory partition events at init --- src/components/amd_smi/amds.c | 62 ++++++++++++++--------------------- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 101ceec08..ee981d882 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3442,21 +3442,12 @@ static int init_event_table(void) { } } } - /* Register memory partition string hash without probing the value at init. - Probing via amdsmi_get_gpu_memory_partition_* in ROCm 6.4.0 can trigger - a Valgrind UMR inside libamd_smi. We only check feature support here and - fetch the value later in the accessor. */ if (amdsmi_get_gpu_memory_partition_p) { - bool supported = true; - if (amdsmi_is_gpu_memory_partition_supported_p) { - supported = false; - if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], - &supported) != AMDSMI_STATUS_SUCCESS || - !supported) { - supported = false; - } - } - if (supported) { + char part[128] = {0}; + /* Probe memory partition string to confirm support */ + if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, + sizeof(part)) == + AMDSMI_STATUS_SUCCESS) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); @@ -3467,19 +3458,10 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_memory_partition_config_p) { - bool supported = true; - if (amdsmi_is_gpu_memory_partition_supported_p) { - supported = false; - if (amdsmi_is_gpu_memory_partition_supported_p(device_handles[d], - &supported) != AMDSMI_STATUS_SUCCESS || - !supported) { - supported = false; - } - } - if (supported) { - /* Do not call amdsmi_get_gpu_memory_partition_config at init-time. - It can hit a UMR in libamd_smi on 6.4.0. Just register the events; - the accessor will fetch values on demand. */ + amdsmi_memory_partition_config_t cfg = {0}; + /* Probe memory partition configuration */ + if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == + AMDSMI_STATUS_SUCCESS) { const char *mpc_names[] = {"memory_partition_caps", "memory_partition_mode", "memory_partition_numa_count"}; @@ -3498,17 +3480,21 @@ static int init_event_table(void) { } } if (amdsmi_get_gpu_accelerator_partition_profile_p) { - /* Avoid probing amdsmi_get_gpu_accelerator_partition_profile at init-time: - ROCm 6.4.0 may trigger strlen/ostream on uninitialized data inside the lib. - Register the count event and let the accessor fetch later. */ - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d accelerator partition count", d); - if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_accelerator_num_partitions) != PAPI_OK) { - return PAPI_ENOMEM; + amdsmi_accelerator_partition_profile_t prof = {0}; + uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; + /* Probe accelerator partition profile to ensure availability */ + if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, + ids) == + AMDSMI_STATUS_SUCCESS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), + "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), + "Device %d accelerator partition count", d); + if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, + access_amdsmi_accelerator_num_partitions) != PAPI_OK) { + return PAPI_ENOMEM; + } } } /* Driver info (strings hashed) */ From 591dd946861108f3da2e299365eb711e525dbefc Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 9 Sep 2025 00:11:04 -0400 Subject: [PATCH 092/147] Guard newer AMD SMI APIs with version checks --- src/components/amd_smi/amds.c | 20 ++++++++++++++------ src/components/amd_smi/amds_accessors.c | 4 ++++ src/components/amd_smi/amds_funcs.h | 18 +++++++++--------- src/components/amd_smi/amds_priv.h | 4 ++++ 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ee981d882..bcfea3b10 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -305,18 +305,22 @@ static int load_amdsmi_sym(void) { amdsmi_get_gpu_compute_partition_p = sym("amdsmi_get_gpu_compute_partition", NULL); amdsmi_get_gpu_memory_partition_p = - sym("amdsmi_get_gpu_memory_partition", NULL); - amdsmi_get_gpu_memory_partition_config_p = - sym("amdsmi_get_gpu_memory_partition_config", NULL); + sym("amdsmi_get_gpu_memory_partition", NULL); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + amdsmi_get_gpu_memory_partition_config_p = + sym("amdsmi_get_gpu_memory_partition_config", NULL); +#endif amdsmi_is_gpu_memory_partition_supported_p = sym("amdsmi_is_gpu_memory_partition_supported", NULL); amdsmi_get_gpu_memory_reserved_pages_p = sym("amdsmi_get_gpu_memory_reserved_pages", NULL); amdsmi_get_gpu_kfd_info_p = sym("amdsmi_get_gpu_kfd_info", NULL); amdsmi_get_gpu_metrics_header_info_p = - sym("amdsmi_get_gpu_metrics_header_info", NULL); - amdsmi_get_gpu_xgmi_link_status_p = - sym("amdsmi_get_gpu_xgmi_link_status", NULL); + sym("amdsmi_get_gpu_metrics_header_info", NULL); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + amdsmi_get_gpu_xgmi_link_status_p = + sym("amdsmi_get_gpu_xgmi_link_status", NULL); +#endif amdsmi_get_xgmi_info_p = sym("amdsmi_get_xgmi_info", NULL); amdsmi_gpu_xgmi_error_status_p = sym("amdsmi_gpu_xgmi_error_status", NULL); @@ -3457,6 +3461,7 @@ static int init_event_table(void) { } } } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 if (amdsmi_get_gpu_memory_partition_config_p) { amdsmi_memory_partition_config_t cfg = {0}; /* Probe memory partition configuration */ @@ -3479,6 +3484,7 @@ static int init_event_table(void) { } } } +#endif if (amdsmi_get_gpu_accelerator_partition_profile_p) { amdsmi_accelerator_partition_profile_t prof = {0}; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; @@ -3562,6 +3568,7 @@ static int init_event_table(void) { } } } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 if (amdsmi_get_gpu_xgmi_link_status_p) { amdsmi_xgmi_link_status_t st; if (amdsmi_get_gpu_xgmi_link_status_p(device_handles[d], &st) == @@ -3582,6 +3589,7 @@ static int init_event_table(void) { } } } +#endif if (amdsmi_gpu_xgmi_error_status_p) { amdsmi_xgmi_status_t st; if (amdsmi_gpu_xgmi_error_status_p(device_handles[d], &st) == diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index b77d37c39..9629c970a 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -273,6 +273,7 @@ int access_amdsmi_link_metrics(int mode, void *arg) { return PAPI_OK; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_xgmi_link_status(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_xgmi_link_status_p) return PAPI_ENOSUPP; @@ -290,6 +291,7 @@ int access_amdsmi_xgmi_link_status(int mode, void *arg) { event->value = (int64_t)st.status[li]; return PAPI_OK; } +#endif int access_amdsmi_xgmi_error_status(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_gpu_xgmi_error_status_p) @@ -727,6 +729,7 @@ int access_amdsmi_memory_partition_hash(int mode, void *arg) { return PAPI_OK; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_memory_partition_config(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_memory_partition_config_p) return PAPI_ENOSUPP; @@ -762,6 +765,7 @@ int access_amdsmi_memory_partition_config(int mode, void *arg) { } return PAPI_OK; } +#endif int access_amdsmi_accelerator_num_partitions(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_accelerator_partition_profile_p) return PAPI_ENOSUPP; diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h index 85c4b17a2..5297f7631 100644 --- a/src/components/amd_smi/amds_funcs.h +++ b/src/components/amd_smi/amds_funcs.h @@ -199,16 +199,12 @@ (amdsmi_event_handle_t, amdsmi_counter_value_t *)) \ _(amdsmi_get_gpu_kfd_info_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_kfd_info_t *)) \ - _(amdsmi_get_gpu_memory_partition_config_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_memory_partition_config_t *)) \ _(amdsmi_is_gpu_memory_partition_supported_p, amdsmi_status_t, \ (amdsmi_processor_handle, bool *)) \ _(amdsmi_get_gpu_memory_reserved_pages_p, amdsmi_status_t, \ (amdsmi_processor_handle, uint32_t *, amdsmi_retired_page_record_t *)) \ _(amdsmi_get_gpu_metrics_header_info_p, amdsmi_status_t, \ (amdsmi_processor_handle, amd_metrics_table_header_t *)) \ - _(amdsmi_get_gpu_xgmi_link_status_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_xgmi_link_status_t *)) \ _(amdsmi_get_xgmi_info_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_xgmi_info_t *)) \ _(amdsmi_gpu_xgmi_error_status_p, amdsmi_status_t, \ @@ -221,11 +217,15 @@ (amdsmi_event_handle_t)) #if AMDSMI_LIB_VERSION_MAJOR >= 25 -#define AMD_SMI_GPU_FUNCTIONS(_) \ - AMD_SMI_GPU_FUNCTIONS_BASE(_) \ - _(amdsmi_get_gpu_enumeration_info_p, amdsmi_status_t, \ - (amdsmi_processor_handle, amdsmi_enumeration_info_t *)) \ - _(amdsmi_get_gpu_virtualization_mode_p, amdsmi_status_t, \ +#define AMD_SMI_GPU_FUNCTIONS(_) \ + AMD_SMI_GPU_FUNCTIONS_BASE(_) \ + _(amdsmi_get_gpu_memory_partition_config_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_memory_partition_config_t *)) \ + _(amdsmi_get_gpu_xgmi_link_status_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_xgmi_link_status_t *)) \ + _(amdsmi_get_gpu_enumeration_info_p, amdsmi_status_t, \ + (amdsmi_processor_handle, amdsmi_enumeration_info_t *)) \ + _(amdsmi_get_gpu_virtualization_mode_p, amdsmi_status_t, \ (amdsmi_processor_handle, amdsmi_virtualization_mode_t *)) #else #define AMD_SMI_GPU_FUNCTIONS(_) AMD_SMI_GPU_FUNCTIONS_BASE(_) diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index b29e7f6da..507ace005 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -116,7 +116,9 @@ int access_amdsmi_ecc_status(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_memory_partition_config(int mode, void *arg); +#endif int access_amdsmi_memory_reserved_pages(int mode, void *arg); int access_amdsmi_accelerator_num_partitions(int mode, void *arg); int access_amdsmi_lib_version(int mode, void *arg); @@ -145,7 +147,9 @@ int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_soc_pstate_supported(int mode, void *arg); int access_amdsmi_metrics_header_info(int mode, void *arg); +#if AMDSMI_LIB_VERSION_MAJOR >= 25 int access_amdsmi_xgmi_link_status(int mode, void *arg); +#endif int access_amdsmi_xgmi_error_status(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); From 16e1db7928f5eed0b9beafbbf857717d03f95a4e Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 9 Sep 2025 14:52:14 -0400 Subject: [PATCH 093/147] Ignore unexpected TESTS_QUIET tokens --- src/components/amd_smi/tests/runtest.sh | 3 ++- src/components/amd_smi/tests/test_harness.hpp | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/components/amd_smi/tests/runtest.sh diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh old mode 100644 new mode 100755 index a66669812..88a7f68cc --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -36,7 +36,8 @@ for arg in "$@"; do --print-only=*) PRINT_SET="${arg#*=}" ;; --hello-event=*) HELLO_EVENT="${arg#*=}" ;; -h|--help) usage; exit 0 ;; - *) echo "Unknown option: $arg"; usage; exit 2 ;; + --*) echo "Unknown option: $arg"; usage; exit 2 ;; + *) ;; # ignore any other stray args esac done diff --git a/src/components/amd_smi/tests/test_harness.hpp b/src/components/amd_smi/tests/test_harness.hpp index 57fc338ea..725550fcd 100644 --- a/src/components/amd_smi/tests/test_harness.hpp +++ b/src/components/amd_smi/tests/test_harness.hpp @@ -18,6 +18,20 @@ static HarnessOpts harness_opts; // - remove it from argv so it can't be mistaken for a positional arg, // - enable quiet mode via env for the harness to pick up. static inline void harness_accept_tests_quiet(int *argc, char **argv) { + /* The PAPI test harness historically invokes each test with a single + positional token holding the value of the TESTS_QUIET environment + variable. Only the literal string "TESTS_QUIET" should trigger quiet + mode. If any other value is present we drop it from argv and ignore + the environment variable so tests don't misinterpret it as a positional + argument. */ + + const char *badarg = NULL; + const char *tq_env = getenv("TESTS_QUIET"); + if (tq_env && strcmp(tq_env, "TESTS_QUIET") != 0) { + badarg = tq_env; // remember stray value to filter from argv + unsetenv("TESTS_QUIET"); // ignore non‑literal TESTS_QUIET + } + int w = 1; int saw_quiet = 0; for (int r = 1; r < *argc; ++r) { @@ -26,6 +40,10 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { saw_quiet = 1; continue; } + if (badarg && a && strcmp(a, badarg) == 0) { + /* discard unexpected TESTS_QUIET value */ + continue; + } argv[w++] = argv[r]; } argv[w] = NULL; From ef313c6e3123933bd546535ff754b859959a48f6 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:04:25 -0400 Subject: [PATCH 094/147] Sanitize TESTS_QUIET safely and drop runtest executable bit --- src/components/amd_smi/tests/runtest.sh | 0 src/components/amd_smi/tests/test_harness.hpp | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) mode change 100755 => 100644 src/components/amd_smi/tests/runtest.sh diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh old mode 100755 new mode 100644 diff --git a/src/components/amd_smi/tests/test_harness.hpp b/src/components/amd_smi/tests/test_harness.hpp index 725550fcd..2d7be599d 100644 --- a/src/components/amd_smi/tests/test_harness.hpp +++ b/src/components/amd_smi/tests/test_harness.hpp @@ -25,10 +25,10 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { the environment variable so tests don't misinterpret it as a positional argument. */ - const char *badarg = NULL; + char *badarg = NULL; const char *tq_env = getenv("TESTS_QUIET"); if (tq_env && strcmp(tq_env, "TESTS_QUIET") != 0) { - badarg = tq_env; // remember stray value to filter from argv + badarg = strdup(tq_env); // remember stray value to filter from argv unsetenv("TESTS_QUIET"); // ignore non‑literal TESTS_QUIET } @@ -49,6 +49,7 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { argv[w] = NULL; *argc = w; if (saw_quiet) setenv("TESTS_QUIET", "1", 1); + if (badarg) free(badarg); } // Parse CLI From 1e152473a971fbfd56c76bbcfb49330a14ee850e Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 13:37:18 -0700 Subject: [PATCH 095/147] extend test cycle --- .../amd_smi/tests/amdsmi_energy_monotonic.cpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp index 51c1c97ee..d0fec8190 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp @@ -5,8 +5,8 @@ #include "papi.h" #include "test_harness.hpp" -int main(int argc, char **argv) { - harness_accept_tests_quiet(&argc, argv); +int main(int argc, char **argv) { + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); const char* root = std::getenv("PAPI_AMDSMI_ROOT"); @@ -50,13 +50,17 @@ int main(int argc, char **argv) { return eval_result(opts, 1); } - usleep(100000); + // Try up to 1 second for the energy counter to advance + for (int i = 0; i < 10; ++i) { + usleep(100000); - ret = PAPI_read(EventSet, &v2); - if (ret != PAPI_OK) { - NOTE("PAPI_read(2): %s", PAPI_strerror(ret)); - long long dummy=0; PAPI_stop(EventSet, &dummy); - return eval_result(opts, 1); + ret = PAPI_read(EventSet, &v2); + if (ret != PAPI_OK) { + NOTE("PAPI_read(2): %s", PAPI_strerror(ret)); + long long dummy=0; PAPI_stop(EventSet, &dummy); + return eval_result(opts, 1); + } + if (v2 > v1) break; } long long dummy=0; From c4f1b07228c7faa9bf896a4da7535df9f95c38fa Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 15:46:45 -0700 Subject: [PATCH 096/147] use common event --- src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp index 7adf4e477..a0a78d8f8 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp @@ -13,7 +13,7 @@ struct ThreadState { int start_rc = PAPI_OK; }; static std::atomic t1_started(false); // Default event; you can override with argv[1] (any amd_smi native event string) -static const char* g_event = "amd_smi:::temp_current:device=0:sensor=0"; +static const char* g_event = "amd_smi:::temp_current:device=0:sensor=1"; static void* thread_fn1(void* arg) { PAPI_register_thread(); @@ -79,9 +79,9 @@ static void* thread_fn2(void* arg) { int main(int argc, char** argv) { // Unbuffer stdout so the final status line always shows promptly - setvbuf(stdout, nullptr, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); + setvbuf(stdout, nullptr, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); // Optional override of the event: ./amdsmi_ctx_conflict "" [--print ...] if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; From 1b28071b05ba42d6b79595b6375aee8136545cee Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 20:22:46 -0700 Subject: [PATCH 097/147] initial changes to some bugs --- src/components/amd_smi/amds.c | 60 +++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index bcfea3b10..13fc26389 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -35,6 +35,7 @@ static void *amds_dlp = NULL; static void *htable = NULL; static char error_string[PAPI_MAX_STR_LEN + 1]; static uint32_t amdsmi_lib_major = 0; +static uint32_t amdsmi_lib_minor = 0; // Forward declarations for internal helpers static int load_amdsmi_sym(void); static int init_device_table(void); @@ -486,7 +487,15 @@ int amds_init(void) { amdsmi_version_t vinfo; if (amdsmi_get_lib_version_p(&vinfo) == AMDSMI_STATUS_SUCCESS) { amdsmi_lib_major = vinfo.major; + amdsmi_lib_minor = vinfo.minor; } +#if AMDSMI_LIB_VERSION_MAJOR >= 25 + if (!((amdsmi_lib_major == AMDSMI_LIB_VERSION_MAJOR) && + (amdsmi_lib_minor >= AMDSMI_LIB_VERSION_MINOR))) { + amdsmi_get_gpu_memory_partition_config_p = NULL; + amdsmi_get_gpu_accelerator_partition_profile_p = NULL; + } +#endif } htable_init(&htable); // Discover GPU and CPU devices @@ -1628,27 +1637,28 @@ static int init_event_table(void) { for (int si = 0; si < num_temp_sensors && si < 8; ++si) { // Test each sensor individually first - int64_t sensor_test_val; + int64_t sensor_test_val = 0; // <= init if (!amdsmi_get_temp_metric_p || amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { continue; // Skip this specific sensor if it doesn't work } + // Register metrics for this working sensor, testing each metric individually - for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); - ++mi) { + for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { return PAPI_ENOSUPP; // Too many events } - // Test this specific metric on this specific sensor - int64_t metric_val; + + int64_t metric_val = 0; // <= init if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], - temp_metrics[mi], - &metric_val) != AMDSMI_STATUS_SUCCESS) { + temp_metrics[mi], &metric_val) + != AMDSMI_STATUS_SUCCESS) { continue; /* skip this specific metric if not supported */ } + snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int)temp_sensors[si]); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s for sensor %d", d, @@ -2595,9 +2605,13 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_metrics_header_info_p) { - amd_metrics_table_header_t hdr; - if (amdsmi_get_gpu_metrics_header_info_p(device_handles[d], &hdr) == - AMDSMI_STATUS_SUCCESS) { + amd_metrics_table_header_t hdr = {0}; // <= zero-init + + // If the API defines a size/version field, set it before the call: + // hdr.metrics_header_size = sizeof(hdr); // uncomment if such a field exists + + if (amdsmi_get_gpu_metrics_header_info_p(device_handles[d], &hdr) + == AMDSMI_STATUS_SUCCESS) { const char *hnames[] = {"metrics_header_size", "metrics_header_format_rev", "metrics_header_content_rev"}; @@ -3448,10 +3462,11 @@ static int init_event_table(void) { } if (amdsmi_get_gpu_memory_partition_p) { char part[128] = {0}; - /* Probe memory partition string to confirm support */ - if (amdsmi_get_gpu_memory_partition_p(device_handles[d], part, - sizeof(part)) == - AMDSMI_STATUS_SUCCESS) { + uint32_t len = (uint32_t)sizeof(part); + amdsmi_status_t rc = + amdsmi_get_gpu_memory_partition_p(device_handles[d], part, len); + part[sizeof(part) - 1] = '\0'; // belt-and-suspenders NUL + if (rc == AMDSMI_STATUS_SUCCESS && part[0] != '\0') { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); @@ -3488,15 +3503,14 @@ static int init_event_table(void) { if (amdsmi_get_gpu_accelerator_partition_profile_p) { amdsmi_accelerator_partition_profile_t prof = {0}; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - /* Probe accelerator partition profile to ensure availability */ - if (amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, - ids) == - AMDSMI_STATUS_SUCCESS) { - CHECK_EVENT_IDX(idx); - snprintf(name_buf, sizeof(name_buf), - "accelerator_num_partitions:device=%d", d); - snprintf(descr_buf, sizeof(descr_buf), - "Device %d accelerator partition count", d); + amdsmi_status_t rc = + amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids); + if (rc == AMDSMI_STATUS_SUCCESS && + prof.num_partitions > 0 && + prof.num_partitions <= AMDSMI_MAX_ACCELERATOR_PARTITIONS) { + CHECK_EVENT_IDX(idx); + snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); + snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator partition count", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, access_amdsmi_accelerator_num_partitions) != PAPI_OK) { return PAPI_ENOMEM; From 21874e7ec1282b40f885a7909c65b960e17a9733 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 20:38:54 -0700 Subject: [PATCH 098/147] amd smi root path --- src/components/amd_smi/Rules.amd_smi | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/amd_smi/Rules.amd_smi b/src/components/amd_smi/Rules.amd_smi index 27eedc7d1..2d493b2c0 100644 --- a/src/components/amd_smi/Rules.amd_smi +++ b/src/components/amd_smi/Rules.amd_smi @@ -90,8 +90,6 @@ COMPOBJS += amds.o \ # Where to find amd_smi.h varied in early ROCM releases. If it changes again, # for backward compatibility add *more* -I paths, do not just replace this one. -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include/amd_smi -CFLAGS += -I$(PAPI_AMDSMI_ROOT)/../include CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi CFLAGS += -I$(PAPI_AMDSMI_ROOT)/include CFLAGS += -g From e1116d63383ec60977ea23229ec1d79b1ec5a894 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 21:31:16 -0700 Subject: [PATCH 099/147] change update_native_events --- src/components/amd_smi/linux-amd-smi.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index f10a76cee..40844f6d9 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -114,10 +114,26 @@ static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) { int papi_errno = PAPI_OK; - unsigned int *events = papi_calloc(ntvCount, sizeof(*events)); - if (events == NULL) { - return PAPI_ENOMEM; + + if (ntvCount == 0) { + papi_free(ctl->events_id); + ctl->events_id = NULL; + ctl->num_events = 0; + return PAPI_OK; } + + unsigned int *events = NULL; + if (ntvCount > 0) { + events = papi_calloc((size_t)ntvCount, sizeof(*events)); + if (!events) { + return PAPI_ENOMEM; + } + for (int i = 0; i < ntvCount; ++i) { + events[i] = ntvInfo[i].ni_event; + ntvInfo[i].ni_position = i; + } + } + for (int i = 0; i < ntvCount; ++i) { events[i] = ntvInfo[i].ni_event; ntvInfo[i].ni_position = i; From 89fc8ed5ff47a51e1e3fd2e7d4cca46b0e1039cd Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 9 Sep 2025 21:33:55 -0700 Subject: [PATCH 100/147] duplicate loop: --- src/components/amd_smi/linux-amd-smi.c | 44 ++++++++++++++------------ 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 40844f6d9..2b6563d10 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -112,36 +112,38 @@ static int _amd_smi_init_control_state(hwd_control_state_t *ctrl) { return _amd_smi_check_n_initialize(); } -static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) { - int papi_errno = PAPI_OK; - +static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, int ntvCount) +{ + if (!ctl) return PAPI_EINVAL; + if (ntvCount < 0) return PAPI_EINVAL; + if (ntvCount == 0) { - papi_free(ctl->events_id); - ctl->events_id = NULL; - ctl->num_events = 0; - return PAPI_OK; + if (ctl->events_id) papi_free(ctl->events_id); + ctl->events_id = NULL; + ctl->num_events = 0; + return PAPI_OK; } - - unsigned int *events = NULL; - if (ntvCount > 0) { - events = papi_calloc((size_t)ntvCount, sizeof(*events)); - if (!events) { - return PAPI_ENOMEM; - } - for (int i = 0; i < ntvCount; ++i) { - events[i] = ntvInfo[i].ni_event; - ntvInfo[i].ni_position = i; - } + + if (!ntvInfo) return PAPI_EINVAL; + + // Allocate a new array; leave ctl unchanged until success. + unsigned int *events = papi_calloc((size_t)ntvCount, sizeof(*events)); + if (!events) { + // Old ctl->events_id/num_events remain intact on allocation failure. + return PAPI_ENOMEM; } - + for (int i = 0; i < ntvCount; ++i) { events[i] = ntvInfo[i].ni_event; ntvInfo[i].ni_position = i; } - papi_free(ctl->events_id); + + // Swap in the new array atomically. + if (ctl->events_id) papi_free(ctl->events_id); ctl->events_id = events; ctl->num_events = ntvCount; - return papi_errno; + + return PAPI_OK; } static int try_open_events(amdsmi_control_t *ctl) { From e31a1efd078fc066089ee4f921ee708f1aa9422b Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 10 Sep 2025 14:37:03 -0700 Subject: [PATCH 101/147] context control stop clean stop and shutdown --- src/components/amd_smi/amds.c | 43 ++++++++++++++++++++------ src/components/amd_smi/linux-amd-smi.c | 26 ++++++++-------- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 13fc26389..ae3fa0a2f 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -489,13 +489,6 @@ int amds_init(void) { amdsmi_lib_major = vinfo.major; amdsmi_lib_minor = vinfo.minor; } -#if AMDSMI_LIB_VERSION_MAJOR >= 25 - if (!((amdsmi_lib_major == AMDSMI_LIB_VERSION_MAJOR) && - (amdsmi_lib_minor >= AMDSMI_LIB_VERSION_MINOR))) { - amdsmi_get_gpu_memory_partition_config_p = NULL; - amdsmi_get_gpu_accelerator_partition_profile_p = NULL; - } -#endif } htable_init(&htable); // Discover GPU and CPU devices @@ -691,13 +684,43 @@ int amds_init(void) { } int amds_shutdown(void) { + // Tear down our tables first shutdown_event_table(); shutdown_device_table(); htable_shutdown(htable); + htable = NULL; + + // Tell AMD SMI to shut down if the symbol exists + amdsmi_status_t st = AMDSMI_STATUS_SUCCESS; + if (amdsmi_shut_down_p) { + st = amdsmi_shut_down_p(); + } + + // Unload the shared library if we loaded it + if (amds_dlp) { + dlclose(amds_dlp); + amds_dlp = NULL; + } - return amdsmi_shut_down_p(); + // Clear function pointers so a future init can't call stale symbols + #define NULLIFY(name, ret, args) name = NULL; + AMD_SMI_GPU_FUNCTIONS(NULLIFY) + #ifndef AMDSMI_DISABLE_ESMI + AMD_SMI_CPU_FUNCTIONS(NULLIFY) + #endif + #undef NULLIFY + + // Reset a few globals used by init paths + device_count = 0; + gpu_count = 0; + cpu_count = 0; + ntv_table_p = NULL; + amdsmi_lib_major = 0; + + return (st == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_EMISC; } + int amds_err_get_last(const char **err_string) { if (err_string) *err_string = error_string; @@ -3476,10 +3499,11 @@ static int init_event_table(void) { } } } + /* #if AMDSMI_LIB_VERSION_MAJOR >= 25 if (amdsmi_get_gpu_memory_partition_config_p) { amdsmi_memory_partition_config_t cfg = {0}; - /* Probe memory partition configuration */ + // Probe memory partition configuration if (amdsmi_get_gpu_memory_partition_config_p(device_handles[d], &cfg) == AMDSMI_STATUS_SUCCESS) { const char *mpc_names[] = {"memory_partition_caps", @@ -3517,6 +3541,7 @@ static int init_event_table(void) { } } } + */ /* Driver info (strings hashed) */ if (amdsmi_get_gpu_driver_info_p) { amdsmi_driver_info_t dinfo = {0}; diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 2b6563d10..a2393a2d4 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -216,20 +216,20 @@ static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long lo static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { int papi_errno = PAPI_OK; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); - if (papi_errno != PAPI_OK) { - return papi_errno; - } - amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; - papi_errno = amds_ctx_close(amdsmi_ctl->amds_ctx); - amdsmi_ctx->state &= ~AMDS_EVENTS_OPENED; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *)ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) return PAPI_EMISC; + + papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); // may be != PAPI_OK + amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; // mirror ctx state even on error + + // Always try to close to release device_mask/memory + int close_rc = amds_ctx_close(amdsmi_ctl->amds_ctx); amdsmi_ctl->amds_ctx = NULL; - return papi_errno; + amdsmi_ctx->state &= ~AMDS_EVENTS_OPENED; + + // Preserve the original stop error if any + return (papi_errno != PAPI_OK) ? papi_errno : close_rc; } static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { From 3eccf70a3a13a243f080f9fa25edd14196969b1a Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Wed, 10 Sep 2025 21:46:36 -0700 Subject: [PATCH 102/147] Null terminate --- src/components/amd_smi/amds_ctx.c | 2 +- src/components/amd_smi/amds_evtapi.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 20fb422b3..89125050f 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -42,7 +42,7 @@ int amds_ctx_open(unsigned int *event_ids, int num_events, amds_ctx_t *ctx) { if (new_ctx == NULL) { return PAPI_ENOMEM; } - new_ctx->events_id = event_ids; // Store pointer (original approach) + new_ctx->events_id = event_ids; // Store pointer new_ctx->num_events = num_events; new_ctx->counters = (long long *)papi_calloc(num_events, sizeof(long long)); if (new_ctx->counters == NULL) { diff --git a/src/components/amd_smi/amds_evtapi.c b/src/components/amd_smi/amds_evtapi.c index d462bed92..973ced09f 100644 --- a/src/components/amd_smi/amds_evtapi.c +++ b/src/components/amd_smi/amds_evtapi.c @@ -26,6 +26,7 @@ int amds_evt_code_to_name(unsigned int EventCode, char *name, int len) { return PAPI_EINVAL; } strncpy(name, ntv_table_p->events[EventCode].name, len); + name[len-1] = '\0'; return PAPI_OK; } int amds_evt_name_to_code(const char *name, unsigned int *EventCode) { @@ -42,5 +43,6 @@ int amds_evt_code_to_descr(unsigned int EventCode, char *descr, int len) { return PAPI_EINVAL; } strncpy(descr, ntv_table_p->events[EventCode].descr, len); + descr[len-1] = '\0'; return PAPI_OK; } From c9a3910a1667bf0578e0e0241401402f3ea8d885 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 11 Sep 2025 01:12:22 -0400 Subject: [PATCH 103/147] Limit htable fix to AMD SMI and drop stderr silencing --- src/components/amd_smi/amds.c | 30 ------------------------------ src/components/amd_smi/htable.h | 2 +- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index ae3fa0a2f..1806b7824 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -7,12 +7,9 @@ #include "papi_memory.h" #include #include -#include #include #include #include -#include -#include #define MAX_EVENTS_PER_DEVICE 1024 static unsigned int _amd_smi_lock; @@ -67,29 +64,6 @@ uint32_t amds_get_lib_major(void) { return amdsmi_lib_major; } return PAPI_ENOSUPP; \ } \ } while (0) -// Redirects stderr to /dev/null, returns dup of old stderr (or -1 on failure) -static int silence_stderr_begin(void) { - int devnull = open("/dev/null", O_WRONLY); - if (devnull < 0) - return -1; - int saved = dup(STDERR_FILENO); - if (saved < 0) { - close(devnull); - return -1; - } - (void)dup2(devnull, STDERR_FILENO); - close(devnull); - return saved; -} - -// Restores stderr using the fd returned by silence_stderr_begin() -static void silence_stderr_end(int saved_fd) { - if (saved_fd >= 0) { - (void)dup2(saved_fd, STDERR_FILENO); - close(saved_fd); - } -} - // Simple open/close/start/stop functions (no special handling needed for most events) static int open_simple(native_event_t *event) { (void)event; @@ -1101,10 +1075,8 @@ static int init_event_table(void) { amdsmi_name_value_t *metrics = NULL; uint32_t mcount = 0; - int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], &metrics, &mcount); - silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count && metrics) @@ -1612,10 +1584,8 @@ static int init_event_table(void) { amdsmi_name_value_t *reg_metrics = NULL; uint32_t num_metrics = 0; - int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p( device_handles[d], reg_types[rt], ®_metrics, &num_metrics); - silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index daca6d050..12f19ea8f 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -195,7 +195,7 @@ create_table(uint64_t size, struct hash_table **table) int htable_errno = HTABLE_SUCCESS; *table = papi_calloc(1, sizeof(**table)); - if (table == NULL) { + if (*table == NULL) { htable_errno = HTABLE_ENOMEM; goto fn_exit; } From f0499dbc77f775d07ae228cfd9d851d6b6128825 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 11 Sep 2025 01:22:32 -0400 Subject: [PATCH 104/147] style: drop braces on single-line if statements --- src/components/amd_smi/amds.c | 678 ++++++++++++---------------------- 1 file changed, 226 insertions(+), 452 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 1806b7824..5eed27489 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -444,13 +444,11 @@ static int shutdown_device_table(void) { int amds_init(void) { // Check if already initialized to avoid expensive re-initialization - if (device_handles != NULL && device_count > 0) { + if (device_handles != NULL && device_count > 0) return PAPI_OK; // Already initialized - } int papi_errno = load_amdsmi_sym(); - if (papi_errno != PAPI_OK) { + if (papi_errno != PAPI_OK) return papi_errno; - } // AMDSMI_INIT_AMD_CPUS amdsmi_status_t status = amdsmi_init_p(AMDSMI_INIT_AMD_GPUS); if (status != AMDSMI_STATUS_SUCCESS) { @@ -495,16 +493,14 @@ int amds_init(void) { processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; amdsmi_status_t st = amdsmi_get_processor_handles_by_type_p( sockets[s], proc_type, NULL, &gpu_count_local); - if (st == AMDSMI_STATUS_SUCCESS) { + if (st == AMDSMI_STATUS_SUCCESS) total_gpu_count += gpu_count_local; - } } uint32_t total_cpu_count = 0; #ifndef AMDSMI_DISABLE_ESMI status = amdsmi_get_cpu_handles_p(&total_cpu_count, NULL); - if (status != AMDSMI_STATUS_SUCCESS) { + if (status != AMDSMI_STATUS_SUCCESS) total_cpu_count = 0; - } #endif if (total_gpu_count == 0 && total_cpu_count == 0) { snprintf(error_string, sizeof(error_string), @@ -529,16 +525,14 @@ int amds_init(void) { processor_type_t proc_type = AMDSMI_PROCESSOR_TYPE_AMD_GPU; status = amdsmi_get_processor_handles_by_type_p(sockets[s], proc_type, NULL, &gpu_count_local); - if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) { + if (status != AMDSMI_STATUS_SUCCESS || gpu_count_local == 0) continue; // no GPU on this socket or error - } // Use the main device_handles array directly to avoid extra allocation amdsmi_processor_handle *gpu_handles = &device_handles[device_count]; status = amdsmi_get_processor_handles_by_type_p( sockets[s], proc_type, gpu_handles, &gpu_count_local); - if (status == AMDSMI_STATUS_SUCCESS) { + if (status == AMDSMI_STATUS_SUCCESS) device_count += gpu_count_local; - } } papi_free(sockets); // Set gpu_count for use in event table initialization @@ -666,9 +660,8 @@ int amds_shutdown(void) { // Tell AMD SMI to shut down if the symbol exists amdsmi_status_t st = AMDSMI_STATUS_SUCCESS; - if (amdsmi_shut_down_p) { + if (amdsmi_shut_down_p) st = amdsmi_shut_down_p(); - } // Unload the shared library if we loaded it if (amds_dlp) { @@ -709,9 +702,8 @@ static int add_event(int *idx_ptr, const char *name, const char *descr, int devi ev->id = *idx_ptr; ev->name = strdup(name); ev->descr = strdup(descr); - if (!ev->name || !ev->descr) { + if (!ev->name || !ev->descr) return PAPI_ENOMEM; - } ev->device = device; ev->value = 0; ev->mode = mode; @@ -745,9 +737,8 @@ static int add_counter_event(int *idx_ptr, const char *name, const char *descr, // Initialize native event table: enumerate all supported events static int init_event_table(void) { // Check if event table is already initialized - if (ntv_table.count > 0 && ntv_table.events != NULL) { + if (ntv_table.count > 0 && ntv_table.events != NULL) return PAPI_OK; // Already initialized, skip expensive rebuild - } ntv_table.count = 0; int idx = 0; // Safety check - if no devices, return early @@ -758,9 +749,8 @@ static int init_event_table(void) { // Keep original allocation approach ntv_table.events = (native_event_t *)papi_calloc( MAX_EVENTS_PER_DEVICE * device_count, sizeof(native_event_t)); - if (!ntv_table.events) { + if (!ntv_table.events) return PAPI_ENOMEM; - } char name_buf[PAPI_MAX_STR_LEN]; char descr_buf[PAPI_MAX_STR_LEN]; // Define sensor arrays first @@ -786,9 +776,8 @@ static int init_event_table(void) { // Temperature sensors - device-level cache + individual testing for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle - if (!device_handles || !device_handles[d]) { + if (!device_handles || !device_handles[d]) continue; - } // GPU cache info events if (amdsmi_get_gpu_cache_info_p) { @@ -817,9 +806,8 @@ static int init_event_table(void) { : (strcmp(type_str, "icache") == 0 ? "instruction cache" : "data cache"))); if (add_event(&idx, name_buf, descr_buf, d, 0, i, PAPI_MODE_READ, - access_amdsmi_cache_stat) != PAPI_OK) { + access_amdsmi_cache_stat) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_cu_shared:device=%d", @@ -827,9 +815,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s max CUs sharing", d, level, type_str); if (add_event(&idx, name_buf, descr_buf, d, 1, i, PAPI_MODE_READ, - access_amdsmi_cache_stat) != PAPI_OK) { + access_amdsmi_cache_stat) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "L%u_%s_instances:device=%d", @@ -837,9 +824,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d L%u %s instances", d, level, type_str); if (add_event(&idx, name_buf, descr_buf, d, 2, i, PAPI_MODE_READ, - access_amdsmi_cache_stat) != PAPI_OK) { + access_amdsmi_cache_stat) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -853,34 +839,30 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM bus width (bits)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_width) != PAPI_OK) { + access_amdsmi_vram_width) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_size_bytes:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM size (bytes)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_size) != PAPI_OK) { + access_amdsmi_vram_size) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM type id", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_type) != PAPI_OK) { + access_amdsmi_vram_type) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "vram_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor id", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_vendor) != PAPI_OK) { + access_amdsmi_vram_vendor) != PAPI_OK) return PAPI_ENOMEM; - } } } // PCIe information events @@ -893,18 +875,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link width (lanes)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_max_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe link speed (GT/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_interface_version:device=%d", @@ -912,18 +892,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe interface version", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_slot_type:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe slot type", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } #if AMDSMI_LIB_VERSION_MAJOR >= 25 if (amdsmi_lib_major >= 25) { @@ -933,9 +911,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum PCIe interface version", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } } #endif @@ -944,35 +921,31 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link width (lanes)", d); if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_speed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe link speed (MT/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d instantaneous PCIe bandwidth (Mb/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); if (add_event(&idx, name_buf, descr_buf, d, 8, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -980,9 +953,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); if (add_event(&idx, name_buf, descr_buf, d, 9, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -990,18 +962,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); if (add_event(&idx, name_buf, descr_buf, d, 10, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_nak_sent_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); if (add_event(&idx, name_buf, descr_buf, d, 11, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -1009,9 +979,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); if (add_event(&idx, name_buf, descr_buf, d, 12, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -1019,9 +988,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe other-end recovery count", d); if (add_event(&idx, name_buf, descr_buf, d, 13, 0, PAPI_MODE_READ, - access_amdsmi_pcie_info) != PAPI_OK) { + access_amdsmi_pcie_info) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU Overdrive level events @@ -1034,9 +1002,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU core clock overdrive (%%)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_overdrive_level) != PAPI_OK) { + access_amdsmi_overdrive_level) != PAPI_OK) return PAPI_ENOMEM; - } } } if (amdsmi_get_gpu_mem_overdrive_level_p) { @@ -1049,9 +1016,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU memory clock overdrive (%%)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_mem_overdrive_level) != PAPI_OK) { + access_amdsmi_mem_overdrive_level) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU performance level event @@ -1064,9 +1030,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d current performance level", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_perf_level) != PAPI_OK) { + access_amdsmi_perf_level) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -1120,9 +1085,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power management enabled", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_pm_enabled) != PAPI_OK) { + access_amdsmi_pm_enabled) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU RAS feature (ECC schema) event @@ -1135,17 +1099,15 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC correction features mask", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_ras_ecc_schema) != PAPI_OK) { + access_amdsmi_ras_ecc_schema) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ras_eeprom_version:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM version", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_ras_eeprom_version) != PAPI_OK) { + access_amdsmi_ras_eeprom_version) != PAPI_OK) return PAPI_ENOMEM; - } } } if (amdsmi_gpu_validate_ras_eeprom_p) { @@ -1154,9 +1116,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS EEPROM validation status", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_ras_eeprom_validate) != PAPI_OK) { + access_amdsmi_ras_eeprom_validate) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_get_gpu_ras_block_features_enabled_p) { amdsmi_gpu_block_t blocks[] = { @@ -1182,9 +1143,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d RAS state for %s block", d, block_names[bi]); if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)blocks[bi], 0, - PAPI_MODE_READ, access_amdsmi_ras_block_state) != PAPI_OK) { + PAPI_MODE_READ, access_amdsmi_ras_block_state) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1200,27 +1160,24 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d total correctable ECC errors", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_ecc_total) != PAPI_OK) { + access_amdsmi_ecc_total) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_total_uncorrectable:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total uncorrectable ECC errors", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_ecc_total) != PAPI_OK) { + access_amdsmi_ecc_total) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "ecc_total_deferred:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total deferred ECC errors", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_ecc_total) != PAPI_OK) { + access_amdsmi_ecc_total) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -1233,9 +1190,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d ECC enabled block mask", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_ecc_enabled_mask) != PAPI_OK) { + access_amdsmi_ecc_enabled_mask) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -1267,9 +1223,8 @@ static int init_event_table(void) { "Device %d %s %s ECC errors", d, eblock_names[bi], suf); if (add_event(&idx, name_buf, descr_buf, d, v, (uint32_t)eblocks[bi], PAPI_MODE_READ, - access_amdsmi_ecc_block) != PAPI_OK) { + access_amdsmi_ecc_block) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1300,9 +1255,8 @@ static int init_event_table(void) { "Device %d ECC status for %s block", d, eblock_names[bi]); if (add_event(&idx, name_buf, descr_buf, d, 0, (uint32_t)eblocks[bi], PAPI_MODE_READ, - access_amdsmi_ecc_status) != PAPI_OK) { + access_amdsmi_ecc_status) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1346,9 +1300,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s voltage (mV)", d, sname, metric_names[m]); if (add_event(&idx, name_buf, descr_buf, d, metrics[m], s, PAPI_MODE_READ, - access_amdsmi_voltage) != PAPI_OK) { + access_amdsmi_voltage) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1437,72 +1390,63 @@ static int init_event_table(void) { if (amdsmi_get_gpu_od_volt_info_p(device_handles[d], &info) == AMDSMI_STATUS_SUCCESS) { if (idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS > - MAX_EVENTS_PER_DEVICE * device_count) { + MAX_EVENTS_PER_DEVICE * device_count) CHECK_EVENT_IDX(idx + 8 + 2 * AMDSMI_NUM_VOLTAGE_CURVE_POINTS); - } snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency lower bound", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_curr_sclk_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current SCLK frequency upper bound", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency lower bound", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_curr_mclk_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current MCLK frequency upper bound", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit lower bound", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_sclk_limit_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d SCLK frequency limit upper bound", d); if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit lower bound", d); if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "od_mclk_limit_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MCLK frequency limit upper bound", d); if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } for (uint32_t p = 0; p < AMDSMI_NUM_VOLTAGE_CURVE_POINTS; ++p) { CHECK_EVENT_IDX(idx + 2); @@ -1511,18 +1455,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u frequency", d, p); if (add_event(&idx, name_buf, descr_buf, d, 8, p, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "volt_curve_point_volt:device=%d:point=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d voltage curve point %u voltage", d, p); if (add_event(&idx, name_buf, descr_buf, d, 9, p, PAPI_MODE_READ, - access_amdsmi_od_volt_info) != PAPI_OK) { + access_amdsmi_od_volt_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1537,17 +1479,15 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d current SoC P-state policy id", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_soc_pstate_id) != PAPI_OK) { + access_amdsmi_soc_pstate_id) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "soc_pstate_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d supported SoC P-state count", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_soc_pstate_supported) != PAPI_OK) { + access_amdsmi_soc_pstate_supported) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU XGMI PLPD policy events @@ -1561,17 +1501,15 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d current XGMI PLPD policy id", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_xgmi_plpd_id) != PAPI_OK) { + access_amdsmi_xgmi_plpd_id) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_plpd_supported:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d supported XGMI PLPD policy count", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_xgmi_plpd_supported) != PAPI_OK) { + access_amdsmi_xgmi_plpd_supported) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU register table metrics count events (available in lib version 25+) @@ -1634,23 +1572,20 @@ static int init_event_table(void) { if (!amdsmi_get_temp_metric_p || amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], AMDSMI_TEMP_CURRENT, - &sensor_test_val) != AMDSMI_STATUS_SUCCESS) { + &sensor_test_val) != AMDSMI_STATUS_SUCCESS) continue; // Skip this specific sensor if it doesn't work - } // Register metrics for this working sensor, testing each metric individually for (size_t mi = 0; mi < sizeof(temp_metrics) / sizeof(temp_metrics[0]); ++mi) { // Bounds check to prevent buffer overflow - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; // Too many events - } int64_t metric_val = 0; // <= init if (amdsmi_get_temp_metric_p(device_handles[d], temp_sensors[si], temp_metrics[mi], &metric_val) - != AMDSMI_STATUS_SUCCESS) { + != AMDSMI_STATUS_SUCCESS) continue; /* skip this specific metric if not supported */ - } snprintf(name_buf, sizeof(name_buf), "%s:device=%d:sensor=%d", temp_metric_names[mi], d, (int)temp_sensors[si]); @@ -1658,135 +1593,117 @@ static int init_event_table(void) { temp_metric_names[mi], (int)temp_sensors[si]); if (add_event(&idx, name_buf, descr_buf, d, temp_metrics[mi], temp_sensors[si], PAPI_MODE_READ, - access_amdsmi_temp_metric) != PAPI_OK) { + access_amdsmi_temp_metric) != PAPI_OK) return PAPI_ENOMEM; - } } } } /* Fan metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle - if (!device_handles || !device_handles[d]) { + if (!device_handles || !device_handles[d]) continue; - } /* Register Fan RPM if available */ int64_t dummy_rpm; if (amdsmi_get_gpu_fan_rpms_p && amdsmi_get_gpu_fan_rpms_p(device_handles[d], 0, &dummy_rpm) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "fan_rpms:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed in RPM", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_fan_rpms) != PAPI_OK) { + access_amdsmi_fan_rpms) != PAPI_OK) return PAPI_ENOMEM; - } } /* Register Fan SPEED if available */ int64_t dummy_speed; if (amdsmi_get_gpu_fan_speed_p && amdsmi_get_gpu_fan_speed_p(device_handles[d], 0, &dummy_speed) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "fan_speed:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan speed (0-255 relative)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_fan_speed) != PAPI_OK) { + access_amdsmi_fan_speed) != PAPI_OK) return PAPI_ENOMEM; - } } /* Register Fan Max Speed - always probe directly */ int64_t dummy_max; if (amdsmi_get_gpu_fan_speed_max_p && amdsmi_get_gpu_fan_speed_max_p(device_handles[d], 0, &dummy_max) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "fan_rpms_max:device=%d:sensor=0", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d fan maximum speed in RPM", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_fan_speed_max) != PAPI_OK) { + access_amdsmi_fan_speed_max) != PAPI_OK) return PAPI_ENOMEM; - } } } /* VRAM memory metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle - if (!device_handles || !device_handles[d]) { + if (!device_handles || !device_handles[d]) continue; - } /* total VRAM bytes - test directly */ uint64_t dummy_total; if (amdsmi_get_total_memory_p && amdsmi_get_total_memory_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_total) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "mem_total_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM memory (bytes)", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_MEM_TYPE_VRAM, 0, - PAPI_MODE_READ, access_amdsmi_mem_total) != PAPI_OK) { + PAPI_MODE_READ, access_amdsmi_mem_total) != PAPI_OK) return PAPI_ENOMEM; - } } /* used VRAM bytes - test directly */ uint64_t dummy_usage; if (amdsmi_get_memory_usage_p && amdsmi_get_memory_usage_p(device_handles[d], AMDSMI_MEM_TYPE_VRAM, &dummy_usage) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "mem_usage_VRAM:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM memory usage (bytes)", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_MEM_TYPE_VRAM, 0, - PAPI_MODE_READ, access_amdsmi_mem_usage) != PAPI_OK) { + PAPI_MODE_READ, access_amdsmi_mem_usage) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_get_gpu_vram_usage_p) { amdsmi_vram_usage_t vu; if (amdsmi_get_gpu_vram_usage_p(device_handles[d], &vu) == AMDSMI_STATUS_SUCCESS) { - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "vram_total_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d total VRAM (MB)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_usage) != PAPI_OK) { + access_amdsmi_vram_usage) != PAPI_OK) return PAPI_ENOMEM; - } - if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { + if (idx >= MAX_EVENTS_PER_DEVICE * device_count) return PAPI_ENOSUPP; - } snprintf(name_buf, sizeof(name_buf), "vram_used_mb:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d used VRAM (MB)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_vram_usage) != PAPI_OK) { + access_amdsmi_vram_usage) != PAPI_OK) return PAPI_ENOMEM; - } } } } /* GPU power metrics: average power, power cap, and cap range */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle - if (!device_handles || !device_handles[d]) { + if (!device_handles || !device_handles[d]) continue; - } // Register power average event - test directly amdsmi_power_info_t dummy_power; if (amdsmi_get_power_info_p && @@ -1797,9 +1714,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d average power consumption (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_power_average) != PAPI_OK) { + access_amdsmi_power_average) != PAPI_OK) return PAPI_ENOMEM; - } } // Register power cap events (if available) - test directly amdsmi_power_cap_info_t dummy_cap_info; @@ -1812,45 +1728,40 @@ static int init_event_table(void) { "Device %d current power cap (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ | PAPI_MODE_WRITE, - access_amdsmi_power_cap) != PAPI_OK) { + access_amdsmi_power_cap) != PAPI_OK) return PAPI_ENOMEM; - } // Minimum allowed power cap CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_range_min:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d minimum allowed power cap (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_power_cap_range) != PAPI_OK) { + access_amdsmi_power_cap_range) != PAPI_OK) return PAPI_ENOMEM; - } // Maximum allowed power cap CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_range_max:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d maximum allowed power cap (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_power_cap_range) != PAPI_OK) { + access_amdsmi_power_cap_range) != PAPI_OK) return PAPI_ENOMEM; - } // Default power cap CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_default:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d default power cap (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_power_cap_range) != PAPI_OK) { + access_amdsmi_power_cap_range) != PAPI_OK) return PAPI_ENOMEM; - } // DPM power cap CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_dpm:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DPM power cap (MHz)", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_power_cap_range) != PAPI_OK) { + access_amdsmi_power_cap_range) != PAPI_OK) return PAPI_ENOMEM; - } } } /* PCIe throughput and replay counter metrics */ @@ -1865,26 +1776,23 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes sent per second", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_pci_throughput) != PAPI_OK) { + access_amdsmi_pci_throughput) != PAPI_OK) return PAPI_ENOMEM; - } /* bytes received per second */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_received:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe bytes received per second", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_pci_throughput) != PAPI_OK) { + access_amdsmi_pci_throughput) != PAPI_OK) return PAPI_ENOMEM; - } /* max packet size */ snprintf(name_buf, sizeof(name_buf), "pci_throughput_max_packet:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe max packet size (bytes)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_pci_throughput) != PAPI_OK) { + access_amdsmi_pci_throughput) != PAPI_OK) return PAPI_ENOMEM; - } } uint64_t replay = 0; if (amdsmi_get_gpu_pci_replay_counter_p(device_handles[d], &replay) == @@ -1893,9 +1801,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay (NAK) counter", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_pci_replay_counter) != PAPI_OK) { + access_amdsmi_pci_replay_counter) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_get_gpu_pci_bandwidth_p) { @@ -1908,27 +1815,24 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported PCIe transfer rates", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_pci_bandwidth) != PAPI_OK) { + access_amdsmi_pci_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pci_bandwidth_current:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe transfer rate (MT/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_pci_bandwidth) != PAPI_OK) { + access_amdsmi_pci_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pci_bandwidth_lanes:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current PCIe lane count", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_pci_bandwidth) != PAPI_OK) { + access_amdsmi_pci_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -1936,9 +1840,8 @@ static int init_event_table(void) { /* GPU engine utilization metrics - test each device individually */ for (int d = 0; d < gpu_count; ++d) { // Safety check for device handle - if (!device_handles || !device_handles[d]) { + if (!device_handles || !device_handles[d]) continue; - } // Register GFX activity event - test directly amdsmi_engine_usage_t dummy_usage; if (amdsmi_get_gpu_activity_p && @@ -1948,23 +1851,20 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GFX engine activity (%%)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_gpu_activity) != PAPI_OK) { + access_amdsmi_gpu_activity) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "umc_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UMC engine activity (%%)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_gpu_activity) != PAPI_OK) { + access_amdsmi_gpu_activity) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "mm_activity:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d MM engine activity (%%)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_gpu_activity) != PAPI_OK) { + access_amdsmi_gpu_activity) != PAPI_OK) return PAPI_ENOMEM; - } } } /* GPU utilization counters */ @@ -1982,9 +1882,8 @@ static int init_event_table(void) { "Device %d coarse grain GFX activity counter", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_COARSE_GRAIN_GFX_ACTIVITY, 0, PAPI_MODE_READ, - access_amdsmi_utilization_count) != PAPI_OK) { + access_amdsmi_utilization_count) != PAPI_OK) return PAPI_ENOMEM; - } } uc.type = AMDSMI_COARSE_GRAIN_MEM_ACTIVITY; if (amdsmi_get_utilization_count_p(device_handles[d], &uc, 1, &ts) == @@ -1996,9 +1895,8 @@ static int init_event_table(void) { "Device %d coarse grain memory activity counter", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_COARSE_GRAIN_MEM_ACTIVITY, 0, PAPI_MODE_READ, - access_amdsmi_utilization_count) != PAPI_OK) { + access_amdsmi_utilization_count) != PAPI_OK) return PAPI_ENOMEM; - } } uc.type = AMDSMI_COARSE_DECODER_ACTIVITY; if (amdsmi_get_utilization_count_p(device_handles[d], &uc, 1, &ts) == @@ -2010,9 +1908,8 @@ static int init_event_table(void) { "Device %d coarse grain decoder activity counter", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_COARSE_DECODER_ACTIVITY, 0, PAPI_MODE_READ, - access_amdsmi_utilization_count) != PAPI_OK) { + access_amdsmi_utilization_count) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2025,9 +1922,8 @@ static int init_event_table(void) { amdsmi_frequencies_t f; if (amdsmi_get_clk_freq_p(device_handles[d], clk_types[t], &f) != AMDSMI_STATUS_SUCCESS || - f.num_supported == 0) { + f.num_supported == 0) continue; - } // Number of supported frequencies for this clock domain snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_count:device=%d", clk_names[t], d); @@ -2035,18 +1931,16 @@ static int init_event_table(void) { "Device %d number of supported %s clock frequencies", d, clk_names[t]); if (add_event(&idx, name_buf, descr_buf, d, t, 0, PAPI_MODE_READ, - access_amdsmi_clk_freq) != PAPI_OK) { + access_amdsmi_clk_freq) != PAPI_OK) return PAPI_ENOMEM; - } // Current clock frequency for this domain snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_current:device=%d", clk_names[t], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current %s clock frequency (MHz)", d, clk_names[t]); if (add_event(&idx, name_buf, descr_buf, d, t, 1, PAPI_MODE_READ, - access_amdsmi_clk_freq) != PAPI_OK) { + access_amdsmi_clk_freq) != PAPI_OK) return PAPI_ENOMEM; - } // Supported frequency levels for this domain for (uint32_t fi = 0; fi < f.num_supported; ++fi) { snprintf(name_buf, sizeof(name_buf), "clk_freq_%s_level_%u:device=%d", @@ -2055,9 +1949,8 @@ static int init_event_table(void) { "Device %d supported %s clock frequency level %u (MHz)", d, clk_names[t], fi); if (add_event(&idx, name_buf, descr_buf, d, t, fi + 2, PAPI_MODE_READ, - access_amdsmi_clk_freq) != PAPI_OK) { + access_amdsmi_clk_freq) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2083,9 +1976,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s", d, clk_names[t], field_descr[f]); if (add_event(&idx, name_buf, descr_buf, d, t, f, PAPI_MODE_READ, - access_amdsmi_clock_info) != PAPI_OK) { + access_amdsmi_clock_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2102,9 +1994,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU identifier (Device ID)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } // GPU Revision if (amdsmi_get_gpu_revision_p(device_handles[d], &id16) == @@ -2112,9 +2003,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "gpu_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU revision ID", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } // GPU Subsystem ID if (amdsmi_get_gpu_subsystem_id_p(device_handles[d], &id16) == @@ -2122,9 +2012,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "gpu_subsystem_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU subsystem ID", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } // GPU BDF ID if (amdsmi_get_gpu_bdf_id_p(device_handles[d], &id64) == @@ -2133,9 +2022,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU PCI BDF identifier", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } // GPU device BDF components if (amdsmi_get_gpu_device_bdf_p) { @@ -2154,9 +2042,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d %s", d, bdf_descr[v]); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_device_bdf) != PAPI_OK) { + access_amdsmi_device_bdf) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2174,9 +2061,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "%s:device=%d", xinames[v], d); snprintf(descr_buf, sizeof(descr_buf), xidescr[v], d); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_xgmi_info) != PAPI_OK) { + access_amdsmi_xgmi_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2194,9 +2080,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "%s:device=%d", knames[v], d); snprintf(descr_buf, sizeof(descr_buf), kdescr[v], d); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_kfd_info) != PAPI_OK) { + access_amdsmi_kfd_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2210,9 +2095,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node number", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_topo_numa) != PAPI_OK) { + access_amdsmi_topo_numa) != PAPI_OK) return PAPI_ENOMEM; - } } } // GPU Virtualization Mode @@ -2226,9 +2110,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d GPU virtualization mode", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } #endif // GPU NUMA Node @@ -2237,9 +2120,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "numa_node:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d NUMA node", d); if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, - access_amdsmi_gpu_info) != PAPI_OK) { + access_amdsmi_gpu_info) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_get_gpu_process_list_p) { @@ -2263,9 +2145,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d process %u %s", d, p, pmetric_descr[v]); if (add_event(&idx, name_buf, descr_buf, d, v, p, PAPI_MODE_READ, - access_amdsmi_process_info) != PAPI_OK) { + access_amdsmi_process_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2279,9 +2160,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d process isolation status", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_process_isolation) != PAPI_OK) { + access_amdsmi_process_isolation) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2292,9 +2172,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "xcd_counter:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d XCD counter", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_xcd_counter) != PAPI_OK) { + access_amdsmi_xcd_counter) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2312,18 +2191,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Min XGMI bandwidth from device %d to %d (MB/s)", d, r); if (add_event(&idx, name_buf, descr_buf, d, 0, r, PAPI_MODE_READ, - access_amdsmi_xgmi_bandwidth) != PAPI_OK) { + access_amdsmi_xgmi_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "xgmi_max_bandwidth:src=%d:dst=%d", d, r); snprintf(descr_buf, sizeof(descr_buf), "Max XGMI bandwidth from device %d to %d (MB/s)", d, r); if (add_event(&idx, name_buf, descr_buf, d, 1, r, PAPI_MODE_READ, - access_amdsmi_xgmi_bandwidth) != PAPI_OK) { + access_amdsmi_xgmi_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2365,9 +2242,8 @@ static int init_event_table(void) { "Device %d XGMI %s on link %d", d, xgmi_desc[m].suffix, link); if (add_counter_event(&idx, name_buf, descr_buf, d, - xgmi_desc[m].type[link], link) != PAPI_OK) { + xgmi_desc[m].type[link], link) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2389,9 +2265,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d firmware id %u version", d, fid); if (add_event(&idx, name_buf, descr_buf, d, fid, 0, PAPI_MODE_READ, - access_amdsmi_fw_version) != PAPI_OK) { + access_amdsmi_fw_version) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2405,9 +2280,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d board serial number (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_board_serial_hash) != PAPI_OK) { + access_amdsmi_board_serial_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2423,9 +2297,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM max bandwidth (GB/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_vram_max_bandwidth) != PAPI_OK) { + access_amdsmi_vram_max_bandwidth) != PAPI_OK) return PAPI_ENOMEM; - } } } #endif @@ -2441,9 +2314,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d reserved memory pages", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_memory_reserved_pages) != PAPI_OK) { + access_amdsmi_memory_reserved_pages) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2456,9 +2328,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page count", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_bad_page_count) != PAPI_OK) { + access_amdsmi_bad_page_count) != PAPI_OK) return PAPI_ENOMEM; - } for (uint32_t p = 0; p < nump; ++p) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -2466,27 +2337,24 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u address", d, p); if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, - access_amdsmi_bad_page_record) != PAPI_OK) { + access_amdsmi_bad_page_record) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_size:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u size", d, p); if (add_event(&idx, name_buf, descr_buf, d, 1, p, PAPI_MODE_READ, - access_amdsmi_bad_page_record) != PAPI_OK) { + access_amdsmi_bad_page_record) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "bad_page_status:device=%d:page=%u", d, p); snprintf(descr_buf, sizeof(descr_buf), "Device %d retired page %u status", d, p); if (add_event(&idx, name_buf, descr_buf, d, 2, p, PAPI_MODE_READ, - access_amdsmi_bad_page_record) != PAPI_OK) { + access_amdsmi_bad_page_record) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2500,9 +2368,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d bad page threshold", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_bad_page_threshold) != PAPI_OK) { + access_amdsmi_bad_page_threshold) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2521,9 +2388,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u current socket power (W)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 0, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } /* Register average socket power in Watts */ CHECK_EVENT_IDX(idx); @@ -2532,9 +2398,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u average socket power (W)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 1, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } /* Register socket power in microwatts */ #if AMDSMI_LIB_VERSION_MAJOR >= 25 @@ -2545,9 +2410,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u socket power (uW)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 2, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } } #endif @@ -2558,9 +2422,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u GFX voltage (mV)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 3, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } /* Register SOC voltage */ CHECK_EVENT_IDX(idx); @@ -2569,9 +2432,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u SOC voltage (mV)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 4, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } /* Register MEM voltage */ CHECK_EVENT_IDX(idx); @@ -2580,9 +2442,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u MEM voltage (mV)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 5, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } /* Register power limit */ CHECK_EVENT_IDX(idx); @@ -2591,9 +2452,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d power sensor %u power limit (W)", d, s); if (add_event(&idx, name_buf, descr_buf, d, 6, s, PAPI_MODE_READ, - access_amdsmi_power_sensor) != PAPI_OK) { + access_amdsmi_power_sensor) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2616,9 +2476,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "%s:device=%d", hnames[v], d); snprintf(descr_buf, sizeof(descr_buf), hdescr[v], d); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_metrics_header_info) != PAPI_OK) { + access_amdsmi_metrics_header_info) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2633,9 +2492,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d throttle status", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } /* Register independent throttle status */ CHECK_EVENT_IDX(idx); @@ -2644,9 +2502,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d independent throttle status", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } /* Register PCIe link width */ CHECK_EVENT_IDX(idx); @@ -2654,9 +2511,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link width (lanes)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } /* Register PCIe link speed */ CHECK_EVENT_IDX(idx); @@ -2664,9 +2520,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe link speed (0.1 GT/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } /* Register PCIe bandwidth and replay counters */ CHECK_EVENT_IDX(idx); @@ -2674,18 +2529,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe accumulated bandwidth (GB/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_bandwidth_inst:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe instantaneous bandwidth (GB/s)", d); if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -2693,18 +2546,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe L0->recovery count", d); if (add_event(&idx, name_buf, descr_buf, d, 6, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pcie_replay_count_acc:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay count", d); if (add_event(&idx, name_buf, descr_buf, d, 7, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -2712,9 +2563,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe replay rollover count", d); if (add_event(&idx, name_buf, descr_buf, d, 8, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -2722,9 +2572,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK sent count", d); if (add_event(&idx, name_buf, descr_buf, d, 9, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -2732,9 +2581,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d PCIe NAK received count", d); if (add_event(&idx, name_buf, descr_buf, d, 10, 0, PAPI_MODE_READ, - access_amdsmi_gpu_metrics) != PAPI_OK) { + access_amdsmi_gpu_metrics) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -2747,9 +2595,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d thermal throttle event notifications", d); if (add_event(&idx, name_buf, descr_buf, d, AMDSMI_EVT_NOTIF_THERMAL_THROTTLE, - 0, PAPI_MODE_READ, access_amdsmi_event_notification) != PAPI_OK) { + 0, PAPI_MODE_READ, access_amdsmi_event_notification) != PAPI_OK) return PAPI_ENOMEM; - } } } /* Energy consumption counter */ @@ -2758,54 +2605,47 @@ static int init_event_table(void) { float resolution = 0.0; uint64_t timestamp = 0; if (amdsmi_get_energy_count_p(device_handles[d], &energy, &resolution, - ×tamp) != AMDSMI_STATUS_SUCCESS) { + ×tamp) != AMDSMI_STATUS_SUCCESS) continue; - } snprintf(name_buf, sizeof(name_buf), "energy_consumed:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy consumed (microJoules)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_energy_count) != PAPI_OK) { + access_amdsmi_energy_count) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "energy_resolution:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter resolution (microJoules)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_energy_count) != PAPI_OK) { + access_amdsmi_energy_count) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "energy_timestamp:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d energy counter timestamp (ns)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_energy_count) != PAPI_OK) { + access_amdsmi_energy_count) != PAPI_OK) return PAPI_ENOMEM; - } } /* GPU power profile information */ for (int d = 0; d < gpu_count; ++d) { amdsmi_power_profile_status_t profile_status; if (amdsmi_get_gpu_power_profile_presets_p( - device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) { + device_handles[d], 0, &profile_status) != AMDSMI_STATUS_SUCCESS) continue; - } snprintf(name_buf, sizeof(name_buf), "power_profiles_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of supported power profiles", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_power_profile_status) != PAPI_OK) { + access_amdsmi_power_profile_status) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "power_profile_current:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d current power profile mask", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_power_profile_status) != PAPI_OK) { + access_amdsmi_power_profile_status) != PAPI_OK) return PAPI_ENOMEM; - } } /* GPU violation status metrics */ if (amdsmi_get_violation_status_p) { @@ -2835,9 +2675,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "%s:device=%d", names[v], d); snprintf(descr_buf, sizeof(descr_buf), "Device %d %s", d, descr[v]); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_violation_status) != PAPI_OK) { + access_amdsmi_violation_status) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -2853,9 +2692,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "power:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d power (W)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_socket_power) != PAPI_OK) { + access_amdsmi_cpu_socket_power) != PAPI_OK) return PAPI_ENOMEM; - } } uint64_t sock_energy; if (amdsmi_get_cpu_socket_energy_p(device_handles[dev], &sock_energy) == @@ -2864,9 +2702,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d energy consumed (uJ)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_socket_energy) != PAPI_OK) { + access_amdsmi_cpu_socket_energy) != PAPI_OK) return PAPI_ENOMEM; - } } uint16_t fmax, fmin; if (amdsmi_get_cpu_socket_freq_range_p(device_handles[dev], &fmax, @@ -2875,16 +2712,14 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d maximum frequency (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, - access_amdsmi_cpu_socket_freq_range) != PAPI_OK) { + access_amdsmi_cpu_socket_freq_range) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "freq_min:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d minimum frequency (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_socket_freq_range) != PAPI_OK) { + access_amdsmi_cpu_socket_freq_range) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t cap; amdsmi_status_t st_cap = @@ -2899,18 +2734,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d current power cap (W)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_power_cap) != PAPI_OK) { + access_amdsmi_cpu_power_cap) != PAPI_OK) return PAPI_ENOMEM; - } } if (st_capmax == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "power_cap_max:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d max power cap (W)", s); if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, - access_amdsmi_cpu_power_cap) != PAPI_OK) { + access_amdsmi_cpu_power_cap) != PAPI_OK) return PAPI_ENOMEM; - } } } uint16_t freq; @@ -2923,9 +2756,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d current frequency limit (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_socket_freq_limit) != PAPI_OK) { + access_amdsmi_cpu_socket_freq_limit) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t cclk; if (amdsmi_get_cpu_cclk_limit_p && @@ -2935,9 +2767,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d core clock limit (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_cclk_limit) != PAPI_OK) { + access_amdsmi_cpu_cclk_limit) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t fclk, mclk; if (amdsmi_get_cpu_fclk_mclk_p && @@ -2947,16 +2778,14 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d fclk (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_fclk_mclk) != PAPI_OK) { + access_amdsmi_cpu_fclk_mclk) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "mclk:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d mclk (MHz)", s); if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, - access_amdsmi_cpu_fclk_mclk) != PAPI_OK) { + access_amdsmi_cpu_fclk_mclk) != PAPI_OK) return PAPI_ENOMEM; - } } amdsmi_ddr_bw_metrics_t ddr_bw; if (amdsmi_get_cpu_ddr_bw_p && @@ -2966,24 +2795,21 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d DDR max bandwidth (GB/s)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + access_amdsmi_cpu_ddr_bw) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "ddr_bw_utilized:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DDR utilized bandwidth (GB/s)", s); if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, - access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + access_amdsmi_cpu_ddr_bw) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "ddr_bw_utilized_pct:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DDR bandwidth utilization (pct)", s); if (add_event(&idx, name_buf, descr_buf, dev, 2, 0, PAPI_MODE_READ, - access_amdsmi_cpu_ddr_bw) != PAPI_OK) { + access_amdsmi_cpu_ddr_bw) != PAPI_OK) return PAPI_ENOMEM; - } } amdsmi_hsmp_driver_version_t dver; if (amdsmi_get_cpu_hsmp_driver_version_p && @@ -2994,17 +2820,15 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d HSMP driver major version", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) { + access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "hsmp_driver_minor:socket=%d", s); snprintf(descr_buf, sizeof(descr_buf), "Socket %d HSMP driver minor version", s); if (add_event(&idx, name_buf, descr_buf, dev, 1, 0, PAPI_MODE_READ, - access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) { + access_amdsmi_cpu_hsmp_driver_version) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t proto; if (amdsmi_get_cpu_hsmp_proto_ver_p && @@ -3015,9 +2839,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d HSMP protocol version", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_hsmp_proto_ver) != PAPI_OK) { + access_amdsmi_cpu_hsmp_proto_ver) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t prochot; if (amdsmi_get_cpu_prochot_status_p && @@ -3028,9 +2851,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d PROCHOT status", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_prochot_status) != PAPI_OK) { + access_amdsmi_cpu_prochot_status) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t svi_power; if (amdsmi_get_cpu_pwr_svi_telemetry_all_rails_p && @@ -3041,9 +2863,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d SVI power (all rails, W)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_svi_power) != PAPI_OK) { + access_amdsmi_cpu_svi_power) != PAPI_OK) return PAPI_ENOMEM; - } } amdsmi_smu_fw_version_t fw; if (amdsmi_get_cpu_smu_fw_version_p(device_handles[dev], &fw) == @@ -3052,9 +2873,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d SMU firmware version (encoded)", s); if (add_event(&idx, name_buf, descr_buf, dev, 0, 0, PAPI_MODE_READ, - access_amdsmi_smu_fw_version) != PAPI_OK) { + access_amdsmi_smu_fw_version) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_get_cpu_current_io_bandwidth_p) { const char *links[] = {"P0", "P1", "P2", "P3", "P4"}; @@ -3075,9 +2895,8 @@ static int init_event_table(void) { "Socket %d IO link %s %s bandwidth (MB/s)", s, links[l], bwnames[t]); if (add_event(&idx, name_buf, descr_buf, dev, l, t, PAPI_MODE_READ, - access_amdsmi_cpu_io_bw) != PAPI_OK) { + access_amdsmi_cpu_io_bw) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3101,9 +2920,8 @@ static int init_event_table(void) { "Socket %d XGMI link %s %s bandwidth (MB/s)", s, links[l], bwnames[t]); if (add_event(&idx, name_buf, descr_buf, dev, l, t, PAPI_MODE_READ, - access_amdsmi_cpu_xgmi_bw) != PAPI_OK) { + access_amdsmi_cpu_xgmi_bw) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3119,9 +2937,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d energy (uJ)", s, c); if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, - access_amdsmi_cpu_core_energy) != PAPI_OK) { + access_amdsmi_cpu_core_energy) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t freq; if (amdsmi_get_cpu_core_current_freq_limit_p( @@ -3131,9 +2948,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d frequency limit (MHz)", s, c); if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, - access_amdsmi_cpu_core_freq_limit) != PAPI_OK) { + access_amdsmi_cpu_core_freq_limit) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t boost; if (amdsmi_get_cpu_core_boostlimit_p(cpu_core_handles[s][c], &boost) == @@ -3143,9 +2959,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d Core %d boost limit (MHz)", s, c); if (add_event(&idx, name_buf, descr_buf, dev, 0, c, PAPI_MODE_READ, - access_amdsmi_cpu_core_boostlimit) != PAPI_OK) { + access_amdsmi_cpu_core_boostlimit) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3165,18 +2980,16 @@ static int init_event_table(void) { device_handles[dev], dimm, &range_info); if (st_temp != AMDSMI_STATUS_SUCCESS && st_power != AMDSMI_STATUS_SUCCESS && - st_range != AMDSMI_STATUS_SUCCESS) { + st_range != AMDSMI_STATUS_SUCCESS) continue; - } if (st_temp == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "dimm_temp:socket=%d:dimm=%d", s, dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature (C)", s, dimm); if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, - access_amdsmi_dimm_temp) != PAPI_OK) { + access_amdsmi_dimm_temp) != PAPI_OK) return PAPI_ENOMEM; - } } if (st_power == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "dimm_power:socket=%d:dimm=%d", @@ -3184,9 +2997,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d power (mW)", s, dimm); if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, - access_amdsmi_dimm_power) != PAPI_OK) { + access_amdsmi_dimm_power) != PAPI_OK) return PAPI_ENOMEM; - } } if (st_range == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), @@ -3194,17 +3006,15 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d temperature range", s, dimm); if (add_event(&idx, name_buf, descr_buf, dev, 0, dimm, PAPI_MODE_READ, - access_amdsmi_dimm_range_refresh) != PAPI_OK) { + access_amdsmi_dimm_range_refresh) != PAPI_OK) return PAPI_ENOMEM; - } snprintf(name_buf, sizeof(name_buf), "dimm_refresh_rate:socket=%d:dimm=%d", s, dimm); snprintf(descr_buf, sizeof(descr_buf), "Socket %d DIMM %d refresh rate mode", s, dimm); if (add_event(&idx, name_buf, descr_buf, dev, 1, dimm, PAPI_MODE_READ, - access_amdsmi_dimm_range_refresh) != PAPI_OK) { + access_amdsmi_dimm_range_refresh) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3214,27 +3024,24 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "threads_per_core"); snprintf(descr_buf, sizeof(descr_buf), "SMT threads per core"); if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, - access_amdsmi_threads_per_core) != PAPI_OK) { + access_amdsmi_threads_per_core) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t family; if (amdsmi_get_cpu_family_p(&family) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "cpu_family"); snprintf(descr_buf, sizeof(descr_buf), "CPU family ID"); if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_family) != PAPI_OK) { + access_amdsmi_cpu_family) != PAPI_OK) return PAPI_ENOMEM; - } } uint32_t model; if (amdsmi_get_cpu_model_p(&model) == AMDSMI_STATUS_SUCCESS) { snprintf(name_buf, sizeof(name_buf), "cpu_model"); snprintf(descr_buf, sizeof(descr_buf), "CPU model ID"); if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, - access_amdsmi_cpu_model) != PAPI_OK) { + access_amdsmi_cpu_model) != PAPI_OK) return PAPI_ENOMEM; - } } } #endif @@ -3248,24 +3055,21 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "lib_version_major"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library major version"); if (add_event(&idx, name_buf, descr_buf, -1, 0, 0, PAPI_MODE_READ, - access_amdsmi_lib_version) != PAPI_OK) { + access_amdsmi_lib_version) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_minor"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library minor version"); if (add_event(&idx, name_buf, descr_buf, -1, 1, 0, PAPI_MODE_READ, - access_amdsmi_lib_version) != PAPI_OK) { + access_amdsmi_lib_version) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "lib_version_release"); snprintf(descr_buf, sizeof(descr_buf), "AMD SMI library release/patch version"); if (add_event(&idx, name_buf, descr_buf, -1, 2, 0, PAPI_MODE_READ, - access_amdsmi_lib_version) != PAPI_OK) { + access_amdsmi_lib_version) != PAPI_OK) return PAPI_ENOMEM; - } } } for (int d = 0; d < gpu_count; ++d) { @@ -3286,16 +3090,14 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID (djb2 64-bit hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_uuid_hash) != PAPI_OK) { + access_amdsmi_uuid_hash) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "uuid_length:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d UUID length", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_uuid_hash) != PAPI_OK) { + access_amdsmi_uuid_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } /* Vendor / VRAM vendor / Subsystem name (hash) */ @@ -3307,9 +3109,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "vendor_name_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d vendor name (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_gpu_string_hash) != PAPI_OK) { + access_amdsmi_gpu_string_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -3322,9 +3123,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "vram_vendor_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d VRAM vendor (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_gpu_string_hash) != PAPI_OK) { + access_amdsmi_gpu_string_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -3337,9 +3137,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d subsystem name (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_gpu_string_hash) != PAPI_OK) { + access_amdsmi_gpu_string_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } @@ -3353,30 +3152,26 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "enum_drm_render:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM render node", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_enumeration_info) != PAPI_OK) { + access_amdsmi_enumeration_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_drm_card:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d DRM card index", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_enumeration_info) != PAPI_OK) { + access_amdsmi_enumeration_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hsa_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HSA ID", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_enumeration_info) != PAPI_OK) { + access_amdsmi_enumeration_info) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "enum_hip_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d HIP ID", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_enumeration_info) != PAPI_OK) { + access_amdsmi_enumeration_info) != PAPI_OK) return PAPI_ENOMEM; - } } } #endif @@ -3389,17 +3184,15 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "asic_vendor_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC vendor id", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_device_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC device id", d); if (add_event(&idx, name_buf, descr_buf, d, 1, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), @@ -3407,34 +3200,30 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem vendor id", d); if (add_event(&idx, name_buf, descr_buf, d, 2, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_subsystem_id:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC subsystem id", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "asic_revision:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d ASIC revision id", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "compute_units:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of compute units", d); if (add_event(&idx, name_buf, descr_buf, d, 5, 0, PAPI_MODE_READ, - access_amdsmi_asic_info) != PAPI_OK) { + access_amdsmi_asic_info) != PAPI_OK) return PAPI_ENOSUPP; - } } } if (amdsmi_get_gpu_compute_partition_p) { @@ -3448,9 +3237,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d compute partition (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_compute_partition_hash) != PAPI_OK) { + access_amdsmi_compute_partition_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } if (amdsmi_get_gpu_memory_partition_p) { @@ -3464,9 +3252,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_hash) != PAPI_OK) { + access_amdsmi_memory_partition_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } /* @@ -3487,9 +3274,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "%s:device=%d", mpc_names[v], d); snprintf(descr_buf, sizeof(descr_buf), mpc_descr[v], d); if (add_event(&idx, name_buf, descr_buf, d, v, 0, PAPI_MODE_READ, - access_amdsmi_memory_partition_config) != PAPI_OK) { + access_amdsmi_memory_partition_config) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3506,9 +3292,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "accelerator_num_partitions:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d accelerator partition count", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_accelerator_num_partitions) != PAPI_OK) { + access_amdsmi_accelerator_num_partitions) != PAPI_OK) return PAPI_ENOMEM; - } } } */ @@ -3522,16 +3307,14 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d driver name (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 3, 0, PAPI_MODE_READ, - access_amdsmi_gpu_string_hash) != PAPI_OK) { + access_amdsmi_gpu_string_hash) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "driver_date_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d driver date (hash)", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, - access_amdsmi_gpu_string_hash) != PAPI_OK) { + access_amdsmi_gpu_string_hash) != PAPI_OK) return PAPI_ENOMEM; - } } } /* VBIOS info (strings hashed) */ @@ -3570,9 +3353,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d %s %s", d, type_names[ti], mdescr[v]); if (add_event(&idx, name_buf, descr_buf, d, v, sv, PAPI_MODE_READ, - access_amdsmi_link_metrics) != PAPI_OK) { + access_amdsmi_link_metrics) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3592,9 +3374,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI link %u status", d, li); if (add_event(&idx, name_buf, descr_buf, d, 0, li, PAPI_MODE_READ, - access_amdsmi_xgmi_link_status) != PAPI_OK) { + access_amdsmi_xgmi_link_status) != PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3607,9 +3388,8 @@ static int init_event_table(void) { snprintf(name_buf, sizeof(name_buf), "xgmi_error_status:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d XGMI error status", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, - access_amdsmi_xgmi_error_status) != PAPI_OK) { + access_amdsmi_xgmi_error_status) != PAPI_OK) return PAPI_ENOMEM; - } } } if (amdsmi_get_link_topology_nearest_p) { @@ -3628,9 +3408,8 @@ static int init_event_table(void) { "Device %d %s nearest GPU count", d, lt_names[ti]); if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)lt_types[ti], 0, PAPI_MODE_READ, access_amdsmi_link_topology_nearest) != - PAPI_OK) { + PAPI_OK) return PAPI_ENOMEM; - } } } } @@ -3644,9 +3423,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Link weight between device %d and %d", d, p); if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, - access_amdsmi_link_weight) != PAPI_OK) { + access_amdsmi_link_weight) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_topo_get_link_type_p) { CHECK_EVENT_IDX(idx); @@ -3655,18 +3433,16 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Hops between device %d and %d", d, p); if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, - access_amdsmi_link_type) != PAPI_OK) { + access_amdsmi_link_type) != PAPI_OK) return PAPI_ENOMEM; - } CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "link_type:device=%d,peer=%d", d, p); snprintf(descr_buf, sizeof(descr_buf), "IO link type between device %d and %d", d, p); if (add_event(&idx, name_buf, descr_buf, d, 1, p, PAPI_MODE_READ, - access_amdsmi_link_type) != PAPI_OK) { + access_amdsmi_link_type) != PAPI_OK) return PAPI_ENOMEM; - } } if (amdsmi_topo_get_p2p_status_p) { const char *p2p_names[] = {"p2p_type", "p2p_coherent", @@ -3683,9 +3459,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "Device %d vs %d %s", d, p, p2p_desc[v]); if (add_event(&idx, name_buf, descr_buf, d, v, p, PAPI_MODE_READ, - access_amdsmi_p2p_status) != PAPI_OK) { + access_amdsmi_p2p_status) != PAPI_OK) return PAPI_ENOMEM; - } } } if (amdsmi_is_P2P_accessible_p) { @@ -3695,9 +3470,8 @@ static int init_event_table(void) { snprintf(descr_buf, sizeof(descr_buf), "P2P accessibility between device %d and %d", d, p); if (add_event(&idx, name_buf, descr_buf, d, 0, p, PAPI_MODE_READ, - access_amdsmi_p2p_accessible) != PAPI_OK) { + access_amdsmi_p2p_accessible) != PAPI_OK) return PAPI_ENOMEM; - } } } } From ae78805697a791fb96c3be00f93ee7dbb2c00abb Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 11 Sep 2025 02:43:02 -0400 Subject: [PATCH 105/147] Use global lock for AMD SMI device mask --- src/components/amd_smi/amds.c | 3 --- src/components/amd_smi/amds_ctx.c | 9 +++++++++ src/components/amd_smi/amds_priv.h | 2 -- src/components/amd_smi/linux-amd-smi.c | 3 ++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 5eed27489..1737c69b6 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -12,7 +12,6 @@ #include #define MAX_EVENTS_PER_DEVICE 1024 -static unsigned int _amd_smi_lock; // Pointers to AMD SMI library functions (dynamically loaded) #include "amds_funcs.h" #define DEFINE_AMDSMI(name, ret, args) ret(*name) args; @@ -43,8 +42,6 @@ static native_event_table_t ntv_table; static native_event_table_t *ntv_table_p = NULL; /* Internal state accessors */ -unsigned int amds_get_lock(void) { return _amd_smi_lock; } -void amds_set_lock(unsigned int lock) { _amd_smi_lock = lock; } int32_t amds_get_device_count(void) { return device_count; } amdsmi_processor_handle *amds_get_device_handles(void) { return device_handles; } int32_t amds_get_gpu_count(void) { return gpu_count; } diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 89125050f..e8a65f61b 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -2,6 +2,9 @@ #include "amds_priv.h" #include "papi.h" #include "papi_memory.h" +#include "papi_internal.h" + +unsigned int _amd_smi_lock; static int32_t device_mask = 0; static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { @@ -12,19 +15,25 @@ static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bit continue; mask_acq |= (1 << dev_id); } + _papi_hwi_lock(_amd_smi_lock); if (mask_acq & device_mask) { + _papi_hwi_unlock(_amd_smi_lock); return PAPI_ECNFLCT; // conflict: device already in use } device_mask |= mask_acq; + _papi_hwi_unlock(_amd_smi_lock); *bitmask = mask_acq; return PAPI_OK; } static int release_devices(int32_t *bitmask) { int32_t mask_rel = *bitmask; + _papi_hwi_lock(_amd_smi_lock); if ((mask_rel & device_mask) != mask_rel) { + _papi_hwi_unlock(_amd_smi_lock); return PAPI_EMISC; } device_mask ^= mask_rel; + _papi_hwi_unlock(_amd_smi_lock); *bitmask = 0; return PAPI_OK; } diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 507ace005..56516e472 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -48,8 +48,6 @@ amdsmi_processor_handle **amds_get_cpu_core_handles(void); uint32_t *amds_get_cores_per_socket(void); void *amds_get_htable(void); native_event_table_t *amds_get_ntv_table(void); -unsigned int amds_get_lock(void); -void amds_set_lock(unsigned int lock); uint32_t amds_get_lib_major(void); #ifndef AMDS_PRIV_IMPL diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index a2393a2d4..996000003 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -17,6 +17,7 @@ #include "extras.h" #include "amds.h" #include "amds_priv.h" +extern unsigned int _amd_smi_lock; typedef struct { int initialized; @@ -54,7 +55,7 @@ static int _amd_smi_init_component(int cidx) { _amd_smi_vector.cmp_info.num_native_events = -1; _amd_smi_vector.cmp_info.num_cntrs = -1; _amd_smi_vector.cmp_info.num_mpx_cntrs = -1; - amds_set_lock(PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx); + _amd_smi_lock = PAPI_NUM_LOCK + NUM_INNER_LOCK + cidx; sprintf(_amd_smi_vector.cmp_info.disabled_reason, "Not initialized. Access an AMD SMI event to initialize."); From 98a7f90f7687661b216f4d77f7a677d04ad6bcaa Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Thu, 11 Sep 2025 02:43:45 -0400 Subject: [PATCH 106/147] Check device handles in AMD SMI CPU metrics --- src/components/amd_smi/amds_accessors.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 9629c970a..8b45ae41d 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1432,7 +1432,8 @@ int access_amdsmi_cpu_power_cap(int mode, void *arg) { } int access_amdsmi_cpu_core_energy(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1452,7 +1453,8 @@ int access_amdsmi_cpu_core_energy(int mode, void *arg) { } int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1472,7 +1474,8 @@ int access_amdsmi_cpu_core_freq_limit(int mode, void *arg) { } int access_amdsmi_cpu_core_boostlimit(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1673,7 +1676,8 @@ int access_amdsmi_cpu_svi_power(int mode, void *arg) { } int access_amdsmi_dimm_temp(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1689,7 +1693,8 @@ int access_amdsmi_dimm_temp(int mode, void *arg) { } int access_amdsmi_dimm_power(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1705,7 +1710,8 @@ int access_amdsmi_dimm_power(int mode, void *arg) { } int access_amdsmi_dimm_range_refresh(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { @@ -1765,7 +1771,8 @@ int access_amdsmi_cpu_model(int mode, void *arg) { } int access_amdsmi_smu_fw_version(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles) { + if (event->device < 0 || event->device >= device_count || !device_handles || + !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) { From 7354fc8fa84f34d16760fee3feca1cefec68bb96 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sat, 13 Sep 2025 22:50:41 -0700 Subject: [PATCH 107/147] memory amd smi gemm --- src/components/amd_smi/tests/amdsmi_gemm.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.cpp index 7045efb4e..d1788740e 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.cpp +++ b/src/components/amd_smi/tests/amdsmi_gemm.cpp @@ -240,19 +240,21 @@ static int real_main(const HarnessOpts& opts) { HIP_CHECK_CLEANUP(hipHostFree(h_B)); HIP_CHECK_CLEANUP(hipHostFree(h_C)); - long long dummy=0; - statusFlag = PAPI_stop(EventSet, &dummy); + long long stop_values[5] = {0}; // five events were added + statusFlag = PAPI_stop(EventSet, stop_values); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_stop: %s\n", PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_cleanup_eventset(EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_cleanup_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_destroy_eventset(&EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_destroy_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } - + + HIP_CHECK_CLEANUP(hipDeviceReset()); // optional but reduces “still reachable” from the HIP runtime + PAPI_shutdown(); // triggers component cleanup + AMD SMI shutdown return 0; } -int main(int argc, char *argv[]) { - harness_accept_tests_quiet(&argc, argv); +int main(int argc, char *argv[]) { + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); int rc = real_main(opts); return eval_result(opts, rc); From db809af62f12de6402eab5baf450851327d9e21a Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sun, 14 Sep 2025 02:43:09 -0400 Subject: [PATCH 108/147] docs: clarify stderr redirection comment --- src/components/amd_smi/amds.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 1737c69b6..f80333862 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -7,9 +7,11 @@ #include "papi_memory.h" #include #include +#include #include #include #include +#include #define MAX_EVENTS_PER_DEVICE 1024 // Pointers to AMD SMI library functions (dynamically loaded) @@ -61,6 +63,28 @@ uint32_t amds_get_lib_major(void) { return amdsmi_lib_major; } return PAPI_ENOSUPP; \ } \ } while (0) +// Temporarily redirects stderr to /dev/null; returns dup of original fd (or -1 on failure) +static int silence_stderr_begin(void) { + int devnull = open("/dev/null", O_WRONLY); + if (devnull < 0) + return -1; + int saved = dup(STDERR_FILENO); + if (saved < 0) { + close(devnull); + return -1; + } + (void)dup2(devnull, STDERR_FILENO); + close(devnull); + return saved; +} + +// Restores stderr using the fd returned by silence_stderr_begin() +static void silence_stderr_end(int saved_fd) { + if (saved_fd >= 0) { + (void)dup2(saved_fd, STDERR_FILENO); + close(saved_fd); + } +} // Simple open/close/start/stop functions (no special handling needed for most events) static int open_simple(native_event_t *event) { (void)event; @@ -1037,8 +1061,10 @@ static int init_event_table(void) { amdsmi_name_value_t *metrics = NULL; uint32_t mcount = 0; + int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[d], &metrics, &mcount); + silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count && metrics) @@ -1519,8 +1545,10 @@ static int init_event_table(void) { amdsmi_name_value_t *reg_metrics = NULL; uint32_t num_metrics = 0; + int saved_stderr = silence_stderr_begin(); amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p( device_handles[d], reg_types[rt], ®_metrics, &num_metrics); + silence_stderr_end(saved_stderr); if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { From 4dd472ea0e541a6b6b3f01d6054afbcbfef235fe Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sun, 14 Sep 2025 03:40:01 -0400 Subject: [PATCH 109/147] Align amd_smi runtest script with PAPI test verbosity --- .../amd_smi/tests/amdsmi_basics.cpp | 2 +- .../amd_smi/tests/amdsmi_ctx_conflict.cpp | 4 +- src/components/amd_smi/tests/amdsmi_gemm.cpp | 8 ++-- src/components/amd_smi/tests/runtest.sh | 39 ++++++++++--------- src/components/amd_smi/tests/test_harness.hpp | 22 +++++++---- 5 files changed, 41 insertions(+), 34 deletions(-) mode change 100644 => 100755 src/components/amd_smi/tests/runtest.sh diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 5a9b4c75b..21df331d9 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -2,7 +2,7 @@ // amdsmi_basics.cpp (harness-integrated) // Enumerates every native AMD-SMI event exposed through PAPI and measures // them one at a time. Minimal changes from your original: now uses the -// test_harness.hpp to support --print and final PASS/FAIL lines. +// test_harness.hpp for consistent output and final PASS/FAIL lines. //----------------------------------------------------------------------------- #include diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp index a0a78d8f8..1983c2418 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp @@ -83,8 +83,8 @@ int main(int argc, char** argv) { harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); - // Optional override of the event: ./amdsmi_ctx_conflict "" [--print ...] - if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; + // Optional override of the event: ./amdsmi_ctx_conflict "" + if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; const char* root = std::getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.cpp index d1788740e..b996dbc40 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.cpp +++ b/src/components/amd_smi/tests/amdsmi_gemm.cpp @@ -1,5 +1,5 @@ // gemm.cpp ? harness-integrated, keeps your HIP threading/monitoring logic, -// removes CSV output (prints readings only when --print), default PASS/FAIL. +// removes CSV output (prints readings unless suppressed), default PASS/FAIL. #include #include #include "papi.h" @@ -139,7 +139,7 @@ static int real_main(const HarnessOpts& opts) { SKIP("HIP device 1 not available"); } - // Set device 1 and show properties (only in --print mode) + // Set device 1 and show properties (only when output is enabled) HIP_CHECK(hipSetDevice(1)); hipDeviceProp_t deviceProp; HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); @@ -195,7 +195,7 @@ static int real_main(const HarnessOpts& opts) { statusFlag = PAPI_start(EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_start: %s\n", PAPI_strerror(statusFlag)); return 1; } - // Launch monitor thread (prints only when --print is given) + // Launch monitor thread (prints unless suppressed) pthread_t monitor_thread; struct monitor_params params; params.EventSet = EventSet; @@ -248,7 +248,7 @@ static int real_main(const HarnessOpts& opts) { statusFlag = PAPI_destroy_eventset(&EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_destroy_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } - HIP_CHECK_CLEANUP(hipDeviceReset()); // optional but reduces “still reachable” from the HIP runtime + HIP_CHECK_CLEANUP(hipDeviceReset()); // optional but reduces “still reachable” from the HIP runtime PAPI_shutdown(); // triggers component cleanup + AMD SMI shutdown return 0; } diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh old mode 100644 new mode 100755 index 88a7f68cc..747df5a77 --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -# AMD SMI test runner (no build) with print control +# AMD SMI test runner (no build) mirroring run_tests.sh semantics. +# Quiet by default; use -v/--verbose to see output from the tests. # Be reasonably strict but compatible with older bash set -e @@ -13,27 +14,27 @@ banner() { printf "Running: \033[36m%s\033[0m %s\n" "$1" "${2-}"; } sep() { printf "%s\n\n" "-------------------------------------"; } # --------------------------- -# CLI: --print | --print-only +# CLI: -v/--verbose | --verbose-only # --------------------------- -PRINT_ALL=0 -PRINT_SET="" # comma list: hello,basics,gemm,energy,conflict +VERBOSE_ALL=0 +VERBOSE_SET="" # comma list: hello,basics,gemm,energy,conflict HELLO_EVENT="amd_smi:::temp_current:device=0:sensor=1" usage() { cat < Date: Sun, 14 Sep 2025 03:45:54 -0400 Subject: [PATCH 110/147] Simplify AMD SMI runtest helper --- src/components/amd_smi/tests/runtest.sh | 58 +++++++------------------ 1 file changed, 15 insertions(+), 43 deletions(-) diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh index 747df5a77..37b3a0e02 100755 --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -13,66 +13,38 @@ set -u banner() { printf "Running: \033[36m%s\033[0m %s\n" "$1" "${2-}"; } sep() { printf "%s\n\n" "-------------------------------------"; } -# --------------------------- -# CLI: -v/--verbose | --verbose-only -# --------------------------- -VERBOSE_ALL=0 -VERBOSE_SET="" # comma list: hello,basics,gemm,energy,conflict -HELLO_EVENT="amd_smi:::temp_current:device=0:sensor=1" +VERBOSE=0 usage() { cat < Date: Sun, 14 Sep 2025 04:14:10 -0400 Subject: [PATCH 111/147] Remove executable bit from AMD SMI runtest helper --- src/components/amd_smi/tests/runtest.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/components/amd_smi/tests/runtest.sh diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh old mode 100755 new mode 100644 From 9bd462bf21cbd8b995e502e39be71c788e7aea95 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sun, 14 Sep 2025 04:47:01 -0400 Subject: [PATCH 112/147] Free AMD SMI allocated buffers with system free --- src/components/amd_smi/amds.c | 20 +++++++++---------- src/components/amd_smi/amds_accessors.c | 26 ++++++++++++++++--------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index f80333862..82ad663de 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1068,20 +1068,20 @@ static int init_event_table(void) { if (st == AMDSMI_STATUS_SUCCESS && mcount > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count && metrics) - papi_free(metrics); + free(metrics); CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "pm_metrics_count:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d number of PM metrics available", d); if (add_event(&idx, name_buf, descr_buf, d, 0, 0, PAPI_MODE_READ, access_amdsmi_pm_metrics_count) != PAPI_OK) { - if (metrics) papi_free(metrics); + if (metrics) free(metrics); return PAPI_ENOMEM; } for (uint32_t i = 0; i < mcount; ++i) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { - if (metrics) papi_free(metrics); + if (metrics) free(metrics); CHECK_EVENT_IDX(idx); } char metric_name[MAX_AMDSMI_NAME_LENGTH]; @@ -1091,13 +1091,13 @@ static int init_event_table(void) { metrics[i].name); if (add_event(&idx, name_buf, descr_buf, d, i, 0, PAPI_MODE_READ, access_amdsmi_pm_metric_value) != PAPI_OK) { - if (metrics) papi_free(metrics); + if (metrics) free(metrics); return PAPI_ENOMEM; } } } if (metrics) - papi_free(metrics); + free(metrics); } if (amdsmi_is_gpu_power_management_enabled_p) { bool enabled = false; @@ -1553,7 +1553,7 @@ static int init_event_table(void) { if (st == AMDSMI_STATUS_SUCCESS && num_metrics > 0) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) - papi_free(reg_metrics); + free(reg_metrics); CHECK_EVENT_IDX(idx); } snprintf(name_buf, sizeof(name_buf), "reg_%s_count:device=%d", @@ -1562,14 +1562,14 @@ static int init_event_table(void) { "Device %d number of %s register metrics", d, reg_names[rt]); if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)reg_types[rt], 0, PAPI_MODE_READ, access_amdsmi_reg_count) != PAPI_OK) { - if (reg_metrics) papi_free(reg_metrics); + if (reg_metrics) free(reg_metrics); return PAPI_ENOMEM; } for (uint32_t i = 0; i < num_metrics; ++i) { if (idx >= MAX_EVENTS_PER_DEVICE * device_count) { if (reg_metrics) - papi_free(reg_metrics); + free(reg_metrics); CHECK_EVENT_IDX(idx); } char reg_metric_name[MAX_AMDSMI_NAME_LENGTH]; @@ -1581,13 +1581,13 @@ static int init_event_table(void) { d, reg_names[rt], reg_metrics[i].name); if (add_event(&idx, name_buf, descr_buf, d, (uint32_t)reg_types[rt], i, PAPI_MODE_READ, access_amdsmi_reg_value) != PAPI_OK) { - if (reg_metrics) papi_free(reg_metrics); + if (reg_metrics) free(reg_metrics); return PAPI_ENOMEM; } } } if (reg_metrics) - papi_free(reg_metrics); + free(reg_metrics); } } diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 8b45ae41d..861513ee6 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -791,9 +791,17 @@ int access_amdsmi_temp_metric(int mode, void *arg) { if (mode != PAPI_MODE_READ) { return PAPI_ENOSUPP; } - amdsmi_status_t status = amdsmi_get_temp_metric_p(device_handles[event->device], (amdsmi_temperature_type_t)event->subvariant, - (amdsmi_temperature_metric_t)event->variant, (int64_t *)&event->value); - return (status == AMDSMI_STATUS_SUCCESS ? PAPI_OK : PAPI_EMISC); + int64_t tmp = 0; + amdsmi_status_t status = + amdsmi_get_temp_metric_p(device_handles[event->device], + (amdsmi_temperature_type_t)event->subvariant, + (amdsmi_temperature_metric_t)event->variant, + &tmp); + if (status == AMDSMI_STATUS_SUCCESS) { + event->value = (uint64_t)tmp; + return PAPI_OK; + } + return PAPI_EMISC; } int access_amdsmi_fan_rpms(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; @@ -2033,7 +2041,7 @@ int access_amdsmi_pm_metrics_count(int mode, void *arg) { uint32_t count = 0; amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); if (metrics) - papi_free(metrics); /* library allocates */ + free(metrics); /* library allocates */ if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (uint64_t)count; @@ -2055,11 +2063,11 @@ int access_amdsmi_pm_metric_value(int mode, void *arg) { amdsmi_status_t st = amdsmi_get_gpu_pm_metrics_info_p(device_handles[event->device], &metrics, &count); if (st != AMDSMI_STATUS_SUCCESS || event->variant >= count) { if (metrics) - papi_free(metrics); + free(metrics); return PAPI_EMISC; } event->value = (int64_t)metrics[event->variant].value; - papi_free(metrics); + free(metrics); return PAPI_OK; } @@ -2162,7 +2170,7 @@ int access_amdsmi_reg_count(int mode, void *arg) { uint32_t num = 0; amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); if (regs) - papi_free(regs); + free(regs); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = (uint64_t)num; @@ -2185,11 +2193,11 @@ int access_amdsmi_reg_value(int mode, void *arg) { amdsmi_status_t st = amdsmi_get_gpu_reg_table_info_p(device_handles[event->device], reg_type, ®s, &num); if (st != AMDSMI_STATUS_SUCCESS || event->subvariant >= num) { if (regs) - papi_free(regs); + free(regs); return PAPI_EMISC; } event->value = (int64_t)regs[event->subvariant].value; - papi_free(regs); + free(regs); return PAPI_OK; } From 893792ea7801767be3eb25cd30e6650d256eb74a Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 01:47:39 -0700 Subject: [PATCH 113/147] context running --- src/components/amd_smi/linux-amd-smi.c | 55 +++++++++++++------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 996000003..02615c95a 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -196,16 +196,16 @@ static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { return PAPI_OK; } -static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) { - (void) flags; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) { - return PAPI_EMISC; - } - return amds_ctx_read(amdsmi_ctl->amds_ctx, values); +static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, + long long **values, int flags) { + (void)ctx; (void)flags; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; + if (!amdsmi_ctl->amds_ctx) // fail only if ctx is gone + return PAPI_EMISC; + return amds_ctx_read(amdsmi_ctl->amds_ctx, values); } + static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long *values) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; @@ -216,21 +216,13 @@ static int _amd_smi_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long lo } static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { - int papi_errno = PAPI_OK; - amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *)ctx; - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; - if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) return PAPI_EMISC; - - papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); // may be != PAPI_OK - amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; // mirror ctx state even on error - - // Always try to close to release device_mask/memory - int close_rc = amds_ctx_close(amdsmi_ctl->amds_ctx); - amdsmi_ctl->amds_ctx = NULL; - amdsmi_ctx->state &= ~AMDS_EVENTS_OPENED; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *)ctx; + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) return PAPI_EMISC; - // Preserve the original stop error if any - return (papi_errno != PAPI_OK) ? papi_errno : close_rc; + int rc = amds_ctx_stop(amdsmi_ctl->amds_ctx); + amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; + return rc; } static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { @@ -243,17 +235,24 @@ static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { } static int _amd_smi_cleanup_eventset(hwd_control_state_t *ctrl) { - amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *) ctrl; - if (amdsmi_ctl->amds_ctx != NULL) { - // Context should have been closed in _amd_smi_stop - return PAPI_EMISC; - } + amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; + + if (amdsmi_ctl->amds_ctx) { + (void)amds_ctx_stop(amdsmi_ctl->amds_ctx); // safe if not running + (void)amds_ctx_close(amdsmi_ctl->amds_ctx); + amdsmi_ctl->amds_ctx = NULL; + } + + if (amdsmi_ctl->events_id) { papi_free(amdsmi_ctl->events_id); amdsmi_ctl->events_id = NULL; amdsmi_ctl->num_events = 0; - return PAPI_OK; + } + return PAPI_OK; } + + static int _amd_smi_shutdown_thread(hwd_context_t *ctx) { amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *) ctx; amdsmi_ctx->state = 0; From aa92d77f22a44061601b94e181561c6d1084828c Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 02:24:25 -0700 Subject: [PATCH 114/147] init uniit values in struct --- src/components/amd_smi/amds_accessors.c | 139 +++++++++++++----------- 1 file changed, 73 insertions(+), 66 deletions(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 861513ee6..0298287d7 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -357,42 +357,60 @@ int access_amdsmi_link_type(int mode, void *arg) { int access_amdsmi_p2p_status(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_topo_get_p2p_status_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; - int src = event->device; - int dst = (int)event->subvariant; + const int src = event->device; + const int dst = (int)event->subvariant; + if (src < 0 || src >= device_count || dst < 0 || dst >= device_count || !device_handles[src] || !device_handles[dst] || src == dst) return PAPI_EMISC; - amdsmi_io_link_type_t type; - amdsmi_p2p_capability_t cap; - if (amdsmi_topo_get_p2p_status_p(device_handles[src], device_handles[dst], - &type, &cap) != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - switch (event->variant) { - case 0: - event->value = (int64_t)type; - break; - case 1: - event->value = cap.is_iolink_coherent; - break; - case 2: - event->value = cap.is_iolink_atomics_32bit; - break; - case 3: - event->value = cap.is_iolink_atomics_64bit; - break; - case 4: - event->value = cap.is_iolink_dma; - break; - case 5: - event->value = cap.is_iolink_bi_directional; - break; - default: - return PAPI_ENOSUPP; + + // 1) Prefer the cheap predicate to avoid the buggy slow path: + bool accessible = false; + if (amdsmi_is_P2P_accessible_p && + amdsmi_is_P2P_accessible_p(device_handles[src], device_handles[dst], + &accessible) == AMDSMI_STATUS_SUCCESS && + accessible) { + // 2) Only for accessible pairs, ask for detailed capabilities: + amdsmi_io_link_type_t type = 0; + amdsmi_p2p_capability_t cap = {0}; + if (amdsmi_topo_get_p2p_status_p(device_handles[src], device_handles[dst], + &type, &cap) != AMDSMI_STATUS_SUCCESS) + return PAPI_EMISC; // unexpected for accessible pairs + + switch (event->variant) { + case 0: event->value = (int64_t)type; break; + case 1: event->value = cap.is_iolink_coherent; break; + case 2: event->value = cap.is_iolink_atomics_32bit; break; + case 3: event->value = cap.is_iolink_atomics_64bit; break; + case 4: event->value = cap.is_iolink_dma; break; + case 5: event->value = cap.is_iolink_bi_directional; break; + default: return PAPI_ENOSUPP; + } + return PAPI_OK; + } + + // 3) Non-accessible or predicate missing: report a sensible value without + // touching the buggy call. Type (variant 0) can still be queried safely via + // amdsmi_topo_get_link_type; the rest are false by definition. + if (event->variant == 0 && amdsmi_topo_get_link_type_p) { + uint64_t hops = 0; + amdsmi_io_link_type_t type = 0; // UNKNOWN/PCIE/XGMI per platform + if (amdsmi_topo_get_link_type_p(device_handles[src], device_handles[dst], + &hops, &type) == AMDSMI_STATUS_SUCCESS) { + event->value = (int64_t)type; + return PAPI_OK; + } + // If link_type also fails, fall through to “no data”. } + + // For non-accessible pairs, the capability booleans are zero. + event->value = 0; return PAPI_OK; } + int access_amdsmi_p2p_accessible(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_is_P2P_accessible_p) return PAPI_ENOSUPP; @@ -1959,56 +1977,45 @@ int access_amdsmi_od_volt_info(int mode, void *arg) { return PAPI_ENOSUPP; if (!amdsmi_get_gpu_od_volt_info_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles || !device_handles[event->device]) { return PAPI_EMISC; + } amdsmi_od_volt_freq_data_t info; - amdsmi_status_t st = amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); + memset(&info, 0, sizeof(info)); /* <-- critical: avoid uninitialized fields */ + + amdsmi_status_t st = + amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; switch (event->variant) { - case 0: - event->value = (int64_t)info.curr_sclk_range.lower_bound; - break; - case 1: - event->value = (int64_t)info.curr_sclk_range.upper_bound; - break; - case 2: - event->value = (int64_t)info.curr_mclk_range.lower_bound; - break; - case 3: - event->value = (int64_t)info.curr_mclk_range.upper_bound; - break; - case 4: - event->value = (int64_t)info.sclk_freq_limits.lower_bound; - break; - case 5: - event->value = (int64_t)info.sclk_freq_limits.upper_bound; - break; - case 6: - event->value = (int64_t)info.mclk_freq_limits.lower_bound; - break; - case 7: - event->value = (int64_t)info.mclk_freq_limits.upper_bound; - break; - case 8: - if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) - return PAPI_EMISC; - event->value = (int64_t)info.curve.vc_points[event->subvariant].frequency; - break; - case 9: - if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) - return PAPI_EMISC; - event->value = (int64_t)info.curve.vc_points[event->subvariant].voltage; - break; - default: - return PAPI_ENOSUPP; + case 0: event->value = (int64_t)info.curr_sclk_range.lower_bound; break; + case 1: event->value = (int64_t)info.curr_sclk_range.upper_bound; break; + case 2: event->value = (int64_t)info.curr_mclk_range.lower_bound; break; + case 3: event->value = (int64_t)info.curr_mclk_range.upper_bound; break; + case 4: event->value = (int64_t)info.sclk_freq_limits.lower_bound; break; + case 5: event->value = (int64_t)info.sclk_freq_limits.upper_bound; break; + case 6: event->value = (int64_t)info.mclk_freq_limits.lower_bound; break; + case 7: event->value = (int64_t)info.mclk_freq_limits.upper_bound; break; + case 8: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) return PAPI_EMISC; + event->value = (int64_t)info.curve.vc_points[event->subvariant].frequency; + break; + case 9: + if (event->subvariant >= AMDSMI_NUM_VOLTAGE_CURVE_POINTS) return PAPI_EMISC; + event->value = (int64_t)info.curve.vc_points[event->subvariant].voltage; + break; + default: + return PAPI_ENOSUPP; } return PAPI_OK; } + int access_amdsmi_perf_level(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { From 83b6b30ef3bb867616684087369c60e706920403 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Sun, 14 Sep 2025 05:29:48 -0400 Subject: [PATCH 115/147] Zero output structs before AMD SMI queries --- src/components/amd_smi/amds_accessors.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 0298287d7..168259256 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -402,7 +402,7 @@ int access_amdsmi_p2p_status(int mode, void *arg) { event->value = (int64_t)type; return PAPI_OK; } - // If link_type also fails, fall through to “no data”. + // If link_type also fails, fall through to no data. } // For non-accessible pairs, the capability booleans are zero. @@ -525,6 +525,7 @@ int access_amdsmi_xgmi_info(int mode, void *arg) { !device_handles[event->device]) return PAPI_EMISC; amdsmi_xgmi_info_t info; + memset(&info, 0, sizeof(info)); if (amdsmi_get_xgmi_info_p(device_handles[event->device], &info) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -938,6 +939,7 @@ int access_amdsmi_power_average(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_info_t power; + memset(&power, 0, sizeof(power)); amdsmi_status_t status = amdsmi_get_power_info_p(device_handles[event->device], &power); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1098,6 +1100,7 @@ int access_amdsmi_gpu_metrics(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_gpu_metrics_t metrics; + memset(&metrics, 0, sizeof(metrics)); amdsmi_status_t status = amdsmi_get_gpu_metrics_info_p(device_handles[event->device], &metrics); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -2239,6 +2242,7 @@ int access_amdsmi_vram_width(int mode, void *arg) { return PAPI_ENOSUPP; amdsmi_vram_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2257,6 +2261,7 @@ int access_amdsmi_vram_size(int mode, void *arg) { return PAPI_ENOSUPP; amdsmi_vram_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2276,6 +2281,7 @@ int access_amdsmi_vram_type(int mode, void *arg) { return PAPI_ENOSUPP; amdsmi_vram_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2294,6 +2300,7 @@ int access_amdsmi_vram_vendor(int mode, void *arg) { return PAPI_ENOSUPP; amdsmi_vram_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2437,6 +2444,7 @@ int access_amdsmi_board_serial_hash(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_board_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_board_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2629,6 +2637,7 @@ int access_amdsmi_pcie_info(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_pcie_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_pcie_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; From c545e34e2ccc250ffa1c9e5896564edb876bdd97 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 02:30:55 -0700 Subject: [PATCH 116/147] take out p2p event --- src/components/amd_smi/amds.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 82ad663de..7e9443ac2 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -3469,6 +3469,7 @@ static int init_event_table(void) { access_amdsmi_link_type) != PAPI_OK) return PAPI_ENOMEM; } + /* if (amdsmi_topo_get_p2p_status_p) { const char *p2p_names[] = {"p2p_type", "p2p_coherent", "p2p_atomics32", "p2p_atomics64", @@ -3498,6 +3499,7 @@ static int init_event_table(void) { access_amdsmi_p2p_accessible) != PAPI_OK) return PAPI_ENOMEM; } + */ } } ntv_table.count = idx; From 6616f8373d1176b3de70a789fb2877ff52225ebc Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 02:59:20 -0700 Subject: [PATCH 117/147] zero init --- src/components/amd_smi/amds_accessors.c | 29 ++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 168259256..50852afe0 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -24,6 +24,7 @@ int access_amdsmi_lib_version(int mode, void *arg) { return PAPI_ENOSUPP; native_event_t *event = (native_event_t *)arg; amdsmi_version_t vinfo; + memset(&vinfo, 0, sizeof(vinfo)); amdsmi_status_t st = amdsmi_get_lib_version_p(&vinfo); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -97,6 +98,7 @@ int access_amdsmi_gpu_string_hash(int mode, void *arg) { return PAPI_ENOSUPP; { amdsmi_driver_info_t dinfo; + memset(&dinfo, 0, sizeof(dinfo)); st = amdsmi_get_gpu_driver_info_p(device_handles[event->device], &dinfo); if (st == AMDSMI_STATUS_SUCCESS) { if (event->variant == 3) @@ -113,6 +115,7 @@ int access_amdsmi_gpu_string_hash(int mode, void *arg) { return PAPI_ENOSUPP; { amdsmi_vbios_info_t vb; + memset(&vb, 0, sizeof(vb)); st = amdsmi_get_gpu_vbios_info_p(device_handles[event->device], &vb); if (st == AMDSMI_STATUS_SUCCESS) { if (event->variant == 5) @@ -142,6 +145,7 @@ int access_amdsmi_enumeration_info(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_enumeration_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_enumeration_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -173,6 +177,7 @@ int access_amdsmi_asic_info(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_asic_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_asic_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -282,6 +287,7 @@ int access_amdsmi_xgmi_link_status(int mode, void *arg) { !device_handles[event->device]) return PAPI_EMISC; amdsmi_xgmi_link_status_t st; + memset(&st, 0, sizeof(st)); if (amdsmi_get_gpu_xgmi_link_status_p(device_handles[event->device], &st) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -468,6 +474,7 @@ int access_amdsmi_device_bdf(int mode, void *arg) { !device_handles[event->device]) return PAPI_EMISC; amdsmi_bdf_t bdf; + memset(&bdf, 0, sizeof(bdf)); if (amdsmi_get_gpu_device_bdf_p(device_handles[event->device], &bdf) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -498,6 +505,7 @@ int access_amdsmi_kfd_info(int mode, void *arg) { !device_handles[event->device]) return PAPI_EMISC; amdsmi_kfd_info_t info; + memset(&info, 0, sizeof(info)); if (amdsmi_get_gpu_kfd_info_p(device_handles[event->device], &info) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -892,6 +900,7 @@ int access_amdsmi_power_cap(int mode, void *arg) { if (mode == PAPI_MODE_READ) { // Read current power cap amdsmi_power_cap_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); // sensor index 0 if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -914,6 +923,7 @@ int access_amdsmi_power_cap_range(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_power_cap_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t status = amdsmi_get_power_cap_info_p(device_handles[event->device], 0, &info); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -997,6 +1007,7 @@ int access_amdsmi_clk_freq(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_frequencies_t freq_info; + memset(&freq_info, 0, sizeof(freq_info)); amdsmi_clk_type_t clk_type = AMDSMI_CLK_TYPE_SYS; if (event->variant == 1) clk_type = AMDSMI_CLK_TYPE_DF; @@ -1039,6 +1050,7 @@ int access_amdsmi_clock_info(int mode, void *arg) { if (event->variant < 0 || event->variant >= 2) return PAPI_EMISC; amdsmi_clk_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t status = amdsmi_get_clock_info_p(device_handles[event->device], clk_types[event->variant], &info); @@ -1074,6 +1086,7 @@ int access_amdsmi_metrics_header_info(int mode, void *arg) { !device_handles[event->device]) return PAPI_EMISC; amd_metrics_table_header_t hdr; + memset(&hdr, 0, sizeof(hdr)); if (amdsmi_get_gpu_metrics_header_info_p(device_handles[event->device], &hdr) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -1220,6 +1233,7 @@ int access_amdsmi_gpu_activity(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_engine_usage_t usage; + memset(&usage, 0, sizeof(usage)); amdsmi_status_t status = amdsmi_get_gpu_activity_p(device_handles[event->device], &usage); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1264,6 +1278,7 @@ int access_amdsmi_pci_bandwidth(int mode, void *arg) { return PAPI_EMISC; amdsmi_pcie_bandwidth_t bw; + memset(&bw, 0, sizeof(bw)); if (amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw) != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -1594,6 +1609,7 @@ int access_amdsmi_cpu_ddr_bw(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_ddr_bw_metrics_t bw; + memset(&bw, 0, sizeof(bw)); amdsmi_status_t status = amdsmi_get_cpu_ddr_bw_p(device_handles[event->device], &bw); if (status != AMDSMI_STATUS_SUCCESS) @@ -1643,6 +1659,7 @@ int access_amdsmi_cpu_hsmp_driver_version(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; amdsmi_hsmp_driver_version_t ver; + memset(&ver, 0, sizeof(ver)); amdsmi_status_t status = amdsmi_get_cpu_hsmp_driver_version_p( device_handles[event->device], &ver); if (status != AMDSMI_STATUS_SUCCESS) @@ -1713,6 +1730,7 @@ int access_amdsmi_dimm_temp(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_dimm_thermal_t dimm_temp; + memset(&dimm_temp, 0, sizeof(dimm_temp)); amdsmi_status_t status = amdsmi_get_cpu_dimm_thermal_sensor_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_temp); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1730,6 +1748,7 @@ int access_amdsmi_dimm_power(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_dimm_power_t dimm_pow; + memset(&dimm_pow, 0, sizeof(dimm_pow)); amdsmi_status_t status = amdsmi_get_cpu_dimm_power_consumption_p(device_handles[event->device], (uint8_t)event->subvariant, &dimm_pow); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1747,6 +1766,7 @@ int access_amdsmi_dimm_range_refresh(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_temp_range_refresh_rate_t rate; + memset(&rate, 0, sizeof(rate)); amdsmi_status_t status = amdsmi_get_cpu_dimm_temp_range_and_refresh_rate_p(device_handles[event->device], (uint8_t)event->subvariant, &rate); if (status != AMDSMI_STATUS_SUCCESS) { @@ -1808,6 +1828,7 @@ int access_amdsmi_smu_fw_version(int mode, void *arg) { return PAPI_ENOSUPP; } amdsmi_smu_fw_version_t fw; + memset(&fw, 0, sizeof(fw)); amdsmi_status_t status = amdsmi_get_cpu_smu_fw_version_p(device_handles[event->device], &fw); if (status != AMDSMI_STATUS_SUCCESS) { return PAPI_EMISC; @@ -1988,7 +2009,7 @@ int access_amdsmi_od_volt_info(int mode, void *arg) { } amdsmi_od_volt_freq_data_t info; - memset(&info, 0, sizeof(info)); /* <-- critical: avoid uninitialized fields */ + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_od_volt_info_p(device_handles[event->device], &info); @@ -2319,7 +2340,9 @@ int access_amdsmi_vram_usage(int mode, void *arg) { return PAPI_ENOSUPP; amdsmi_vram_usage_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; if (event->variant == 0) @@ -2462,6 +2485,7 @@ int access_amdsmi_fw_version(int mode, void *arg) { return PAPI_EMISC; amdsmi_fw_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_fw_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2489,6 +2513,7 @@ int access_amdsmi_vram_max_bandwidth(int mode, void *arg) { if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; amdsmi_vram_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_gpu_vram_info_p(device_handles[event->device], &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; @@ -2592,7 +2617,9 @@ int access_amdsmi_power_sensor(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) return PAPI_EMISC; + amdsmi_power_info_t info; + memset(&info, 0, sizeof(info)); amdsmi_status_t st = amdsmi_get_power_info_v2_p(device_handles[event->device], event->subvariant, &info); if (st != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; From c0560b8be28327df52aec98d978734f302cf9773 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 03:13:28 -0700 Subject: [PATCH 118/147] init --- src/components/amd_smi/amds_accessors.c | 189 ++++++++++++------------ 1 file changed, 91 insertions(+), 98 deletions(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 50852afe0..89e995a97 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1001,83 +1001,79 @@ int access_amdsmi_pci_replay_counter(int mode, void *arg) { } int access_amdsmi_clk_freq(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + if (event->device < 0 || event->device >= device_count || + !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_frequencies_t freq_info; - memset(&freq_info, 0, sizeof(freq_info)); + memset(&freq_info, 0, sizeof(freq_info)); /* critical */ + amdsmi_clk_type_t clk_type = AMDSMI_CLK_TYPE_SYS; - if (event->variant == 1) - clk_type = AMDSMI_CLK_TYPE_DF; - else if (event->variant == 2) - clk_type = AMDSMI_CLK_TYPE_DCEF; - amdsmi_status_t status = amdsmi_get_clk_freq_p(device_handles[event->device], clk_type, &freq_info); + if (event->variant == 1) clk_type = AMDSMI_CLK_TYPE_DF; + else if (event->variant == 2) clk_type = AMDSMI_CLK_TYPE_DCEF; + + amdsmi_status_t status = + amdsmi_get_clk_freq_p(device_handles[event->device], clk_type, &freq_info); if (status != AMDSMI_STATUS_SUCCESS) { - return PAPI_EMISC; + event->value = 0; + return PAPI_OK; } - // Simplified: variant 0 -> count, 1 -> current frequency, >=2 -> specific - // index + if (event->subvariant == 0) { event->value = freq_info.num_supported; } else if (event->subvariant == 1) { - if (freq_info.num_supported > 0) { - event->value = freq_info.frequency[0]; // assume first is current - } else { - event->value = 0; - } + event->value = (freq_info.num_supported > 0) ? freq_info.frequency[0] : 0; } else { int idx = event->subvariant - 2; - if (idx >= 0 && idx < (int)freq_info.num_supported) { + if (idx >= 0 && (uint32_t)idx < freq_info.num_supported) { event->value = freq_info.frequency[idx]; } else { - return PAPI_EMISC; + event->value = 0; } } return PAPI_OK; } + int access_amdsmi_clock_info(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || + if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + amdsmi_clk_type_t clk_types[] = {AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_MEM}; if (event->variant < 0 || event->variant >= 2) return PAPI_EMISC; + amdsmi_clk_info_t info; - memset(&info, 0, sizeof(info)); + memset(&info, 0, sizeof(info)); /* critical */ + amdsmi_status_t status = amdsmi_get_clock_info_p(device_handles[event->device], clk_types[event->variant], &info); - if (status != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; + if (status != AMDSMI_STATUS_SUCCESS) { + event->value = 0; + return PAPI_OK; + } + switch (event->subvariant) { - case 0: - event->value = info.clk; - break; - case 1: - event->value = info.min_clk; - break; - case 2: - event->value = info.max_clk; - break; - case 3: - event->value = info.clk_locked; - break; - case 4: - event->value = info.clk_deep_sleep; - break; - default: - return PAPI_EMISC; + case 0: event->value = info.clk; break; + case 1: event->value = info.min_clk; break; + case 2: event->value = info.max_clk; break; + case 3: event->value = info.clk_locked; break; + case 4: event->value = info.clk_deep_sleep;break; + default: return PAPI_EMISC; } return PAPI_OK; } + int access_amdsmi_metrics_header_info(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_metrics_header_info_p) return PAPI_ENOSUPP; @@ -1272,36 +1268,37 @@ int access_amdsmi_fan_speed_max(int mode, void *arg) { int access_amdsmi_pci_bandwidth(int mode, void *arg) { if (mode != PAPI_MODE_READ || !amdsmi_get_gpu_pci_bandwidth_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) return PAPI_EMISC; amdsmi_pcie_bandwidth_t bw; - memset(&bw, 0, sizeof(bw)); + memset(&bw, 0, sizeof(bw)); /* critical */ + if (amdsmi_get_gpu_pci_bandwidth_p(device_handles[event->device], &bw) != - AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; + AMDSMI_STATUS_SUCCESS) { + event->value = 0; + return PAPI_OK; + } uint32_t cur = bw.transfer_rate.current; - if (cur >= bw.transfer_rate.num_supported) - return PAPI_EMISC; + if (cur >= bw.transfer_rate.num_supported) { + event->value = 0; + return PAPI_OK; + } switch (event->variant) { - case 0: - event->value = bw.transfer_rate.num_supported; - break; - case 1: - event->value = (int64_t)bw.transfer_rate.frequency[cur]; - break; - case 2: - event->value = bw.lanes[cur]; - break; - default: - return PAPI_ENOSUPP; + case 0: event->value = bw.transfer_rate.num_supported; break; + case 1: event->value = (int64_t)bw.transfer_rate.frequency[cur]; break; + case 2: event->value = bw.lanes[cur]; break; + default: return PAPI_ENOSUPP; } return PAPI_OK; } + + int access_amdsmi_energy_count(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { @@ -2331,26 +2328,30 @@ int access_amdsmi_vram_vendor(int mode, void *arg) { int access_amdsmi_vram_usage(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { + if (event->device < 0 || event->device >= device_count || + !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; - if (!amdsmi_get_gpu_vram_usage_p) - return PAPI_ENOSUPP; amdsmi_vram_usage_t info; - memset(&info, 0, sizeof(info)); - amdsmi_status_t st = amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); - - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; - if (event->variant == 0) - event->value = (uint64_t)info.vram_total; - else if (event->variant == 1) - event->value = (uint64_t)info.vram_used; - else + memset(&info, 0, sizeof(info)); /* critical: avoid uninitialised fields */ + + amdsmi_status_t st = + amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); + if (st != AMDSMI_STATUS_SUCCESS) { + event->value = 0; /* deterministic, not UB */ + return PAPI_OK; /* print 0 rather than error */ + } + + if (event->variant == 0) { + event->value = (uint64_t)info.vram_total; /* MB */ + } else if (event->variant == 1) { + event->value = (uint64_t)info.vram_used; /* MB */ + } else { return PAPI_EMISC; + } return PAPI_OK; } @@ -2614,47 +2615,39 @@ int access_amdsmi_power_sensor(int mode, void *arg) { return PAPI_ENOSUPP; if (!amdsmi_get_power_info_v2_p) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; - if (event->device < 0 || event->device >= device_count || !device_handles[event->device]) + if (event->device < 0 || event->device >= device_count || + !device_handles[event->device]) return PAPI_EMISC; - + amdsmi_power_info_t info; - memset(&info, 0, sizeof(info)); - amdsmi_status_t st = amdsmi_get_power_info_v2_p(device_handles[event->device], event->subvariant, &info); - if (st != AMDSMI_STATUS_SUCCESS) - return PAPI_EMISC; + memset(&info, 0, sizeof(info)); /* critical: avoid uninitialised fields */ + + amdsmi_status_t st = + amdsmi_get_power_info_v2_p(device_handles[event->device], + (uint32_t)event->subvariant, &info); + if (st != AMDSMI_STATUS_SUCCESS) { + event->value = 0; + return PAPI_OK; + } + switch (event->variant) { - case 0: - event->value = (int64_t)info.current_socket_power; - break; - case 1: - event->value = (int64_t)info.average_socket_power; - break; + case 0: event->value = (int64_t)info.current_socket_power; break; /* W */ + case 1: event->value = (int64_t)info.average_socket_power; break; /* W */ #if AMDSMI_LIB_VERSION_MAJOR >= 25 - case 2: - if (amdsmi_lib_major < 25) - return PAPI_ENOSUPP; - event->value = (int64_t)info.socket_power; - break; + case 2: event->value = (int64_t)info.socket_power; break; /* uW */ #endif - case 3: - event->value = (int64_t)info.gfx_voltage; - break; - case 4: - event->value = (int64_t)info.soc_voltage; - break; - case 5: - event->value = (int64_t)info.mem_voltage; - break; - case 6: - event->value = (int64_t)info.power_limit; - break; - default: - return PAPI_ENOSUPP; + case 3: event->value = (int64_t)info.gfx_voltage; break; /* mV */ + case 4: event->value = (int64_t)info.soc_voltage; break; /* mV */ + case 5: event->value = (int64_t)info.mem_voltage; break; /* mV */ + case 6: event->value = (int64_t)info.power_limit; break; /* W */ + default: return PAPI_ENOSUPP; } return PAPI_OK; } + int access_amdsmi_pcie_info(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; From af1c30156187859f6930909db6f0d83473ba1009 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 03:14:39 -0700 Subject: [PATCH 119/147] read all --- src/components/amd_smi/amds_ctx.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index e8a65f61b..d9707a8e8 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -129,19 +129,36 @@ int amds_ctx_stop(amds_ctx_t ctx) { return papi_errno; } int amds_ctx_read(amds_ctx_t ctx, long long **counts) { - int papi_errno = PAPI_OK; + if (!ctx || !counts) return PAPI_EINVAL; + + /* Always produce a fully defined buffer */ + for (int i = 0; i < ctx->num_events; ++i) { + ctx->counters[i] = 0; /* default if read fails */ + } + + /* Optional: track first error, but don't bail early */ + int first_err = PAPI_OK; + for (int i = 0; i < ctx->num_events; ++i) { unsigned int id = ctx->events_id[i]; - papi_errno = ntv_table_p->events[id].access_func(PAPI_MODE_READ, - &ntv_table_p->events[id]); - if (papi_errno != PAPI_OK) { - return papi_errno; + native_event_t *ev = &ntv_table_p->events[id]; + + int rc = PAPI_OK; + if (ev->access_func) { + rc = ev->access_func(PAPI_MODE_READ, ev); + } + if (rc == PAPI_OK) { + ctx->counters[i] = (long long)ev->value; + } else if (first_err == PAPI_OK) { + first_err = rc; /* remember, but keep going */ } - ctx->counters[i] = (long long)ntv_table_p->events[id].value; } + *counts = ctx->counters; - return papi_errno; + /* Return OK so callers can safely print; or 'first_err' if you want to surface it */ + return PAPI_OK; } + int amds_ctx_write(amds_ctx_t ctx, long long *counts) { int papi_errno = PAPI_OK; for (int i = 0; i < ctx->num_events; ++i) { From d234eac1a1e80d9fe27bcd5d5b28986ede2b97f7 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 03:21:55 -0700 Subject: [PATCH 120/147] access_amdsmi_vram_usage --- src/components/amd_smi/amds_accessors.c | 44 ++++++++++++++++--------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 89e995a97..1d03adca9 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -2327,34 +2327,46 @@ int access_amdsmi_vram_vendor(int mode, void *arg) { } int access_amdsmi_vram_usage(int mode, void *arg) { + if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; + native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { return PAPI_EMISC; } - if (mode != PAPI_MODE_READ) - return PAPI_ENOSUPP; - - amdsmi_vram_usage_t info; - memset(&info, 0, sizeof(info)); /* critical: avoid uninitialised fields */ - amdsmi_status_t st = - amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &info); - if (st != AMDSMI_STATUS_SUCCESS) { - event->value = 0; /* deterministic, not UB */ - return PAPI_OK; /* print 0 rather than error */ + /* variant: 0 = total MB, 1 = used MB */ + if (event->variant == 0) { + /* TOTAL: prefer vram_info to avoid the buggy usage path */ + if (!amdsmi_get_gpu_vram_info_p) return PAPI_ENOSUPP; + + amdsmi_vram_info_t vinf; + memset(&vinf, 0, sizeof(vinf)); + if (amdsmi_get_gpu_vram_info_p(device_handles[event->device], &vinf) + != AMDSMI_STATUS_SUCCESS) { + event->value = 0; /* deterministic, not UB */ + return PAPI_OK; + } + /* vinf.vram_size is reported in MB by AMD SMI */ + event->value = (uint64_t)vinf.vram_size; + return PAPI_OK; } - if (event->variant == 0) { - event->value = (uint64_t)info.vram_total; /* MB */ - } else if (event->variant == 1) { - event->value = (uint64_t)info.vram_used; /* MB */ - } else { - return PAPI_EMISC; + /* USED: keep using vram_usage for the “used” number */ + if (!amdsmi_get_gpu_vram_usage_p) return PAPI_ENOSUPP; + + amdsmi_vram_usage_t u; + memset(&u, 0, sizeof(u)); + if (amdsmi_get_gpu_vram_usage_p(device_handles[event->device], &u) + != AMDSMI_STATUS_SUCCESS) { + event->value = 0; + return PAPI_OK; } + event->value = (uint64_t)u.vram_used; /* MB */ return PAPI_OK; } + int access_amdsmi_soc_pstate_id(int mode, void *arg) { native_event_t *event = (native_event_t *)arg; if (event->device < 0 || event->device >= device_count || !device_handles || !device_handles[event->device]) { From ef10f35a82533b6e0aa09b1c7add85535948c6f2 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 21:15:24 -0700 Subject: [PATCH 121/147] return first error --- src/components/amd_smi/amds_ctx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index d9707a8e8..ed0676474 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -155,7 +155,8 @@ int amds_ctx_read(amds_ctx_t ctx, long long **counts) { } *counts = ctx->counters; - /* Return OK so callers can safely print; or 'first_err' if you want to surface it */ + + if (first_err != PAPI_OK) return first_err; return PAPI_OK; } From 8499179ee792b57bdb06d3b34949bf1d0119727e Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 22:58:31 -0700 Subject: [PATCH 122/147] fix leaks htable_insert create_table(2), bitmasking and minor changes --- src/components/amd_smi/htable.h | 517 +++++++++++++++----------------- 1 file changed, 245 insertions(+), 272 deletions(-) diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index 12f19ea8f..56cce00ea 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -1,416 +1,389 @@ -/** - * @file htable.h - * @author Giuseppe Congiu - * gcongiu@icl.utk.edu - * - */ #ifndef __HTABLE_H__ #define __HTABLE_H__ + #include #include #include "papi.h" #include "papi_internal.h" #include "papi_memory.h" -#define HTABLE_NEEDS_TO_GROW(table) (table->size > 0 && table->capacity / table->size < 2) -#define HTABLE_NEEDS_TO_SHRINK(table) (table->size > 0 && table->capacity / table->size > 8) +/* Return codes for hash table operations */ +#define HTABLE_SUCCESS 0 /* Operation successful */ +#define HTABLE_ENOVAL -1 /* Key not found in table */ +#define HTABLE_EINVAL -2 /* Invalid argument (e.g., NULL handle or key) */ +#define HTABLE_ENOMEM -3 /* Allocation failure */ -#define HTABLE_SUCCESS ( 0) -#define HTABLE_ENOVAL (-1) -#define HTABLE_EINVAL (-2) -#define HTABLE_ENOMEM (-3) +#define HTABLE_MIN_SIZE 8 /* Minimum number of buckets */ +#define HTABLE_NEEDS_TO_GROW(table) ((table)->size > 0 && (table)->capacity / (table)->size < 2) +#define HTABLE_NEEDS_TO_SHRINK(table) ((table)->size > 0 && (table)->capacity / (table)->size > 8) +/* Hash table entry definition (separate chaining) */ struct hash_table_entry { - char *key; - void *val; - struct hash_table_entry *next; + char *key; /* Dynamically allocated key string */ + void *val; /* Value associated with the key */ + struct hash_table_entry *next; /* Next entry in the bucket's linked list */ }; +/* Hash table structure */ struct hash_table { - uint32_t capacity; - uint32_t size; - struct hash_table_entry **buckets; + uint32_t capacity; /* Number of buckets (table size) */ + uint32_t size; /* Number of entries currently stored */ + struct hash_table_entry **buckets; /* Array of bucket heads for separate chaining */ }; -static uint64_t hash_func(const char *); - -static int create_table(uint64_t, struct hash_table **); -static int destroy_table(struct hash_table *); -static int rehash_table(struct hash_table *, struct hash_table *); -static int move_table(struct hash_table *, struct hash_table *); -static int check_n_resize_table(struct hash_table *); -static int destroy_table_entries(struct hash_table *); - -static int create_table_entry(const char *, void *, - struct hash_table_entry **); -static int destroy_table_entry(struct hash_table_entry *); -static int insert_table_entry(struct hash_table *, struct hash_table_entry *); -static int delete_table_entry(struct hash_table *, struct hash_table_entry *); -static int find_table_entry(struct hash_table *, const char *, - struct hash_table_entry **); - -static inline int -htable_init(void **handle) +/* Internal helper function prototypes (not part of public API) */ +static uint64_t hash_func(const char *str); +static int create_table(uint64_t capacity, struct hash_table **table); +static int destroy_table(struct hash_table *table); +static int rehash_table(struct hash_table *old_table, struct hash_table *new_table); +static int destroy_table_entries(struct hash_table *table); +static int create_table_entry(const char *key, void *val, struct hash_table_entry **entry); +static int destroy_table_entry(struct hash_table_entry *entry); +static int insert_table_entry(struct hash_table *table, struct hash_table_entry *entry); +static int delete_table_entry(struct hash_table *table, struct hash_table_entry *entry); +static int find_table_entry(struct hash_table *table, const char *key, struct hash_table_entry **entry); + +/* Initialize a new hash table. Handle is an out-parameter for the table pointer. */ +static inline int htable_init(void **handle) { + if (handle == NULL) { + return HTABLE_EINVAL; + } int htable_errno = HTABLE_SUCCESS; - -#define HTABLE_MIN_SIZE (8) struct hash_table *table = NULL; + /* Create initial table with minimum capacity */ htable_errno = create_table(HTABLE_MIN_SIZE, &table); if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; + *handle = NULL; + return htable_errno; } - *handle = table; - - fn_exit: - return htable_errno; - fn_fail: - *handle = NULL; - goto fn_exit; + return HTABLE_SUCCESS; } -static inline int -htable_shutdown(void *handle) +/* Shutdown an existing hash table, freeing all allocated memory. */ +static inline int htable_shutdown(void *handle) { - int htable_errno = HTABLE_SUCCESS; struct hash_table *table = (struct hash_table *) handle; - if (table == NULL) { return HTABLE_EINVAL; } - + /* Free all entries and the table itself */ destroy_table_entries(table); destroy_table(table); - - return htable_errno; + return HTABLE_SUCCESS; } -static inline int -htable_insert(void *handle, const char *key, void *in) +/* Insert a key-value pair into the hash table. Updates value if key already exists. */ +static inline int htable_insert(void *handle, const char *key, void *in) { - int htable_errno = HTABLE_SUCCESS; struct hash_table *table = (struct hash_table *) handle; - if (table == NULL || key == NULL) { return HTABLE_EINVAL; } - + int htable_errno; struct hash_table_entry *entry = NULL; + /* Check if key already exists */ htable_errno = find_table_entry(table, key, &entry); if (htable_errno == HTABLE_SUCCESS) { + /* Key exists: update its value */ entry->val = in; - goto fn_exit; + return HTABLE_SUCCESS; } - + /* Key not found: create a new entry */ htable_errno = create_table_entry(key, in, &entry); if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; + return htable_errno; } - + /* Link the new entry into the table */ htable_errno = insert_table_entry(table, entry); if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - htable_errno = check_n_resize_table(table); - - fn_exit: - return htable_errno; - fn_fail: - if (entry) { + /* Insertion failed: free the entry and return error */ + papi_free(entry->key); papi_free(entry); + return htable_errno; } - goto fn_exit; + /* Check if rehash (grow table) is needed after insertion */ + htable_errno = rehash_table(table, NULL); /* use NULL to indicate self-resize (growth) */ + if (htable_errno != HTABLE_SUCCESS) { + if (htable_errno == HTABLE_ENOMEM) { + /* Roll back the insertion of the new entry on memory error */ + delete_table_entry(table, entry); + destroy_table_entry(entry); + } + return htable_errno; + } + return HTABLE_SUCCESS; } -static inline int -htable_delete(void *handle, const char *key) +/* Remove an entry by key from the hash table. No effect if key not found. */ +static inline int htable_delete(void *handle, const char *key) { - int htable_errno = HTABLE_SUCCESS; struct hash_table *table = (struct hash_table *) handle; - if (table == NULL || key == NULL) { return HTABLE_EINVAL; } - struct hash_table_entry *entry = NULL; - htable_errno = find_table_entry(table, key, &entry); + int htable_errno = find_table_entry(table, key, &entry); if (htable_errno != HTABLE_SUCCESS) { + /* Key not found or other error */ return htable_errno; } - - entry->val = NULL; - + /* Unlink the entry from the table (does not free memory yet) */ htable_errno = delete_table_entry(table, entry); if (htable_errno != HTABLE_SUCCESS) { return htable_errno; } - + /* Free the removed entry structure */ htable_errno = destroy_table_entry(entry); if (htable_errno != HTABLE_SUCCESS) { return htable_errno; } - - return check_n_resize_table(table); + /* Check if rehash (shrink table) is needed after deletion */ + htable_errno = rehash_table(table, NULL); /* attempt shrink after deletion */ + if (htable_errno == HTABLE_ENOMEM) { + /* Ignore memory error on shrink operation */ + htable_errno = HTABLE_SUCCESS; + } + return htable_errno; } -static inline int -htable_find(void *handle, const char *key, void **out) +/* Find an entry by key in the hash table. + * Returns HTABLE_SUCCESS and sets *out if found, else HTABLE_ENOVAL. */ +static inline int htable_find(void *handle, const char *key, void **out) { - int htable_errno = HTABLE_SUCCESS; struct hash_table *table = (struct hash_table *) handle; - if (table == NULL || key == NULL || out == NULL) { return HTABLE_EINVAL; } - struct hash_table_entry *entry = NULL; - htable_errno = find_table_entry(table, key, &entry); + int htable_errno = find_table_entry(table, key, &entry); if (htable_errno != HTABLE_SUCCESS) { + *out = NULL; /* ensure output is NULL if not found */ return htable_errno; } - *out = entry->val; - return htable_errno; + return HTABLE_SUCCESS; } -/** - * djb2 hash function - */ -uint64_t -hash_func(const char *string) +/* djb2 string hash function – returns a 64-bit hash for the given string */ +static uint64_t hash_func(const char *str) { - uint64_t hash = 5381; + uint64_t hash = 5381ULL; int c; - while ((c = *string++)) { - hash = ((hash << 5) + hash) + c; + while ((c = *str++) != 0) { + hash = ((hash << 5) + hash) + (uint8_t)c; /* hash * 33 + c */ } return hash; } -int -create_table(uint64_t size, struct hash_table **table) +/* Allocate and initialize a new hash_table structure with the given capacity. */ +static int create_table(uint64_t capacity, struct hash_table **table) { + if (capacity < 1 || table == NULL) { + return HTABLE_EINVAL; + } int htable_errno = HTABLE_SUCCESS; - - *table = papi_calloc(1, sizeof(**table)); - if (*table == NULL) { - htable_errno = HTABLE_ENOMEM; - goto fn_exit; + struct hash_table *t = papi_calloc(1, sizeof(struct hash_table)); + if (t == NULL) { + return HTABLE_ENOMEM; } - - (*table)->buckets = papi_calloc(size, sizeof(*(*table)->buckets)); - if ((*table)->buckets == NULL) { - htable_errno = HTABLE_ENOMEM; - goto fn_exit; + t->buckets = papi_calloc(capacity, sizeof(struct hash_table_entry *)); + if (t->buckets == NULL) { + papi_free(t); + return HTABLE_ENOMEM; } - - (*table)->capacity = size; - - fn_exit: - return htable_errno; + t->capacity = (uint32_t) capacity; + t->size = 0; + *table = t; + return HTABLE_SUCCESS; } -int -destroy_table(struct hash_table *table) +/* Free the memory associated with a hash_table (structure and bucket array). */ +static int destroy_table(struct hash_table *table) { - int htable_errno = HTABLE_SUCCESS; - - if (table && table->buckets) { - papi_free(table->buckets); + if (table == NULL) { + return HTABLE_SUCCESS; } - - if (table) { - papi_free(table); + if (table->buckets != NULL) { + papi_free(table->buckets); } - - return htable_errno; + papi_free(table); + return HTABLE_SUCCESS; } -int -rehash_table(struct hash_table *old_table, struct hash_table *new_table) +/* Rehash the entries from old_table into new_table or perform in-place resizing. + If new_table is NULL, this function checks old_table and resizes it if needed. */ +static int rehash_table(struct hash_table *old_table, struct hash_table *new_table) { - uint64_t old_id; - for (old_id = 0; old_id < old_table->capacity; ++old_id) { - struct hash_table_entry *entry = old_table->buckets[old_id]; - struct hash_table_entry *next; - while (entry) { - next = entry->next; - delete_table_entry(old_table, entry); - insert_table_entry(new_table, entry); - entry = next; + int htable_errno = HTABLE_SUCCESS; + if (new_table == NULL) { + /* Self-resizing mode: determine if growth or shrink is needed */ + char resize = (HTABLE_NEEDS_TO_GROW(old_table) << 1) | HTABLE_NEEDS_TO_SHRINK(old_table); + if (!resize) { + return HTABLE_SUCCESS; /* no resizing needed */ + } + /* Determine new capacity (double or half) */ + uint64_t new_capacity = (resize & 0x2) ? + (uint64_t)old_table->capacity * 2 + : (uint64_t)old_table->capacity / 2; + if (new_capacity < HTABLE_MIN_SIZE) { + new_capacity = HTABLE_MIN_SIZE; + } + /* Allocate a new table structure and buckets */ + htable_errno = create_table(new_capacity, &new_table); + if (htable_errno != HTABLE_SUCCESS) { + return htable_errno; + } + /* Move all entries from old_table into new_table */ + for (uint64_t i = 0; i < old_table->capacity; ++i) { + struct hash_table_entry *entry = old_table->buckets[i]; + while (entry != NULL) { + struct hash_table_entry *next_entry = entry->next; + /* Compute new bucket index (capacity is always power-of-2) */ + uint64_t new_index = hash_func(entry->key) & (new_table->capacity - 1); + /* Insert entry at head of new_table's bucket list */ + entry->next = new_table->buckets[new_index]; + new_table->buckets[new_index] = entry; + entry = next_entry; + } } + new_table->size = old_table->size; + /* Replace old_table's data with new_table's data */ + struct hash_table_entry **old_buckets = old_table->buckets; + old_table->capacity = new_table->capacity; + old_table->size = new_table->size; + old_table->buckets = new_table->buckets; + new_table->buckets = NULL; /* avoid double-free */ + /* Free old bucket array and temporary table structure */ + papi_free(old_buckets); + destroy_table(new_table); + return HTABLE_SUCCESS; } - + /* Explicit rehash into a provided new_table (for manual resizing, if needed) */ + for (uint64_t j = 0; j < old_table->capacity; ++j) { + struct hash_table_entry *entry = old_table->buckets[j]; + while (entry != NULL) { + struct hash_table_entry *next_entry = entry->next; + uint64_t new_index = hash_func(entry->key) & (new_table->capacity - 1); + entry->next = new_table->buckets[new_index]; + new_table->buckets[new_index] = entry; + entry = next_entry; + } + } + new_table->size = old_table->size; return HTABLE_SUCCESS; } -int -move_table(struct hash_table *new_table, struct hash_table *old_table) +/* Free all entries in the hash table (but not the table or buckets themselves). */ +static int destroy_table_entries(struct hash_table *table) { - int htable_errno = HTABLE_SUCCESS; - struct hash_table_entry **old_buckets = old_table->buckets; - - old_table->capacity = new_table->capacity; - old_table->size = new_table->size; - old_table->buckets = new_table->buckets; - new_table->buckets = NULL; - papi_free(old_buckets); - - return htable_errno; -} - -int -destroy_table_entries(struct hash_table *table) -{ - int htable_errno = HTABLE_SUCCESS; - uint64_t i; - - for (i = 0; i < table->capacity; ++i) { + if (table == NULL) { + return HTABLE_SUCCESS; + } + for (uint64_t i = 0; i < table->capacity; ++i) { struct hash_table_entry *entry = table->buckets[i]; - struct hash_table_entry *tmp = NULL; - - while (entry) { - tmp = entry; + while (entry != NULL) { + struct hash_table_entry *tmp = entry; entry = entry->next; - delete_table_entry(table, tmp); - destroy_table_entry(tmp); + papi_free(tmp->key); + papi_free(tmp); } + table->buckets[i] = NULL; } - - return htable_errno; + table->size = 0; + return HTABLE_SUCCESS; } -int -check_n_resize_table(struct hash_table *table) +/* Create a new hash_table_entry with the given key and value. Copies the key string. */ +static int create_table_entry(const char *key, void *val, struct hash_table_entry **entry) { - int htable_errno = HTABLE_SUCCESS; - struct hash_table *new_table = NULL; - char resize = - (HTABLE_NEEDS_TO_GROW(table) << 1) | HTABLE_NEEDS_TO_SHRINK(table); - - if (resize) { - uint64_t new_capacity = (resize & 0x2) ? - table->capacity * 2 : table->capacity / 2; - htable_errno = create_table(new_capacity, &new_table); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - htable_errno = rehash_table(table, new_table); - if (htable_errno != HTABLE_SUCCESS) { - goto fn_fail; - } - - move_table(new_table, table); - destroy_table(new_table); + if (key == NULL || entry == NULL) { + return HTABLE_EINVAL; } - - fn_exit: - return htable_errno; - fn_fail: - if (new_table) { - destroy_table(new_table); + struct hash_table_entry *e = papi_calloc(1, sizeof(struct hash_table_entry)); + if (e == NULL) { + return HTABLE_ENOMEM; } - goto fn_exit; -} - -int -create_table_entry(const char *key, void *val, struct hash_table_entry **entry) -{ - int htable_errno = HTABLE_SUCCESS; - - *entry = papi_calloc(1, sizeof(**entry)); - if (*entry == NULL) { + e->key = papi_strdup(key); + if (e->key == NULL) { /* strdup failure */ + papi_free(e); return HTABLE_ENOMEM; } - (*entry)->key = papi_strdup(key); - (*entry)->val = val; - (*entry)->next = NULL; - - return htable_errno; + e->val = val; + e->next = NULL; + *entry = e; + return HTABLE_SUCCESS; } -int -destroy_table_entry(struct hash_table_entry *entry) +/* Destroy a single hash_table_entry (free its key and memory). */ +static int destroy_table_entry(struct hash_table_entry *entry) { - int htable_errno = HTABLE_SUCCESS; + if (entry == NULL) { + return HTABLE_EINVAL; + } papi_free(entry->key); papi_free(entry); - return htable_errno; + return HTABLE_SUCCESS; } -int -insert_table_entry(struct hash_table *table, struct hash_table_entry *entry) +/* Insert a hash_table_entry into the table (at the head of its bucket list). */ +static int insert_table_entry(struct hash_table *table, struct hash_table_entry *entry) { - int htable_errno = HTABLE_SUCCESS; - - uint64_t id = hash_func(entry->key) % table->capacity; - - if (table->buckets[id]) { - entry->next = table->buckets[id]; + if (table == NULL || entry == NULL) { + return HTABLE_EINVAL; } - - table->buckets[id] = entry; - ++table->size; - - return htable_errno; + /* Compute bucket index and insert at head of list */ + uint64_t index = hash_func(entry->key) & (table->capacity - 1); + entry->next = table->buckets[index]; + table->buckets[index] = entry; + table->size += 1; + return HTABLE_SUCCESS; } -int -delete_table_entry(struct hash_table *table, struct hash_table_entry *entry) +/* Remove a hash_table_entry from its bucket list (does not free the entry). */ +static int delete_table_entry(struct hash_table *table, struct hash_table_entry *entry) { - int htable_errno = HTABLE_SUCCESS; - - uint64_t id = hash_func(entry->key) % table->capacity; - - if (table->buckets[id] == entry) { - table->buckets[id] = entry->next; - entry->next = NULL; - goto fn_exit; + if (table == NULL || entry == NULL) { + return HTABLE_EINVAL; } - - struct hash_table_entry *prev = table->buckets[id]; - struct hash_table_entry *curr = table->buckets[id]->next; - - while (curr) { + uint64_t index = hash_func(entry->key) & (table->capacity - 1); + struct hash_table_entry *curr = table->buckets[index]; + struct hash_table_entry *prev = NULL; + while (curr != NULL) { if (curr == entry) { - prev->next = curr->next; - curr->next = NULL; - break; + /* Found the entry to remove */ + if (prev == NULL) { + /* Entry is at head of the list */ + table->buckets[index] = curr->next; + } else { + /* Entry is in the middle or end of the list */ + prev->next = curr->next; + } + entry->next = NULL; + table->size -= 1; + return HTABLE_SUCCESS; } - prev = prev->next; + prev = curr; curr = curr->next; } - - fn_exit: - --table->size; - return htable_errno; + /* Entry not found (should not happen if a valid pointer was provided) */ + return HTABLE_ENOVAL; } -int -find_table_entry(struct hash_table *table, const char *key, - struct hash_table_entry **entry) +/* Find a hash_table_entry by key in the table. Sets *entry if found. */ +static int find_table_entry(struct hash_table *table, const char *key, struct hash_table_entry **entry) { - int htable_errno; - - uint64_t id = hash_func(key) % table->capacity; - struct hash_table_entry *head = table->buckets[id]; - if (head == NULL) { - htable_errno = HTABLE_ENOVAL; - goto fn_exit; + if (table == NULL || key == NULL || entry == NULL) { + return HTABLE_EINVAL; } - - struct hash_table_entry *curr = head; - while (curr && strcmp(curr->key, key)) { + uint64_t index = hash_func(key) & (table->capacity - 1); + struct hash_table_entry *curr = table->buckets[index]; + while (curr != NULL && strcmp(curr->key, key) != 0) { curr = curr->next; } - *entry = curr; - htable_errno = (curr) ? HTABLE_SUCCESS : HTABLE_ENOVAL; - - fn_exit: - return htable_errno; + return (curr != NULL ? HTABLE_SUCCESS : HTABLE_ENOVAL); } -#endif /* End of __HTABLE_H__ */ + +#endif /* __HTABLE_H__ */ From 03f9c52a93484ea645749f356e58082893caa2cb Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Sun, 14 Sep 2025 23:07:08 -0700 Subject: [PATCH 123/147] format refactor --- src/components/amd_smi/amds_priv.h | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 56516e472..20671fb04 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -93,9 +93,6 @@ int access_amdsmi_energy_count(int mode, void *arg); int access_amdsmi_power_profile_status(int mode, void *arg); int access_amdsmi_uuid_hash(int mode, void *arg); int access_amdsmi_gpu_string_hash(int mode, void *arg); -#if AMDSMI_LIB_VERSION_MAJOR >= 25 -int access_amdsmi_enumeration_info(int mode, void *arg); -#endif int access_amdsmi_asic_info(int mode, void *arg); int access_amdsmi_link_metrics(int mode, void *arg); int access_amdsmi_link_weight(int mode, void *arg); @@ -114,9 +111,6 @@ int access_amdsmi_ecc_status(int mode, void *arg); int access_amdsmi_ecc_enabled_mask(int mode, void *arg); int access_amdsmi_compute_partition_hash(int mode, void *arg); int access_amdsmi_memory_partition_hash(int mode, void *arg); -#if AMDSMI_LIB_VERSION_MAJOR >= 25 -int access_amdsmi_memory_partition_config(int mode, void *arg); -#endif int access_amdsmi_memory_reserved_pages(int mode, void *arg); int access_amdsmi_accelerator_num_partitions(int mode, void *arg); int access_amdsmi_lib_version(int mode, void *arg); @@ -145,18 +139,12 @@ int access_amdsmi_vram_usage(int mode, void *arg); int access_amdsmi_soc_pstate_id(int mode, void *arg); int access_amdsmi_soc_pstate_supported(int mode, void *arg); int access_amdsmi_metrics_header_info(int mode, void *arg); -#if AMDSMI_LIB_VERSION_MAJOR >= 25 -int access_amdsmi_xgmi_link_status(int mode, void *arg); -#endif int access_amdsmi_xgmi_error_status(int mode, void *arg); int access_amdsmi_xgmi_plpd_id(int mode, void *arg); int access_amdsmi_xgmi_plpd_supported(int mode, void *arg); int access_amdsmi_process_isolation(int mode, void *arg); int access_amdsmi_xcd_counter(int mode, void *arg); int access_amdsmi_board_serial_hash(int mode, void *arg); -#if AMDSMI_LIB_VERSION_MAJOR >= 25 -int access_amdsmi_vram_max_bandwidth(int mode, void *arg); -#endif int access_amdsmi_fw_version(int mode, void *arg); int access_amdsmi_bad_page_count(int mode, void *arg); int access_amdsmi_bad_page_threshold(int mode, void *arg); @@ -168,6 +156,14 @@ int access_amdsmi_xgmi_bandwidth(int mode, void *arg); int access_amdsmi_utilization_count(int mode, void *arg); int access_amdsmi_violation_status(int mode, void *arg); +/* Consolidated AMDSMI_LIB_VERSION_MAJOR >= 25 block */ +#if AMDSMI_LIB_VERSION_MAJOR >= 25 +int access_amdsmi_enumeration_info(int mode, void *arg); +int access_amdsmi_memory_partition_config(int mode, void *arg); +int access_amdsmi_xgmi_link_status(int mode, void *arg); +int access_amdsmi_vram_max_bandwidth(int mode, void *arg); +#endif + #ifndef AMDSMI_DISABLE_ESMI int access_amdsmi_cpu_socket_power(int mode, void *arg); int access_amdsmi_cpu_socket_energy(int mode, void *arg); From 6b370f7bd560a8608f6184c0aa540ba84866edd2 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 11:19:16 -0700 Subject: [PATCH 124/147] fail on memeory deletion --- src/components/amd_smi/htable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index 56cce00ea..5a6874bbb 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -142,8 +142,7 @@ static inline int htable_delete(void *handle, const char *key) /* Check if rehash (shrink table) is needed after deletion */ htable_errno = rehash_table(table, NULL); /* attempt shrink after deletion */ if (htable_errno == HTABLE_ENOMEM) { - /* Ignore memory error on shrink operation */ - htable_errno = HTABLE_SUCCESS; + return htable_errno; } return htable_errno; } From 501d2ff76df1bd7de3a67e289fb9c6cbb857a9ed Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 11:26:14 -0700 Subject: [PATCH 125/147] fail on rehash fail --- src/components/amd_smi/htable.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index 5a6874bbb..1b2e85777 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -106,11 +106,6 @@ static inline int htable_insert(void *handle, const char *key, void *in) /* Check if rehash (grow table) is needed after insertion */ htable_errno = rehash_table(table, NULL); /* use NULL to indicate self-resize (growth) */ if (htable_errno != HTABLE_SUCCESS) { - if (htable_errno == HTABLE_ENOMEM) { - /* Roll back the insertion of the new entry on memory error */ - delete_table_entry(table, entry); - destroy_table_entry(entry); - } return htable_errno; } return HTABLE_SUCCESS; From 0707eb1f7748f1f3b2bebdb1ba95de5c0d6158a7 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 12:41:46 -0700 Subject: [PATCH 126/147] check state during read --- src/components/amd_smi/linux-amd-smi.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 02615c95a..9a777b102 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -147,11 +147,6 @@ static int update_native_events(amdsmi_control_t *ctl, NativeInfo_t *ntvInfo, in return PAPI_OK; } -static int try_open_events(amdsmi_control_t *ctl) { - // No pre-opening needed; events will be opened in amds_ctx_start - return PAPI_OK; -} - static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t *nativeInfo, int nativeCount, hwd_context_t *ctx) { int papi_errno = _amd_smi_check_n_initialize(); @@ -167,7 +162,7 @@ static int _amd_smi_update_control_state(hwd_control_state_t *ctrl, NativeInfo_t if (papi_errno != PAPI_OK) { return papi_errno; } - return try_open_events(amdsmi_ctl); + return PAPI_OK; } static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { @@ -199,8 +194,9 @@ static int _amd_smi_start(hwd_context_t *ctx, hwd_control_state_t *ctrl) { static int _amd_smi_read(hwd_context_t *ctx, hwd_control_state_t *ctrl, long long **values, int flags) { (void)ctx; (void)flags; + amdsmi_context_t *amdsmi_ctx = (amdsmi_context_t *)ctx; amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; - if (!amdsmi_ctl->amds_ctx) // fail only if ctx is gone + if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING) || !amdsmi_ctl->amds_ctx) // fail only if ctx is gone return PAPI_EMISC; return amds_ctx_read(amdsmi_ctl->amds_ctx, values); } From d7524469bab1faf3435a0217a493265213f421cb Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 13:15:26 -0700 Subject: [PATCH 127/147] papi_errno amds ctx --- src/components/amd_smi/amds_ctx.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index ed0676474..50f2254a6 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -137,7 +137,7 @@ int amds_ctx_read(amds_ctx_t ctx, long long **counts) { } /* Optional: track first error, but don't bail early */ - int first_err = PAPI_OK; + int papi_errno = PAPI_OK; for (int i = 0; i < ctx->num_events; ++i) { unsigned int id = ctx->events_id[i]; @@ -149,15 +149,14 @@ int amds_ctx_read(amds_ctx_t ctx, long long **counts) { } if (rc == PAPI_OK) { ctx->counters[i] = (long long)ev->value; - } else if (first_err == PAPI_OK) { - first_err = rc; /* remember, but keep going */ + } else if (papi_errno == PAPI_OK) { + papi_errno = rc; /* remember, but keep going */ } } *counts = ctx->counters; - if (first_err != PAPI_OK) return first_err; - return PAPI_OK; + return papi_errno; } int amds_ctx_write(amds_ctx_t ctx, long long *counts) { From 26b4740f18bb8b2b03b2fe65a65de677bcc1baae Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 13:23:52 -0700 Subject: [PATCH 128/147] typo --- src/components/amd_smi/amds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 7e9443ac2..30e980236 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1783,7 +1783,7 @@ static int init_event_table(void) { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "power_cap_dpm:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), - "Device %d DPM power cap (MHz)", d); + "Device %d DPM power cap (W)", d); if (add_event(&idx, name_buf, descr_buf, d, 4, 0, PAPI_MODE_READ, access_amdsmi_power_cap_range) != PAPI_OK) return PAPI_ENOMEM; From 7adbcf4b095303393e199c57c1af6fbd08cb7d8f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 21:26:08 -0700 Subject: [PATCH 129/147] author --- src/amdsmi.h | 6822 ----------------------- src/components/amd_smi/amds.c | 7 + src/components/amd_smi/amds.h | 7 + src/components/amd_smi/amds_accessors.c | 7 + src/components/amd_smi/amds_ctx.c | 7 + src/components/amd_smi/amds_evtapi.c | 7 + src/components/amd_smi/amds_funcs.h | 7 + src/components/amd_smi/amds_priv.h | 7 + src/components/amd_smi/htable.h | 9 + src/components/amd_smi/linux-amd-smi.c | 12 +- 10 files changed, 64 insertions(+), 6828 deletions(-) delete mode 100644 src/amdsmi.h diff --git a/src/amdsmi.h b/src/amdsmi.h deleted file mode 100644 index 99b94b7a7..000000000 --- a/src/amdsmi.h +++ /dev/null @@ -1,6822 +0,0 @@ -/* - * Copyright (c) Advanced Micro Devices, Inc. All rights reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __AMDSMI_H__ -#define __AMDSMI_H__ - -/** - * @file amdsmi.h - * @brief AMD System Management Interface API - */ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#include -#ifdef ENABLE_ESMI_LIB - #include -#endif -#else // __cplusplus -#include -#endif // __cplusplus - -/** - * @brief Initialization flags - * - * Initialization flags may be OR'd together and passed to ::amdsmi_init(). - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_INIT_ALL_PROCESSORS = 0xFFFFFFFF, //!< Initialize all processors - AMDSMI_INIT_AMD_CPUS = (1 << 0), - AMDSMI_INIT_AMD_GPUS = (1 << 1), - AMDSMI_INIT_NON_AMD_CPUS = (1 << 2), - AMDSMI_INIT_NON_AMD_GPUS = (1 << 3), - AMDSMI_INIT_AMD_APUS = (AMDSMI_INIT_AMD_CPUS | AMDSMI_INIT_AMD_GPUS) // Default option -} amdsmi_init_flags_t; - -/** - * @brief Maximum size definitions - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_MM_IP_COUNT 8 -#define AMDSMI_MAX_DATE_LENGTH 32 //!< YYYY-MM-DD:HH:MM:SS.MSC -#define AMDSMI_MAX_STRING_LENGTH 256 -#define AMDSMI_MAX_DEVICES 32 -#define AMDSMI_MAX_DRIVER_VERSION_LENGTH 80 -#define AMDSMI_MAX_CACHE_TYPES 10 -#define AMDSMI_MAX_ACCELERATOR_PROFILE 32 -#define AMDSMI_MAX_CP_PROFILE_RESOURCES 32 -#define AMDSMI_MAX_ACCELERATOR_PARTITIONS 8 -#define AMDSMI_MAX_NUM_NUMA_NODES 32 - -#define AMDSMI_GPU_UUID_SIZE 38 - -/** - * @brief Common defines - * - * @cond @tag{gpu_bm_linux} @endcond - */ -#define AMDSMI_MAX_NAME 32 -#define AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK 64 -#define AMDSMI_MAX_CONTAINER_TYPE 2 -#define AMDSMI_256_LENGTH AMDSMI_MAX_STRING_LENGTH //!< Deprecated - -/** - * @brief The following structure holds the gpu metrics values for a device. - */ - -/** - * @brief Unit conversion factor for HBM temperatures - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define CENTRIGRADE_TO_MILLI_CENTIGRADE 1000 - -/** - * @brief This should match NUM_HBM_INSTANCES - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_NUM_HBM_INSTANCES 4 - -/** - * @brief This should match MAX_NUM_VCN - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_VCN 4 - -/** - * @brief This should match MAX_NUM_CLKS - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_CLKS 4 - -/** - * @brief This should match MAX_NUM_XGMI_LINKS - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_XGMI_LINKS 8 - -/** - * @brief This should match MAX_NUM_GFX_CLKS - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_GFX_CLKS 8 - -/** - * @brief This should match AMDSMI_MAX_AID - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_AID 4 - -/** - * @brief This should match AMDSMI_MAX_ENGINES - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_ENGINES 8 - -/** - * @brief This should match AMDSMI_MAX_NUM_JPEG (8*4=32) - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_JPEG 32 - -/** - * @brief This should match AMDSMI_MAX_NUM_XCC; - * XCC - Accelerated Compute Core, the collection of compute units, - * ACE (Asynchronous Compute Engines), caches, - * and global resources organized as one unit. - * - * Refer to amd.com documentation for more detail: - * https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_XCC 8 - -/** - * @brief This should match AMDSMI_MAX_NUM_XCP; - * XCP - Accelerated Compute Processor, - * also referred to as the Graphics Compute Partitions. - * Each physical gpu could have a maximum of 8 separate partitions - * associated with each (depending on ASIC support). - * - * Refer to amd.com documentation for more detail: - * https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -#define AMDSMI_MAX_NUM_XCP 8 - -/* string format */ -#define AMDSMI_TIME_FORMAT "%02d:%02d:%02d.%03d" -#define AMDSMI_DATE_FORMAT "%04d-%02d-%02d:%02d:%02d:%02d.%03d" - -/** - * @brief library versioning - * - * @cond @tag{gpu_bm_linux} @endcond - */ - -//! Year should follow the IP driver package version: 22.40/23.10 and similar -#define AMDSMI_LIB_VERSION_YEAR 25 //!< To Be Deprecated - -//! Major version should be changed for every header change (adding/deleting APIs, changing names, fields of structures, etc.) -#define AMDSMI_LIB_VERSION_MAJOR 25 - -//! Minor version should be updated for each API change, but without changing headers -#define AMDSMI_LIB_VERSION_MINOR 3 - -//! Release version should be set to 0 as default and can be updated by the PMs for each CSP point release -#define AMDSMI_LIB_VERSION_RELEASE 0 - -#define AMDSMI_LIB_VERSION_CREATE_STRING(MAJOR, MINOR, RELEASE) (#MAJOR "." #MINOR "." #RELEASE) -#define AMDSMI_LIB_VERSION_EXPAND_PARTS(MAJOR_STR, MINOR_STR, RELEASE_STR) AMDSMI_LIB_VERSION_CREATE_STRING(MAJOR_STR, MINOR_STR, RELEASE_STR) -#define AMDSMI_LIB_VERSION_STRING AMDSMI_LIB_VERSION_EXPAND_PARTS(AMDSMI_LIB_VERSION_MAJOR, AMDSMI_LIB_VERSION_MINOR, AMDSMI_LIB_VERSION_RELEASE) - -/** - * @brief GPU Capability info - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_MM_UVD, - AMDSMI_MM_VCE, - AMDSMI_MM_VCN, - AMDSMI_MM__MAX -} amdsmi_mm_ip_t; - -/** - * @brief Container - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_CONTAINER_LXC, - AMDSMI_CONTAINER_DOCKER, -} amdsmi_container_types_t; - -/** - * @brief opaque handler point to underlying implementation - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond - */ -typedef void *amdsmi_processor_handle; -typedef void *amdsmi_socket_handle; - -#ifdef ENABLE_ESMI_LIB - -/** - * @brief opaque handler point to underlying implementation - * - * @cond @tag{cpu_bm} @endcond - */ -typedef void *amdsmi_cpusocket_handle; - -/** - * @brief This structure holds HSMP Driver version information. - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint32_t major; //!< Major version number - uint32_t minor; //!< Minor version number -} amdsmi_hsmp_driver_version_t; - -#endif - -/** - * @brief Processor types detectable by AMD SMI - * - * AMDSMI_PROCESSOR_TYPE_AMD_CPU - CPU Socket is a physical component that holds the CPU. - * AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE - CPU Cores are number of individual processing units within the CPU. - * AMDSMI_PROCESSOR_TYPE_AMD_APU - Combination of AMDSMI_PROCESSOR_TYPE_AMD_CPU and integrated GPU on single die - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_PROCESSOR_TYPE_UNKNOWN = 0, - AMDSMI_PROCESSOR_TYPE_AMD_GPU, - AMDSMI_PROCESSOR_TYPE_AMD_CPU, - AMDSMI_PROCESSOR_TYPE_NON_AMD_GPU, - AMDSMI_PROCESSOR_TYPE_NON_AMD_CPU, - AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, - AMDSMI_PROCESSOR_TYPE_AMD_APU -} processor_type_t; - -/** - * @brief Error codes returned by amdsmi functions - * - * Please avoid status codes that are multiples of 256 (256, 512, etc..) - * Return values in the shell get modulo 256 applied, meaning any multiple of 256 ends up as 0 - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{cpu_bm} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_STATUS_SUCCESS = 0, //!< Call succeeded - // Library usage errors - AMDSMI_STATUS_INVAL = 1, //!< Invalid parameters - AMDSMI_STATUS_NOT_SUPPORTED = 2, //!< Command not supported - AMDSMI_STATUS_NOT_YET_IMPLEMENTED = 3, //!< Not implemented yet - AMDSMI_STATUS_FAIL_LOAD_MODULE = 4, //!< Fail to load lib - AMDSMI_STATUS_FAIL_LOAD_SYMBOL = 5, //!< Fail to load symbol - AMDSMI_STATUS_DRM_ERROR = 6, //!< Error when call libdrm - AMDSMI_STATUS_API_FAILED = 7, //!< API call failed - AMDSMI_STATUS_TIMEOUT = 8, //!< Timeout in API call - AMDSMI_STATUS_RETRY = 9, //!< Retry operation - AMDSMI_STATUS_NO_PERM = 10, //!< Permission Denied - AMDSMI_STATUS_INTERRUPT = 11, //!< An interrupt occurred during execution of function - AMDSMI_STATUS_IO = 12, //!< I/O Error - AMDSMI_STATUS_ADDRESS_FAULT = 13, //!< Bad address - AMDSMI_STATUS_FILE_ERROR = 14, //!< Problem accessing a file - AMDSMI_STATUS_OUT_OF_RESOURCES = 15, //!< Not enough memory - AMDSMI_STATUS_INTERNAL_EXCEPTION = 16, //!< An internal exception was caught - AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS = 17, //!< The provided input is out of allowable or safe range - AMDSMI_STATUS_INIT_ERROR = 18, //!< An error occurred when initializing internal data structures - AMDSMI_STATUS_REFCOUNT_OVERFLOW = 19, //!< An internal reference counter exceeded INT32_MAX - // Processor related errors - AMDSMI_STATUS_BUSY = 30, //!< Processor busy - AMDSMI_STATUS_NOT_FOUND = 31, //!< Processor Not found - AMDSMI_STATUS_NOT_INIT = 32, //!< Processor not initialized - AMDSMI_STATUS_NO_SLOT = 33, //!< No more free slot - AMDSMI_STATUS_DRIVER_NOT_LOADED = 34, //!< Processor driver not loaded - // Data and size errors - AMDSMI_STATUS_NO_DATA = 40, //!< No data was found for a given input - AMDSMI_STATUS_INSUFFICIENT_SIZE = 41, //!< Not enough resources were available for the operation - AMDSMI_STATUS_UNEXPECTED_SIZE = 42, //!< An unexpected amount of data was read - AMDSMI_STATUS_UNEXPECTED_DATA = 43, //!< The data read or provided to function is not what was expected - //esmi errors - AMDSMI_STATUS_NON_AMD_CPU = 44, //!< System has different cpu than AMD - AMDSMI_STATUS_NO_ENERGY_DRV = 45, //!< Energy driver not found - AMDSMI_STATUS_NO_MSR_DRV = 46, //!< MSR driver not found - AMDSMI_STATUS_NO_HSMP_DRV = 47, //!< HSMP driver not found - AMDSMI_STATUS_NO_HSMP_SUP = 48, //!< HSMP not supported - AMDSMI_STATUS_NO_HSMP_MSG_SUP = 49, //!< HSMP message/feature not supported - AMDSMI_STATUS_HSMP_TIMEOUT = 50, //!< HSMP message timed out - AMDSMI_STATUS_NO_DRV = 51, //!< No Energy and HSMP driver present - AMDSMI_STATUS_FILE_NOT_FOUND = 52, //!< file or directory not found - AMDSMI_STATUS_ARG_PTR_NULL = 53, //!< Parsed argument is invalid - AMDSMI_STATUS_AMDGPU_RESTART_ERR = 54, //!< AMDGPU restart failed - AMDSMI_STATUS_SETTING_UNAVAILABLE = 55, //!< Setting is not available - AMDSMI_STATUS_CORRUPTED_EEPROM = 56, //!< EEPROM is corrupted - // General errors - AMDSMI_STATUS_MAP_ERROR = 0xFFFFFFFE, //!< The internal library error did not map to a status code - AMDSMI_STATUS_UNKNOWN_ERROR = 0xFFFFFFFF, //!< An unknown error occurred -} amdsmi_status_t; - -/** - * @brief Clock types - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_CLK_TYPE_SYS = 0x0, //!< System clock - AMDSMI_CLK_TYPE_FIRST = AMDSMI_CLK_TYPE_SYS, - AMDSMI_CLK_TYPE_GFX = AMDSMI_CLK_TYPE_SYS, - AMDSMI_CLK_TYPE_DF, //!< Data Fabric clock (for ASICs - //!< running on a separate clock) - AMDSMI_CLK_TYPE_DCEF, //!< Display Controller Engine clock - AMDSMI_CLK_TYPE_SOC, - AMDSMI_CLK_TYPE_MEM, - AMDSMI_CLK_TYPE_PCIE, - AMDSMI_CLK_TYPE_VCLK0, - AMDSMI_CLK_TYPE_VCLK1, - AMDSMI_CLK_TYPE_DCLK0, - AMDSMI_CLK_TYPE_DCLK1, - AMDSMI_CLK_TYPE__MAX = AMDSMI_CLK_TYPE_DCLK1 -} amdsmi_clk_type_t; - -/** - * @brief Accelerator Partition - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_ACCELERATOR_PARTITION_INVALID = 0, - AMDSMI_ACCELERATOR_PARTITION_SPX, //!< Single GPU mode (SPX)- All XCCs work - //!< together with shared memory - AMDSMI_ACCELERATOR_PARTITION_DPX, //!< Dual GPU mode (DPX)- Half XCCs work - //!< together with shared memory - AMDSMI_ACCELERATOR_PARTITION_TPX, //!< Triple GPU mode (TPX)- One-third XCCs - //!< work together with shared memory - AMDSMI_ACCELERATOR_PARTITION_QPX, //!< Quad GPU mode (QPX)- Quarter XCCs - //!< work together with shared memory - AMDSMI_ACCELERATOR_PARTITION_CPX, //!< Core mode (CPX)- Per-chip XCC with - //!< shared memory - AMDSMI_ACCELERATOR_PARTITION_MAX -} amdsmi_accelerator_partition_type_t; - -/** - * @brief Accelerator Partition Resource Types - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_ACCELERATOR_XCC, - AMDSMI_ACCELERATOR_ENCODER, - AMDSMI_ACCELERATOR_DECODER, - AMDSMI_ACCELERATOR_DMA, - AMDSMI_ACCELERATOR_JPEG, - AMDSMI_ACCELERATOR_MAX -} amdsmi_accelerator_partition_resource_type_t; - -/** - * @brief Compute Partition. This enum is used to identify - * various compute partitioning settings. - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_COMPUTE_PARTITION_INVALID = 0, - AMDSMI_COMPUTE_PARTITION_SPX, //!< Single GPU mode (SPX)- All XCCs work - //!< together with shared memory - AMDSMI_COMPUTE_PARTITION_DPX, //!< Dual GPU mode (DPX)- Half XCCs work - //!< together with shared memory - AMDSMI_COMPUTE_PARTITION_TPX, //!< Triple GPU mode (TPX)- One-third XCCs - //!< work together with shared memory - AMDSMI_COMPUTE_PARTITION_QPX, //!< Quad GPU mode (QPX)- Quarter XCCs - //!< work together with shared memory - AMDSMI_COMPUTE_PARTITION_CPX //!< Core mode (CPX)- Per-chip XCC with - //!< shared memory -} amdsmi_compute_partition_type_t; - -/** - * @brief Memory Partitions - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_MEMORY_PARTITION_UNKNOWN = 0, - AMDSMI_MEMORY_PARTITION_NPS1 = 1, //!< NPS1 - All CCD & XCD data is interleaved - //!< across all 8 HBM stacks (all stacks/1). - AMDSMI_MEMORY_PARTITION_NPS2 = 2, //!< NPS2 - 2 sets of CCDs or 4 XCD interleaved - //!< across the 4 HBM stacks per AID pair - //!< (8 stacks/2). - AMDSMI_MEMORY_PARTITION_NPS4 = 4, //!< NPS4 - Each XCD data is interleaved - //!< across 2 (or single) HBM stacks - //!< (8 stacks/8 or 8 stacks/4). - AMDSMI_MEMORY_PARTITION_NPS8 = 8, //!< NPS8 - Each XCD uses a single HBM stack - //!< (8 stacks/8). Or each XCD uses a single - //!< HBM stack & CCDs share 2 non-interleaved - //!< HBM stacks on its AID - //!< (AID[1,2,3] = 6 stacks/6). -} amdsmi_memory_partition_type_t; - -/** - * @brief This enumeration is used to indicate from which part of the processor a - * temperature reading should be obtained. - * - * @cond @tag{gpu_bm_linux} @tag{host} @tag{guest_windows} @endcond - */ -typedef enum { - AMDSMI_TEMPERATURE_TYPE_EDGE, - AMDSMI_TEMPERATURE_TYPE_FIRST = AMDSMI_TEMPERATURE_TYPE_EDGE, - AMDSMI_TEMPERATURE_TYPE_HOTSPOT, - AMDSMI_TEMPERATURE_TYPE_JUNCTION = AMDSMI_TEMPERATURE_TYPE_HOTSPOT, - AMDSMI_TEMPERATURE_TYPE_VRAM, - AMDSMI_TEMPERATURE_TYPE_HBM_0, - AMDSMI_TEMPERATURE_TYPE_HBM_1, - AMDSMI_TEMPERATURE_TYPE_HBM_2, - AMDSMI_TEMPERATURE_TYPE_HBM_3, - AMDSMI_TEMPERATURE_TYPE_PLX, - AMDSMI_TEMPERATURE_TYPE__MAX = AMDSMI_TEMPERATURE_TYPE_PLX -} amdsmi_temperature_type_t; - -/** - * @brief The values of this enum are used to identify the various firmware - * blocks. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_FW_ID_SMU = 1, - AMDSMI_FW_ID_FIRST = AMDSMI_FW_ID_SMU, - AMDSMI_FW_ID_CP_CE, - AMDSMI_FW_ID_CP_PFP, - AMDSMI_FW_ID_CP_ME, - AMDSMI_FW_ID_CP_MEC_JT1, - AMDSMI_FW_ID_CP_MEC_JT2, - AMDSMI_FW_ID_CP_MEC1, - AMDSMI_FW_ID_CP_MEC2, - AMDSMI_FW_ID_RLC, - AMDSMI_FW_ID_SDMA0, - AMDSMI_FW_ID_SDMA1, - AMDSMI_FW_ID_SDMA2, - AMDSMI_FW_ID_SDMA3, - AMDSMI_FW_ID_SDMA4, - AMDSMI_FW_ID_SDMA5, - AMDSMI_FW_ID_SDMA6, - AMDSMI_FW_ID_SDMA7, - AMDSMI_FW_ID_VCN, - AMDSMI_FW_ID_UVD, - AMDSMI_FW_ID_VCE, - AMDSMI_FW_ID_ISP, - AMDSMI_FW_ID_DMCU_ERAM, /*eRAM*/ - AMDSMI_FW_ID_DMCU_ISR, /*ISR*/ - AMDSMI_FW_ID_RLC_RESTORE_LIST_GPM_MEM, - AMDSMI_FW_ID_RLC_RESTORE_LIST_SRM_MEM, - AMDSMI_FW_ID_RLC_RESTORE_LIST_CNTL, - AMDSMI_FW_ID_RLC_V, - AMDSMI_FW_ID_MMSCH, - AMDSMI_FW_ID_PSP_SYSDRV, - AMDSMI_FW_ID_PSP_SOSDRV, - AMDSMI_FW_ID_PSP_TOC, - AMDSMI_FW_ID_PSP_KEYDB, - AMDSMI_FW_ID_DFC, - AMDSMI_FW_ID_PSP_SPL, - AMDSMI_FW_ID_DRV_CAP, - AMDSMI_FW_ID_MC, - AMDSMI_FW_ID_PSP_BL, - AMDSMI_FW_ID_CP_PM4, - AMDSMI_FW_ID_RLC_P, - AMDSMI_FW_ID_SEC_POLICY_STAGE2, - AMDSMI_FW_ID_REG_ACCESS_WHITELIST, - AMDSMI_FW_ID_IMU_DRAM, - AMDSMI_FW_ID_IMU_IRAM, - AMDSMI_FW_ID_SDMA_TH0, - AMDSMI_FW_ID_SDMA_TH1, - AMDSMI_FW_ID_CP_MES, - AMDSMI_FW_ID_MES_KIQ, - AMDSMI_FW_ID_MES_STACK, - AMDSMI_FW_ID_MES_THREAD1, - AMDSMI_FW_ID_MES_THREAD1_STACK, - AMDSMI_FW_ID_RLX6, - AMDSMI_FW_ID_RLX6_DRAM_BOOT, - AMDSMI_FW_ID_RS64_ME, - AMDSMI_FW_ID_RS64_ME_P0_DATA, - AMDSMI_FW_ID_RS64_ME_P1_DATA, - AMDSMI_FW_ID_RS64_PFP, - AMDSMI_FW_ID_RS64_PFP_P0_DATA, - AMDSMI_FW_ID_RS64_PFP_P1_DATA, - AMDSMI_FW_ID_RS64_MEC, - AMDSMI_FW_ID_RS64_MEC_P0_DATA, - AMDSMI_FW_ID_RS64_MEC_P1_DATA, - AMDSMI_FW_ID_RS64_MEC_P2_DATA, - AMDSMI_FW_ID_RS64_MEC_P3_DATA, - AMDSMI_FW_ID_PPTABLE, - AMDSMI_FW_ID_PSP_SOC, - AMDSMI_FW_ID_PSP_DBG, - AMDSMI_FW_ID_PSP_INTF, - AMDSMI_FW_ID_RLX6_CORE1, - AMDSMI_FW_ID_RLX6_DRAM_BOOT_CORE1, - AMDSMI_FW_ID_RLCV_LX7, - AMDSMI_FW_ID_RLC_SAVE_RESTORE_LIST, - AMDSMI_FW_ID_ASD, - AMDSMI_FW_ID_TA_RAS, - AMDSMI_FW_ID_TA_XGMI, - AMDSMI_FW_ID_RLC_SRLG, - AMDSMI_FW_ID_RLC_SRLS, - AMDSMI_FW_ID_PM, - AMDSMI_FW_ID_DMCU, - AMDSMI_FW_ID__MAX -} amdsmi_fw_block_t; - -/** - * @brief vRam Types. This enum is used to identify various VRam types. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_VRAM_TYPE_UNKNOWN = 0, - // HBM - AMDSMI_VRAM_TYPE_HBM = 1, - AMDSMI_VRAM_TYPE_HBM2 = 2, - AMDSMI_VRAM_TYPE_HBM2E = 3, - AMDSMI_VRAM_TYPE_HBM3 = 4, - // DDR - AMDSMI_VRAM_TYPE_DDR2 = 10, - AMDSMI_VRAM_TYPE_DDR3 = 11, - AMDSMI_VRAM_TYPE_DDR4 = 12, - // GDDR - AMDSMI_VRAM_TYPE_GDDR1 = 17, - AMDSMI_VRAM_TYPE_GDDR2 = 18, - AMDSMI_VRAM_TYPE_GDDR3 = 19, - AMDSMI_VRAM_TYPE_GDDR4 = 20, - AMDSMI_VRAM_TYPE_GDDR5 = 21, - AMDSMI_VRAM_TYPE_GDDR6 = 22, - AMDSMI_VRAM_TYPE_GDDR7 = 23, - AMDSMI_VRAM_TYPE__MAX = AMDSMI_VRAM_TYPE_GDDR7 -} amdsmi_vram_type_t; - -/** - * @brief VRam Vendor Types - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_VRAM_VENDOR_SAMSUNG, - AMDSMI_VRAM_VENDOR_INFINEON, - AMDSMI_VRAM_VENDOR_ELPIDA, - AMDSMI_VRAM_VENDOR_ETRON, - AMDSMI_VRAM_VENDOR_NANYA, - AMDSMI_VRAM_VENDOR_HYNIX, - AMDSMI_VRAM_VENDOR_MOSEL, - AMDSMI_VRAM_VENDOR_WINBOND, - AMDSMI_VRAM_VENDOR_ESMT, - AMDSMI_VRAM_VENDOR_MICRON, - AMDSMI_VRAM_VENDOR_UNKNOWN -} amdsmi_vram_vendor_type_t; - -/** - * @brief This structure represents a range (e.g., frequencies or voltages). - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint64_t lower_bound; //!< Lower bound of range - uint64_t upper_bound; //!< Upper bound of range - uint64_t reserved[2]; -} amdsmi_range_t; - -/** - * @brief XGMI Information - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint8_t xgmi_lanes; - uint64_t xgmi_hive_id; - uint64_t xgmi_node_id; - uint32_t index; - uint32_t reserved[9]; -} amdsmi_xgmi_info_t; - -/** - * @brief VRam Usage - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t vram_total; //!< In MB - uint32_t vram_used; //!< In MB - uint32_t reserved[2]; -} amdsmi_vram_usage_t; - -/** - * @brief This structure hold violation status information. - * Note: for MI3x asics and higher, older ASICs will show unsupported. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint64_t reference_timestamp; //!< Represents CPU timestamp in microseconds (uS) - uint64_t violation_timestamp; //!< Violation time. Units in nanoseconds (ns) {@linux_bm}, in milliseconds (ms) {@host} - uint64_t acc_counter; //!< Current accumulated counter; Max uint64 means unsupported - uint64_t acc_prochot_thrm; //!< Current accumulated processor hot violation count; Max uint64 means unsupported - uint64_t acc_ppt_pwr; //!< PVIOL; Current accumulated Package Power Tracking (PPT) count; Max uint64 means unsupported - uint64_t acc_socket_thrm; //!< TVIOL; Current accumulated Socket thermal count; Max uint64 means unsupported - uint64_t acc_vr_thrm; //!< Current accumulated voltage regulator count; Max uint64 means unsupported - uint64_t acc_hbm_thrm; //!< Current accumulated High Bandwidth Memory (HBM) thermal count; Max uint64 means unsupported - uint64_t acc_gfx_clk_below_host_limit; //!< Current graphic clock below host limit count; Max uint64 means unsupported - uint64_t per_prochot_thrm; //!< Processor hot violation % (greater than 0% is a violation); Max uint64 means unsupported - uint64_t per_ppt_pwr; //!< PVIOL; Package Power Tracking (PPT) violation % (greater than 0% is a violation); Max uint64 means unsupported - uint64_t per_socket_thrm; //!< TVIOL; Socket thermal violation % (greater than 0% is a violation); Max uint64 means unsupported - uint64_t per_vr_thrm; //!< Voltage regulator violation % (greater than 0% is a violation); Max uint64 means unsupported - uint64_t per_hbm_thrm; //!< High Bandwidth Memory (HBM) thermal violation % (greater than 0% is a violation); Max uint64 means unsupported - uint64_t per_gfx_clk_below_host_limit; //!< Graphics clock below host limit violation % (greater than 0% is a violation); Max uint64 means unsupported - uint8_t active_prochot_thrm; //!< Processor hot violation; 1 = active 0 = not active; Max uint8 means unsupported - uint8_t active_ppt_pwr; //!< Package Power Tracking (PPT) violation; 1 = active 0 = not active; Max uint8 means unsupported - uint8_t active_socket_thrm; //!< Socket thermal violation; 1 = active 0 = not active; Max uint8 means unsupported - uint8_t active_vr_thrm; //!< Voltage regulator violation; 1 = active 0 = not active; Max uint8 means unsupported - uint8_t active_hbm_thrm; //!< High Bandwidth Memory (HBM) thermal violation; 1 = active 0 = not active; Max uint8 means unsupported - uint8_t active_gfx_clk_below_host_limit; //!< Graphics clock below host limit violation; 1 = active 0 = not active; Max uint8 means unsupported - uint64_t reserved[3]; //!< Reserved for new violation info -} amdsmi_violation_status_t; - -/** - * @brief Frequency Range - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - amdsmi_range_t supported_freq_range; //!< In MHz - amdsmi_range_t current_freq_range; //!< In MHz - uint32_t reserved[8]; -} amdsmi_frequency_range_t; - -/** - * @brief bdf types - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef union { - struct { - uint64_t function_number : 3; - uint64_t device_number : 5; - uint64_t bus_number : 8; - uint64_t domain_number : 48; - }; - uint64_t as_uint; -} amdsmi_bdf_t; - -/** - * @brief Structure holds enumeration information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint32_t drm_render; // the render node under /sys/class/drm/renderD* - uint32_t drm_card; // the graphic card device under /sys/class/drm/card* - uint32_t hsa_id; // the HSA enumeration ID - uint32_t hip_id; // the HIP enumeration ID - char hip_uuid[AMDSMI_MAX_STRING_LENGTH]; // the HIP unique identifer -} amdsmi_enumeration_info_t; - -/** - * @brief Card Form Factor - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_CARD_FORM_FACTOR_PCIE, - AMDSMI_CARD_FORM_FACTOR_OAM, - AMDSMI_CARD_FORM_FACTOR_CEM, - AMDSMI_CARD_FORM_FACTOR_UNKNOWN -} amdsmi_card_form_factor_t; - -/** - * @brief pcie information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - struct pcie_static_ { - uint16_t max_pcie_width; //!< maximum number of PCIe lanes - uint32_t max_pcie_speed; //!< maximum PCIe speed in GT/s - uint32_t pcie_interface_version; //!< PCIe interface version - amdsmi_card_form_factor_t slot_type; //!< card form factor - uint32_t max_pcie_interface_version; //!< maximum PCIe link generation - uint64_t reserved[9]; - } pcie_static; - struct pcie_metric_ { - uint16_t pcie_width; //!< current PCIe width - uint32_t pcie_speed; //!< current PCIe speed in MT/s - uint32_t pcie_bandwidth; //!< current instantaneous PCIe bandwidth in Mb/s - uint64_t pcie_replay_count; //!< total number of the replays issued on the PCIe link - uint64_t pcie_l0_to_recovery_count; //!< total number of times the PCIe link transitioned from L0 to the recovery state - uint64_t pcie_replay_roll_over_count; //!< total number of replay rollovers issued on the PCIe link - uint64_t pcie_nak_sent_count; //!< total number of NAKs issued on the PCIe link by the device - uint64_t pcie_nak_received_count; //!< total number of NAKs issued on the PCIe link by the receiver - uint32_t pcie_lc_perf_other_end_recovery_count; //!< PCIe other end recovery counter - uint64_t reserved[12]; - } pcie_metric; - uint64_t reserved[32]; -} amdsmi_pcie_info_t; - -/** - * @brief Power Cap Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint64_t power_cap; //!< current power cap Units uW {@linux_bm} or W {@host} - uint64_t default_power_cap; //!< default power cap Units uW {@linux_bm} or W {@host} - uint64_t dpm_cap; //!< dpm power cap Units MHz {@linux_bm} or Hz {@host} - uint64_t min_power_cap; //!< minimum power cap Units uW {@linux_bm} or W {@host} - uint64_t max_power_cap; //!< maximum power cap Units uW {@linux_bm} or W {@host} - uint64_t reserved[3]; -} amdsmi_power_cap_info_t; - -/** - * @brief VBios Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - char name[AMDSMI_MAX_STRING_LENGTH]; - char build_date[AMDSMI_MAX_DATE_LENGTH]; - char part_number[AMDSMI_MAX_STRING_LENGTH]; - char version[AMDSMI_MAX_STRING_LENGTH]; - uint64_t reserved[32]; -} amdsmi_vbios_info_t; - -/** - * @brief cache properties - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_CACHE_PROPERTY_ENABLED = 0x00000001, - AMDSMI_CACHE_PROPERTY_DATA_CACHE = 0x00000002, - AMDSMI_CACHE_PROPERTY_INST_CACHE = 0x00000004, - AMDSMI_CACHE_PROPERTY_CPU_CACHE = 0x00000008, - AMDSMI_CACHE_PROPERTY_SIMD_CACHE = 0x00000010, -} amdsmi_cache_property_type_t; - -/** - * @brief GPU Cache Information - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t num_cache_types; - struct cache_ { - uint32_t cache_properties; //!< amdsmi_cache_property_type_t which is a bitmask - uint32_t cache_size; //!< In KB - uint32_t cache_level; - uint32_t max_num_cu_shared; //!< Indicates how many Compute Units share this cache instance - uint32_t num_cache_instance; //!< total number of instance of this cache type - uint32_t reserved[3]; - } cache[AMDSMI_MAX_CACHE_TYPES]; - uint32_t reserved[15]; -} amdsmi_gpu_cache_info_t; - -/** - * @brief Firmware Information - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint8_t num_fw_info; - struct fw_info_list_ { - amdsmi_fw_block_t fw_id; - uint64_t fw_version; - uint64_t reserved[2]; - } fw_info_list[AMDSMI_FW_ID__MAX]; - uint32_t reserved[7]; -} amdsmi_fw_info_t; - -/** - * @brief ASIC Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - char market_name[AMDSMI_MAX_STRING_LENGTH]; - uint32_t vendor_id; //!< Use 32 bit to be compatible with other platform. - char vendor_name[AMDSMI_MAX_STRING_LENGTH]; - uint32_t subvendor_id; //!< The subsystem vendor id - uint64_t device_id; //!< The device id of a GPU - uint32_t rev_id; - char asic_serial[AMDSMI_MAX_STRING_LENGTH]; - uint32_t oam_id; //!< 0xFFFF if not supported - uint32_t num_of_compute_units; //!< 0xFFFFFFFF if not supported - uint64_t target_graphics_version; //!< 0xFFFFFFFFFFFFFFFF if not supported - uint32_t reserved[22]; -} amdsmi_asic_info_t; - - -/** - * @brief Structure holds kfd information - * - * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond - */ -typedef struct { - uint64_t kfd_id; //< 0xFFFFFFFFFFFFFFFF if not supported - uint32_t node_id; //< 0xFFFFFFFF if not supported - uint32_t current_partition_id; //< 0xFFFFFFFF if not supported - uint32_t reserved[12]; -} amdsmi_kfd_info_t; - -/** - * @brief This union holds memory partition bitmask. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef union { - struct nps_flags_ { - uint32_t nps1_cap :1; //!< bool 1 = true; 0 = false - uint32_t nps2_cap :1; //!< bool 1 = true; 0 = false - uint32_t nps4_cap :1; //!< bool 1 = true; 0 = false - uint32_t nps8_cap :1; //!< bool 1 = true; 0 = false - uint32_t reserved :28; - } nps_flags; - uint32_t nps_cap_mask; -} amdsmi_nps_caps_t; - -/** - * @brief Memory Partition Configuration. - * This structure is used to identify various memory partition configurations. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - amdsmi_nps_caps_t partition_caps; - amdsmi_memory_partition_type_t mp_mode; - uint32_t num_numa_ranges; - struct numa_range_ { - amdsmi_vram_type_t memory_type; - uint64_t start; - uint64_t end; - } numa_range[AMDSMI_MAX_NUM_NUMA_NODES]; - uint64_t reserved[11]; -} amdsmi_memory_partition_config_t; - -/** - * @brief Accelerator Partition Resource Profile - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - amdsmi_accelerator_partition_type_t profile_type; //!< SPX, DPX, QPX, CPX and so on - uint32_t num_partitions; //!< On MI300X: SPX=>1, DPX=>2, QPX=>4, CPX=>8; length of resources - amdsmi_nps_caps_t memory_caps; //!< Possible memory partition capabilities - uint32_t profile_index; //!< Index in the profiles array in amdsmi_accelerator_partition_profile_t - uint32_t num_resources; //!< length of index_of_resources_profile - uint32_t resources[AMDSMI_MAX_ACCELERATOR_PARTITIONS][AMDSMI_MAX_CP_PROFILE_RESOURCES]; - uint64_t reserved[13]; -} amdsmi_accelerator_partition_profile_t; - -/** - * @brief Accelerator Partition Resources. - * This struct is used to identify various partition resource profiles. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint32_t profile_index; - amdsmi_accelerator_partition_resource_type_t resource_type; - uint32_t partition_resource; //!< Resources a partition can use, which may be shared - uint32_t num_partitions_share_resource; //!< If it is greater than 1, then resource is shared. - uint64_t reserved[6]; -} amdsmi_accelerator_partition_resource_profile_t; - -/** - * @brief Accelerator Partition Profile Configurations - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint32_t num_profiles; //!< The length of profiles array - uint32_t num_resource_profiles; - amdsmi_accelerator_partition_resource_profile_t resource_profiles[AMDSMI_MAX_CP_PROFILE_RESOURCES]; - uint32_t default_profile_index; //!< The index of the default profile in the profiles array - amdsmi_accelerator_partition_profile_t profiles[AMDSMI_MAX_ACCELERATOR_PROFILE]; - uint64_t reserved[30]; -} amdsmi_accelerator_partition_profile_config_t; - -/** - * @brief Link type - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_LINK_TYPE_INTERNAL, - AMDSMI_LINK_TYPE_XGMI, - AMDSMI_LINK_TYPE_PCIE, - AMDSMI_LINK_TYPE_NOT_APPLICABLE, - AMDSMI_LINK_TYPE_UNKNOWN -} amdsmi_link_type_t; - -/** - * @brief Link Metrics - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t num_links; //!< number of links - struct _links { - amdsmi_bdf_t bdf; - uint32_t bit_rate; //!< current link speed in Gb/s - uint32_t max_bandwidth; //!< max bandwidth of the link in Gb/s - amdsmi_link_type_t link_type; //!< type of the link - uint64_t read; //!< total data received for each link in KB - uint64_t write; //!< total data transfered for each link in KB - uint64_t reserved[2]; - } links[AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK]; - uint64_t reserved[7]; -} amdsmi_link_metrics_t; - -/** - * @brief VRam Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - amdsmi_vram_type_t vram_type; - amdsmi_vram_vendor_type_t vram_vendor; - uint64_t vram_size; //!< vram size in MB - uint32_t vram_bit_width; //!< In bits - uint64_t vram_max_bandwidth; //!< The VRAM max bandwidth at current memory clock (GB/s) - uint64_t reserved[4]; -} amdsmi_vram_info_t; - -/** - * @brief Driver Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - char driver_version[AMDSMI_MAX_STRING_LENGTH]; - char driver_date[AMDSMI_MAX_STRING_LENGTH]; - char driver_name[AMDSMI_MAX_STRING_LENGTH]; -} amdsmi_driver_info_t; - -/** - * @brief Board Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - char model_number[AMDSMI_MAX_STRING_LENGTH]; - char product_serial[AMDSMI_MAX_STRING_LENGTH]; - char fru_id[AMDSMI_MAX_STRING_LENGTH]; - char product_name[AMDSMI_MAX_STRING_LENGTH]; - char manufacturer_name[AMDSMI_MAX_STRING_LENGTH]; - uint64_t reserved[32]; -} amdsmi_board_info_t; - -/** - * @brief Power Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint64_t socket_power; //!< Units in uW {@host}, Host only - uint32_t current_socket_power; //!< Units in W {@linux_bm}, Linux only - uint32_t average_socket_power; //!< Units in W {@linux_bm}, Linux only - uint32_t gfx_voltage; //!< GFX voltage measurement in mV {@linux_bm} or V {@host} - uint32_t soc_voltage; //!< SOC voltage measurement in mV {@linux_bm} or V {@host} - uint32_t mem_voltage; //!< MEM voltage measurement in mV {@linux_bm} or V {@host} - uint32_t power_limit; //!< The power limit in W {@linux_bm}, Linux only - uint32_t reserved[2]; -} amdsmi_power_info_t; - -/** - * @brief Clock Information - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint32_t clk; //!< In MHz - uint32_t min_clk; //!< In MHz - uint32_t max_clk; //!< In MHz - uint8_t clk_locked; //!< True/False - uint8_t clk_deep_sleep; //!< In MHz - uint32_t reserved[4]; -} amdsmi_clk_info_t; - -/** - * @brief Engine Usage - * amdsmi_engine_usage_t: - * This structure holds common - * GPU activity values seen in both BM or - * SRIOV - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - **/ -typedef struct { - uint32_t gfx_activity; //!< In % - uint32_t umc_activity; //!< In % - uint32_t mm_activity; //!< In % - uint32_t reserved[13]; -} amdsmi_engine_usage_t; - -/** - * @brief Process Handle - * - * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond - */ -typedef uint32_t amdsmi_process_handle_t; - -/** - * @brief Process Information - * - * @cond @tag{gpu_bm_linux} @tag{guest_windows} @endcond - */ -typedef struct { - char name[AMDSMI_MAX_STRING_LENGTH]; - amdsmi_process_handle_t pid; - uint64_t mem; //!< In bytes - struct engine_usage_ { - uint64_t gfx; //!< In nano-secs - uint64_t enc; //!< In nano-secs - uint32_t reserved[12]; - } engine_usage; //!< time the process spends using these engines in ns - struct memory_usage_ { - uint64_t gtt_mem; //!< In MB - uint64_t cpu_mem; //!< In MB - uint64_t vram_mem; //!< In MB - uint32_t reserved[10]; - } memory_usage; //!< in bytes - char container_name[AMDSMI_MAX_STRING_LENGTH]; - uint32_t reserved[12]; -} amdsmi_proc_info_t; - -/** - * @brief IO Link P2P Capability - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint8_t is_iolink_coherent; //!< 1 = true, 0 = false, UINT8_MAX = Not defined - uint8_t is_iolink_atomics_32bit; //!< 1 = true, 0 = false, UINT8_MAX = Not defined - uint8_t is_iolink_atomics_64bit; //!< 1 = true, 0 = false, UINT8_MAX = Not defined - uint8_t is_iolink_dma; //!< 1 = true, 0 = false, UINT8_MAX = Not defined - uint8_t is_iolink_bi_directional; //!< 1 = true, 0 = false, UINT8_MAX = Not defined -} amdsmi_p2p_capability_t; - -//! Guaranteed maximum possible number of supported frequencies -#define AMDSMI_MAX_NUM_FREQUENCIES 33 - -//! Maximum possible value for fan speed. Should be used as the denominator -//! when determining fan speed percentage. -#define AMDSMI_MAX_FAN_SPEED 255 - -//! The number of points that make up a voltage-frequency curve definition -#define AMDSMI_NUM_VOLTAGE_CURVE_POINTS 3 - -/** - * @brief PowerPlay performance levels - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_DEV_PERF_LEVEL_AUTO = 0, //!< Performance level is "auto" - AMDSMI_DEV_PERF_LEVEL_FIRST = AMDSMI_DEV_PERF_LEVEL_AUTO, - AMDSMI_DEV_PERF_LEVEL_LOW, //!< Keep PowerPlay levels "low", regardless of workload - AMDSMI_DEV_PERF_LEVEL_HIGH, //!< Keep PowerPlay levels "high", regardless of workload - AMDSMI_DEV_PERF_LEVEL_MANUAL, //!< Only use values defined by manually - //!< setting the AMDSMI_CLK_TYPE_SYS speed - AMDSMI_DEV_PERF_LEVEL_STABLE_STD, //!< Stable power state with profiling clocks - AMDSMI_DEV_PERF_LEVEL_STABLE_PEAK, //!< Stable power state with peak clocks - AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK, //!< Stable power state with minimum memory clock - AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK, //!< Stable power state with minimum system clock - AMDSMI_DEV_PERF_LEVEL_DETERMINISM, //!< Performance determinism state - AMDSMI_DEV_PERF_LEVEL_LAST = AMDSMI_DEV_PERF_LEVEL_DETERMINISM, - AMDSMI_DEV_PERF_LEVEL_UNKNOWN = 0x100 //!< Unknown performance level -} amdsmi_dev_perf_level_t; - -/** - * @brief Handle to performance event counter - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef uintptr_t amdsmi_event_handle_t; - -/** - * @brief Event Groups - * Enum denoting an event group. The value of the enum is the - * base value for all the event enums in the group. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_EVNT_GRP_XGMI = 0, //!< Data Fabric (XGMI) related events - AMDSMI_EVNT_GRP_XGMI_DATA_OUT = 10, //!< XGMI Outbound data - AMDSMI_EVNT_GRP_INVALID = 0xFFFFFFFF -} amdsmi_event_group_t; - -/** - * @brief Event types - * Event type enum. Events belonging to a particular event group - * ::amdsmi_event_group_t should begin enumerating at the ::amdsmi_event_group_t - * value for that group. - * - * Data beats sent to neighbor 0; Each beat represents 32 bytes.

- * - * XGMI throughput can be calculated by multiplying a BEATs event - * such as ::AMDSMI_EVNT_XGMI_0_BEATS_TX by 32 and dividing by - * the time for which event collection occurred, - * ::amdsmi_counter_value_t.time_running (which is in nanoseconds). To get - * bytes per second, multiply this value by 109.
- *
- * Throughput = BEATS/time_running * 109 (bytes/second)
- * - * Events in the AMDSMI_EVNT_GRP_XGMI_DATA_OUT group measure - * the number of beats sent on an XGMI link. Each beat represents - * 32 bytes. AMDSMI_EVNT_XGMI_DATA_OUT_n represents the number of - * outbound beats (each representing 32 bytes) on link n.

- * - * XGMI throughput can be calculated by multiplying a event - * such as ::AMDSMI_EVNT_XGMI_DATA_OUT_n by 32 and dividing by - * the time for which event collection occurred, - * ::amdsmi_counter_value_t.time_running (which is in nanoseconds). To get - * bytes per second, multiply this value by 109.
- *
- * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_EVNT_FIRST = AMDSMI_EVNT_GRP_XGMI, - - AMDSMI_EVNT_XGMI_FIRST = AMDSMI_EVNT_GRP_XGMI, - AMDSMI_EVNT_XGMI_0_NOP_TX = AMDSMI_EVNT_XGMI_FIRST, //!< NOPs sent to neighbor 0 - AMDSMI_EVNT_XGMI_0_REQUEST_TX, //!< Outgoing requests to neighbor 0 - AMDSMI_EVNT_XGMI_0_RESPONSE_TX, //!< Outgoing responses to neighbor 0 - AMDSMI_EVNT_XGMI_0_BEATS_TX, //!< Throughput = BEATS/time_running 10^9 bytes/sec - AMDSMI_EVNT_XGMI_1_NOP_TX, //!< NOPs sent to neighbor 1 - AMDSMI_EVNT_XGMI_1_REQUEST_TX, //!< Outgoing requests to neighbor 1 - AMDSMI_EVNT_XGMI_1_RESPONSE_TX, //!< Outgoing responses to neighbor 1 - AMDSMI_EVNT_XGMI_1_BEATS_TX, //!< Data beats sent to neighbor 1; Each beat represents 32 bytes - AMDSMI_EVNT_XGMI_LAST = AMDSMI_EVNT_XGMI_1_BEATS_TX, - AMDSMI_EVNT_XGMI_DATA_OUT_FIRST = AMDSMI_EVNT_GRP_XGMI_DATA_OUT, - AMDSMI_EVNT_XGMI_DATA_OUT_0 = AMDSMI_EVNT_XGMI_DATA_OUT_FIRST, - AMDSMI_EVNT_XGMI_DATA_OUT_1, //!< Outbound beats to neighbor 1 - AMDSMI_EVNT_XGMI_DATA_OUT_2, //!< Outbound beats to neighbor 2 - AMDSMI_EVNT_XGMI_DATA_OUT_3, //!< Outbound beats to neighbor 3 - AMDSMI_EVNT_XGMI_DATA_OUT_4, //!< Outbound beats to neighbor 4 - AMDSMI_EVNT_XGMI_DATA_OUT_5, //!< Outbound beats to neighbor 5 - AMDSMI_EVNT_XGMI_DATA_OUT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_5, - AMDSMI_EVNT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_LAST, -} amdsmi_event_type_t; - -/** - * @brief Event counter commands - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_CNTR_CMD_START = 0, //!< Start the counter - AMDSMI_CNTR_CMD_STOP, //!< Stop the counter; note that this should not - //!< be used before reading. -} amdsmi_counter_command_t; - -/** - * @brief Counter value - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint64_t value; //!< Counter value - uint64_t time_enabled; //!< Time that the counter was enabled in nanoseconds - uint64_t time_running; //!< Time that the counter was running in nanoseconds -} amdsmi_counter_value_t; - -/** - * @brief Event notification event types - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_EVT_NOTIF_NONE = 0, //!< Not used - AMDSMI_EVT_NOTIF_VMFAULT = 1, //!< VM page fault - AMDSMI_EVT_NOTIF_FIRST = AMDSMI_EVT_NOTIF_VMFAULT, - AMDSMI_EVT_NOTIF_THERMAL_THROTTLE = 2, - AMDSMI_EVT_NOTIF_GPU_PRE_RESET = 3, - AMDSMI_EVT_NOTIF_GPU_POST_RESET = 4, - AMDSMI_EVT_NOTIF_RING_HANG = 5, - - AMDSMI_EVT_NOTIF_LAST = AMDSMI_EVT_NOTIF_RING_HANG -} amdsmi_evt_notification_type_t; - -/** - * @brief Macro to generate event bitmask from event id - * - * @cond @tag{gpu_bm_linux} @endcond - */ -#define AMDSMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1)) - -/** - * @brief Maximum number of characters an event notification message will be - * matches kfd message max size - */ -#define MAX_EVENT_NOTIFICATION_MSG_SIZE 96 - -/** - * @brief Event notification data returned from event notification API - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - amdsmi_processor_handle processor_handle; //!< Handler of device that corresponds to the event - amdsmi_evt_notification_type_t event; //!< Event type - char message[MAX_EVENT_NOTIFICATION_MSG_SIZE]; //!< Event message -} amdsmi_evt_notification_data_t; - -/** - * @brief Temperature Metrics. This enum is used to identify various - * temperature metrics. Corresponding values will be in millidegress - * Celcius {@linux_bm} or Celcius {@host} - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef enum { - AMDSMI_TEMP_CURRENT = 0x0, //!< Temperature current value. - AMDSMI_TEMP_FIRST = AMDSMI_TEMP_CURRENT, - - AMDSMI_TEMP_MAX, //!< Temperature max value. - AMDSMI_TEMP_MIN, //!< Temperature min value. - AMDSMI_TEMP_MAX_HYST, //!< Temperature hysteresis value for max limit. - //!< (This is an absolute temperature, not a - //!< delta). - AMDSMI_TEMP_MIN_HYST, //!< Temperature hysteresis value for min limit. - //!< (This is an absolute temperature, - //!< not a delta). - AMDSMI_TEMP_CRITICAL, //!< Temperature critical max value, typically - //!< greater than corresponding temp_max values. - AMDSMI_TEMP_CRITICAL_HYST, //!< Temperature hysteresis value for critical - //!< limit. (This is an absolute temperature, - //!< not a delta). - AMDSMI_TEMP_EMERGENCY, //!< Temperature emergency max value, for chips - //!< supporting more than two upper temperature - //!< limits. Must be equal or greater than - //!< corresponding temp_crit values. - AMDSMI_TEMP_EMERGENCY_HYST, //!< Temperature hysteresis value for emergency - //!< limit. (This is an absolute temperature, - //!< not a delta). - AMDSMI_TEMP_CRIT_MIN, //!< Temperature critical min value, typically - //!< lower than corresponding temperature - //!< minimum values. - AMDSMI_TEMP_CRIT_MIN_HYST, //!< Temperature hysteresis value for critical - //!< minimum limit. (This is an absolute - //!< temperature, not a delta). - AMDSMI_TEMP_OFFSET, //!< Temperature offset which is added to the - //!< temperature reading by the chip. - AMDSMI_TEMP_LOWEST, //!< Historical minimum temperature. - AMDSMI_TEMP_HIGHEST, //!< Historical maximum temperature. - AMDSMI_TEMP_SHUTDOWN, //!< Shutdown temperature. - AMDSMI_TEMP_LAST = AMDSMI_TEMP_SHUTDOWN -} amdsmi_temperature_metric_t; - -/** - * @brief Voltage Metrics. This enum is used to identify various - * Volatge metrics. Corresponding values will be in millivolt. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_VOLT_CURRENT = 0x0, //!< Voltage current value. - - AMDSMI_VOLT_FIRST = AMDSMI_VOLT_CURRENT, - AMDSMI_VOLT_MAX, //!< Voltage max value. - AMDSMI_VOLT_MIN_CRIT, //!< Voltage critical min value. - AMDSMI_VOLT_MIN, //!< Voltage min value. - AMDSMI_VOLT_MAX_CRIT, //!< Voltage critical max value. - AMDSMI_VOLT_AVERAGE, //!< Average voltage. - AMDSMI_VOLT_LOWEST, //!< Historical minimum voltage. - AMDSMI_VOLT_HIGHEST, //!< Historical maximum voltage. - - AMDSMI_VOLT_LAST = AMDSMI_VOLT_HIGHEST -} amdsmi_voltage_metric_t; - -/** - * @brief This ennumeration is used to indicate which type of - * voltage reading should be obtained. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_VOLT_TYPE_FIRST = 0, - - AMDSMI_VOLT_TYPE_VDDGFX = AMDSMI_VOLT_TYPE_FIRST, //!< Vddgfx GPU voltage - AMDSMI_VOLT_TYPE_LAST = AMDSMI_VOLT_TYPE_VDDGFX, - AMDSMI_VOLT_TYPE_INVALID = 0xFFFFFFFF //!< Invalid type -} amdsmi_voltage_type_t; - -/** - * @brief Pre-set Profile Selections. These bitmasks can be AND'd with the - * ::amdsmi_power_profile_status_t.available_profiles returned from - * :: amdsmi_get_gpu_power_profile_presets to determine which power profiles - * are supported by the system. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_PWR_PROF_PRST_CUSTOM_MASK = 0x1, //!< Custom Power Profile - AMDSMI_PWR_PROF_PRST_VIDEO_MASK = 0x2, //!< Video Power Profile - AMDSMI_PWR_PROF_PRST_POWER_SAVING_MASK = 0x4, //!< Power Saving Profile - AMDSMI_PWR_PROF_PRST_COMPUTE_MASK = 0x8, //!< Compute Saving Profile - AMDSMI_PWR_PROF_PRST_VR_MASK = 0x10, //!< VR Power Profile - - //!< 3D Full Screen Power Profile - AMDSMI_PWR_PROF_PRST_3D_FULL_SCR_MASK = 0x20, - AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT = 0x40, //!< Default Boot Up Profile - AMDSMI_PWR_PROF_PRST_LAST = AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT, - - //!< Invalid power profile - AMDSMI_PWR_PROF_PRST_INVALID = 0xFFFFFFFFFFFFFFFF -} amdsmi_power_profile_preset_masks_t; - -/** - * @brief This enum is used to identify different GPU blocks. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_GPU_BLOCK_INVALID = 0x0000000000000000, //!< Used to indicate an invalid block - AMDSMI_GPU_BLOCK_FIRST = 0x0000000000000001, - - AMDSMI_GPU_BLOCK_UMC = AMDSMI_GPU_BLOCK_FIRST, //!< UMC block - AMDSMI_GPU_BLOCK_SDMA = 0x0000000000000002, //!< SDMA block - AMDSMI_GPU_BLOCK_GFX = 0x0000000000000004, //!< GFX block - AMDSMI_GPU_BLOCK_MMHUB = 0x0000000000000008, //!< MMHUB block - AMDSMI_GPU_BLOCK_ATHUB = 0x0000000000000010, //!< ATHUB block - AMDSMI_GPU_BLOCK_PCIE_BIF = 0x0000000000000020, //!< PCIE_BIF block - AMDSMI_GPU_BLOCK_HDP = 0x0000000000000040, //!< HDP block - AMDSMI_GPU_BLOCK_XGMI_WAFL = 0x0000000000000080, //!< XGMI block - AMDSMI_GPU_BLOCK_DF = 0x0000000000000100, //!< DF block - AMDSMI_GPU_BLOCK_SMN = 0x0000000000000200, //!< SMN block - AMDSMI_GPU_BLOCK_SEM = 0x0000000000000400, //!< SEM block - AMDSMI_GPU_BLOCK_MP0 = 0x0000000000000800, //!< MP0 block - AMDSMI_GPU_BLOCK_MP1 = 0x0000000000001000, //!< MP1 block - AMDSMI_GPU_BLOCK_FUSE = 0x0000000000002000, //!< Fuse block - AMDSMI_GPU_BLOCK_MCA = 0x0000000000004000, //!< MCA block - AMDSMI_GPU_BLOCK_VCN = 0x0000000000008000, //!< VCN block - AMDSMI_GPU_BLOCK_JPEG = 0x0000000000010000, //!< JPEG block - AMDSMI_GPU_BLOCK_IH = 0x0000000000020000, //!< IH block - AMDSMI_GPU_BLOCK_MPIO = 0x0000000000040000, //!< MPIO block - - AMDSMI_GPU_BLOCK_LAST = AMDSMI_GPU_BLOCK_MPIO, //!< The highest bit position for supported blocks - AMDSMI_GPU_BLOCK_RESERVED = 0x8000000000000000 -} amdsmi_gpu_block_t; - -/** - * @brief The clk limit type - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - CLK_LIMIT_MIN, //!< Clock values in MHz - CLK_LIMIT_MAX //!< Clock values in MHz -} amdsmi_clk_limit_type_t; - -/** - * @brief The current ECC state - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_RAS_ERR_STATE_NONE = 0, //!< No current errors - AMDSMI_RAS_ERR_STATE_DISABLED, //!< ECC is disabled - AMDSMI_RAS_ERR_STATE_PARITY, //!< ECC errors present, but type unknown - AMDSMI_RAS_ERR_STATE_SING_C, //!< Single correctable error - AMDSMI_RAS_ERR_STATE_MULT_UC, //!< Multiple uncorrectable errors - AMDSMI_RAS_ERR_STATE_POISON, //!< Firmware detected error and isolated - //!< page. Treat as uncorrectable. - AMDSMI_RAS_ERR_STATE_ENABLED, //!< ECC is enabled - - AMDSMI_RAS_ERR_STATE_LAST = AMDSMI_RAS_ERR_STATE_ENABLED, - AMDSMI_RAS_ERR_STATE_INVALID = 0xFFFFFFFF -} amdsmi_ras_err_state_t; - -/** - * @brief Types of memory - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_MEM_TYPE_FIRST = 0, - - AMDSMI_MEM_TYPE_VRAM = AMDSMI_MEM_TYPE_FIRST, //!< VRAM memory - AMDSMI_MEM_TYPE_VIS_VRAM, //!< VRAM memory that is visible - AMDSMI_MEM_TYPE_GTT, //!< GTT memory - - AMDSMI_MEM_TYPE_LAST = AMDSMI_MEM_TYPE_GTT -} amdsmi_memory_type_t; - -/** - * @brief The values of this enum are used as frequency identifiers. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_FREQ_IND_MIN = 0, //!< Index used for the minimum frequency value - AMDSMI_FREQ_IND_MAX = 1, //!< Index used for the maximum frequency value - AMDSMI_FREQ_IND_INVALID = 0xFFFFFFFF //!< An invalid frequency index -} amdsmi_freq_ind_t; - -/** - * @brief XGMI Status - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_XGMI_STATUS_NO_ERRORS = 0, - AMDSMI_XGMI_STATUS_ERROR, - AMDSMI_XGMI_STATUS_MULTIPLE_ERRORS, -} amdsmi_xgmi_status_t; - -/** - * @brief Bitfield used in various AMDSMI calls - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef uint64_t amdsmi_bit_field_t; - -/** - * @brief Reserved Memory Page States - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_MEM_PAGE_STATUS_RESERVED = 0, //!< Reserved. This gpu page is reserved and not available for use - AMDSMI_MEM_PAGE_STATUS_PENDING, //!< Pending. This gpu page is marked as bad and will be marked - //!< reserved at the next window. - AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE //!< Unable to reserve this page -} amdsmi_memory_page_status_t; - -/** - * @brief Types for IO Link - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_IOLINK_TYPE_UNDEFINED = 0, //!< unknown type. - AMDSMI_IOLINK_TYPE_PCIEXPRESS = 1, //!< PCI Express - AMDSMI_IOLINK_TYPE_XGMI = 2, //!< XGMI - AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES, //!< Number of IO Link types - AMDSMI_IOLINK_TYPE_SIZE = 0xFFFFFFFF //!< Max of IO Link types -} amdsmi_io_link_type_t; - -/** - * @brief The utilization counter type - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_UTILIZATION_COUNTER_FIRST = 0, - //! Corse grain activity counters - AMDSMI_COARSE_GRAIN_GFX_ACTIVITY = AMDSMI_UTILIZATION_COUNTER_FIRST, - AMDSMI_COARSE_GRAIN_MEM_ACTIVITY, //!< Memory Activity - AMDSMI_COARSE_DECODER_ACTIVITY, //!< Decoder Activity - //! Fine grain activity counters - AMDSMI_FINE_GRAIN_GFX_ACTIVITY = 100, - AMDSMI_FINE_GRAIN_MEM_ACTIVITY = 101, - AMDSMI_FINE_DECODER_ACTIVITY = 102, - AMDSMI_UTILIZATION_COUNTER_LAST = AMDSMI_FINE_DECODER_ACTIVITY -/** - * @brief The utilization counter type - * - * @cond @tag{gpu_bm_linux} @endcond - */ -} amdsmi_utilization_counter_type_t; - -#define AMDSMI_MAX_UTILIZATION_VALUES 4 //!< The max number of values per counter type - -/** - * @brief The utilization counter data - * - * The max number of values per counter type - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - amdsmi_utilization_counter_type_t type; //!< Utilization counter type - uint64_t value; //!< Coarse grain activity counter value (average) - uint64_t fine_value[AMDSMI_MAX_UTILIZATION_VALUES]; //!< Utilization counter value - uint16_t fine_value_count; -} amdsmi_utilization_counter_t; - -/** - * @brief Reserved Memory Page Record - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint64_t page_address; //!< Start address of page - uint64_t page_size; //!< Page size - amdsmi_memory_page_status_t status; //!< Page "reserved" status -} amdsmi_retired_page_record_t; - -/** - * @brief Number of possible power profiles that a system could support - * - * @cond @tag{gpu_bm_linux} @endcond - */ -#define AMDSMI_MAX_NUM_POWER_PROFILES (sizeof(amdsmi_bit_field_t) * 8) - -/** - * @brief This structure contains information about which power profiles are - * supported by the system for a given device, and which power profile is - * currently active. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - amdsmi_bit_field_t available_profiles; //64) - - //! Driver attached timestamp (in ns) - uint64_t system_clock_counter; //!< v1 mod. (moved from top of struct) - - /** - * @brief Average clocks (MHz) - */ - uint16_t average_gfxclk_frequency; - uint16_t average_socclk_frequency; - uint16_t average_uclk_frequency; - uint16_t average_vclk0_frequency; - uint16_t average_dclk0_frequency; - uint16_t average_vclk1_frequency; - uint16_t average_dclk1_frequency; - - /** - * @brief Current clocks (MHz) - */ - uint16_t current_gfxclk; - uint16_t current_socclk; - uint16_t current_uclk; - uint16_t current_vclk0; - uint16_t current_dclk0; - uint16_t current_vclk1; - uint16_t current_dclk1; - - uint32_t throttle_status; //!< Throttle status - - uint16_t current_fan_speed; //!< Fans (RPM) - - /** - * @brief Link width (number of lanes) /speed (0.1 GT/s) - */ - uint16_t pcie_link_width; //!< v1 mod.(8->16) - uint16_t pcie_link_speed; //!< in 0.1 GT/s; v1 mod. (8->16) - - /* - * v1.1 additions - */ - uint32_t gfx_activity_acc; //!< new in v1 - uint32_t mem_activity_acc; //!< new in v1 - uint16_t temperature_hbm[AMDSMI_NUM_HBM_INSTANCES]; //!< new in v1 - - /* - * v1.2 additions - */ - uint64_t firmware_timestamp; //!< PMFW attached timestamp (10ns resolution) - - /* - * v1.3 additions - */ - uint16_t voltage_soc; //!< In mV - uint16_t voltage_gfx; //!< In mV - uint16_t voltage_mem; //!< In mV - - uint64_t indep_throttle_status; //!< Throttle status - - /* - * v1.4 additions - */ - uint16_t current_socket_power; //!< In Watts - - uint16_t vcn_activity[AMDSMI_MAX_NUM_VCN]; //!< Utilization (%) - - uint32_t gfxclk_lock_status; //!< Clock Lock Status. Each bit corresponds to clock instance - - uint16_t xgmi_link_width; //!< XGMI bus width in GB/s - uint16_t xgmi_link_speed; //!< XGMI bus bitrate in GB/s - - uint64_t pcie_bandwidth_acc; //!< PCIE accumulated bandwidth (GB/sec) - - uint64_t pcie_bandwidth_inst; //!< PCIE instantaneous bandwidth (GB/sec) - - uint64_t pcie_l0_to_recov_count_acc; //!< PCIE L0 to recovery state transition accumulated count - - uint64_t pcie_replay_count_acc; //!< PCIE replay accumulated count - - uint64_t pcie_replay_rover_count_acc; //!< PCIE replay rollover accumulated count - - /** - * @brief XGMI accumulated data transfer size(KiloBytes) - */ - uint64_t xgmi_read_data_acc[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< In KB - uint64_t xgmi_write_data_acc[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< In KB - - /** - * @brief XGMI current data transfer size(KiloBytes) - */ - uint16_t current_gfxclks[AMDSMI_MAX_NUM_GFX_CLKS]; //!< In KB - uint16_t current_socclks[AMDSMI_MAX_NUM_CLKS]; //!< In KB - uint16_t current_vclk0s[AMDSMI_MAX_NUM_CLKS]; //!< In KB - uint16_t current_dclk0s[AMDSMI_MAX_NUM_CLKS]; //!< In KB - - /** - * @brief v1.5 additions - */ - uint16_t jpeg_activity[AMDSMI_MAX_NUM_JPEG]; //!< JPEG activity percent (encode/decode) - uint32_t pcie_nak_sent_count_acc; //!< PCIE NAK sent accumulated count - uint32_t pcie_nak_rcvd_count_acc; //!< PCIE NAK received accumulated count - - /** - * @brief v1.6 additions - */ - uint64_t accumulation_counter; //!< Accumulation cycle counter - - /** - * @brief Accumulated throttler residencies - */ - uint64_t prochot_residency_acc; - - /** - * @brief Accumulated throttler residencies - * - * Prochot (thermal) - PPT (power) - * Package Power Tracking (PPT) violation % (greater than 0% is a violation); - * aka PVIOL - * - * Ex. PVIOL/TVIOL calculations - * Where A and B are measurments recorded at prior points in time. - * Typically A is the earlier measured value and B is the latest measured value. - * - * PVIOL % = (PptResidencyAcc (B) - PptResidencyAcc (A)) * 100/ (AccumulationCounter (B) - AccumulationCounter (A)) - * TVIOL % = (SocketThmResidencyAcc (B) - SocketThmResidencyAcc (A)) * 100 / (AccumulationCounter (B) - AccumulationCounter (A)) - */ - uint64_t ppt_residency_acc; - - /** - * @brief Accumulated throttler residencies - * - * Socket (thermal) - - * Socket thermal violation % (greater than 0% is a violation); - * aka TVIOL - * - * Ex. PVIOL/TVIOL calculations - * Where A and B are measurments recorded at prior points in time. - * Typically A is the earlier measured value and B is the latest measured value. - * - * PVIOL % = (PptResidencyAcc (B) - PptResidencyAcc (A)) * 100/ (AccumulationCounter (B) - AccumulationCounter (A)) - * TVIOL % = (SocketThmResidencyAcc (B) - SocketThmResidencyAcc (A)) * 100 / (AccumulationCounter (B) - AccumulationCounter (A)) - */ - uint64_t socket_thm_residency_acc; - uint64_t vr_thm_residency_acc; - uint64_t hbm_thm_residency_acc; - - uint16_t num_partition; //!< Number of current partition - - amdsmi_gpu_xcp_metrics_t xcp_stats[AMDSMI_MAX_NUM_XCP]; //!< XCP (Graphic Cluster Partitions) metrics stats - - uint32_t pcie_lc_perf_other_end_recovery; //!< PCIE other end recovery counter - - /* - * @brief v1.7 additions - */ - uint64_t vram_max_bandwidth; //!< VRAM max bandwidth at max memory clock (GB/s) - - uint16_t xgmi_link_status[AMDSMI_MAX_NUM_XGMI_LINKS]; //!< XGMI link status(up/down) -} amdsmi_gpu_metrics_t; - -/** - * @brief XGMI Link Status Type - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_XGMI_LINK_DOWN, //!< The XGMI Link is down - AMDSMI_XGMI_LINK_UP, //!< The XGMI Link is up - AMDSMI_XGMI_LINK_DISABLE, //!< The XGMI Link is disabled -} amdsmi_xgmi_link_status_type_t; - -/** - * @brief XGMI Link Status - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t total_links; //!< The total links in the status array - amdsmi_xgmi_link_status_type_t status[AMDSMI_MAX_NUM_XGMI_LINKS]; - uint64_t reserved[7]; -} amdsmi_xgmi_link_status_t; - -#define MAX_AMDSMI_NAME_LENGTH 64 - -/** - * @brief This structure holds the name value pairs - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - char name[MAX_AMDSMI_NAME_LENGTH]; //!< Name - uint64_t value; //!< Use uint64_t to make it universal -} amdsmi_name_value_t; - -/** - * @brief This register type for register table - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_REG_XGMI, - AMDSMI_REG_WAFL, - AMDSMI_REG_PCIE, - AMDSMI_REG_USR, - AMDSMI_REG_USR1, -} amdsmi_reg_type_t; - -/** - * @brief This structure holds ras feature - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t ras_eeprom_version; - // PARITY error(bit 0), Single Bit correctable (bit1), - // Double bit error detection (bit2), Poison (bit 3). - uint32_t ecc_correction_schema_flag; //!< ecc_correction_schema mask -} amdsmi_ras_feature_t; - -/** - * @brief This structure holds error counts. - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint64_t correctable_count; //!< Accumulated correctable errors - uint64_t uncorrectable_count; //!< Accumulated uncorrectable errors - uint64_t deferred_count; //!< Accumulated deferred errors - uint64_t reserved[5]; -} amdsmi_error_count_t; - -/** - * @brief This structure contains information specific to a process. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef struct { - uint32_t process_id; //!< Process ID - uint32_t pasid; //!< PASID (Not working in ROCm 6.4+, deprecating in 7.0) - uint64_t vram_usage; //!< VRAM usage in MB - uint64_t sdma_usage; //!< SDMA usage in microseconds - uint32_t cu_occupancy; //!< Compute Unit usage in percent -} amdsmi_process_info_t; - -/** - * @brief Topology Nearest - * - * @cond @tag{gpu_bm_linux} @tag{host} @endcond - */ -typedef struct { - uint32_t count; - amdsmi_processor_handle processor_list[AMDSMI_MAX_DEVICES]; - uint64_t reserved[15]; -} amdsmi_topology_nearest_t; - -/** - * @brief Variant placeholder - * - * Place-holder "variant" for functions that have don't have any variants, - * but do have monitors or sensors. - * - * @cond @tag{gpu_bm_linux} @endcond - */ -typedef enum { - AMDSMI_VIRTUALIZATION_MODE_UNKNOWN = 0, - AMDSMI_VIRTUALIZATION_MODE_BAREMETAL, - AMDSMI_VIRTUALIZATION_MODE_HOST, - AMDSMI_VIRTUALIZATION_MODE_GUEST, - AMDSMI_VIRTUALIZATION_MODE_PASSTHROUGH -} amdsmi_virtualization_mode_t; - -#define AMDSMI_DEFAULT_VARIANT 0xFFFFFFFFFFFFFFFF - -#ifdef ENABLE_ESMI_LIB - -/** - * @brief This structure holds SMU Firmware version information. - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint8_t debug; //!< SMU fw Debug version number - uint8_t minor; //!< SMU fw Minor version number - uint8_t major; //!< SMU fw Major version number - uint8_t unused; //!< reserved fields -} amdsmi_smu_fw_version_t; - -/** - * @brief DDR bandwidth metrics. - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint32_t max_bw; //!< DDR Maximum theoritical bandwidth in GB/s - uint32_t utilized_bw; //!< DDR bandwidth utilization in GB/s - uint32_t utilized_pct; //!< DDR bandwidth utilization in % of theoritical max -} amdsmi_ddr_bw_metrics_t; - -/** - * @brief temperature range and refresh rate metrics of a DIMM - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint8_t range : 3; //!< temp range[2:0](3 bit data) - uint8_t ref_rate : 1; //!< DDR refresh rate mode[3](1 bit data) -} amdsmi_temp_range_refresh_rate_t; - -/** - * @brief DIMM Power(mW), power update rate(ms) and dimm address - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint16_t power : 15; //!< Dimm power consumption[31:17](15 bits data) - uint16_t update_rate : 9; //!< Time since last update[16:8](9 bit data) - uint8_t dimm_addr; //!< Dimm address[7:0](8 bit data) -} amdsmi_dimm_power_t; - -/** - * @brief DIMM temperature(°C) and update rate(ms) and dimm address - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint16_t sensor : 11; //!< Dimm thermal sensor[31:21](11 bit data) - uint16_t update_rate : 9; //!< Time since last update[16:8](9 bit data) - uint8_t dimm_addr; //!< Dimm address[7:0](8 bit data) - float temp; //!< temperature in degree celcius -} amdsmi_dimm_thermal_t; - -/** - * @brief xGMI Bandwidth Encoding types - * - * @cond @tag{cpu_bm} @endcond - */ -typedef enum { - AGG_BW0 = 1, //!< Aggregate Bandwidth - RD_BW0 = 2, //!< Read Bandwidth - WR_BW0 = 4 //!< Write Bandwdith -} amdsmi_io_bw_encoding_t; - -/** - * @brief LINK name and Bandwidth type Information.It contains - * link names i.e valid link names are - * "P0", "P1", "P2", "P3", "P4", "G0", "G1", "G2", "G3", "G4" - * "G5", "G6", "G7" - * Valid bandwidth types 1(Aggregate_BW), 2 (Read BW), 4 (Write BW). - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - amdsmi_io_bw_encoding_t bw_type; //!< Bandwidth Type Information [1, 2, 4] - char *link_name; //!< Link name [P0, P1, G0, G1 etc] -} amdsmi_link_id_bw_type_t; - -/** - * @brief max and min LCLK DPM level on a given NBIO ID. - * Valid max and min DPM level values are 0 - 1. - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct { - uint8_t max_dpm_level; //!< Max LCLK DPM level[15:8](8 bit data) - uint8_t min_dpm_level; //!< Min LCLK DPM level[7:0](8 bit data) -} amdsmi_dpm_level_t; - -/** - * @brief HSMP Metrics table (supported only with hsmp proto version 6). - * - * @cond @tag{cpu_bm} @endcond - */ -typedef struct __attribute__((__packed__)) { - uint32_t accumulation_counter; - - /* TEMPERATURE */ - uint32_t max_socket_temperature; //!< In C - uint32_t max_vr_temperature; //!< In C - uint32_t max_hbm_temperature; //!< In C - uint64_t max_socket_temperature_acc; //!< In C - uint64_t max_vr_temperature_acc; //!< In C - uint64_t max_hbm_temperature_acc; //!< In C - - /* POWER */ - uint32_t socket_power_limit; //!< In W - uint32_t max_socket_power_limit; //!< In W - uint32_t socket_power; //!< In W - - /* ENERGY */ - uint64_t timestamp; - uint64_t socket_energy_acc; - uint64_t ccd_energy_acc; - uint64_t xcd_energy_acc; - uint64_t aid_energy_acc; - uint64_t hbm_energy_acc; - - /* FREQUENCY */ - uint32_t cclk_frequency_limit; //!< In MHz - uint32_t gfxclk_frequency_limit; //!< In MHz - uint32_t fclk_frequency; //!< In MHz - uint32_t uclk_frequency; //!< In MHz - uint32_t socclk_frequency[4]; //!< In MHz - uint32_t vclk_frequency[4]; //!< In MHz - uint32_t dclk_frequency[4]; //!< In MHz - uint32_t lclk_frequency[4]; //!< In MHz - uint64_t gfxclk_frequency_acc[8]; //!< In MHz - uint64_t cclk_frequency_acc[96]; //!< In MHz - - /* FREQUENCY RANGE */ - uint32_t max_cclk_frequency; //!< In MHz - uint32_t min_cclk_frequency; //!< In MHz - uint32_t max_gfxclk_frequency; //!< In MHz - uint32_t min_gfxclk_frequency; //!< In MHz - uint32_t fclk_frequency_table[4]; //!< In MHz - uint32_t uclk_frequency_table[4]; //!< In MHz - uint32_t socclk_frequency_table[4]; //!< In MHz - uint32_t vclk_frequency_table[4]; //!< In MHz - uint32_t dclk_frequency_table[4]; //!< In MHz - uint32_t lclk_frequency_table[4]; //!< In MHz - uint32_t max_lclk_dpm_range; //!< In MHz - uint32_t min_lclk_dpm_range; //!< In MHz - - /* XGMI */ - uint32_t xgmi_width; - uint32_t xgmi_bitrate; - uint64_t xgmi_read_bandwidth_acc[8]; - uint64_t xgmi_write_bandwidth_acc[8]; - - /* ACTIVITY */ - uint32_t socket_c0_residency; - uint32_t socket_gfx_busy; - uint32_t dram_bandwidth_utilization; - uint64_t socket_c0_residency_acc; - uint64_t socket_gfx_busy_acc; - uint64_t dram_bandwidth_acc; - uint32_t max_dram_bandwidth; - uint64_t dram_bandwidth_utilization_acc; - uint64_t pcie_bandwidth_acc[4]; - - /* THROTTLERS */ - uint32_t prochot_residency_acc; - uint32_t ppt_residency_acc; - uint32_t socket_thm_residency_acc; - uint32_t vr_thm_residency_acc; - uint32_t hbm_thm_residency_acc; - uint32_t spare; - - /* New items at the end to maintain driver compatibility */ - uint32_t gfxclk_frequency[8]; //!< In MHz -} amdsmi_hsmp_metrics_table_t; - -/** - * @brief hsmp frequency limit source names - * - * @cond @tag{cpu_bm} @endcond - */ -static char* const amdsmi_hsmp_freqlimit_src_names[] = { - "cHTC-Active", - "PROCHOT", - "TDC limit", - "PPT Limit", - "OPN Max", - "Reliability Limit", - "APML Agent", - "HSMP Agent" -}; - -#endif - -/*****************************************************************************/ -/** @defgroup tagInitShutdown Initialization and Shutdown - * @{ - */ - -/** - * @brief Initialize the AMD SMI library - * - * @ingroup tagInitShutdown - * - * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details This function initializes the library and the internal data structures, - * including those corresponding to sources of information that SMI provides. - * - * The @p init_flags decides which type of processor - * can be discovered by ::amdsmi_get_socket_handles(). AMDSMI_INIT_AMD_GPUS returns - * sockets with AMD GPUS, and AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS returns - * sockets with either AMD GPUS or CPUS. - * Currently, only AMDSMI_INIT_AMD_GPUS is supported. - * - * @param[in] init_flags Bit flags that tell SMI how to initialze. Values of - * ::amdsmi_init_flags_t may be OR'd together and passed through @p init_flags - * to modify how AMDSMI initializes. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_init(uint64_t init_flags); - -/** - * @brief Shutdown the AMD SMI library - * - * @ingroup tagInitShutdown - * - * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details This function shuts down the library and internal data structures and - * performs any necessary clean ups. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_shut_down(void); - -/** @} End tagInitShutdown */ - -/*****************************************************************************/ -/** @defgroup tagProcDiscovery Discovery Queries - * These functions provide discovery of the sockets. - * @{ - */ - -/** - * @brief Get the list of socket handles in the system. - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details Depends on what flag is passed to ::amdsmi_init. AMDSMI_INIT_AMD_GPUS - * returns sockets with AMD GPUS, and AMDSMI_INIT_AMD_GPUS | AMDSMI_INIT_AMD_CPUS returns - * sockets with either AMD GPUS or CPUS. - * The socket handles can be used to query the processor handles in that socket, which - * will be used in other APIs to get processor detail information or telemtries. - * - * @param[in,out] socket_count As input, the value passed - * through this parameter is the number of ::amdsmi_socket_handle that - * may be safely written to the memory pointed to by @p socket_handles. This is the - * limit on how many socket handles will be written to @p socket_handles. On return, @p - * socket_count will contain the number of socket handles written to @p socket_handles, - * or the number of socket handles that could have been written if enough memory had been - * provided. - * If @p socket_handles is NULL, as output, @p socket_count will contain - * how many sockets are available to read in the system. - * - * @param[in,out] socket_handles A pointer to a block of memory to which the - * ::amdsmi_socket_handle values will be written. This value may be NULL. - * In this case, this function can be used to query how many sockets are - * available to read in the system. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count, amdsmi_socket_handle* socket_handles); - -#ifdef ENABLE_ESMI_LIB - -/** - * @brief Get the list of cpu handles in the system. - * - * @ingroup tagProcDiscovery - * - * @platform{cpu_bm} - * - * @details Depends on AMDSMI_INIT_AMD_CPUS flag passed to ::amdsmi_init. - * The processor handles can be used in other APIs to get processor detail information. - * - * @param[in,out] cpu_count As input, the value passed - * through this parameter is the number of ::amdsmi_processor_handle that - * may be safely written to the memory pointed to by @p processor_handles. This is the - * limit on how many processor handles will be written to @p processor_handles. On return, @p - * socket_count will contain the number of processor handles written to @p processor_handles, - * or the number of processor handles that could have been written if enough memory had been - * provided. - * If @p processor_handles is NULL, as output, @p cpu_count will contain - * how many processors are available to read in the system. - * - * @param[in,out] processor_handles A pointer to a block of memory to which the - * ::amdsmi_processor_handle values will be written. This value may be NULL. - * In this case, this function can be used to query how many processors are - * available to read in the system. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_handles(uint32_t *cpu_count, amdsmi_processor_handle *processor_handles); - -#endif - -/** - * @brief Get information about the given socket - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details This function retrieves socket information. The @p socket_handle must - * be provided to retrieve the Socket ID. - * - * @param[in] socket_handle a socket handle - * - * @param[in] len the length of the caller provided buffer @p name. - * - * @param[out] name The id of the socket. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_socket_info(amdsmi_socket_handle socket_handle, size_t len, char *name); - -#ifdef ENABLE_ESMI_LIB - -/** - * @brief Get information about the given processor - * - * @ingroup tagProcDiscovery - * - * @platform{cpu_bm} - * - * @details This function retrieves processor information. The @p processor_handle must - * be provided to retrieve the processor ID. - * - * @param[in] processor_handle a processor handle - * - * @param[in] len the length of the caller provided buffer @p name. - * - * @param[out] name The id of the processor. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_info(amdsmi_processor_handle processor_handle, size_t len, char *name); - -/** - * @brief Get respective processor counts from the processor handles - * - * @ingroup tagProcDiscovery - * - * @platform{cpu_bm} - * - * @details This function retrieves respective processor counts information. - * The @p processor_handle must be provided to retrieve the processor ID. - * - * @param[in] processor_handles A pointer to a block of memory to which the - * ::amdsmi_processor_handle values will be written. This value may be NULL. - * - * @param[in] processor_count total processor count per socket - * - * @param[out] nr_cpusockets Total number of cpu sockets - * - * @param[out] nr_cpucores Total number of cpu cores - * - * @param[out] nr_gpus Total number of gpu devices - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_count_from_handles(amdsmi_processor_handle* processor_handles, - uint32_t* processor_count, uint32_t* nr_cpusockets, - uint32_t* nr_cpucores, uint32_t* nr_gpus); - -/** - * @brief Get processor list as per processor type - * - * @ingroup tagProcDiscovery - * - * @platform{cpu_bm} - * - * @details This function retrieves processor list as per the processor type - * from the total processor handles list. - * The @p list of processor_handles and processor type must be provided. - * - * @param[in] socket_handle socket handle - * - * @param[in] processor_type processor type - * - * @param[out] processor_handles list of processor handles as per processor type - * - * @param[out] processor_count processor count as per processor type selected - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_handles_by_type(amdsmi_socket_handle socket_handle, - processor_type_t processor_type, - amdsmi_processor_handle* processor_handles, - uint32_t* processor_count); -#endif - -/** - * @brief Get the list of the processor handles associated to a socket. - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details This function retrieves the processor handles of a socket. The - * @p socket_handle must be provided for the processor. A socket may have mulitple different - * type processors: An APU on a socket have both CPUs and GPUs. - * Currently, only AMD GPUs are supported. - * - * The number of processor count is returned through @p processor_count - * if @p processor_handles is NULL. Then the number of @p processor_count can be pass - * as input to retrieval all processors on the socket to @p processor_handles. - * - * @param[in] socket_handle The socket to query - * - * @param[in,out] processor_count As input, the value passed - * through this parameter is the number of ::amdsmi_processor_handle's that - * may be safely written to the memory pointed to by @p processor_handles. This is the - * limit on how many processor handles will be written to @p processor_handles. On return, @p - * processor_count will contain the number of processor handles written to @p processor_handles, - * or the number of processor handles that could have been written if enough memory had been - * provided. - * If @p processor_handles is NULL, as output, @p processor_count will contain - * how many processors are available to read for the socket. - * - * @param[in,out] processor_handles A pointer to a block of memory to which the - * ::amdsmi_processor_handle values will be written. This value may be NULL. - * In this case, this function can be used to query how many processors are - * available to read. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_handles(amdsmi_socket_handle socket_handle, - uint32_t *processor_count, - amdsmi_processor_handle* processor_handles); - - -#ifdef ENABLE_ESMI_LIB -/** - * @brief Get the list of the cpu core handles in a system. - * - * @ingroup tagProcDiscovery - * - * @platform{cpu_bm} - * - * @details This function retrieves the cpu core handles of a system. - * - * @param[in,out] cores_count As input, the value passed - * through this parameter is the number of ::amdsmi_processor_handle's that - * may be safely written to the memory pointed to by @p processor_handles. This is the - * limit on how many core handles will be written to @p processor_handles. On return, @p - * cores_count will contain the number of core processor handles written to @p processor_handles, - * or the number of core processor handles that could have been written if enough memory had been - * provided. - * If @p processor_handles is NULL, as output, @p processor_count will contain - * how many cpu cores are available to read in the system. - * - * @param[in,out] processor_handles A pointer to a block of memory to which the - * ::amdsmi_processor_handle values will be written. This value may be NULL. - * In this case, this function can be used to query how many processors are - * available to read. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail -*/ -amdsmi_status_t amdsmi_get_cpucore_handles(uint32_t *cores_count, - amdsmi_processor_handle* processor_handles); -#endif - -/** - * @brief Get the processor type of the processor_handle - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details This function retrieves the processor type. A processor_handle must be provided - * for that processor. - * - * @param[in] processor_handle a processor handle - * - * @param[out] processor_type a pointer to processor_type_t to which the processor type - * will be written. If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_type(amdsmi_processor_handle processor_handle, processor_type_t* processor_type); - -/** - * @brief Get processor handle with the matching bdf. - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} - * @platform{guest_mvf} @platform{guest_windows} - * - * @details Given bdf info @p bdf, this function will get - * the processor handle with the matching bdf. - * - * @param[in] bdf The bdf to match with corresponding processor handle. - * - * @param[out] processor_handle processor handle with the matching bdf. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_processor_handle_from_bdf(amdsmi_bdf_t bdf, amdsmi_processor_handle* processor_handle); - -/** - * @brief Returns BDF of the given device - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] bdf Reference to BDF. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_device_bdf(amdsmi_processor_handle processor_handle, amdsmi_bdf_t *bdf); - -/** - * @brief Returns the UUID of the device - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[in,out] uuid_length Length of the uuid string. As input, must be - * equal or greater than AMDSMI_GPU_UUID_SIZE and be allocated by - * user. As output it is the length of the uuid string. - * - * @param[out] uuid Pointer to string to store the UUID. Must be - * allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_device_uuid(amdsmi_processor_handle processor_handle, unsigned int *uuid_length, char *uuid); - -/** - * @brief Returns the Enumeration information for the device - * - * @ingroup tagProcDiscovery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @details This function returns Enumeration information of the corresponding - * processor_handle. It will return the render number, card number, - * HSA ID, HIP ID, and the HIP UUID. - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to Enumeration information structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_enumeration_info(amdsmi_processor_handle processor_handle, amdsmi_enumeration_info_t *info); - -/** @} End tagProcDiscovery */ - -/*****************************************************************************/ -/** @defgroup tagIdentQuery Identifier Queries - * These functions provide identification information. - * @{ - */ - -/** - * @brief Get the device id associated with the device with provided device - * handler. - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p id, - * this function will write the device id value to the uint64_t pointed to by - * @p id. This ID is an identification of the type of device, so calling this - * function for different devices will give the same value if they are kind - * of device. Consequently, this function should not be used to distinguish - * one device from another. amdsmi_get_gpu_bdf_id() should be used to get a - * unique identifier. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] id a pointer to uint64_t to which the device id will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_id(amdsmi_processor_handle processor_handle, uint16_t *id); - -/** - * @brief Get the device revision associated with the device - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a - * uint16_t @p revision to which the revision id will be written - * - * @param[in] processor_handle a processor handle - * - * @param[out] revision a pointer to uint16_t to which the device revision - * will be written - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_revision(amdsmi_processor_handle processor_handle, uint16_t *revision); - -/** - * @brief Get the name string for a give vendor ID - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a pointer to a caller provided - * char buffer @p name, and a length of this buffer @p len, this function will - * write the name of the vendor (up to @p len characters) buffer @p name. The - * @p id may be a device vendor or subsystem vendor ID. - * - * If the integer ID associated with the vendor is not found in one of the - * system files containing device name information (e.g. - * /usr/share/misc/pci.ids), then this function will return the hex vendor ID - * as a string. Updating the system name files can be accompplished with - * "sudo update-pciids". - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] name a pointer to a caller provided char buffer to which the - * name will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @param[in] len the length of the caller provided buffer @p name. - * - * @note ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not - * large enough to hold the entire name. In this case, only @p len bytes will - * be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_vendor_name(amdsmi_processor_handle processor_handle, char *name, - size_t len); - -/** - * @brief Get the vram vendor string of a device. - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details This function retrieves the vram vendor name given a processor handle - * @p processor_handle, a pointer to a caller provided - * char buffer @p brand, and a length of this buffer @p len, this function - * will write the vram vendor of the device (up to @p len characters) to the - * buffer @p brand. - * - * If the vram vendor for the device is not found as one of the values - * contained within amdsmi_get_gpu_vram_vendor, then this function will return - * the string 'unknown' instead of the vram vendor. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] brand a pointer to a caller provided char buffer to which the - * vram vendor will be written - * - * @param[in] len the length of the caller provided buffer @p brand. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_vram_vendor(amdsmi_processor_handle processor_handle, char *brand, uint32_t len); - -/** - * @brief Get the subsystem device id associated with the device with - * provided processor handle. - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p id, - * this function will write the subsystem device id value to the uint64_t - * pointed to by @p id. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] id a pointer to uint64_t to which the subsystem device id - * will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_subsystem_id(amdsmi_processor_handle processor_handle, uint16_t *id); - -/** - * @brief Get the name string for the device subsytem - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a pointer to a caller provided - * char buffer @p name, and a length of this buffer @p len, this function - * will write the name of the device subsystem (up to @p len characters) - * to the buffer @p name. - * - * If the integer ID associated with the sub-system is not found in one of the - * system files containing device name information (e.g. - * /usr/share/misc/pci.ids), then this function will return the hex sub-system - * ID as a string. Updating the system name files can be accompplished with - * "sudo update-pciids". - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] name a pointer to a caller provided char buffer to which the - * name will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - - * @param[in] len the length of the caller provided buffer @p name. - * - * @note ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not - * large enough to hold the entire name. In this case, only @p len bytes will - * be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_subsystem_name(amdsmi_processor_handle processor_handle, char *name, size_t len); - -/** - * @brief Returns the virtualization mode for the target device. - * - * @ingroup tagIdentQuery - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details The virtualization mode is detected and returned as an enum. - * - * @param[in] processor_handle The identifier of the given device. - * - * @param[in,out] mode Reference to the enum representing virtualization mode. - * - When zero, the virtualization mode is unknown - * - When non-zero, the virtualization mode is detected - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail. - */ -amdsmi_status_t -amdsmi_get_gpu_virtualization_mode(amdsmi_processor_handle processor_handle, - amdsmi_virtualization_mode_t* mode); - -/** @} End tagIdentQuery */ - -/*****************************************************************************/ -/** @defgroup tagPCIeQuery PCIe Queries - * These functions provide information about PCIe. - * @{ - */ - -/** - * @brief Get the list of possible PCIe bandwidths that are available. It is not - * supported on virtual machine guest - * - * @ingroup tagPCIeQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a to an - * ::amdsmi_pcie_bandwidth_t structure @p bandwidth, this function will fill in - * @p bandwidth with the possible T/s values and associated number of lanes, - * and indication of the current selection. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] bandwidth a pointer to a caller provided - * ::amdsmi_pcie_bandwidth_t structure to which the frequency information will be - * written - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_pci_bandwidth(amdsmi_processor_handle processor_handle, - amdsmi_pcie_bandwidth_t *bandwidth); - -/** - * @brief Get the unique PCI device identifier associated for a device - * - * @ingroup tagPCIeQuery - * - * @platform{gpu_bm_linux} - * - * @details Give a processor handle @p processor_handle and a pointer to a uint64_t @p - * bdfid, this function will write the Bus/Device/Function PCI identifier - * (BDFID) associated with device @p processor_handle to the value pointed to by - * @p bdfid. - * - * The format of @p bdfid will be as follows: - * - * BDFID = ((DOMAIN & 0xFFFFFFFF) << 32) | ((Partition & 0xF) << 28) - * | ((BUS & 0xFF) << 8) | ((DEVICE & 0x1F) <<3 ) - * | (FUNCTION & 0x7) - * - * | Name | Field | KFD property | KFD -> PCIe ID (uint64_t) | - * -------------- | ------- | ---------------- | ---------------------------- | - * | Domain | [63:32] | "domain" | (DOMAIN & 0xFFFFFFFF) << 32 | - * | Partition id | [31:28] | "location id" | (LOCATION & 0xF0000000) | - * | Reserved | [27:16] | "location id" | N/A | - * | Bus | [15: 8] | "location id" | (LOCATION & 0xFF00) | - * | Device | [ 7: 3] | "location id" | (LOCATION & 0xF8) | - * | Function | [ 2: 0] | "location id" | (LOCATION & 0x7) | - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] bdfid a pointer to uint64_t to which the device bdfid value - * will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_bdf_id(amdsmi_processor_handle processor_handle, uint64_t *bdfid); - -/** - * @brief Get the NUMA node associated with a device - * - * @ingroup tagPCIeQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a int32_t @p - * numa_node, this function will retrieve the NUMA node value associated - * with device @p processor_handle and store the value at location pointed to by - * @p numa_node. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] numa_node pointer to location where NUMA node value will - * be written. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_topo_numa_affinity(amdsmi_processor_handle processor_handle, int32_t *numa_node); - -/** - * @brief Get PCIe traffic information. It is not supported on virtual machine guest - * - * @ingroup tagPCIeQuery - * - * @platform{gpu_bm_linux} - * - * @details Give a processor handle @p processor_handle and pointers to a uint64_t's, @p - * sent, @p received and @p max_pkt_sz, this function will write the number - * of bytes sent and received in 1 second to @p sent and @p received, - * respectively. The maximum possible packet size will be written to - * @p max_pkt_sz. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] sent a pointer to uint64_t to which the number of bytes sent - * will be written in 1 second. If pointer is NULL, it will be ignored. - * - * @param[in,out] received a pointer to uint64_t to which the number of bytes - * received will be written. If pointer is NULL, it will be ignored. - * - * @param[in,out] max_pkt_sz a pointer to uint64_t to which the maximum packet - * size will be written. If pointer is NULL, it will be ignored. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_pci_throughput(amdsmi_processor_handle processor_handle, uint64_t *sent, - uint64_t *received, uint64_t *max_pkt_sz); - -/** - * @brief Get PCIe replay counter - * - * @ingroup tagPCIeQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint64_t @p - * counter, this function will write the sum of the number of NAK's received - * by the GPU and the NAK's generated by the GPU to memory pointed to by @p - * counter. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] counter a pointer to uint64_t to which the sum of the NAK's - * received and generated by the GPU is written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_pci_replay_counter(amdsmi_processor_handle processor_handle, uint64_t *counter); - -/** @} End tagPCIeQuery */ - -/*****************************************************************************/ -/** @defgroup tagPCIeControl PCIe Control - * These functions provide some control over PCIe. - * @{ - */ - -/** - * @brief Control the set of allowed PCIe bandwidths that can be used. It is not - * supported on virtual machine guest - * - * @ingroup tagPCIeControl - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a 64 bit bitmask @p bw_bitmask, - * this function will limit the set of allowable bandwidths. If a bit in @p - * bw_bitmask has a value of 1, then the frequency (as ordered in an - * ::amdsmi_frequencies_t returned by :: amdsmi_get_clk_freq()) corresponding - * to that bit index will be allowed. - * - * This function will change the performance level to - * ::AMDSMI_DEV_PERF_LEVEL_MANUAL in order to modify the set of allowable - * band_widths. Caller will need to set to ::AMDSMI_DEV_PERF_LEVEL_AUTO in order - * to get back to default state. - * - * All bits with indices greater than or equal to the value of the - * ::amdsmi_frequencies_t::num_supported field of ::amdsmi_pcie_bandwidth_t will be - * ignored. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] bw_bitmask A bitmask indicating the indices of the - * bandwidths that are to be enabled (1) and disabled (0). Only the lowest - * ::amdsmi_frequencies_t::num_supported (of ::amdsmi_pcie_bandwidth_t) bits of - * this mask are relevant. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_pci_bandwidth(amdsmi_processor_handle processor_handle, uint64_t bw_bitmask); - -/** @} End tagPCIeControl */ - -/*****************************************************************************/ -/** @defgroup tagPowerQuery Power Queries - * These functions provide information about power usage. - * @{ - */ - -/** - * @brief Get the energy accumulator counter of the processor with provided - * processor handle. It is not supported on virtual machine guest - * - * @ingroup tagPowerQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a pointer to a uint64_t - * @p energy_accumulator, and a pointer to a uint64_t @p timestamp, this function - * will write amount of energy consumed to the uint64_t pointed to by - * @p energy_accumulator, and the timestamp to the uint64_t pointed to by @p timestamp. - * This function accumulates all energy consumed. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] energy_accumulator a pointer to uint64_t to which the energy - * counter will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @param[in,out] counter_resolution resolution of the counter @p energy_accumulator in - * micro Joules - * - * @param[in,out] timestamp a pointer to uint64_t to which the timestamp - * will be written. Resolution: 1 ns. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_energy_count(amdsmi_processor_handle processor_handle, uint64_t *energy_accumulator, - float *counter_resolution, uint64_t *timestamp); - -/** @} End tagPowerQuery */ - -/*****************************************************************************/ -/** @defgroup tagPowerControl Power Control - * These functions provide ways to control power usage. - * @{ - */ - -/** - * @brief Set the maximum gpu power cap value. It is not supported on virtual - * machine guest - * - * @ingroup tagPowerControl - * - * @platform{host} @platform{gpu_bm_linux} - * - * @details Set the power cap to the provided value @p cap. - * @p cap must be between the minimum and maximum power cap values set by the - * system, which can be obtained from ::amdsmi_dev_power_cap_range_get. - * - * @param[in] processor_handle A processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a processor has more than one sensor, it could be greater than 0. - * - * @param[in] cap a uint64_t that indicates the desired power cap - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_power_cap(amdsmi_processor_handle processor_handle, - uint32_t sensor_ind, uint64_t cap); - -/** - * @brief Set the power performance profile. It is not supported on virtual machine guest - * - * @ingroup tagPowerControl - * - * @platform{gpu_bm_linux} - * - * @details This function will attempt to set the current profile to the provided - * profile, given a processor handle @p processor_handle and a @p profile. The provided - * profile must be one of the currently supported profiles, as indicated by a - * call to :: amdsmi_get_gpu_power_profile_presets() - * - * @param[in] processor_handle a processor handle - * - * @param[in] reserved Not currently used. Set to 0. - * - * @param[in] profile a ::amdsmi_power_profile_preset_masks_t that hold the mask - * of the desired new power profile - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_power_profile(amdsmi_processor_handle processor_handle, uint32_t reserved, - amdsmi_power_profile_preset_masks_t profile); - -/** - * @brief Get the socket power. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] ppower - Input buffer to return socket power - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_power(amdsmi_processor_handle processor_handle, - uint32_t *ppower); - -/** - * @brief Get the socket power cap. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] pcap - Input buffer to return power cap. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_power_cap(amdsmi_processor_handle processor_handle, - uint32_t *pcap); - -/** - * @brief Get the maximum power cap value for a given socket. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] pmax - Input buffer to return maximum power limit value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_power_cap_max(amdsmi_processor_handle processor_handle, - uint32_t *pmax); - -/** - * @brief Get the SVI based power telemetry for all rails. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] power - Input buffer to return svi based power value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_pwr_svi_telemetry_all_rails(amdsmi_processor_handle processor_handle, - uint32_t *power); - -/** - * @brief Set the power cap value for a given socket. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] pcap - Input power limit value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_socket_power_cap(amdsmi_processor_handle processor_handle, - uint32_t pcap); - -/** - * @brief Set the power efficiency profile policy. - * - * @ingroup tagPowerControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] mode - mode to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_pwr_efficiency_mode(amdsmi_processor_handle processor_handle, - uint8_t mode); - -/** @} End tagPowerControl */ - -/*****************************************************************************/ -/** @defgroup tagMemoryQuery Memory Queries - * These functions provide information about memory systems. - * @{ - */ - -/** - * @brief Get the total amount of memory that exists - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a type of memory @p mem_type, and - * a pointer to a uint64_t @p total, this function will write the total amount - * of @p mem_type memory that exists to the location pointed to by @p total. - * - * @param[in] processor_handle a processor handle - * - * @param[in] mem_type The type of memory for which the total amount will be - * found - * - * @param[in,out] total a pointer to uint64_t to which the total amount of - * memory will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_memory_total(amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, - uint64_t *total); - -/** - * @brief Get the current memory usage - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details This function will write the amount of @p mem_type memory that - * that is currently being used to the location pointed to by @p used. - * - * @param[in] processor_handle a processor handle - * - * @param[in] mem_type The type of memory for which the amount being used will - * be found - * - * @param[in,out] used a pointer to uint64_t to which the amount of memory - * currently being used will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_memory_usage(amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, - uint64_t *used); - -/** - * @brief Get the bad pages of a processor. It is not supported on virtual - * machine guest - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details This call will query the device @p processor_handle for the - * number of bad pages (written to @p num_pages address). The results are - * written to address held by the @p info pointer. - * The first call to this API returns the number of bad pages which - * should be used to allocate the buffer that should contain the bad page - * records. - * - * @param[in] processor_handle a processor handle - * - * @param[out] num_pages Number of bad page records. - * - * @param[out] info The results will be written to the - * amdsmi_retired_page_record_t pointer. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_bad_page_info(amdsmi_processor_handle processor_handle, uint32_t *num_pages, - amdsmi_retired_page_record_t *info); - -/** - * @brief Get the bad pages threshold of a processor. It is not supported on virtual - * machine guest - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details This call will query the device @p processor_handle for the - * threshold of bad pages (written to @p threshold address). - * - * @param[in] processor_handle a processor handle - * @param[out] threshold of bad page count. - * - * @note This function requires root access - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_bad_page_threshold(amdsmi_processor_handle processor_handle, uint32_t *threshold); - -/** - * @brief Verify the checksum of RAS EEPROM. It is not supported on virtual - * machine guest - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details This call will verify the device @p processor_handle for the - * checksum of RAS EEPROM. - * - * @param[in] processor_handle a processor handle - * - * @note This function requires root access - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success - * AMDSMI_STATUS_CORRUPTED_EEPROM on the device's EEPROM corruption - * others on fail - */ -amdsmi_status_t amdsmi_gpu_validate_ras_eeprom(amdsmi_processor_handle processor_handle); - -/** - * @brief Returns RAS features info. - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @param[in] processor_handle Device handle which to query - * - * @param[out] ras_feature RAS features that are currently enabled and supported on - * the processor. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_ras_feature_info(amdsmi_processor_handle processor_handle, amdsmi_ras_feature_t *ras_feature); - -/** - * @brief Returns if RAS features are enabled or disabled for given block. It is not - * supported on virtual machine guest - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, this function queries the - * state of RAS features for a specific block @p block. Result will be written - * to address held by pointer @p state. - * - * @param[in] processor_handle Device handle which to query - * - * @param[in] block Block which to query - * - * @param[in,out] state A pointer to amdsmi_ras_err_state_t to which the state - * of block will be written. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_ras_block_features_enabled(amdsmi_processor_handle processor_handle, - amdsmi_gpu_block_t block, - amdsmi_ras_err_state_t *state); - -/** - * @brief Get information about reserved ("retired") memory pages. It is not supported on - * virtual machine guest - * - * @ingroup tagMemoryQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, this function returns retired page - * information @p records corresponding to the device with the provided processor - * handle @p processor_handle. The number of retired page records is returned through @p - * num_pages. @p records may be NULL on input. In this case, the number of - * records available for retrieval will be returned through @p num_pages. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] num_pages a pointer to a uint32. As input, the value passed - * through this parameter is the number of ::amdsmi_retired_page_record_t's that - * may be safely written to the memory pointed to by @p records. This is the - * limit on how many records will be written to @p records. On return, @p - * num_pages will contain the number of records written to @p records, or the - * number of records that could have been written if enough memory had been - * provided. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @param[in,out] records A pointer to a block of memory to which the - * ::amdsmi_retired_page_record_t values will be written. This value may be NULL. - * In this case, this function can be used to query how many records are - * available to read. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_memory_reserved_pages(amdsmi_processor_handle processor_handle, - uint32_t *num_pages, - amdsmi_retired_page_record_t *records); - -/** @} End tagMemoryQuery */ - -/** @defgroup tagPhysicalStateQuery Physical State Queries - * These functions provide information about the physical characteristics of - * the device. - * @{ - */ - -/** - * @brief Get the fan speed in RPMs of the device with the specified processor - * handle and 0-based sensor index. It is not supported on virtual machine guest - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t - * @p speed, this function will write the current fan speed in RPMs to the - * uint32_t pointed to by @p speed - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @param[in,out] speed a pointer to uint32_t to which the speed will be - * written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_fan_rpms(amdsmi_processor_handle processor_handle, - uint32_t sensor_ind, int64_t *speed); - -/** - * @brief Get the fan speed for the specified device as a value relative to - * ::AMDSMI_MAX_FAN_SPEED. It is not supported on virtual machine guest - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t - * @p speed, this function will write the current fan speed (a value - * between 0 and the maximum fan speed, ::AMDSMI_MAX_FAN_SPEED) to the uint32_t - * pointed to by @p speed - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @param[in,out] speed a pointer to uint32_t to which the speed will be - * written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_fan_speed(amdsmi_processor_handle processor_handle, - uint32_t sensor_ind, int64_t *speed); - -/** - * @brief Get the max. fan speed of the device with provided processor handle. It is - * not supported on virtual machine guest - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t - * @p max_speed, this function will write the maximum fan speed possible to - * the uint32_t pointed to by @p max_speed - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @param[in,out] max_speed a pointer to uint32_t to which the maximum speed - * will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_fan_speed_max(amdsmi_processor_handle processor_handle, - uint32_t sensor_ind, uint64_t *max_speed); - -/** - * @brief Get the temperature metric value for the specified metric, from the - * specified temperature sensor on the specified device. It is not supported on - * virtual machine guest - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @details Given a processor handle @p processor_handle, a sensor type @p sensor_type, a - * ::amdsmi_temperature_metric_t @p metric and a pointer to an int64_t @p - * temperature, this function will write the value of the metric indicated by - * @p metric and @p sensor_type to the memory location @p temperature. - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_type part of device from which temperature should be - * obtained. This should come from the enum ::amdsmi_temperature_type_t - * - * @param[in] metric enum indicated which temperature value should be - * retrieved - * - * @param[in,out] temperature a pointer to int64_t to which the temperature - * will be written, in millidegrees Celcius. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_temp_metric(amdsmi_processor_handle processor_handle, - amdsmi_temperature_type_t sensor_type, - amdsmi_temperature_metric_t metric, int64_t *temperature); - -/** - * @brief Returns gpu cache info. - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[out] info reference to the cache info struct. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_cache_info(amdsmi_processor_handle processor_handle, amdsmi_gpu_cache_info_t *info); - -/** - * @brief Get the voltage metric value for the specified metric, from the - * specified voltage sensor on the specified device. It is not supported on - * virtual machine guest - * - * @ingroup tagPhysicalStateQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a sensor type @p sensor_type, a - * ::amdsmi_voltage_metric_t @p metric and a pointer to an int64_t @p - * voltage, this function will write the value of the metric indicated by - * @p metric and @p sensor_type to the memory location @p voltage. - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_type part of device from which voltage should be - * obtained. This should come from the enum ::amdsmi_voltage_type_t - * - * @param[in] metric enum indicated which voltage value should be - * retrieved - * - * @param[in,out] voltage a pointer to int64_t to which the voltage - * will be written, in millivolts. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_volt_metric(amdsmi_processor_handle processor_handle, - amdsmi_voltage_type_t sensor_type, - amdsmi_voltage_metric_t metric, int64_t *voltage); - -/** @} End tagPhysicalStateQuery */ - -/*****************************************************************************/ -/** @defgroup tagPhysicalStateControl Physical State Control - * These functions provide control over the physical state of a device. - * @{ - */ - -/** - * @brief Reset the fan to automatic driver control. It is not supported on virtual - * machine guest - * - * @ingroup tagPhysicalStateControl - * - * @platform{gpu_bm_linux} - * - * @details This function returns control of the fan to the system - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_reset_gpu_fan(amdsmi_processor_handle processor_handle, uint32_t sensor_ind); - -/** - * @brief Set the fan speed for the specified device with the provided speed, - * in RPMs. It is not supported on virtual machine guest - * - * @ingroup tagPhysicalStateControl - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a integer value indicating - * speed @p speed, this function will attempt to set the fan speed to @p speed. - * An error will be returned if the specified speed is outside the allowable - * range for the device. The maximum value is 255 and the minimum is 0. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @param[in] speed the speed to which the function will attempt to set the fan - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_fan_speed(amdsmi_processor_handle processor_handle, - uint32_t sensor_ind, uint64_t speed); - -/** @} End tagPhysicalStateControl */ - -/*****************************************************************************/ -/** @defgroup tagClkPowerPerfQuery Clock, Power and Performance Queries - * These functions provide information about clock frequencies and - * performance. - * @{ - */ - -/** - * @brief Get coarse grain utilization counter of the specified device - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, the array of the utilization counters, - * the size of the array, this function returns the coarse grain utilization counters - * and timestamp. - * The counter is the accumulated percentages. Every milliseconds the firmware calculates - * % busy count and then accumulates that value in the counter. This provides minimally - * invasive coarse grain GPU usage information. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] utilization_counters Multiple utilization counters can be retreived with a single - * call. The caller must allocate enough space to the utilization_counters array. The caller also - * needs to set valid AMDSMI_UTILIZATION_COUNTER_TYPE type for each element of the array. - * ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the provided arguments. - * - * If the function reutrns AMDSMI_STATUS_SUCCESS, the counter will be set in the value field of - * the amdsmi_utilization_counter_t. - * - * @param[in] count The size of @p utilization_counters array. - * - * @param[in,out] timestamp The timestamp when the counter is retrieved. Resolution: 1 ns. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_utilization_count(amdsmi_processor_handle processor_handle, - amdsmi_utilization_counter_t utilization_counters[], - uint32_t count, uint64_t *timestamp); - -/** - * @brief Get the performance level of the device. It is not supported on virtual - * machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details This function will write the ::amdsmi_dev_perf_level_t to the uint32_t - * pointed to by @p perf, for a given processor handle @p processor_handle and a pointer - * to a uint32_t @p perf. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] perf a pointer to ::amdsmi_dev_perf_level_t to which the - * performance level will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_perf_level(amdsmi_processor_handle processor_handle, - amdsmi_dev_perf_level_t *perf); - -/** - * @brief Enter performance determinism mode with provided processor handle. It is - * not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and @p clkvalue this function - * will enable performance determinism mode, which enforces a GFXCLK frequency - * SoftMax limit per GPU set by the user. This prevents the GFXCLK PLL from - * stretching when running the same workload on different GPUS, making - * performance variation minimal. This call will result in the performance - * level ::amdsmi_dev_perf_level_t of the device being - * ::AMDSMI_DEV_PERF_LEVEL_DETERMINISM. - * - * @param[in] processor_handle a processor handle - * - * @param[in] clkvalue Softmax value for GFXCLK in MHz. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_perf_determinism_mode(amdsmi_processor_handle processor_handle, uint64_t clkvalue); - -/** - * @brief Get the overdrive percent associated with the device with provided - * processor handle. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p od, - * this function will write the overdrive percentage to the uint32_t pointed - * to by @p od - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] od a pointer to uint32_t to which the overdrive percentage - * will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t *od); - -/** - * @brief Get the GPU memory clock overdrive percent associated with the device with provided - * processor handle. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a uint32_t @p od, - * this function will write the overdrive percentage to the uint32_t pointed - * to by @p od - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] od a pointer to uint32_t to which the GPU memory clock overdrive percentage - * will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_mem_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t *od); - -/** - * @brief Get the list of possible system clock speeds of device for a - * specified clock type. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a clock type @p clk_type, and a - * pointer to a to an ::amdsmi_frequencies_t structure @p f, this function will - * fill in @p f with the possible clock speeds, and indication of the current - * clock speed selection. - * - * @param[in] processor_handle a processor handle - * - * @param[in] clk_type the type of clock for which the frequency is desired - * - * @param[in,out] f a pointer to a caller provided ::amdsmi_frequencies_t structure - * to which the frequency information will be written. Frequency values are in - * Hz. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_clk_freq(amdsmi_processor_handle processor_handle, - amdsmi_clk_type_t clk_type, amdsmi_frequencies_t *f); - -/** - * @brief Reset the gpu associated with the device with provided processor handle. It is not - * supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, this function will reset the GPU - * - * @param[in] processor_handle a processor handle - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_reset_gpu(amdsmi_processor_handle processor_handle); - -/** - * @brief This function retrieves the overdrive GFX & MCLK information. If valid - * for the GPU it will also populate the voltage curve data. It is not supported - * on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a - * ::amdsmi_od_volt_freq_data_t structure @p odv, this function will populate @p - * odv. See ::amdsmi_od_volt_freq_data_t for more details. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] odv a pointer to an ::amdsmi_od_volt_freq_data_t structure - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_od_volt_info(amdsmi_processor_handle processor_handle, - amdsmi_od_volt_freq_data_t *odv); - -/** - * @brief Get the 'metrics_header_info' from the GPU metrics associated with the device - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a amd_metrics_table_header_t in which - * the 'metrics_header_info' will stored - * - * @param[in] processor_handle Device which to query - * - * @param[inout] header_value a pointer to amd_metrics_table_header_t to which the device gpu - * metric unit will be stored - * - * @retval ::AMDSMI_STATUS_SUCCESS is returned upon successful call. - * ::AMDSMI_STATUS_NOT_SUPPORTED is returned in case the metric unit - * does not exist for the given device - * @return ::amdsmi_status_t - */ -amdsmi_status_t -amdsmi_get_gpu_metrics_header_info(amdsmi_processor_handle processor_handle, amd_metrics_table_header_t* header_value); - -/** - * @brief This function retrieves the gpu metrics information. It is not supported - * on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a - * ::amdsmi_gpu_metrics_t structure @p pgpu_metrics, this function will populate - * @p pgpu_metrics. See ::amdsmi_gpu_metrics_t for more details. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] pgpu_metrics a pointer to an ::amdsmi_gpu_metrics_t structure - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_metrics_info(amdsmi_processor_handle processor_handle, - amdsmi_gpu_metrics_t *pgpu_metrics); - -/** - * @brief Get the pm metrics table with provided device index. - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a device handle @p processor_handle, @p pm_metrics pointer, - * and @p num_of_metrics pointer, - * this function will write the pm metrics name value pair - * to the array at @p pm_metrics and the number of metrics retreived to @p num_of_metrics - * Note: the library allocated memory for pm_metrics, and user must call - * free(pm_metrics) to free it after use. - * - * @param[in] processor_handle a processor handle - * - * @param[inout] pm_metrics A pointerto an array to hold multiple PM metrics. On successs, - * the library will allocate memory of pm_metrics and write metrics to this array. - * The caller must free this memory after usage to avoid memory leak. - * - * @param[inout] num_of_metrics a pointer to uint32_t to which the number of - * metrics is allocated for pm_metrics array as input, and the number of metrics retreived - * as output. If this parameter is NULL, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function with the given arguments - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @return ::amdsmi_status_t - * - */ -amdsmi_status_t amdsmi_get_gpu_pm_metrics_info(amdsmi_processor_handle processor_handle, - amdsmi_name_value_t** pm_metrics, - uint32_t *num_of_metrics); - -/** - * @brief Get the register metrics table with provided device index and register type. - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a device handle @p processor_handle, @p reg_type, @p reg_metrics pointer, - * and @p num_of_metrics pointer, - * this function will write the register metrics name value pair - * to the array at @p reg_metrics and the number of metrics retreived to @p num_of_metrics - * Note: the library allocated memory for reg_metrics, and user must call - * free(reg_metrics) to free it after use. - * - * @param[in] processor_handle a processor handle - * - * @param[in] reg_type The register type - * - * @param[inout] reg_metrics A pointerto an array to hold multiple register metrics. On successs, - * the library will allocate memory of reg_metrics and write metrics to this array. - * The caller must free this memory after usage to avoid memory leak. - * - * @param[inout] num_of_metrics a pointer to uint32_t to which the number of - * metrics is allocated for reg_metrics array as input, and the number of metrics retreived - * as output. If this parameter is NULL, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function with the given arguments - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @return ::amdsmi_status_t - * - */ -amdsmi_status_t amdsmi_get_gpu_reg_table_info(amdsmi_processor_handle processor_handle, - amdsmi_reg_type_t reg_type, - amdsmi_name_value_t** reg_metrics, - uint32_t *num_of_metrics); - -/** - * @brief This function sets the clock range information. It is not supported on virtual - * machine guest - * - * @deprecated ::amdsmi_set_gpu_clk_limit() should be used, with an - * interface that set the min_value and then max_value. - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a minimum clock value @p minclkvalue, - * a maximum clock value @p maxclkvalue and a clock type @p clkType this function - * will set the sclk|mclk range - * - * @param[in] processor_handle a processor handle - * - * @param[in] minclkvalue value to apply to the clock range. Frequency values - * are in MHz. - * - * @param[in] maxclkvalue value to apply to the clock range. Frequency values - * are in MHz. - * - * @param[in] clkType AMDSMI_CLK_TYPE_SYS | AMDSMI_CLK_TYPE_MEM range type - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_clk_range(amdsmi_processor_handle processor_handle, - uint64_t minclkvalue, - uint64_t maxclkvalue, - amdsmi_clk_type_t clkType); - -/** - * @brief This function sets the clock sets the clock min/max level - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a clock type @p clk_type, - * a value @p clk_value needs to be set, and the @p level indicates min or max - * clock you want to set, this function the clock limit. - * - * @param[in] processor_handle a processor handle - * - * @param[in] clk_type AMDSMI_CLK_TYPE_SYS, AMDSMI_CLK_TYPE_MEM and so on - * - * @param[in] limit_type AMDSMI_FREQ_IND_MIN|AMDSMI_FREQ_IND_MAX to set the - * minimum (0) or maximum (1) speed. - * - * @param[in] clk_value value to apply to. Frequency values are in MHz. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_clk_limit(amdsmi_processor_handle processor_handle, - amdsmi_clk_type_t clk_type, - amdsmi_clk_limit_type_t limit_type, - uint64_t clk_value); - -/** - * @brief Frees heap memory allocated by reg_table and pm_metrics - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Frees heap memory. - * - * @param[in] p a pointer to the memory to free. - * - * @return ::void - */ -void amdsmi_free_name_value_pairs(void *p); - -/** - * @brief This function sets the clock frequency information. It is not supported on - * virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a frequency level @p level, - * a clock value @p clkvalue and a clock type @p clkType this function - * will set the sclk|mclk range - * - * @param[in] processor_handle a processor handle - * - * @param[in] level AMDSMI_FREQ_IND_MIN|AMDSMI_FREQ_IND_MAX to set the - * minimum (0) or maximum (1) speed. - * - * @param[in] clkvalue value to apply to the clock range. Frequency values - * are in MHz. - * - * @param[in] clkType AMDSMI_CLK_TYPE_SYS | AMDSMI_CLK_TYPE_MEM range type - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_od_clk_info(amdsmi_processor_handle processor_handle, - amdsmi_freq_ind_t level, - uint64_t clkvalue, - amdsmi_clk_type_t clkType); - -/** - * @brief This function sets 1 of the 3 voltage curve points. It is not supported - * on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a voltage point @p vpoint - * and a voltage value @p voltvalue this function will set voltage curve point - * - * @param[in] processor_handle a processor handle - * - * @param[in] vpoint voltage point [0|1|2] on the voltage curve - * - * @param[in] clkvalue clock value component of voltage curve point. - * Frequency values are in MHz. - * - * @param[in] voltvalue voltage value component of voltage curve point. - * Voltage is in mV. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_od_volt_info(amdsmi_processor_handle processor_handle, - uint32_t vpoint, uint64_t clkvalue, uint64_t voltvalue); - -/** - * @brief This function will retrieve the current valid regions in the - * frequency/voltage space. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a pointer to an unsigned integer - * @p num_regions and a buffer of ::amdsmi_freq_volt_region_t structures, @p - * buffer, this function will populate @p buffer with the current - * frequency-volt space regions. The caller should assign @p buffer to memory - * that can be written to by this function. The caller should also - * indicate the number of ::amdsmi_freq_volt_region_t structures that can safely - * be written to @p buffer in @p num_regions. - * - * The number of regions to expect this function provide (@p num_regions) can - * be obtained by calling :: amdsmi_get_gpu_od_volt_info(). - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] num_regions As input, this is the number of - * ::amdsmi_freq_volt_region_t structures that can be written to @p buffer. As - * output, this is the number of ::amdsmi_freq_volt_region_t structures that were - * actually written. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @param[in,out] buffer a caller provided buffer to which - * ::amdsmi_freq_volt_region_t structures will be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_od_volt_curve_regions(amdsmi_processor_handle processor_handle, - uint32_t *num_regions, amdsmi_freq_volt_region_t *buffer); - -/** - * @brief Get the list of available preset power profiles and an indication of - * which profile is currently active. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a pointer to a - * ::amdsmi_power_profile_status_t @p status, this function will set the bits of - * the ::amdsmi_power_profile_status_t.available_profiles bit field of @p status to - * 1 if the profile corresponding to the respective - * ::amdsmi_power_profile_preset_masks_t profiles are enabled. For example, if both - * the VIDEO and VR power profiles are available selections, then - * ::AMDSMI_PWR_PROF_PRST_VIDEO_MASK AND'ed with - * ::amdsmi_power_profile_status_t.available_profiles will be non-zero as will - * ::AMDSMI_PWR_PROF_PRST_VR_MASK AND'ed with - * ::amdsmi_power_profile_status_t.available_profiles. Additionally, - * ::amdsmi_power_profile_status_t.current will be set to the - * ::amdsmi_power_profile_preset_masks_t of the profile that is currently active. - * - * @param[in] processor_handle a processor handle - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * - * @param[in,out] status a pointer to ::amdsmi_power_profile_status_t that will be - * populated by a call to this function - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_power_profile_presets(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, - amdsmi_power_profile_status_t *status); - -/** @} End tagClkPowerPerfQuery */ - -/*****************************************************************************/ -/** @defgroup tagClkPowerPerfControl Clock, Power and Performance Control - * These functions provide control over clock frequencies, power and - * performance. - * @{ - */ - -/** - * @brief Set the PowerPlay performance level associated with the device with - * provided processor handle with the provided value. It is not supported - * on virtual machine guest - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and an ::amdsmi_dev_perf_level_t @p - * perf_level, this function will set the PowerPlay performance level for the - * device to the value @p perf_lvl. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] perf_lvl the value to which the performance level should be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_perf_level(amdsmi_processor_handle processor_handle, amdsmi_dev_perf_level_t perf_lvl); - -/** - * @brief Set the overdrive percent associated with the device with provided - * processor handle with the provided value. See details for WARNING. It is - * not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and an overdrive level @p od, - * this function will set the overdrive level for the device to the value - * @p od. The overdrive level is an integer value between 0 and 20, inclusive, - * which represents the overdrive percentage; e.g., a value of 5 specifies - * an overclocking of 5%. - * - * The overdrive level is specific to the gpu system clock. - * - * The overdrive level is the percentage above the maximum Performance Level - * to which overclocking will be limited. The overclocking percentage does - * not apply to clock speeds other than the maximum. This percentage is - * limited to 20%. - * - * ******WARNING****** - * Operating your AMD GPU outside of official AMD specifications or outside of - * factory settings, including but not limited to the conducting of - * overclocking (including use of this overclocking software, even if such - * software has been directly or indirectly provided by AMD or otherwise - * affiliated in any way with AMD), may cause damage to your AMD GPU, system - * components and/or result in system failure, as well as cause other problems. - * DAMAGES CAUSED BY USE OF YOUR AMD GPU OUTSIDE OF OFFICIAL AMD SPECIFICATIONS - * OR OUTSIDE OF FACTORY SETTINGS ARE NOT COVERED UNDER ANY AMD PRODUCT - * WARRANTY AND MAY NOT BE COVERED BY YOUR BOARD OR SYSTEM MANUFACTURER'S - * WARRANTY. Please use this utility with caution. - * - * @param[in] processor_handle a processor handle - * - * @param[in] od the value to which the overdrive level should be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_overdrive_level(amdsmi_processor_handle processor_handle, uint32_t od); - -/** - * @brief Control the set of allowed frequencies that can be used for the - * specified clock. It is not supported on virtual machine guest - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a clock type @p clk_type, and a - * 64 bit bitmask @p freq_bitmask, this function will limit the set of - * allowable frequencies. If a bit in @p freq_bitmask has a value of 1, then - * the frequency (as ordered in an ::amdsmi_frequencies_t returned by - * amdsmi_get_clk_freq()) corresponding to that bit index will be - * allowed. - * - * This function will change the performance level to - * ::AMDSMI_DEV_PERF_LEVEL_MANUAL in order to modify the set of allowable - * frequencies. Caller will need to set to ::AMDSMI_DEV_PERF_LEVEL_AUTO in order - * to get back to default state. - * - * All bits with indices greater than or equal to - * ::amdsmi_frequencies_t::num_supported will be ignored. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] clk_type the type of clock for which the set of frequencies - * will be modified - * - * @param[in] freq_bitmask A bitmask indicating the indices of the - * frequencies that are to be enabled (1) and disabled (0). Only the lowest - * ::amdsmi_frequencies_t.num_supported bits of this mask are relevant. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle, - amdsmi_clk_type_t clk_type, uint64_t freq_bitmask); - -/** - * @brief Get the soc pstate policy for the processor - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} - * - * @details Given a processor handle @p processor_handle, this function will write - * current soc pstate policy settings to @p policy. All the processors at the same socket - * will have the same policy. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] policy the soc pstate policy for this processor. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_soc_pstate(amdsmi_processor_handle processor_handle, - amdsmi_dpm_policy_t* policy); - -/** - * @brief Set the soc pstate policy for the processor - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} - * - * @details Given a processor handle @p processor_handle and a soc pstate policy @p policy_id, - * this function will set the soc pstate policy for this processor. All the processors at - * the same socket will be set to the same policy. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] policy_id the soc pstate policy id to set. The id is the id in - * amdsmi_dpm_policy_entry_t, which can be obtained by calling - * amdsmi_get_soc_pstate() - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_soc_pstate(amdsmi_processor_handle processor_handle, - uint32_t policy_id); - -/** - * @brief Get the xgmi per-link power down policy parameter for the processor - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} - * - * @details Given a processor handle @p processor_handle, this function will write - * current xgmi plpd settings to @p policy. All the processors at the same socket - * will have the same policy. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] xgmi_plpd the xgmi plpd for this processor. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_xgmi_plpd(amdsmi_processor_handle processor_handle, - amdsmi_dpm_policy_t* xgmi_plpd); - -/** - * @brief Set the xgmi per-link power down policy parameter for the processor - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{host} - * - * @details Given a processor handle @p processor_handle and a dpm policy @p policy_id, - * this function will set the xgmi plpd for this processor. All the processors at - * the same socket will be set to the same policy. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] policy_id the xgmi plpd id to set. The id is the id in - * amdsmi_dpm_policy_entry_t, which can be obtained by calling - * amdsmi_get_xgmi_plpd() - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_xgmi_plpd(amdsmi_processor_handle processor_handle, uint32_t policy_id); - -/** - * @brief Get the status of the Process Isolation - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} - * - * @details Given a processor handle @p processor_handle, this function will write - * current process isolation status to @p pisolate. The 0 is the process isolation - * disabled, and the 1 is the process isolation enabled. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] pisolate the process isolation status. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_process_isolation(amdsmi_processor_handle processor_handle, - uint32_t* pisolate); - -/** - * @brief Enable/disable the system Process Isolation - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} - * - * @details Given a processor handle @p processor_handle and a process isolation @p pisolate, - * flag, this function will set the Process Isolation for this processor. The 0 is the process - * isolation disabled, and the 1 is the process isolation enabled. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] pisolate the process isolation status to set. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_gpu_process_isolation(amdsmi_processor_handle processor_handle, - uint32_t pisolate); - -/** - * @brief Run the cleaner shader to clean up data in LDS/GPRs - * - * @ingroup tagClkPowerPerfControl - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_windows} - * - * @details Given a processor handle @p processor_handle, - * this function will clean the local data of this processor. This can be called between - * user logins to prevent information leak. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_clean_gpu_local_data(amdsmi_processor_handle processor_handle); - -/** @} End tagClkPowerPerfControl */ - -/*****************************************************************************/ -/** @defgroup tagVersionQuery Version Queries - * These functions provide version information about various subsystems. - * @{ - */ - -/** - * @brief Get the build version information for the currently running build of AMDSMI - * - * @ingroup tagVersionQuery - * - * @platform{gpu_bm_linux} @platform{cpu_bm} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @details Get the major, minor, patch and build string for AMDSMI build - * currently in use through @p version - * - * @param[in,out] version A pointer to an ::amdsmi_version_t structure that will - * be updated with the version information upon return. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_lib_version(amdsmi_version_t *version); - -/** @} End tagVersionQuery */ - -/*****************************************************************************/ -/** @defgroup tagECCInfo ECC Information - * @{ - */ - -/** - * @brief Retrieve the error counts for a GPU block. It is not supported on virtual - * machine guest - * - * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel - * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) - * to learn how these error counts are accessed. - * - * @ingroup tagECCInfo - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details Given a processor handle @p processor_handle, an ::amdsmi_gpu_block_t @p block and a - * pointer to an ::amdsmi_error_count_t @p ec, this function will write the error - * count values for the GPU block indicated by @p block to memory pointed to by - * @p ec. - * - * @param[in] processor_handle a processor handle - * - * @param[in] block The block for which error counts should be retrieved - * - * @param[in,out] ec A pointer to an ::amdsmi_error_count_t to which the error - * counts should be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_ecc_count(amdsmi_processor_handle processor_handle, - amdsmi_gpu_block_t block, amdsmi_error_count_t *ec); - -/** - * @brief Retrieve the enabled ECC bit-mask. It is not supported on virtual machine guest - * - * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel - * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) - * to learn how these error counts are accessed. - * - * @ingroup tagECCInfo - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details Given a processor handle @p processor_handle, and a pointer to a uint64_t @p - * enabled_mask, this function will write bits to memory pointed to by - * @p enabled_blocks. Upon a successful call, @p enabled_blocks can then be - * AND'd with elements of the ::amdsmi_gpu_block_t ennumeration to determine if - * the corresponding block has ECC enabled. Note that whether a block has ECC - * enabled or not in the device is independent of whether there is kernel - * support for error counting for that block. Although a block may be enabled, - * but there may not be kernel support for reading error counters for that - * block. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] enabled_blocks A pointer to a uint64_t to which the enabled - * blocks bits will be written. - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_ecc_enabled(amdsmi_processor_handle processor_handle, - uint64_t *enabled_blocks); - -/** - * @brief Returns the total number of ECC errors (correctable, - * uncorrectable and deferred) in the given GPU. It is not supported on - * virtual machine guest - * - * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel - * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) - * to learn how these error counts are accessed. - * - * @ingroup tagECCInfo - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] ec Reference to ecc error count structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_total_ecc_count(amdsmi_processor_handle processor_handle, amdsmi_error_count_t *ec); - -/** @} End tagECCInfo */ - -/*****************************************************************************/ -/** @defgroup tagErrorQuery Error Queries - * These functions provide error information about AMDSMI calls as well as - * device errors. - * @{ - */ - -/** - * @brief Retrieve the ECC status for a GPU block. It is not supported on virtual machine - * guest - * - * See [RAS Error Count sysfs Interface (AMDGPU RAS Support - Linux Kernel - * documentation)](https://docs.kernel.org/gpu/amdgpu/ras.html#ras-error-count-sysfs-interface) - * to learn how these error counts are accessed. - * - * @ingroup tagErrorQuery - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, an ::amdsmi_gpu_block_t @p block and - * a pointer to an ::amdsmi_ras_err_state_t @p state, this function will write - * the current state for the GPU block indicated by @p block to memory pointed - * to by @p state. - * - * @param[in] processor_handle a processor handle - * - * @param[in] block The block for which error counts should be retrieved - * - * @param[in,out] state A pointer to an ::amdsmi_ras_err_state_t to which the - * ECC state should be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_ecc_status(amdsmi_processor_handle processor_handle, - amdsmi_gpu_block_t block, - amdsmi_ras_err_state_t *state); - -/** - * @brief Get a description of a provided AMDSMI error status - * - * @ingroup tagErrorQuery - * - * @platform{gpu_bm_linux} @platform{host} @platform{cpu_bm} @platform{guest_1vf} @platform{guest_mvf} - * - * @details Set the provided pointer to a const char *, @p status_string, to - * a string containing a description of the provided error code @p status. - * - * @param[in] status The error status for which a description is desired - * - * @param[in,out] status_string A pointer to a const char * which will be made - * to point to a description of the provided error code - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_status_code_to_string(amdsmi_status_t status, const char **status_string); - -/** @} End tagErrorQuery */ - -/*****************************************************************************/ -/** @defgroup tagPerfCounter Performance Counter Functions - * These functions are used to configure, query and control performance - * counting. - * - * These functions use the same mechanisms as the "perf" command line - * utility. They share the same underlying resources and have some similarities - * in how they are used. The events supported by this API should have - * corresponding perf events that can be seen with "perf stat ...". The events - * supported by perf can be seen with "perf list" - * - * The types of events available and the ability to count those - * events are dependent on which device is being targeted and if counters are - * still available for that device, respectively. - * ::amdsmi_gpu_counter_group_supported() can be used to see which event types - * (::amdsmi_event_group_t) are supported for a given device. Assuming a device - * supports a given event type, we can then check to see if there are counters - * available to count a specific event with - * :: amdsmi_get_gpu_available_counters(). Counters may be occupied by other - * perf based programs. - * - * Once it is determined that events are supported and counters are available, - * an event counter can be created/destroyed and controlled. - * - * ::amdsmi_gpu_create_counter() allocates internal data structures that will be - * used to used to control the event counter, and return a handle to this data - * structure. - * - * Once an event counter handle is obtained, the event counter can be - * controlled (i.e., started, stopped,...) with ::amdsmi_gpu_control_counter() by - * passing ::amdsmi_counter_command_t commands. ::AMDSMI_CNTR_CMD_START starts an - * event counter and ::AMDSMI_CNTR_CMD_STOP stops a counter. - * ::amdsmi_gpu_read_counter() reads an event counter. - * - * Once the counter is no longer needed, the resources it uses should be freed - * by calling ::amdsmi_gpu_destroy_counter(). - * - * Important Notes about Counter Values - * ==================================== - * - A running "absolute" counter is kept internally. For the discussion that - * follows, we will call the internal counter value at time @a t @a - * valt - * - Issuing ::AMDSMI_CNTR_CMD_START or calling ::amdsmi_gpu_read_counter(), causes - * AMDSMI (in kernel) to internally record the current absolute counter value - * - ::amdsmi_gpu_read_counter() returns the number of events that have occurred - * since the previously recorded value (ie, a relative value, - * @a valt - valt-1) from the issuing of - * ::AMDSMI_CNTR_CMD_START or calling ::amdsmi_gpu_read_counter() - * - * Example of event counting sequence: - * - * @latexonly - * \pagebreak - * @endlatexonly - * @code{.cpp} - * - * amdsmi_counter_value_t value; - * - * // Determine if AMDSMI_EVNT_GRP_XGMI is supported for device dv_ind - * ret = amdsmi_gpu_counter_group_supported(dv_ind, AMDSMI_EVNT_GRP_XGMI); - * - * // See if there are counters available for device dv_ind for event - * // AMDSMI_EVNT_GRP_XGMI - * - * ret = amdsmi_get_gpu_available_counters(dv_ind, - * AMDSMI_EVNT_GRP_XGMI, &counters_available); - * - * // Assuming AMDSMI_EVNT_GRP_XGMI is supported and there is at least 1 - * // counter available for AMDSMI_EVNT_GRP_XGMI on device dv_ind, create - * // an event object for an event of group AMDSMI_EVNT_GRP_XGMI (e.g., - * // AMDSMI_EVNT_XGMI_0_BEATS_TX) and get the handle - * // (amdsmi_event_handle_t). - * - * ret = amdsmi_gpu_create_counter(dv_ind, AMDSMI_EVNT_XGMI_0_BEATS_TX, - * &evnt_handle); - * - * // A program that generates the events of interest can be started - * // immediately before or after starting the counters. - * // Start counting: - * ret = amdsmi_gpu_control_counter(evnt_handle, AMDSMI_CNTR_CMD_START, NULL); - * - * // Wait... - * - * // Get the number of events since AMDSMI_CNTR_CMD_START was issued: - * ret = amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, &value) - * - * // Wait... - * - * // Get the number of events since amdsmi_gpu_read_counter() was last called: - * ret = amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, &value) - * - * // Stop counting. - * ret = amdsmi_gpu_control_counter(evnt_handle, AMDSMI_CNTR_CMD_STOP, NULL); - * - * // Release all resources (e.g., counter and memory resources) associated - * with evnt_handle. - * ret = amdsmi_gpu_destroy_counter(evnt_handle); - * @endcode - * @{ - */ - -/** - * @brief Tell if an event group is supported by a given device. It is not supported - * on virtual machine guest - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and an event group specifier @p - * group, tell if @p group type events are supported by the device associated - * with @p processor_handle - * - * @param[in] processor_handle processor handle of device being queried - * - * @param[in] group ::amdsmi_event_group_t identifier of group for which support - * is being queried - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_counter_group_supported(amdsmi_processor_handle processor_handle, amdsmi_event_group_t group); - -/** - * @brief Create a performance counter object - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Create a performance counter object of type @p type for the device - * with a processor handle of @p processor_handle, and write a handle to the object to the - * memory location pointed to by @p evnt_handle. @p evnt_handle can be used - * with other performance event operations. The handle should be deallocated - * with ::amdsmi_gpu_destroy_counter() when no longer needed. - * - * @note This function requires root access - * - * @param[in] processor_handle a processor handle - * - * @param[in] type the ::amdsmi_event_type_t of performance event to create - * - * @param[in,out] evnt_handle A pointer to a ::amdsmi_event_handle_t which will be - * associated with a newly allocated counter - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_create_counter(amdsmi_processor_handle processor_handle, amdsmi_event_type_t type, - amdsmi_event_handle_t *evnt_handle); - -/** - * @brief Deallocate a performance counter object - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Deallocate the performance counter object with the provided - * ::amdsmi_event_handle_t @p evnt_handle - * - * @note This function requires root access - * - * @param[in] evnt_handle handle to event object to be deallocated - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_destroy_counter(amdsmi_event_handle_t evnt_handle); - -/** - * @brief Issue performance counter control commands. It is not supported on - * virtual machine guest - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Issue a command @p cmd on the event counter associated with the - * provided handle @p evt_handle. - * - * @note This function requires root access - * - * @param[in] evt_handle an event handle - * - * @param[in] cmd The event counter command to be issued - * - * @param[in,out] cmd_args Currently not used. Should be set to NULL. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_control_counter(amdsmi_event_handle_t evt_handle, - amdsmi_counter_command_t cmd, void *cmd_args); - -/** - * @brief Read the current value of a performance counter - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Read the current counter value of the counter associated with the - * provided handle @p evt_handle and write the value to the location pointed - * to by @p value. - * - * @note This function requires root access - * - * @param[in] evt_handle an event handle - * - * @param[in,out] value pointer to memory of size of ::amdsmi_counter_value_t to - * which the counter value will be written - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_read_counter(amdsmi_event_handle_t evt_handle, - amdsmi_counter_value_t *value); - -/** - * @brief Get the number of currently available counters. It is not supported on - * virtual machine guest - * - * @ingroup tagPerfCounter - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a performance event group @p grp, - * and a pointer to a uint32_t @p available, this function will write the - * number of @p grp type counters that are available on the device with handle - * @p processor_handle to the memory that @p available points to. - * - * @param[in] processor_handle a processor handle - * - * @param[in] grp an event device group - * - * @param[in,out] available A pointer to a uint32_t to which the number of - * available counters will be written - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_available_counters(amdsmi_processor_handle processor_handle, - amdsmi_event_group_t grp, uint32_t *available); - -/** @} End tagPerfCounter */ - -/*****************************************************************************/ -/** @defgroup tagSystemInfo System Information Functions - * These functions are used to configure, query and control performance - * counting. - * @{ - */ - -/** - * @brief Get process information about processes currently using GPU - * - * @ingroup tagSystemInfo - * - * @platform{gpu_bm_linux} - * - * @details Given a non-NULL pointer to an array @p procs of - * ::amdsmi_process_info_t's, of length *@p num_items, this function will write - * up to *@p num_items instances of ::amdsmi_process_info_t to the memory pointed - * to by @p procs. These instances contain information about each process - * utilizing a GPU. If @p procs is not NULL, @p num_items will be updated with - * the number of processes actually written. If @p procs is NULL, @p num_items - * will be updated with the number of processes for which there is current - * process information. Calling this function with @p procs being NULL is a way - * to determine how much memory should be allocated for when @p procs is not - * NULL. - * - * @param[in,out] procs a pointer to memory provided by the caller to which - * process information will be written. This may be NULL in which case only @p - * num_items will be updated with the number of processes found. - * - * @param[in,out] num_items A pointer to a uint32_t, which on input, should - * contain the amount of memory in ::amdsmi_process_info_t's which have been - * provided by the @p procs argument. On output, if @p procs is non-NULL, this - * will be updated with the number ::amdsmi_process_info_t structs actually - * written. If @p procs is NULL, this argument will be updated with the number - * processes for which there is information. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_compute_process_info(amdsmi_process_info_t *procs, uint32_t *num_items); - -/** - * @brief Get process information about a specific process - * - * @ingroup tagSystemInfo - * - * @platform{gpu_bm_linux} - * - * @details Given a pointer to an ::amdsmi_process_info_t @p proc and a process - * id - * @p pid, this function will write the process information for @p pid, if - * available, to the memory pointed to by @p proc. - * - * @param[in] pid The process ID for which process information is being - * requested - * - * @param[in,out] proc a pointer to a ::amdsmi_process_info_t to which - * process information for @p pid will be written if it is found. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_compute_process_info_by_pid(uint32_t pid, amdsmi_process_info_t *proc); - -/** - * @brief Get the device indices currently being used by a process - * - * @ingroup tagSystemInfo - * - * @platform{gpu_bm_linux} - * - * @details Given a process id @p pid, a non-NULL pointer to an array of - * uint32_t's @p processor_handleices of length *@p num_devices, this function will - * write up to @p num_devices device indices to the memory pointed to by - * @p processor_handleices. If @p processor_handleices is not NULL, @p num_devices will be - * updated with the number of gpu's currently being used by process @p pid. - * If @p processor_handleices is NULL, @p processor_handleices will be updated with the number of - * gpus currently being used by @p pid. Calling this function with @p - * dv_indices being NULL is a way to determine how much memory is required - * for when @p processor_handleices is not NULL. - * - * @param[in] pid The process id of the process for which the number of gpus - * currently being used is requested - * - * @param[in,out] dv_indices a pointer to memory provided by the caller to - * which indices of devices currently being used by the process will be - * written. This may be NULL in which case only @p num_devices will be - * updated with the number of devices being used. - * - * @param[in,out] num_devices A pointer to a uint32_t, which on input, should - * contain the amount of memory in uint32_t's which have been provided by the - * @p processor_handleices argument. On output, if @p processor_handleices is non-NULL, this will - * be updated with the number uint32_t's actually written. If @p processor_handleices is - * NULL, this argument will be updated with the number devices being used. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_compute_process_gpus(uint32_t pid, uint32_t *dv_indices, uint32_t *num_devices); - -/** @} End tagSystemInfo */ - -/*****************************************************************************/ -/** @defgroup tagXGMI XGMI Functions - * These functions are used to configure, query and control XGMI. - * @{ - */ - -/** - * @brief Retrieve the XGMI error status for a device. It is not supported on - * virtual machine guest - * - * @ingroup tagXGMI - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, and a pointer to an - * ::amdsmi_xgmi_status_t @p status, this function will write the current XGMI - * error state ::amdsmi_xgmi_status_t for the device @p processor_handle to the memory - * pointed to by @p status. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] status A pointer to an ::amdsmi_xgmi_status_t to which the - * XGMI error state should be written - * If this parameter is nullptr, this function will return - * ::AMDSMI_STATUS_INVAL if the function is supported with the provided, - * arguments and ::AMDSMI_STATUS_NOT_SUPPORTED if it is not supported with the - * provided arguments. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_gpu_xgmi_error_status(amdsmi_processor_handle processor_handle, amdsmi_xgmi_status_t *status); - -/** - * @brief Reset the XGMI error status for a device. It is not supported on virtual - * machine guest - * - * @ingroup tagXGMI - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, this function will reset the - * current XGMI error state ::amdsmi_xgmi_status_t for the device @p processor_handle to - * amdsmi_xgmi_status_t::AMDSMI_XGMI_STATUS_NO_ERRORS - * - * @param[in] processor_handle a processor handle - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_reset_gpu_xgmi_error(amdsmi_processor_handle processor_handle); - -/** - * @brief Returns XGMI information for the GPU. - * - * @ingroup tagXGMI - * - * @platform{gpu_bm_linux} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to xgmi information structure. Must be - * allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_xgmi_info(amdsmi_processor_handle processor_handle, amdsmi_xgmi_info_t *info); - -/** - * @brief Get the XGMI link status - * - * @ingroup tagXGMI - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details Given a processor handle @p processor_handle, this function - * will return the link status for each XGMI link connect to this processor. - * If the processor link type is not XGMI, it should return AMDSMI_STATUS_NOT_SUPPORTED. - * - * @param[in] processor_handle a processor handle - * - * @param[out] link_status The link status of the XGMI connect to this processor. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_xgmi_link_status(amdsmi_processor_handle processor_handle, - amdsmi_xgmi_link_status_t* link_status); - -/** @} End tagXGMI */ - -/*****************************************************************************/ -/** @defgroup tagHWTopology Hardware Topology Functions - * These functions are used to query Hardware topology. - * @{ - */ - -/** - * @brief Return link metric information - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[out] link_metrics reference to the link metrics struct. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_link_metrics(amdsmi_processor_handle processor_handle, - amdsmi_link_metrics_t *link_metrics); - -/** - * @brief Retrieve the NUMA CPU node number for a device - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, and a pointer to an - * uint32_t @p numa_node, this function will write the - * node number of NUMA CPU for the device @p processor_handle to the memory - * pointed to by @p numa_node. - * - * @param[in] processor_handle a processor handle - * - * @param[in,out] numa_node A pointer to an uint32_t to which the - * numa node number should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_topo_get_numa_node_number(amdsmi_processor_handle processor_handle, uint32_t *numa_node); - -/** - * @brief Retrieve the weight for a connection between 2 GPUs - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} - * - * @details Given a source processor handle @p processor_handle_src and - * a destination processor handle @p processor_handle_dst, and a pointer to an - * uint64_t @p weight, this function will write the - * weight for the connection between the device @p processor_handle_src - * and @p processor_handle_dst to the memory pointed to by @p weight. - * - * @param[in] processor_handle_src the source processor handle - * - * @param[in] processor_handle_dst the destination processor handle - * - * @param[in,out] weight A pointer to an uint64_t to which the - * weight for the connection should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_topo_get_link_weight(amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, - uint64_t *weight); - -/** - * @brief Retreive minimal and maximal io link bandwidth between 2 GPUs - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} - * - * @details Given a source processor handle @p processor_handle_src and - * a destination processor handle @p processor_handle_dst, pointer to an - * uint64_t @p min_bandwidth, and a pointer to uint64_t @p max_bandiwidth, - * this function will write theoretical minimal and maximal bandwidth limits. - * API works if src and dst are connected via xgmi and have 1 hop distance. - * - * @param[in] processor_handle_src the source processor handle - * - * @param[in] processor_handle_dst the destination processor handle - * - * @param[in,out] min_bandwidth A pointer to an uint64_t to which the - * minimal bandwidth for the connection should be written. - * - * @param[in,out] max_bandwidth A pointer to an uint64_t to which the - * maximal bandwidth for the connection should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_minmax_bandwidth_between_processors(amdsmi_processor_handle processor_handle_src, - amdsmi_processor_handle processor_handle_dst, - uint64_t *min_bandwidth, - uint64_t *max_bandwidth); - -/** - * @brief Retrieve the hops and the connection type between 2 GPUs - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} - * - * @details Given a source processor handle @p processor_handle_src and - * a destination processor handle @p processor_handle_dst, and a pointer to an - * uint64_t @p hops and a pointer to an AMDSMI_IO_LINK_TYPE @p type, - * this function will write the number of hops and the connection type - * between the device @p processor_handle_src and @p processor_handle_dst to the memory - * pointed to by @p hops and @p type. - * - * @param[in] processor_handle_src the source processor handle - * - * @param[in] processor_handle_dst the destination processor handle - * - * @param[in,out] hops A pointer to an uint64_t to which the - * hops for the connection should be written. - * - * @param[in,out] type A pointer to an ::AMDSMI_IO_LINK_TYPE to which the - * type for the connection should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_topo_get_link_type(amdsmi_processor_handle processor_handle_src, - amdsmi_processor_handle processor_handle_dst, - uint64_t *hops, amdsmi_io_link_type_t *type); - -/** - * @brief Retrieve the set of GPUs that are nearest to a given device - * at a specific interconnectivity level. - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} @platform{host} - * - * @details Once called topology_nearest_info will get populated with a list of - * all nearest devices for a given link_type. The list has a count of - * the number of devices found and their respective handles/identifiers. - * - * @param[in] processor_handle The identifier of the given device. - * - * @param[in] link_type The amdsmi_link_type_t level to search for nearest GPUs. - * - * @param[in,out] topology_nearest_info - * .count; - * - When zero, set to the number of matching GPUs such that .device_list can be malloc'd. - * - When non-zero, .device_list will be filled with count number of processor_handle. - * .device_list An array of processor_handle for GPUs found at level. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail. - */ -amdsmi_status_t -amdsmi_get_link_topology_nearest(amdsmi_processor_handle processor_handle, - amdsmi_link_type_t link_type, - amdsmi_topology_nearest_t* topology_nearest_info); - -/** - * @brief Return P2P availability status between 2 GPUs - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} - * - * @details Given a source processor handle @p processor_handle_src and - * a destination processor handle @p processor_handle_dst, and a pointer to a - * bool @p accessible, this function will write the P2P connection status - * between the device @p processor_handle_src and @p processor_handle_dst to the memory - * pointed to by @p accessible. - * - * @param[in] processor_handle_src the source processor handle - * - * @param[in] processor_handle_dst the destination processor handle - * - * @param[in,out] accessible A pointer to a bool to which the status for - * the P2P connection availablity should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_is_P2P_accessible(amdsmi_processor_handle processor_handle_src, - amdsmi_processor_handle processor_handle_dst, - bool *accessible); - -/** - * @brief Retrieve connection type and P2P capabilities between 2 GPUs - * - * @ingroup tagHWTopology - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @details Given a source processor handle @p processor_handle_src and - * a destination processor handle @p processor_handle_dst, a pointer to an amdsmi_io_link_type_t @p type, - * and a pointer to amdsmi_p2p_capability_t @p cap. This function will write the connection type, - * and io link capabilities between the device - * @p processor_handle_src and @p processor_handle_dst to the memory - * pointed to by @p cap and @p type. - * - * @param[in] processor_handle_src the source processor handle - * - * @param[in] processor_handle_dst the destination processor handle - * - * @param[in,out] type A pointer to an ::amdsmi_io_link_type_t to which the - * type for the connection should be written. - * - * @param[in,out] cap A pointer to an ::amdsmi_p2p_capability_t to which the - * io link capabilities should be written. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_topo_get_p2p_status(amdsmi_processor_handle processor_handle_src, - amdsmi_processor_handle processor_handle_dst, - amdsmi_io_link_type_t *type, amdsmi_p2p_capability_t *cap); - -/** @} End tagHWTopology */ - -/*****************************************************************************/ -/** @defgroup tagComputePartition Compute Partition Functions - * These functions are used to configure and query the device's - * compute parition setting. - * @{ - */ - -/** - * @brief Retrieves the current compute partitioning for a desired device - * - * @ingroup tagComputePartition - * - * @platform{gpu_bm_linux} - * - * @details - * Given a processor handle @p processor_handle and a string @p compute_partition , - * and uint32 @p len , this function will attempt to obtain the device's - * current compute partition setting string. Upon successful retreival, - * the obtained device's compute partition settings string shall be stored in - * the passed @p compute_partition char string variable. - * - * @param[in] processor_handle Device which to query - * - * @param[inout] compute_partition a pointer to a char string variable, - * which the device's current compute partition will be written to. - * - * @param[in] len the length of the caller provided buffer @p compute_partition, - * suggested length is 4 or greater. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @retval ::AMDSMI_STATUS_UNEXPECTED_DATA data provided to function is not valid - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function - * @retval ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not - * large enough to hold the entire compute partition value. In this case, - * only @p len bytes will be written. - * @return ::amdsmi_status_t - */ -amdsmi_status_t -amdsmi_get_gpu_compute_partition(amdsmi_processor_handle processor_handle, - char *compute_partition, uint32_t len); - -/** - * @brief Modifies a selected device's compute partition setting. - * - * @ingroup tagComputePartition - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle, a type of compute partition - * @p compute_partition, this function will attempt to update the selected - * device's compute partition setting. This function does not allow any concurrent operations. - * Device must be idle and have no workloads when performing set partition operations. - * - * @param[in] processor_handle Device which to query - * - * @param[in] compute_partition using enum ::amdsmi_compute_partition_type_t, - * define what the selected device's compute partition setting should be - * updated to. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_PERMISSION function requires root access - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @retval ::AMDSMI_STATUS_SETTING_UNAVAILABLE the provided setting is - * unavailable for current device - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function - * @return ::amdsmi_status_t - */ -amdsmi_status_t -amdsmi_set_gpu_compute_partition(amdsmi_processor_handle processor_handle, - amdsmi_compute_partition_type_t compute_partition); - -/** @} End tagComputePartition */ - -/*****************************************************************************/ -/** @defgroup tagMemoryPartition Memory Partition Functions - * These functions are used to query and set the device's current memory - * partition. - * @{ - */ - -/** - * @brief Retrieves the current memory partition for a desired device - * - * @ingroup tagMemoryPartition - * - * @platform{gpu_bm_linux} - * - * @details - * Given a processor handle @p processor_handle and a string @p memory_partition , - * and uint32 @p len , this function will attempt to obtain the device's - * memory partition string. Upon successful retreival, the obtained device's - * memory partition string shall be stored in the passed @p memory_partition - * char string variable. - * - * @param[in] processor_handle Device which to query - * - * @param[inout] memory_partition a pointer to a char string variable, - * which the device's memory partition will be written to. - * - * @param[in] len the length of the caller provided buffer @p memory_partition , - * suggested length is 5 or greater. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @retval ::AMDSMI_STATUS_UNEXPECTED_DATA data provided to function is not valid - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function - * @retval ::AMDSMI_STATUS_INSUFFICIENT_SIZE is returned if @p len bytes is not - * large enough to hold the entire memory partition value. In this case, - * only @p len bytes will be written. - * @return ::amdsmi_status_t - */ -amdsmi_status_t -amdsmi_get_gpu_memory_partition(amdsmi_processor_handle processor_handle, char *memory_partition, uint32_t len); - -/** - * @brief Modifies a selected device's current memory partition setting. - * - * @ingroup tagMemoryPartition - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a type of memory partition - * @p memory_partition, this function will attempt to update the selected - * device's memory partition setting. This function does not allow any concurrent operations. - * Device must be idle and have no workloads when performing set partition operations. - * - * @param[in] processor_handle Device which to query - * - * @param[in] memory_partition using enum ::amdsmi_memory_partition_type_t, - * define what the selected device's current mode setting should be updated to. - * - * @retval ::AMDSMI_STATUS_SUCCESS call was successful - * @retval ::AMDSMI_STATUS_PERMISSION function requires root access - * @retval ::AMDSMI_STATUS_INVAL the provided arguments are not valid - * @retval ::AMDSMI_STATUS_NOT_SUPPORTED installed software or hardware does not - * support this function - * @retval ::AMDSMI_STATUS_AMDGPU_RESTART_ERR could not successfully restart - * the amdgpu driver - * @return ::amdsmi_status_t - * - */ -amdsmi_status_t -amdsmi_set_gpu_memory_partition(amdsmi_processor_handle processor_handle, - amdsmi_memory_partition_type_t memory_partition); -/** - * @brief Version 2.0: Returns current gpu memory partition capabilities - * - * @ingroup tagMemoryPartition - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle a processor handle - * - * @param[out] config reference to the memory partition config. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_memory_partition_config(amdsmi_processor_handle processor_handle, - amdsmi_memory_partition_config_t *config); - -/** - * @brief Version 2.0: Set accelerator partition setting based on profile_index - * from amdsmi_get_gpu_accelerator_partition_profile_config - * - * @ingroup tagMemoryPartition - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle A processor handle - * - * @param[in] mode Enum representing memory partitioning mode to set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_memory_partition_mode(amdsmi_processor_handle processor_handle, - amdsmi_memory_partition_type_t mode); - -/** @} End tagMemoryPartition */ - -/*****************************************************************************/ -/** @defgroup tagAcceleratorPartition Accelerator Partition Profile Functions - * These functions are used to configure and query the device's - * accelerator parition profile setting. - * @{ - */ - -/** - * @brief Version 2.0: Returns gpu accelerator partition caps as currently configured in the system - * User must use admin/sudo privledges to run this API, or API will not be able to - * read resources. - * - * @ingroup tagAcceleratorPartition - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle Device which to query - * - * @param[out] profile_config reference to the accelerator partition config. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_accelerator_partition_profile_config(amdsmi_processor_handle processor_handle, - amdsmi_accelerator_partition_profile_config_t *profile_config); - -/** - * @brief Version 2.0: Returns current gpu accelerator partition capabilities - * - * @ingroup tagAcceleratorPartition - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle Device which to query - * - * @param[out] profile reference to the accelerator partition profile. - * Must be allocated by user. - * - * @param[in,out] partition_id array of ids for current accelerator profile. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_accelerator_partition_profile(amdsmi_processor_handle processor_handle, - amdsmi_accelerator_partition_profile_t *profile, - uint32_t *partition_id); - -/** - * @brief Version 2.0: Set accelerator partition setting based on profile_index - * from amdsmi_get_gpu_accelerator_partition_profile_config - * - * @ingroup tagAcceleratorPartition - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle Device which to query - * - * @param[in] profile_index Represents index of a partition user wants to set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_accelerator_partition_profile(amdsmi_processor_handle processor_handle, - uint32_t profile_index); - -/** @} End tagAcceleratorPartition */ - -/*****************************************************************************/ -/** @defgroup tagEventNotification Event Notification Functions - * These functions are used to configure for and get asynchronous event - * notifications. - * @{ - */ - -/** - * @brief Prepare to collect event notifications for a GPU - * - * @ingroup tagEventNotification - * - * @platform{gpu_bm_linux} - * - * @details This function prepares to collect events for the GPU with device - * ID @p processor_handle, by initializing any required system parameters. This call - * may open files which will remain open until ::amdsmi_stop_gpu_event_notification() - * is called. - * - * @param[in] processor_handle a processor handle corresponding to the device on which to - * listen for events - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_init_gpu_event_notification(amdsmi_processor_handle processor_handle); - -/** - * @brief Specify which events to collect for a device - * - * @ingroup tagEventNotification - * - * @platform{gpu_bm_linux} - * - * @details Given a processor handle @p processor_handle and a @p mask consisting of - * elements of ::amdsmi_evt_notification_type_t OR'd together, this function - * will listen for the events specified in @p mask on the device - * corresponding to @p processor_handle. - * - * @param[in] processor_handle a processor handle corresponding to the device on which to - * listen for events - * - * @param[in] mask Bitmask generated by OR'ing 1 or more elements of - * ::amdsmi_evt_notification_type_t indicating which event types to listen for, - * where the amdsmi_evt_notification_type_t value indicates the bit field, with - * bit position starting from 1. - * For example, if the mask field is 0x0000000000000003, which means first bit, - * bit 1 (bit position start from 1) and bit 2 are set, which indicate interest - * in receiving AMDSMI_EVT_NOTIF_VMFAULT (which has a value of 1) and - * AMDSMI_EVT_NOTIF_THERMAL_THROTTLE event (which has a value of 2). - * - * @note ::AMDSMI_STATUS_INIT_ERROR is returned if - * ::amdsmi_init_gpu_event_notification() has not been called before a call to this - * function - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_set_gpu_event_notification_mask(amdsmi_processor_handle processor_handle, uint64_t mask); - -/** - * @brief Collect event notifications, waiting a specified amount of time - * - * @ingroup tagEventNotification - * - * @platform{gpu_bm_linux} - * - * @details Given a time period @p timeout_ms in milliseconds and a caller- - * provided buffer of ::amdsmi_evt_notification_data_t's @p data with a length - * (in ::amdsmi_evt_notification_data_t's, also specified by the caller) in the - * memory location pointed to by @p num_elem, this function will collect - * ::amdsmi_evt_notification_type_t events for up to @p timeout_ms milliseconds, - * and write up to *@p num_elem event items to @p data. Upon return @p num_elem - * is updated with the number of events that were actually written. If events - * are already present when this function is called, it will write the events - * to the buffer then poll for new events if there is still caller-provided - * buffer available to write any new events that would be found. - * - * This function requires prior calls to ::amdsmi_init_gpu_event_notification() and - * :: amdsmi_set_gpu_event_notification_mask(). This function polls for the - * occurrance of the events on the respective devices that were previously - * specified by :: amdsmi_set_gpu_event_notification_mask(). - * - * @param[in] timeout_ms number of milliseconds to wait for an event - * to occur - * - * @param[in,out] num_elem pointer to uint32_t, provided by the caller. On - * input, this value tells how many ::amdsmi_evt_notification_data_t elements - * are being provided by the caller with @p data. On output, the location - * pointed to by @p num_elem will contain the number of items written to - * the provided buffer. - * - * @param[out] data pointer to a caller-provided memory buffer of size - * @p num_elem ::amdsmi_evt_notification_data_t to which this function may safely - * write. If there are events found, up to @p num_elem event items will be - * written to @p data. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_event_notification(int timeout_ms, uint32_t *num_elem, amdsmi_evt_notification_data_t *data); - -/** - * @brief Close any file handles and free any resources used by event - * notification for a GPU - * - * @ingroup tagEventNotification - * - * @platform{gpu_bm_linux} - * - * @details Any resources used by event notification for the GPU with - * processor handle @p processor_handle will be free with this - * function. This includes freeing any memory and closing file handles. This - * should be called for every call to ::amdsmi_init_gpu_event_notification() - * - * @param[in] processor_handle The processor handle of the GPU for which event - * notification resources will be free - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_stop_gpu_event_notification(amdsmi_processor_handle processor_handle); - -/** @} End tagEventNotification */ - -/*****************************************************************************/ -/** @defgroup tagSoftwareVersion Software Version Information - * @{ - */ - -/** - * @brief Returns the driver version information - * - * @ingroup tagSoftwareVersion - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to driver information structure. Must be - * allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_driver_info(amdsmi_processor_handle processor_handle, amdsmi_driver_info_t *info); - -/** @} End tagSoftwareVersion */ - -/*****************************************************************************/ -/** @defgroup tagAsicBoardInfo ASIC & Board Static Information - * @{ - */ - -/** - * @brief Returns the ASIC information for the device - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @details This function returns ASIC information such as the product name, - * the vendor ID, the subvendor ID, the device ID, - * the revision ID and the serial number. - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to static asic information structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_asic_info(amdsmi_processor_handle processor_handle, amdsmi_asic_info_t *info); - - -/** - * @brief Returns the KFD (Kernel Fusion Driver) information for the device - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} - * - * @details This function returns KFD information populated into the amdsmi_kfd_info_t. - * This contains the kfd_id and node_id which allow for the ID and - * index of this device in the KFD. - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to kfd information structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_kfd_info(amdsmi_processor_handle processor_handle, amdsmi_kfd_info_t *info); - -/** - * @brief Returns vram info - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[out] info Reference to vram info structure - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_gpu_vram_info(amdsmi_processor_handle processor_handle, amdsmi_vram_info_t *info); - -/** - * @brief Returns the board part number and board information for the requested device - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to board info structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_board_info(amdsmi_processor_handle processor_handle, amdsmi_board_info_t *info); - -/** - * @brief Returns the power caps as currently configured in the system. - * Power in units of uW. It is not supported on virtual machine guest - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle Device which to query - * - * @param[in] sensor_ind A 0-based sensor index. Normally, this will be 0. - * If a device has more than one sensor, it could be greater than 0. - * @param[out] info Reference to power caps information structure. Must be - * allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_power_cap_info(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, - amdsmi_power_cap_info_t *info); - -/** - * @brief Returns the PCIe info for the GPU. - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to the PCIe information - * returned by the library. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_pcie_info(amdsmi_processor_handle processor_handle, amdsmi_pcie_info_t *info); - -/** - * @brief Returns the 'xcd_counter' from the GPU metrics associated with the device - * - * @ingroup tagAsicBoardInfo - * - * @platform{gpu_bm_linux} @platform{guest_1vf} @platform{guest_mvf} - * - * @param[in] processor_handle Device which to query - * - * @param[inout] xcd_count a pointer to uint16_t to which the device gpu - * metric unit will be stored. Must be allocated by user. - * - * @retval ::AMDSMI_STATUS_SUCCESS is returned upon successful call. - * ::AMDSMI_STATUS_NOT_SUPPORTED is returned in case the metric unit - * does not exist for the given device. - */ -amdsmi_status_t amdsmi_get_gpu_xcd_counter(amdsmi_processor_handle processor_handle, - uint16_t *xcd_count); - -/** @} End tagAsicBoardInfo */ - -/*****************************************************************************/ -/** @defgroup tagFWVbiosQuery Firmware & VBIOS queries - * @{ - */ - -/** - * @brief Returns the firmware versions running on the device. - * - * @ingroup tagFWVbiosQuery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to the fw info. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_fw_info(amdsmi_processor_handle processor_handle, amdsmi_fw_info_t *info); - -/** - * @brief Returns the static information for the vBIOS on the device. - * - * @ingroup tagFWVbiosQuery - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_1vf} @platform{guest_mvf} - * @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to static vBIOS information. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_vbios_info(amdsmi_processor_handle processor_handle, amdsmi_vbios_info_t *info); - -/** @} End tagFWVbiosQuery */ - -/*****************************************************************************/ -/** @defgroup tagGPUMonitor GPU Monitoring - * @{ - */ - -/** - * @brief Returns the current usage of the GPU engines (GFX, MM and MEM). - * Each usage is reported as a percentage from 0-100%. It is not - * supported on virtual machine guest - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to the gpu engine usage structure. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_activity(amdsmi_processor_handle processor_handle, amdsmi_engine_usage_t *info); - -/** - * @brief Returns the current power and voltage of the GPU. - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @note amdsmi_power_info_t::socket_power metric can rarely spike above the socket power limit in some cases - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[in] sensor_ind a 0-based sensor index. Normally, this will be 0. - * If a processor has more than one sensor, it could be greater than 0. - * Parameter @p sensor_ind is unused on @platform{host}. - * - * @param[out] info Reference to the gpu power structure. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_power_info_v2(amdsmi_processor_handle processor_handle, uint32_t sensor_ind, amdsmi_power_info_t *info); - -/** - * @brief Returns the current power and voltage of the GPU. - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @note amdsmi_power_info_t::socket_power metric can rarely spike above the socket power limit in some cases - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[out] info Reference to the gpu power structure. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_power_info(amdsmi_processor_handle processor_handle, amdsmi_power_info_t *info); - -/** - * @brief Returns is power management enabled - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle PF of a processor for which to query - * - * @param[out] enabled Reference to bool. Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_is_gpu_power_management_enabled(amdsmi_processor_handle processor_handle, bool *enabled); - -/** - * @brief Returns the measurements of the clocks in the GPU - * for the GFX and multimedia engines and Memory. This call - * reports the averages over 1s in MHz. It is not supported - * on virtual machine guest - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} @platform{guest_windows} - * - * @param[in] processor_handle Device which to query - * - * @param[in] clk_type Enum representing the clock type to query. - * - * @param[out] info Reference to the gpu clock structure. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_clock_info(amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, amdsmi_clk_info_t *info); - -/** - * @brief Returns the VRAM usage (both total and used memory) - * in MegaBytes. - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to vram information. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_gpu_vram_usage(amdsmi_processor_handle processor_handle, amdsmi_vram_usage_t *info); - -/** - * @brief Returns the violations for a processor - * - * Warning: API will be slow due to polling driver for 2 samples. Require - * a minimum wait of 100ms between the 2 samples in order to calculate. Otherwise - * users would need to use amdsmi_get_gpu_metrics_info for BM. See that API's struct - * for calculations. - * - * @ingroup tagGPUMonitor - * - * @platform{gpu_bm_linux} @platform{host} - * - * @param[in] processor_handle Device which to query - * - * @param[out] info Reference to all violation status details available. - * Must be allocated by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t -amdsmi_get_violation_status(amdsmi_processor_handle processor_handle, - amdsmi_violation_status_t *info); - -/** @} End tagGPUMonitor */ - -/*****************************************************************************/ -/** @defgroup tagProcessInfo Process information - * @{ - */ - -/** - * @brief Returns the list of process information running on a given GPU. - * If pdh.dll is not present on the system, this API returns - * AMDSMI_STATUS_NOT_SUPPORTED. - * - * @ingroup tagProcessInfo - * - * @platform{gpu_bm_linux} @platform{guest_windows} - * - * @warning IMPORTANT: To get valid return values, at least 1 second needs to pass - * from starting the program to the first call of this function, - * and before every following call of this function after that, to get correct values - * - * @note The user provides a buffer to store the list and the maximum - * number of processes that can be returned. If the user sets - * max_processes to 0, the current total number of processes will - * replace max_processes param. After that, the function needs to be - * called again, with updated max_processes, to successfully fill the - * process list, which was previously allocated with max_processes - * - * @note If the reserved size for processes is smaller than the number of - * actual processes running. The AMDSMI_STATUS_OUT_OF_RESOURCES is - * an indication the caller should handle the situation (resize). - * The max_processes is always changed to reflect the actual size of - * list of processes running, so the caller knows where it is at. - * - * @param[in] processor_handle Device which to query - * - * @param[in,out] max_processes Reference to the size of the list buffer in - * number of elements. Returns the return number of elements - * in list or the number of running processes if equal to 0, - * and if given value in param max_processes is less than - * number of processes currently running, - * AMDSMI_STATUS_OUT_OF_RESOURCES will be returned. - * - * For cases where max_process is not zero (0), it specifies the list's size limit. - * That is, the maximum size this list will be able to hold. After the list is built - * internally, as a return status, we will have AMDSMI_STATUS_OUT_OF_RESOURCES when - * the original size limit is smaller than the actual list of processes running. - * Hence, the caller is aware the list size needs to be resized, or - * AMDSMI_STATUS_SUCCESS otherwise. - * Holding a copy of max_process before it is passed in will be helpful for monitoring - * the allocations done upon each call since the max_process will permanently be changed - * to reflect the actual number of processes running. - * - * @param[out] list Reference to a user-provided buffer where the process - * list will be returned. This buffer must contain at least - * max_processes entries of type amd_proc_info_list_t. Must be allocated - * by user. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, - * | ::AMDSMI_STATUS_OUT_OF_RESOURCES, filled list buffer with data, but number of - * actual running processes is larger than the size provided. - */ -amdsmi_status_t -amdsmi_get_gpu_process_list(amdsmi_processor_handle processor_handle, uint32_t *max_processes, amdsmi_proc_info_t *list); - -/** @} End tagProcessInfo */ - -#ifdef ENABLE_ESMI_LIB - -/*****************************************************************************/ -/** @defgroup tagEnergyInfo Energy information (RAPL MSR) - * @{ - */ - -/** - * @brief Get the core energy for a given core. - * - * @ingroup tagEnergyInfo - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu core which to query - * - * @param[in,out] penergy - Input buffer to return the core energy - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_core_energy(amdsmi_processor_handle processor_handle, - uint64_t *penergy); - -/** - * @brief Get the socket energy for a given socket. - * - * @ingroup tagEnergyInfo - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] penergy - Input buffer to return the socket energy - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_energy(amdsmi_processor_handle processor_handle, - uint64_t *penergy); - -/** @} End tagEnergyInfo */ - -/*****************************************************************************/ -/** @defgroup tagHSMPSystemStats HSMP system statistics - * @{ - */ - -/** - * @brief Get Number of threads Per Core. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in,out] threads_per_core - Input buffer to return the Number of threads Per Core - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_threads_per_core(uint32_t *threads_per_core); - -/** - * @brief Get HSMP Driver Version. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * @param[in,out] amdsmi_hsmp_driver_ver - Input buffer to return the HSMP Driver version - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_hsmp_driver_version(amdsmi_processor_handle processor_handle, - amdsmi_hsmp_driver_version_t *amdsmi_hsmp_driver_ver); - -/** - * @brief Get SMU Firmware Version. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * @param[in,out] amdsmi_smu_fw - Input buffer to return the firmware version - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_smu_fw_version(amdsmi_processor_handle processor_handle, - amdsmi_smu_fw_version_t *amdsmi_smu_fw); - -/** - * @brief Get HSMP protocol Version. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * @param[in,out] proto_ver - Input buffer to return the protocol version - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_hsmp_proto_ver(amdsmi_processor_handle processor_handle, - uint32_t *proto_ver); - -/** - * @brief Get normalized status of the processor's PROCHOT status. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] prochot - Input buffer to return the procohot status. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_prochot_status(amdsmi_processor_handle processor_handle, - uint32_t *prochot); - -/** - * @brief Get Data fabric clock and Memory clock in MHz. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] fclk - Input buffer to return fclk - * - * @param[in,out] mclk - Input buffer to return mclk - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_fclk_mclk(amdsmi_processor_handle processor_handle, - uint32_t *fclk, uint32_t *mclk); - -/** - * @brief Get core clock in MHz. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] cclk - Input buffer to return core clock - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_cclk_limit(amdsmi_processor_handle processor_handle, - uint32_t *cclk); - -/** - * @brief Get current active frequency limit of the socket. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] freq - Input buffer to return frequency value in MHz - * - * @param[in,out] src_type - Input buffer to return frequency source name - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_current_active_freq_limit(amdsmi_processor_handle processor_handle, - uint16_t *freq, char **src_type); - -/** - * @brief Get socket frequency range. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] fmax - Input buffer to return maximum frequency - * - * @param[in,out] fmin - Input buffer to return minimum frequency - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_freq_range(amdsmi_processor_handle processor_handle, - uint16_t *fmax, uint16_t *fmin); - -/** - * @brief Get socket frequency limit of the core. - * - * @ingroup tagHSMPSystemStats - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu core which to query - * - * @param[in,out] freq - Input buffer to return frequency. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_core_current_freq_limit(amdsmi_processor_handle processor_handle, - uint32_t *freq); - -/** @} tagHSMPSystemStats */ - -/*****************************************************************************/ -/** @defgroup tagPerfBoostControl Performance (Boost limit) Control - * @{ - */ - -/** - * @brief Get the core boost limit. - * - * @ingroup tagPerfBoostControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu core which to query - * - * @param[in,out] pboostlimit - Input buffer to fill the boostlimit value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_core_boostlimit(amdsmi_processor_handle processor_handle, - uint32_t *pboostlimit); - -/** - * @brief Get the socket c0 residency. - * - * @ingroup tagPerfBoostControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] pc0_residency - Input buffer to fill the c0 residency value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_c0_residency(amdsmi_processor_handle processor_handle, - uint32_t *pc0_residency); - -/** - * @brief Set the core boostlimit value. - * - * @ingroup tagPerfBoostControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu core which to query - * - * @param[in] boostlimit - boostlimit value to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_core_boostlimit(amdsmi_processor_handle processor_handle, - uint32_t boostlimit); - -/** - * @brief Set the socket boostlimit value. - * - * @ingroup tagPerfBoostControl - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] boostlimit - boostlimit value to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_socket_boostlimit(amdsmi_processor_handle processor_handle, - uint32_t boostlimit); - -/** @} tagPerfBoostControl */ - -/*****************************************************************************/ -/** @defgroup tagDDRBandwidthMonitor DDR bandwidth monitor - * @{ - */ - -/** - * @brief Get the DDR bandwidth data. - * - * @ingroup tagDDRBandwidthMonitor - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] ddr_bw - Input buffer to fill ddr bandwidth data - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_ddr_bw(amdsmi_processor_handle processor_handle, - amdsmi_ddr_bw_metrics_t *ddr_bw); - -/** @} tagDDRBandwidthMonitor */ - -/*****************************************************************************/ -/** @defgroup tagTempQuery Temperature Query - * @{ - */ - -/** - * @brief Get socket temperature. - * - * @ingroup tagTempQuery - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] ptmon - Input buffer to fill temperature value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_temperature(amdsmi_processor_handle processor_handle, - uint32_t *ptmon); - -/** @} End tagTempQuery*/ - -/*****************************************************************************/ -/** @defgroup tagDimmStatistics Dimm statistics - * @{ - */ - -/** - * @brief Get DIMM temperature range and refresh rate. - * - * @ingroup tagDimmStatistics - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] dimm_addr - DIMM address - * - * @param[in,out] rate - Input buffer to fill temperature range and refresh rate value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_dimm_temp_range_and_refresh_rate(amdsmi_processor_handle processor_handle, - uint8_t dimm_addr, - amdsmi_temp_range_refresh_rate_t *rate); - -/** - * @brief Get DIMM power consumption. - * - * @ingroup tagDimmStatistics - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * @param[in] dimm_addr - DIMM address - * @param[in,out] dimm_pow - Input buffer to fill power consumption value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_dimm_power_consumption(amdsmi_processor_handle processor_handle, - uint8_t dimm_addr, - amdsmi_dimm_power_t *dimm_pow); - -/** - * @brief Get DIMM thermal sensor value. - * - * @ingroup tagDimmStatistics - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] dimm_addr - DIMM address - * - * @param[in,out] dimm_temp - Input buffer to fill temperature value - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_dimm_thermal_sensor(amdsmi_processor_handle processor_handle, - uint8_t dimm_addr, - amdsmi_dimm_thermal_t *dimm_temp); - -/** @} tagDimmStatistics */ - -/*****************************************************************************/ -/** @defgroup tagXGMIBandwidthCont xGMI bandwidth control - * @{ - */ - -/** - * @brief Set xgmi width. - * - * @ingroup tagXGMIBandwidthCont - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] min - Minimum xgmi width to be set - * - * @param[in] max - maximum xgmi width to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_xgmi_width(amdsmi_processor_handle processor_handle, - uint8_t min, uint8_t max); - -/** @} tagXGMIBandwidthCont*/ - -/*****************************************************************************/ -/** @defgroup tagGMI3WidthCont GMI3 width control - * @{ - */ - -/** - * @brief Set gmi3 link width range. - * - * @ingroup tagGMI3WidthCont - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] min_link_width - minimum link width to be set. - * - * @param[in] max_link_width - maximum link width to be set. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_gmi3_link_width_range(amdsmi_processor_handle processor_handle, - uint8_t min_link_width, uint8_t max_link_width); - -/** @} tagGMI3WidthCont */ - -/*****************************************************************************/ -/** @defgroup tagPstateSelect Pstate selection - * @{ - */ - -/** - * @brief Enable APB. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_cpu_apb_enable(amdsmi_processor_handle processor_handle); - -/** - * @brief Disable APB. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] pstate - pstate value to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_cpu_apb_disable(amdsmi_processor_handle processor_handle, uint8_t pstate); - -/** - * @brief Set NBIO lclk dpm level value. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] nbio_id - nbio index - * - * @param[in] min - minimum value to be set - * - * @param[in] max - maximum value to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_socket_lclk_dpm_level(amdsmi_processor_handle processor_handle, - uint8_t nbio_id, uint8_t min, uint8_t max); - -/** - * @brief Get NBIO LCLK dpm level. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] nbio_id - nbio index - * - * @param[in,out] nbio - Input buffer to fill lclk dpm level - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_socket_lclk_dpm_level(amdsmi_processor_handle processor_handle, - uint8_t nbio_id, amdsmi_dpm_level_t *nbio); - -/** - * @brief Set pcie link rate. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] rate_ctrl - rate control value to be set. - * - * @param[in,out] prev_mode - Input buffer to fill previous rate control value. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_pcie_link_rate(amdsmi_processor_handle processor_handle, - uint8_t rate_ctrl, uint8_t *prev_mode); - -/** - * @brief Set df pstate range. - * - * @ingroup tagPstateSelect - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] max_pstate - maximum pstate value to be set - * - * @param[in] min_pstate - minimum pstate value to be set - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_set_cpu_df_pstate_range(amdsmi_processor_handle processor_handle, - uint8_t max_pstate, uint8_t min_pstate); - -/** @} tagPstateSelect */ - -/*****************************************************************************/ -/** @defgroup tagBandwidthMon Bandwidth monitor - * @{ - */ - -/** - * @brief Get current input output bandwidth. - * - * @ingroup tagBandwidthMon - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] link - link id and bw type to which io bandwidth to be obtained - * - * @param[in,out] io_bw - Input buffer to fill bandwidth data - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_current_io_bandwidth(amdsmi_processor_handle processor_handle, - amdsmi_link_id_bw_type_t link, uint32_t *io_bw); - -/** - * @brief Get current input output bandwidth. - * - * @ingroup tagBandwidthMon - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in] link - link id and bw type to which xgmi bandwidth to be obtained - * - * @param[in,out] xgmi_bw - Input buffer to fill bandwidth data - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_current_xgmi_bw(amdsmi_processor_handle processor_handle, - amdsmi_link_id_bw_type_t link, uint32_t *xgmi_bw); - -/*****************************************************************************/ -/** @defgroup tagHSMPMetricsTable HSMP Metrics Table - * @{ - */ - -/** - * @brief Get HSMP metrics table version - * - * @ingroup tagHSMPMetricsTable - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] metrics_version input buffer to return the HSMP metrics table version. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_hsmp_metrics_table_version(amdsmi_processor_handle processor_handle, - uint32_t *metrics_version); - -/** - * @brief Get HSMP metrics table - * - * @ingroup tagHSMPMetricsTable - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] metrics_table input buffer to return the HSMP metrics table. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_hsmp_metrics_table(amdsmi_processor_handle processor_handle, - amdsmi_hsmp_metrics_table_t *metrics_table); - -/** @} tagHSMPMetricsTable */ - -/*****************************************************************************/ -/** @defgroup tagAuxillary Auxillary functions - * @{ - */ - -/** - * @brief Get first online core on socket. - * - * @ingroup tagAuxillary - * - * @platform{cpu_bm} - * - * @param[in] processor_handle Cpu socket which to query - * - * @param[in,out] pcore_ind - Input buffer to fill first online core on socket data - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_processor_handle processor_handle, - uint32_t *pcore_ind); - -/** - * @brief Get CPU family. - * - * @ingroup tagAuxillary - * - * @platform{cpu_bm} - * - * @param[in,out] cpu_family - Input buffer to return the cpu family - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_family(uint32_t *cpu_family); - -/** - * @brief Get CPU model. - * - * @ingroup tagAuxillary - * - * @platform{cpu_bm} - * - * @param[in,out] cpu_model - Input buffer to return the cpu model - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_model(uint32_t *cpu_model); - -/** - * @brief Get a description of provided AMDSMI error status for esmi errors. - * - * @ingroup tagAuxillary - * - * @platform{cpu_bm} - * - * @details Set the provided pointer to a const char *, @p status_string, to - * a string containing a description of the provided error code @p status. - * - * @param[in] status - The error status for which a description is desired. - * - * @param[in,out] status_string - A pointer to a const char * which will be made - * to point to a description of the provided error code - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_esmi_err_msg(amdsmi_status_t status, const char **status_string); - -#endif - -/** @} tagAuxillary */ - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // __AMDSMI_H__ diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 30e980236..a0a614004 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -1,3 +1,10 @@ +/** + * @file amds.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #include "amds.h" #define AMDS_PRIV_IMPL #include "amds_priv.h" diff --git a/src/components/amd_smi/amds.h b/src/components/amd_smi/amds.h index 86ec5fc27..5f5bef584 100644 --- a/src/components/amd_smi/amds.h +++ b/src/components/amd_smi/amds.h @@ -1,3 +1,10 @@ +/** + * @file amds.h + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #ifndef __AMDS_H__ #define __AMDS_H__ diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 1d03adca9..629ffa52f 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1,3 +1,10 @@ +/** + * @file amds_accessors.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #include "amds_priv.h" #include "papi.h" #include "papi_memory.h" diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index 50f2254a6..f388665d1 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -1,3 +1,10 @@ +/** + * @file amds_ctx.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #include "amds.h" #include "amds_priv.h" #include "papi.h" diff --git a/src/components/amd_smi/amds_evtapi.c b/src/components/amd_smi/amds_evtapi.c index 973ced09f..28d63be88 100644 --- a/src/components/amd_smi/amds_evtapi.c +++ b/src/components/amd_smi/amds_evtapi.c @@ -1,3 +1,10 @@ +/** + * @file amds_evtapi.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #include "amds.h" #include "amds_priv.h" #include "htable.h" diff --git a/src/components/amd_smi/amds_funcs.h b/src/components/amd_smi/amds_funcs.h index 5297f7631..de7a480ff 100644 --- a/src/components/amd_smi/amds_funcs.h +++ b/src/components/amd_smi/amds_funcs.h @@ -1,3 +1,10 @@ +/** + * @file amds_funcs.h + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #ifndef AMDS_FUNCS_H #define AMDS_FUNCS_H diff --git a/src/components/amd_smi/amds_priv.h b/src/components/amd_smi/amds_priv.h index 20671fb04..2d62c5322 100644 --- a/src/components/amd_smi/amds_priv.h +++ b/src/components/amd_smi/amds_priv.h @@ -1,3 +1,10 @@ +/** + * @file amds_priv.h + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #ifndef __AMDS_PRIV_H__ #define __AMDS_PRIV_H__ diff --git a/src/components/amd_smi/htable.h b/src/components/amd_smi/htable.h index 1b2e85777..1d82f4906 100644 --- a/src/components/amd_smi/htable.h +++ b/src/components/amd_smi/htable.h @@ -1,3 +1,12 @@ +/** + * @file htable.c + * @author Giuseppe Congiu + * gcongiu@icl.utk.edu + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #ifndef __HTABLE_H__ #define __HTABLE_H__ diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 9a777b102..36cdd11f7 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -1,9 +1,9 @@ -//----------------------------------------------------------------------------- -// @file linux-amd-smi.c -// @ingroup amd_smi_components -// -// @brief PAPI component for AMD GPU management via the AMD SMI library. -//----------------------------------------------------------------------------- +/** + * @file linux-amd-smi.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ #include #include From 6742bed2137e9920857cdf10bc46d5f8f21e67d1 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 21:55:11 -0700 Subject: [PATCH 130/147] readme --- src/components/amd_smi/README.md | 94 ++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/components/amd_smi/README.md diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md new file mode 100644 index 000000000..ede8831fb --- /dev/null +++ b/src/components/amd_smi/README.md @@ -0,0 +1,94 @@ +# AMD_SMI Component + +The **AMD_SMI** (AMD System Management Interface) component exposes hardware +management counters (and selected controls) for AMD GPUs — e.g., power usage, +temperatures, clocks, PCIe link metrics, VRAM information, and RAS/ECC status — +by querying the AMD SMI library at runtime (ROCm ≥ 6.0.0). + +- [Environment Variables](#environment-variables) +- [Enabling the AMD_SMI Component](#enabling-the-amd_smi-component) + +--- + +## Environment Variables + +For AMD_SMI, PAPI requires the environment variable `PAPI_AMDSMI_ROOT` to be set +so that the AMD SMI shared library and headers can be found. This variable is +required at both **compile** and **run** time. + +There is a single case to consider (AMD SMI is available on ROCm ≥ 6.0): + +1. **For ROCm versions 6.0 and newer:** + Set `PAPI_AMDSMI_ROOT` to the top-level ROCm directory. For example: + + ```bash + export PAPI_AMDSMI_ROOT=/opt/rocm-6.4.0 + # or + export PAPI_AMDSMI_ROOT=/opt/rocm + ``` + +The directory specified by `PAPI_AMDSMI_ROOT` **must contain** the following +subdirectories: + +- `PAPI_AMDSMI_ROOT/lib` (which should include the dynamic library `libamd_smi.so`) +- `PAPI_AMDSMI_ROOT/include/amd_smi` (AMD SMI headers) + +If the library is not found or is not functional at runtime, the component will +appear as "disabled" in `papi_component_avail`, with a message describing the +problem (e.g., library not found). + +--- + +## Enabling the AMD_SMI Component + +To enable reading (and where supported, writing) of AMD_SMI counters, build +PAPI with this component enabled. For example: + +```bash +./configure --with-components="amd_smi" +make -j +``` + +You can verify availability with the utilities in `papi/src/utils/`: + +```bash +papi_component_avail # shows enabled/disabled components +papi_native_avail -i amd_smi # lists native events for this component +``` + +--- + +- **`linux-amd-smi.c`** + Declares the `papi_vector_t` for this component; initializes on first use; hands off work to `amds_*` for device/event management; implements PAPI hooks (`init_component`, `update_control_state`, `start`, `read`, `stop`, `reset`, `shutdown`, and native-event queries). + +- **`amds.c`** + Dynamically loads `libamd_smi.so`, resolves AMD SMI symbols, discovers sockets/devices, and **builds the native event table**. Defines helpers to add simple and counter-based events. Manages global teardown (destroy event table, close library). + +- **`amds_accessors.c`** + Implements the **accessors** that read/write individual metrics (e.g., temperatures, fans, PCIe, energy, power caps, RAS/ECC, clocks, VRAM, link topology, XGMI/PCIe metrics, firmware/board info, etc.). Each accessor maps an event’s `(variant, subvariant)` to the right SMI call and returns the value. + +- **`amds_ctx.c`** + Provides the **per-eventset context**: + + - `amds_ctx_open/close` — acquire/release devices, run per-event open/close hooks. + - `amds_ctx_start/stop` — start/stop counters where needed. + - `amds_ctx_read/write/reset` — read current values, optionally write supported controls (e.g., power cap), zero software view. + Enforces **exclusive GPU usage** across event sets to avoid conflicts. + +- **`amds_evtapi.c`** + Implements native-event enumeration for PAPI (`enum`, `code_to_name`, `name_to_code`, `code_to_descr`) using the in-memory event table and a small hash map for fast lookups. + +- **`amds_priv.h`** + Internal definitions: `native_event_t` (name/descr/device/mode/value + open/close/start/stop/access callbacks), global getters, and the AMD SMI function-pointer declarations (via `amds_funcs.h`). + +- **`amds_funcs.h`** + Centralized macro list of **AMD SMI APIs** used by the component; generates function-pointer declarations/definitions so `amds.c` can `dlsym()` them at runtime. Conditional entries handle newer SMI features. + +- **`htable.h`** + Minimal chained hash table for **name→event** mapping; used by `amds_evtapi.c` to resolve native event names quickly. + +- **`amds.h`** + Public, component-internal API across files: init/shutdown, native-event queries, context ops, and error-string retrieval. + +- **`Rules.amd_smi`** + Build integration for PAPI’s make system; compiles this component and sets include/library paths for AMD SMI. From b4fdd2d64c3d30e1e7f7ce2fe68cf5e7c1da6987 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 21:55:59 -0700 Subject: [PATCH 131/147] readme --- src/components/amd_smi/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md index ede8831fb..a442ae35f 100644 --- a/src/components/amd_smi/README.md +++ b/src/components/amd_smi/README.md @@ -46,7 +46,7 @@ PAPI with this component enabled. For example: ```bash ./configure --with-components="amd_smi" -make -j +make ``` You can verify availability with the utilities in `papi/src/utils/`: From d64395839eeebb654ec83592d22d292c136dd584 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 21:58:05 -0700 Subject: [PATCH 132/147] readme --- src/components/amd_smi/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md index a442ae35f..46a334fa0 100644 --- a/src/components/amd_smi/README.md +++ b/src/components/amd_smi/README.md @@ -58,6 +58,8 @@ papi_native_avail -i amd_smi # lists native events for this component --- +## File-by-file Summary + - **`linux-amd-smi.c`** Declares the `papi_vector_t` for this component; initializes on first use; hands off work to `amds_*` for device/event management; implements PAPI hooks (`init_component`, `update_control_state`, `start`, `read`, `stop`, `reset`, `shutdown`, and native-event queries). From 4d7e8fdcd413a0ccd88ba255340909b2617a977f Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Mon, 15 Sep 2025 21:59:38 -0700 Subject: [PATCH 133/147] remove git ignore --- src/components/amd_smi/.gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 src/components/amd_smi/.gitignore diff --git a/src/components/amd_smi/.gitignore b/src/components/amd_smi/.gitignore deleted file mode 100644 index 800a4d90f..000000000 --- a/src/components/amd_smi/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -tests/* -!tests/*.cpp From 8ddd646ad61185bba272a98d50f42734b911d7f9 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 00:16:49 -0700 Subject: [PATCH 134/147] update comments on test --- src/components/amd_smi/tests/Makefile | 24 +++++++++---------- .../amd_smi/tests/amdsmi_basics.cpp | 22 +++++++++-------- .../amd_smi/tests/amdsmi_ctx_conflict.cpp | 11 ++++++--- .../amd_smi/tests/amdsmi_energy_monotonic.cpp | 7 +++++- src/components/amd_smi/tests/amdsmi_gemm.cpp | 9 +++++-- src/components/amd_smi/tests/amdsmi_hello.cpp | 7 +++++- src/components/amd_smi/tests/runtest.sh | 1 - src/components/amd_smi/tests/test_harness.hpp | 9 ++++++- 8 files changed, 59 insertions(+), 31 deletions(-) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index 7d0c64740..fd027ef98 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,7 +1,7 @@ -# ***NOTE*** The Environment Variable PAPI_ROCM_ROOT must be defined for +# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for # programs to compile correctly. One typical location is /opt/rocm. -PAPI_ROCM_ROOT ?= /opt/rocm-6.4.0 -HIP_PATH := $(PAPI_ROCM_ROOT) +PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 +HIP_PATH := $(PAPI_AMDSMI_ROOT) HIPCC := $(HIP_PATH)/bin/hipcc # Toolchain / flags @@ -18,17 +18,17 @@ PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocm_smi -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hip -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/hsa -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocprofiler -EFFECTIVE_INCLUDE += -I$(PAPI_ROCM_ROOT)/include/rocblas +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocm_smi +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocblas # Linker flags COMMON_LDFLAGS = -ldl -g -lpthread -LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) -LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_ROCM_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) +LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) +LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) # New AMD SMI tests TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict @@ -120,7 +120,7 @@ clean: checkpath: @echo "--- Variables ---" - @echo "PAPI_ROCM_ROOT = $(PAPI_ROCM_ROOT)" + @echo "PAPI_AMDSMI_ROOT = $(PAPI_AMDSMI_ROOT)" @echo "HIPCC = $(HIPCC)" @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" @echo "CFLAGS = $(CFLAGS)" diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.cpp index 21df331d9..84295ee4e 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.cpp @@ -1,10 +1,12 @@ -//----------------------------------------------------------------------------- -// amdsmi_basics.cpp (harness-integrated) -// Enumerates every native AMD-SMI event exposed through PAPI and measures -// them one at a time. Minimal changes from your original: now uses the -// test_harness.hpp for consistent output and final PASS/FAIL lines. -//----------------------------------------------------------------------------- - +/** + * @file amdsmi_basics.c + * @author Dong Jun Woun + * djwoun@gmail.com + * Enumerates every native AMD-SMI event exposed through PAPI and measures + * them one at a time. + */ + + #include #include #include @@ -18,9 +20,9 @@ static inline bool is_warning_rc(int rc) { int main(int argc, char *argv[]) { // Unbuffer stdout so the final status line shows promptly. - setvbuf(stdout, nullptr, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); + setvbuf(stdout, nullptr, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); // 1. Initialise PAPI diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp index 1983c2418..5d3e1ebc0 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp @@ -1,4 +1,9 @@ -// amdsmi_ctx_conflict.cpp ? contention test (refactor) +/** + * @file amdsmi_ctx_conflict.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ #include #include #include @@ -83,8 +88,8 @@ int main(int argc, char** argv) { harness_accept_tests_quiet(&argc, argv); auto opts = parse_harness_cli(argc, argv); - // Optional override of the event: ./amdsmi_ctx_conflict "" - if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; + // Optional override of the event: ./amdsmi_ctx_conflict "" + if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; const char* root = std::getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp index d0fec8190..887613a29 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp @@ -1,4 +1,9 @@ -// amdsmi_energy_monotonic.cpp +/** + * @file amdsmi_energy_monotonic.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ #include #include #include diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.cpp index b996dbc40..89b9b8be4 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.cpp +++ b/src/components/amd_smi/tests/amdsmi_gemm.cpp @@ -1,5 +1,10 @@ -// gemm.cpp ? harness-integrated, keeps your HIP threading/monitoring logic, -// removes CSV output (prints readings unless suppressed), default PASS/FAIL. +/** + * @file amdsmi_gemm.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #include #include #include "papi.h" diff --git a/src/components/amd_smi/tests/amdsmi_hello.cpp b/src/components/amd_smi/tests/amdsmi_hello.cpp index 9dc9d68c2..39f94e790 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.cpp +++ b/src/components/amd_smi/tests/amdsmi_hello.cpp @@ -1,4 +1,9 @@ -// amdsmi_hello.cpp ? minimal harness-aware AMD SMI smoke test +/** + * @file amdsmi_hello.c + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ #include #include #include diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh index 37b3a0e02..70effe00c 100644 --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash -# AMD SMI test runner (no build) mirroring run_tests.sh semantics. # Quiet by default; use -v/--verbose to see output from the tests. # Be reasonably strict but compatible with older bash diff --git a/src/components/amd_smi/tests/test_harness.hpp b/src/components/amd_smi/tests/test_harness.hpp index 3a5ea9582..9a8fe21a5 100644 --- a/src/components/amd_smi/tests/test_harness.hpp +++ b/src/components/amd_smi/tests/test_harness.hpp @@ -1,3 +1,10 @@ +/** + * @file test_harness.h + * @author Dong Jun Woun + * djwoun@gmail.com + * + */ + #ifndef TEST_HARNESS_HPP #define TEST_HARNESS_HPP @@ -18,7 +25,7 @@ static HarnessOpts harness_opts; // - remove it from argv so it can't be mistaken for a positional arg, // - enable quiet mode via env for the harness to pick up. static inline void harness_accept_tests_quiet(int *argc, char **argv) { - /* The PAPI test harness historically invokes each test with a single + /* The PAPI test harness invokes each test with a single positional token holding the value of the TESTS_QUIET environment variable. Only the literal string "TESTS_QUIET" should trigger quiet mode. If any other value is present we drop it from argv and ignore From edeb9629658eda0cd2fb80ec1c3353d58ced78a4 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 16 Sep 2025 03:45:20 -0400 Subject: [PATCH 135/147] Use HIPFLAGS for AMD SMI Makefile --- src/components/amd_smi/tests/Makefile | 270 +++++++++--------- .../{amdsmi_basics.cpp => amdsmi_basics.c} | 30 +- ...ctx_conflict.cpp => amdsmi_ctx_conflict.c} | 115 ++++---- ...onotonic.cpp => amdsmi_energy_monotonic.c} | 15 +- .../tests/{amdsmi_gemm.cpp => amdsmi_gemm.c} | 30 +- .../{amdsmi_hello.cpp => amdsmi_hello.c} | 12 +- .../{test_harness.hpp => test_harness.h} | 22 +- 7 files changed, 254 insertions(+), 240 deletions(-) rename src/components/amd_smi/tests/{amdsmi_basics.cpp => amdsmi_basics.c} (89%) rename src/components/amd_smi/tests/{amdsmi_ctx_conflict.cpp => amdsmi_ctx_conflict.c} (73%) rename src/components/amd_smi/tests/{amdsmi_energy_monotonic.cpp => amdsmi_energy_monotonic.c} (89%) rename src/components/amd_smi/tests/{amdsmi_gemm.cpp => amdsmi_gemm.c} (94%) rename src/components/amd_smi/tests/{amdsmi_hello.cpp => amdsmi_hello.c} (93%) rename src/components/amd_smi/tests/{test_harness.hpp => test_harness.h} (92%) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index fd027ef98..492d38ce2 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,138 +1,132 @@ -# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for -# programs to compile correctly. One typical location is /opt/rocm. -PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 -HIP_PATH := $(PAPI_AMDSMI_ROOT) -HIPCC := $(HIP_PATH)/bin/hipcc - -# Toolchain / flags -CFLAGS ?= -DPAPI_NUM_COMP=3 -CXXFLAGS ?= $(CFLAGS) -std=c++17 -OPTFLAGS ?= -O2 - -UTILOBJS ?= ../../../testlib/libtestlib.a -PAPILIB ?= ../../../libpapi.a - -# Includes (from your logs) -BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests -PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include - -EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) -EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocm_smi -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocblas - -# Linker flags -COMMON_LDFLAGS = -ldl -g -lpthread -LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) -LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) - -# New AMD SMI tests -TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict - -# Default target (now builds amdsmi_hello) -all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) - -# ------------------------ -# Pattern rules -# ------------------------ - -# .c -> .o -%.o: %.c - @echo "Compiling C source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "CFLAGS: $(CFLAGS) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ - -# .cpp -> .o (generic C++) -%.o: %.cpp - @echo "Compiling C++ source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ - -# HIP override for the GEMM-like file (renamed): compile with -x hip -amdsmi_gemm.o: amdsmi_gemm.cpp - @echo "Compiling HIP source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ - -# ------------------------ -# Link rules -# ------------------------ - -# amdsmi_hello replaces amdsmi_example -amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) - -# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello -amdsmi_example: amdsmi_hello - @true - -amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) - -# renamed GEMM target -amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) - -# New tests -amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) - -amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) - -# Convenience meta-target -tests: $(TESTS_AMDSMI) - -# ------------------------ -# Cleanup and diagnostics -# ------------------------ - -clean: - @echo "Cleaning up..." - rm -f \ - amdsmi_hello amdsmi_hello.o \ - amdsmi_basics amdsmi_basics.o \ - amdsmi_gemm amdsmi_gemm.o \ - gemm gemm.o \ - amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ - amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ - *.exe - -checkpath: - @echo "--- Variables ---" - @echo "PAPI_AMDSMI_ROOT = $(PAPI_AMDSMI_ROOT)" - @echo "HIPCC = $(HIPCC)" - @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" - @echo "CFLAGS = $(CFLAGS)" - @echo "CXXFLAGS = $(CXXFLAGS)" - @echo "OPTFLAGS = $(OPTFLAGS)" - @echo "UTILOBJS = $(UTILOBJS)" - @echo "PAPILIB = $(PAPILIB)" - @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" - @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" - @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" - @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" - -.PHONY: all clean checkpath tests \ - amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ - amdsmi_energy_monotonic amdsmi_ctx_conflict +# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for +# programs to compile correctly. One typical location is /opt/rocm. +PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 +HIP_PATH := $(PAPI_AMDSMI_ROOT) +HIPCC := $(HIP_PATH)/bin/hipcc + +# Toolchain / flags +CFLAGS ?= -DPAPI_NUM_COMP=3 +CSTD ?= -std=c11 +HIPFLAGS ?= $(CFLAGS) -std=c++17 +OPTFLAGS ?= -O2 + +UTILOBJS ?= ../../../testlib/libtestlib.a +PAPILIB ?= ../../../libpapi.a + +# Includes (from your logs) +BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests +PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include + +EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) +EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocm_smi +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocblas + +# Linker flags +COMMON_LDFLAGS = -ldl -g -lpthread +LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) +LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) + +# New AMD SMI tests +TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict + +# Default target (now builds amdsmi_hello) +all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) + +# ------------------------ +# Pattern rules +# ------------------------ + +# .c -> .o +%.o: %.c + @echo "Compiling C source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "CFLAGS: $(CFLAGS) CSTD: $(CSTD) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + +# HIP override for the GEMM-like file (renamed): compile with -x hip +amdsmi_gemm.o: amdsmi_gemm.c + @echo "Compiling HIP source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "HIPFLAGS: $(HIPFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ + +# ------------------------ +# Link rules +# ------------------------ + +# amdsmi_hello replaces amdsmi_example +amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) + +# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello +amdsmi_example: amdsmi_hello + @true + +amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) + +# renamed GEMM target +amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" + $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) + +# New tests +amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) + +amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) + +# Convenience meta-target +tests: $(TESTS_AMDSMI) + +# ------------------------ +# Cleanup and diagnostics +# ------------------------ + +clean: + @echo "Cleaning up..." + rm -f \ + amdsmi_hello amdsmi_hello.o \ + amdsmi_basics amdsmi_basics.o \ + amdsmi_gemm amdsmi_gemm.o \ + gemm gemm.o \ + amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ + amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ + *.exe + +checkpath: + @echo "--- Variables ---" + @echo "PAPI_AMDSMI_ROOT = $(PAPI_AMDSMI_ROOT)" + @echo "HIPCC = $(HIPCC)" + @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" + @echo "CFLAGS = $(CFLAGS)" + @echo "CSTD = $(CSTD)" + @echo "HIPFLAGS = $(HIPFLAGS)" + @echo "OPTFLAGS = $(OPTFLAGS)" + @echo "UTILOBJS = $(UTILOBJS)" + @echo "PAPILIB = $(PAPILIB)" + @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" + @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" + @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" + @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" + +.PHONY: all clean checkpath tests \ + amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ + amdsmi_energy_monotonic amdsmi_ctx_conflict diff --git a/src/components/amd_smi/tests/amdsmi_basics.cpp b/src/components/amd_smi/tests/amdsmi_basics.c similarity index 89% rename from src/components/amd_smi/tests/amdsmi_basics.cpp rename to src/components/amd_smi/tests/amdsmi_basics.c index 84295ee4e..196be435a 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.cpp +++ b/src/components/amd_smi/tests/amdsmi_basics.c @@ -7,23 +7,25 @@ */ -#include -#include -#include -#include "papi.h" -#include "test_harness.hpp" +#include +#include +#include +#include + +#include "papi.h" +#include "test_harness.h" // Return true if rc is a "warning, not failure" status for add/start/stop. -static inline bool is_warning_rc(int rc) { +static inline bool is_warning_rc(int rc) { return (rc == PAPI_ENOEVNT) || (rc == PAPI_ECNFLCT) || (rc == PAPI_EPERM); } int main(int argc, char *argv[]) { // Unbuffer stdout so the final status line shows promptly. - setvbuf(stdout, nullptr, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); - auto opts = parse_harness_cli(argc, argv); + setvbuf(stdout, NULL, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); // 1. Initialise PAPI int ret = PAPI_library_init(PAPI_VER_CURRENT); @@ -37,7 +39,7 @@ int main(int argc, char *argv[]) { const int ncomps = PAPI_num_components(); for (int i = 0; i < ncomps && cid < 0; ++i) { const PAPI_component_info_t *cinfo = PAPI_get_component_info(i); - if (cinfo && std::strcmp(cinfo->name, "amd_smi") == 0) { + if (cinfo && strcmp(cinfo->name, "amd_smi") == 0) { cid = i; } } @@ -59,7 +61,7 @@ int main(int argc, char *argv[]) { int passed = 0, warned = 0, failed = 0, skipped = 0; do { - char ev_name[PAPI_MAX_STR_LEN]{}; + char ev_name[PAPI_MAX_STR_LEN] = {0}; if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { // Shouldn't happen; skip silently ++skipped; @@ -67,8 +69,8 @@ int main(int argc, char *argv[]) { } // Preserve your original skip for process* events - if (std::strncmp(ev_name, "amd_smi:::process", 17) == 0 || - std::strncmp(ev_name, "process", 7) == 0) { + if (strncmp(ev_name, "amd_smi:::process", 17) == 0 || + strncmp(ev_name, "process", 7) == 0) { ++skipped; NOTE("[%4d] Skipping %s (process events not testable)\n", event_index++, ev_name); continue; diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c similarity index 73% rename from src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp rename to src/components/amd_smi/tests/amdsmi_ctx_conflict.c index 5d3e1ebc0..239c1a71e 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.cpp +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c @@ -4,42 +4,48 @@ * djwoun@gmail.com * */ -#include -#include -#include -#include -#include -#include "papi.h" -#include "test_harness.hpp" - -static unsigned long get_tid() { return (unsigned long)pthread_self(); } - -struct ThreadState { int start_rc = PAPI_OK; }; -static std::atomic t1_started(false); +#include +#include +#include +#include +#include +#include +#include + +#include "papi.h" +#include "test_harness.h" + +static unsigned long get_tid(void) { return (unsigned long)pthread_self(); } + +struct ThreadState { + int start_rc; +}; + +static _Atomic bool t1_started = false; // Default event; you can override with argv[1] (any amd_smi native event string) static const char* g_event = "amd_smi:::temp_current:device=0:sensor=1"; -static void* thread_fn1(void* arg) { - PAPI_register_thread(); - ThreadState* st = reinterpret_cast(arg); +static void* thread_fn1(void* arg) { + PAPI_register_thread(); + struct ThreadState* st = (struct ThreadState*)arg; int EventSet = PAPI_NULL; int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return nullptr; } + if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } rc = PAPI_add_named_event(EventSet, g_event); if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return nullptr; } + if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } rc = PAPI_start(EventSet); st->start_rc = rc; if (rc == PAPI_OK) { - t1_started.store(true, std::memory_order_release); - long long v=0; (void)PAPI_read(EventSet, &v); - usleep(100000); // keep running long enough for thread2 to collide - (void)PAPI_stop(EventSet, &v); + atomic_store_explicit(&t1_started, true, memory_order_release); + long long v=0; (void)PAPI_read(EventSet, &v); + usleep(100000); // keep running long enough for thread2 to collide + (void)PAPI_stop(EventSet, &v); } else { // If thread 1 cannot start, we cannot conduct the test => PASS with WARNING SKIP("Cannot start thread1 due to HW/resource limits"); @@ -47,25 +53,25 @@ static void* thread_fn1(void* arg) { (void)PAPI_cleanup_eventset(EventSet); (void)PAPI_destroy_eventset(&EventSet); - PAPI_unregister_thread(); - return nullptr; -} + PAPI_unregister_thread(); + return NULL; +} -static void* thread_fn2(void* arg) { - PAPI_register_thread(); - ThreadState* st = reinterpret_cast(arg); +static void* thread_fn2(void* arg) { + PAPI_register_thread(); + struct ThreadState* st = (struct ThreadState*)arg; int EventSet = PAPI_NULL; int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return nullptr; } + if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } rc = PAPI_add_named_event(EventSet, g_event); if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return nullptr; } + if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } // Wait until thread1 is actually running the event - while (!t1_started.load(std::memory_order_acquire)) { /* spin */ } + while (!atomic_load_explicit(&t1_started, memory_order_acquire)) { /* spin */ } rc = PAPI_start(EventSet); st->start_rc = rc; @@ -78,35 +84,38 @@ static void* thread_fn2(void* arg) { (void)PAPI_cleanup_eventset(EventSet); (void)PAPI_destroy_eventset(&EventSet); - PAPI_unregister_thread(); - return nullptr; -} - -int main(int argc, char** argv) { - // Unbuffer stdout so the final status line always shows promptly - setvbuf(stdout, nullptr, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); - auto opts = parse_harness_cli(argc, argv); + PAPI_unregister_thread(); + return NULL; +} + +int main(int argc, char** argv) { + // Unbuffer stdout so the final status line always shows promptly + setvbuf(stdout, NULL, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); // Optional override of the event: ./amdsmi_ctx_conflict "" if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; - const char* root = std::getenv("PAPI_AMDSMI_ROOT"); + const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); int rc = PAPI_library_init(PAPI_VER_CURRENT); - if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } - - if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } - - t1_started.store(false, std::memory_order_relaxed); - - ThreadState s1{}, s2{}; - pthread_t th1, th2; - pthread_create(&th1, nullptr, thread_fn1, &s1); - pthread_create(&th2, nullptr, thread_fn2, &s2); - pthread_join(th1, nullptr); - pthread_join(th2, nullptr); + if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } + + if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } + + atomic_store_explicit(&t1_started, false, memory_order_relaxed); + + struct ThreadState s1; + struct ThreadState s2; + s1.start_rc = PAPI_OK; + s2.start_rc = PAPI_OK; + pthread_t th1, th2; + pthread_create(&th1, NULL, thread_fn1, &s1); + pthread_create(&th2, NULL, thread_fn2, &s2); + pthread_join(th1, NULL); + pthread_join(th2, NULL); if (opts.print) { printf("event: %s\n", g_event); diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c similarity index 89% rename from src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp rename to src/components/amd_smi/tests/amdsmi_energy_monotonic.c index 887613a29..032b932c4 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.cpp +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c @@ -4,17 +4,18 @@ * djwoun@gmail.com * */ -#include -#include -#include -#include "papi.h" -#include "test_harness.hpp" +#include +#include +#include + +#include "papi.h" +#include "test_harness.h" int main(int argc, char **argv) { harness_accept_tests_quiet(&argc, argv); - auto opts = parse_harness_cli(argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); - const char* root = std::getenv("PAPI_AMDSMI_ROOT"); + const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) { SKIP("PAPI_AMDSMI_ROOT not set"); } diff --git a/src/components/amd_smi/tests/amdsmi_gemm.cpp b/src/components/amd_smi/tests/amdsmi_gemm.c similarity index 94% rename from src/components/amd_smi/tests/amdsmi_gemm.cpp rename to src/components/amd_smi/tests/amdsmi_gemm.c index 89b9b8be4..b3c57a7ce 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.cpp +++ b/src/components/amd_smi/tests/amdsmi_gemm.c @@ -13,7 +13,7 @@ #include #include -#include "test_harness.hpp" +#include "test_harness.h" #define M_DIM 7296 #define K_DIM 14592 @@ -88,7 +88,7 @@ __global__ void dgemm_kernel(const double *A, const double *B, double *C, } } -static int real_main(const HarnessOpts& opts) { +static int real_main(const HarnessOpts *opts) { // Graceful AMD SMI availability check (library path) const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) { @@ -148,18 +148,18 @@ static int real_main(const HarnessOpts& opts) { HIP_CHECK(hipSetDevice(1)); hipDeviceProp_t deviceProp; HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); - if (opts.print) { - printf("Device Name: %s\n", deviceProp.name); - printf("Compute Units: %d\n", deviceProp.multiProcessorCount); - printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); - } + if (opts->print) { + printf("Device Name: %s\n", deviceProp.name); + printf("Compute Units: %d\n", deviceProp.multiProcessorCount); + printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); + } // Host buffers (pinned) size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); - double *h_A=nullptr, *h_B=nullptr, *h_C=nullptr; + double *h_A = NULL, *h_B = NULL, *h_C = NULL; HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); @@ -204,7 +204,7 @@ static int real_main(const HarnessOpts& opts) { pthread_t monitor_thread; struct monitor_params params; params.EventSet = EventSet; - params.print = opts.print ? 1 : 0; + params.print = opts->print ? 1 : 0; gettimeofday(¶ms.start_time, NULL); statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); if (statusFlag != 0) { fprintf(stderr, "pthread_create failed\n"); return 1; } @@ -258,9 +258,9 @@ static int real_main(const HarnessOpts& opts) { return 0; } -int main(int argc, char *argv[]) { - harness_accept_tests_quiet(&argc, argv); - auto opts = parse_harness_cli(argc, argv); - int rc = real_main(opts); - return eval_result(opts, rc); -} +int main(int argc, char *argv[]) { + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); + int rc = real_main(&opts); + return eval_result(opts, rc); +} diff --git a/src/components/amd_smi/tests/amdsmi_hello.cpp b/src/components/amd_smi/tests/amdsmi_hello.c similarity index 93% rename from src/components/amd_smi/tests/amdsmi_hello.cpp rename to src/components/amd_smi/tests/amdsmi_hello.c index 39f94e790..90fc6b439 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.cpp +++ b/src/components/amd_smi/tests/amdsmi_hello.c @@ -4,18 +4,20 @@ * djwoun@gmail.com * */ -#include -#include +#include +#include +#include #include + #include "papi.h" -#include "test_harness.hpp" +#include "test_harness.h" int main(int argc, char** argv) { // Unbuffer stdout so the final status line always shows. - setvbuf(stdout, nullptr, _IONBF, 0); + setvbuf(stdout, NULL, _IONBF, 0); harness_accept_tests_quiet(&argc, argv); - auto opts = parse_harness_cli(argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); // Default event (can override via argv[1], e.g. "./amdsmi_hello amd_smi:::power_average:device=0") const char* ev = "amd_smi:::temp_current:device=0:sensor=1"; diff --git a/src/components/amd_smi/tests/test_harness.hpp b/src/components/amd_smi/tests/test_harness.h similarity index 92% rename from src/components/amd_smi/tests/test_harness.hpp rename to src/components/amd_smi/tests/test_harness.h index 9a8fe21a5..a81ff4ebf 100644 --- a/src/components/amd_smi/tests/test_harness.hpp +++ b/src/components/amd_smi/tests/test_harness.h @@ -1,23 +1,25 @@ /** * @file test_harness.h - * @author Dong Jun Woun + * @author Dong Jun Woun * djwoun@gmail.com * */ -#ifndef TEST_HARNESS_HPP -#define TEST_HARNESS_HPP +#ifndef TEST_HARNESS_H +#define TEST_HARNESS_H +#include #include #include #include + #include "papi.h" // for PAPI_* error codes used by helper macros -struct HarnessOpts { +typedef struct HarnessOpts { bool print; bool expect_fail; int had_warning; // set to 1 if we hit ENOEVNT/ECNFLCT or any warning -}; +} HarnessOpts; static HarnessOpts harness_opts; @@ -60,7 +62,7 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { } // Parse CLI -static HarnessOpts parse_harness_cli(int argc, char **argv) { +static inline HarnessOpts parse_harness_cli(int argc, char **argv) { /* Default to printing unless the legacy TESTS_QUIET token is present. This mirrors src/run_tests.sh where invoking with -v unsets TESTS_QUIET, signalling that tests should emit output. */ @@ -92,7 +94,11 @@ static HarnessOpts parse_harness_cli(int argc, char **argv) { } // Final status line -static int eval_result(const HarnessOpts &opts, int result_code) { +static inline int eval_result(HarnessOpts opts, int result_code) { + if (harness_opts.had_warning) { + opts.had_warning = harness_opts.had_warning; + } + bool passed = opts.expect_fail ? (result_code != 0) : (result_code == 0); if (passed) { if (opts.had_warning) printf("PASSED with WARNING\n"); @@ -140,4 +146,4 @@ static int eval_result(const HarnessOpts &opts, int result_code) { // Keep SKIP as a cant conduct success-with-warning #define SKIP(reason) EXIT_WARNING("%s", (reason)) -#endif // TEST_HARNESS_HPP +#endif // TEST_HARNESS_H From 9e23e944090d0363ebcb48441d9d4cf39c5b3c7c Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 16 Sep 2025 04:04:41 -0400 Subject: [PATCH 136/147] Fix AMD SMI C harness feature usage --- src/components/amd_smi/tests/Makefile | 3 +++ src/components/amd_smi/tests/amdsmi_basics.c | 6 +++--- .../amd_smi/tests/amdsmi_ctx_conflict.c | 8 ++++---- .../amd_smi/tests/amdsmi_energy_monotonic.c | 6 +++--- src/components/amd_smi/tests/amdsmi_gemm.c | 16 ++++++++-------- src/components/amd_smi/tests/amdsmi_hello.c | 6 +++--- src/components/amd_smi/tests/test_harness.h | 4 ++++ 7 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index 492d38ce2..e1efe5cb7 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -93,6 +93,9 @@ amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) +$(UTILOBJS): + $(MAKE) -C ../../../testlib libtestlib.a + # Convenience meta-target tests: $(TESTS_AMDSMI) diff --git a/src/components/amd_smi/tests/amdsmi_basics.c b/src/components/amd_smi/tests/amdsmi_basics.c index 196be435a..9043ea916 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.c +++ b/src/components/amd_smi/tests/amdsmi_basics.c @@ -7,13 +7,13 @@ */ +#include "test_harness.h" + +#include "papi.h" #include #include #include #include - -#include "papi.h" -#include "test_harness.h" // Return true if rc is a "warning, not failure" status for add/start/stop. static inline bool is_warning_rc(int rc) { diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c index 239c1a71e..eadd1a2f9 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c @@ -4,16 +4,16 @@ * djwoun@gmail.com * */ +#include "test_harness.h" + +#include "papi.h" #include +#include #include #include #include #include -#include #include - -#include "papi.h" -#include "test_harness.h" static unsigned long get_tid(void) { return (unsigned long)pthread_self(); } diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c index 032b932c4..4d6465316 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c @@ -4,12 +4,12 @@ * djwoun@gmail.com * */ +#include "test_harness.h" + +#include "papi.h" #include #include #include - -#include "papi.h" -#include "test_harness.h" int main(int argc, char **argv) { harness_accept_tests_quiet(&argc, argv); diff --git a/src/components/amd_smi/tests/amdsmi_gemm.c b/src/components/amd_smi/tests/amdsmi_gemm.c index b3c57a7ce..1ef1e7440 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.c +++ b/src/components/amd_smi/tests/amdsmi_gemm.c @@ -5,15 +5,15 @@ * */ -#include -#include -#include "papi.h" -#include "hip/hip_runtime.h" -#include -#include -#include - #include "test_harness.h" + +#include "papi.h" +#include "hip/hip_runtime.h" +#include +#include +#include +#include +#include #define M_DIM 7296 #define K_DIM 14592 diff --git a/src/components/amd_smi/tests/amdsmi_hello.c b/src/components/amd_smi/tests/amdsmi_hello.c index 90fc6b439..6cbd22ee2 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.c +++ b/src/components/amd_smi/tests/amdsmi_hello.c @@ -4,14 +4,14 @@ * djwoun@gmail.com * */ +#include "test_harness.h" + +#include "papi.h" #include #include #include #include -#include "papi.h" -#include "test_harness.h" - int main(int argc, char** argv) { // Unbuffer stdout so the final status line always shows. setvbuf(stdout, NULL, _IONBF, 0); diff --git a/src/components/amd_smi/tests/test_harness.h b/src/components/amd_smi/tests/test_harness.h index a81ff4ebf..c77f9334b 100644 --- a/src/components/amd_smi/tests/test_harness.h +++ b/src/components/amd_smi/tests/test_harness.h @@ -8,6 +8,10 @@ #ifndef TEST_HARNESS_H #define TEST_HARNESS_H +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE +#endif + #include #include #include From fab23bbf302c5a75d34787b5ddb3d33a59caf956 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 00:22:03 -0700 Subject: [PATCH 137/147] minor makefile change --- src/components/amd_smi/tests/Makefile | 141 ++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index e1efe5cb7..cfc5ae445 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,3 +1,4 @@ +<<<<<<< HEAD # ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for # programs to compile correctly. One typical location is /opt/rocm. PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 @@ -133,3 +134,143 @@ checkpath: .PHONY: all clean checkpath tests \ amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ amdsmi_energy_monotonic amdsmi_ctx_conflict +======= +# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for +# programs to compile correctly. One typical location is /opt/rocm. +PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 +HIP_PATH := $(PAPI_AMDSMI_ROOT) +HIPCC := $(HIP_PATH)/bin/hipcc + +# Toolchain / flags +CFLAGS ?= -DPAPI_NUM_COMP=3 +CXXFLAGS ?= $(CFLAGS) -std=c++17 +OPTFLAGS ?= -O2 + +UTILOBJS ?= ../../../testlib/libtestlib.a +PAPILIB ?= ../../../libpapi.a + +# Includes (from your logs) +BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests +PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include + +EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) +EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocblas + +# Linker flags +COMMON_LDFLAGS = -ldl -g -lpthread +LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) +LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) + +# New AMD SMI tests +TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict + +# Default target (now builds amdsmi_hello) +all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) + +# ------------------------ +# Pattern rules +# ------------------------ + +# .c -> .o +%.o: %.c + @echo "Compiling C source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "CFLAGS: $(CFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + +# .cpp -> .o (generic C++) +%.o: %.cpp + @echo "Compiling C++ source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + +# HIP override for the GEMM-like file (renamed): compile with -x hip +amdsmi_gemm.o: amdsmi_gemm.cpp + @echo "Compiling HIP source $< to $@..." + @echo "HIPCC: $(HIPCC)" + @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ + +# ------------------------ +# Link rules +# ------------------------ + +# amdsmi_hello replaces amdsmi_example +amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) + +# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello +amdsmi_example: amdsmi_hello + @true + +amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) + +# renamed GEMM target +amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) + +# New tests +amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) + +amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) + @echo "Linking $@..." + @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" + $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) + +# Convenience meta-target +tests: $(TESTS_AMDSMI) + +# ------------------------ +# Cleanup and diagnostics +# ------------------------ + +clean: + @echo "Cleaning up..." + rm -f \ + amdsmi_hello amdsmi_hello.o \ + amdsmi_basics amdsmi_basics.o \ + amdsmi_gemm amdsmi_gemm.o \ + gemm gemm.o \ + amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ + amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ + *.exe + +checkpath: + @echo "--- Variables ---" + @echo "PAPI_AMDSMI_ROOT = $(PAPI_AMDSMI_ROOT)" + @echo "HIPCC = $(HIPCC)" + @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" + @echo "CFLAGS = $(CFLAGS)" + @echo "CXXFLAGS = $(CXXFLAGS)" + @echo "OPTFLAGS = $(OPTFLAGS)" + @echo "UTILOBJS = $(UTILOBJS)" + @echo "PAPILIB = $(PAPILIB)" + @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" + @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" + @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" + @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" + +.PHONY: all clean checkpath tests \ + amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ + amdsmi_energy_monotonic amdsmi_ctx_conflict +>>>>>>> b37618394 (minor makefile change) From bc3fe4ab0ec2cf9320aa231561b79609a84ab846 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 09:00:10 -0700 Subject: [PATCH 138/147] makefile --- src/components/amd_smi/tests/Makefile | 179 +++----------------------- 1 file changed, 19 insertions(+), 160 deletions(-) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index cfc5ae445..89aece1eb 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,140 +1,3 @@ -<<<<<<< HEAD -# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for -# programs to compile correctly. One typical location is /opt/rocm. -PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 -HIP_PATH := $(PAPI_AMDSMI_ROOT) -HIPCC := $(HIP_PATH)/bin/hipcc - -# Toolchain / flags -CFLAGS ?= -DPAPI_NUM_COMP=3 -CSTD ?= -std=c11 -HIPFLAGS ?= $(CFLAGS) -std=c++17 -OPTFLAGS ?= -O2 - -UTILOBJS ?= ../../../testlib/libtestlib.a -PAPILIB ?= ../../../libpapi.a - -# Includes (from your logs) -BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests -PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include - -EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) -EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocm_smi -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocblas - -# Linker flags -COMMON_LDFLAGS = -ldl -g -lpthread -LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) -LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) - -# New AMD SMI tests -TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict - -# Default target (now builds amdsmi_hello) -all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) - -# ------------------------ -# Pattern rules -# ------------------------ - -# .c -> .o -%.o: %.c - @echo "Compiling C source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "CFLAGS: $(CFLAGS) CSTD: $(CSTD) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ - -# HIP override for the GEMM-like file (renamed): compile with -x hip -amdsmi_gemm.o: amdsmi_gemm.c - @echo "Compiling HIP source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "HIPFLAGS: $(HIPFLAGS) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ - -# ------------------------ -# Link rules -# ------------------------ - -# amdsmi_hello replaces amdsmi_example -amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) - -# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello -amdsmi_example: amdsmi_hello - @true - -amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) - -# renamed GEMM target -amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" - $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) - -# New tests -amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) - -amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) - @echo "Linking $@..." - @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) - -$(UTILOBJS): - $(MAKE) -C ../../../testlib libtestlib.a - -# Convenience meta-target -tests: $(TESTS_AMDSMI) - -# ------------------------ -# Cleanup and diagnostics -# ------------------------ - -clean: - @echo "Cleaning up..." - rm -f \ - amdsmi_hello amdsmi_hello.o \ - amdsmi_basics amdsmi_basics.o \ - amdsmi_gemm amdsmi_gemm.o \ - gemm gemm.o \ - amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ - amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ - *.exe - -checkpath: - @echo "--- Variables ---" - @echo "PAPI_AMDSMI_ROOT = $(PAPI_AMDSMI_ROOT)" - @echo "HIPCC = $(HIPCC)" - @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" - @echo "CFLAGS = $(CFLAGS)" - @echo "CSTD = $(CSTD)" - @echo "HIPFLAGS = $(HIPFLAGS)" - @echo "OPTFLAGS = $(OPTFLAGS)" - @echo "UTILOBJS = $(UTILOBJS)" - @echo "PAPILIB = $(PAPILIB)" - @echo "COMMON_LDFLAGS = $(COMMON_LDFLAGS)" - @echo "LDFLAGS_AMDSMI = $(LDFLAGS_AMDSMI)" - @echo "LDFLAGS_GEMM = $(LDFLAGS_GEMM)" - @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" - -.PHONY: all clean checkpath tests \ - amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ - amdsmi_energy_monotonic amdsmi_ctx_conflict -======= # ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for # programs to compile correctly. One typical location is /opt/rocm. PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 @@ -143,7 +6,8 @@ HIPCC := $(HIP_PATH)/bin/hipcc # Toolchain / flags CFLAGS ?= -DPAPI_NUM_COMP=3 -CXXFLAGS ?= $(CFLAGS) -std=c++17 +CSTD ?= -std=c11 +HIPFLAGS ?= $(CFLAGS) -std=c++17 OPTFLAGS ?= -O2 UTILOBJS ?= ../../../testlib/libtestlib.a @@ -156,7 +20,7 @@ PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include -EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/amd_smi +EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocm_smi EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hip EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/hsa EFFECTIVE_INCLUDE += -I$(PAPI_AMDSMI_ROOT)/include/rocprofiler @@ -181,25 +45,17 @@ all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) %.o: %.c @echo "Compiling C source $< to $@..." @echo "HIPCC: $(HIPCC)" - @echo "CFLAGS: $(CFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "CFLAGS: $(CFLAGS) CSTD: $(CSTD) OPTFLAGS: $(OPTFLAGS)" @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ - -# .cpp -> .o (generic C++) -%.o: %.cpp - @echo "Compiling C++ source $< to $@..." - @echo "HIPCC: $(HIPCC)" - @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" - @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ # HIP override for the GEMM-like file (renamed): compile with -x hip -amdsmi_gemm.o: amdsmi_gemm.cpp +amdsmi_gemm.o: amdsmi_gemm.c @echo "Compiling HIP source $< to $@..." @echo "HIPCC: $(HIPCC)" - @echo "CXXFLAGS: $(CXXFLAGS) OPTFLAGS: $(OPTFLAGS)" + @echo "HIPFLAGS: $(HIPFLAGS) OPTFLAGS: $(OPTFLAGS)" @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ + $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -x hip -c $< -o $@ # ------------------------ # Link rules @@ -209,7 +65,7 @@ amdsmi_gemm.o: amdsmi_gemm.cpp amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) # Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello amdsmi_example: amdsmi_hello @@ -218,24 +74,27 @@ amdsmi_example: amdsmi_hello amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) # renamed GEMM target amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) + $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) # New tests amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_energy_monotonic.o $(LDFLAGS_AMDSMI) amdsmi_ctx_conflict: amdsmi_ctx_conflict.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" - $(HIPCC) $(CXXFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) + $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_ctx_conflict.o $(LDFLAGS_AMDSMI) + +$(UTILOBJS): + $(MAKE) -C ../../../testlib libtestlib.a # Convenience meta-target tests: $(TESTS_AMDSMI) @@ -261,7 +120,8 @@ checkpath: @echo "HIPCC = $(HIPCC)" @echo "INCLUDES = $(EFFECTIVE_INCLUDE)" @echo "CFLAGS = $(CFLAGS)" - @echo "CXXFLAGS = $(CXXFLAGS)" + @echo "CSTD = $(CSTD)" + @echo "HIPFLAGS = $(HIPFLAGS)" @echo "OPTFLAGS = $(OPTFLAGS)" @echo "UTILOBJS = $(UTILOBJS)" @echo "PAPILIB = $(PAPILIB)" @@ -272,5 +132,4 @@ checkpath: .PHONY: all clean checkpath tests \ amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ - amdsmi_energy_monotonic amdsmi_ctx_conflict ->>>>>>> b37618394 (minor makefile change) + amdsmi_energy_monotonic amdsmi_ctx_conflict \ No newline at end of file From e1eab8c6b07b8410e05291af59d58d0b2623aee9 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 09:20:22 -0700 Subject: [PATCH 139/147] adjust read me --- src/components/amd_smi/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md index 46a334fa0..cdd55afa8 100644 --- a/src/components/amd_smi/README.md +++ b/src/components/amd_smi/README.md @@ -3,7 +3,7 @@ The **AMD_SMI** (AMD System Management Interface) component exposes hardware management counters (and selected controls) for AMD GPUs — e.g., power usage, temperatures, clocks, PCIe link metrics, VRAM information, and RAS/ECC status — -by querying the AMD SMI library at runtime (ROCm ≥ 6.0.0). +by querying the AMD SMI library at runtime (ROCm ≥ 6.4.0). - [Environment Variables](#environment-variables) - [Enabling the AMD_SMI Component](#enabling-the-amd_smi-component) From eaf78e732370cc2165c8f8faae0d8bf4157b155b Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 10:45:25 -0700 Subject: [PATCH 140/147] read me edit --- src/components/amd_smi/README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md index cdd55afa8..ce4cd7cab 100644 --- a/src/components/amd_smi/README.md +++ b/src/components/amd_smi/README.md @@ -70,12 +70,10 @@ papi_native_avail -i amd_smi # lists native events for this component Implements the **accessors** that read/write individual metrics (e.g., temperatures, fans, PCIe, energy, power caps, RAS/ECC, clocks, VRAM, link topology, XGMI/PCIe metrics, firmware/board info, etc.). Each accessor maps an event’s `(variant, subvariant)` to the right SMI call and returns the value. - **`amds_ctx.c`** - Provides the **per-eventset context**: - - - `amds_ctx_open/close` — acquire/release devices, run per-event open/close hooks. - - `amds_ctx_start/stop` — start/stop counters where needed. + Provides the **per-eventset context**: + - `amds_ctx_open/close` — acquire/release devices, run per-event open/close hooks. + - `amds_ctx_start/stop` — start/stop counters where needed. - `amds_ctx_read/write/reset` — read current values, optionally write supported controls (e.g., power cap), zero software view. - Enforces **exclusive GPU usage** across event sets to avoid conflicts. - **`amds_evtapi.c`** Implements native-event enumeration for PAPI (`enum`, `code_to_name`, `name_to_code`, `code_to_descr`) using the in-memory event table and a small hash map for fast lookups. From 5fb2ef0e465369c73e411b70754d8c73ee433a26 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 11:52:21 -0700 Subject: [PATCH 141/147] comments --- src/components/amd_smi/tests/amdsmi_hello.c | 2 +- src/components/amd_smi/tests/runtest.sh | 1 - src/components/amd_smi/tests/test_harness.h | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_hello.c b/src/components/amd_smi/tests/amdsmi_hello.c index 6cbd22ee2..735140db1 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.c +++ b/src/components/amd_smi/tests/amdsmi_hello.c @@ -55,7 +55,7 @@ int main(int argc, char** argv) { return eval_result(opts, 1); } - // Start ¡æ short wait ¡æ stop/read + // Start | short wait | stop/read rc = PAPI_start(EventSet); if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { NOTE("Cannot start counters: %s", PAPI_strerror(rc)); diff --git a/src/components/amd_smi/tests/runtest.sh b/src/components/amd_smi/tests/runtest.sh index 70effe00c..10b6716ba 100644 --- a/src/components/amd_smi/tests/runtest.sh +++ b/src/components/amd_smi/tests/runtest.sh @@ -1,7 +1,6 @@ #!/usr/bin/env bash # Quiet by default; use -v/--verbose to see output from the tests. -# Be reasonably strict but compatible with older bash set -e set -u ( set -o pipefail ) 2>/dev/null || true diff --git a/src/components/amd_smi/tests/test_harness.h b/src/components/amd_smi/tests/test_harness.h index c77f9334b..652786a82 100644 --- a/src/components/amd_smi/tests/test_harness.h +++ b/src/components/amd_smi/tests/test_harness.h @@ -67,7 +67,7 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { // Parse CLI static inline HarnessOpts parse_harness_cli(int argc, char **argv) { - /* Default to printing unless the legacy TESTS_QUIET token is + /* Default to printing unless the TESTS_QUIET token is present. This mirrors src/run_tests.sh where invoking with -v unsets TESTS_QUIET, signalling that tests should emit output. */ harness_opts.print = true; @@ -108,7 +108,7 @@ static inline int eval_result(HarnessOpts opts, int result_code) { if (opts.had_warning) printf("PASSED with WARNING\n"); else printf("PASSED\n"); } else { - printf("FAILED!!!\n"); // always the shouty failure you wanted + printf("FAILED!!!\n"); } return passed ? 0 : 1; } From 31d012f3ec4e021efeb4c41958772f610d58dced Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:19:36 -0400 Subject: [PATCH 142/147] Standardize AMD SMI return error variables --- src/components/amd_smi/amds.c | 8 ++++---- src/components/amd_smi/amds_ctx.c | 12 ++++++------ src/components/amd_smi/linux-amd-smi.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index a0a614004..086a97710 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -750,10 +750,10 @@ static int add_event(int *idx_ptr, const char *name, const char *descr, int devi static int add_counter_event(int *idx_ptr, const char *name, const char *descr, int device, uint32_t variant, uint32_t subvariant) { - int ret = add_event(idx_ptr, name, descr, device, variant, subvariant, - PAPI_MODE_READ, access_amdsmi_gpu_counter); - if (ret != PAPI_OK) - return ret; + int papi_errno = add_event(idx_ptr, name, descr, device, variant, subvariant, + PAPI_MODE_READ, access_amdsmi_gpu_counter); + if (papi_errno != PAPI_OK) + return papi_errno; native_event_t *ev = &ntv_table.events[*idx_ptr - 1]; ev->open_func = open_counter; ev->close_func = close_counter; diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index f388665d1..af2bde99a 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -127,9 +127,9 @@ int amds_ctx_stop(amds_ctx_t ctx) { for (int i = 0; i < ctx->num_events; ++i) { native_event_t *ev = &ntv_table_p->events[ctx->events_id[i]]; if (ev->stop_func) { - int ret = ev->stop_func(ev); + int papi_errno_stop = ev->stop_func(ev); if (papi_errno == PAPI_OK) - papi_errno = ret; + papi_errno = papi_errno_stop; } } ctx->state &= ~AMDS_EVENTS_RUNNING; @@ -150,14 +150,14 @@ int amds_ctx_read(amds_ctx_t ctx, long long **counts) { unsigned int id = ctx->events_id[i]; native_event_t *ev = &ntv_table_p->events[id]; - int rc = PAPI_OK; + int papi_errno_access = PAPI_OK; if (ev->access_func) { - rc = ev->access_func(PAPI_MODE_READ, ev); + papi_errno_access = ev->access_func(PAPI_MODE_READ, ev); } - if (rc == PAPI_OK) { + if (papi_errno_access == PAPI_OK) { ctx->counters[i] = (long long)ev->value; } else if (papi_errno == PAPI_OK) { - papi_errno = rc; /* remember, but keep going */ + papi_errno = papi_errno_access; /* remember, but keep going */ } } diff --git a/src/components/amd_smi/linux-amd-smi.c b/src/components/amd_smi/linux-amd-smi.c index 36cdd11f7..3f5d02179 100644 --- a/src/components/amd_smi/linux-amd-smi.c +++ b/src/components/amd_smi/linux-amd-smi.c @@ -216,9 +216,9 @@ static int _amd_smi_stop(hwd_context_t *ctx, hwd_control_state_t *ctrl) { amdsmi_control_t *amdsmi_ctl = (amdsmi_control_t *)ctrl; if (!(amdsmi_ctx->state & AMDS_EVENTS_RUNNING)) return PAPI_EMISC; - int rc = amds_ctx_stop(amdsmi_ctl->amds_ctx); + int papi_errno = amds_ctx_stop(amdsmi_ctl->amds_ctx); amdsmi_ctx->state &= ~AMDS_EVENTS_RUNNING; - return rc; + return papi_errno; } static int _amd_smi_reset(hwd_context_t *ctx, hwd_control_state_t *ctrl) { From d537317cdffca74babbfdb5a28a7db781184b7df Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 12:27:37 -0700 Subject: [PATCH 143/147] updated comments --- src/components/amd_smi/tests/Makefile | 31 ++-- src/components/amd_smi/tests/amdsmi_basics.c | 62 ++++--- .../amd_smi/tests/amdsmi_ctx_conflict.c | 170 ++++++++++-------- .../amd_smi/tests/amdsmi_energy_monotonic.c | 54 ++++-- src/components/amd_smi/tests/amdsmi_gemm.c | 140 +++++++++------ src/components/amd_smi/tests/amdsmi_hello.c | 31 ++-- src/components/amd_smi/tests/test_harness.h | 112 ++++++++---- 7 files changed, 375 insertions(+), 225 deletions(-) diff --git a/src/components/amd_smi/tests/Makefile b/src/components/amd_smi/tests/Makefile index 89aece1eb..1d58a32d3 100644 --- a/src/components/amd_smi/tests/Makefile +++ b/src/components/amd_smi/tests/Makefile @@ -1,5 +1,6 @@ -# ***NOTE*** The Environment Variable PAPI_AMDSMI_ROOT must be defined for -# programs to compile correctly. One typical location is /opt/rocm. +# ROCm + PAPI build settings +# Set PAPI_AMDSMI_ROOT to your ROCm install prefix (e.g., /opt/rocm or /opt/rocm-6.4.0). +# Used to find AMD SMI / HIP / ROCm headers and libraries. You can override on the command line. PAPI_AMDSMI_ROOT ?= /opt/rocm-6.4.0 HIP_PATH := $(PAPI_AMDSMI_ROOT) HIPCC := $(HIP_PATH)/bin/hipcc @@ -10,12 +11,13 @@ CSTD ?= -std=c11 HIPFLAGS ?= $(CFLAGS) -std=c++17 OPTFLAGS ?= -O2 +# Libraries in the PAPI tree (override if your layout differs) UTILOBJS ?= ../../../testlib/libtestlib.a PAPILIB ?= ../../../libpapi.a -# Includes (from your logs) +# Include paths (adjust if your PAPI install lives elsewhere) BASE_INCLUDES_FROM_LOG ?= -I. -I../../.. -I../../../testlib -I../../../validation_tests -PAPI_DIR_INCLUDE ?= /home/dwoun/apps/papi/include +PAPI_DIR_INCLUDE ?= ../../../include EFFECTIVE_INCLUDE := $(BASE_INCLUDES_FROM_LOG) EFFECTIVE_INCLUDE += -I$(PAPI_DIR_INCLUDE) @@ -31,14 +33,14 @@ COMMON_LDFLAGS = -ldl -g -lpthread LDFLAGS_AMDSMI = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lamd_smi $(COMMON_LDFLAGS) LDFLAGS_GEMM = $(UTILOBJS) $(PAPILIB) -L$(PAPI_AMDSMI_ROOT)/lib -lrocblas $(COMMON_LDFLAGS) -# New AMD SMI tests +# AMD SMI tests to build with 'make tests' TESTS_AMDSMI := amdsmi_energy_monotonic amdsmi_ctx_conflict -# Default target (now builds amdsmi_hello) +# Default target all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) # ------------------------ -# Pattern rules +# Compile rules # ------------------------ # .c -> .o @@ -49,7 +51,7 @@ all: amdsmi_hello amdsmi_basics amdsmi_gemm $(TESTS_AMDSMI) @echo "INCLUDES: $(EFFECTIVE_INCLUDE)" $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -c $< -o $@ -# HIP override for the GEMM-like file (renamed): compile with -x hip +# amdsmi_gemm.c is compiled as HIP amdsmi_gemm.o: amdsmi_gemm.c @echo "Compiling HIP source $< to $@..." @echo "HIPCC: $(HIPCC)" @@ -61,13 +63,13 @@ amdsmi_gemm.o: amdsmi_gemm.c # Link rules # ------------------------ -# amdsmi_hello replaces amdsmi_example +# amdsmi_hello replaces the older amdsmi_example amdsmi_hello: amdsmi_hello.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_hello.o $(LDFLAGS_AMDSMI) -# Back-compat alias: allow "make amdsmi_example" to build amdsmi_hello +# Back-compat alias: allow 'make amdsmi_example' to build amdsmi_hello amdsmi_example: amdsmi_hello @true @@ -76,13 +78,13 @@ amdsmi_basics: amdsmi_basics.o $(UTILOBJS) $(PAPILIB) @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" $(HIPCC) $(CFLAGS) $(CSTD) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_basics.o $(LDFLAGS_AMDSMI) -# renamed GEMM target +# GEMM sample linked against rocBLAS amdsmi_gemm: amdsmi_gemm.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_GEMM: $(LDFLAGS_GEMM)" $(HIPCC) $(HIPFLAGS) $(OPTFLAGS) $(EFFECTIVE_INCLUDE) -o $@ amdsmi_gemm.o $(LDFLAGS_GEMM) -# New tests +# Tests amdsmi_energy_monotonic: amdsmi_energy_monotonic.o $(UTILOBJS) $(PAPILIB) @echo "Linking $@..." @echo "Using LDFLAGS_AMDSMI: $(LDFLAGS_AMDSMI)" @@ -109,7 +111,6 @@ clean: amdsmi_hello amdsmi_hello.o \ amdsmi_basics amdsmi_basics.o \ amdsmi_gemm amdsmi_gemm.o \ - gemm gemm.o \ amdsmi_energy_monotonic amdsmi_energy_monotonic.o \ amdsmi_ctx_conflict amdsmi_ctx_conflict.o \ *.exe @@ -131,5 +132,5 @@ checkpath: @echo "TESTS_AMDSMI = $(TESTS_AMDSMI)" .PHONY: all clean checkpath tests \ - amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm gemm \ - amdsmi_energy_monotonic amdsmi_ctx_conflict \ No newline at end of file + amdsmi_hello amdsmi_example amdsmi_basics amdsmi_gemm \ + amdsmi_energy_monotonic amdsmi_ctx_conflict diff --git a/src/components/amd_smi/tests/amdsmi_basics.c b/src/components/amd_smi/tests/amdsmi_basics.c index 9043ea916..07b9cb837 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.c +++ b/src/components/amd_smi/tests/amdsmi_basics.c @@ -1,59 +1,57 @@ /** * @file amdsmi_basics.c - * @author Dong Jun Woun + * @author Dong Jun Woun * djwoun@gmail.com - * Enumerates every native AMD-SMI event exposed through PAPI and measures + * @brief Enumerates every native AMD-SMI event exposed through PAPI and measures * them one at a time. */ - - -#include "test_harness.h" - -#include "papi.h" -#include -#include -#include -#include + +#include "test_harness.h" +#include "papi.h" +#include +#include +#include +#include // Return true if rc is a "warning, not failure" status for add/start/stop. -static inline bool is_warning_rc(int rc) { +static inline bool is_warning_rc(int rc) { return (rc == PAPI_ENOEVNT) || (rc == PAPI_ECNFLCT) || (rc == PAPI_EPERM); } int main(int argc, char *argv[]) { // Unbuffer stdout so the final status line shows promptly. - setvbuf(stdout, NULL, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); - HarnessOpts opts = parse_harness_cli(argc, argv); + setvbuf(stdout, NULL, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); - // 1. Initialise PAPI + // 1) Initialize PAPI. int ret = PAPI_library_init(PAPI_VER_CURRENT); if (ret != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); return eval_result(opts, 1); } - // 2. Locate the AMD-SMI component + // 2) Locate the AMD-SMI component. int cid = -1; const int ncomps = PAPI_num_components(); for (int i = 0; i < ncomps && cid < 0; ++i) { const PAPI_component_info_t *cinfo = PAPI_get_component_info(i); - if (cinfo && strcmp(cinfo->name, "amd_smi") == 0) { + if (cinfo && strcmp(cinfo->name, "amd_smi") == 0) { cid = i; } } if (cid < 0) { - // Can't conduct on this build/platform ¡æ pass with warning. + // Can't run this test on this build/platform (likely PAPI built without ROCm) — skip with warning. SKIP("Unable to locate the amd_smi component (PAPI built without ROCm?)"); } NOTE("Using AMD-SMI component id %d\n", cid); - // 3. Enumerate every native event + // 3) Enumerate every native event. int ev_code = PAPI_NATIVE_MASK; if (PAPI_enum_cmp_event(&ev_code, PAPI_ENUM_FIRST, cid) != PAPI_OK) { - // No events ¡æ treat as ¡°nothing to do¡± (warning instead of failing) + // No events — treat as "nothing to do" (warning instead of failing). SKIP("No native events found for AMD-SMI component"); } @@ -61,16 +59,16 @@ int main(int argc, char *argv[]) { int passed = 0, warned = 0, failed = 0, skipped = 0; do { - char ev_name[PAPI_MAX_STR_LEN] = {0}; + char ev_name[PAPI_MAX_STR_LEN] = {0}; if (PAPI_event_code_to_name(ev_code, ev_name) != PAPI_OK) { - // Shouldn't happen; skip silently + // Shouldn't happen; skip silently. ++skipped; continue; } - // Preserve your original skip for process* events - if (strncmp(ev_name, "amd_smi:::process", 17) == 0 || - strncmp(ev_name, "process", 7) == 0) { + // Skip process* events; these aren't testable in this harness. + if (strncmp(ev_name, "amd_smi:::process", 17) == 0 || + strncmp(ev_name, "process", 7) == 0) { ++skipped; NOTE("[%4d] Skipping %s (process events not testable)\n", event_index++, ev_name); continue; @@ -78,17 +76,17 @@ int main(int argc, char *argv[]) { NOTE("[%4d] Testing %s...", event_index, ev_name); - // 4-7. Create a fresh EventSet, read the event, print, cleanup + // 4–7) Create a fresh EventSet, add the event, start, stop/read, print, cleanup. int eventSet = PAPI_NULL; ret = PAPI_create_eventset(&eventSet); if (ret != PAPI_OK) { - // Hard failure to create an EventSet + // Hard failure to create an EventSet. NOTE(" ? create_eventset failed: %s", PAPI_strerror(ret)); ++failed; ++event_index; continue; } - // Keep original explicit assignment to the component + // Explicitly assign the component. ret = PAPI_assign_eventset_component(eventSet, cid); if (ret != PAPI_OK) { NOTE(" ? assign_eventset_component failed: %s", PAPI_strerror(ret)); @@ -128,7 +126,7 @@ int main(int argc, char *argv[]) { continue; } - // Read once via stop (same as original) + // Read once via stop(). ret = PAPI_stop(eventSet, &value); if (ret != PAPI_OK) { if (is_warning_rc(ret)) { @@ -144,7 +142,7 @@ int main(int argc, char *argv[]) { continue; } - // Success path + // Success path. ++passed; if (opts.print) { printf(" %-60s = %lld\n\n", ev_name, value); diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c index eadd1a2f9..16a41288d 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c @@ -1,77 +1,97 @@ /** * @file amdsmi_ctx_conflict.c - * @author Dong Jun Woun + * @author Dong Jun Woun * djwoun@gmail.com + * @brief Validates that an AMD-SMI native event exposed via PAPI is context-exclusive + * by attempting to start the same event in two threads. Expected result: + * thread 1 starts successfully; thread 2 fails with PAPI_ECNFLCT. * + * Usage: + * ./amdsmi_ctx_conflict [] [harness options] + * If no event is provided, defaults to "amd_smi:::temp_current:device=0:sensor=1". */ -#include "test_harness.h" - -#include "papi.h" -#include -#include -#include -#include -#include -#include -#include - -static unsigned long get_tid(void) { return (unsigned long)pthread_self(); } - -struct ThreadState { - int start_rc; -}; - -static _Atomic bool t1_started = false; - -// Default event; you can override with argv[1] (any amd_smi native event string) + +#include "test_harness.h" +#include "papi.h" + +#include +#include +#include +#include +#include +#include +#include + +/** PAPI thread-id callback. */ +static unsigned long get_tid(void) { return (unsigned long)pthread_self(); } + +struct ThreadState { + int start_rc; +}; + +static _Atomic bool t1_started = false; + +/* Default event; can be overridden by argv[1] (any AMD-SMI native event string). */ static const char* g_event = "amd_smi:::temp_current:device=0:sensor=1"; -static void* thread_fn1(void* arg) { - PAPI_register_thread(); - struct ThreadState* st = (struct ThreadState*)arg; +/** + * Thread 1: + * - Creates an EventSet, adds the selected event, and starts it. + * - Keeps it running briefly so thread 2 collides on start. + * Expected: PAPI_start succeeds. + */ +static void* thread_fn1(void* arg) { + PAPI_register_thread(); + struct ThreadState* st = (struct ThreadState*)arg; int EventSet = PAPI_NULL; int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } + if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } rc = PAPI_add_named_event(EventSet, g_event); if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } + if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } rc = PAPI_start(EventSet); st->start_rc = rc; if (rc == PAPI_OK) { - atomic_store_explicit(&t1_started, true, memory_order_release); - long long v=0; (void)PAPI_read(EventSet, &v); - usleep(100000); // keep running long enough for thread2 to collide - (void)PAPI_stop(EventSet, &v); + /* Publish that t1 is actively running the event so t2 can attempt to collide. */ + atomic_store_explicit(&t1_started, true, memory_order_release); + long long v = 0; (void)PAPI_read(EventSet, &v); + usleep(100000); /* run long enough for thread 2 to attempt start */ + (void)PAPI_stop(EventSet, &v); } else { - // If thread 1 cannot start, we cannot conduct the test => PASS with WARNING + /* If t1 cannot start, the test cannot be executed cleanly: skip due to HW/resource limits. */ SKIP("Cannot start thread1 due to HW/resource limits"); } (void)PAPI_cleanup_eventset(EventSet); (void)PAPI_destroy_eventset(&EventSet); - PAPI_unregister_thread(); - return NULL; -} + PAPI_unregister_thread(); + return NULL; +} -static void* thread_fn2(void* arg) { - PAPI_register_thread(); - struct ThreadState* st = (struct ThreadState*)arg; +/** + * Thread 2: + * - Waits until t1 is running, then attempts to start the same event. + * Expected: PAPI_start fails with PAPI_ECNFLCT (resource conflict). + */ +static void* thread_fn2(void* arg) { + PAPI_register_thread(); + struct ThreadState* st = (struct ThreadState*)arg; int EventSet = PAPI_NULL; int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } + if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } rc = PAPI_add_named_event(EventSet, g_event); if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } + if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; (void)PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } - // Wait until thread1 is actually running the event - while (!atomic_load_explicit(&t1_started, memory_order_acquire)) { /* spin */ } + /* Busy-wait until t1 has started the event (adequate for a short test). */ + while (!atomic_load_explicit(&t1_started, memory_order_acquire)) { /* spin */ } rc = PAPI_start(EventSet); st->start_rc = rc; @@ -79,43 +99,53 @@ static void* thread_fn2(void* arg) { NOTE("t2 start expected fail: %s", PAPI_strerror(rc)); } else { NOTE("t2 start unexpectedly succeeded"); - long long v=0; (void)PAPI_stop(EventSet, &v); + long long v = 0; (void)PAPI_stop(EventSet, &v); } (void)PAPI_cleanup_eventset(EventSet); (void)PAPI_destroy_eventset(&EventSet); - PAPI_unregister_thread(); - return NULL; -} - -int main(int argc, char** argv) { - // Unbuffer stdout so the final status line always shows promptly - setvbuf(stdout, NULL, _IONBF, 0); - - harness_accept_tests_quiet(&argc, argv); - HarnessOpts opts = parse_harness_cli(argc, argv); - // Optional override of the event: ./amdsmi_ctx_conflict "" + PAPI_unregister_thread(); + return NULL; +} + +/** + * Program entry: + * - Parses harness options and optional event override. + * - Ensures PAPI_AMDSMI_ROOT is set and PAPI is initialized for threading. + * - Runs the two-thread contention test and evaluates pass/fail: + * PASS => t1 start == PAPI_OK and t2 start == PAPI_ECNFLCT + * FAIL => any other combination. + */ +int main(int argc, char** argv) { + /* Unbuffer stdout so the final status line always shows promptly. */ + setvbuf(stdout, NULL, _IONBF, 0); + + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); + + /* Optional override of the event: ./amdsmi_ctx_conflict "" */ if (argc > 1 && strncmp(argv[1], "--", 2) != 0) g_event = argv[1]; - const char* root = getenv("PAPI_AMDSMI_ROOT"); + const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); int rc = PAPI_library_init(PAPI_VER_CURRENT); - if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } - - if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } - - atomic_store_explicit(&t1_started, false, memory_order_relaxed); - - struct ThreadState s1; - struct ThreadState s2; - s1.start_rc = PAPI_OK; - s2.start_rc = PAPI_OK; - pthread_t th1, th2; - pthread_create(&th1, NULL, thread_fn1, &s1); - pthread_create(&th2, NULL, thread_fn2, &s2); - pthread_join(th1, NULL); - pthread_join(th2, NULL); + if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } + + if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } + + atomic_store_explicit(&t1_started, false, memory_order_relaxed); + + struct ThreadState s1; + struct ThreadState s2; + s1.start_rc = PAPI_OK; + s2.start_rc = PAPI_OK; + + pthread_t th1, th2; + pthread_create(&th1, NULL, thread_fn1, &s1); + pthread_create(&th2, NULL, thread_fn2, &s2); + pthread_join(th1, NULL); + pthread_join(th2, NULL); if (opts.print) { printf("event: %s\n", g_event); @@ -123,7 +153,7 @@ int main(int argc, char** argv) { printf("t2 start rc: %d (%s)\n", s2.start_rc, PAPI_strerror(s2.start_rc)); } - // PASS when expected contention occurred; else FAIL. + /* PASS when expected contention occurred; else FAIL. */ int final_rc = (s1.start_rc == PAPI_OK && s2.start_rc == PAPI_ECNFLCT) ? 0 : 1; if (final_rc != 0) NOTE("Unexpected results (wanted t1 OK, t2 PAPI_ECNFLCT)."); diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c index 4d6465316..3337ea77d 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c @@ -1,31 +1,45 @@ /** * @file amdsmi_energy_monotonic.c - * @author Dong Jun Woun + * @author Dong Jun Woun * djwoun@gmail.com + * @brief Verifies that the AMD SMI energy counter exposed via PAPI increases + * monotonically by sampling twice about one second apart. * + * @details This small harnessed test: + * 1) Ensures PAPI + AMD-SMI are available (via PAPI_AMDSMI_ROOT). + * 2) Adds the "amd_smi:::energy_consumed:device=0" event to an event set. + * 3) Starts counting, reads once, then polls for up to ~1s for an increase. + * 4) Reports PASS if the second sample is greater than the first. + * + * The NOTE/SKIP macros come from the project test harness. */ -#include "test_harness.h" - -#include "papi.h" -#include -#include -#include + +#include "test_harness.h" +#include "papi.h" + +#include +#include +#include int main(int argc, char **argv) { + // Parse common test harness options (quiet/print/exit codes, etc.). harness_accept_tests_quiet(&argc, argv); - HarnessOpts opts = parse_harness_cli(argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); - const char* root = getenv("PAPI_AMDSMI_ROOT"); + // Ensure the AMD-SMI PAPI component is configured. + const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) { SKIP("PAPI_AMDSMI_ROOT not set"); } + // Initialize the PAPI library. int ret = PAPI_library_init(PAPI_VER_CURRENT); if (ret != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); return eval_result(opts, 1); } + // Create an empty event set and add the AMD-SMI energy counter for device 0. int EventSet = PAPI_NULL; ret = PAPI_create_eventset(&EventSet); if (ret != PAPI_OK) { @@ -42,6 +56,7 @@ int main(int argc, char **argv) { return eval_result(opts, 1); } + // Begin counting. ret = PAPI_start(EventSet); if (ret != PAPI_OK) { NOTE("PAPI_start: %s", PAPI_strerror(ret)); @@ -49,36 +64,43 @@ int main(int argc, char **argv) { } long long v1 = 0, v2 = 0; + + // First sample. ret = PAPI_read(EventSet, &v1); if (ret != PAPI_OK) { NOTE("PAPI_read(1): %s", PAPI_strerror(ret)); - long long dummy=0; PAPI_stop(EventSet, &dummy); + long long dummy = 0; PAPI_stop(EventSet, &dummy); return eval_result(opts, 1); } - // Try up to 1 second for the energy counter to advance + // Poll for up to ~1 second for the energy counter to advance. for (int i = 0; i < 10; ++i) { - usleep(100000); + usleep(100000); // 100 ms ret = PAPI_read(EventSet, &v2); if (ret != PAPI_OK) { NOTE("PAPI_read(2): %s", PAPI_strerror(ret)); - long long dummy=0; PAPI_stop(EventSet, &dummy); + long long dummy = 0; PAPI_stop(EventSet, &dummy); return eval_result(opts, 1); } - if (v2 > v1) break; + if (v2 > v1) break; // monotonic increase observed } - long long dummy=0; + // Clean up PAPI resources. + long long dummy = 0; PAPI_stop(EventSet, &dummy); PAPI_cleanup_eventset(EventSet); PAPI_destroy_eventset(&EventSet); + PAPI_shutdown(); if (opts.print) { - printf("energy_consumed: first=%lld second=%lld delta=%lld\n", v1, v2, (v2 - v1)); + printf("energy_consumed: first=%lld second=%lld delta=%lld\n", + v1, v2, (v2 - v1)); } + // Fail if we never observed an increase. int failed = (v2 <= v1) ? 1 : 0; if (failed) NOTE("Energy did not increase"); + return eval_result(opts, failed); } diff --git a/src/components/amd_smi/tests/amdsmi_gemm.c b/src/components/amd_smi/tests/amdsmi_gemm.c index 1ef1e7440..aaeee9196 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.c +++ b/src/components/amd_smi/tests/amdsmi_gemm.c @@ -1,19 +1,29 @@ /** * @file amdsmi_gemm.c - * @author Dong Jun Woun + * @author Dong Jun Woun * djwoun@gmail.com + * @brief Launches a large HIP DGEMM workload (on device 1) while sampling a + * small set of AMD SMI counters via PAPI (temperature, VRAM, power). * + * The monitor thread polls the PAPI EventSet ~3 times per second while the kernel runs. + * This is intended for simple integration/soak testing rather than performance tuning. + * + * NOTE: The sampled AMD SMI events below target device=0, while the HIP workload + * runs on device 1. If you want the metrics for the same device that runs + * the kernel, change `device=0` to `device=1` in the event strings. */ -#include "test_harness.h" - -#include "papi.h" -#include "hip/hip_runtime.h" -#include -#include -#include -#include -#include +#include "test_harness.h" + +#include "papi.h" +#include "hip/hip_runtime.h" +#include +#include +#include +#include +#include + +/* ----------------------------- Configuration ----------------------------- */ #define M_DIM 7296 #define K_DIM 14592 @@ -22,10 +32,13 @@ #define NUM_STREAMS 1 #define ITERATIONS_PER_STREAM 1 +/* --------------------------- HIP error helpers --------------------------- */ + #define HIP_CHECK(cmd) do { \ hipError_t e = cmd; \ if (e != hipSuccess) { \ - fprintf(stderr, "Failed: HIP error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + fprintf(stderr, "Failed: HIP error %s:%d '%s' (code: %d)\n", \ + __FILE__, __LINE__, hipGetErrorString(e), e); \ return 1; \ } \ } while(0) @@ -33,10 +46,18 @@ #define HIP_CHECK_CLEANUP(cmd) do { \ hipError_t e = cmd; \ if (e != hipSuccess) { \ - fprintf(stderr, "Warning: HIP cleanup error %s:%d '%s' (code: %d)\n", __FILE__, __LINE__, hipGetErrorString(e), e); \ + fprintf(stderr, "Warning: HIP cleanup error %s:%d '%s' (code: %d)\n", \ + __FILE__, __LINE__, hipGetErrorString(e), e); \ } \ } while(0) +/* --------------------------- Monitoring thread --------------------------- */ + +/** + * @brief Background poller for PAPI EventSet values. + * + * If params->print is 1, it writes one line per sample to stdout with a timestamp. + */ static volatile int stop_monitor = 0; struct monitor_params { @@ -69,11 +90,17 @@ static void *monitor_events(void *args) { fflush(stdout); } - usleep(300000); + usleep(300000); // ~3 Hz } return NULL; } +/* ------------------------------- Workload -------------------------------- */ + +/** + * @brief Naive DGEMM: C = alpha * A * B + beta * C + * A: MxK, B: KxN, C: MxN (row-major) + */ __global__ void dgemm_kernel(const double *A, const double *B, double *C, int M, int N, int K, double alpha, double beta) { int row = blockIdx.y * blockDim.y + threadIdx.y; @@ -88,21 +115,23 @@ __global__ void dgemm_kernel(const double *A, const double *B, double *C, } } -static int real_main(const HarnessOpts *opts) { - // Graceful AMD SMI availability check (library path) +/* ------------------------------- Test body -------------------------------- */ + +static int real_main(const HarnessOpts *opts) { + /* Gracefully skip if the PAPI AMD SMI component isn't available. */ const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) { SKIP("PAPI_AMDSMI_ROOT not set"); } - // Initialize PAPI + /* Initialize PAPI */ int statusFlag = PAPI_library_init(PAPI_VER_CURRENT); if (statusFlag != PAPI_VER_CURRENT) { fprintf(stderr, "PAPI shared library version error: %s\n", PAPI_strerror(statusFlag)); return 1; } - // Create EventSet + /* Create EventSet */ int EventSet = PAPI_NULL; statusFlag = PAPI_create_eventset(&EventSet); if (statusFlag != PAPI_OK) { @@ -110,56 +139,58 @@ static int real_main(const HarnessOpts *opts) { return 1; } - // Required events (same as your original) + /* AMD SMI events to sample. + * NOTE: These target device=0. See the NOTE in the file header regarding device selection. + */ const char *event1 = "amd_smi:::temp_current:device=0:sensor=1"; const char *event2 = "amd_smi:::temp_current:device=0:sensor=2"; const char *event3 = "amd_smi:::mem_total_VRAM:device=0"; const char *event4 = "amd_smi:::mem_usage_VRAM:device=0"; const char *event5 = "amd_smi:::power_average:device=0"; - // Add events; treat ENOEVNT as SKIP so the test suite stays portable + /* Add events; treat ENOEVNT as SKIP so the test suite stays portable. */ statusFlag = PAPI_add_named_event(EventSet, event1); - if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: mem_total_VRAM:device=0"); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=1"); if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event1, PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_add_named_event(EventSet, event2); - if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=1"); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=2"); if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event2, PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_add_named_event(EventSet, event3); - if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: temp_current:device=0:sensor=2"); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: mem_total_VRAM:device=0"); if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event3, PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_add_named_event(EventSet, event4); - if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: clk_freq_current:device=0"); + if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: mem_usage_VRAM:device=0"); if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event4, PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_add_named_event(EventSet, event5); if (statusFlag == PAPI_ENOEVNT) SKIP("Event not supported: power_average:device=0"); if (statusFlag != PAPI_OK) { fprintf(stderr, "add %s: %s\n", event5, PAPI_strerror(statusFlag)); return 1; } - // HIP runtime preflight so HIP_CHECK won't hard-exit + /* HIP runtime preflight so HIP_CHECK won't hard-exit. */ int device_count = 0; if (hipGetDeviceCount(&device_count) != hipSuccess || device_count <= 1) { SKIP("HIP device 1 not available"); } - // Set device 1 and show properties (only when output is enabled) + /* Use device 1 and (optionally) print basic properties. */ HIP_CHECK(hipSetDevice(1)); hipDeviceProp_t deviceProp; HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); - if (opts->print) { - printf("Device Name: %s\n", deviceProp.name); - printf("Compute Units: %d\n", deviceProp.multiProcessorCount); - printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); - } + if (opts->print) { + printf("Device Name: %s\n", deviceProp.name); + printf("Compute Units: %d\n", deviceProp.multiProcessorCount); + printf("Max Threads Per Block: %d\n", deviceProp.maxThreadsPerBlock); + } - // Host buffers (pinned) + /* Host buffers (pinned) */ size_t size_A = ((size_t)M_DIM * K_DIM * sizeof(double)); size_t size_B = ((size_t)K_DIM * N_DIM * sizeof(double)); size_t size_C = ((size_t)M_DIM * N_DIM * sizeof(double)); - double *h_A = NULL, *h_B = NULL, *h_C = NULL; + double *h_A = NULL, *h_B = NULL, *h_C = NULL; HIP_CHECK(hipHostMalloc(&h_A, size_A, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_B, size_B, hipHostMallocDefault)); HIP_CHECK(hipHostMalloc(&h_C, size_C, hipHostMallocDefault)); @@ -175,7 +206,7 @@ static int real_main(const HarnessOpts *opts) { for (int i = 0; i < K_DIM * N_DIM; i++) h_B[i] = (double)(i % 100); for (int i = 0; i < M_DIM * N_DIM; i++) h_C[i] = 0.0; - // Device buffers + /* Device buffers per stream */ double *d_A[NUM_STREAMS], *d_B[NUM_STREAMS], *d_C[NUM_STREAMS]; for (int s = 0; s < NUM_STREAMS; s++) { HIP_CHECK(hipMalloc((void**)&d_A[s], size_A)); @@ -190,26 +221,33 @@ static int real_main(const HarnessOpts *opts) { HIP_CHECK(hipEventCreate(&events[s])); } + /* H2D copies */ for (int s = 0; s < NUM_STREAMS; s++) { HIP_CHECK(hipMemcpyAsync(d_A[s], h_A, size_A, hipMemcpyHostToDevice, streams[s])); HIP_CHECK(hipMemcpyAsync(d_B[s], h_B, size_B, hipMemcpyHostToDevice, streams[s])); HIP_CHECK(hipMemcpyAsync(d_C[s], h_C, size_C, hipMemcpyHostToDevice, streams[s])); } - // Start PAPI + /* Start counters */ statusFlag = PAPI_start(EventSet); - if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_start: %s\n", PAPI_strerror(statusFlag)); return 1; } + if (statusFlag != PAPI_OK) { + fprintf(stderr, "PAPI_start: %s\n", PAPI_strerror(statusFlag)); + return 1; + } - // Launch monitor thread (prints unless suppressed) + /* Launch monitor thread (prints unless suppressed) */ pthread_t monitor_thread; struct monitor_params params; params.EventSet = EventSet; - params.print = opts->print ? 1 : 0; + params.print = opts->print ? 1 : 0; gettimeofday(¶ms.start_time, NULL); statusFlag = pthread_create(&monitor_thread, NULL, monitor_events, ¶ms); - if (statusFlag != 0) { fprintf(stderr, "pthread_create failed\n"); return 1; } + if (statusFlag != 0) { + fprintf(stderr, "pthread_create failed\n"); + return 1; + } - // Ensure copies are done + /* Ensure copies are done */ for (int s = 0; s < NUM_STREAMS; s++) HIP_CHECK(hipStreamSynchronize(streams[s])); double alpha = 0.75; @@ -226,14 +264,14 @@ static int real_main(const HarnessOpts *opts) { M_DIM, N_DIM, K_DIM, alpha, beta); HIP_CHECK(hipEventRecord(events[s], streams[s])); HIP_CHECK(hipStreamSynchronize(streams[s])); - usleep(3000000); + usleep(3000000); // Allow the monitor to capture a few samples } } + /* Stop the monitor and clean up */ stop_monitor = 1; pthread_join(monitor_thread, NULL); - // Cleanup for (int s = 0; s < NUM_STREAMS; s++) { HIP_CHECK_CLEANUP(hipEventDestroy(events[s])); HIP_CHECK_CLEANUP(hipStreamDestroy(streams[s])); @@ -252,15 +290,17 @@ static int real_main(const HarnessOpts *opts) { if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_cleanup_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } statusFlag = PAPI_destroy_eventset(&EventSet); if (statusFlag != PAPI_OK) { fprintf(stderr, "PAPI_destroy_eventset: %s\n", PAPI_strerror(statusFlag)); return 1; } - - HIP_CHECK_CLEANUP(hipDeviceReset()); // optional but reduces “still reachable” from the HIP runtime - PAPI_shutdown(); // triggers component cleanup + AMD SMI shutdown + + HIP_CHECK_CLEANUP(hipDeviceReset()); // Optional; reduces "still reachable" reports from HIP in leak checkers + PAPI_shutdown(); // Triggers component cleanup and AMD SMI shutdown return 0; } -int main(int argc, char *argv[]) { - harness_accept_tests_quiet(&argc, argv); - HarnessOpts opts = parse_harness_cli(argc, argv); - int rc = real_main(&opts); - return eval_result(opts, rc); -} +/* --------------------------- Test harness glue --------------------------- */ + +int main(int argc, char *argv[]) { + harness_accept_tests_quiet(&argc, argv); + HarnessOpts opts = parse_harness_cli(argc, argv); + int rc = real_main(&opts); + return eval_result(opts, rc); +} diff --git a/src/components/amd_smi/tests/amdsmi_hello.c b/src/components/amd_smi/tests/amdsmi_hello.c index 735140db1..107e1fe15 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.c +++ b/src/components/amd_smi/tests/amdsmi_hello.c @@ -1,9 +1,13 @@ /** * @file amdsmi_hello.c - * @author Dong Jun Woun - * djwoun@gmail.com - * + * @author Dong Jun Woun + * @brief Minimal example that reads a single AMD-SMI event via PAPI's AMD-SMI component. + * @details Selects the event from argv[1] if provided; otherwise defaults to + * "amd_smi:::temp_current:device=0:sensor=1". Requires PAPI_AMDSMI_ROOT + * so the component can dlopen the AMD-SMI library. Uses the test harness + * (test_harness.h) for consistent output and skip handling. */ + #include "test_harness.h" #include "papi.h" @@ -13,30 +17,32 @@ #include int main(int argc, char** argv) { - // Unbuffer stdout so the final status line always shows. + // Disable stdout buffering so the harness status line appears immediately. setvbuf(stdout, NULL, _IONBF, 0); harness_accept_tests_quiet(&argc, argv); HarnessOpts opts = parse_harness_cli(argc, argv); - // Default event (can override via argv[1], e.g. "./amdsmi_hello amd_smi:::power_average:device=0") + // Event to measure (override with argv[1], e.g.: + // ./amdsmi_hello amd_smi:::power_average:device=0 + // ) const char* ev = "amd_smi:::temp_current:device=0:sensor=1"; if (argc > 1 && strncmp(argv[1], "--", 2) != 0) ev = argv[1]; - // Require AMD SMI root so the component can dlopen the library + // Check AMD-SMI root so the component can dlopen the library. const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) { SKIP("PAPI_AMDSMI_ROOT not set"); } - // Init PAPI + // Initialize PAPI. int rc = PAPI_library_init(PAPI_VER_CURRENT); if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); return eval_result(opts, 1); } - // Create an EventSet + // Create an EventSet. int EventSet = PAPI_NULL; rc = PAPI_create_eventset(&EventSet); if (rc != PAPI_OK) { @@ -44,7 +50,7 @@ int main(int argc, char** argv) { return eval_result(opts, 1); } - // Add event + // Add the selected event. rc = PAPI_add_named_event(EventSet, ev); if (rc == PAPI_ENOEVNT || rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { NOTE("Event unavailable or HW/resource-limited: %s (%s)", ev, PAPI_strerror(rc)); @@ -55,7 +61,7 @@ int main(int argc, char** argv) { return eval_result(opts, 1); } - // Start | short wait | stop/read + // Start counters -> short wait -> stop/read. rc = PAPI_start(EventSet); if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { NOTE("Cannot start counters: %s", PAPI_strerror(rc)); @@ -66,7 +72,8 @@ int main(int argc, char** argv) { return eval_result(opts, 1); } - usleep(100000); // ~100ms + usleep(100000); // ~100 ms sampling interval for this simple demo. + long long val = 0; rc = PAPI_stop(EventSet, &val); if (rc != PAPI_OK) { @@ -79,8 +86,10 @@ int main(int argc, char** argv) { (void)PAPI_destroy_eventset(&EventSet); PAPI_shutdown(); + // If --print was requested via the harness, emit the event name and value. if (opts.print) { printf("Event: %s\nValue: %lld\n", ev, val); } + return eval_result(opts, 0); } diff --git a/src/components/amd_smi/tests/test_harness.h b/src/components/amd_smi/tests/test_harness.h index 652786a82..da16e6f1f 100644 --- a/src/components/amd_smi/tests/test_harness.h +++ b/src/components/amd_smi/tests/test_harness.h @@ -2,7 +2,9 @@ * @file test_harness.h * @author Dong Jun Woun * djwoun@gmail.com - * + * @brief Minimal test-harness utilities for PAPI AMD-SMI tests: + * CLI parsing, quiet-mode handling, warnings accounting, + * and pass/fail reporting. */ #ifndef TEST_HARNESS_H @@ -17,32 +19,41 @@ #include #include -#include "papi.h" // for PAPI_* error codes used by helper macros +#include "papi.h" /* for PAPI_* error codes used by helper macros */ +/** Options controlling harness behavior. */ typedef struct HarnessOpts { - bool print; - bool expect_fail; - int had_warning; // set to 1 if we hit ENOEVNT/ECNFLCT or any warning + bool print; /**< Whether to print normal output. */ + bool expect_fail; /**< If true, a nonzero return is considered PASS. */ + int had_warning; /**< Set to 1 if ENOEVNT/ECNFLCT/EPERM or any warning occurred. */ } HarnessOpts; +/** Global harness state used by macros. */ static HarnessOpts harness_opts; -// Accept the positional token "TESTS_QUIET" (or "QUIET"): -// - remove it from argv so it can't be mistaken for a positional arg, -// - enable quiet mode via env for the harness to pick up. +/** + * @brief Accept and normalize the positional quiet token. + * + * Recognizes the literal tokens "TESTS_QUIET" or "QUIET" on the command line, + * removes them from @p argv so they aren't misinterpreted as positional args, + * and sets TESTS_QUIET=1. If the TESTS_QUIET environment variable is set to a + * non-literal value, that value is filtered out of @p argv and the variable is + * unset so tests do not treat it as an argument. + * + * @param[in,out] argc Argument count. + * @param[in,out] argv Argument vector. + */ static inline void harness_accept_tests_quiet(int *argc, char **argv) { - /* The PAPI test harness invokes each test with a single - positional token holding the value of the TESTS_QUIET environment - variable. Only the literal string "TESTS_QUIET" should trigger quiet - mode. If any other value is present we drop it from argv and ignore - the environment variable so tests don't misinterpret it as a positional - argument. */ + /* The PAPI test harness invokes each test with a single positional token + holding the value of the TESTS_QUIET environment variable. Only the + literal string "TESTS_QUIET" should trigger quiet mode. Any other value + is dropped from argv and the environment variable is ignored. */ char *badarg = NULL; const char *tq_env = getenv("TESTS_QUIET"); if (tq_env && strcmp(tq_env, "TESTS_QUIET") != 0) { - badarg = strdup(tq_env); // remember stray value to filter from argv - unsetenv("TESTS_QUIET"); // ignore non‑literal TESTS_QUIET + badarg = strdup(tq_env); /* remember stray value to filter from argv */ + unsetenv("TESTS_QUIET"); /* ignore non-literal TESTS_QUIET */ } int w = 1; @@ -65,11 +76,22 @@ static inline void harness_accept_tests_quiet(int *argc, char **argv) { if (badarg) free(badarg); } -// Parse CLI +/** + * @brief Parse common harness CLI/environment options. + * + * Defaults to printing unless TESTS_QUIET is present. Mirrors src/run_tests.sh + * behavior where invoking with -v unsets TESTS_QUIET (tests should emit output). + * + * Also sets/clears PAPI_AMDSMI_TEST_QUIET so individual tests can key off it. + * + * @param argc Argument count. + * @param argv Argument vector. + * @return Populated HarnessOpts (also stored in @ref harness_opts). + */ static inline HarnessOpts parse_harness_cli(int argc, char **argv) { - /* Default to printing unless the TESTS_QUIET token is - present. This mirrors src/run_tests.sh where invoking with -v - unsets TESTS_QUIET, signalling that tests should emit output. */ + /* Default to printing unless the TESTS_QUIET token is present. + This mirrors src/run_tests.sh where invoking with -v unsets + TESTS_QUIET, signalling that tests should emit output. */ harness_opts.print = true; harness_opts.expect_fail = false; harness_opts.had_warning = 0; @@ -81,7 +103,7 @@ static inline HarnessOpts parse_harness_cli(int argc, char **argv) { } } - /* Suppress output only if TESTS_QUIET is explicitly set. When + /* Suppress output only if TESTS_QUIET is explicitly set. When run_tests.sh is invoked without -v it passes the literal token "TESTS_QUIET", which harness_accept_tests_quiet converts into this environment variable. */ @@ -97,7 +119,18 @@ static inline HarnessOpts parse_harness_cli(int argc, char **argv) { return harness_opts; } -// Final status line +/** + * @brief Evaluate the test result and print a final status line. + * + * A zero @p result_code is PASS unless @ref HarnessOpts::expect_fail is true, + * in which case nonzero indicates PASS. If any warnings were recorded, output + * "PASSED with WARNING". + * + * @param opts The harness options in effect (warning flag may be + * updated from the global state). + * @param result_code The test's return code. + * @return 0 on PASS (per @p opts), 1 on FAIL. + */ static inline int eval_result(HarnessOpts opts, int result_code) { if (harness_opts.had_warning) { opts.had_warning = harness_opts.had_warning; @@ -108,31 +141,43 @@ static inline int eval_result(HarnessOpts opts, int result_code) { if (opts.had_warning) printf("PASSED with WARNING\n"); else printf("PASSED\n"); } else { - printf("FAILED!!!\n"); + printf("FAILED!!!\n"); } return passed ? 0 : 1; } -// Print note only when output is enabled +/* ---------- Output helpers ---------- */ + +/** Print a note only when normal output is enabled. */ #define NOTE(...) do { \ if (harness_opts.print) { fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ } while (0) -// Mark a warning (does not exit) +/** Mark a warning (does not exit). */ #define WARNF(...) do { \ harness_opts.had_warning = 1; \ if (harness_opts.print) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ } while (0) -// === Cant conduct helpers === -// Exit immediately as PASSED with WARNING (portable success) +/* ---------- Cannot-conduct helpers ---------- */ +/* Treat certain hardware/resource limitations as success-with-warning. */ + +/** + * @brief Exit immediately as "PASSED with WARNING". + * Prints an optional formatted warning message when output is enabled. + */ #define EXIT_WARNING(...) do { \ harness_opts.had_warning = 1; \ if (harness_opts.print && *#__VA_ARGS__) { fprintf(stdout, "WARNING: "); fprintf(stdout, __VA_ARGS__); fprintf(stdout, "\n"); } \ printf("PASSED with WARNING\n"); fflush(stdout); exit(0); \ } while (0) -// If add fails due to unsupported or HW/resource limits end as PASSED with WARNING +/** + * @brief If adding the event set fails due to unsupported or hardware/resource + * limits, exit as "PASSED with WARNING". + * + * Recognizes PAPI_ENOEVNT, PAPI_ECNFLCT, and PAPI_EPERM. + */ #define EXIT_WARNING_ON_ADD(rc, evname) do { \ if ((rc) == PAPI_ENOEVNT || (rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ EXIT_WARNING("Event unavailable (%s): %s", \ @@ -140,14 +185,19 @@ static inline int eval_result(HarnessOpts opts, int result_code) { } \ } while (0) -// If start fails due to HW/resource limits end as PASSED with WARNING +/** + * @brief If starting counters fails due to hardware/resource limits, + * exit as "PASSED with WARNING". + * + * Recognizes PAPI_ECNFLCT and PAPI_EPERM. + */ #define EXIT_WARNING_ON_START(rc, ctx) do { \ if ((rc) == PAPI_ECNFLCT || (rc) == PAPI_EPERM) { \ EXIT_WARNING("Cannot start counters (%s): %s", (ctx), PAPI_strerror(rc)); \ } \ } while (0) -// Keep SKIP as a cant conduct success-with-warning +/** Keep SKIP as a cannot-conduct success-with-warning. */ #define SKIP(reason) EXIT_WARNING("%s", (reason)) -#endif // TEST_HARNESS_H +#endif /* TEST_HARNESS_H */ From 61718af17fe3de24859710c752b63d676cdffcd2 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 12:37:51 -0700 Subject: [PATCH 144/147] read me update --- src/components/amd_smi/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/README.md b/src/components/amd_smi/README.md index ce4cd7cab..a0e035924 100644 --- a/src/components/amd_smi/README.md +++ b/src/components/amd_smi/README.md @@ -3,7 +3,7 @@ The **AMD_SMI** (AMD System Management Interface) component exposes hardware management counters (and selected controls) for AMD GPUs — e.g., power usage, temperatures, clocks, PCIe link metrics, VRAM information, and RAS/ECC status — -by querying the AMD SMI library at runtime (ROCm ≥ 6.4.0). +by querying the AMD SMI library at runtime (ROCm ≥ 6.3.4). - [Environment Variables](#environment-variables) - [Enabling the AMD_SMI Component](#enabling-the-amd_smi-component) From 5ec461bb71daeedf288d2c0d7cda6ea82251a3e3 Mon Sep 17 00:00:00 2001 From: djwoun <65102751+djwoun@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:39:13 -0400 Subject: [PATCH 145/147] Normalize AMD SMI return code variable names --- src/components/amd_smi/amds.c | 20 +-- src/components/amd_smi/amds_accessors.c | 6 +- src/components/amd_smi/tests/amdsmi_basics.c | 158 +++++++++--------- .../amd_smi/tests/amdsmi_ctx_conflict.c | 80 ++++----- .../amd_smi/tests/amdsmi_energy_monotonic.c | 76 ++++----- src/components/amd_smi/tests/amdsmi_gemm.c | 6 +- src/components/amd_smi/tests/amdsmi_hello.c | 40 ++--- 7 files changed, 197 insertions(+), 189 deletions(-) diff --git a/src/components/amd_smi/amds.c b/src/components/amd_smi/amds.c index 086a97710..de67d69e4 100644 --- a/src/components/amd_smi/amds.c +++ b/src/components/amd_smi/amds.c @@ -121,10 +121,10 @@ static int open_counter(native_event_t *event) { counter_priv_t *priv = (counter_priv_t *)papi_calloc(1, sizeof(counter_priv_t)); if (!priv) return PAPI_ENOMEM; - amdsmi_status_t ret = amdsmi_gpu_create_counter_p( + amdsmi_status_t status = amdsmi_gpu_create_counter_p( device_handles[event->device], (amdsmi_event_type_t)event->variant, &priv->handle); - if (ret != AMDSMI_STATUS_SUCCESS) { + if (status != AMDSMI_STATUS_SUCCESS) { papi_free(priv); return PAPI_ENOSUPP; } @@ -148,18 +148,18 @@ static int start_counter(native_event_t *event) { if (!priv || !amdsmi_gpu_control_counter_p) return PAPI_ENOSUPP; priv->accum = 0; - amdsmi_status_t ret = amdsmi_gpu_control_counter_p( + amdsmi_status_t status = amdsmi_gpu_control_counter_p( priv->handle, AMDSMI_CNTR_CMD_START, NULL); - return (ret == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; + return (status == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; } static int stop_counter(native_event_t *event) { counter_priv_t *priv = (counter_priv_t *)event->priv; if (!priv || !amdsmi_gpu_control_counter_p) return PAPI_ENOSUPP; - amdsmi_status_t ret = + amdsmi_status_t status = amdsmi_gpu_control_counter_p(priv->handle, AMDSMI_CNTR_CMD_STOP, NULL); - return (ret == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; + return (status == AMDSMI_STATUS_SUCCESS) ? PAPI_OK : PAPI_ENOSUPP; } static int access_amdsmi_gpu_counter(int mode, void *arg) { @@ -3276,10 +3276,10 @@ static int init_event_table(void) { if (amdsmi_get_gpu_memory_partition_p) { char part[128] = {0}; uint32_t len = (uint32_t)sizeof(part); - amdsmi_status_t rc = + amdsmi_status_t status = amdsmi_get_gpu_memory_partition_p(device_handles[d], part, len); part[sizeof(part) - 1] = '\0'; // belt-and-suspenders NUL - if (rc == AMDSMI_STATUS_SUCCESS && part[0] != '\0') { + if (status == AMDSMI_STATUS_SUCCESS && part[0] != '\0') { CHECK_EVENT_IDX(idx); snprintf(name_buf, sizeof(name_buf), "memory_partition_hash:device=%d", d); snprintf(descr_buf, sizeof(descr_buf), "Device %d memory partition (hash)", d); @@ -3315,9 +3315,9 @@ static int init_event_table(void) { if (amdsmi_get_gpu_accelerator_partition_profile_p) { amdsmi_accelerator_partition_profile_t prof = {0}; uint32_t ids[AMDSMI_MAX_ACCELERATOR_PARTITIONS] = {0}; - amdsmi_status_t rc = + amdsmi_status_t status = amdsmi_get_gpu_accelerator_partition_profile_p(device_handles[d], &prof, ids); - if (rc == AMDSMI_STATUS_SUCCESS && + if (status == AMDSMI_STATUS_SUCCESS && prof.num_partitions > 0 && prof.num_partitions <= AMDSMI_MAX_ACCELERATOR_PARTITIONS) { CHECK_EVENT_IDX(idx); diff --git a/src/components/amd_smi/amds_accessors.c b/src/components/amd_smi/amds_accessors.c index 629ffa52f..cbd86e848 100644 --- a/src/components/amd_smi/amds_accessors.c +++ b/src/components/amd_smi/amds_accessors.c @@ -1701,9 +1701,9 @@ int access_amdsmi_cpu_prochot_status(int mode, void *arg) { if (mode != PAPI_MODE_READ) return PAPI_ENOSUPP; uint32_t status = 0; - amdsmi_status_t ret = amdsmi_get_cpu_prochot_status_p( + amdsmi_status_t smi_status = amdsmi_get_cpu_prochot_status_p( device_handles[event->device], &status); - if (ret != AMDSMI_STATUS_SUCCESS) + if (smi_status != AMDSMI_STATUS_SUCCESS) return PAPI_EMISC; event->value = status; return PAPI_OK; @@ -2359,7 +2359,7 @@ int access_amdsmi_vram_usage(int mode, void *arg) { return PAPI_OK; } - /* USED: keep using vram_usage for the “used” number */ + /* USED: keep using vram_usage for the “used” number */ if (!amdsmi_get_gpu_vram_usage_p) return PAPI_ENOSUPP; amdsmi_vram_usage_t u; diff --git a/src/components/amd_smi/tests/amdsmi_basics.c b/src/components/amd_smi/tests/amdsmi_basics.c index 07b9cb837..ada77b593 100644 --- a/src/components/amd_smi/tests/amdsmi_basics.c +++ b/src/components/amd_smi/tests/amdsmi_basics.c @@ -13,10 +13,11 @@ #include #include -// Return true if rc is a "warning, not failure" status for add/start/stop. -static inline bool is_warning_rc(int rc) { - return (rc == PAPI_ENOEVNT) || (rc == PAPI_ECNFLCT) || (rc == PAPI_EPERM); -} +// Return true if papi_errno is a "warning, not failure" status for add/start/stop. +static inline bool is_warning_papi_errno(int papi_errno) { + return (papi_errno == PAPI_ENOEVNT) || (papi_errno == PAPI_ECNFLCT) || + (papi_errno == PAPI_EPERM); +} int main(int argc, char *argv[]) { // Unbuffer stdout so the final status line shows promptly. @@ -26,11 +27,11 @@ int main(int argc, char *argv[]) { HarnessOpts opts = parse_harness_cli(argc, argv); // 1) Initialize PAPI. - int ret = PAPI_library_init(PAPI_VER_CURRENT); - if (ret != PAPI_VER_CURRENT) { - NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); - return eval_result(opts, 1); - } + int papi_errno = PAPI_library_init(PAPI_VER_CURRENT); + if (papi_errno != PAPI_VER_CURRENT) { + NOTE("PAPI_library_init failed: %s", PAPI_strerror(papi_errno)); + return eval_result(opts, 1); + } // 2) Locate the AMD-SMI component. int cid = -1; @@ -77,70 +78,75 @@ int main(int argc, char *argv[]) { NOTE("[%4d] Testing %s...", event_index, ev_name); // 4–7) Create a fresh EventSet, add the event, start, stop/read, print, cleanup. - int eventSet = PAPI_NULL; - ret = PAPI_create_eventset(&eventSet); - if (ret != PAPI_OK) { - // Hard failure to create an EventSet. - NOTE(" ? create_eventset failed: %s", PAPI_strerror(ret)); - ++failed; ++event_index; - continue; - } - - // Explicitly assign the component. - ret = PAPI_assign_eventset_component(eventSet, cid); - if (ret != PAPI_OK) { - NOTE(" ? assign_eventset_component failed: %s", PAPI_strerror(ret)); - (void)PAPI_destroy_eventset(&eventSet); - ++failed; ++event_index; - continue; - } - - ret = PAPI_add_event(eventSet, ev_code); - if (ret != PAPI_OK) { - if (is_warning_rc(ret)) { - WARNF("Could not add %-50s (%s)", ev_name, PAPI_strerror(ret)); - (void)PAPI_destroy_eventset(&eventSet); - ++warned; ++event_index; - } else { - NOTE(" ? Could not add %s (%s)", ev_name, PAPI_strerror(ret)); - (void)PAPI_destroy_eventset(&eventSet); - ++failed; ++event_index; - } - continue; - } - - long long value = 0; - ret = PAPI_start(eventSet); - if (ret != PAPI_OK) { - if (is_warning_rc(ret)) { - WARNF("start %-54s (%s)", ev_name, PAPI_strerror(ret)); - (void)PAPI_cleanup_eventset(eventSet); - (void)PAPI_destroy_eventset(&eventSet); - ++warned; ++event_index; - } else { - NOTE(" ? start failed for %s (%s)", ev_name, PAPI_strerror(ret)); - (void)PAPI_cleanup_eventset(eventSet); - (void)PAPI_destroy_eventset(&eventSet); - ++failed; ++event_index; - } - continue; - } - - // Read once via stop(). - ret = PAPI_stop(eventSet, &value); - if (ret != PAPI_OK) { - if (is_warning_rc(ret)) { - WARNF("stop %-54s (%s)", ev_name, PAPI_strerror(ret)); - ++warned; - } else { - NOTE(" ? stop failed for %s (%s)", ev_name, PAPI_strerror(ret)); - ++failed; - } - (void)PAPI_cleanup_eventset(eventSet); - (void)PAPI_destroy_eventset(&eventSet); - ++event_index; - continue; - } + int eventSet = PAPI_NULL; + papi_errno = PAPI_create_eventset(&eventSet); + if (papi_errno != PAPI_OK) { + // Hard failure to create an EventSet. + NOTE(" ? create_eventset failed: %s", PAPI_strerror(papi_errno)); + ++failed; ++event_index; + continue; + } + + // Explicitly assign the component. + papi_errno = PAPI_assign_eventset_component(eventSet, cid); + if (papi_errno != PAPI_OK) { + NOTE(" ? assign_eventset_component failed: %s", + PAPI_strerror(papi_errno)); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + continue; + } + + papi_errno = PAPI_add_event(eventSet, ev_code); + if (papi_errno != PAPI_OK) { + if (is_warning_papi_errno(papi_errno)) { + WARNF("Could not add %-50s (%s)", ev_name, + PAPI_strerror(papi_errno)); + (void)PAPI_destroy_eventset(&eventSet); + ++warned; ++event_index; + } else { + NOTE(" ? Could not add %s (%s)", ev_name, + PAPI_strerror(papi_errno)); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + } + continue; + } + + long long value = 0; + papi_errno = PAPI_start(eventSet); + if (papi_errno != PAPI_OK) { + if (is_warning_papi_errno(papi_errno)) { + WARNF("start %-54s (%s)", ev_name, PAPI_strerror(papi_errno)); + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++warned; ++event_index; + } else { + NOTE(" ? start failed for %s (%s)", ev_name, + PAPI_strerror(papi_errno)); + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++failed; ++event_index; + } + continue; + } + + // Read once via stop(). + papi_errno = PAPI_stop(eventSet, &value); + if (papi_errno != PAPI_OK) { + if (is_warning_papi_errno(papi_errno)) { + WARNF("stop %-54s (%s)", ev_name, PAPI_strerror(papi_errno)); + ++warned; + } else { + NOTE(" ? stop failed for %s (%s)", ev_name, + PAPI_strerror(papi_errno)); + ++failed; + } + (void)PAPI_cleanup_eventset(eventSet); + (void)PAPI_destroy_eventset(&eventSet); + ++event_index; + continue; + } // Success path. ++passed; @@ -162,6 +168,6 @@ int main(int argc, char *argv[]) { PAPI_shutdown(); // Final: fail only if we had real failures; warnings/skips are allowed. - int rc = (failed == 0) ? 0 : 1; - return eval_result(opts, rc); -} + int exit_status = (failed == 0) ? 0 : 1; + return eval_result(opts, exit_status); +} diff --git a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c index 16a41288d..2e72b5c51 100644 --- a/src/components/amd_smi/tests/amdsmi_ctx_conflict.c +++ b/src/components/amd_smi/tests/amdsmi_ctx_conflict.c @@ -25,9 +25,9 @@ /** PAPI thread-id callback. */ static unsigned long get_tid(void) { return (unsigned long)pthread_self(); } -struct ThreadState { - int start_rc; -}; +struct ThreadState { + int start_papi_errno; +}; static _Atomic bool t1_started = false; @@ -44,18 +44,18 @@ static void* thread_fn1(void* arg) { PAPI_register_thread(); struct ThreadState* st = (struct ThreadState*)arg; - int EventSet = PAPI_NULL; - int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } - - rc = PAPI_add_named_event(EventSet, g_event); - if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } - if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } - - rc = PAPI_start(EventSet); - st->start_rc = rc; - if (rc == PAPI_OK) { + int EventSet = PAPI_NULL; + int papi_errno = PAPI_create_eventset(&EventSet); + if (papi_errno != PAPI_OK) { NOTE("t1 create: %s", PAPI_strerror(papi_errno)); st->start_papi_errno = papi_errno; PAPI_unregister_thread(); return NULL; } + + papi_errno = PAPI_add_named_event(EventSet, g_event); + if (papi_errno == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } + if (papi_errno == PAPI_ECNFLCT || papi_errno == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } + if (papi_errno != PAPI_OK) { NOTE("t1 add: %s", PAPI_strerror(papi_errno)); st->start_papi_errno = papi_errno; PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } + + papi_errno = PAPI_start(EventSet); + st->start_papi_errno = papi_errno; + if (papi_errno == PAPI_OK) { /* Publish that t1 is actively running the event so t2 can attempt to collide. */ atomic_store_explicit(&t1_started, true, memory_order_release); long long v = 0; (void)PAPI_read(EventSet, &v); @@ -81,25 +81,25 @@ static void* thread_fn2(void* arg) { PAPI_register_thread(); struct ThreadState* st = (struct ThreadState*)arg; - int EventSet = PAPI_NULL; - int rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(rc)); st->start_rc = rc; PAPI_unregister_thread(); return NULL; } - - rc = PAPI_add_named_event(EventSet, g_event); - if (rc == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } - if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } - if (rc != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(rc)); st->start_rc = rc; (void)PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } + int EventSet = PAPI_NULL; + int papi_errno = PAPI_create_eventset(&EventSet); + if (papi_errno != PAPI_OK) { NOTE("t2 create: %s", PAPI_strerror(papi_errno)); st->start_papi_errno = papi_errno; PAPI_unregister_thread(); return NULL; } + + papi_errno = PAPI_add_named_event(EventSet, g_event); + if (papi_errno == PAPI_ENOEVNT) { SKIP("Event not supported on this platform"); } + if (papi_errno == PAPI_ECNFLCT || papi_errno == PAPI_EPERM) { SKIP("Cannot add event due to HW/resource limits"); } + if (papi_errno != PAPI_OK) { NOTE("t2 add: %s", PAPI_strerror(papi_errno)); st->start_papi_errno = papi_errno; (void)PAPI_destroy_eventset(&EventSet); PAPI_unregister_thread(); return NULL; } /* Busy-wait until t1 has started the event (adequate for a short test). */ while (!atomic_load_explicit(&t1_started, memory_order_acquire)) { /* spin */ } - rc = PAPI_start(EventSet); - st->start_rc = rc; - if (rc != PAPI_OK) { - NOTE("t2 start expected fail: %s", PAPI_strerror(rc)); - } else { - NOTE("t2 start unexpectedly succeeded"); - long long v = 0; (void)PAPI_stop(EventSet, &v); + papi_errno = PAPI_start(EventSet); + st->start_papi_errno = papi_errno; + if (papi_errno != PAPI_OK) { + NOTE("t2 start expected fail: %s", PAPI_strerror(papi_errno)); + } else { + NOTE("t2 start unexpectedly succeeded"); + long long v = 0; (void)PAPI_stop(EventSet, &v); } (void)PAPI_cleanup_eventset(EventSet); @@ -129,8 +129,8 @@ int main(int argc, char** argv) { const char* root = getenv("PAPI_AMDSMI_ROOT"); if (!root || !*root) SKIP("PAPI_AMDSMI_ROOT not set"); - int rc = PAPI_library_init(PAPI_VER_CURRENT); - if (rc != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); int e = eval_result(opts, 1); fflush(stdout); return e; } + int papi_errno = PAPI_library_init(PAPI_VER_CURRENT); + if (papi_errno != PAPI_VER_CURRENT) { NOTE("PAPI_library_init failed: %s", PAPI_strerror(papi_errno)); int e = eval_result(opts, 1); fflush(stdout); return e; } if (PAPI_thread_init(&get_tid) != PAPI_OK) { NOTE("PAPI_thread_init failed"); int e = eval_result(opts, 1); fflush(stdout); return e; } @@ -138,8 +138,8 @@ int main(int argc, char** argv) { struct ThreadState s1; struct ThreadState s2; - s1.start_rc = PAPI_OK; - s2.start_rc = PAPI_OK; + s1.start_papi_errno = PAPI_OK; + s2.start_papi_errno = PAPI_OK; pthread_t th1, th2; pthread_create(&th1, NULL, thread_fn1, &s1); @@ -149,15 +149,15 @@ int main(int argc, char** argv) { if (opts.print) { printf("event: %s\n", g_event); - printf("t1 start rc: %d (%s)\n", s1.start_rc, PAPI_strerror(s1.start_rc)); - printf("t2 start rc: %d (%s)\n", s2.start_rc, PAPI_strerror(s2.start_rc)); + printf("t1 start papi_errno: %d (%s)\n", s1.start_papi_errno, PAPI_strerror(s1.start_papi_errno)); + printf("t2 start papi_errno: %d (%s)\n", s2.start_papi_errno, PAPI_strerror(s2.start_papi_errno)); } /* PASS when expected contention occurred; else FAIL. */ - int final_rc = (s1.start_rc == PAPI_OK && s2.start_rc == PAPI_ECNFLCT) ? 0 : 1; - if (final_rc != 0) NOTE("Unexpected results (wanted t1 OK, t2 PAPI_ECNFLCT)."); - - int exit_code = eval_result(opts, final_rc); + int final_status = (s1.start_papi_errno == PAPI_OK && s2.start_papi_errno == PAPI_ECNFLCT) ? 0 : 1; + if (final_status != 0) NOTE("Unexpected results (wanted t1 OK, t2 PAPI_ECNFLCT)."); + + int exit_code = eval_result(opts, final_status); fflush(stdout); return exit_code; } diff --git a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c index 3337ea77d..b1cd2f9b9 100644 --- a/src/components/amd_smi/tests/amdsmi_energy_monotonic.c +++ b/src/components/amd_smi/tests/amdsmi_energy_monotonic.c @@ -33,56 +33,56 @@ int main(int argc, char **argv) { } // Initialize the PAPI library. - int ret = PAPI_library_init(PAPI_VER_CURRENT); - if (ret != PAPI_VER_CURRENT) { - NOTE("PAPI_library_init failed: %s", PAPI_strerror(ret)); - return eval_result(opts, 1); - } + int papi_errno = PAPI_library_init(PAPI_VER_CURRENT); + if (papi_errno != PAPI_VER_CURRENT) { + NOTE("PAPI_library_init failed: %s", PAPI_strerror(papi_errno)); + return eval_result(opts, 1); + } // Create an empty event set and add the AMD-SMI energy counter for device 0. int EventSet = PAPI_NULL; - ret = PAPI_create_eventset(&EventSet); - if (ret != PAPI_OK) { - NOTE("PAPI_create_eventset: %s", PAPI_strerror(ret)); - return eval_result(opts, 1); - } - - const char *ev = "amd_smi:::energy_consumed:device=0"; - ret = PAPI_add_named_event(EventSet, ev); - if (ret == PAPI_ENOEVNT) { - SKIP("energy_consumed:device=0 not supported"); - } else if (ret != PAPI_OK) { - NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(ret)); - return eval_result(opts, 1); - } - - // Begin counting. - ret = PAPI_start(EventSet); - if (ret != PAPI_OK) { - NOTE("PAPI_start: %s", PAPI_strerror(ret)); - return eval_result(opts, 1); - } + papi_errno = PAPI_create_eventset(&EventSet); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_create_eventset: %s", PAPI_strerror(papi_errno)); + return eval_result(opts, 1); + } + + const char *ev = "amd_smi:::energy_consumed:device=0"; + papi_errno = PAPI_add_named_event(EventSet, ev); + if (papi_errno == PAPI_ENOEVNT) { + SKIP("energy_consumed:device=0 not supported"); + } else if (papi_errno != PAPI_OK) { + NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(papi_errno)); + return eval_result(opts, 1); + } + + // Begin counting. + papi_errno = PAPI_start(EventSet); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_start: %s", PAPI_strerror(papi_errno)); + return eval_result(opts, 1); + } long long v1 = 0, v2 = 0; // First sample. - ret = PAPI_read(EventSet, &v1); - if (ret != PAPI_OK) { - NOTE("PAPI_read(1): %s", PAPI_strerror(ret)); - long long dummy = 0; PAPI_stop(EventSet, &dummy); - return eval_result(opts, 1); - } + papi_errno = PAPI_read(EventSet, &v1); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_read(1): %s", PAPI_strerror(papi_errno)); + long long dummy = 0; PAPI_stop(EventSet, &dummy); + return eval_result(opts, 1); + } // Poll for up to ~1 second for the energy counter to advance. for (int i = 0; i < 10; ++i) { usleep(100000); // 100 ms - ret = PAPI_read(EventSet, &v2); - if (ret != PAPI_OK) { - NOTE("PAPI_read(2): %s", PAPI_strerror(ret)); - long long dummy = 0; PAPI_stop(EventSet, &dummy); - return eval_result(opts, 1); - } + papi_errno = PAPI_read(EventSet, &v2); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_read(2): %s", PAPI_strerror(papi_errno)); + long long dummy = 0; PAPI_stop(EventSet, &dummy); + return eval_result(opts, 1); + } if (v2 > v1) break; // monotonic increase observed } diff --git a/src/components/amd_smi/tests/amdsmi_gemm.c b/src/components/amd_smi/tests/amdsmi_gemm.c index aaeee9196..e9829e961 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.c +++ b/src/components/amd_smi/tests/amdsmi_gemm.c @@ -301,6 +301,6 @@ static int real_main(const HarnessOpts *opts) { int main(int argc, char *argv[]) { harness_accept_tests_quiet(&argc, argv); HarnessOpts opts = parse_harness_cli(argc, argv); - int rc = real_main(&opts); - return eval_result(opts, rc); -} + int papi_errno = real_main(&opts); + return eval_result(opts, papi_errno); +} diff --git a/src/components/amd_smi/tests/amdsmi_hello.c b/src/components/amd_smi/tests/amdsmi_hello.c index 107e1fe15..5fcdf7acf 100644 --- a/src/components/amd_smi/tests/amdsmi_hello.c +++ b/src/components/amd_smi/tests/amdsmi_hello.c @@ -36,38 +36,40 @@ int main(int argc, char** argv) { } // Initialize PAPI. - int rc = PAPI_library_init(PAPI_VER_CURRENT); - if (rc != PAPI_VER_CURRENT) { - NOTE("PAPI_library_init failed: %s", PAPI_strerror(rc)); + int papi_errno = PAPI_library_init(PAPI_VER_CURRENT); + if (papi_errno != PAPI_VER_CURRENT) { + NOTE("PAPI_library_init failed: %s", PAPI_strerror(papi_errno)); return eval_result(opts, 1); } // Create an EventSet. int EventSet = PAPI_NULL; - rc = PAPI_create_eventset(&EventSet); - if (rc != PAPI_OK) { - NOTE("PAPI_create_eventset: %s", PAPI_strerror(rc)); + papi_errno = PAPI_create_eventset(&EventSet); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_create_eventset: %s", PAPI_strerror(papi_errno)); return eval_result(opts, 1); } // Add the selected event. - rc = PAPI_add_named_event(EventSet, ev); - if (rc == PAPI_ENOEVNT || rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { - NOTE("Event unavailable or HW/resource-limited: %s (%s)", ev, PAPI_strerror(rc)); + papi_errno = PAPI_add_named_event(EventSet, ev); + if (papi_errno == PAPI_ENOEVNT || papi_errno == PAPI_ECNFLCT || + papi_errno == PAPI_EPERM) { + NOTE("Event unavailable or HW/resource-limited: %s (%s)", ev, + PAPI_strerror(papi_errno)); SKIP("Event unavailable or HW/resource-limited"); - } else if (rc != PAPI_OK) { - NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(rc)); + } else if (papi_errno != PAPI_OK) { + NOTE("PAPI_add_named_event(%s): %s", ev, PAPI_strerror(papi_errno)); PAPI_destroy_eventset(&EventSet); return eval_result(opts, 1); } // Start counters -> short wait -> stop/read. - rc = PAPI_start(EventSet); - if (rc == PAPI_ECNFLCT || rc == PAPI_EPERM) { - NOTE("Cannot start counters: %s", PAPI_strerror(rc)); + papi_errno = PAPI_start(EventSet); + if (papi_errno == PAPI_ECNFLCT || papi_errno == PAPI_EPERM) { + NOTE("Cannot start counters: %s", PAPI_strerror(papi_errno)); SKIP("Cannot start counters"); - } else if (rc != PAPI_OK) { - NOTE("PAPI_start: %s", PAPI_strerror(rc)); + } else if (papi_errno != PAPI_OK) { + NOTE("PAPI_start: %s", PAPI_strerror(papi_errno)); PAPI_destroy_eventset(&EventSet); return eval_result(opts, 1); } @@ -75,9 +77,9 @@ int main(int argc, char** argv) { usleep(100000); // ~100 ms sampling interval for this simple demo. long long val = 0; - rc = PAPI_stop(EventSet, &val); - if (rc != PAPI_OK) { - NOTE("PAPI_stop: %s", PAPI_strerror(rc)); + papi_errno = PAPI_stop(EventSet, &val); + if (papi_errno != PAPI_OK) { + NOTE("PAPI_stop: %s", PAPI_strerror(papi_errno)); PAPI_destroy_eventset(&EventSet); return eval_result(opts, 1); } From ff032fa12041a9a0893257956bf628f5aeb78723 Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 14:03:21 -0700 Subject: [PATCH 146/147] device mask int size --- src/components/amd_smi/amds_ctx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/amd_smi/amds_ctx.c b/src/components/amd_smi/amds_ctx.c index af2bde99a..a8a65d9f2 100644 --- a/src/components/amd_smi/amds_ctx.c +++ b/src/components/amd_smi/amds_ctx.c @@ -12,7 +12,7 @@ #include "papi_internal.h" unsigned int _amd_smi_lock; -static int32_t device_mask = 0; +static uint64_t device_mask = 0; static int acquire_devices(unsigned int *events_id, int num_events, int32_t *bitmask) { int32_t mask_acq = 0; From e0164daf0cc72831dcce1c1370663a4a9eba989b Mon Sep 17 00:00:00 2001 From: Dong Jun Woun Date: Tue, 16 Sep 2025 20:34:41 -0700 Subject: [PATCH 147/147] gilgamesh 0 1 --- src/components/amd_smi/tests/amdsmi_gemm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/amd_smi/tests/amdsmi_gemm.c b/src/components/amd_smi/tests/amdsmi_gemm.c index e9829e961..eefa00755 100644 --- a/src/components/amd_smi/tests/amdsmi_gemm.c +++ b/src/components/amd_smi/tests/amdsmi_gemm.c @@ -176,7 +176,7 @@ static int real_main(const HarnessOpts *opts) { } /* Use device 1 and (optionally) print basic properties. */ - HIP_CHECK(hipSetDevice(1)); + HIP_CHECK(hipSetDevice(0)); hipDeviceProp_t deviceProp; HIP_CHECK(hipGetDeviceProperties(&deviceProp, 1)); if (opts->print) { @@ -301,6 +301,6 @@ static int real_main(const HarnessOpts *opts) { int main(int argc, char *argv[]) { harness_accept_tests_quiet(&argc, argv); HarnessOpts opts = parse_harness_cli(argc, argv); - int papi_errno = real_main(&opts); - return eval_result(opts, papi_errno); -} + int papi_errno = real_main(&opts); + return eval_result(opts, papi_errno); +}

F&OR37YOSr^d(lJY4AZL}` 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 diff --git a/src/components/amd_smi/tests/gemm_example.o b/src/components/amd_smi/tests/gemm_example.o deleted file mode 100644 index 203dc67f92572a01dfd06130a998e93da9f01289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27152 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 Q4&x^w`x;n`a@ETJKZr~hIRF3v diff --git a/src/components/amd_smi/tests/rocmsmi_example b/src/components/amd_smi/tests/rocmsmi_example deleted file mode 100755 index 3643a8464cb6df5a6d0c845c21e192e8436eea79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1249920 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%0Duo8%}MWZ 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

F&OR37YOSr^d(lJY4AZL}` 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 literal 1264896 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