use std::os::raw::c_void;
pub struct CudaParams {
device_ptrs: Vec<usize>, i32_values: Vec<i32>,
param_ptrs: Vec<*mut c_void>,
}
impl CudaParams {
pub fn new() -> Self {
Self {
device_ptrs: Vec::new(),
i32_values: Vec::new(),
param_ptrs: Vec::new(),
}
}
pub fn add_device_ptr(&mut self, device_ptr: *mut c_void) {
self.device_ptrs.push(device_ptr as usize);
let ptr = self.device_ptrs.last().unwrap() as *const usize as *mut c_void;
self.param_ptrs.push(ptr);
}
pub fn add_i32(&mut self, value: i32) {
self.i32_values.push(value);
let ptr = self.i32_values.last().unwrap() as *const i32 as *mut c_void;
self.param_ptrs.push(ptr);
}
pub fn as_kernel_params(&self) -> &[*mut c_void] {
&self.param_ptrs
}
}