pub struct Context { /* private fields */ }
Expand description
Owned handle to a CUDA context.
The context will be destroyed when this goes out of scope. If this is the current context on the current OS thread, the next context on the stack (if any) will be made current. Note that the context will be destroyed even if other threads are still using it. Attempts to access the destroyed context from another thread will return an error.
Implementations
sourceimpl Context
impl Context
sourcepub fn create_and_push(
flags: ContextFlags,
device: Device
) -> CudaResult<Context>
pub fn create_and_push(
flags: ContextFlags,
device: Device
) -> CudaResult<Context>
Create a CUDA context for the given device.
Example
cust::init(cust::CudaFlags::empty())?;
let device = Device::get_device(0)?;
let context = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device)?;
sourcepub fn get_api_version(&self) -> CudaResult<CudaApiVersion>
pub fn get_api_version(&self) -> CudaResult<CudaApiVersion>
Get the API version used to create this context.
This is not necessarily the latest version supported by the driver.
Example
cust::init(cust::CudaFlags::empty())?;
let device = Device::get_device(0)?;
let context = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device)?;
let version = context.get_api_version()?;
sourcepub fn get_unowned(&self) -> UnownedContext
pub fn get_unowned(&self) -> UnownedContext
Returns an non-owning handle to this context.
This is useful for sharing a single context between threads (though see the module-level documentation for safety details!).
Example
let context = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device)?;
let unowned = context.get_unowned();
sourcepub fn drop(ctx: Context) -> DropResult<Context>
pub fn drop(ctx: Context) -> DropResult<Context>
Destroy a Context
, returning an error.
Destroying a context can return errors from previous asynchronous work. This function destroys the given context and returns the error and the un-destroyed context on failure.
Example
let context = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device)?;
match Context::drop(context) {
Ok(()) => println!("Successfully destroyed"),
Err((e, ctx)) => {
println!("Failed to destroy context: {:?}", e);
// Do something with ctx
},
}
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Context
impl !Send for Context
impl !Sync for Context
impl Unpin for Context
impl UnwindSafe for Context
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more