Repository navigation
Tracking Issue for GPU-offload #131513
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
- Adding a new offload_args intrinsic, which only maps arguments #150683 // Add a new offload_arg intrinsic.
- Add scalar support for offload #150288 // diverse benchmark fixes
- offload: move (un)register lib into global_ctors #150893 // Move omp/ol library registration from code to global ctor/dtor
- Generate openmp metadata #151071 // Enable the openmp-opt pass
- add spirv64-intel-unknown target triple #151549 // Enable offload for Intel GPUs
- Cleanup offload datatransfer #151640 // Cleanup datatransfer to support the openmp-opt pass
- Properly pass offload sizes to kernel args #152283 // Use a global, not alloca, for const sizes.
- Offload: Update confusing and outdated file name #156941 // Update file naming convention
- dlopen offload #160335 // dlopen offload
- Add offload support to the dist-x86_64-linux CI job #159064 // distribute offload in CI
- Add offload component on nightly #160991 // add (partial) offload component to nightly
- Properly pass offload sizes to kernel args #152283 // Properly pass offload sizes to kernel args
- Offload slice support #153411 // Offload slice support
offload_kernelmacro expansion #156642 // Offload Kernel macro expansion- Add type-check to offload intrinisc calls #158693 // Add type-check to offload intrinisc calls
- Add support for generics in
offloadand removeno_mangleattribute #159566 // Add support for generics - Add offload guard flags to typeck to prevent perf regressions #160454 // fix compile time regression from generic support
offload!function-like macro #161055 // offload! function-like macro- offload: automate manual clang-linker-wrapper step #162309 // offload: automate manual clang-linker-wrapper step
- bootstrap build order - missing lld for autodiff/offload #160584 // bootstrap build order - missing lld for autodiff/offload
- link the offload with in-tree lld if possible #162824 // link Enzyme and the offload with in-tree lld if possible
- Improve Offload artifact creation #162305 // Improve Offload artifact creation
- Offload cmake cleanups #162196 // Offload cmake cleanups
- 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 jump-threading for GPUs #149637
- Add amdgpu intrinsics stdarch#1976
- add
spirvtarget #150851 // spirv target
Unresolved Questions
TODO.
Activity
Rollup merge of rust-lang#131527 - ZuseZ4:enable-llvm-offload-runtime…
Auto merge of rust-lang#131527 - ZuseZ4:enable-llvm-offload-runtime, …
Auto merge of rust-lang#131527 - ZuseZ4:enable-llvm-offload-runtime, …
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#142097 - ZuseZ4:offload-host1, r=oli-obk
Unrolled build for #142097
Rollup merge of #142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of #142097 - ZuseZ4:offload-host1, r=oli-obk
Rollup merge of rust-lang#149788 - Sa4dUs:offload-cleanup, r=ZuseZ4
Unrolled build for #149788
Rollup merge of #149788 - Sa4dUs:offload-cleanup, r=ZuseZ4
Rollup merge of #149788 - Sa4dUs:offload-cleanup, r=ZuseZ4