pub enum ExecutionPath {
Cpu,
GpuReupload,
GpuResidentLinearization,
GpuResidentFull,
}Expand description
Truthful execution-path classifier for a fit’s hot inner solve (issue #1017).
This replaces the lying used_device: bool on GPU-owned result structs: a
bare boolean could not distinguish “ran on the device with the constant
Hessian factors kept resident across iterations” from “re-uploaded and
re-factored every iterate” from “silently fell back to the CPU”, so a
device that quietly declined still reported used_device = true at some
call sites. Each variant names exactly one of the four real backends the
resident solver can take, so telemetry and tests assert the concrete path
instead of a yes/no that hid the original silent-fallback bug.
Variants§
Cpu
Host-only arithmetic; no device work was performed.
GpuReupload
GPU path that re-uploads D/B/g and re-factors every iterate (the
pre-residency baseline).
GpuResidentLinearization
GPU path that keeps the constant Hessian factors resident across iterations and uploads only the per-iterate gradient, for a single linearization (one frozen gate/basis frame).
GpuResidentFull
Full device-resident inner Newton loop (the Phase-3 residency fix).
Implementations§
Source§impl ExecutionPath
impl ExecutionPath
Trait Implementations§
Source§impl Clone for ExecutionPath
impl Clone for ExecutionPath
Source§fn clone(&self) -> ExecutionPath
fn clone(&self) -> ExecutionPath
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ExecutionPath
Source§impl Debug for ExecutionPath
impl Debug for ExecutionPath
Source§impl Default for ExecutionPath
impl Default for ExecutionPath
Source§fn default() -> ExecutionPath
fn default() -> ExecutionPath
Source§impl<'de> Deserialize<'de> for ExecutionPath
impl<'de> Deserialize<'de> for ExecutionPath
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>,
impl Eq for ExecutionPath
Source§impl PartialEq for ExecutionPath
impl PartialEq for ExecutionPath
Source§fn eq(&self, other: &ExecutionPath) -> bool
fn eq(&self, other: &ExecutionPath) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ExecutionPath
impl Serialize for ExecutionPath
impl StructuralPartialEq for ExecutionPath
Auto Trait Implementations§
impl Freeze for ExecutionPath
impl RefUnwindSafe for ExecutionPath
impl Send for ExecutionPath
impl Sync for ExecutionPath
impl Unpin for ExecutionPath
impl UnsafeUnpin for ExecutionPath
impl UnwindSafe for ExecutionPath
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
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> 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
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.