[INFRA] Import NVIDIA/CCCL upstream as optimization reference library

CCCL (CUDA C++ Core Libraries) provides:
- CUB: device/block/warp-level GPU primitives (reduce, scan, sort, topk)
- Thrust: high-level parallel algorithms (transform_reduce, sort, scan)
- libcudacxx: CUDA C++ standard library (atomics, barriers, memory)
- cudax: experimental features (memory resources, allocators)
- Tuning policies: per-SM hardware-specific algorithm parameters

Competition optimization vectors mapped to CCCL:
- Output TPS (83% weight): warp_reduce, block_reduce, device_topk
- Input TPS (14% weight): device_scan, block_load, prefetch
- Cache TPS (3% weight): prefix caching strategy patterns
- Memory (0.9 util): pooled/cached/buddy allocators

Source: https://github.com/NVIDIA/cccl (shallow clone, HEAD only)
License: Apache-2.0
This commit is contained in:
EngineX CI
2026-07-30 09:35:51 +00:00
parent b4d01f481e
commit 56fd68e7dd
8871 changed files with 1454674 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
# 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
```