6 releases
0.3.1 | May 24, 2020 |
---|---|
0.3.0 | May 3, 2020 |
0.3.0-alpha.2 | Apr 5, 2020 |
0.3.0-alpha.1 | Jan 11, 2020 |
0.1.0 | Nov 20, 2017 |
#1049 in Hardware support
Used in accel-derive
110KB
2.5K
SLoC
Contains (ELF exe/lib, 2KB) tests/data/sub.cubin, (ELF exe/lib, 2KB) tests/data/add.cubin
Accel: GPGPU Framework for Rust
crate | crates.io | docs.rs | GitLab Pages | |
---|---|---|---|---|
accel | CUDA-based GPGPU framework | |||
accel-core | Helper for writing device code | |||
accel-derive | Procedural macro for generating kernel code |
Requirements
- Minimum Supported Rust Version (MSRV) is 1.42.0
- Install CUDA on your system
- accel depends on CUDA Device APIs through rust-cuda/cuda-sys
- accel does not depend on CUDA Runtime APIs. It means that a compiled binary requires only
libcuda.so
at runtime, which is far lighter than entire CUDA development toolkit.
- Setup NVPTX target of Rust
- Install
nightly-2020-05-01
toolchain withnvptx64-nvidia-cuda
target, and rust-ptx-linker - There is an setup script for them:
- Install
curl -sSL https://gitlab.com/termoshtt/accel/raw/master/setup_nvptx_toolchain.sh | bash
Or, you can use docekr container
Limitations
This project is still in early stage. There are several limitations as following:
-
For runtime on CPU
- Windows and macOS are not supported
- f64 and Complex number supports are missing
- Texture/Surface object handling is missing
- Async features based on CUDA Stream and Events are disabled until async/.await support
-
For writting GPU kernel code
Contribution
This project is developed on GitLab and mirrored to GitHub.
Sponsors
- RICOS Co. Ltd
- GPU instances for CI and development
Links
Projects which accel depends on:
- rust-cuda/cuda-sys: CUDA Runtime and Driver API binding to Rust
- denzp/rust-ptx-linker: Linker for PTX files generated by
rustc
Related Projects:
- rust-cuda/wg: Working group for Rust CUDA Team
- denzp/rust-ptx-builder: Another CUDA kernel builder from Rust crate
- bheisler/RustaCUDA: Another CUDA-based Rust flamework
Dependencies
~1.2–2.3MB
~48K SLoC