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
19KB
130 行
Emu 是一个用于 Rust GPU 加速和 GPU 编程的框架/编译器。它是一个过程宏,接受纯、安全的 Rust 代码作为输入,识别可尝试加速的部分,并自动编写代码以在 GPU 而不是 CPU 上运行这些部分。
特性
- 易于使用
- 下载库,而不是全新的编译器
- 与
cargo test
、cargo doc
、crates.io
一起工作 - 与
rustfmt
、racer
、rls
一起工作 - 一行代码即可在 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-
- 将
em = 0.3.0
添加到Cargo.toml
- 确认您的平台已安装 OpenCL 库 (链接)
通过查看 文档 了解如何开始使用 Emu。
依赖项
~3MB
~56K SLoC