CUDA-based GPGPU framework for Rust
#[kernel]
llc
and llvm-link
to create PTX)Or, you can use termoshtt/rust-cuda container whith satisfies these requirements.
docker run -it --rm --runtime=nvidia termoshtt/rust-cuda
See also nvidia-docker
```rust
extern crate accel; extern crate accel_derive;
use accel_derive::kernel; use accel::*;
pub unsafe fn add(a: *const f64, b: *const f64, c: *mut f64, n: usize) { let i = accel_core::index(); if (i as usize) < n { *c.offset(i) = *a.offset(i) + *b.offset(i); } }
fn main() { let n = 32; let mut a = UVec::new(n).unwrap(); let mut b = UVec::new(n).unwrap(); let mut c = UVec::new(n).unwrap();
for i in 0..n {
a[i] = i as f64;
b[i] = 2.0 * i as f64;
}
println!("a = {:?}", a.as_slice());
println!("b = {:?}", b.as_slice());
let grid = Grid::x(1);
let block = Block::x(n as u32);
add(grid, block, a.as_ptr(), b.as_ptr(), c.as_mut_ptr(), n);
device::sync().unwrap();
println!("c = {:?}", c.as_slice());
} ```
MIT-License