Skip to content

Commit e91f7b7

Browse files
Make some minor fixes to JIT+LTO functionality (rapidsai#1896)
* Make it so that if a matrix file changes, CMake re-configures when attempting to rebuild. This puts matrix files on par with CMake files in triggering a re-configure. * Don't build JIT+LTO kernels with debug symbols, as nvcc does not currently support LTO and debug symbols simultaneously. Authors: - Kyle Edwards (https://github.com/KyleFromNVIDIA) Approvers: - Divye Gala (https://github.com/divyegala) URL: rapidsai#1896
1 parent bb85ea9 commit e91f7b7

5 files changed

Lines changed: 26 additions & 15 deletions

File tree

cpp/CMakeLists.txt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,10 @@ if(NOT BUILD_CPU_ONLY)
334334
$<TARGET_NAME_IF_EXISTS:nvidia::cutlass::cutlass>
335335
)
336336
target_compile_options(
337-
cuvs-cagra-search PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
338-
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
337+
cuvs-cagra-search
338+
PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
339+
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
340+
"$<$<AND:$<COMPILE_LANGUAGE:CUDA>,$<CONFIG:Debug>>:${CUVS_DEBUG_CUDA_FLAGS}>"
339341
)
340342

341343
if(BUILD_MG_ALGOS)
@@ -680,8 +682,10 @@ if(NOT BUILD_CPU_ONLY)
680682
POSITION_INDEPENDENT_CODE ON
681683
)
682684
target_compile_options(
683-
cuvs_objs PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
684-
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
685+
cuvs_objs
686+
PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
687+
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
688+
"$<$<AND:$<COMPILE_LANGUAGE:CUDA>,$<CONFIG:Debug>>:${CUVS_DEBUG_CUDA_FLAGS}>"
685689
)
686690

687691
target_compile_definitions(
@@ -760,6 +764,7 @@ if(NOT BUILD_CPU_ONLY)
760764
--expt-relaxed-constexpr>
761765
PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
762766
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
767+
"$<$<AND:$<COMPILE_LANGUAGE:CUDA>,$<CONFIG:Debug>>:${CUVS_DEBUG_CUDA_FLAGS}>"
763768
)
764769
target_compile_definitions(
765770
cuvs

cpp/bench/ann/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# =============================================================================
22
# cmake-format: off
3-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
3+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION.
44
# SPDX-License-Identifier: Apache-2.0
55
# cmake-format: on
66
# =============================================================================
@@ -190,8 +190,10 @@ function(ConfigureAnnBench)
190190
set(${ConfigureAnnBench_CXXFLAGS} ${CUVS_CXX_FLAGS} ${ConfigureAnnBench_CXXFLAGS})
191191

192192
target_compile_options(
193-
${BENCH_NAME} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${ConfigureAnnBench_CXXFLAGS}>"
194-
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
193+
${BENCH_NAME}
194+
PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${ConfigureAnnBench_CXXFLAGS}>"
195+
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
196+
"$<$<AND:$<COMPILE_LANGUAGE:CUDA>,$<CONFIG:Debug>>:${CUVS_DEBUG_CUDA_FLAGS}>"
195197
)
196198

197199
if(CUVS_ANN_BENCH_USE_${ConfigureAnnBench_NAME})

cpp/cmake/modules/ConfigureCUDA.cmake

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# =============================================================================
22
# cmake-format: off
3-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025, NVIDIA CORPORATION.
3+
# SPDX-FileCopyrightText: Copyright (c) 2018-2026, NVIDIA CORPORATION.
44
# SPDX-License-Identifier: Apache-2.0
55
# cmake-format: on
66
# =============================================================================
@@ -55,8 +55,5 @@ if(OpenMP_FOUND)
5555
endif()
5656

5757
# Debug options
58-
if(CMAKE_BUILD_TYPE MATCHES Debug)
59-
message(VERBOSE "cuVS: Building with debugging flags")
60-
list(APPEND CUVS_CUDA_FLAGS -G -Xcompiler=-rdynamic --maxrregcount=64)
61-
list(APPEND CUVS_CUDA_FLAGS -Xptxas --suppress-stack-size-warning)
62-
endif()
58+
list(APPEND CUVS_DEBUG_CUDA_FLAGS -G -Xcompiler=-rdynamic --maxrregcount=64)
59+
list(APPEND CUVS_DEBUG_CUDA_FLAGS -Xptxas --suppress-stack-size-warning)

cpp/cmake/modules/generate_jit_lto_kernels.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ function(generate_jit_lto_kernels source_list_var)
129129
find_package(Python3 REQUIRED COMPONENTS Interpreter)
130130

131131
if(_JIT_LTO_MATRIX_JSON_FILE)
132+
set_property(
133+
DIRECTORY
134+
PROPERTY CMAKE_CONFIGURE_DEPENDS "${_JIT_LTO_MATRIX_JSON_FILE}"
135+
APPEND
136+
)
132137
compute_matrix_product(matrix_product MATRIX_JSON_FILE "${_JIT_LTO_MATRIX_JSON_FILE}")
133138
else()
134139
compute_matrix_product(matrix_product MATRIX_JSON_STRING "${_JIT_LTO_MATRIX_JSON_STRING}")

cpp/tests/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ function(ConfigureTest)
6161
CUDA_STANDARD_REQUIRED ON
6262
)
6363
target_compile_options(
64-
${TEST_NAME} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
65-
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
64+
${TEST_NAME}
65+
PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CUVS_CXX_FLAGS}>"
66+
"$<$<COMPILE_LANGUAGE:CUDA>:${CUVS_CUDA_FLAGS}>"
67+
"$<$<AND:$<COMPILE_LANGUAGE:CUDA>,$<CONFIG:Debug>>:${CUVS_DEBUG_CUDA_FLAGS}>"
6668
)
6769

6870
if(_CUVS_TEST_NOCUDA)

0 commit comments

Comments
 (0)