Skip to main content

UnifiedBuffer

Struct UnifiedBuffer 

Source
pub struct UnifiedBuffer<T: Copy> { /* private fields */ }
Expand description

A contiguous buffer of T elements in CUDA unified (managed) memory.

Unified memory is accessible from both the host CPU and the GPU device. The CUDA driver transparently migrates pages between host and device as needed. This simplifies programming at the cost of potential migration overhead compared to explicit device buffers.

Implementations§

Source§

impl<T: Copy> UnifiedBuffer<T>

Source

pub fn alloc(n: usize) -> CudaResult<Self>

Allocates a unified memory buffer capable of holding n elements of type T.

The memory is allocated with CU_MEM_ATTACH_GLOBAL, making it accessible from any stream on any device in the system.

§Errors
Source

pub fn len(&self) -> usize

Returns the number of T elements in this buffer.

Source

pub fn is_empty(&self) -> bool

Returns true if the buffer contains zero elements.

Source

pub fn byte_size(&self) -> usize

Returns the total size of the allocation in bytes.

Source

pub fn as_device_ptr(&self) -> CUdeviceptr

Returns the raw CUdeviceptr handle for use in kernel launches and other device-side operations.

Source

pub fn as_slice(&self) -> &[T]

Returns a shared slice over the buffer’s host-accessible contents.

§Safety note

This is only safe to call when no GPU kernel is concurrently reading or writing this buffer. Synchronise the relevant stream or context before calling this method.

Source

pub fn as_mut_slice(&mut self) -> &mut [T]

Returns a mutable slice over the buffer’s host-accessible contents.

§Safety note

This is only safe to call when no GPU kernel is concurrently reading or writing this buffer. Synchronise the relevant stream or context before calling this method.

Trait Implementations§

Source§

impl<T: Copy> Drop for UnifiedBuffer<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Copy + Send> Send for UnifiedBuffer<T>

Source§

impl<T: Copy + Sync> Sync for UnifiedBuffer<T>

Auto Trait Implementations§

§

impl<T> Freeze for UnifiedBuffer<T>

§

impl<T> RefUnwindSafe for UnifiedBuffer<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for UnifiedBuffer<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for UnifiedBuffer<T>

§

impl<T> UnwindSafe for UnifiedBuffer<T>

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