amdsmi.h Source File#
amdsmi.h
Go to the documentation of this file.
106 #define AMDSMI_LIB_VERSION_CREATE_STRING(YEAR, MAJOR, MINOR, RELEASE) (#YEAR "." #MAJOR "." #MINOR "." #RELEASE)
107 #define AMDSMI_LIB_VERSION_EXPAND_PARTS(YEAR_STR, MAJOR_STR, MINOR_STR, RELEASE_STR) AMDSMI_LIB_VERSION_CREATE_STRING(YEAR_STR, MAJOR_STR, MINOR_STR, RELEASE_STR)
108 #define AMDSMI_LIB_VERSION_STRING AMDSMI_LIB_VERSION_EXPAND_PARTS(AMDSMI_LIB_VERSION_YEAR, AMDSMI_LIB_VERSION_MAJOR, AMDSMI_LIB_VERSION_MINOR, AMDSMI_LIB_VERSION_RELEASE)
416 } engine_usage;
421 } memory_usage;
1287 amdsmi_status_t amdsmi_get_device_handle_from_bdf(amdsmi_bdf_t bdf, amdsmi_device_handle* device_handle);
1477 amdsmi_dev_get_pci_bandwidth(amdsmi_device_handle device_handle, amdsmi_pcie_bandwidth_t *bandwidth);
1532 amdsmi_status_t amdsmi_topo_get_numa_affinity(amdsmi_device_handle device_handle, uint32_t *numa_node);
1556 amdsmi_status_t amdsmi_dev_get_pci_throughput(amdsmi_device_handle device_handle, uint64_t *sent,
1618 amdsmi_status_t amdsmi_dev_set_pci_bandwidth(amdsmi_device_handle device_handle, uint64_t bw_bitmask);
1650 amdsmi_dev_get_power_ave(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t *power);
1708 amdsmi_dev_set_power_cap(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t cap);
1803 amdsmi_get_bad_page_info(amdsmi_device_handle device_handle, uint32_t *num_pages, amdsmi_retired_page_record_t *info);
1826 amdsmi_get_ras_block_features_enabled(amdsmi_device_handle device_handle, amdsmi_gpu_block_t block,
1848 amdsmi_dev_get_memory_busy_percent(amdsmi_device_handle device_handle, uint32_t *busy_percent);
1914 amdsmi_status_t amdsmi_dev_get_fan_rpms(amdsmi_device_handle device_handle, uint32_t sensor_ind,
2145 amdsmi_status_t amdsmi_get_pcie_link_status(amdsmi_device_handle device_handle, amdsmi_pcie_info_t *info);
2159 amdsmi_status_t amdsmi_get_pcie_link_caps(amdsmi_device_handle device_handle, amdsmi_pcie_info_t *info);
2222 amdsmi_status_t amdsmi_dev_get_overdrive_level(amdsmi_device_handle device_handle, uint32_t *od);
2316 amdsmi_status_t amdsmi_dev_set_clk_range(amdsmi_device_handle device_handle, uint64_t minclkvalue,
2339 amdsmi_status_t amdsmi_dev_set_od_clk_info(amdsmi_device_handle device_handle, amdsmi_freq_ind_t level,
2361 amdsmi_status_t amdsmi_dev_set_od_volt_info(amdsmi_device_handle device_handle, uint32_t vpoint,
2466 amdsmi_dev_set_perf_level(amdsmi_device_handle device_handle, amdsmi_dev_perf_level_t perf_lvl);
2485 amdsmi_dev_set_perf_level_v1(amdsmi_device_handle device_handle, amdsmi_dev_perf_level_t perf_lvl);
2526 amdsmi_status_t amdsmi_dev_set_overdrive_level(amdsmi_device_handle device_handle, uint32_t od);
2565 amdsmi_status_t amdsmi_dev_set_overdrive_level_v1(amdsmi_device_handle device_handle, uint32_t od);
2733 amdsmi_status_t amdsmi_dev_get_ecc_status(amdsmi_device_handle device_handle, amdsmi_gpu_block_t block,
2871 amdsmi_dev_counter_group_supported(amdsmi_device_handle device_handle, amdsmi_event_group_t group);
3096 amdsmi_dev_xgmi_error_status(amdsmi_device_handle device_handle, amdsmi_xgmi_status_t *status);
3157 amdsmi_topo_get_link_weight(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst,
3182 amdsmi_get_minmax_bandwidth(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst,
3231 amdsmi_is_P2P_accessible(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst,
3589 amdsmi_get_device_uuid(amdsmi_device_handle device_handle, unsigned int *uuid_length, char *uuid);
3774 amdsmi_get_clock_measure(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, amdsmi_clk_measure_t *info);
3813 amdsmi_get_target_frequency_range(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, amdsmi_frequency_range_t *range);
3844 amdsmi_get_process_list(amdsmi_device_handle device_handle, amdsmi_process_handle *list, uint32_t *max_processes);
3860 amdsmi_get_process_info(amdsmi_device_handle device_handle, amdsmi_process_handle process, amdsmi_proc_info_t *info);
amdsmi_freq_ind_t
The values of this enum are used as frequency identifiers.
Definition: amdsmi.h:776
@ AMDSMI_FREQ_IND_MAX
Index used for the maximum frequency value.
Definition: amdsmi.h:778
@ AMDSMI_FREQ_IND_MIN
Index used for the minimum frequency value.
Definition: amdsmi.h:777
amdsmi_status_t amdsmi_get_device_bdf(amdsmi_device_handle device_handle, amdsmi_bdf_t *bdf)
Returns BDF of the given device.
uintptr_t amdsmi_event_handle_t
Handle to performance event counter.
Definition: amdsmi.h:484
@ AMDSMI_MEM_TYPE_VIS_VRAM
VRAM memory that is visible.
Definition: amdsmi.h:767
#define MAX_EVENT_NOTIFICATION_MSG_SIZE
Maximum number of characters an event notification message will be.
Definition: amdsmi.h:606
amdsmi_event_group_t
Enum denoting an event group. The value of the enum is the base value for all the event enums in the ...
Definition: amdsmi.h:492
@ AMDSMI_EVNT_GRP_XGMI
Data Fabric (XGMI) related events.
Definition: amdsmi.h:493
@ AMDSMI_EVNT_GRP_XGMI_DATA_OUT
XGMI Outbound data.
Definition: amdsmi.h:494
@ AMDSMI_RAS_ERR_STATE_PARITY
ECC errors present, but type unknown.
Definition: amdsmi.h:749
@ AMDSMI_RAS_ERR_STATE_SING_C
Single correctable error.
Definition: amdsmi.h:750
@ AMDSMI_RAS_ERR_STATE_MULT_UC
Multiple uncorrectable errors.
Definition: amdsmi.h:751
@ AMDSMI_RAS_ERR_STATE_POISON
page. Treat as uncorrectable.
Definition: amdsmi.h:752
@ AMDSMI_RAS_ERR_STATE_DISABLED
ECC is disabled.
Definition: amdsmi.h:748
amdsmi_event_type_t
Event type enum. Events belonging to a particular event group amdsmi_event_group_t should begin enume...
Definition: amdsmi.h:504
@ AMDSMI_EVNT_XGMI_0_BEATS_TX
Data beats sent to neighbor 0; Each beat represents 32 bytes.
Definition: amdsmi.h:527
@ AMDSMI_EVNT_XGMI_DATA_OUT_3
Outbound beats to neighbor 3.
Definition: amdsmi.h:559
@ AMDSMI_EVNT_XGMI_0_NOP_TX
NOPs sent to neighbor 0.
Definition: amdsmi.h:508
@ AMDSMI_EVNT_XGMI_1_NOP_TX
NOPs sent to neighbor 1.
Definition: amdsmi.h:528
@ AMDSMI_EVNT_XGMI_DATA_OUT_4
Outbound beats to neighbor 4.
Definition: amdsmi.h:560
@ AMDSMI_EVNT_XGMI_DATA_OUT_1
Outbound beats to neighbor 1.
Definition: amdsmi.h:557
@ AMDSMI_EVNT_XGMI_DATA_OUT_2
Outbound beats to neighbor 2.
Definition: amdsmi.h:558
@ AMDSMI_EVNT_XGMI_DATA_OUT_5
Outbound beats to neighbor 5.
Definition: amdsmi.h:561
void * amdsmi_device_handle
opaque handler point to underlying implementation
Definition: amdsmi.h:123
amdsmi_fw_block_t
The values of this enum are used to identify the various firmware blocks.
Definition: amdsmi.h:220
amdsmi_memory_page_status_t
Reserved Memory Page States.
Definition: amdsmi.h:799
@ AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE
Unable to reserve this page.
Definition: amdsmi.h:805
@ AMDSMI_MEM_PAGE_STATUS_RESERVED
and not available for use
Definition: amdsmi.h:800
@ AMDSMI_DEV_PERF_LEVEL_STABLE_PEAK
Stable power state with peak clocks.
Definition: amdsmi.h:450
@ AMDSMI_DEV_PERF_LEVEL_AUTO
Performance level is "auto".
Definition: amdsmi.h:439
@ AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK
system clock
Definition: amdsmi.h:453
@ AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK
memory clock
Definition: amdsmi.h:451
@ AMDSMI_DEV_PERF_LEVEL_DETERMINISM
Performance determinism state.
Definition: amdsmi.h:455
@ AMDSMI_DEV_PERF_LEVEL_HIGH
regardless of workload
Definition: amdsmi.h:444
@ AMDSMI_DEV_PERF_LEVEL_MANUAL
setting the AMDSMI_CLK_TYPE_SYS speed
Definition: amdsmi.h:446
@ AMDSMI_DEV_PERF_LEVEL_UNKNOWN
Unknown performance level.
Definition: amdsmi.h:459
amdsmi_status_t amdsmi_get_device_uuid(amdsmi_device_handle device_handle, unsigned int *uuid_length, char *uuid)
Returns the UUID of the device.
amdsmi_voltage_metric_t
Voltage Metrics. This enum is used to identify various Volatge metrics. Corresponding values will be ...
Definition: amdsmi.h:665
uint64_t amdsmi_bit_field_t
Bitfield used in various AMDSMI calls.
Definition: amdsmi.h:794
amdsmi_voltage_type_t
This ennumeration is used to indicate which type of voltage reading should be obtained.
Definition: amdsmi.h:684
@ AMDSMI_STATUS_UNKNOWN_ERROR
An unknown error occurred.
Definition: amdsmi.h:176
@ AMDSMI_STATUS_NO_DATA
No data was found for a given input.
Definition: amdsmi.h:170
@ AMDSMI_STATUS_UNEXPECTED_SIZE
An unexpected amount of data was read.
Definition: amdsmi.h:172
@ AMDSMI_STATUS_INTERNAL_EXCEPTION
An internal exception was caught.
Definition: amdsmi.h:160
@ AMDSMI_STATUS_MAP_ERROR
The internal library error did not map to a status code.
Definition: amdsmi.h:175
@ AMDSMI_STATUS_FAIL_LOAD_SYMBOL
Fail to load symbol.
Definition: amdsmi.h:149
@ AMDSMI_STATUS_INSUFFICIENT_SIZE
Not enough resources were available for the operation.
Definition: amdsmi.h:171
@ AMDSMI_STATUS_INIT_ERROR
An error occurred when initializing internal data structures.
Definition: amdsmi.h:162
@ AMDSMI_STATUS_OUT_OF_RESOURCES
Not enough memory.
Definition: amdsmi.h:159
@ AMDSMI_STATUS_INTERRUPT
An interrupt occurred during execution of function.
Definition: amdsmi.h:155
@ AMDSMI_STATUS_NOT_YET_IMPLEMENTED
Not implemented yet.
Definition: amdsmi.h:147
@ AMDSMI_STATUS_FAIL_LOAD_MODULE
Fail to load lib.
Definition: amdsmi.h:148
@ AMDSMI_STATUS_NOT_SUPPORTED
Command not supported.
Definition: amdsmi.h:146
@ AMDSMI_STATUS_UNEXPECTED_DATA
The data read or provided to function is not what was expected.
Definition: amdsmi.h:173
@ AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS
The provided input is out of allowable or safe range.
Definition: amdsmi.h:161
@ AMDSMI_STATUS_REFCOUNT_OVERFLOW
An internal reference counter exceeded INT32_MAX.
Definition: amdsmi.h:163
@ AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES
Number of IO Link types.
Definition: amdsmi.h:815
amdsmi_temperature_metric_t
Temperature Metrics. This enum is used to identify various temperature metrics. Corresponding values ...
Definition: amdsmi.h:622
@ AMDSMI_TEMP_CRITICAL
greater than corresponding temp_max values.
Definition: amdsmi.h:634
amdsmi_gpu_block_t
This enum is used to identify different GPU blocks.
Definition: amdsmi.h:718
AMDSMI_UTILIZATION_COUNTER_TYPE
The utilization counter type.
Definition: amdsmi.h:822
@ AMDSMI_COARSE_GRAIN_MEM_ACTIVITY
Memory Activity.
Definition: amdsmi.h:826
@ AMDSMI_UTILIZATION_COUNTER_FIRST
GFX Activity.
Definition: amdsmi.h:823
amdsmi_temperature_type_t
This enumeration is used to indicate from which part of the device a temperature reading should be ob...
Definition: amdsmi.h:203
#define AMDSMI_MAX_NUM_FREQUENCIES
Guaranteed maximum possible number of supported frequencies.
Definition: amdsmi.h:427
amdsmi_power_profile_preset_masks_t
Pre-set Profile Selections. These bitmasks can be AND'd with the amdsmi_power_profile_status_t....
Definition: amdsmi.h:699
@ AMDSMI_PWR_PROF_PRST_COMPUTE_MASK
Compute Saving Profile.
Definition: amdsmi.h:703
@ AMDSMI_PWR_PROF_PRST_POWER_SAVING_MASK
Power Saving Profile.
Definition: amdsmi.h:702
@ AMDSMI_PWR_PROF_PRST_VIDEO_MASK
Video Power Profile.
Definition: amdsmi.h:701
@ AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT
Default Boot Up Profile.
Definition: amdsmi.h:708
@ AMDSMI_PWR_PROF_PRST_CUSTOM_MASK
Custom Power Profile.
Definition: amdsmi.h:700
struct amdsmi_func_id_iter_handle * amdsmi_func_id_iter_handle_t
Opaque handle to function-support object.
Definition: amdsmi.h:1100
#define AMDSMI_NUM_VOLTAGE_CURVE_POINTS
The number of points that make up a voltage-frequency curve definition.
Definition: amdsmi.h:434
amdsmi_status_t amdsmi_next_func_iter(amdsmi_func_id_iter_handle_t handle)
Advance a function identifer iterator.
amdsmi_status_t amdsmi_dev_close_supported_func_iterator(amdsmi_func_id_iter_handle_t *handle)
Close a variant iterator handle.
amdsmi_status_t amdsmi_get_func_iter_value(amdsmi_func_id_iter_handle_t handle, amdsmi_func_id_value_t *value)
Get the value associated with a function/variant iterator.
amdsmi_status_t amdsmi_dev_open_supported_func_iterator(amdsmi_device_handle device_handle, amdsmi_func_id_iter_handle_t *handle)
Get a function name iterator of supported AMDSMI functions for a device.
amdsmi_status_t amdsmi_dev_open_supported_variant_iterator(amdsmi_func_id_iter_handle_t obj_h, amdsmi_func_id_iter_handle_t *var_iter)
Get a variant iterator for a given handle.
amdsmi_status_t amdsmi_get_socket_info(amdsmi_socket_handle socket_handle, char *name, size_t len)
Get information about the given socket.
amdsmi_status_t amdsmi_get_device_type(amdsmi_device_handle device_handle, device_type_t *device_type)
Get the device type of the device_handle.
amdsmi_status_t amdsmi_get_device_handle_from_bdf(amdsmi_bdf_t bdf, amdsmi_device_handle *device_handle)
Get device handle with the matching bdf.
amdsmi_status_t amdsmi_get_device_handles(amdsmi_socket_handle socket_handle, uint32_t *device_count, amdsmi_device_handle *device_handles)
Get the list of the device handles associated to a socket.
amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count, amdsmi_socket_handle *socket_handles)
Get the list of socket handles in the system.
amdsmi_status_t amdsmi_dev_get_ecc_status(amdsmi_device_handle device_handle, amdsmi_gpu_block_t block, amdsmi_ras_err_state_t *state)
Retrieve the ECC status for a GPU block.
amdsmi_status_t amdsmi_status_string(amdsmi_status_t status, const char **status_string)
Get a description of a provided AMDSMI error status.
amdsmi_status_t amdsmi_dev_get_ecc_enabled(amdsmi_device_handle device_handle, uint64_t *enabled_blocks)
Retrieve the enabled ECC bit-mask.
amdsmi_status_t amdsmi_dev_get_ecc_count(amdsmi_device_handle device_handle, amdsmi_gpu_block_t block, amdsmi_error_count_t *ec)
Retrieve the error counts for a GPU block.
amdsmi_status_t amdsmi_set_event_notification_mask(amdsmi_device_handle device_handle, uint64_t mask)
Specify which events to collect for a device.
amdsmi_status_t amdsmi_stop_event_notification(amdsmi_device_handle device_handle)
Close any file handles and free any resources used by event notification for a GPU.
amdsmi_status_t amdsmi_get_event_notification(int timeout_ms, uint32_t *num_elem, amdsmi_evt_notification_data_t *data)
Collect event notifications, waiting a specified amount of time.
amdsmi_status_t amdsmi_init_event_notification(amdsmi_device_handle device_handle)
Prepare to collect event notifications for a GPU.
amdsmi_status_t amdsmi_topo_get_link_weight(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst, uint64_t *weight)
Retrieve the weight for a connection between 2 GPUs.
amdsmi_status_t amdsmi_topo_get_link_type(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst, uint64_t *hops, AMDSMI_IO_LINK_TYPE *type)
Retrieve the hops and the connection type between 2 GPUs.
amdsmi_status_t amdsmi_get_minmax_bandwidth(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst, uint64_t *min_bandwidth, uint64_t *max_bandwidth)
Retreive minimal and maximal io link bandwidth between 2 GPUs.
amdsmi_status_t amdsmi_is_P2P_accessible(amdsmi_device_handle device_handle_src, amdsmi_device_handle device_handle_dst, bool *accessible)
Return P2P availability status between 2 GPUs.
amdsmi_status_t amdsmi_topo_get_numa_node_number(amdsmi_device_handle device_handle, uint32_t *numa_node)
Retrieve the NUMA CPU node number for a device.
amdsmi_status_t amdsmi_dev_get_vram_vendor(amdsmi_device_handle device_handle, char *brand, uint32_t len)
Get the vram vendor string of a device.
amdsmi_status_t amdsmi_dev_get_subsystem_name(amdsmi_device_handle device_handle, char *name, size_t len)
Get the name string for the device subsytem.
amdsmi_status_t amdsmi_dev_get_drm_render_minor(amdsmi_device_handle device_handle, uint32_t *minor)
Get the drm minor number associated with this device.
amdsmi_status_t amdsmi_dev_get_vendor_name(amdsmi_device_handle device_handle, char *name, size_t len)
Get the name string for a give vendor ID.
amdsmi_status_t amdsmi_dev_get_id(amdsmi_device_handle device_handle, uint16_t *id)
Get the device id associated with the device with provided device handler.
amdsmi_status_t amdsmi_dev_get_subsystem_id(amdsmi_device_handle device_handle, uint16_t *id)
Get the subsystem device id associated with the device with provided device handle.
amdsmi_status_t amdsmi_dev_get_memory_total(amdsmi_device_handle device_handle, amdsmi_memory_type_t mem_type, uint64_t *total)
Get the total amount of memory that exists.
amdsmi_status_t amdsmi_dev_get_memory_reserved_pages(amdsmi_device_handle device_handle, uint32_t *num_pages, amdsmi_retired_page_record_t *records)
Get information about reserved ("retired") memory pages.
amdsmi_status_t amdsmi_dev_get_memory_usage(amdsmi_device_handle device_handle, amdsmi_memory_type_t mem_type, uint64_t *used)
Get the current memory usage.
amdsmi_status_t amdsmi_dev_get_memory_busy_percent(amdsmi_device_handle device_handle, uint32_t *busy_percent)
Get percentage of time any device memory is being used.
amdsmi_status_t amdsmi_get_ras_block_features_enabled(amdsmi_device_handle device_handle, amdsmi_gpu_block_t block, amdsmi_ras_err_state_t *state)
Returns if RAS features are enabled or disabled for given block.
amdsmi_status_t amdsmi_get_bad_page_info(amdsmi_device_handle device_handle, uint32_t *num_pages, amdsmi_retired_page_record_t *info)
The first call to this API returns the number of bad pages which should be used to allocate the buffe...
amdsmi_status_t amdsmi_dev_set_pci_bandwidth(amdsmi_device_handle device_handle, uint64_t bw_bitmask)
Control the set of allowed PCIe bandwidths that can be used.
amdsmi_status_t amdsmi_dev_get_pci_bandwidth(amdsmi_device_handle device_handle, amdsmi_pcie_bandwidth_t *bandwidth)
Get the list of possible PCIe bandwidths that are available.
amdsmi_status_t amdsmi_dev_get_pci_replay_counter(amdsmi_device_handle device_handle, uint64_t *counter)
Get PCIe replay counter.
amdsmi_status_t amdsmi_topo_get_numa_affinity(amdsmi_device_handle device_handle, uint32_t *numa_node)
Get the NUMA node associated with a device.
amdsmi_status_t amdsmi_dev_get_pci_id(amdsmi_device_handle device_handle, uint64_t *bdfid)
Get the unique PCI device identifier associated for a device.
amdsmi_status_t amdsmi_dev_get_pci_throughput(amdsmi_device_handle device_handle, uint64_t *sent, uint64_t *received, uint64_t *max_pkt_sz)
Get PCIe traffic information.
amdsmi_status_t amdsmi_dev_destroy_counter(amdsmi_event_handle_t evnt_handle)
Deallocate a performance counter object.
amdsmi_status_t amdsmi_dev_counter_group_supported(amdsmi_device_handle device_handle, amdsmi_event_group_t group)
Tell if an event group is supported by a given device.
amdsmi_status_t amdsmi_counter_get_available_counters(amdsmi_device_handle device_handle, amdsmi_event_group_t grp, uint32_t *available)
Get the number of currently available counters.
amdsmi_status_t amdsmi_read_counter(amdsmi_event_handle_t evt_handle, amdsmi_counter_value_t *value)
Read the current value of a performance counter.
amdsmi_status_t amdsmi_dev_create_counter(amdsmi_device_handle device_handle, amdsmi_event_type_t type, amdsmi_event_handle_t *evnt_handle)
Create a performance counter object.
amdsmi_status_t amdsmi_control_counter(amdsmi_event_handle_t evt_handle, amdsmi_counter_command_t cmd, void *cmd_args)
Issue performance counter control commands.
amdsmi_status_t amdsmi_dev_set_overdrive_level_v1(amdsmi_device_handle device_handle, uint32_t od)
Set the overdrive percent associated with the device with provided device handle with the provided va...
amdsmi_status_t amdsmi_dev_set_perf_level_v1(amdsmi_device_handle device_handle, amdsmi_dev_perf_level_t perf_lvl)
Set the PowerPlay performance level associated with the device with provided device handle with the p...
amdsmi_status_t amdsmi_dev_set_clk_freq(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, uint64_t freq_bitmask)
Control the set of allowed frequencies that can be used for the specified clock.
amdsmi_status_t amdsmi_dev_set_perf_level(amdsmi_device_handle device_handle, amdsmi_dev_perf_level_t perf_lvl)
Set the PowerPlay performance level associated with the device with provided device handle with the p...
amdsmi_status_t amdsmi_dev_set_overdrive_level(amdsmi_device_handle device_handle, uint32_t od)
Set the overdrive percent associated with the device with provided device handle with the provided va...
amdsmi_status_t amdsmi_get_utilization_count(amdsmi_device_handle device_handle, amdsmi_utilization_counter_t utilization_counters[], uint32_t count, uint64_t *timestamp)
Get coarse grain utilization counter of the specified device.
amdsmi_status_t amdsmi_dev_get_od_volt_info(amdsmi_device_handle device_handle, amdsmi_od_volt_freq_data_t *odv)
This function retrieves the voltage/frequency curve information.
amdsmi_status_t amdsmi_set_perf_determinism_mode(amdsmi_device_handle device_handle, uint64_t clkvalue)
Enter performance determinism mode with provided device handle.
amdsmi_status_t amdsmi_dev_get_busy_percent(amdsmi_device_handle device_handle, uint32_t *busy_percent)
Get percentage of time device is busy doing any processing.
amdsmi_status_t amdsmi_dev_set_od_volt_info(amdsmi_device_handle device_handle, uint32_t vpoint, uint64_t clkvalue, uint64_t voltvalue)
This function sets 1 of the 3 voltage curve points.
amdsmi_status_t amdsmi_dev_set_od_clk_info(amdsmi_device_handle device_handle, amdsmi_freq_ind_t level, uint64_t clkvalue, amdsmi_clk_type_t clkType)
This function sets the clock frequency information.
amdsmi_status_t amdsmi_get_pcie_link_status(amdsmi_device_handle device_handle, amdsmi_pcie_info_t *info)
Get current PCIE info of the device with provided device handle.
amdsmi_status_t amdsmi_dev_set_clk_range(amdsmi_device_handle device_handle, uint64_t minclkvalue, uint64_t maxclkvalue, amdsmi_clk_type_t clkType)
This function sets the clock range information.
amdsmi_status_t amdsmi_dev_get_od_volt_curve_regions(amdsmi_device_handle device_handle, uint32_t *num_regions, amdsmi_freq_volt_region_t *buffer)
This function will retrieve the current valid regions in the frequency/voltage space.
amdsmi_status_t amdsmi_dev_get_power_profile_presets(amdsmi_device_handle device_handle, uint32_t sensor_ind, amdsmi_power_profile_status_t *status)
Get the list of available preset power profiles and an indication of which profile is currently activ...
amdsmi_status_t amdsmi_dev_get_gpu_clk_freq(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, amdsmi_frequencies_t *f)
Get the list of possible system clock speeds of device for a specified clock type.
amdsmi_status_t amdsmi_get_pcie_link_caps(amdsmi_device_handle device_handle, amdsmi_pcie_info_t *info)
Get max PCIe capabilities of the device with provided device handle.
amdsmi_status_t amdsmi_dev_get_overdrive_level(amdsmi_device_handle device_handle, uint32_t *od)
Get the overdrive percent associated with the device with provided device handle.
amdsmi_status_t amdsmi_dev_get_perf_level(amdsmi_device_handle device_handle, amdsmi_dev_perf_level_t *perf)
Get the performance level of the device.
amdsmi_status_t amdsmi_dev_reset_gpu(amdsmi_device_handle device_handle)
Reset the gpu associated with the device with provided device handle.
amdsmi_status_t amdsmi_dev_get_gpu_metrics_info(amdsmi_device_handle device_handle, amdsmi_gpu_metrics_t *pgpu_metrics)
This function retrieves the gpu metrics information.
amdsmi_status_t amdsmi_dev_set_fan_speed(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t speed)
Set the fan speed for the specified device with the provided speed, in RPMs.
amdsmi_status_t amdsmi_dev_reset_fan(amdsmi_device_handle device_handle, uint32_t sensor_ind)
Reset the fan to automatic driver control.
amdsmi_status_t amdsmi_dev_get_fan_rpms(amdsmi_device_handle device_handle, uint32_t sensor_ind, int64_t *speed)
Get the fan speed in RPMs of the device with the specified device handle and 0-based sensor index.
amdsmi_status_t amdsmi_dev_get_temp_metric(amdsmi_device_handle device_handle, amdsmi_temperature_type_t sensor_type, amdsmi_temperature_metric_t metric, int64_t *temperature)
Get the temperature metric value for the specified metric, from the specified temperature sensor on t...
amdsmi_status_t amdsmi_dev_get_fan_speed_max(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t *max_speed)
Get the max. fan speed of the device with provided device handle.
amdsmi_status_t amdsmi_dev_get_fan_speed(amdsmi_device_handle device_handle, uint32_t sensor_ind, int64_t *speed)
Get the fan speed for the specified device as a value relative to AMDSMI_MAX_FAN_SPEED.
amdsmi_status_t amdsmi_dev_get_volt_metric(amdsmi_device_handle device_handle, amdsmi_voltage_type_t sensor_type, amdsmi_voltage_metric_t metric, int64_t *voltage)
Get the voltage metric value for the specified metric, from the specified voltage sensor on the speci...
amdsmi_status_t amdsmi_dev_set_power_cap(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t cap)
Set the maximum gpu power cap value.
amdsmi_status_t amdsmi_dev_set_power_profile(amdsmi_device_handle device_handle, uint32_t reserved, amdsmi_power_profile_preset_masks_t profile)
Set the power performance profile.
amdsmi_status_t amdsmi_dev_get_power_ave(amdsmi_device_handle device_handle, uint32_t sensor_ind, uint64_t *power)
Get the average power consumption of a device.
amdsmi_status_t amdsmi_dev_get_energy_count(amdsmi_device_handle device_handle, uint64_t *power, float *counter_resolution, uint64_t *timestamp)
Get the energy accumulator counter of the device with provided device handle.
amdsmi_status_t amdsmi_get_compute_process_info_by_pid(uint32_t pid, amdsmi_process_info_t *proc)
Get process information about a specific process.
amdsmi_status_t amdsmi_get_compute_process_info(amdsmi_process_info_t *procs, uint32_t *num_items)
Get process information about processes currently using GPU.
amdsmi_status_t amdsmi_get_compute_process_gpus(uint32_t pid, uint32_t *dv_indices, uint32_t *num_devices)
Get the device indices currently being used by a process.
amdsmi_status_t amdsmi_get_version_str(amdsmi_sw_component_t component, char *ver_str, uint32_t len)
Get the driver version string for the current system.
amdsmi_status_t amdsmi_get_version(amdsmi_version_t *version)
Get the build version information for the currently running build of AMDSMI.
amdsmi_status_t amdsmi_dev_xgmi_error_status(amdsmi_device_handle device_handle, amdsmi_xgmi_status_t *status)
Retrieve the XGMI error status for a device.
amdsmi_status_t amdsmi_dev_reset_xgmi_error(amdsmi_device_handle device_handle)
Reset the XGMI error status for a device.
amdsmi_status_t amdsmi_get_asic_info(amdsmi_device_handle device_handle, amdsmi_asic_info_t *info)
Returns the ASIC information for the device.
amdsmi_status_t amdsmi_get_caps_info(amdsmi_device_handle device_handle, amdsmi_gpu_caps_t *info)
Returns the device capabilities as currently configured in the system.
amdsmi_status_t amdsmi_get_xgmi_info(amdsmi_device_handle device_handle, amdsmi_xgmi_info_t *info)
Returns XGMI information for the GPU.
amdsmi_status_t amdsmi_get_board_info(amdsmi_device_handle device_handle, amdsmi_board_info_t *info)
Returns the board part number and board information for the requested device.
amdsmi_status_t amdsmi_get_power_cap_info(amdsmi_device_handle device_handle, uint32_t sensor_ind, amdsmi_power_cap_info_t *info)
Returns the power caps as currently configured in the system.
amdsmi_status_t amdsmi_get_ecc_error_count(amdsmi_device_handle device_handle, amdsmi_error_count_t *ec)
Returns the number of ECC errors (correctable and uncorrectable) in the given GPU.
amdsmi_status_t amdsmi_get_vbios_info(amdsmi_device_handle device_handle, amdsmi_vbios_info_t *info)
Returns the static information for the vBIOS on the device.
amdsmi_status_t amdsmi_get_fw_info(amdsmi_device_handle device_handle, amdsmi_fw_info_t *info)
Returns the firmware versions running on the device.
amdsmi_status_t amdsmi_get_vram_usage(amdsmi_device_handle device_handle, amdsmi_vram_info_t *info)
Returns the VRAM usage (both total and used memory) in MegaBytes.
amdsmi_status_t amdsmi_get_clock_measure(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, amdsmi_clk_measure_t *info)
Returns the measurements of the clocks in the GPU for the GFX and multimedia engines and Memory....
amdsmi_status_t amdsmi_get_gpu_activity(amdsmi_device_handle device_handle, amdsmi_engine_usage_t *info)
Returns the current usage of the GPU engines (GFX, MM and MEM). Each usage is reported as a percentag...
amdsmi_status_t amdsmi_get_power_measure(amdsmi_device_handle device_handle, amdsmi_power_measure_t *info)
Returns the current power and voltage of the GPU. The voltage is in units of mV and the power in unit...
amdsmi_status_t amdsmi_get_target_frequency_range(amdsmi_device_handle device_handle, amdsmi_clk_type_t clk_type, amdsmi_frequency_range_t *range)
Returns current and supported frequency range for the specified clock type.
amdsmi_status_t amdsmi_get_process_list(amdsmi_device_handle device_handle, amdsmi_process_handle *list, uint32_t *max_processes)
Returns the list of processes running on a given GPU including itself.
amdsmi_status_t amdsmi_get_process_info(amdsmi_device_handle device_handle, amdsmi_process_handle process, amdsmi_proc_info_t *info)
Returns the process information of a given process. Engine usage show how much time the process spend...
amdsmi_status_t amdsmi_get_driver_version(amdsmi_device_handle device_handle, int *length, char *version)
Returns the driver version information.
The following structures hold the gpu metrics values for a device.
Definition: amdsmi.h:977
Definition: amdsmi.h:359
Definition: amdsmi.h:369
Definition: amdsmi.h:389
Definition: amdsmi.h:579
Definition: amdsmi.h:397
uint64_t uncorrectable_count
Accumulated uncorrectable errors.
Definition: amdsmi.h:1074
uint64_t correctable_count
Accumulated correctable errors.
Definition: amdsmi.h:1073
Definition: amdsmi.h:611
amdsmi_evt_notification_type_t event
Event type.
Definition: amdsmi.h:613
amdsmi_device_handle device_handle
Handler of device that corresponds to the event.
Definition: amdsmi.h:612
This structure holds 2 amdsmi_range_t's, one for frequency and one for voltage. These 2 ranges indica...
Definition: amdsmi.h:937
amdsmi_range_t freq_range
The frequency range for this VDDC Curve point.
Definition: amdsmi.h:938
amdsmi_range_t volt_range
The voltage range for this VDDC Curve point.
Definition: amdsmi.h:939
This structure holds information about clock frequencies.
Definition: amdsmi.h:877
Definition: amdsmi.h:315
Definition: amdsmi.h:349
Definition: amdsmi.h:290
Definition: amdsmi.h:1008
This structure represents a point on the frequency-voltage plane.
Definition: amdsmi.h:927
uint64_t frequency
Frequency coordinate (in Hz)
Definition: amdsmi.h:928
Definition: amdsmi.h:945
This structure holds the frequency-voltage values for a device.
Definition: amdsmi.h:956
amdsmi_range_t curr_mclk_range
(upper bound only)
Definition: amdsmi.h:958
amdsmi_range_t mclk_freq_limits
The range possible of MCLK values.
Definition: amdsmi.h:961
uint32_t num_regions
The number of voltage curve regions.
Definition: amdsmi.h:967
amdsmi_range_t curr_sclk_range
The current SCLK frequency range.
Definition: amdsmi.h:957
amdsmi_range_t sclk_freq_limits
The range possible of SCLK values.
Definition: amdsmi.h:960
amdsmi_od_volt_curve_t curve
The current voltage curve.
Definition: amdsmi.h:966
This structure holds information about the possible PCIe bandwidths. Specifically,...
Definition: amdsmi.h:900
Definition: amdsmi.h:331
Definition: amdsmi.h:379
This structure contains information about which power profiles are supported by the system for a give...
Definition: amdsmi.h:857
amdsmi_bit_field_t available_profiles
Definition: amdsmi.h:861
amdsmi_power_profile_preset_masks_t current
Definition: amdsmi.h:866
Definition: amdsmi.h:406
This structure contains information specific to a process.
Definition: amdsmi.h:1089
uint64_t sdma_usage
SDMA usage in microseconds.
Definition: amdsmi.h:1093
uint32_t cu_occupancy
Compute Unit usage in percent.
Definition: amdsmi.h:1094
This structure represents a range (e.g., frequencies or voltages).
Definition: amdsmi.h:273
amdsmi_memory_page_status_t status
Page "reserved" status.
Definition: amdsmi.h:844
uint64_t page_address
Start address of page.
Definition: amdsmi.h:842
AMDSMI_UTILIZATION_COUNTER_TYPE type
Utilization counter type.
Definition: amdsmi.h:834
Definition: amdsmi.h:340
Definition: amdsmi.h:310
Definition: amdsmi.h:279
Definition: amdsmi.h:321
This union holds the value of an amdsmi_func_id_iter_handle_t. The value may be a function name,...
Definition: amdsmi.h:1111
amdsmi_event_type_t evnt_type
Used for amdsmi_event_group_t variants.
Definition: amdsmi.h:1120
const char * name
name string (applicable to functions only)
Definition: amdsmi.h:1113
amdsmi_clk_type_t clk_type
Used for amdsmi_fw_block_t variants.
Definition: amdsmi.h:1124
amdsmi_fw_block_t fw_block
Used for amdsmi_gpu_block_t variants.
Definition: amdsmi.h:1126
amdsmi_temperature_metric_t temp_metric
Used for amdsmi_event_type_t variants.
Definition: amdsmi.h:1118
amdsmi_event_group_t evnt_group
Used for amdsmi_clk_type_t variants.
Definition: amdsmi.h:1122
amdsmi_memory_type_t memory_type
< Used for amdsmi_memory_type_t variants
Definition: amdsmi.h:1116