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

Download history 642/week @ 2024-04-17 587/week @ 2024-04-24 564/week @ 2024-05-01 645/week @ 2024-05-08 495/week @ 2024-05-15 508/week @ 2024-05-22 559/week @ 2024-05-29 383/week @ 2024-06-05 530/week @ 2024-06-12 366/week @ 2024-06-19 337/week @ 2024-06-26 386/week @ 2024-07-03 384/week @ 2024-07-10 305/week @ 2024-07-17 478/week @ 2024-07-24 1064/week @ 2024-07-31

2,309 每月下载量
30 包(直接使用 2 个)中使用

MIT/Apache

86KB
1.5K SLoC

rust-gpu-tools Crates.io

一个抽象库,用于在 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-2.0 许可证的定义,应如上所述双许可,不得附加任何额外条款或条件。

依赖项

~1.1–9MB
~81K SLoC