#gpgpu #parallel #multi-threading #data #tasks #execution #simplifies

yanked spindle

Rust中的GPGPU数据并行化,符合人体工程学

7 个版本

0.1.9 2023年8月17日
0.1.7 2023年8月8日
0.1.5 2023年7月22日

#409机器学习

Download history 2/week @ 2024-03-28

每月54次 下载

Apache-2.0 OR MIT

25KB
476

Spindle

Spindle 是一个Rust库,简化了GPGPU多线程执行无内部依赖的并行和数据并行任务。

#[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(())
}

贡献

欢迎,有想法的人!

  • 你有功能或语法建议吗?
  • 想分享关于位操作实现的想法吗?
  • 你知道如何修复bug吗?

请浏览贡献指南并打招呼!

感谢你的贡献!

许可

双许可以兼容Rust项目。

在您的选择下,根据Apache许可证第2版MIT许可证许可。此文件可能不得复制、修改或分发,除非符合这些条款。

致谢

(合作者,请自由扩展)

我们的工作受到了许多优秀库的启发!这包括但不限于:

  • rayon,我们在可靠无恐惧的并发方面的灵感来源
  • dfdx,用于符合人体工程学的机器学习
  • faer,无妥协的出色线性代数后端
  • cudarc,智能指针、类型安全的CUDA包装器

Alex 个人感谢

  • 2023年Rust科学计算会议
  • 当我的第一个GPGPU项目在一天内达到约 1_000_000_000_000_000 次迭代时的喜悦
  • Rust社区对以下内容的承诺:
    • 欢迎每个人,
    • 解决开发者的人体工程学问题,
    • 教我们正确性和安全性,以及
    • 为我们提供工具以推动语言的发展。

依赖关系

~50MB
~1M SLoC