Spindle

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

```rust

[spindle::map]

fn i32to_f64(x: i32) -> f64 { x as f64 }

fn main() -> Result<(), spindle::error::Error> { spindle::spin!(U, i32, f64); let nums: Vec = (0..10).collect(); let spindle: spindle::DevSpindle = nums.tryinto()?; let spindle: spindle::DevSpindle = unsafe { spindle.i32tof64() }?; let spindle: spindle::HostSpindle = spindle.trytohost()?; for (i, x) in spindle.iter().enumerate() { asserteq!(*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