Skip to main content

SolverHandle

Struct SolverHandle 

Source
pub struct SolverHandle { /* private fields */ }
Expand description

Central handle for solver operations.

Every solver routine requires a SolverHandle. The handle binds operations to a specific CUDA context and stream, provides access to the underlying BLAS handle for delegating matrix operations, and manages a resizable device workspace buffer.

§Thread safety

SolverHandle is Send but not Sync. Each thread should create its own handle (possibly sharing the same Arc<Context>).

Implementations§

Source§

impl SolverHandle

Source

pub fn new(ctx: &Arc<Context>) -> SolverResult<Self>

Creates a new solver handle with a freshly-allocated default stream.

The device’s compute capability is queried once and cached as an SmVersion for later kernel dispatch decisions. An initial workspace of 4 KiB is allocated.

§Errors

Returns SolverError::Cuda if stream creation or device query fails. Returns SolverError::Blas if BLAS handle creation fails.

Source

pub fn ensure_workspace(&mut self, bytes: usize) -> SolverResult<()>

Ensures the workspace buffer has at least bytes capacity.

If the current workspace is smaller, it is reallocated. The contents of the previous workspace are not preserved.

§Errors

Returns SolverError::Cuda if reallocation fails.

Source

pub fn blas(&self) -> &BlasHandle

Returns a reference to the underlying BLAS handle.

Source

pub fn blas_mut(&mut self) -> &mut BlasHandle

Returns a mutable reference to the underlying BLAS handle.

Source

pub fn stream(&self) -> &Stream

Returns a reference to the stream used for kernel launches.

Source

pub fn context(&self) -> &Arc<Context>

Returns a reference to the CUDA context.

Source

pub fn sm_version(&self) -> SmVersion

Returns the SM version of the bound device.

Source

pub fn ptx_cache(&self) -> &PtxCache

Returns a reference to the PTX cache.

Source

pub fn ptx_cache_mut(&mut self) -> &mut PtxCache

Returns a mutable reference to the PTX cache.

Source

pub fn workspace(&self) -> &DeviceBuffer<u8>

Returns a reference to the device workspace buffer.

Source

pub fn workspace_mut(&mut self) -> &mut DeviceBuffer<u8>

Returns a mutable reference to the device workspace buffer.

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<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, 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<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