ariasanovsky / spindle

12 stars 1 forks source link

ARCHIVED

I've archived this project and yanked all crates. I would love for Rust to have good GPGPU, but this isn't the way to get there 😂

Spindle

Spindle is a Rust crate simplifies GPGPU multithreaded execution of embarrassingly parallel and data parallel tasks.

#[spindle::map]
fn _i32_to_f64(x: i32) -> f64 {
    x as f64
}

fn main() -> Result<(), spindle::error::Error> {
    spindle::spin!(U, i32, f64);
    let nums: Vec<i32> = (0..10).collect();
    let spindle: spindle::DevSpindle<U, i32> = nums.try_into()?;
    let spindle: spindle::DevSpindle<U, f64> = unsafe { spindle.i32_to_f64() }?;
    let spindle: spindle::HostSpindle<U, f64> = spindle.try_to_host()?;
    for (i, x) in spindle.iter().enumerate() {
        assert_eq!(*x, i as f64);
    }
    Ok(())
}

Contributing

Welcome, idea-haver!

Please skim the Collaborator Guidelines and say hello!

Thank you for your contributions!

License

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0 or the MIT license, at your option. This file may not be copied, modified, or distributed except according to those terms.

Acknowledgments

(collaborators, feel free to expand)

Our work is inspired by so many great crates! This includes, but is not limited to,

Alex is personally grateful for