Skip to main content

SparseHandle

Struct SparseHandle 

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

Central handle for sparse matrix operations.

Every sparse routine requires a SparseHandle. The handle binds operations to a specific CUDA context and stream, maintains a BLAS sub-handle for dense operations (e.g. SpMM output accumulation), caches compiled PTX kernels, and stores the device’s SM version for kernel dispatch.

§Thread safety

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

Implementations§

Source§

impl SparseHandle

Source

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

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

The device’s compute capability is queried once and cached.

§Errors

Returns SparseError::Cuda if stream creation or device query fails.

Source

pub fn with_stream(ctx: &Arc<Context>, stream: Stream) -> SparseResult<Self>

Creates a new sparse handle bound to an existing stream.

§Errors

Same as new except stream creation cannot fail.

Source

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

Returns a reference to the CUDA context.

Source

pub fn stream(&self) -> &Stream

Returns a reference to the stream used for kernel launches.

Source

pub fn blas_handle(&self) -> &BlasHandle

Returns a reference to the internal BLAS handle.

Source

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

Returns a mutable reference to the internal BLAS handle.

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 set_stream(&mut self, stream: Stream)

Replaces the stream used for subsequent sparse operations.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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