From 02c856598f7065a8374f0c95587a7b9f2958a13c Mon Sep 17 00:00:00 2001 From: divyegala Date: Wed, 19 Aug 2026 17:40:44 +0000 Subject: [PATCH 1/4] use rtcx ELF embedding --- cpp/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 4d51f17836..f057f7fd85 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -369,8 +369,13 @@ if(NOT BUILD_CPU_ONLY) jit_lto_kernel_usage_requirements INTERFACE rmm::rmm raft::raft CCCL::CCCL cuco::cuco ) + enable_language(ASM) block(PROPAGATE jit_lto_files) set(jit_lto_files) + rtcx_jit_lto_embed_begin( + cuvs_jit_lto_fragments + OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/generated_kernels/jit_lto" + ) set(CMAKE_CUDA_ARCHITECTURES ${JIT_LTO_TARGET_ARCHITECTURE}) set(neighbors_ns "cuvs::neighbors::detail") generate_jit_lto_kernels( @@ -1150,6 +1155,7 @@ if(NOT BUILD_CPU_ONLY) "${CMAKE_CURRENT_BINARY_DIR}/generated_kernels/distance/pairwise_matrix/compute_distance_epilog_rbf" KERNEL_LINK_LIBRARIES jit_lto_kernel_usage_requirements ) + rtcx_jit_lto_embed_finalize(cuvs_jit_lto_fragments SOURCE_LIST jit_lto_files) endblock() # Note that this matrix contains an `arch_includes` placeholder, since we don't currently have a From a7a3fc13137198bffe3eccaae134214321ce4e02 Mon Sep 17 00:00:00 2001 From: divyegala Date: Wed, 19 Aug 2026 18:09:11 +0000 Subject: [PATCH 2/4] upstream rtcx --- cpp/cmake/thirdparty/get_rtcx.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/cmake/thirdparty/get_rtcx.cmake b/cpp/cmake/thirdparty/get_rtcx.cmake index 0c87b5f433..5d52d0cdee 100644 --- a/cpp/cmake/thirdparty/get_rtcx.cmake +++ b/cpp/cmake/thirdparty/get_rtcx.cmake @@ -22,8 +22,8 @@ function(find_and_configure_rtcx VERSION) BUILD_EXPORT_SET cuvs-static-exports INSTALL_EXPORT_SET cuvs-static-exports CPM_ARGS - GIT_REPOSITORY https://github.com/rapidsai/librtcx - GIT_TAG a9f63f8cdd4b0b41a2d88a9f705576a61b4222ec + GIT_REPOSITORY https://github.com/divyegala/librtcx + GIT_TAG cuvs-elf GIT_SHALLOW FALSE ) From 0037f564caf796bffd2835cad8bc081640e6846f Mon Sep 17 00:00:00 2001 From: divyegala Date: Wed, 19 Aug 2026 18:13:55 +0000 Subject: [PATCH 3/4] cmake format --- cpp/CMakeLists.txt | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index f057f7fd85..faae04b738 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -155,20 +155,14 @@ if(NOT BUILD_CPU_ONLY) # * enable the CMake CUDA language # * set other CUDA compilation flags rapids_find_package( - CUDAToolkit REQUIRED - BUILD_EXPORT_SET cuvs-exports - INSTALL_EXPORT_SET cuvs-exports + CUDAToolkit REQUIRED BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports ) else() add_compile_definitions(BUILD_CPU_ONLY) endif() if(NOT DISABLE_OPENMP) - rapids_find_package( - OpenMP REQUIRED - BUILD_EXPORT_SET cuvs-exports - INSTALL_EXPORT_SET cuvs-exports - ) + rapids_find_package(OpenMP REQUIRED BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports) if(OPENMP_FOUND) message(VERBOSE "cuVS: OpenMP found in ${OpenMP_CXX_INCLUDE_DIRS}") endif() @@ -373,8 +367,7 @@ if(NOT BUILD_CPU_ONLY) block(PROPAGATE jit_lto_files) set(jit_lto_files) rtcx_jit_lto_embed_begin( - cuvs_jit_lto_fragments - OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/generated_kernels/jit_lto" + cuvs_jit_lto_fragments OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/generated_kernels/jit_lto" ) set(CMAKE_CUDA_ARCHITECTURES ${JIT_LTO_TARGET_ARCHITECTURE}) set(neighbors_ns "cuvs::neighbors::detail") @@ -1520,11 +1513,7 @@ if(NOT BUILD_CPU_ONLY) endif() if(BUILD_MG_ALGOS) - rapids_find_generate_module( - NCCL - HEADER_NAMES nccl.h - LIBRARY_NAMES nccl - ) + rapids_find_generate_module(NCCL HEADER_NAMES nccl.h LIBRARY_NAMES nccl) find_package(NCCL REQUIRED) target_link_libraries(cuvs_objs PUBLIC $) endif() From 6bd6238acda26daee50c4e74dc572e8216be5226 Mon Sep 17 00:00:00 2001 From: divyegala Date: Wed, 19 Aug 2026 18:51:35 +0000 Subject: [PATCH 4/4] style check --- cpp/CMakeLists.txt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index faae04b738..fd03c4a999 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -155,14 +155,20 @@ if(NOT BUILD_CPU_ONLY) # * enable the CMake CUDA language # * set other CUDA compilation flags rapids_find_package( - CUDAToolkit REQUIRED BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports + CUDAToolkit REQUIRED + BUILD_EXPORT_SET cuvs-exports + INSTALL_EXPORT_SET cuvs-exports ) else() add_compile_definitions(BUILD_CPU_ONLY) endif() if(NOT DISABLE_OPENMP) - rapids_find_package(OpenMP REQUIRED BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports) + rapids_find_package( + OpenMP REQUIRED + BUILD_EXPORT_SET cuvs-exports + INSTALL_EXPORT_SET cuvs-exports + ) if(OPENMP_FOUND) message(VERBOSE "cuVS: OpenMP found in ${OpenMP_CXX_INCLUDE_DIRS}") endif() @@ -1513,7 +1519,11 @@ if(NOT BUILD_CPU_ONLY) endif() if(BUILD_MG_ALGOS) - rapids_find_generate_module(NCCL HEADER_NAMES nccl.h LIBRARY_NAMES nccl) + rapids_find_generate_module( + NCCL + HEADER_NAMES nccl.h + LIBRARY_NAMES nccl + ) find_package(NCCL REQUIRED) target_link_libraries(cuvs_objs PUBLIC $) endif()