accel 0.3.1

GPGPU Framework for Rust
Documentation
use accel::*;

#[kernel]
pub unsafe fn read_host_memory(a: *const i32) {
    let i = accel_core::index() as isize;
    accel_core::println!("a[{}] = {}", i, unsafe { *(a.offset(i)) });
}

#[test]
fn page_locked() -> error::Result<()> {
    let device = Device::nth(0)?;
    let ctx = device.create_context();

    let mut a = PageLockedMemory::zeros(ctx.clone(), 4);
    a[0] = 0;
    a[1] = 1;
    a[2] = 2;
    a[3] = 3;
    read_host_memory(ctx, 1, 4, &(&a.as_ptr(),))?;
    Ok(())
}

#[test]
fn registered() -> error::Result<()> {
    let device = Device::nth(0)?;
    let ctx = device.create_context();

    let mut a = vec![0; 4];
    let mut mem = RegisteredMemory::new(ctx.clone(), &mut a);
    mem[0] = 0;
    mem[1] = 1;
    mem[2] = 2;
    mem[3] = 3;
    read_host_memory(ctx, 1, 4, &(&mem.as_ptr(),))?;
    Ok(())
}