Skip to main content

PlatformProfile

Struct PlatformProfile 

Source
pub struct PlatformProfile {
    pub logical_cores: usize,
    pub physical_cores: usize,
    pub cache_line_bytes: usize,
    pub l1_cache_bytes: usize,
    pub l2_cache_bytes: usize,
    pub has_avx2: bool,
    pub has_avx512: bool,
    pub has_neon: bool,
}
Expand description

Platform characteristics detected at init time.

Captures hardware topology (core counts, cache hierarchy) and SIMD capability flags for the current CPU. Used to derive optimal parallelism thresholds and tiling parameters.

Fields§

§logical_cores: usize

Number of logical (hardware thread) cores.

§physical_cores: usize

Number of physical cores (estimated; logical/2 on x86 HT, = logical on ARM).

§cache_line_bytes: usize

Cache line size in bytes (typically 64 on modern CPUs).

§l1_cache_bytes: usize

Estimated L1 data cache size per core in bytes.

§l2_cache_bytes: usize

Estimated L2 cache size per core in bytes.

§has_avx2: bool

Whether AVX2 (256-bit SIMD) is available (x86-64 only).

§has_avx512: bool

Whether AVX-512 (512-bit SIMD) is available (x86-64 only).

§has_neon: bool

Whether NEON (128-bit SIMD) is available (AArch64 only).

Implementations§

Source§

impl PlatformProfile

Source

pub fn detect() -> Self

Detect current platform capabilities.

Uses std::thread::available_parallelism() for core counts and compile-time/runtime feature detection for SIMD flags. Cache sizes are estimated from typical values for the detected architecture.

Source

pub fn global() -> &'static PlatformProfile

Get the global cached platform profile (detected once, reused).

Source

pub fn compute_thresholds(&self) -> TunedThresholds

Compute optimal thresholds for this platform.

The logic scales parallel thresholds inversely with core count (more cores => lower threshold to engage parallelism) and sizes tiled GEMM blocks to fit in L1 cache.

Source

pub fn global_thresholds() -> &'static TunedThresholds

Get the global cached thresholds (computed once from the global profile).

Source

pub fn with_cores(logical: usize, physical: usize) -> Self

Construct a profile with explicit values (useful for testing).

Source

pub fn with_cache(l1_bytes: usize, l2_bytes: usize) -> Self

Construct a profile with custom cache sizes (useful for testing).

Trait Implementations§

Source§

impl Clone for PlatformProfile

Source§

fn clone(&self) -> PlatformProfile

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for PlatformProfile

Source§

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

Formats the value using the given formatter. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more