Caution
This release is an early-access software technology preview. Running production workloads is not recommended.
A single-header C++ library for simplifying the use of HIP Runtime Compilation (HIPRTC). This is a port of the original CUDA version at https://github.com/NVIDIA/jitify/tree/jitify2 to HIP in order to enable support for AMD GPUs.
- ROCm and HIP 6.2.0 or higher
- CMake 3.9 or higher (for building the tests)
- AMD MI100/MI200/MI300 GPUs
- Linux distribution (tested with Ubuntu 20.04+)
- No support for Windows.
- JIT compilation of HIP sources for NVIDIA architectures is presently not supported.
- LTO is not supported.
- Linking JIT-compiled code to code in the current executable is not supported.
- Removing unused globals is presently not supported.
- Some features are only partially supported due to several issues we have found with HIPRTC. Please see here for more details.
The following tests are only supported partially or have been disabled or they have been modified:
| Test | Status | Comment | Related to Ticket |
|---|---|---|---|
| Minify | modified | Header includes in jit-source were disabled, as they yield errors during JIT-compilation | SWDEV-419480 |
| AssertHeader | disabled | Failing assert crashes the host process with HIP, so the test would fail with HIP. This is a different behaviour between CUDA and HIP. | n/a |
| ConstantMemory | modified | Currently, we do not have a way to extract mangled symbol names from some intermediate code representation (like ptx on NVIDIA side). Symbols therefore are kept tracked of by adding their name expressions manually in the test. | n/a |
| LinkCurrentExecutable | disabled | Hiprtc presently does not allow to link input type HIPRTC_JIT_INPUT_OBJECT. | SWDEV-419737 |
| RemovedUnusedGlobals | disabled | Checks CUDA-/NVRTC-specific features: Currently, we do not have a way to extract unused global variables from some intermediate code representation (like ptx on NVIDIA side). | |
| ArchFlags | modified | We cannot get arch name on the device with HIP_ARCH. | |
| CuRandKernel | disabled | Currently hiprtc returns redefinition errors when including thrust/hipcub/hiprand_kernel headers | SWDEV-419480 |
| Thrust | disabled | Currently hiprtc returns redefinition errors when including thrust/hipcub/hiprand_kernel headers | SWDEV-419480 |
| CompileLTO_IR | disabled | This test is not supported as LTO is not available in HIPRTC. | n/a |
| LinkLTO | disabled | This test is not supported as LTO is not available in HIPRTC. | n/a |