wip: Wrap the cuda context
Open question: leverage deref and drop to make push and pop more idiomatic.
This commit is contained in:
parent
75564b8439
commit
0b3676769f
45
src/cuda/context.rs
Normal file
45
src/cuda/context.rs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
use ffi::cuda::*;
|
||||||
|
|
||||||
|
use cuda::device::CuDevice;
|
||||||
|
|
||||||
|
pub struct CuContext {
|
||||||
|
context : CUcontext,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CuContext {
|
||||||
|
pub fn new(dev : CuDevice, flags : u32) -> Result<CuContext, CUresult> {
|
||||||
|
let mut ctx = CuContext { context : 0 };
|
||||||
|
let res = unsafe { cuCtxCreate(&mut ctx.context as *mut CUcontext, dev.device) }
|
||||||
|
|
||||||
|
wrap!(ctx, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_api_version(&self) -> Result<u32, CUresult> {
|
||||||
|
let mut ver = 0;
|
||||||
|
let res = unsafe { cuGetApiVersion(self.context, &mut ver as *mut u32)};
|
||||||
|
|
||||||
|
wrap!(ver, res)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn pop() -> Result<, CUresult> {
|
||||||
|
let res = unsafe { cuCtxPopCurrent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: leverage clone/drop/deref traits
|
||||||
|
impl Clone for CuContext {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Deref for CuContext {
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
impl Drop for CuContext {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
cuCtxDestroy(self.context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user