CUDA on ??? GPUs
Find a file
Violet 06b28cfec7
Some checks are pending
ZLUDA / Build (Linux) (push) Waiting to run
ZLUDA / Build (Windows) (push) Waiting to run
ZLUDA / Build AMD GPU unit tests (push) Waiting to run
ZLUDA / Run AMD GPU unit tests (push) Blocked by required conditions
More descriptive message for unknown symbol (#411)
2025-07-14 15:01:38 -07:00
.cargo Improve build system (#329) 2025-01-28 01:55:36 +01:00
.devcontainer Create infrastructure for performance libraries (#363) 2025-05-01 22:37:18 +02:00
.github/workflows Enable sccache in Rust builds, publish prerelease builds (#408) 2025-07-09 09:20:03 -07:00
comgr Remove duplicate call to linker (#410) 2025-07-10 12:44:22 -07:00
cuda_base Implement cuLibraryLoadData (#388) 2025-06-18 16:05:53 -07:00
cuda_types Implement cuLibraryLoadData (#388) 2025-06-18 16:05:53 -07:00
dark_api Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
detours-sys Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
ext Work around broken AMD Adrenalin 25.5.1 driver (#366) 2025-05-13 02:20:23 +02:00
format Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
llvm_zluda Run unit tests on every commit (#401) 2025-07-03 16:07:00 -07:00
ptx More descriptive message for unknown symbol (#411) 2025-07-14 15:01:38 -07:00
ptx_parser Add support for bar.red.and.pred (#402) 2025-07-03 11:56:20 -07:00
ptx_parser_macros Add support for bar.red.and.pred (#402) 2025-07-03 11:56:20 -07:00
ptx_parser_macros_impl Error instead of infinite loop when parsing enum without a derive attribute in derive_parser! (#391) 2025-06-23 16:18:21 -07:00
xtask Bump dependencies (#392) 2025-06-23 18:04:08 -07:00
zluda Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_bindgen Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_blas Create infrastructure for performance libraries (#363) 2025-05-01 22:37:18 +02:00
zluda_blaslt Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_dnn Create infrastructure for performance libraries (#363) 2025-05-01 22:37:18 +02:00
zluda_dump Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_dump_blas Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_dump_blaslt Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_dump_common Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_dump_dnn Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_dump_fft Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_dump_sparse Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
zluda_fft Create infrastructure for performance libraries (#363) 2025-05-01 22:37:18 +02:00
zluda_inject Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_ml Improve build system (#329) 2025-01-28 01:55:36 +01:00
zluda_redirect Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_sparse Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
.gitattributes Fix linguist instructions 2024-08-07 13:29:03 +02:00
.gitignore Reorganize project to a workspace 2020-02-09 20:32:21 +01:00
.gitmodules Fix host code and update to CUDA 12.4 (#299) 2024-12-02 00:29:57 +01:00
Cargo.lock Implement more CUDA driver API to enable simple cuda-samples (#405) 2025-07-08 10:18:30 -07:00
Cargo.toml Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
geekbench.svg Update README for version 4 (#315) 2024-12-31 17:33:59 +01:00
LICENSE-APACHE Update wording, add license 2020-11-24 23:23:53 +01:00
LICENSE-MIT Update wording, add license 2020-11-24 23:23:53 +01:00
README.md Update README.md (#407) 2025-07-08 17:13:53 -07:00

Discord

ZLUDA

ZLUDA is a drop-in replacement for CUDA on non-NVIDIA GPU. ZLUDA allows to run unmodified CUDA applications using non-NVIDIA GPUs with near-native performance.

ZLUDA supports AMD Radeon RX 5000 series and newer GPUs (both desktop and integrated).

GeekBench 5.5.1 chart

ZLUDA is work in progress. Follow development here and say hi on Discord. For more details see the announcement: https://vosen.github.io/ZLUDA/blog/zludas-third-life/

Usage

Warning: This version ZLUDA is under heavy development (more here) and right now only supports Geekbench. ZLUDA probably will not work with your application just yet.

Windows

You should have recent AMD GPU driver ("AMD Software: Adrenalin Edition") installed.
To run your application you should etiher:

  • (Recommended approach) Copy ZLUDA-provided nvcuda.dll and nvml.dll from target\release (if built from sources) or zluda (if downloaded a zip package) into a path which your application uses to load CUDA. Paths vary application to application, but usually it's the directory where the .exe file is located
  • Use ZLUDA launcher like below. ZLUDA launcher is known to be buggy and incomplete:
    <ZLUDA_DIRECTORY>\zluda_with.exe -- <APPLICATION> <APPLICATIONS_ARGUMENTS>
    

Linux

Run your application like this:

LD_LIBRARY_PATH=<ZLUDA_DIRECTORY> <APPLICATION> <APPLICATIONS_ARGUMENTS>

where <ZLUDA_DIRECTORY> is the directory which contains ZLUDA-provided libcuda.so: target/release if you built from sources or zluda if you downloaded prebuilt package.

MacOS

Not supported

Building

Dependencies

  • Git
  • CMake
  • Python 3
  • Rust compiler (recent version)
  • C++ compiler
  • (Optional, but recommended) Ninja build system

Build steps

  • Git clone the repo (make sure to use --recursive option to fetch submodules):
    git clone --recursive https://github.com/vosen/ZLUDA.git
  • Enter freshly cloned ZLUDA directory and build with cargo (this takes a while):
    cargo xtask --release

Contributing

ZLUDA project has a commercial backing and does not accept donations. ZLUDA project accepts pull requests and other non-monetary contributions.

If you want to contribute a code fix or documentation update feel free to open a Pull Request.

Getting started

There's no architecture document (yet). Two most important crates in ZLUDA are ptx (PTX compiler) and zluda (AMD GPU runtime). A good starting point to tinkering the project is to run one of the ptx unit tests under a debugger and understand what it is doing. cargo test -p ptx -- ::add_amdgpu is a simple test that adds two numbers.

Github issues tagged with "help wanted" are tasks that are self-containted. Their level of difficulty varies, they are not always good beginner tasks, but they defined unambiguously.

If you have questions feel free to ask on #devtalk channel on Discord.

License

This software is dual-licensed under either the Apache 2.0 license or the MIT license. See LICENSE-APACHE or LICENSE-MIT for details