Struct GpuHandle

Source
pub struct GpuHandle {
    pub hw_monitors: Vec<HwMon>,
    /* private fields */
}
Expand description

A GpuHandle represents a handle over a single GPU device, as exposed in the Linux SysFS.

Fields§

§hw_monitors: Vec<HwMon>

A collection of all HwMons bound to this GPU. They are used to expose real-time data.

Implementations§

Source§

impl GpuHandle

Source

pub fn new_from_path(sysfs_path: PathBuf) -> Result<Self, Error>

Initializes a new GpuHandle from a given SysFS device path.

Normally, the path should look akin to /sys/class/drm/card0/device, and it needs to at least contain a uevent file.

Source

pub fn get_driver(&self) -> &str

Gets the kernel driver used.

Source

pub fn get_pci_id(&self) -> Option<(&str, &str)>

Gets the GPU’s PCI vendor and ID. This is the ID of your GPU chip, e.g. AMD Radeon RX 580.

Source

pub fn get_pci_subsys_id(&self) -> Option<(&str, &str)>

Gets the Card’s PCI vendor and ID. This is the ID of your card model, e.g. Sapphire RX 580 Pulse.

Source

pub fn get_pci_slot_name(&self) -> Option<&str>

Gets the pci slot name of the card.

Gets the current PCIe link speed.

Gets the current PCIe link width.

Gets the maximum possible PCIe link speed.

Gets the maximum possible PCIe link width.

Source

pub fn get_total_vram(&self) -> Result<u64, Error>

Gets total VRAM size in bytes. May not be reported on some devices, such as integrated GPUs.

Source

pub fn get_used_vram(&self) -> Result<u64, Error>

Gets how much VRAM is currently used, in bytes. May not be reported on some devices, such as integrated GPUs.

Source

pub fn get_busy_percent(&self) -> Result<u8, Error>

Returns the GPU busy percentage.

Source

pub fn get_vbios_version(&self) -> Result<String, Error>

Returns the GPU VBIOS version.

Source

pub fn get_vram_vendor(&self) -> Result<String, Error>

Returns the VRAM vendor

Source

pub fn get_power_force_performance_level( &self, ) -> Result<PerformanceLevel, Error>

Returns the currently forced performance level.

Source

pub fn set_power_force_performance_level( &self, level: PerformanceLevel, ) -> Result<(), Error>

Forces a given performance level.

Source

pub fn get_clock_levels<T>( &self, kind: PowerLevelKind, ) -> Result<PowerLevels<T>, Error>
where T: FromStr, <T as FromStr>::Err: Display,

Retuns the list of power levels and index of the currently active level for a given kind of power state. T is the type that values should be deserialized into.

Source

pub fn get_core_clock_levels(&self) -> Result<PowerLevels<u64>, Error>

Gets clocks levels.

Source

pub fn get_memory_clock_levels(&self) -> Result<PowerLevels<u64>, Error>

Gets clocks levels.

Source

pub fn get_pcie_clock_levels(&self) -> Result<PowerLevels<String>, Error>

Gets clocks levels.

Source

pub fn set_enabled_power_levels( &self, kind: PowerLevelKind, levels: &[u8], ) -> Result<(), Error>

Sets the enabled power levels for a power state kind to a given list of levels. This means that only the given power levels will be allowed.

Can only be used if power_force_performance_level is set to manual.

Source

pub fn get_clocks_table(&self) -> Result<ClocksTableGen, Error>

Reads the clocks table from pp_od_clk_voltage.

Source

pub fn set_clocks_table( &self, new_table: &ClocksTableGen, ) -> Result<CommitHandle, Error>

Writes and commits the given clocks table to pp_od_clk_voltage.

Source

pub fn reset_clocks_table(&self) -> Result<(), Error>

Resets the clocks table to the default configuration.

Source

pub fn get_power_profile_modes(&self) -> Result<PowerProfileModesTable, Error>

Reads the list of predefined power profiles and the relevant heuristics settings for them from pp_power_profile_mode

https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#pp-power-profile-mode

Source

pub fn set_active_power_profile_mode(&self, i: u16) -> Result<(), Error>

Sets the current power profile mode. You can get the available modes with [get_power_profile_modes]. Requires the performance level to be set to “manual” first using [set_power_force_performance_level]

Source

pub fn set_custom_power_profile_mode_heuristics( &self, components: &[Vec<Option<i32>>], ) -> Result<(), Error>

