[][src]Struct rustacuda::context::Context

pub struct Context { /* fields omitted */ }

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

impl Context[src]

pub fn create_and_push(
    flags: ContextFlags,
    device: Device
) -> CudaResult<Context>
[src]

Create a CUDA context for the given device.

Example

rustacuda::init(rustacuda::CudaFlags::empty())?;
let device = Device::get_device(0)?;
let context = Context::create_and_push(ContextFlags::MAP_HOST | ContextFlags::SCHED_AUTO, device)?;

pub fn get_api_version(&self) -> CudaResult<CudaApiVersion>[src]

Get the API version used to create this context.

This is not necessarily the latest version supported by the driver.

Example

rustacuda::init(rustacuda::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()?;

pub fn get_unowned(&self) -> UnownedContext[src]

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();

pub fn drop(ctx: Context) -> DropResult<Context>[src]

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

impl ContextHandle for Context[src]

impl Debug for Context[src]

impl Drop for Context[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.