[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:
55
cccl_upstream/libcudacxx/test/utils/nvidia/nvrtc/README.md
Normal file
55
cccl_upstream/libcudacxx/test/utils/nvidia/nvrtc/README.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user