CUDA on ??? GPUs
Find a file
Andrzej Janik 9d4f1699d0
Some checks failed
ZLUDA / Build (Linux) (push) Has been cancelled
ZLUDA / Build (Windows) (push) Has been cancelled
ZLUDA / Build AMD GPU unit tests (push) Has been cancelled
ZLUDA / Run AMD GPU unit tests (push) Has been cancelled
Do a better job in zluda_trace when saving opaque ELF binaries (#486)
2025-08-28 18:23:25 -07:00
.cargo Try to make ZLUDA more robust on Windows (#442) 2025-07-28 13:20:04 -07:00
.devcontainer Create infrastructure for performance libraries (#363) 2025-05-01 22:37:18 +02:00
.github/workflows Fix version in nightly trigger (#464) 2025-08-04 13:09:37 -07:00
comgr Add more instructions, tighten generated assembly (#475) 2025-08-18 11:12:57 -07:00
compiler zoc (ZLUDA offline compiler) (#344) 2025-08-13 15:27:02 -07:00
cuda_macros Add more NVML and cuBLAS coverage (#481) 2025-08-26 12:55:12 -07:00
cuda_types Add more NVML and cuBLAS coverage (#481) 2025-08-26 12:55:12 -07:00
dark_api Add more instructions, tighten generated assembly (#475) 2025-08-18 11:12:57 -07:00
detours-sys Redo logging to better log dark API and performance libraries (#372) 2025-06-09 15:29:14 -07:00
ext Some fixes to BLASLt (#482) 2025-08-26 14:28:36 -07:00
format Add more NVML and cuBLAS coverage (#481) 2025-08-26 12:55:12 -07:00
llvm_zluda Always use Unix line endings (#453) 2025-07-30 15:09:47 -07:00
ptx Implement vote instruction and add support for %laneid (#484) 2025-08-28 18:23:09 -07:00
ptx_parser Implement vote instruction and add support for %laneid (#484) 2025-08-28 18:23:09 -07:00
ptx_parser_macros Add pass test mechanism for insert_implicit_conversions (#477) 2025-08-22 13:01:39 -07:00
ptx_parser_macros_impl Add pass test mechanism for insert_implicit_conversions (#477) 2025-08-22 13:01:39 -07:00
xtask Implement kernel cache (#465) 2025-08-11 09:20:40 -07:00
zluda Add more host-side functionality (#480) 2025-08-25 16:55:17 -07:00
zluda_bindgen Add more NVML and cuBLAS coverage (#481) 2025-08-26 12:55:12 -07:00
zluda_blas Some fixes to BLASLt (#482) 2025-08-26 14:28:36 -07:00
zluda_blaslt Some fixes to BLASLt (#482) 2025-08-26 14:28:36 -07:00
zluda_cache Implement kernel cache (#465) 2025-08-11 09:20:40 -07:00
zluda_common Some fixes to BLASLt (#482) 2025-08-26 14:28:36 -07:00
zluda_dnn Check Rust formatting on pull requests (#451) 2025-07-30 14:55:09 -07:00
zluda_fft Check Rust formatting on pull requests (#451) 2025-07-30 14:55:09 -07:00
zluda_inject Rename zluda_dump to zluda_trace (#456) 2025-07-31 08:07:03 -07:00
zluda_ml Add more NVML and cuBLAS coverage (#481) 2025-08-26 12:55:12 -07:00
zluda_preload Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
zluda_redirect Make sure it is possible to log 32bit PhysX (#374) 2025-07-08 10:19:49 -07:00
zluda_sparse Check Rust formatting on pull requests (#451) 2025-07-30 14:55:09 -07:00
zluda_trace Do a better job in zluda_trace when saving opaque ELF binaries (#486) 2025-08-28 18:23:25 -07:00
zluda_trace_blas Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
zluda_trace_blaslt Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
zluda_trace_common Add nvml tracing (#476) 2025-08-18 23:09:15 -07:00
zluda_trace_dnn Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
zluda_trace_fft Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
zluda_trace_nvml Add nvml tracing (#476) 2025-08-18 23:09:15 -07:00
zluda_trace_sparse Force loading ZLUDA through LD_PRELOAD (#447) 2025-07-31 18:00:13 -07:00
.gitattributes Fix linguist instructions 2024-08-07 13:29:03 +02:00
.gitignore Add support for shfl.sync.MODE.b32 (#409) 2025-07-16 17:23:11 -07:00
.gitmodules Fix host code and update to CUDA 12.4 (#299) 2024-12-02 00:29:57 +01:00
.rustfmt.toml Always use Unix line endings (#453) 2025-07-30 15:09:47 -07:00
Cargo.lock Do a better job in zluda_trace when saving opaque ELF binaries (#486) 2025-08-28 18:23:25 -07:00
Cargo.toml Add nvml tracing (#476) 2025-08-18 23:09:15 -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 Fix typo in README.md (either) (#419) 2025-07-17 09:32:41 -07:00

Discord

ZLUDA

ZLUDA is a drop-in replacement for CUDA on non-NVIDIA GPUs. ZLUDA allows running 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 a 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 a recent AMD GPU driver ("AMD Software: Adrenalin Edition") installed.
To run your application, you should either:

  • (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 a 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). The two most important crates in ZLUDA are ptx (PTX compiler) and zluda (AMD GPU runtime). A good starting point to tinkering with 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-contained. Their level of difficulty varies, and they are not always good beginner tasks, but they are 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