#[non_exhaustive]pub struct DeviceDescription {
pub name: String,
pub kind: DeviceKind,
pub max_memory: Option<u64>,
pub physical: Option<PhysicalDevice>,
pub architecture: Option<String>,
pub driver_version: Option<String>,
}Expand description
Identity and properties of a device, as its driver reports before anything runs on it: enough to list the machine’s devices, show them to a user and pick one.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.name: StringThe name the device reports, e.g. NVIDIA GeForce RTX 5070 Laptop GPU.
kind: DeviceKindThe kind of device.
max_memory: Option<u64>The memory the device can use, in bytes. The card’s own memory for a GPU, the machine’s RAM
for the CPU runtime, and on Metal the working set the device recommends staying under.
None where the runtime’s API does not say.
physical: Option<PhysicalDevice>The card the device runs on. None for a device that is not a card: a CPU or a software
rasterizer.
architecture: Option<String>The architecture the runtime compiles for: the NVPTX target on CUDA, the
gcnArchName on HIP, the LLVM CPU name on the CPU runtime.
None on Metal and wgpu.
driver_version: Option<String>The driver’s version, in each API’s own terms, so two runtimes on one card can disagree:
on CUDA the CUDA version the driver supports (13.0), on HIP the HIP version
(7.1.25424), on wgpu the driver’s name and release (NVIDIA 580.82.09). None on Metal
and the CPU runtime.
Implementations§
Source§impl DeviceDescription
impl DeviceDescription
Sourcepub fn new(name: impl Into<String>, kind: DeviceKind) -> Self
pub fn new(name: impl Into<String>, kind: DeviceKind) -> Self
A device named name, of kind.
Trait Implementations§
Source§impl Clone for DeviceDescription
impl Clone for DeviceDescription
Source§impl Debug for DeviceDescription
impl Debug for DeviceDescription
impl Eq for DeviceDescription
Source§impl PartialEq for DeviceDescription
impl PartialEq for DeviceDescription
impl StructuralPartialEq for DeviceDescription
Auto Trait Implementations§
impl Freeze for DeviceDescription
impl RefUnwindSafe for DeviceDescription
impl Send for DeviceDescription
impl Sync for DeviceDescription
impl Unpin for DeviceDescription
impl UnsafeUnpin for DeviceDescription
impl UnwindSafe for DeviceDescription
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<K, Q> Equivalent<Q> for K
impl<K, Q> Equivalent<Q> for K
Source§fn equivalent(&self, key: &Q) -> bool
fn equivalent(&self, key: &Q) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more