Rust CUDA 项目介绍

**Rust-GPU / **Rust-CUDA ** 公开项目

用于完全使用 Rust 编写和执行快速 GPU 代码的库和工具生态系统。

许可

发现 Apache-2.0 和 MIT 许可。

发现的许可

Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT

4.1k stars 165 forks 分支 标签 活动

Rust-GPU/Rust-CUDA

目录和文件

名称 | 名称 | 上次提交信息 | 上次提交日期 ---|---|---|--- .cargo | .cargo
.github/workflows | .github/workflows
container | container
crates | crates
examples | examples
guide | guide
scripts | scripts
xtask | xtask
.devcontainer.json | .devcontainer.json
.gitignore | .gitignore
CODEOWNERS | CODEOWNERS
Cargo.toml | Cargo.toml
LICENSE-APACHE | LICENSE-APACHE
LICENSE-MIT | LICENSE-MIT
README.md | README.md
katex-header.html | katex-header.html
rust-toolchain.toml | rust-toolchain.toml
rustfmt.toml | rustfmt.toml
查看所有文件

最近提交

历史

262 次提交

Rust CUDA 项目

一个用于完全用 Rust 编写和执行极速 GPU 代码的库和工具生态系统

指南 | 快速开始 | 特性

⚠️ 该项目仍处于早期开发阶段,预计会出现错误、安全问题以及无法正常工作的情况 ⚠️

重要提示:该项目不再休眠,并且正在重启。 请贡献!

目标

Rust CUDA 项目旨在使 Rust 成为使用 CUDA Toolkit 进行极速 GPU 计算的一级语言。 它提供了将 Rust 编译为极速 PTX 代码的工具,以及使用现有 CUDA 库的库。

背景

从历史上看,通用高性能 GPU 计算一直使用 CUDA Toolkit 完成。 CUDA Toolkit 主要提供了一种使用 Fortran/C/C++ 代码进行 GPU 计算的方式,并与 CPU 代码结合使用,形成单一来源。 它还提供了许多库、工具、论坛和文档,以补充单源 CPU/GPU 代码。

CUDA 仅是 NVIDIA 独有的工具包。 已经提出了许多用于跨平台 GPU 计算的工具,例如 OpenCL、Vulkan Computing 和 HIP。 然而,CUDA 仍然是迄今为止用于此类任务的最常用工具包。 这就是为什么必须使 Rust 成为 CUDA Toolkit 可行的选择。

然而,Rust 的 CUDA 历来是一条非常坎坷的道路。 到目前为止,唯一可行的选择是使用 LLVM PTX 后端,但是,LLVM PTX 后端并不总是有效,并且会为许多常见的 Rust 操作生成无效的 PTX,并且近年来,已经一次又一次地表明,对于 GPU 上的 Rust 来说,需要一种专门的解决方案,例如 rust-gpu (对于 Rust -> SPIR-V)。

我们希望通过这个项目,我们可以推动 Rust GPU 计算行业向前发展,并使 Rust 成为此类任务的优秀语言。 Rust 提供了许多好处,例如每个内核的 __restrict__ 性能优势、出色的模块/crate 系统,使用 unsafe 分隔 CPU/GPU 代码的不安全区域,低级 CUDA 库的高级包装器等。

结构

Rust CUDA 项目的范围非常广泛,它涵盖了整个 CUDA 生态系统,其中包含用于使其可用的库和工具(使用 Rust)。 因此,该项目包含许多用于 CUDA 生态系统各个方面的 crates。

当前的库阵容如下:

除了许多用于某些较小的 CUDA 库的高级包装器等“粘合” crates 之外。

相关项目

其他与在 GPU 上使用 Rust 相关的项目:

用法

## 设置你的环境,例如:
### export OPTIX_ROOT=/opt/NVIDIA-OptiX-SDK-9.0.0-linux64-x86_64
### export OPTIX_ROOT_DIR=/opt/NVIDIA-OptiX-SDK-9.0.0-linux64-x86_64
## 构建项目
cargo build

在容器环境中使用 Rust-CUDA

相关的 Dockerfile 分布位于 container 文件夹中。 以 ubuntu 24.04 为例,在存储库根目录中运行以下命令:

docker build -f ./container/ubuntu24/Dockerfile -t rust-cuda-ubuntu24 .
docker run --rm --runtime=nvidia --gpus all -it rust-cuda-ubuntu24

还包含一个示例 .devcontainer.json 文件,该文件已配置为 Ubuntu 24.02。 将其复制到 .devcontainer/devcontainer.json 以进行其他自定义。

许可

根据以下任一许可:

由您自行决定。

贡献

除非您明确声明,否则您有意提交以包含在作品中的任何贡献,如 Apache-2.0 许可中所定义,应采用上述双重许可,没有任何其他条款或条件。

关于

用于完全使用 Rust 编写和执行快速 GPU 代码的库和工具生态系统。

主题

rust gpu cuda rust-lang gpgpu cuda-kernels gpu-programming cuda-programming

资源

Readme

许可

发现 Apache-2.0 和 MIT 许可。

发现的许可

Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT

活动

Stars

4.1k stars

关注者

55 watching

Forks

165 forks

报告存储库

版本 2

Rust CUDA 0.3 最新 Feb 7, 2022

+ 1 个版本

包 0

被 104 个项目使用

贡献者 28

+ 14 位贡献者

语言