pub struct Stream<'a> { /* private fields */ }Expand description
A stream of asynchronous operations operating in a Context
Implementations§
Source§impl<'a> Stream<'a>
impl<'a> Stream<'a>
Sourcepub fn new(_handle: &Rc<Handle<'a>>) -> CudaResult<Self>
pub fn new(_handle: &Rc<Handle<'a>>) -> CudaResult<Self>
Creates a new stream for a handle
Sourcepub fn sync(&mut self) -> CudaResult<()>
pub fn sync(&mut self) -> CudaResult<()>
Drives all pending tasks on the stream to completion
Sourcepub fn is_synced(&self) -> CudaResult<bool>
pub fn is_synced(&self) -> CudaResult<bool>
Returns Ok(true) if the stream has finished processing all queued tasks.
Sourcepub fn wait_32<'b>(
&'b mut self,
addr: &'b DevicePtr<'a>,
value: u32,
mode: WaitValueMode,
flush: bool,
) -> CudaResult<()>
pub fn wait_32<'b>( &'b mut self, addr: &'b DevicePtr<'a>, value: u32, mode: WaitValueMode, flush: bool, ) -> CudaResult<()>
Wait for a 4-byte value in a specific location to compare to value by mode.
Sourcepub fn wait_64<'b>(
&mut self,
addr: &'b DevicePtr<'a>,
value: u64,
mode: WaitValueMode,
flush: bool,
) -> CudaResult<()>
pub fn wait_64<'b>( &mut self, addr: &'b DevicePtr<'a>, value: u64, mode: WaitValueMode, flush: bool, ) -> CudaResult<()>
Wait for a 8-byte value in a specific location to compare to value by mode.
Sourcepub fn write_32<'b>(
&'b mut self,
addr: &'b DevicePtr<'a>,
value: u32,
no_memory_barrier: bool,
) -> CudaResult<()>
pub fn write_32<'b>( &'b mut self, addr: &'b DevicePtr<'a>, value: u32, no_memory_barrier: bool, ) -> CudaResult<()>
Writes a 4-byte value to device memory asynchronously
Sourcepub fn write_64<'b>(
&'b mut self,
addr: &'b DevicePtr<'a>,
value: u64,
no_memory_barrier: bool,
) -> CudaResult<()>
pub fn write_64<'b>( &'b mut self, addr: &'b DevicePtr<'a>, value: u64, no_memory_barrier: bool, ) -> CudaResult<()>
Writes a 8-byte value to device memory asynchronously
Sourcepub fn callback<F: FnOnce() + Send + Sync>(
&mut self,
callback: F,
) -> CudaResult<()>
pub fn callback<F: FnOnce() + Send + Sync>( &mut self, callback: F, ) -> CudaResult<()>
Calls a callback closure function callback once all prior tasks in the Stream have been driven to completion.
Note that it is a memory leak to drop the stream before this callback is called.
The callback is not guaranteed to be called if the stream errors out.
Also note that it is erroneous in libcuda to make any calls to libcuda from this callback.
The callback is called from a CUDA internal thread, however this is an implementation detail of libcuda and not guaranteed.
Sourcepub unsafe fn launch<'b, D1: Into<Dim3>, D2: Into<Dim3>, K: KernelParameters>(
&mut self,
f: &Function<'a, 'b>,
grid_dim: D1,
block_dim: D2,
shared_mem_size: u32,
parameters: K,
) -> CudaResult<()>
pub unsafe fn launch<'b, D1: Into<Dim3>, D2: Into<Dim3>, K: KernelParameters>( &mut self, f: &Function<'a, 'b>, grid_dim: D1, block_dim: D2, shared_mem_size: u32, parameters: K, ) -> CudaResult<()>
Launch a CUDA kernel on this Stream with the given grid_dim grid dimensions, block_dim block dimensions, shared_mem_size allocated shared memory pool, and parameters kernel parameters.
It is undefined behavior to pass in parameters that do not conform to the passes CUDA kernel. If the argument count is wrong, CUDA will generally throw an error.
If your parameters is accurate to the kernel definition, then this function is otherwise safe.