pub enum HostClass {
X86_64Avx512,
X86_64Avx2,
X86_64Scalar,
Aarch64Apple,
Aarch64,
Generic,
}Expand description
The class of the machine, keyed by the kernel dispatch it will take, not by the CPU model.
The serial rate table has one row per class. The enum and the detection are kept in sync by
hand with threadteam::HostClass; a test compares the two when the parallel route is
compiled.
Rates and dispatch costs of one row must come from the same machine in the same clock state: switching the boost on moves both by about 1.66 times with a stable ratio (within a few percent), so a row that mixes boosted rates with unboosted costs, or the reverse, shifts every floor.
Variants§
X86_64Avx512
x86_64 with AVX-512F at run time (x86_64-avx512).
X86_64Avx2
x86_64 with AVX2 and FMA, without AVX-512F (x86_64-avx2).
X86_64Scalar
Any other x86_64 (x86_64-scalar).
Aarch64Apple
aarch64 on macOS (aarch64-apple).
Aarch64
Any other aarch64 (aarch64).
Generic
Everything else (generic).
Implementations§
Trait Implementations§
impl Copy for HostClass
impl Eq for HostClass
impl StructuralPartialEq for HostClass
Auto Trait Implementations§
impl Freeze for HostClass
impl RefUnwindSafe for HostClass
impl Send for HostClass
impl Sync for HostClass
impl Unpin for HostClass
impl UnsafeUnpin for HostClass
impl UnwindSafe for HostClass
Blanket Implementations§
impl<T> Boilerplate for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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