pub struct PirlsStepStreamDeviceInput<'a, 'b> {
pub w_solver_dev: &'a CudaSlice<f64>,
pub grad_eta_dev: &'b CudaSlice<f64>,
pub penalty_hessian: ArrayView2<'b, f64>,
pub step_lm_lambda: f64,
pub objective_ridge: f64,
pub beta_dev: &'b CudaSlice<f64>,
pub linear_shift: ArrayView1<'b, f64>,
}Expand description
Stage 3.2 device-input variant of PirlsStepStreamInput.
Where the host-input form uploads weights + gradient per Newton
step, this form reads them straight from the
crate::gpu_kernels::pirls_row::RowOutputDevBuffers populated by the
device-side row-reweight kernel — no host round-trip for the row
state. Only the penalty matrix still crosses the host boundary
because the outer REML loop updates Sλ + LM ridge between PIRLS
steps.
Fields§
§w_solver_dev: &'a CudaSlice<f64>Device-resident solver weights w_solver_i (length n). Read
in-place by the cublasDdgmm WX assembly.
grad_eta_dev: &'b CudaSlice<f64>Device-resident IRLS gradient ∂ℓ/∂η_i (length n). Read by the
Xᵀg dgemv to form the Newton RHS.
penalty_hessian: ArrayView2<'b, f64>Penalty Hessian Sλ in row-major host layout (p × p).
step_lm_lambda: f64Temporary LM damping for this Newton solve step only. Added to H
before potrf; stripped out of the snapshotted penalized_hessian.
objective_ridge: f64Real model-objective ridge. Appears in the exported
penalized_hessian that flows to EDF / REML curvature.
beta_dev: &'b CudaSlice<f64>Current coefficient vector β (length p). Downloaded to the host to form the Newton RHS correction S·β. Only p f64 values cross the boundary (β is small), so the round-trip cost is negligible.
linear_shift: ArrayView1<'b, f64>Linear shift vector (length p) in transformed coordinates, on host. Added to Newton RHS so the solve targets Xᵀ·score − S·β + linear_shift.
Auto Trait Implementations§
impl<'a, 'b> Freeze for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> RefUnwindSafe for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> Send for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> Sync for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> Unpin for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> UnsafeUnpin for PirlsStepStreamDeviceInput<'a, 'b>
impl<'a, 'b> UnwindSafe for PirlsStepStreamDeviceInput<'a, 'b>
Blanket Implementations§
impl<T> Allocation 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> 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,
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.