use obrah::runtime;
use obrah::kernel;
use obrah::data;
fn main() {
let mut env = runtime::setup();
runtime::use_kernel(&mut env, "D:/ashha/testobrah/kernel.cl");
runtime::make_prog(&mut env);
kernel::make_kernel(&mut env, "vecAdd");
let a = vec![1.0f32, 2.0, 3.0, 4.0];
let b = vec![10.0f32, 20.0, 30.0, 40.0];
let mut c = vec![0.0f32; 4];
let bufa = data::buffer_write(&mut env, &a);
let bufb = data::buffer_write(&mut env, &b);
let bufc = data::buffer_write(&mut env, &c);
data::to_gpu(&mut env, &a, bufa);
data::to_gpu(&mut env, &b, bufb);
kernel::setarg(&mut env, bufa); kernel::setarg(&mut env, bufb); kernel::setarg(&mut env, bufc);
kernel::run_kernel(&mut env, c.len());
data::from_gpu(&mut env, &mut c, bufc);
println!("Result: {:?}", c);
runtime::cleanvar(&mut env, bufa);
runtime::cleanvar(&mut env, bufb);
runtime::cleanvar(&mut env, bufc);
runtime::cleanup(&mut env);
}