5个不稳定版本
0.3.0 | 2020年5月3日 |
---|---|
0.3.0-alpha.2 | 2020年4月5日 |
0.3.0-alpha.1 | 2020年1月11日 |
0.2.0 | 2018年6月14日 |
0.1.0 | 2017年11月20日 |
#59 in #gpgpu
每月下载量 29
在 2 个crate中使用(通过 accel)
15KB
334 行
accel-derive
用于 #[kernel]
的过程宏 crate。 #[kernel]
函数将被转换为两部分
- 设备代码将被编译成PTX汇编器
- 主机代码使用
accel::module
API调用生成的设备代码(PTX汇编)
lib.rs
:
获取编译后的PTX作为 String
过程宏 #[kernel]
除了创建一个函数 add
外,还会创建一个子模块 add::
。内核Rust代码使用rustc的 nvptx64-nvidia-cuda
工具链编译成PTX字符串。生成的PTX字符串被嵌入到过程宏输出中,作为 {kernel_name}::PTX_STR
。
use accel_derive::kernel;
#[kernel]
unsafe fn add(a: *const f64, b: *const f64, c: *mut f64, n: usize) {
let i = accel_core::index();
if (i as usize) < n {
*c.offset(i) = *a.offset(i) + *b.offset(i);
}
}
// PTX assembler code is embedded as `add::PTX_STR`
println!("{}", add::PTX_STR);
依赖项
~1.7–2.5MB
~52K SLoC