6 个版本

0.3.0 2019年10月21日
0.2.0 2019年6月19日
0.1.3 2019年6月3日
0.1.2 2019年5月29日

#306 in 渲染


用于 emu_macro

MIT 许可证

19KB
130

Gitter

Emu 是一个用于 Rust GPU 加速和 GPU 编程的框架/编译器。它是一个过程宏,接受纯、安全的 Rust 代码作为输入,识别可尝试加速的部分,并自动编写代码以在 GPU 而不是 CPU 上运行这些部分。

特性

  • 易于使用
    • 下载库,而不是全新的编译器
    • cargo testcargo doccrates.io 一起工作
    • rustfmtracerrls 一起工作
    • 一行代码即可在 CPU 和 GPU 之间切换
  • 安全保证
    • 无空指针错误
    • 无类型不匹配错误
    • 无语法错误
  • 更有趣
    • 代码量最多减少 80%
    • 速度最多提升 300 倍
    • 与单 GPU、单线程的 OpenCL 习惯用法一样快

示例

#[macro_use]
extern crate em;
use em::*;

#[gpu_use]
fn main() {
    let mut x = vec![0.0; 1000];
    gpu_do!(load(x)); // load data to the GPU

    // this code gets identified as accelerate-able
    // the compiler will insert calls to OpenCL to run this on the GPU
    gpu_do!(launch());
    for i in 0..1000 {
        x[i] = x[i] * 10;
    }

    gpu_do!(read(x)); // read data back from the GPU
    println!("{:?}", x);
}

用法

您可以通过以下方式在 Rust 项目中使用 Emu-

  1. em = 0.3.0 添加到 Cargo.toml
  2. 确认您的平台已安装 OpenCL 库 (链接)

通过查看 文档 了解如何开始使用 Emu。

依赖项

~3MB
~56K SLoC