b9b0b26a78afa008086701b8ccca6e7ce3bbeb99
rocm_smi_lib
C++ Library interface for ROCm-SMI to allow you to monitor/trace GPU system attributes
For developer familiar with NVML here is table to help you map the API between the two libraries
| NVML API | Type | Sub-type | Rocm-smi equivalent API |
|---|---|---|---|
| Power State | |||
| GetEnforcedPowerLimit | Device | Power | rsmi_dev_power_cap_set() |
| GetPowerManagementLimit | Device | Power | rsmi_dev_power_cap_get() |
| GetPowerManagementLimitConstraints | Device | Power | rsmi_dev_power_cap_range_get() |
| GetPowerUsage | Device | Power | rsmi_dev_power_ave_get() |
| SetPowerManagementLimit | Device | Power | rsmi_dev_power_cap_set() |
| Performance State | |||
| GetApplicationsClock | Device | Clocks | rsmi_dev_get_gpu_sys_freq() rsmi_dev_get_mem_sys_freq() |
| GetAutoBoostedClocksEnabled | Device | Clocks | rsmi_dev_perf_level_get() |
| GetClock | Device | Clocks | rsmi_dev_get_gpu_sys_freq(). rsmi_dev_get_mem_sys_freq() |
| GetClockInfo | Device | Clocks | rsmi_dev_get_gpu_sys_freq(), rsmi_dev_get_mem_sys_freq() |
| GetMaxClockInfo | Device | Clocks | rsmi_dev_get_gpu_sys_freq(), rsmi_dev_get_mem_sys_freq() |
| GetSupportedGraphicsClocks | Device | Clocks | rsmi_dev_get_gpu_sys_freq(), rsmi_dev_get_mem_sys_freq() |
| GetSupportedMemoryClocks | Device | Clocks | rsmi_dev_get_gpu_sys_freq() rsmi_dev_get_mem_sys_freq() |
| SetAutoBoostedClocksEnabled | Device | Clocks | rsmi_dev_perf_level_set() |
| GetFanSpeed | Device | Physcial | rsmi_dev_mon_get_fan_speed() rsmi_dev_mon_get_max_fan_speed() rsmi_dev_fan_rpms_get() |
| GetTemperature | Device | Physcial | rsmi_dev_temp_metric_get() |
| GetTemperatureThreshold. | Device | Physcial | rsmi_dev_temp_metric_get() |
| Initialization and Cleanup | |||
| Init | |||
| InitWithFlags | Mngt | Admin | rsmi_init() |
| Shutdown | Mngt | Admin | rsmi_shut_down() |
| Error Reporting | |||
| ErrorString | ErrRpt | Err. Rep | rsmi_status_string() |
| Unit Queries | |||
| UnitGetCount | Unit | Admin | rsmi_num_monitor_devices() |
| UnitGetFanSpeedInfo | Unit | Physcial | rsmi_dev_fan_rpms_get(), rsmi_dev_van_speed_get() |
| UnitGetTemperature | . Device | Physical | rsmi_dev_temp_metric_get() |
| UnitGetUnitInfo | Unit | ID. | rsmi_dev_id_get() (device ID) |
| Unit Commands | |||
| DeviceSetApplicationsClocks | Device | Clocks | rsmi_dev_gpu_clk_freq_set() |
| DeviceSetComputeMode | Device | Performance | rsmi_dev_power_profile_set() rsmi_dev_gpu_clk_freq_set() rsmi_dev_perf_level_set() |
| DeviceSetGpuOperationMode | Device | Power | rsmi_dev_power_profile_set() |
| DeviceSetPowerManagementLimit | Device | Power | rsmi_dev_power_cap_set() rsmi_dev_power_profile_set() |
| ROCm Only Clock Management API | |||
| Device | Clocks | rsmi_dev_perf_level_get() | |
| Device | Clocks | rsmi_dev_perf_level_set() | |
| Device. | Clocks | rsmi_dev_overdrive_level_get() | |
| Device. | Clocks | rsmi_dev_overdrive_level_set() |
Example application is logging performance data like Kerenl execution time vs GPU Temprature, GPU and Memory Clocks
To build library and example:
mkdir -p build
cd build
cmake ..
make
cd ..
The above commands will result in building the library librocm_smi.so and an example, rocm_smi_ex, which links with this library.
Beskrivning
Languages
C++
67.5%
C
20.6%
Python
6.6%
CMake
3.4%
Shell
0.6%
Övrigt
1.1%