cumath 0.2.7

Cuda-based matrix/vector computations

use std::ptr;

use super::cuda_ffi::*;



pub const DEFAULT_STREAM : CudaStream = CudaStream { stream: ptr::null_mut() };



pub struct Cuda {}
impl Cuda {
    pub fn synchronize() {
        cuda_device_synchronize();
    }
}



pub struct CudaStream {
    pub(crate) stream: cudaStream_t,
}
impl Drop for CudaStream {
    fn drop(&mut self) {
        if !self.stream.is_null() { cuda_stream_destroy(self.stream) }
    }
}
impl CudaStream {
    pub fn new() -> CudaStream {
        let mut ptr = ptr::null_mut();
        cuda_stream_create(&mut ptr);
        CudaStream { stream: ptr }
    }
    pub fn default() -> CudaStream {
        CudaStream { stream: ptr::null_mut() }
    }

    pub fn synchronize(&self) {
        cuda_stream_synchronize(self.stream)
    }
}