Sets a custom power profile mode. You can get the available modes, and the list of heuristic names with [get_power_profile_modes]. Requires the performance level to be set to “manual” first using [set_power_force_performance_level]

Source

pub fn get_fan_acoustic_limit(&self) -> Result<FanInfo, Error>

Gets the fan acoustic limit. Values are in RPM.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-limit-rpm-threshold

Source

pub fn get_fan_acoustic_target(&self) -> Result<FanInfo, Error>

Gets the fan acoustic target. Values are in RPM.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-target-rpm-threshold

Source

pub fn get_fan_target_temperature(&self) -> Result<FanInfo, Error>

Gets the fan temperature target. Values are in degrees.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-target-temperature

Source

pub fn get_fan_minimum_pwm(&self) -> Result<FanInfo, Error>

Gets the fan minimum PWM. Values are in percentages.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-minimum-pwm

Source

pub fn get_fan_zero_rpm_enable(&self) -> Result<bool, Error>

Gets the current fan zero RPM mode.

Only available on Navi3x (RDNA 3) or newer.

Source

pub fn get_fan_zero_rpm_stop_temperature(&self) -> Result<FanInfo, Error>

Gets the current fan zero RPM stop temperature.

Only available on Navi3x (RDNA 3) or newer.

Source

pub fn set_fan_acoustic_limit(&self, value: u32) -> Result<CommitHandle, Error>

Sets the fan acoustic limit. Value is in RPM.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-limit-rpm-threshold

Source

pub fn set_fan_acoustic_target(&self, value: u32) -> Result<CommitHandle, Error>

Sets the fan acoustic target. Value is in RPM.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-target-rpm-threshold

Source

pub fn set_fan_target_temperature( &self, value: u32, ) -> Result<CommitHandle, Error>

Sets the fan temperature target. Value is in degrees.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-target-temperature

Source

pub fn set_fan_minimum_pwm(&self, value: u32) -> Result<CommitHandle, Error>

Sets the fan minimum PWM. Value is a percentage.

Only available on Navi3x (RDNA 3) or newer.

Source

pub fn set_fan_zero_rpm_enable( &self, enabled: bool, ) -> Result<CommitHandle, Error>

Sets the current fan zero RPM mode.

Only available on Navi3x (RDNA 3) or newer.

Source

pub fn set_fan_zero_rpm_stop_temperature( &self, value: u32, ) -> Result<CommitHandle, Error>

Sets the fan zero RPM stop temperature.

Only available on Navi3x (RDNA 3) or newer.

Source

pub fn reset_fan_acoustic_limit(&self) -> Result<(), Error>

Resets the fan acoustic limit.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-limit-rpm-threshold

Source

pub fn reset_fan_acoustic_target(&self) -> Result<(), Error>

Resets the fan acoustic target.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#acoustic-target-rpm-threshold

Source

pub fn reset_fan_target_temperature(&self) -> Result<(), Error>

Resets the fan target temperature.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-target-temperature

Source

pub fn reset_fan_minimum_pwm(&self) -> Result<(), Error>

Resets the fan minimum pwm.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-minimum-pwm

Source

pub fn get_fan_curve(&self) -> Result<FanCurve, Error>

Gets the PMFW (power management firmware) fan curve. Note: if no custom curve is used, all of the curve points may be set to 0.

Only available on Navi3x (RDNA 3) or newer. Older GPUs do not have a configurable fan curve in firmware, they need custom logic.

Source

pub fn set_fan_curve(&self, new_curve: &FanCurve) -> Result<CommitHandle, Error>

Sets and applies the PMFW fan curve.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-curve

Source

pub fn reset_fan_curve(&self) -> Result<(), Error>

Resets the PMFW fan curve.

Only available on Navi3x (RDNA 3) or newer. https://kernel.org/doc/html/latest/gpu/amdgpu/thermal.html#fan-curve

Trait Implementations§

Source§

impl Clone for GpuHandle

Source§

fn clone(&self) -> GpuHandle

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GpuHandle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl SysFS for GpuHandle

Source§

fn get_path(&self) -> &Path

Gets the path of the current SysFS.
Source§

fn read_file(&self, file: impl AsRef<Path> + Debug) -> Result<String, Error>

Reads the content of a file in the SysFS.
Source§

fn read_file_parsed<T: FromStr<Err = E>, E: ToString>( &self, file: &str, ) -> Result<T, Error>

Reads the content of a file and then parses it
Source§

fn write_file<C: AsRef<[u8]> + Send>( &self, file: &str, contents: C, ) -> Result<(), Error>

Write to a file in the SysFS.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.