17 个版本
0.7.2 | 2023 年 5 月 22 日 |
---|---|
0.6.2 | 2023 年 7 月 6 日 |
0.6.1 | 2022 年 7 月 1 日 |
0.6.0 | 2022 年 1 月 24 日 |
0.1.1 | 2020 年 7 月 28 日 |
#3 在 #cuda
2,309 每月下载量
在 30 个 包(直接使用 2 个)中使用
86KB
1.5K SLoC
rust-gpu-tools
一个抽象库,用于在 CUDA 和 OpenCL 上运行内核。
示例
您只需编写一次与 GPU 交互的代码。以下是在 CUDA 和/或 OpenCL 上运行内核的代码示例。有关完整的工作示例,请参阅 examples
目录。您可以通过 cargo run --example add
运行它。
let closures = program_closures!(|program, _args| -> Result<Vec<u32>, GPUError> {
// Make sure the input data has the same length.
assert_eq!(aa.len(), bb.len());
let length = aa.len();
// Copy the data to the GPU.
let aa_buffer = program.create_buffer_from_slice(&aa)?;
let bb_buffer = program.create_buffer_from_slice(&bb)?;
// The result buffer has the same length as the input buffers.
let result_buffer = unsafe { program.create_buffer::<u32>(length)? };
// Get the kernel.
let kernel = program.create_kernel("add", 8, 4)?;
// Execute the kernel.
kernel
.arg(&(length as u32))
.arg(&aa_buffer)
.arg(&bb_buffer)
.arg(&result_buffer)
.run()?;
// Get the resulting data.
let mut result = vec![0u32; length];
program.read_into_buffer(&result_buffer, &mut result)?;
Ok(result)
});
许可证
许可协议为
- Apache License 2.0,(LICENSE-APACHE 或 http://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证的定义,应如上所述双许可,不得附加任何额外条款或条件。
依赖项
~1.1–9MB
~81K SLoC