INNER CODE UNIT · Rust
init
NVlabs/cuda-oxide · cuda-bindings/src/lib.rs:204
fn init() -> (CUdevice, CUcontext) {
unsafe {
let init_res = crate::cuInit(0);
assert_eq!(init_res, 0, "init failed");
let mut dev: MaybeUninit<crate::CUdevice> = MaybeUninit::uninit();
let dev_result = crate::cuDeviceGet(dev.as_mut_ptr(), 0 as c_int);
assert_eq!(dev_result, 0, "get device failed");
let dev = dev.assume_init();
let mut ctx = MaybeUninit::uninit();
let ctx_res = crate::cuDevicePrimaryCtxRetain(ctx.as_mut_ptr(), dev);
assert_eq!(ctx_res, 0, "retain context failed");
let ctx = ctx.assume_init();
assert_eq!(
crate::cuCtxSetCurrent(ctx),
0,
"failed to set current context"