macro_rules! to_device {
($slice:expr, $stream:expr) => {{
let host_buffer = async_cuda::HostBuffer::from_slice($slice).await;
let mut device_buffer = async_cuda::DeviceBuffer::new($slice.len(), $stream).await;
device_buffer
.copy_from(&host_buffer, $stream)
.await
.unwrap();
device_buffer
}};
}
macro_rules! to_host {
($device_buffer:expr, $stream:expr) => {{
let mut host_buffer = async_cuda::HostBuffer::new($device_buffer.num_elements()).await;
$device_buffer
.copy_to(&mut host_buffer, $stream)
.await
.unwrap();
host_buffer.to_vec()
}};
}
pub(crate) use to_device;
pub(crate) use to_host;