|
| 1 | +--- |
| 2 | +title: "Rebooting the Rust CUDA project" |
| 3 | +authors: [LegNeato] |
| 4 | +tags: ["announcement", "cuda"] |
| 5 | +--- |
| 6 | + |
| 7 | +We're excited to announce the reboot of the [Rust CUDA project](https://github.com/rust-gpu/rust-cuda). Rust CUDA enables you to write and run [CUDA](https://developer.nvidia.com/cuda-toolkit) kernels in Rust, executing directly on NVIDIA GPUs using [NVVM IR](https://docs.nvidia.com/cuda/nvvm-ir-spec/index.html). |
| 8 | + |
| 9 | +Our immediate focus is on modernizing the project and integrating with other GPU-related efforts in the Rust ecosystem. |
| 10 | + |
| 11 | +**To follow along or get involved, check out the [`rust-cuda` repo on GitHub](https://github.com/rust-gpu/rust-cuda).** |
| 12 | + |
| 13 | +<!-- truncate --> |
| 14 | + |
| 15 | +## Call for contributors |
| 16 | + |
| 17 | +We need your help to shape the future of CUDA programming in Rust. Whether you're a |
| 18 | +maintainer, contributor, or user, there's an opportunity to [get |
| 19 | +involved](https://github.com/rust-gpu/rust-cuda). We're especially |
| 20 | +interested in adding maintainers to make the project sustainable. |
| 21 | + |
| 22 | +Be aware that the process may be a bit bumpy as we work to get the project in order. |
| 23 | + |
| 24 | +## Relation to other GPU projects in the Rust ecosystem |
| 25 | + |
| 26 | +We see significant opportunities for collaboration and unification with related |
| 27 | +projects. |
| 28 | + |
| 29 | +- **[Rust GPU](https://rust-gpu.github.io/)**: This project is similar to Rust CUDA but |
| 30 | + targets [SPIR-V](https://www.khronos.org/spir/) for [Vulkan](https://www.vulkan.org/) |
| 31 | + GPUs. |
| 32 | + |
| 33 | + Our long-term vision for the two projects includes merging developer-facing APIs to |
| 34 | + provide a unified experience for GPU programming in Rust. Developers should not need |
| 35 | + to worry about underlying platforms (Vulkan vs. CUDA) or low-level IR (SPIR-V vs. |
| 36 | + NVVM) unless doing specialized work. This would make GPU programming in Rust feel as |
| 37 | + seamless as its abstractions for CPU architectures or operating systems. |
| 38 | + |
| 39 | + Christian Legnitto ([LegNeato](https://github.com/LegNeato)) is one of the maintainers |
| 40 | + for both projects. |
| 41 | + |
| 42 | +- **[`rustc` PTX |
| 43 | + backend](https://doc.rust-lang.org/rustc/platform-support/nvptx64-nvidia-cuda.html)**: |
| 44 | + The Rust compiler's experimental `nvptx` backend generates CUDA's low-level |
| 45 | + [PTX](https://docs.nvidia.com/cuda/parallel-thread-execution/) IR. We plan to |
| 46 | + collaborate with this effort to determine how it can complement or integrate with |
| 47 | + `rust-cuda`'s NVVM IR approach. |
| 48 | + |
| 49 | +- **[cudarc](https://github.com/coreylowman/cudarc)**: This crate provides a host-side |
| 50 | + abstraction for CUDA programming in Rust. We aim to explore how `rust-cuda` can |
| 51 | + interoperate with `cudarc` or consolidate efforts. |
| 52 | + |
| 53 | +For a broader look at Rust and GPUs, check out the [ecosystem overview |
| 54 | +page](https://rust-gpu.github.io/ecosystem/). |
| 55 | + |
| 56 | +## Short-Term Roadmap |
| 57 | + |
| 58 | +Our immediate focus is on stabilizing and modernizing the Rust CUDA project: |
| 59 | + |
| 60 | +- **Merging outstanding PRs**: Address the backlog of contributions. |
| 61 | +- **Closing outdated issues**: Clean up the issue tracker to focus on actionable problems. |
| 62 | +- **Updating dependencies**: Support the latest Rust toolchain and CUDA versions. |
| 63 | +- **New website**: Launch a site with updated documentation, examples, and resources to make it easier for users to get started. |
| 64 | + |
| 65 | +## Medium-term roadmap |
| 66 | + |
| 67 | +Once the Rust CUDA project is stabilized, we will explore new opportunities to advance |
| 68 | +its functionality and integrate with the broader ecosystem: |
| 69 | + |
| 70 | +- **Rust-C++ interop**: Investigate Rust's recent C++ interoperability initiatives to |
| 71 | + see if they can be used to simplify host and library integration for CUDA. |
| 72 | +- **Rust community collaboration**: Work with other Rust CUDA projects to consolidate |
| 73 | + and unify host-side tools and workflows where appropriate. |
| 74 | +- **PTX backend collaboration**: Coordinate with the [rustc PTX |
| 75 | + backend](https://doc.rust-lang.org/rustc/platform-support/nvptx64-nvidia-cuda.html) |
| 76 | + team to explore shared infrastructure and evaluate transitioning Rust CUDA from NVVM |
| 77 | + IR to raw PTX. |
| 78 | +- **`rust-gpu` collaboration**: Leverage `rust-gpu`'s tooling and compiler |
| 79 | + infrastructure to reduce duplication. |
| 80 | + |
| 81 | +## Long-Term Roadmap |
| 82 | + |
| 83 | +Our long-term vision is to make GPU programming in Rust safe, ergonomic, fast, and fully |
| 84 | +integrated into the language: |
| 85 | + |
| 86 | +- **Rust compiler integration**: Rust CUDA is currently an out-of-tree compiler backend. |
| 87 | + We aim to bring it in-tree and make it officially supported. |
| 88 | +- **Unified GPU API**: Merge developer-facing APIs of `rust-cuda` and `rust-gpu`. This |
| 89 | + would abstract away platform and IR differences for most developers, leaving |
| 90 | + platform-specific concerns only for low-level or specialized use cases. |
| 91 | +- **Language evolution**: Contribute to the Rust language's evolution to better support |
| 92 | + GPU programming, ensuring it remains safe, performant, and developer-friendly. |
| 93 | + |
| 94 | +## Acknowledgments |
| 95 | + |
| 96 | +We want to extend our heartfelt thanks to [Riccardo |
| 97 | +D'Ambrosio](https://github.com/RDambrosio016) for starting the Rust CUDA project and |
| 98 | +putting in so much work to bring it to life. His efforts have laid the foundation for |
| 99 | +everything we are building on today. **Thank you, Riccardo!** |
0 commit comments