CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
56 lines
1.5 KiB
Markdown
56 lines
1.5 KiB
Markdown
# NVRTCC
|
|
|
|
## How to use:
|
|
|
|
Configure libcudacxx to test with NVRTC and `cmake --build` the project before executing `lit`.
|
|
|
|
```sh
|
|
cmake ... -DLIBCUDACXX_TEST_WITH_NVRTC=ON
|
|
cmake --build $BUILD_DIR
|
|
lit ... $TEST_DIR
|
|
```
|
|
|
|
## How it works
|
|
|
|
`nvrtcc` processes incoming arguments matching for flags that modify its behavior, and passes the rest to NVRTC.
|
|
It will hopefully filter any that don't apply (gcc warnings and such).
|
|
|
|
The input file is processed to be compatible with NVRTC similarly to the `nvrtc.sh` scripts during compilation.
|
|
The resulting file is then compiled with NVRTC and stored as a fatbin. This is, in effect, a compilation pass for NVRTC.
|
|
`.fail.cpp` tests will be analyzable by lit and should work properly.
|
|
|
|
For execution, the fatbin file is provided to nvrtcc again, but will instead launch the precompiled test unit on the GPU.
|
|
|
|
```mermaid
|
|
flowchart TD;
|
|
compile{nvrtcc};
|
|
runfat{nvrtcc};
|
|
|
|
start[Execute lit]
|
|
build(Execute nvrtcc)
|
|
pass(Pass: Continue)
|
|
fail(Fail: Compile time failure)
|
|
save[Save fatbin]
|
|
|
|
load[Load fatbin]
|
|
testpass[Pass: No failures]
|
|
testfail[Fail: Report driver error]
|
|
|
|
save --> load;
|
|
|
|
subgraph Build Pass
|
|
start -- lit -sv -Denable_nvrtc=true --> build;
|
|
build -- nvrtcc -x cu test.pass.cpp ... --> compile;
|
|
compile --> fail;
|
|
compile --> pass;
|
|
pass --> save;
|
|
end
|
|
|
|
|
|
subgraph Test Pass
|
|
load -- nvrtcc test.pass.cpp.fatbin --> runfat;
|
|
runfat --> testpass
|
|
runfat --> testfail
|
|
end
|
|
```
|