pub struct DeviceResidentRowHess { /* private fields */ }Expand description
Device-resident state produced by
[launch_bms_flex_row_kernel_device_resident] and consumed by
[launch_bms_flex_row_hvp] / [launch_bms_flex_row_diagonal].
Owns the row-Hessian + design slices on-device so the host can issue many HVPs against the same β snapshot without round-tripping 626 MB through host RAM. Drop releases the device memory back to the CUDA runtime. Per-row Hessian storage layout on the device. The build path is free to emit either, and the Hv / diag kernels read whichever the storage says.
Charter (Block 9 Phase 4): packed-upper halves the DRAM footprint of the
n × r² cache (per-row r*(r+1)/2 doubles instead of r²), at the cost
of a single per-entry index conversion in the kernel. The benchmark
decides whether the packed path becomes the default for large-scale
fits (r = 20 → 210 vs 400 doubles per row, ~47.5% smaller). The
numerics are bit-equal because each H_i is symmetric by construction
(the row kernel emits a symmetric block by construction — see the
symmetric scratch-write loop in bms_flex_row_kernel’s shared-memory
finaliser).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DeviceResidentRowHess
impl RefUnwindSafe for DeviceResidentRowHess
impl Send for DeviceResidentRowHess
impl Sync for DeviceResidentRowHess
impl Unpin for DeviceResidentRowHess
impl UnsafeUnpin for DeviceResidentRowHess
impl UnwindSafe for DeviceResidentRowHess
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.