-
-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Description
This is a tracking issue for the GPU offload experiment.
The feature gate for the issue will be #![feature(gpu_offload)].
This work is part of the project goal for Scientific Computing in Rust.
This project will use LLVM's offload infrastructure, which is already used to support OpenMP Offload in other languages like C++.
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Discussion comments will get marked as off-topic or deleted.
Repeated discussions on the tracking issue may lead to the tracking issue getting locked.
Steps
- Get lang experiment approved.
- We approved this in the lang triage meeting on 2024-05-01.
- Land the experimental implementation in nightly.
- Enable the llvm offload build configuration #131527
- gpu offload host code generation #142097 // automatic data movement to/from the GPU
- disable cfg.has_reliable_f128 on amdgcn #144383 // fix an amdgcn breakage
- Offload host2 #142696 // launch gpu kernels
- Offload device #145768 // Fix kernel generation to make runtime test pass
- Offload intrinsic #147936 // Rewrite our frontend by introducing an offload intrinsic
- automate gpu offloading - part 1 #149170 // Reduce the number of steps to compile programs (1/X)
- automate offload, part 2 - clang calls #149202 // Reduce the number of steps further (2/X)
- automate offload, part 3 - clang-linker-wrapper #149827 // Reduce compilation to two cargo invocations (3/3)
- Offload: Build offload as a single Step #150108 // Build Offload as a single Step
- Enable Offload in CI #148671 // Enable offload in CI
- Move shared offload globals and define per-kernel globals once #149788 // Clean up or global vs per-kernel definitions
- Allow inline calls to offload intrinsic #150511 // Support offload calls from more locations
- Expose kernel launch options as offload intrinsic args #150444 // Expose Kernel launch options
- Adjust documentation (see instructions on rustc-dev-guide)
- Formatting for new syntax has been added to the Style Guide (nightly-style-procedure)
- Stabilization PR (see instructions on rustc-dev-guide)
Related
- Do not run mir opts for targets with convergent ops and add convergent attribute #149637
- Add amdgpu intrinsics stdarch#1976
Unresolved Questions
TODO.