pub struct PlatformCapabilities {
pub cpu: CpuCapabilities,
pub gpu: GpuCapabilities,
pub memory: MemoryCapabilities,
pub platform_type: PlatformType,
pub os: OperatingSystem,
pub architecture: Architecture,
}Expand description
Comprehensive platform capabilities
Fields§
§cpu: CpuCapabilitiesCPU capabilities
gpu: GpuCapabilitiesGPU capabilities
memory: MemoryCapabilitiesMemory capabilities
platform_type: PlatformTypePlatform type
os: OperatingSystemOperating system
architecture: ArchitectureArchitecture
Implementations§
Source§impl PlatformCapabilities
impl PlatformCapabilities
Sourcepub fn detect() -> Self
pub fn detect() -> Self
Detect platform capabilities
This is the main entry point for platform detection as required by SciRS2 policy. All modules should use this instead of direct platform detection.
Detection is performed once per process and cached: probing the host walks every
running process and refreshes every CPU (several sysinfo::System scans, ~0.4s a
call). Callers such as SimdGateEngine::new construct an engine per circuit
evaluation, so an uncached probe here dominated the runtime of anything that
simulates in a loop — a 30-step parameter-shift training loop spent over an hour
in process enumeration rather than in simulation.
Use crate::platform::get_platform_capabilities to borrow the cached value
instead of cloning it.
Sourcepub const fn simd_available(&self) -> bool
pub const fn simd_available(&self) -> bool
Check if SIMD is available (compatibility method)
Sourcepub const fn gpu_available(&self) -> bool
pub const fn gpu_available(&self) -> bool
Check if GPU is available (compatibility method)
Sourcepub const fn optimal_simd_width_f64(&self) -> usize
pub const fn optimal_simd_width_f64(&self) -> usize
Get the optimal SIMD width for f64 operations
Sourcepub fn primary_gpu(&self) -> Option<&GpuDevice>
pub fn primary_gpu(&self) -> Option<&GpuDevice>
Get the primary GPU device
Sourcepub const fn is_suitable_for_large_quantum_sim(&self) -> bool
pub const fn is_suitable_for_large_quantum_sim(&self) -> bool
Check if the platform is suitable for large-scale quantum simulation
Trait Implementations§
Source§impl Clone for PlatformCapabilities
impl Clone for PlatformCapabilities
Source§fn clone(&self) -> PlatformCapabilities
fn clone(&self) -> PlatformCapabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PlatformCapabilities
impl Debug for PlatformCapabilities
Source§impl<'de> Deserialize<'de> for PlatformCapabilities
impl<'de> Deserialize<'de> for PlatformCapabilities
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for PlatformCapabilities
impl RefUnwindSafe for PlatformCapabilities
impl Send for PlatformCapabilities
impl Sync for PlatformCapabilities
impl Unpin for PlatformCapabilities
impl UnsafeUnpin for PlatformCapabilities
impl UnwindSafe for PlatformCapabilities
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.