dot_prod/
dot_prod.rs

1use ug::Result;
2
3fn eval_add() -> Result<()> {
4    let kernel = ug::samples::ssa::simple_add(2)?;
5    println!("{kernel:?}");
6    let mut a = ug::interpreter::Buffer::I32(vec![0i32, 0]);
7    let mut b = ug::interpreter::Buffer::I32(vec![3i32, 4]);
8    let mut c = ug::interpreter::Buffer::I32(vec![1i32, 2]);
9    ug::interpreter::eval_ssa::<1>(&kernel, vec![&mut a, &mut b, &mut c], &[], 0)?;
10    println!("a: {a:?}\nb: {b:?}\nc: {c:?}");
11    Ok(())
12}
13
14fn eval_dotprod() -> Result<()> {
15    let kernel = ug::samples::ssa::simple_dotprod(2)?;
16    println!("{kernel:?}");
17    let mut a = ug::interpreter::Buffer::F32(vec![0f32]);
18    let mut b = ug::interpreter::Buffer::F32(vec![3f32, 4.5]);
19    let mut c = ug::interpreter::Buffer::F32(vec![1f32, 2.]);
20    ug::interpreter::eval_ssa::<1>(&kernel, vec![&mut a, &mut b, &mut c], &[], 0)?;
21    println!("a: {a:?}\nb: {b:?}\nc: {c:?}");
22    Ok(())
23}
24
25fn lower_add() -> Result<()> {
26    let kernel = ug::samples::simple_add(2)?;
27    let ssa_kernel = kernel.lower()?;
28    println!("{ssa_kernel:?}");
29    let mut c = ug::interpreter::Buffer::F32(vec![0f32, 0.]);
30    let mut b = ug::interpreter::Buffer::F32(vec![3f32, 4.]);
31    let mut a = ug::interpreter::Buffer::F32(vec![1f32, 2.]);
32    ug::interpreter::eval_ssa::<1>(&ssa_kernel, vec![&mut a, &mut b, &mut c], &[], 0)?;
33    println!("a: {a:?}\nb: {b:?}\nc: {c:?}");
34    Ok(())
35}
36
37fn softmax() -> Result<()> {
38    let kernel = ug::samples::op::softmax(2, 4)?;
39    println!("{kernel:?}");
40    let ssa_kernel = kernel.lower(&Default::default())?;
41    println!("{ssa_kernel:?}");
42    let mut a = ug::interpreter::Buffer::F32(vec![0., 1., 2., 3., 2., 1., 2., 1.]);
43    let mut b = ug::interpreter::Buffer::F32(vec![0f32; 8]);
44    ug::interpreter::eval_ssa::<1>(&ssa_kernel, vec![&mut a, &mut b], &[], 0)?;
45    println!("a: {a:?}\nb: {b:?}");
46    Ok(())
47}
48
49fn main() -> Result<()> {
50    eval_add()?;
51    eval_dotprod()?;
52    lower_add()?;
53    softmax()?;
54    Ok(())
55}