Bandwidth monitor#
Modules | |
| HSMP Metrics Table | |
| Auxillary functions | |
Data Structures | |
| struct | amdsmi_pcie_info_t::pcie_static_ |
| struct | amdsmi_pcie_info_t::pcie_metric_ |
| struct | amdsmi_gpu_cache_info_t::cache_ |
| struct | amdsmi_fw_info_t::fw_info_list_ |
| struct | amdsmi_nps_caps_t::nps_flags_ |
| struct | amdsmi_memory_partition_config_t::numa_range_ |
| struct | amdsmi_link_metrics_t::_links |
| struct | amdsmi_proc_info_t::engine_usage_ |
| struct | amdsmi_proc_info_t::memory_usage_ |
| struct | amdsmi_cper_valid_bits_t::valid_bits_ |
Functions | |
| 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) |
| Get current input output bandwidth. More... | |
| 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) |
| Get current input output bandwidth. More... | |
Variables | |
| uint32_t | amdsmi_hsmp_driver_version_t::major |
| Major version number. | |
| uint32_t | amdsmi_hsmp_driver_version_t::minor |
| Minor version number. | |
| uint64_t | amdsmi_range_t::lower_bound |
| Lower bound of range. | |
| uint64_t | amdsmi_range_t::upper_bound |
| Upper bound of range. | |
| uint64_t | amdsmi_range_t::reserved [2] |
| uint8_t | amdsmi_xgmi_info_t::xgmi_lanes |
| uint64_t | amdsmi_xgmi_info_t::xgmi_hive_id |
| uint64_t | amdsmi_xgmi_info_t::xgmi_node_id |
| uint32_t | amdsmi_xgmi_info_t::index |
| uint32_t | amdsmi_xgmi_info_t::reserved [9] |
| uint32_t | amdsmi_vram_usage_t::vram_total |
| In MB. | |
| uint32_t | amdsmi_vram_usage_t::vram_used |
| In MB. | |
| uint32_t | amdsmi_vram_usage_t::reserved [2] |
| uint64_t | amdsmi_violation_status_t::reference_timestamp |
| Represents CPU timestamp in microseconds (uS) | |
| uint64_t | amdsmi_violation_status_t::violation_timestamp |
| Violation time. Units in nanoseconds (ns) {@linux_bm}, in milliseconds (ms) {@host}. | |
| uint64_t | amdsmi_violation_status_t::acc_counter |
| Current accumulated counter; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_prochot_thrm |
| Current accumulated processor hot violation count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_ppt_pwr |
| PVIOL; Current accumulated Package Power Tracking (PPT) count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_socket_thrm |
| TVIOL; Current accumulated Socket thermal count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_vr_thrm |
| Current accumulated voltage regulator count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_hbm_thrm |
| Current accumulated High Bandwidth Memory (HBM) thermal count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::acc_gfx_clk_below_host_limit |
| Current graphic clock below host limit count; Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::per_prochot_thrm |
| Processor hot violation % (greater than 0% is a violation); Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::per_ppt_pwr |
| PVIOL; Package Power Tracking (PPT) violation % (greater than 0% is a violation); Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::per_socket_thrm |
| TVIOL; Socket thermal violation % (greater than 0% is a violation); Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::per_vr_thrm |
| Voltage regulator violation % (greater than 0% is a violation); Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::per_hbm_thrm |
| High Bandwidth Memory (HBM) thermal violation % (greater than 0% is a violation); Max uint64 means unsupported. | |
| uint64_t | amdsmi_violation_status_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 | amdsmi_violation_status_t::active_prochot_thrm |
| Processor hot violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint8_t | amdsmi_violation_status_t::active_ppt_pwr |
| Package Power Tracking (PPT) violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint8_t | amdsmi_violation_status_t::active_socket_thrm |
| Socket thermal violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint8_t | amdsmi_violation_status_t::active_vr_thrm |
| Voltage regulator violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint8_t | amdsmi_violation_status_t::active_hbm_thrm |
| High Bandwidth Memory (HBM) thermal violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint8_t | amdsmi_violation_status_t::active_gfx_clk_below_host_limit |
| Graphics clock below host limit violation; 1 = active 0 = not active; Max uint8 means unsupported. | |
| uint64_t | amdsmi_violation_status_t::reserved [3] |
| Reserved for new violation info. | |
| amdsmi_range_t | amdsmi_frequency_range_t::supported_freq_range |
| In MHz. | |
| amdsmi_range_t | amdsmi_frequency_range_t::current_freq_range |
| In MHz. | |
| uint32_t | amdsmi_frequency_range_t::reserved [8] |
| uint64_t amdsmi_bdf_t::function_number: 3 | |
| uint64_t amdsmi_bdf_t::device_number: 5 | |
| uint64_t amdsmi_bdf_t::bus_number: 8 | |
| uint64_t amdsmi_bdf_t::domain_number: 48 | |
| struct { | |
| uint64_t function_number: 3 | |
| uint64_t device_number: 5 | |
| uint64_t bus_number: 8 | |
| uint64_t domain_number: 48 | |
| }; | |
| uint64_t | amdsmi_bdf_t::as_uint |
| uint32_t | amdsmi_enumeration_info_t::drm_render |
| uint32_t | amdsmi_enumeration_info_t::drm_card |
| uint32_t | amdsmi_enumeration_info_t::hsa_id |
| uint32_t | amdsmi_enumeration_info_t::hip_id |
| char | amdsmi_enumeration_info_t::hip_uuid [AMDSMI_MAX_STRING_LENGTH] |
| uint16_t | amdsmi_pcie_info_t::pcie_static_::max_pcie_width |
| maximum number of PCIe lanes | |
| uint32_t | amdsmi_pcie_info_t::pcie_static_::max_pcie_speed |
| maximum PCIe speed in GT/s | |
| uint32_t | amdsmi_pcie_info_t::pcie_static_::pcie_interface_version |
| PCIe interface version. | |
| amdsmi_card_form_factor_t | amdsmi_pcie_info_t::pcie_static_::slot_type |
| card form factor | |
| uint32_t | amdsmi_pcie_info_t::pcie_static_::max_pcie_interface_version |
| maximum PCIe link generation | |
| uint64_t | amdsmi_pcie_info_t::pcie_static_::reserved [9] |
| struct amdsmi_pcie_info_t::pcie_static_ | amdsmi_pcie_info_t::pcie_static |
| uint16_t | amdsmi_pcie_info_t::pcie_metric_::pcie_width |
| current PCIe width | |
| uint32_t | amdsmi_pcie_info_t::pcie_metric_::pcie_speed |
| current PCIe speed in MT/s | |
| uint32_t | amdsmi_pcie_info_t::pcie_metric_::pcie_bandwidth |
| current instantaneous PCIe bandwidth in Mb/s | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::pcie_replay_count |
| total number of the replays issued on the PCIe link | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::pcie_l0_to_recovery_count |
| total number of times the PCIe link transitioned from L0 to the recovery state | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::pcie_replay_roll_over_count |
| total number of replay rollovers issued on the PCIe link | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::pcie_nak_sent_count |
| total number of NAKs issued on the PCIe link by the device | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::pcie_nak_received_count |
| total number of NAKs issued on the PCIe link by the receiver | |
| uint32_t | amdsmi_pcie_info_t::pcie_metric_::pcie_lc_perf_other_end_recovery_count |
| PCIe other end recovery counter. | |
| uint64_t | amdsmi_pcie_info_t::pcie_metric_::reserved [12] |
| struct amdsmi_pcie_info_t::pcie_metric_ | amdsmi_pcie_info_t::pcie_metric |
| uint64_t | amdsmi_pcie_info_t::reserved [32] |
| uint64_t | amdsmi_power_cap_info_t::power_cap |
| current power cap Units uW {@linux_bm} or W {@host} | |
| uint64_t | amdsmi_power_cap_info_t::default_power_cap |
| default power cap Units uW {@linux_bm} or W {@host} | |
| uint64_t | amdsmi_power_cap_info_t::dpm_cap |
| dpm power cap Units MHz {@linux_bm} or Hz {@host} | |
| uint64_t | amdsmi_power_cap_info_t::min_power_cap |
| minimum power cap Units uW {@linux_bm} or W {@host} | |
| uint64_t | amdsmi_power_cap_info_t::max_power_cap |
| maximum power cap Units uW {@linux_bm} or W {@host} | |
| uint64_t | amdsmi_power_cap_info_t::reserved [3] |
| char | amdsmi_vbios_info_t::name [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_vbios_info_t::build_date [AMDSMI_MAX_DATE_LENGTH] |
| char | amdsmi_vbios_info_t::part_number [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_vbios_info_t::version [AMDSMI_MAX_STRING_LENGTH] |
| uint64_t | amdsmi_vbios_info_t::reserved [32] |
| uint32_t | amdsmi_gpu_cache_info_t::num_cache_types |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::cache_properties |
| amdsmi_cache_property_type_t which is a bitmask | |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::cache_size |
| In KB. | |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::cache_level |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::max_num_cu_shared |
| Indicates how many Compute Units share this cache instance. | |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::num_cache_instance |
| total number of instance of this cache type | |
| uint32_t | amdsmi_gpu_cache_info_t::cache_::reserved [3] |
| struct amdsmi_gpu_cache_info_t::cache_ | amdsmi_gpu_cache_info_t::cache [AMDSMI_MAX_CACHE_TYPES] |
| uint32_t | amdsmi_gpu_cache_info_t::reserved [15] |
| uint8_t | amdsmi_fw_info_t::num_fw_info |
| amdsmi_fw_block_t | amdsmi_fw_info_t::fw_info_list_::fw_id |
| uint64_t | amdsmi_fw_info_t::fw_info_list_::fw_version |
| uint64_t | amdsmi_fw_info_t::fw_info_list_::reserved [2] |
| struct amdsmi_fw_info_t::fw_info_list_ | amdsmi_fw_info_t::fw_info_list [AMDSMI_FW_ID__MAX] |
| uint32_t | amdsmi_fw_info_t::reserved [7] |
| char | amdsmi_asic_info_t::market_name [AMDSMI_MAX_STRING_LENGTH] |
| uint32_t | amdsmi_asic_info_t::vendor_id |
| Use 32 bit to be compatible with other platform. | |
| char | amdsmi_asic_info_t::vendor_name [AMDSMI_MAX_STRING_LENGTH] |
| uint32_t | amdsmi_asic_info_t::subvendor_id |
| The subsystem vendor id. | |
| uint64_t | amdsmi_asic_info_t::device_id |
| The device id of a GPU. | |
| uint32_t | amdsmi_asic_info_t::rev_id |
| char | amdsmi_asic_info_t::asic_serial [AMDSMI_MAX_STRING_LENGTH] |
| uint32_t | amdsmi_asic_info_t::oam_id |
| 0xFFFF if not supported | |
| uint32_t | amdsmi_asic_info_t::num_of_compute_units |
| 0xFFFFFFFF if not supported | |
| uint64_t | amdsmi_asic_info_t::target_graphics_version |
| 0xFFFFFFFFFFFFFFFF if not supported | |
| uint32_t | amdsmi_asic_info_t::reserved [22] |
| uint64_t | amdsmi_kfd_info_t::kfd_id |
| uint32_t | amdsmi_kfd_info_t::node_id |
| uint32_t | amdsmi_kfd_info_t::current_partition_id |
| uint32_t | amdsmi_kfd_info_t::reserved [12] |
| uint32_t | amdsmi_nps_caps_t::nps_flags_::nps1_cap:1 |
| bool 1 = true; 0 = false | |
| uint32_t | amdsmi_nps_caps_t::nps_flags_::nps2_cap:1 |
| bool 1 = true; 0 = false | |
| uint32_t | amdsmi_nps_caps_t::nps_flags_::nps4_cap:1 |
| bool 1 = true; 0 = false | |
| uint32_t | amdsmi_nps_caps_t::nps_flags_::nps8_cap:1 |
| bool 1 = true; 0 = false | |
| uint32_t | amdsmi_nps_caps_t::nps_flags_::reserved:28 |
| struct amdsmi_nps_caps_t::nps_flags_ | amdsmi_nps_caps_t::nps_flags |
| uint32_t | amdsmi_nps_caps_t::nps_cap_mask |
| amdsmi_nps_caps_t | amdsmi_memory_partition_config_t::partition_caps |
| amdsmi_memory_partition_type_t | amdsmi_memory_partition_config_t::mp_mode |
| uint32_t | amdsmi_memory_partition_config_t::num_numa_ranges |
| amdsmi_vram_type_t | amdsmi_memory_partition_config_t::numa_range_::memory_type |
| uint64_t | amdsmi_memory_partition_config_t::numa_range_::start |
| uint64_t | amdsmi_memory_partition_config_t::numa_range_::end |
| struct amdsmi_memory_partition_config_t::numa_range_ | amdsmi_memory_partition_config_t::numa_range [AMDSMI_MAX_NUM_NUMA_NODES] |
| uint64_t | amdsmi_memory_partition_config_t::reserved [11] |
| amdsmi_accelerator_partition_type_t | amdsmi_accelerator_partition_profile_t::profile_type |
| SPX, DPX, QPX, CPX and so on. | |
| uint32_t | amdsmi_accelerator_partition_profile_t::num_partitions |
| On MI300X: SPX=>1, DPX=>2, QPX=>4, CPX=>8; length of resources. | |
| amdsmi_nps_caps_t | amdsmi_accelerator_partition_profile_t::memory_caps |
| Possible memory partition capabilities. | |
| uint32_t | amdsmi_accelerator_partition_profile_t::profile_index |
| Index in the profiles array in amdsmi_accelerator_partition_profile_t. | |
| uint32_t | amdsmi_accelerator_partition_profile_t::num_resources |
| length of index_of_resources_profile | |
| uint32_t | amdsmi_accelerator_partition_profile_t::resources [AMDSMI_MAX_ACCELERATOR_PARTITIONS][AMDSMI_MAX_CP_PROFILE_RESOURCES] |
| uint64_t | amdsmi_accelerator_partition_profile_t::reserved [13] |
| uint32_t | amdsmi_accelerator_partition_resource_profile_t::profile_index |
| amdsmi_accelerator_partition_resource_type_t | amdsmi_accelerator_partition_resource_profile_t::resource_type |
| uint32_t | amdsmi_accelerator_partition_resource_profile_t::partition_resource |
| Resources a partition can use, which may be shared. | |
| uint32_t | amdsmi_accelerator_partition_resource_profile_t::num_partitions_share_resource |
| If it is greater than 1, then resource is shared. | |
| uint64_t | amdsmi_accelerator_partition_resource_profile_t::reserved [6] |
| uint32_t | amdsmi_accelerator_partition_profile_config_t::num_profiles |
| The length of profiles array. | |
| uint32_t | amdsmi_accelerator_partition_profile_config_t::num_resource_profiles |
| amdsmi_accelerator_partition_resource_profile_t | amdsmi_accelerator_partition_profile_config_t::resource_profiles [AMDSMI_MAX_CP_PROFILE_RESOURCES] |
| uint32_t | amdsmi_accelerator_partition_profile_config_t::default_profile_index |
| The index of the default profile in the profiles array. | |
| amdsmi_accelerator_partition_profile_t | amdsmi_accelerator_partition_profile_config_t::profiles [AMDSMI_MAX_ACCELERATOR_PROFILE] |
| uint64_t | amdsmi_accelerator_partition_profile_config_t::reserved [30] |
| uint32_t | amdsmi_link_metrics_t::num_links |
| number of links | |
| amdsmi_bdf_t | amdsmi_link_metrics_t::_links::bdf |
| uint32_t | amdsmi_link_metrics_t::_links::bit_rate |
| current link speed in Gb/s | |
| uint32_t | amdsmi_link_metrics_t::_links::max_bandwidth |
| max bandwidth of the link in Gb/s | |
| amdsmi_link_type_t | amdsmi_link_metrics_t::_links::link_type |
| type of the link | |
| uint64_t | amdsmi_link_metrics_t::_links::read |
| total data received for each link in KB | |
| uint64_t | amdsmi_link_metrics_t::_links::write |
| total data transfered for each link in KB | |
| uint64_t | amdsmi_link_metrics_t::_links::reserved [2] |
| struct amdsmi_link_metrics_t::_links | amdsmi_link_metrics_t::links [AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK] |
| uint64_t | amdsmi_link_metrics_t::reserved [7] |
| amdsmi_vram_type_t | amdsmi_vram_info_t::vram_type |
| amdsmi_vram_vendor_type_t | amdsmi_vram_info_t::vram_vendor |
| uint64_t | amdsmi_vram_info_t::vram_size |
| vram size in MB | |
| uint32_t | amdsmi_vram_info_t::vram_bit_width |
| In bits. | |
| uint64_t | amdsmi_vram_info_t::vram_max_bandwidth |
| The VRAM max bandwidth at current memory clock (GB/s) | |
| uint64_t | amdsmi_vram_info_t::reserved [4] |
| char | amdsmi_driver_info_t::driver_version [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_driver_info_t::driver_date [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_driver_info_t::driver_name [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_board_info_t::model_number [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_board_info_t::product_serial [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_board_info_t::fru_id [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_board_info_t::product_name [AMDSMI_MAX_STRING_LENGTH] |
| char | amdsmi_board_info_t::manufacturer_name [AMDSMI_MAX_STRING_LENGTH] |
| uint64_t | amdsmi_board_info_t::reserved [32] |
| uint64_t | amdsmi_power_info_t::socket_power |
| Units in uW {@host}, Host only. | |
| uint32_t | amdsmi_power_info_t::current_socket_power |
| Units in W {@linux_bm}, Linux only. | |
| uint32_t | amdsmi_power_info_t::average_socket_power |
| Units in W {@linux_bm}, Linux only. | |
| uint32_t | amdsmi_power_info_t::gfx_voltage |
| GFX voltage measurement in mV {@linux_bm} or V {@host}. | |
| uint32_t | amdsmi_power_info_t::soc_voltage |
| SOC voltage measurement in mV {@linux_bm} or V {@host}. | |
| uint32_t | amdsmi_power_info_t::mem_voltage |
| MEM voltage measurement in mV {@linux_bm} or V {@host}. | |
| uint32_t | amdsmi_power_info_t::power_limit |
| The power limit in W {@linux_bm}, Linux only. | |
| uint32_t | amdsmi_power_info_t::reserved [2] |
| uint32_t | amdsmi_clk_info_t::clk |
| In MHz. | |
| uint32_t | amdsmi_clk_info_t::min_clk |
| In MHz. | |
| uint32_t | amdsmi_clk_info_t::max_clk |
| In MHz. | |
| uint8_t | amdsmi_clk_info_t::clk_locked |
| True/False. | |
| uint8_t | amdsmi_clk_info_t::clk_deep_sleep |
| In MHz. | |
| uint32_t | amdsmi_clk_info_t::reserved [4] |
| uint32_t | amdsmi_engine_usage_t::gfx_activity |
| In %. | |
| uint32_t | amdsmi_engine_usage_t::umc_activity |
| In %. | |
| uint32_t | amdsmi_engine_usage_t::mm_activity |
| In %. | |
| uint32_t | amdsmi_engine_usage_t::reserved [13] |
| char | amdsmi_proc_info_t::name [AMDSMI_MAX_STRING_LENGTH] |
| amdsmi_process_handle_t | amdsmi_proc_info_t::pid |
| uint64_t | amdsmi_proc_info_t::mem |
| In bytes. | |
| uint64_t | amdsmi_proc_info_t::engine_usage_::gfx |
| In nano-secs. | |
| uint64_t | amdsmi_proc_info_t::engine_usage_::enc |
| In nano-secs. | |
| uint32_t | amdsmi_proc_info_t::engine_usage_::reserved [12] |
| struct amdsmi_proc_info_t::engine_usage_ | amdsmi_proc_info_t::engine_usage |
| time the process spends using these engines in ns | |
| uint64_t | amdsmi_proc_info_t::memory_usage_::gtt_mem |
| In MB. | |
| uint64_t | amdsmi_proc_info_t::memory_usage_::cpu_mem |
| In MB. | |
| uint64_t | amdsmi_proc_info_t::memory_usage_::vram_mem |
| In MB. | |
| uint32_t | amdsmi_proc_info_t::memory_usage_::reserved [10] |
| struct amdsmi_proc_info_t::memory_usage_ | amdsmi_proc_info_t::memory_usage |
| in bytes | |
| char | amdsmi_proc_info_t::container_name [AMDSMI_MAX_STRING_LENGTH] |
| uint32_t | amdsmi_proc_info_t::reserved [12] |
| uint8_t | amdsmi_p2p_capability_t::is_iolink_coherent |
| 1 = true, 0 = false, UINT8_MAX = Not defined | |
| uint8_t | amdsmi_p2p_capability_t::is_iolink_atomics_32bit |
| 1 = true, 0 = false, UINT8_MAX = Not defined | |
| uint8_t | amdsmi_p2p_capability_t::is_iolink_atomics_64bit |
| 1 = true, 0 = false, UINT8_MAX = Not defined | |
| uint8_t | amdsmi_p2p_capability_t::is_iolink_dma |
| 1 = true, 0 = false, UINT8_MAX = Not defined | |
| uint8_t | amdsmi_p2p_capability_t::is_iolink_bi_directional |
| 1 = true, 0 = false, UINT8_MAX = Not defined | |
| uint64_t | amdsmi_counter_value_t::value |
| Counter value. | |
| uint64_t | amdsmi_counter_value_t::time_enabled |
| Time that the counter was enabled in nanoseconds. | |
| uint64_t | amdsmi_counter_value_t::time_running |
| Time that the counter was running in nanoseconds. | |
| amdsmi_processor_handle | amdsmi_evt_notification_data_t::processor_handle |
| Handler of device that corresponds to the event. | |
| amdsmi_evt_notification_type_t | amdsmi_evt_notification_data_t::event |
| Event type. | |
| char | amdsmi_evt_notification_data_t::message [MAX_EVENT_NOTIFICATION_MSG_SIZE] |
| Event message. | |
| amdsmi_utilization_counter_type_t | amdsmi_utilization_counter_t::type |
| Utilization counter type. | |
| uint64_t | amdsmi_utilization_counter_t::value |
| Coarse grain activity counter value (average) | |
| uint64_t | amdsmi_utilization_counter_t::fine_value [AMDSMI_MAX_UTILIZATION_VALUES] |
| Utilization counter value. | |
| uint16_t | amdsmi_utilization_counter_t::fine_value_count |
| uint64_t | amdsmi_retired_page_record_t::page_address |
| Start address of page. | |
| uint64_t | amdsmi_retired_page_record_t::page_size |
| Page size. | |
| amdsmi_memory_page_status_t | amdsmi_retired_page_record_t::status |
| Page "reserved" status. | |
| amdsmi_bit_field_t | amdsmi_power_profile_status_t::available_profiles |
| amdsmi_power_profile_preset_masks_t | amdsmi_power_profile_status_t::current |
| uint32_t | amdsmi_power_profile_status_t::num_profiles |
| bool | amdsmi_frequencies_t::has_deep_sleep |
| uint32_t | amdsmi_frequencies_t::num_supported |
| uint32_t | amdsmi_frequencies_t::current |
| uint64_t | amdsmi_frequencies_t::frequency [AMDSMI_MAX_NUM_FREQUENCIES] |
| uint32_t | amdsmi_dpm_policy_entry_t::policy_id |
| char | amdsmi_dpm_policy_entry_t::policy_description [AMDSMI_MAX_NAME] |
| uint32_t | amdsmi_dpm_policy_t::num_supported |
| The number of supported policies. | |
| uint32_t | amdsmi_dpm_policy_t::current |
| The current policy index. | |
| amdsmi_dpm_policy_entry_t | amdsmi_dpm_policy_t::policies [AMDSMI_MAX_NUM_PM_POLICIES] |
| List of policies. | |
| amdsmi_frequencies_t | amdsmi_pcie_bandwidth_t::transfer_rate |
| Transfer rates (T/s) that are possible. | |
| uint32_t | amdsmi_pcie_bandwidth_t::lanes [AMDSMI_MAX_NUM_FREQUENCIES] |
| List of lanes for corresponding transfer rate. | |
| uint32_t | amdsmi_version_t::year |
| Last 2 digits of the Year released - To Be Depricated. | |
| uint32_t | amdsmi_version_t::major |
| Major version. | |
| uint32_t | amdsmi_version_t::minor |
| Minor version. | |
| uint32_t | amdsmi_version_t::release |
| Patch, build or stepping version. | |
| const char * | amdsmi_version_t::build |
| Full Build version string. | |
| uint64_t | amdsmi_od_vddc_point_t::frequency |
| Frequency coordinate (in Hz) | |
| uint64_t | amdsmi_od_vddc_point_t::voltage |
| Voltage coordinate (in mV) | |
| amdsmi_range_t | amdsmi_freq_volt_region_t::freq_range |
| The frequency range for this VDDC Curve point. | |
| amdsmi_range_t | amdsmi_freq_volt_region_t::volt_range |
| The voltage range for this VDDC Curve point. | |
| amdsmi_od_vddc_point_t | amdsmi_od_volt_curve_t::vc_points [AMDSMI_NUM_VOLTAGE_CURVE_POINTS] |
| make up the voltage frequency curve points. | |
| amdsmi_range_t | amdsmi_od_volt_freq_data_t::curr_sclk_range |
| The current SCLK frequency range in MHz. | |
| amdsmi_range_t | amdsmi_od_volt_freq_data_t::curr_mclk_range |
| The current MCLK frequency range, upper bound only in MHz. | |
| amdsmi_range_t | amdsmi_od_volt_freq_data_t::sclk_freq_limits |
| The range possible of SCLK values in MHz. | |
| amdsmi_range_t | amdsmi_od_volt_freq_data_t::mclk_freq_limits |
| The range possible of MCLK values in MHz. | |
| amdsmi_od_volt_curve_t | amdsmi_od_volt_freq_data_t::curve |
| The current voltage curve. | |
| uint32_t | amdsmi_od_volt_freq_data_t::num_regions |
| The number of voltage curve regions. | |
| uint32_t | amdsmi_gpu_xcp_metrics_t::gfx_busy_inst [AMDSMI_MAX_NUM_XCC] |
| v1.6 additions The max uint32_t will be used if that information is N/A More... | |
| uint16_t | amdsmi_gpu_xcp_metrics_t::jpeg_busy [AMDSMI_MAX_NUM_JPEG] |
| Utilization Instantaneous in %. | |
| uint16_t | amdsmi_gpu_xcp_metrics_t::vcn_busy [AMDSMI_MAX_NUM_VCN] |
| Utilization Instantaneous in %. | |
| uint64_t | amdsmi_gpu_xcp_metrics_t::gfx_busy_acc [AMDSMI_MAX_NUM_XCC] |
| Utilization Accumulated in %. | |
| uint64_t | amdsmi_gpu_xcp_metrics_t::gfx_below_host_limit_acc [AMDSMI_MAX_NUM_XCC] |
| v1.7 additions More... | |
| amd_metrics_table_header_t | amdsmi_gpu_metrics_t::common_header |
| uint16_t | amdsmi_gpu_metrics_t::temperature_edge |
| v1.0 Base More... | |
| uint16_t | amdsmi_gpu_metrics_t::temperature_hotspot |
| uint16_t | amdsmi_gpu_metrics_t::temperature_mem |
| uint16_t | amdsmi_gpu_metrics_t::temperature_vrgfx |
| uint16_t | amdsmi_gpu_metrics_t::temperature_vrsoc |
| uint16_t | amdsmi_gpu_metrics_t::temperature_vrmem |
| uint16_t | amdsmi_gpu_metrics_t::average_gfx_activity |
| Average Utilization (in %) More... | |
| uint16_t | amdsmi_gpu_metrics_t::average_umc_activity |
| memory controller | |
| uint16_t | amdsmi_gpu_metrics_t::average_mm_activity |
| UVD or VCN. | |
| uint16_t | amdsmi_gpu_metrics_t::average_socket_power |
| Power (W) /Energy (15.259uJ per 1ns) | |
| uint64_t | amdsmi_gpu_metrics_t::energy_accumulator |
| v1 mod. (32->64) | |
| uint64_t | amdsmi_gpu_metrics_t::system_clock_counter |
| Driver attached timestamp (in ns) More... | |
| uint16_t | amdsmi_gpu_metrics_t::average_gfxclk_frequency |
| Average clocks (MHz) | |
| uint16_t | amdsmi_gpu_metrics_t::average_socclk_frequency |
| uint16_t | amdsmi_gpu_metrics_t::average_uclk_frequency |
| uint16_t | amdsmi_gpu_metrics_t::average_vclk0_frequency |
| uint16_t | amdsmi_gpu_metrics_t::average_dclk0_frequency |
| uint16_t | amdsmi_gpu_metrics_t::average_vclk1_frequency |
| uint16_t | amdsmi_gpu_metrics_t::average_dclk1_frequency |
| uint16_t | amdsmi_gpu_metrics_t::current_gfxclk |
| Current clocks (MHz) | |
| uint16_t | amdsmi_gpu_metrics_t::current_socclk |
| uint16_t | amdsmi_gpu_metrics_t::current_uclk |
| uint16_t | amdsmi_gpu_metrics_t::current_vclk0 |
| uint16_t | amdsmi_gpu_metrics_t::current_dclk0 |
| uint16_t | amdsmi_gpu_metrics_t::current_vclk1 |
| uint16_t | amdsmi_gpu_metrics_t::current_dclk1 |
| uint32_t | amdsmi_gpu_metrics_t::throttle_status |
| Throttle status. | |
| uint16_t | amdsmi_gpu_metrics_t::current_fan_speed |
| Fans (RPM) | |
| uint16_t | amdsmi_gpu_metrics_t::pcie_link_width |
| Link width (number of lanes) /speed (0.1 GT/s) More... | |
| uint16_t | amdsmi_gpu_metrics_t::pcie_link_speed |
| in 0.1 GT/s; v1 mod. (8->16) | |
| uint32_t | amdsmi_gpu_metrics_t::gfx_activity_acc |
| new in v1 | |
| uint32_t | amdsmi_gpu_metrics_t::mem_activity_acc |
| new in v1 | |
| uint16_t | amdsmi_gpu_metrics_t::temperature_hbm [AMDSMI_NUM_HBM_INSTANCES] |
| new in v1 | |
| uint64_t | amdsmi_gpu_metrics_t::firmware_timestamp |
| PMFW attached timestamp (10ns resolution) | |
| uint16_t | amdsmi_gpu_metrics_t::voltage_soc |
| In mV. | |
| uint16_t | amdsmi_gpu_metrics_t::voltage_gfx |
| In mV. | |
| uint16_t | amdsmi_gpu_metrics_t::voltage_mem |
| In mV. | |
| uint64_t | amdsmi_gpu_metrics_t::indep_throttle_status |
| Throttle status. | |
| uint16_t | amdsmi_gpu_metrics_t::current_socket_power |
| In Watts. | |
| uint16_t | amdsmi_gpu_metrics_t::vcn_activity [AMDSMI_MAX_NUM_VCN] |
| Utilization (%) | |
| uint32_t | amdsmi_gpu_metrics_t::gfxclk_lock_status |
| Clock Lock Status. Each bit corresponds to clock instance. | |
| uint16_t | amdsmi_gpu_metrics_t::xgmi_link_width |
| XGMI bus width in GB/s. | |
| uint16_t | amdsmi_gpu_metrics_t::xgmi_link_speed |
| XGMI bus bitrate in GB/s. | |
| uint64_t | amdsmi_gpu_metrics_t::pcie_bandwidth_acc |
| PCIE accumulated bandwidth (GB/sec) | |
| uint64_t | amdsmi_gpu_metrics_t::pcie_bandwidth_inst |
| PCIE instantaneous bandwidth (GB/sec) | |
| uint64_t | amdsmi_gpu_metrics_t::pcie_l0_to_recov_count_acc |
| PCIE L0 to recovery state transition accumulated count. | |
| uint64_t | amdsmi_gpu_metrics_t::pcie_replay_count_acc |
| PCIE replay accumulated count. | |
| uint64_t | amdsmi_gpu_metrics_t::pcie_replay_rover_count_acc |
| PCIE replay rollover accumulated count. | |
| uint64_t | amdsmi_gpu_metrics_t::xgmi_read_data_acc [AMDSMI_MAX_NUM_XGMI_LINKS] |
| XGMI accumulated data transfer size(KiloBytes) More... | |
| uint64_t | amdsmi_gpu_metrics_t::xgmi_write_data_acc [AMDSMI_MAX_NUM_XGMI_LINKS] |
| In KB. | |
| uint16_t | amdsmi_gpu_metrics_t::current_gfxclks [AMDSMI_MAX_NUM_GFX_CLKS] |
| XGMI current data transfer size(KiloBytes) More... | |
| uint16_t | amdsmi_gpu_metrics_t::current_socclks [AMDSMI_MAX_NUM_CLKS] |
| In KB. | |
| uint16_t | amdsmi_gpu_metrics_t::current_vclk0s [AMDSMI_MAX_NUM_CLKS] |
| In KB. | |
| uint16_t | amdsmi_gpu_metrics_t::current_dclk0s [AMDSMI_MAX_NUM_CLKS] |
| In KB. | |
| uint16_t | amdsmi_gpu_metrics_t::jpeg_activity [AMDSMI_MAX_NUM_JPEG] |
| v1.5 additions More... | |
| uint32_t | amdsmi_gpu_metrics_t::pcie_nak_sent_count_acc |
| PCIE NAK sent accumulated count. | |
| uint32_t | amdsmi_gpu_metrics_t::pcie_nak_rcvd_count_acc |
| PCIE NAK received accumulated count. | |
| uint64_t | amdsmi_gpu_metrics_t::accumulation_counter |
| v1.6 additions More... | |
| uint64_t | amdsmi_gpu_metrics_t::prochot_residency_acc |
| Accumulated throttler residencies. | |
| uint64_t | amdsmi_gpu_metrics_t::ppt_residency_acc |
| Accumulated throttler residencies. More... | |
| uint64_t | amdsmi_gpu_metrics_t::socket_thm_residency_acc |
| Accumulated throttler residencies. More... | |
| uint64_t | amdsmi_gpu_metrics_t::vr_thm_residency_acc |
| uint64_t | amdsmi_gpu_metrics_t::hbm_thm_residency_acc |
| uint16_t | amdsmi_gpu_metrics_t::num_partition |
| Number of current partition. | |
| amdsmi_gpu_xcp_metrics_t | amdsmi_gpu_metrics_t::xcp_stats [AMDSMI_MAX_NUM_XCP] |
| XCP (Graphic Cluster Partitions) metrics stats. | |
| uint32_t | amdsmi_gpu_metrics_t::pcie_lc_perf_other_end_recovery |
| PCIE other end recovery counter. | |
| uint64_t | amdsmi_gpu_metrics_t::vram_max_bandwidth |
| VRAM max bandwidth at max memory clock (GB/s) | |
| uint16_t | amdsmi_gpu_metrics_t::xgmi_link_status [AMDSMI_MAX_NUM_XGMI_LINKS] |
| XGMI link status(up/down) | |
| uint32_t | amdsmi_xgmi_link_status_t::total_links |
| The total links in the status array. | |
| amdsmi_xgmi_link_status_type_t | amdsmi_xgmi_link_status_t::status [AMDSMI_MAX_NUM_XGMI_LINKS] |
| uint64_t | amdsmi_xgmi_link_status_t::reserved [7] |
| char | amdsmi_name_value_t::name [MAX_AMDSMI_NAME_LENGTH] |
| Name. | |
| uint64_t | amdsmi_name_value_t::value |
| Use uint64_t to make it universal. | |
| uint32_t | amdsmi_ras_feature_t::ras_eeprom_version |
| uint32_t | amdsmi_ras_feature_t::ecc_correction_schema_flag |
| ecc_correction_schema mask | |
| uint64_t | amdsmi_error_count_t::correctable_count |
| Accumulated correctable errors. | |
| uint64_t | amdsmi_error_count_t::uncorrectable_count |
| Accumulated uncorrectable errors. | |
| uint64_t | amdsmi_error_count_t::deferred_count |
| Accumulated deferred errors. | |
| uint64_t | amdsmi_error_count_t::reserved [5] |
| uint32_t | amdsmi_process_info_t::process_id |
| Process ID. | |
| uint32_t | amdsmi_process_info_t::pasid |
| PASID (Not working in ROCm 6.4+, deprecating in 7.0) | |
| uint64_t | amdsmi_process_info_t::vram_usage |
| VRAM usage in MB. | |
| uint64_t | amdsmi_process_info_t::sdma_usage |
| SDMA usage in microseconds. | |
| uint32_t | amdsmi_process_info_t::cu_occupancy |
| Compute Unit usage in percent. | |
| uint32_t | amdsmi_topology_nearest_t::count |
| amdsmi_processor_handle | amdsmi_topology_nearest_t::processor_list [AMDSMI_MAX_DEVICES] |
| uint64_t | amdsmi_topology_nearest_t::reserved [15] |
| uint8_t | amdsmi_smu_fw_version_t::debug |
| SMU fw Debug version number. | |
| uint8_t | amdsmi_smu_fw_version_t::minor |
| SMU fw Minor version number. | |
| uint8_t | amdsmi_smu_fw_version_t::major |
| SMU fw Major version number. | |
| uint8_t | amdsmi_smu_fw_version_t::unused |
| reserved fields | |
| uint32_t | amdsmi_ddr_bw_metrics_t::max_bw |
| DDR Maximum theoritical bandwidth in GB/s. | |
| uint32_t | amdsmi_ddr_bw_metrics_t::utilized_bw |
| DDR bandwidth utilization in GB/s. | |
| uint32_t | amdsmi_ddr_bw_metrics_t::utilized_pct |
| DDR bandwidth utilization in % of theoritical max. | |
| uint8_t | amdsmi_temp_range_refresh_rate_t::range: 3 |
| temp range[2:0](3 bit data) | |
| uint8_t | amdsmi_temp_range_refresh_rate_t::ref_rate: 1 |
| DDR refresh rate mode[3](1 bit data) | |
| uint16_t | amdsmi_dimm_power_t::power: 15 |
| Dimm power consumption[31:17](15 bits data) | |
| uint16_t | amdsmi_dimm_power_t::update_rate: 9 |
| Time since last update[16:8](9 bit data) | |
| uint8_t | amdsmi_dimm_power_t::dimm_addr |
| Dimm address[7:0](8 bit data) | |
| uint16_t | amdsmi_dimm_thermal_t::sensor: 11 |
| Dimm thermal sensor[31:21](11 bit data) | |
| uint16_t | amdsmi_dimm_thermal_t::update_rate: 9 |
| Time since last update[16:8](9 bit data) | |
| uint8_t | amdsmi_dimm_thermal_t::dimm_addr |
| Dimm address[7:0](8 bit data) | |
| float | amdsmi_dimm_thermal_t::temp |
| temperature in degree celcius | |
| amdsmi_io_bw_encoding_t | amdsmi_link_id_bw_type_t::bw_type |
| Bandwidth Type Information [1, 2, 4]. | |
| char * | amdsmi_link_id_bw_type_t::link_name |
| Link name [P0, P1, G0, G1 etc]. | |
| uint8_t | amdsmi_dpm_level_t::max_dpm_level |
| Max LCLK DPM level[15:8](8 bit data) | |
| uint8_t | amdsmi_dpm_level_t::min_dpm_level |
| Min LCLK DPM level[7:0](8 bit data) | |
| unsigned char | amdsmi_cper_guid_t::b [16] |
| uint8_t | amdsmi_cper_timestamp_t::seconds |
| uint8_t | amdsmi_cper_timestamp_t::minutes |
| uint8_t | amdsmi_cper_timestamp_t::hours |
| uint8_t | amdsmi_cper_timestamp_t::flag |
| uint8_t | amdsmi_cper_timestamp_t::day |
| uint8_t | amdsmi_cper_timestamp_t::month |
| uint8_t | amdsmi_cper_timestamp_t::year |
| uint8_t | amdsmi_cper_timestamp_t::century |
| uint32_t | amdsmi_cper_valid_bits_t::valid_bits_::platform_id: 1 |
| uint32_t | amdsmi_cper_valid_bits_t::valid_bits_::timestamp: 1 |
| uint32_t | amdsmi_cper_valid_bits_t::valid_bits_::partition_id: 1 |
| uint32_t | amdsmi_cper_valid_bits_t::valid_bits_::reserved: 29 |
| struct amdsmi_cper_valid_bits_t::valid_bits_ | amdsmi_cper_valid_bits_t::valid_bits |
| uint32_t | amdsmi_cper_valid_bits_t::valid_mask |
| char | amdsmi_cper_hdr_t::signature [4] |
| uint16_t | amdsmi_cper_hdr_t::revision |
| uint32_t | amdsmi_cper_hdr_t::signature_end |
| uint16_t | amdsmi_cper_hdr_t::sec_cnt |
| amdsmi_cper_sev_t | amdsmi_cper_hdr_t::error_severity |
| amdsmi_cper_valid_bits_t | amdsmi_cper_hdr_t::cper_valid_bits |
| uint32_t | amdsmi_cper_hdr_t::record_length |
| amdsmi_cper_timestamp_t | amdsmi_cper_hdr_t::timestamp |
| char | amdsmi_cper_hdr_t::platform_id [16] |
| amdsmi_cper_guid_t | amdsmi_cper_hdr_t::partition_id |
| char | amdsmi_cper_hdr_t::creator_id [16] |
| amdsmi_cper_guid_t | amdsmi_cper_hdr_t::notify_type |
| char | amdsmi_cper_hdr_t::record_id [8] |
| uint32_t | amdsmi_cper_hdr_t::flags |
| uint64_t | amdsmi_cper_hdr_t::persistence_info |
| uint8_t | amdsmi_cper_hdr_t::reserved [12] |
Detailed Description
Function Documentation
◆ amdsmi_get_cpu_current_io_bandwidth()
| 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 | ||
| ) |
Get current input output bandwidth.
- Platform:
- cpu_bm
- Parameters
-
[in] processor_handle Cpu socket which to query [in] link - link id and bw type to which io bandwidth to be obtained [in,out] io_bw - Input buffer to fill bandwidth data
- Returns
- amdsmi_status_t | AMDSMI_STATUS_SUCCESS on success, non-zero on fail
◆ amdsmi_get_cpu_current_xgmi_bw()
| 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 | ||
| ) |
Get current input output bandwidth.
- Platform:
- cpu_bm
- Parameters
-
[in] processor_handle Cpu socket which to query [in] link - link id and bw type to which xgmi bandwidth to be obtained [in,out] xgmi_bw - Input buffer to fill bandwidth data
- Returns
- amdsmi_status_t | AMDSMI_STATUS_SUCCESS on success, non-zero on fail
Variable Documentation
◆ gfx_busy_inst
| uint32_t amdsmi_gpu_xcp_metrics_t::gfx_busy_inst[AMDSMI_MAX_NUM_XCC] |
v1.6 additions The max uint32_t will be used if that information is N/A
Utilization Instantaneous in %
◆ gfx_below_host_limit_acc
| uint64_t amdsmi_gpu_xcp_metrics_t::gfx_below_host_limit_acc[AMDSMI_MAX_NUM_XCC] |
v1.7 additions
Total App Clock Counter Accumulated
◆ temperature_edge
| uint16_t amdsmi_gpu_metrics_t::temperature_edge |
v1.0 Base
Temperature in C
◆ average_gfx_activity
| uint16_t amdsmi_gpu_metrics_t::average_gfx_activity |
Average Utilization (in %)
gfx
◆ system_clock_counter
| uint64_t amdsmi_gpu_metrics_t::system_clock_counter |
Driver attached timestamp (in ns)
v1 mod. (moved from top of struct)
◆ pcie_link_width
| uint16_t amdsmi_gpu_metrics_t::pcie_link_width |
Link width (number of lanes) /speed (0.1 GT/s)
v1 mod.(8->16)
◆ xgmi_read_data_acc
| uint64_t amdsmi_gpu_metrics_t::xgmi_read_data_acc[AMDSMI_MAX_NUM_XGMI_LINKS] |
XGMI accumulated data transfer size(KiloBytes)
In KB
◆ current_gfxclks
| uint16_t amdsmi_gpu_metrics_t::current_gfxclks[AMDSMI_MAX_NUM_GFX_CLKS] |
XGMI current data transfer size(KiloBytes)
In KB
◆ jpeg_activity
| uint16_t amdsmi_gpu_metrics_t::jpeg_activity[AMDSMI_MAX_NUM_JPEG] |
v1.5 additions
JPEG activity percent (encode/decode)
◆ accumulation_counter
| uint64_t amdsmi_gpu_metrics_t::accumulation_counter |
v1.6 additions
Accumulation cycle counter
◆ ppt_residency_acc
| uint64_t amdsmi_gpu_metrics_t::ppt_residency_acc |
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))
◆ socket_thm_residency_acc
| uint64_t amdsmi_gpu_metrics_t::socket_thm_residency_acc |
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))