DeviceSend<Target=Pointer> for slice and memories
From !90 (merged), for !88 (merged)
- Implement
DeviceSend<Target=*mut T>for&mut [T]and&mut DeviceMemory,&mut PageLockedMemory,&mut RegisteredMemory. - Then we can pass them into a kernel which takes
*mut Targuments
#[kernel]
unsafe fn set1(a: *mut i32, n: usize) {
let i = accel_core::index();
if i < n as isize {
*a.offset(i) = 1;
}
}
let n = 12;
let mut a = PageLockedMemory::<i32>::zeros(&ctx, n);
set1(&ctx, 1, n, (&mut a, n))?;
If possible, I'd like to pass it into &mut [T] also on device and make kernel code safe, but it still has problem #7
Edited by termoshtt