Files
project_6/cccl_upstream/libcudacxx/test/CMakeLists.txt
EngineX CI 56fd68e7dd [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
2026-07-30 09:35:51 +00:00

103 lines
2.7 KiB
CMake

find_package(Python COMPONENTS Interpreter)
if (NOT Python_Interpreter_FOUND)
message(
FATAL_ERROR
"Failed to find python interpreter, which is required for running tests and building a libcu++ static library."
)
endif()
# Determine the host triple to avoid invoking `${CXX} -dumpmachine`.
include(GetHostTriple)
get_host_triple(LLVM_INFERRED_HOST_TRIPLE)
set(
LLVM_HOST_TRIPLE
"${LLVM_INFERRED_HOST_TRIPLE}"
CACHE STRING
"Host on which LLVM binaries will run"
)
# By default, we target the host, but this can be overridden at CMake
# invocation time.
set(
LLVM_DEFAULT_TARGET_TRIPLE
"${LLVM_HOST_TRIPLE}"
CACHE STRING
"Default target for which LLVM will generate code."
)
set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")
message(STATUS "LLVM host triple: ${LLVM_HOST_TRIPLE}")
message(STATUS "LLVM default target triple: ${LLVM_DEFAULT_TARGET_TRIPLE}")
set(LIT_EXTRA_ARGS "" CACHE STRING "Use for additional options (e.g. -j12)")
find_program(LLVM_DEFAULT_EXTERNAL_LIT lit)
set(LLVM_LIT_ARGS "-sv ${LIT_EXTRA_ARGS}")
# Libcudacxx's main lit tests
add_subdirectory(libcudacxx)
add_subdirectory(cmake)
# Set appropriate warning levels for MSVC/sane
if ("${CMAKE_CUDA_COMPILER_ID}" STREQUAL "NVIDIA")
# CUDA 11.5 and down do not support '-use-local-env'
if (MSVC)
set(
headertest_warning_levels_device
-Xcompiler=/W4
-Xcompiler=/WX
-Wno-deprecated-gpu-targets
)
if ("${CMAKE_CUDA_COMPILER_VERSION}" GREATER_EQUAL "11.6.0")
list(APPEND headertest_warning_levels_device --use-local-env)
endif()
else()
set(
headertest_warning_levels_device
-Wall
-Werror
all-warnings
-Wno-deprecated-gpu-targets
)
endif()
if (
CCCL_ENABLE_TILE
AND "${CMAKE_CUDA_COMPILER_VERSION}" VERSION_LESS_EQUAL "13.2"
)
message(
FATAL_ERROR
"tile programs require NVCC 13.3 or later; found NVCC ${CMAKE_CUDA_COMPILER_VERSION}"
)
endif()
# Set warnings for Clang as device compiler
elseif ("${CMAKE_CUDA_COMPILER_ID}" STREQUAL "Clang")
set(
headertest_warning_levels_device
-Wall
-Werror
-Wno-unknown-cuda-version
-Xclang=-fcuda-allow-variadic-functions
)
# If the CMAKE_CUDA_COMPILER is unknown, try to use gcc style warnings
else()
set(headertest_warning_levels_device -Wall -Werror)
endif()
# Set raw host/device warnings
if (MSVC)
set(headertest_warning_levels_host /W4 /WX)
else()
set(headertest_warning_levels_host -Wall -Werror)
endif()
# Enable building the nvrtcc project if NVRTC is enabled
if (LIBCUDACXX_TEST_WITH_NVRTC)
add_subdirectory(utils/nvidia/nvrtc)
endif()
add_subdirectory(nvtarget)
add_subdirectory(atomic_codegen)
add_subdirectory(simd_codegen)
add_subdirectory(debugging)