From c94e7e6d38d26a5cff4c1d5a7dfd81f2eabd4333 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 9 Dec 2025 11:11:14 -0600 Subject: [PATCH 01/22] Remove CUDA_STATIC_RUNTIME option, always use static linking - Remove CUDA_STATIC_RUNTIME option from cpp/CMakeLists.txt - Always use static CUDA runtime in rapids_cuda_init_runtime - Update get_cutlass.cmake and get_faiss.cmake to always use static - Remove CUDA_STATIC_RUNTIME from python/libcuvs/CMakeLists.txt - Remove CUDA_STATIC_RUNTIME from docs - Remove cuda-cudart from run requirements in conda recipes --- conda/recipes/cuvs/recipe.yaml | 2 -- conda/recipes/libcuvs/recipe.yaml | 8 -------- cpp/CMakeLists.txt | 4 +--- cpp/cmake/thirdparty/get_cutlass.cmake | 4 +--- cpp/cmake/thirdparty/get_faiss.cmake | 2 +- docs/source/build.rst | 5 ----- python/libcuvs/CMakeLists.txt | 1 - 7 files changed, 3 insertions(+), 23 deletions(-) diff --git a/conda/recipes/cuvs/recipe.yaml b/conda/recipes/cuvs/recipe.yaml index 0debf2dd75..99ca50555a 100644 --- a/conda/recipes/cuvs/recipe.yaml +++ b/conda/recipes/cuvs/recipe.yaml @@ -72,11 +72,9 @@ requirements: - if: cuda_major == "12" then: cuda-python >=12.9.2,<13.0 else: cuda-python >=13.0.1,<14.0 - - cuda-cudart ignore_run_exports: by_name: - cuda-version - - cuda-cudart tests: - python: diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 8b4516dc36..ad38c0d0be 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -111,14 +111,12 @@ outputs: - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - libraft-headers =${{ minor_version }} - nccl - - cuda-cudart - libcublas - libcurand - libcusolver - libcusparse ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libaio - libboost @@ -166,14 +164,12 @@ outputs: - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - libraft-headers =${{ minor_version }} - nccl - - cuda-cudart - libcublas - libcurand - libcusolver - libcusparse ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libaio - libboost @@ -252,14 +248,12 @@ outputs: - ${{ pin_subpackage("libcuvs", exact=True) }} - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - nccl - - cuda-cudart - libcublas - libcurand - libcusolver - libcusparse ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libaio - libboost @@ -319,7 +313,6 @@ outputs: run: - ${{ pin_subpackage("libcuvs", exact=True) }} - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - - cuda-cudart - libcublas - libcurand - libcusolver @@ -330,7 +323,6 @@ outputs: then: mkl =2023 ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libcublas - libcurand diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 76abede565..7c3e86a5eb 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -54,7 +54,6 @@ option(CUDA_ENABLE_KERNELINFO "Enable kernel resource usage info" OFF) option(CUDA_ENABLE_LINEINFO "Enable the -lineinfo option for nvcc (useful for cuda-memcheck / profiler)" OFF ) -option(CUDA_STATIC_RUNTIME "Statically link the CUDA runtime" OFF) option(CUDA_STATIC_MATH_LIBRARIES "Statically link the CUDA math libraries" OFF) option(CUVS_STATIC_RAPIDS_LIBRARIES "Build and statically link RAPIDS libraries" OFF) option(CUDA_LOG_COMPILE_TIME "Write a log of compilation times to nvcc_compile_log.csv" OFF) @@ -112,7 +111,6 @@ message(VERBOSE "cuVS: Disable OpenMP: ${DISABLE_OPENMP}") message(VERBOSE "cuVS: Enable kernel resource usage info: ${CUDA_ENABLE_KERNELINFO}") message(VERBOSE "cuVS: Enable lineinfo in nvcc: ${CUDA_ENABLE_LINEINFO}") message(VERBOSE "cuVS: Enable nvtx markers: ${CUVS_NVTX}") -message(VERBOSE "cuVS: Statically link the CUDA runtime: ${CUDA_STATIC_RUNTIME}") message(VERBOSE "cuVS: Statically link the CUDA math libraries: ${CUDA_STATIC_MATH_LIBRARIES}") message(VERBOSE "cuVS: Build and statically link RAPIDS libraries: ${CUVS_STATIC_RAPIDS_LIBRARIES}") @@ -149,7 +147,7 @@ endif() if(NOT BUILD_CPU_ONLY) # CUDA runtime - rapids_cuda_init_runtime(USE_STATIC ${CUDA_STATIC_RUNTIME}) + rapids_cuda_init_runtime(USE_STATIC ON) # * find CUDAToolkit package # * determine GPU architectures # * enable the CMake CUDA language diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index 1c12b7ae5f..192a098c92 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -24,9 +24,7 @@ function(find_and_configure_cutlass) CACHE BOOL "Disable CUTLASS to build with cuBLAS library." ) - if (CUDA_STATIC_RUNTIME) - set(CUDART_LIBRARY "${CUDA_cudart_static_LIBRARY}" CACHE FILEPATH "fixing cutlass cmake code" FORCE) - endif() + set(CUDART_LIBRARY "${CUDA_cudart_static_LIBRARY}" CACHE FILEPATH "fixing cutlass cmake code" FORCE) include("${rapids-cmake-dir}/cpm/package_override.cmake") rapids_cpm_package_override("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../patches/cutlass_override.json") diff --git a/cpp/cmake/thirdparty/get_faiss.cmake b/cpp/cmake/thirdparty/get_faiss.cmake index 9f3aa0f36f..027351b351 100644 --- a/cpp/cmake/thirdparty/get_faiss.cmake +++ b/cpp/cmake/thirdparty/get_faiss.cmake @@ -47,7 +47,7 @@ function(find_and_configure_faiss) "FAISS_ENABLE_CUVS ${PKG_ENABLE_GPU}" "FAISS_ENABLE_PYTHON OFF" "FAISS_OPT_LEVEL ${CUVS_FAISS_OPT_LEVEL}" - "FAISS_USE_CUDA_TOOLKIT_STATIC ${CUDA_STATIC_RUNTIME}" + "FAISS_USE_CUDA_TOOLKIT_STATIC ON" "BUILD_TESTING OFF" "CMAKE_MESSAGE_LOG_LEVEL VERBOSE" ) diff --git a/docs/source/build.rst b/docs/source/build.rst index 0671ab013b..9d2fafe5f4 100644 --- a/docs/source/build.rst +++ b/docs/source/build.rst @@ -227,11 +227,6 @@ cuVS has the following configurable cmake flags available: - OFF - Enable the `-lineinfo` option for nvcc - * - CUDA_STATIC_RUNTIME - - ON, OFF - - OFF - - Statically link the CUDA runtime - * - CUDA_STATIC_MATH_LIBRARIES - ON, OFF - OFF diff --git a/python/libcuvs/CMakeLists.txt b/python/libcuvs/CMakeLists.txt index 7f5d100587..8a58f747d2 100644 --- a/python/libcuvs/CMakeLists.txt +++ b/python/libcuvs/CMakeLists.txt @@ -31,7 +31,6 @@ endif() unset(cuvs_FOUND) # --- CUDA --- # -set(CUDA_STATIC_RUNTIME ON) set(CUDA_STATIC_MATH_LIBRARIES OFF) # --- RAFT ---# From b149dfeb81e446519b3408696027f02ee51138e3 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 9 Dec 2025 18:06:42 -0600 Subject: [PATCH 02/22] Remove cuda-cudart-dev dependencies --- conda/environments/all_cuda-129_arch-aarch64.yaml | 1 - conda/environments/all_cuda-129_arch-x86_64.yaml | 1 - conda/environments/all_cuda-130_arch-aarch64.yaml | 1 - conda/environments/all_cuda-130_arch-x86_64.yaml | 1 - conda/environments/bench_ann_cuda-129_arch-aarch64.yaml | 1 - conda/environments/bench_ann_cuda-129_arch-x86_64.yaml | 1 - conda/environments/bench_ann_cuda-130_arch-aarch64.yaml | 1 - conda/environments/bench_ann_cuda-130_arch-x86_64.yaml | 1 - conda/environments/go_cuda-129_arch-aarch64.yaml | 1 - conda/environments/go_cuda-129_arch-x86_64.yaml | 1 - conda/environments/go_cuda-130_arch-aarch64.yaml | 1 - conda/environments/go_cuda-130_arch-x86_64.yaml | 1 - conda/environments/rust_cuda-129_arch-aarch64.yaml | 1 - conda/environments/rust_cuda-129_arch-x86_64.yaml | 1 - conda/environments/rust_cuda-130_arch-aarch64.yaml | 1 - conda/environments/rust_cuda-130_arch-x86_64.yaml | 1 - conda/recipes/cuvs/recipe.yaml | 1 - conda/recipes/libcuvs/recipe.yaml | 5 ----- dependencies.yaml | 1 - 19 files changed, 23 deletions(-) diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 7dd7df95f1..164bfebbfc 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -11,7 +11,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 46a60255dd..a438db7ffc 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -11,7 +11,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/all_cuda-130_arch-aarch64.yaml b/conda/environments/all_cuda-130_arch-aarch64.yaml index ff50da3cfb..2b44f06ec8 100644 --- a/conda/environments/all_cuda-130_arch-aarch64.yaml +++ b/conda/environments/all_cuda-130_arch-aarch64.yaml @@ -11,7 +11,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/all_cuda-130_arch-x86_64.yaml b/conda/environments/all_cuda-130_arch-x86_64.yaml index 62d0526fe6..b4f3cdf093 100644 --- a/conda/environments/all_cuda-130_arch-x86_64.yaml +++ b/conda/environments/all_cuda-130_arch-x86_64.yaml @@ -11,7 +11,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/bench_ann_cuda-129_arch-aarch64.yaml b/conda/environments/bench_ann_cuda-129_arch-aarch64.yaml index 2710242ccd..46fa05f2e1 100644 --- a/conda/environments/bench_ann_cuda-129_arch-aarch64.yaml +++ b/conda/environments/bench_ann_cuda-129_arch-aarch64.yaml @@ -10,7 +10,6 @@ dependencies: - clang==20.1.4 - click - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/bench_ann_cuda-129_arch-x86_64.yaml b/conda/environments/bench_ann_cuda-129_arch-x86_64.yaml index 3000bcd781..14d33bc9ec 100644 --- a/conda/environments/bench_ann_cuda-129_arch-x86_64.yaml +++ b/conda/environments/bench_ann_cuda-129_arch-x86_64.yaml @@ -10,7 +10,6 @@ dependencies: - clang==20.1.4 - click - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/bench_ann_cuda-130_arch-aarch64.yaml b/conda/environments/bench_ann_cuda-130_arch-aarch64.yaml index e1b83a7aed..ca294ee0a7 100644 --- a/conda/environments/bench_ann_cuda-130_arch-aarch64.yaml +++ b/conda/environments/bench_ann_cuda-130_arch-aarch64.yaml @@ -10,7 +10,6 @@ dependencies: - clang==20.1.4 - click - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/bench_ann_cuda-130_arch-x86_64.yaml b/conda/environments/bench_ann_cuda-130_arch-x86_64.yaml index ab9a48686d..e283dd99b3 100644 --- a/conda/environments/bench_ann_cuda-130_arch-x86_64.yaml +++ b/conda/environments/bench_ann_cuda-130_arch-x86_64.yaml @@ -10,7 +10,6 @@ dependencies: - clang==20.1.4 - click - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-129_arch-aarch64.yaml b/conda/environments/go_cuda-129_arch-aarch64.yaml index d899c09dd4..0b1b256909 100644 --- a/conda/environments/go_cuda-129_arch-aarch64.yaml +++ b/conda/environments/go_cuda-129_arch-aarch64.yaml @@ -10,7 +10,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-129_arch-x86_64.yaml b/conda/environments/go_cuda-129_arch-x86_64.yaml index 1af5244cde..8ce28259df 100644 --- a/conda/environments/go_cuda-129_arch-x86_64.yaml +++ b/conda/environments/go_cuda-129_arch-x86_64.yaml @@ -10,7 +10,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-130_arch-aarch64.yaml b/conda/environments/go_cuda-130_arch-aarch64.yaml index 1e5ccc0671..1fd96b6c28 100644 --- a/conda/environments/go_cuda-130_arch-aarch64.yaml +++ b/conda/environments/go_cuda-130_arch-aarch64.yaml @@ -10,7 +10,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-130_arch-x86_64.yaml b/conda/environments/go_cuda-130_arch-x86_64.yaml index 643fea7df4..f6fa536419 100644 --- a/conda/environments/go_cuda-130_arch-x86_64.yaml +++ b/conda/environments/go_cuda-130_arch-x86_64.yaml @@ -10,7 +10,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-aarch64.yaml b/conda/environments/rust_cuda-129_arch-aarch64.yaml index 6669aa151b..01049d33a3 100644 --- a/conda/environments/rust_cuda-129_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-129_arch-aarch64.yaml @@ -9,7 +9,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-x86_64.yaml b/conda/environments/rust_cuda-129_arch-x86_64.yaml index a9d5f2bd53..3c9e5081d9 100644 --- a/conda/environments/rust_cuda-129_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-129_arch-x86_64.yaml @@ -9,7 +9,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-130_arch-aarch64.yaml b/conda/environments/rust_cuda-130_arch-aarch64.yaml index b975c685f9..b6c01b396c 100644 --- a/conda/environments/rust_cuda-130_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-130_arch-aarch64.yaml @@ -9,7 +9,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-130_arch-x86_64.yaml b/conda/environments/rust_cuda-130_arch-x86_64.yaml index 5394f45a27..acaf47c2e3 100644 --- a/conda/environments/rust_cuda-130_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-130_arch-x86_64.yaml @@ -9,7 +9,6 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/recipes/cuvs/recipe.yaml b/conda/recipes/cuvs/recipe.yaml index 99ca50555a..eb837c63bd 100644 --- a/conda/recipes/cuvs/recipe.yaml +++ b/conda/recipes/cuvs/recipe.yaml @@ -62,7 +62,6 @@ requirements: - if: cuda_major == "12" then: cuda-python >=12.9.2,<13.0 else: cuda-python >=13.0.1,<14.0 - - cuda-cudart-dev run: - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - libcuvs =${{ version }} diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index ad38c0d0be..85628e54b1 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -63,7 +63,6 @@ cache: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -101,7 +100,6 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -153,7 +151,6 @@ outputs: - ${{ pin_subpackage("libcuvs", exact=True) }} - cuda-version =${{ cuda_version }} - openblas # required by some CPU algos in benchmarks - - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -238,7 +235,6 @@ outputs: - libraft-headers =${{ minor_version }} - librmm =${{ minor_version }} - nccl ${{ nccl_version }} - - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -293,7 +289,6 @@ outputs: - ${{ stdlib("c") }} host: - ${{ pin_subpackage("libcuvs", exact=True) }} - - cuda-cudart-dev - cuda-profiler-api - cuda-version =${{ cuda_version }} - libcublas-dev diff --git a/dependencies.yaml b/dependencies.yaml index e92b1e30a6..18c59ce303 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -311,7 +311,6 @@ dependencies: - output_types: [conda] packages: - cuda-nvtx-dev - - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev From 28b0715c2a2edbeae63098bd1cd79b284c4a37e1 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Tue, 9 Dec 2025 18:11:44 -0600 Subject: [PATCH 03/22] Use CUDA::cudart_static instead of CUDA::cudart --- c/tests/CMakeLists.txt | 2 +- examples/c/CMakeLists.txt | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt index 6d52e5b174..090cb3d1f3 100644 --- a/c/tests/CMakeLists.txt +++ b/c/tests/CMakeLists.txt @@ -94,7 +94,7 @@ endif() ConfigureTest(NAME cuvs_c_headers PATH core/headers.c) ConfigureTest(NAME cuvs_c_test PATH core/c_api.c) -target_link_libraries(cuvs_c_test PRIVATE CUDA::cudart) +target_link_libraries(cuvs_c_test PRIVATE CUDA::cudart_static) ConfigureTest(NAME cuvs_c_neighbors_test PATH neighbors/c_api.c) # ################################################################################################## diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index b6bee50e26..545100f9ac 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -33,29 +33,29 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror") add_executable(CAGRA_C_EXAMPLE src/cagra_c_example.c) target_include_directories(CAGRA_C_EXAMPLE PUBLIC "$") target_link_libraries( - CAGRA_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $ + CAGRA_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart_static $ ) add_executable(L2_C_EXAMPLE src/L2_c_example.c) target_include_directories(L2_C_EXAMPLE PUBLIC "$") target_link_libraries( - L2_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $ + L2_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart_static $ ) add_executable(IVF_FLAT_C_EXAMPLE src/ivf_flat_c_example.c) target_include_directories(IVF_FLAT_C_EXAMPLE PUBLIC "$") target_link_libraries( - IVF_FLAT_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $ + IVF_FLAT_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart_static $ ) add_executable(IVF_PQ_C_EXAMPLE src/ivf_pq_c_example.c) target_include_directories(IVF_PQ_C_EXAMPLE PUBLIC "$") target_link_libraries( - IVF_PQ_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $ + IVF_PQ_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart_static $ ) add_executable(BRUTEFORCE_C_EXAMPLE src/bruteforce_c_example.c) target_include_directories(BRUTEFORCE_C_EXAMPLE PUBLIC "$") target_link_libraries( - BRUTEFORCE_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart $ + BRUTEFORCE_C_EXAMPLE PRIVATE cuvs::c_api CUDA::cudart_static $ ) From 0f3915adab847f65a9a97f0532732a3f9a5053b2 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 18:30:23 +0000 Subject: [PATCH 04/22] Review feedback, use static package in conda --- ci/build_go.sh | 4 ++-- conda/recipes/libcuvs/recipe.yaml | 8 ++------ docs/source/build.rst | 2 +- examples/go/README.md | 2 +- rust/cuvs-sys/build.rs | 1 - 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/ci/build_go.sh b/ci/build_go.sh index 925dfb9153..dc08845447 100755 --- a/ci/build_go.sh +++ b/ci/build_go.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -31,7 +31,7 @@ set -eu rapids-print-env export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart -lcuvs -lcuvs_c" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 47fb461660..5531690004 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -179,7 +179,7 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-dev + - cuda-cudart-static - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -194,7 +194,6 @@ outputs: - libraft-headers =${{ minor_version }} - librmm =${{ minor_version }} - nccl - - cuda-cudart - libcublas - libcurand - libcusolver @@ -204,7 +203,6 @@ outputs: - libnvjitlink ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libaio - libboost @@ -246,7 +244,7 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-dev + - cuda-cudart-static - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -261,7 +259,6 @@ outputs: - libraft-headers =${{ minor_version }} - librmm =${{ minor_version }} - nccl - - cuda-cudart - libcublas - libcurand - libcusolver @@ -271,7 +268,6 @@ outputs: - libnvjitlink ignore_run_exports: by_name: - - cuda-cudart - cuda-version - libaio - libboost diff --git a/docs/source/build.rst b/docs/source/build.rst index b5370d433f..5e863e40f4 100644 --- a/docs/source/build.rst +++ b/docs/source/build.rst @@ -205,7 +205,7 @@ After building the C and C++ libraries, the Golang library can be built with the export CUDA_HOME="/usr/local/cuda" # or wherever your CUDA installation is. export CGO_CFLAGS="-I${CONDA_PREFIX}/include -I${CUDA_HOME}/include" - export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart -lcuvs -lcuvs_c" + export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang diff --git a/examples/go/README.md b/examples/go/README.md index 007eae7582..9a03a97841 100644 --- a/examples/go/README.md +++ b/examples/go/README.md @@ -17,7 +17,7 @@ You may prefer to use `mamba`, as it provides significant speedup over `conda`. 1. Set up the required environment variables: ```bash export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart -lcuvs -lcuvs_c" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang ``` diff --git a/rust/cuvs-sys/build.rs b/rust/cuvs-sys/build.rs index 99e811eeb9..621eebbcb3 100644 --- a/rust/cuvs-sys/build.rs +++ b/rust/cuvs-sys/build.rs @@ -16,7 +16,6 @@ fn main() { cuvs_build.display() ); println!("cargo:rustc-link-lib=dylib=cuvs_c"); - println!("cargo:rustc-link-lib=dylib=cudart"); // we need some extra flags both to link against cuvs, and also to run bindgen // specifically we need to: From 27f1a4e68192f9355bf5794b1455144cbd20498e Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 18:37:36 +0000 Subject: [PATCH 05/22] Copyright --- c/tests/CMakeLists.txt | 2 +- python/libcuvs/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt index 090cb3d1f3..2d09490975 100644 --- a/c/tests/CMakeLists.txt +++ b/c/tests/CMakeLists.txt @@ -1,6 +1,6 @@ # ============================================================================= # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on # ============================================================================= diff --git a/python/libcuvs/CMakeLists.txt b/python/libcuvs/CMakeLists.txt index 8a58f747d2..bac8373cf7 100644 --- a/python/libcuvs/CMakeLists.txt +++ b/python/libcuvs/CMakeLists.txt @@ -1,6 +1,6 @@ # ============================================================================= # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on # ============================================================================= From d49483951ffc3f69e5fd5fc57b21cedcb9975c68 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 19:26:21 +0000 Subject: [PATCH 06/22] Link cudart_static in Rust and Go builds --- ci/build_go.sh | 2 +- conda/environments/go_cuda-129_arch-aarch64.yaml | 1 + conda/environments/go_cuda-129_arch-x86_64.yaml | 1 + conda/environments/go_cuda-131_arch-aarch64.yaml | 1 + conda/environments/go_cuda-131_arch-x86_64.yaml | 1 + conda/environments/rust_cuda-129_arch-aarch64.yaml | 1 + conda/environments/rust_cuda-129_arch-x86_64.yaml | 1 + conda/environments/rust_cuda-131_arch-aarch64.yaml | 1 + conda/environments/rust_cuda-131_arch-x86_64.yaml | 1 + dependencies.yaml | 7 +++++++ rust/cuvs-sys/build.rs | 1 + 11 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ci/build_go.sh b/ci/build_go.sh index dc08845447..bc1bf15298 100755 --- a/ci/build_go.sh +++ b/ci/build_go.sh @@ -31,7 +31,7 @@ set -eu rapids-print-env export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcuvs -lcuvs_c" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang diff --git a/conda/environments/go_cuda-129_arch-aarch64.yaml b/conda/environments/go_cuda-129_arch-aarch64.yaml index 6b2694bd69..fde86a418e 100644 --- a/conda/environments/go_cuda-129_arch-aarch64.yaml +++ b/conda/environments/go_cuda-129_arch-aarch64.yaml @@ -10,6 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-129_arch-x86_64.yaml b/conda/environments/go_cuda-129_arch-x86_64.yaml index c605d11b78..d4ffafb52a 100644 --- a/conda/environments/go_cuda-129_arch-x86_64.yaml +++ b/conda/environments/go_cuda-129_arch-x86_64.yaml @@ -10,6 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-131_arch-aarch64.yaml b/conda/environments/go_cuda-131_arch-aarch64.yaml index 5e4e574dc8..83cd04f236 100644 --- a/conda/environments/go_cuda-131_arch-aarch64.yaml +++ b/conda/environments/go_cuda-131_arch-aarch64.yaml @@ -10,6 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-131_arch-x86_64.yaml b/conda/environments/go_cuda-131_arch-x86_64.yaml index 286e08e033..b66838fd18 100644 --- a/conda/environments/go_cuda-131_arch-x86_64.yaml +++ b/conda/environments/go_cuda-131_arch-x86_64.yaml @@ -10,6 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-aarch64.yaml b/conda/environments/rust_cuda-129_arch-aarch64.yaml index 2dfc98220b..9b67792456 100644 --- a/conda/environments/rust_cuda-129_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-129_arch-aarch64.yaml @@ -9,6 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-x86_64.yaml b/conda/environments/rust_cuda-129_arch-x86_64.yaml index 4c8cdf12ec..6ea0654a8b 100644 --- a/conda/environments/rust_cuda-129_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-129_arch-x86_64.yaml @@ -9,6 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-131_arch-aarch64.yaml b/conda/environments/rust_cuda-131_arch-aarch64.yaml index efa066d851..fd3e591dbe 100644 --- a/conda/environments/rust_cuda-131_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-131_arch-aarch64.yaml @@ -9,6 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-131_arch-x86_64.yaml b/conda/environments/rust_cuda-131_arch-x86_64.yaml index ea3ff4404d..4260f05a5d 100644 --- a/conda/environments/rust_cuda-131_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-131_arch-x86_64.yaml @@ -9,6 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 +- cuda-cudart-static - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/dependencies.yaml b/dependencies.yaml index 8dcfd1e750..ee8819aa56 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -96,6 +96,7 @@ files: - cuda_version - rapids_build - rust + - depends_on_cudart - depends_on_libcuvs - depends_on_libraft - depends_on_nccl @@ -110,6 +111,7 @@ files: - cuda_version - rapids_build - go + - depends_on_cudart - depends_on_libcuvs - depends_on_libraft - depends_on_nccl @@ -356,6 +358,11 @@ dependencies: - matrix: packages: - cuda-toolkit[cublas,curand,cusolver,cusparse,nvjitlink]>=12,<14 + depends_on_cudart: + common: + - output_types: conda + packages: + - cuda-cudart-static depends_on_cupy: common: - output_types: conda diff --git a/rust/cuvs-sys/build.rs b/rust/cuvs-sys/build.rs index 621eebbcb3..a889b409cb 100644 --- a/rust/cuvs-sys/build.rs +++ b/rust/cuvs-sys/build.rs @@ -16,6 +16,7 @@ fn main() { cuvs_build.display() ); println!("cargo:rustc-link-lib=dylib=cuvs_c"); + println!("cargo:rustc-link-lib=static=cudart_static"); // we need some extra flags both to link against cuvs, and also to run bindgen // specifically we need to: From 48c94b2c4b8968d787a24e5236d784c45164b578 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 20:22:35 +0000 Subject: [PATCH 07/22] Link glibc in Go, add $CONDA_PREFIX/lib to Rust build --- ci/build_go.sh | 2 +- rust/cuvs-sys/build.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ci/build_go.sh b/ci/build_go.sh index bc1bf15298..ef5d3b960a 100755 --- a/ci/build_go.sh +++ b/ci/build_go.sh @@ -31,7 +31,7 @@ set -eu rapids-print-env export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -lc" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang diff --git a/rust/cuvs-sys/build.rs b/rust/cuvs-sys/build.rs index a889b409cb..477575ec0f 100644 --- a/rust/cuvs-sys/build.rs +++ b/rust/cuvs-sys/build.rs @@ -15,6 +15,10 @@ fn main() { "cargo:rustc-link-search=native={}/lib", cuvs_build.display() ); + println!( + "cargo:rustc-link-search=native={}/lib", + env::var("CONDA_PREFIX").unwrap() + ); println!("cargo:rustc-link-lib=dylib=cuvs_c"); println!("cargo:rustc-link-lib=static=cudart_static"); From 5a201b9821a9fd8070a705d3a8dab75058842485 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 20:54:40 +0000 Subject: [PATCH 08/22] -ldl --- ci/build_go.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/build_go.sh b/ci/build_go.sh index ef5d3b960a..ad694b730c 100755 --- a/ci/build_go.sh +++ b/ci/build_go.sh @@ -31,7 +31,7 @@ set -eu rapids-print-env export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -lc" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -ldl" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang From f9a559f59eb8b534989d81302b867ed50695ae8d Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 21:16:26 +0000 Subject: [PATCH 09/22] Update Go example --- examples/go/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/go/README.md b/examples/go/README.md index 9a03a97841..2006bba660 100644 --- a/examples/go/README.md +++ b/examples/go/README.md @@ -17,7 +17,7 @@ You may prefer to use `mamba`, as it provides significant speedup over `conda`. 1. Set up the required environment variables: ```bash export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcuvs -lcuvs_c" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -ldl" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang ``` From 3b62228ab63f83328e31ca7ac4dee452e8007a62 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 21:19:45 +0000 Subject: [PATCH 10/22] -lrt --- ci/build_go.sh | 2 +- examples/go/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/build_go.sh b/ci/build_go.sh index ad694b730c..80370048ff 100755 --- a/ci/build_go.sh +++ b/ci/build_go.sh @@ -31,7 +31,7 @@ set -eu rapids-print-env export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -ldl" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -ldl -lrt -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang diff --git a/examples/go/README.md b/examples/go/README.md index 2006bba660..905ee6dbb4 100644 --- a/examples/go/README.md +++ b/examples/go/README.md @@ -17,7 +17,7 @@ You may prefer to use `mamba`, as it provides significant speedup over `conda`. 1. Set up the required environment variables: ```bash export CGO_CFLAGS="-I${CONDA_PREFIX}/include" -export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -lcuvs -lcuvs_c -ldl" +export CGO_LDFLAGS="-L${CONDA_PREFIX}/lib -lcudart_static -ldl -lrt -lcuvs -lcuvs_c" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib:$LD_LIBRARY_PATH" export CC=clang ``` From 3b8a1bd6a2e243e8dd339543a3f70be9e1238035 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:08:42 +0000 Subject: [PATCH 11/22] fix recipe --- conda/recipes/libcuvs/recipe.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 5531690004..2ed2dab6a0 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -179,7 +179,7 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-static + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -244,7 +244,7 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} - - cuda-cudart-static + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev From d734133c11851c177b8e5068bad8835e44d9bf14 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:11:40 +0000 Subject: [PATCH 12/22] More --- conda/recipes/libcuvs/recipe.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 2ed2dab6a0..6a1758d5d7 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -79,6 +79,7 @@ cache: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev From fc6eb4e9ee3b98b194adfdf85677a752010b6ff3 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:12:32 +0000 Subject: [PATCH 13/22] Headers --- conda/recipes/libcuvs/recipe.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 6a1758d5d7..b1e9213091 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -115,6 +115,7 @@ outputs: - libraft-headers =${{ minor_version }} - nccl ${{ nccl_version }} - cuda-version =${{ cuda_version }} + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev From 55468c36d7bbd48b07ffe614a3b36c4ee5ac305d Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:14:35 +0000 Subject: [PATCH 14/22] More --- conda/recipes/libcuvs/recipe.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index b1e9213091..85662c5c0c 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -310,6 +310,7 @@ outputs: - ${{ pin_subpackage("libcuvs", exact=True) }} - cuda-version =${{ cuda_version }} - openblas # required by some CPU algos in benchmarks + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -408,6 +409,7 @@ outputs: - libraft-headers =${{ minor_version }} - librmm =${{ minor_version }} - nccl ${{ nccl_version }} + - cuda-cudart-dev - cuda-profiler-api - libcublas-dev - libcurand-dev @@ -473,6 +475,7 @@ outputs: host: - ${{ pin_subpackage("libcuvs-headers", exact=True) }} - ${{ pin_subpackage("libcuvs", exact=True) }} + - cuda-cudart-dev - cuda-profiler-api - cuda-version =${{ cuda_version }} - libcublas-dev From 96b7994fa1013c6667dea3ae2999025413dfe003 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:15:33 +0000 Subject: [PATCH 15/22] cuvs recipe --- conda/recipes/cuvs/recipe.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/conda/recipes/cuvs/recipe.yaml b/conda/recipes/cuvs/recipe.yaml index 504d9c6536..ec017705d4 100644 --- a/conda/recipes/cuvs/recipe.yaml +++ b/conda/recipes/cuvs/recipe.yaml @@ -90,6 +90,7 @@ requirements: - if: cuda_major == "12" then: cuda-python >=12.9.2,<13.0 else: cuda-python >=13.0.1,<14.0 + - cuda-cudart-dev ignore_run_exports: by_name: - cuda-version From 627d0bf1b0b83ab38100e94e54ffabc85ce181d6 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:15:57 +0000 Subject: [PATCH 16/22] Oops --- conda/recipes/cuvs/recipe.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/recipes/cuvs/recipe.yaml b/conda/recipes/cuvs/recipe.yaml index ec017705d4..d00a32dab4 100644 --- a/conda/recipes/cuvs/recipe.yaml +++ b/conda/recipes/cuvs/recipe.yaml @@ -81,6 +81,7 @@ requirements: - if: cuda_major == "12" then: cuda-python >=12.9.2,<13.0 else: cuda-python >=13.0.1,<14.0 + - cuda-cudart-dev run: - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - libcuvs =${{ version }} @@ -90,7 +91,6 @@ requirements: - if: cuda_major == "12" then: cuda-python >=12.9.2,<13.0 else: cuda-python >=13.0.1,<14.0 - - cuda-cudart-dev ignore_run_exports: by_name: - cuda-version From 557671c9f9d6533500018d5666bfa13176a2cfdd Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 11 Mar 2026 22:23:53 +0000 Subject: [PATCH 17/22] cuda-cudart-dev --- conda/environments/go_cuda-129_arch-aarch64.yaml | 2 +- conda/environments/go_cuda-129_arch-x86_64.yaml | 2 +- conda/environments/go_cuda-131_arch-aarch64.yaml | 2 +- conda/environments/go_cuda-131_arch-x86_64.yaml | 2 +- conda/environments/rust_cuda-129_arch-aarch64.yaml | 2 +- conda/environments/rust_cuda-129_arch-x86_64.yaml | 2 +- conda/environments/rust_cuda-131_arch-aarch64.yaml | 2 +- conda/environments/rust_cuda-131_arch-x86_64.yaml | 2 +- dependencies.yaml | 2 +- go/dlpack.go | 1 + 10 files changed, 10 insertions(+), 9 deletions(-) diff --git a/conda/environments/go_cuda-129_arch-aarch64.yaml b/conda/environments/go_cuda-129_arch-aarch64.yaml index fde86a418e..55842e86b8 100644 --- a/conda/environments/go_cuda-129_arch-aarch64.yaml +++ b/conda/environments/go_cuda-129_arch-aarch64.yaml @@ -10,7 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-129_arch-x86_64.yaml b/conda/environments/go_cuda-129_arch-x86_64.yaml index d4ffafb52a..2854de33b7 100644 --- a/conda/environments/go_cuda-129_arch-x86_64.yaml +++ b/conda/environments/go_cuda-129_arch-x86_64.yaml @@ -10,7 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-131_arch-aarch64.yaml b/conda/environments/go_cuda-131_arch-aarch64.yaml index 83cd04f236..135f6a88cc 100644 --- a/conda/environments/go_cuda-131_arch-aarch64.yaml +++ b/conda/environments/go_cuda-131_arch-aarch64.yaml @@ -10,7 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/go_cuda-131_arch-x86_64.yaml b/conda/environments/go_cuda-131_arch-x86_64.yaml index b66838fd18..df6a779331 100644 --- a/conda/environments/go_cuda-131_arch-x86_64.yaml +++ b/conda/environments/go_cuda-131_arch-x86_64.yaml @@ -10,7 +10,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-aarch64.yaml b/conda/environments/rust_cuda-129_arch-aarch64.yaml index 9b67792456..0aa5a7ea6f 100644 --- a/conda/environments/rust_cuda-129_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-129_arch-aarch64.yaml @@ -9,7 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-129_arch-x86_64.yaml b/conda/environments/rust_cuda-129_arch-x86_64.yaml index 6ea0654a8b..b9dabfafa7 100644 --- a/conda/environments/rust_cuda-129_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-129_arch-x86_64.yaml @@ -9,7 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-131_arch-aarch64.yaml b/conda/environments/rust_cuda-131_arch-aarch64.yaml index fd3e591dbe..062cbc8ea0 100644 --- a/conda/environments/rust_cuda-131_arch-aarch64.yaml +++ b/conda/environments/rust_cuda-131_arch-aarch64.yaml @@ -9,7 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/conda/environments/rust_cuda-131_arch-x86_64.yaml b/conda/environments/rust_cuda-131_arch-x86_64.yaml index 4260f05a5d..2b96d4a64e 100644 --- a/conda/environments/rust_cuda-131_arch-x86_64.yaml +++ b/conda/environments/rust_cuda-131_arch-x86_64.yaml @@ -9,7 +9,7 @@ dependencies: - clang-tools==20.1.4 - clang==20.1.4 - cmake>=3.30.4 -- cuda-cudart-static +- cuda-cudart-dev - cuda-nvcc - cuda-nvtx-dev - cuda-profiler-api diff --git a/dependencies.yaml b/dependencies.yaml index ee8819aa56..f925b41927 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -362,7 +362,7 @@ dependencies: common: - output_types: conda packages: - - cuda-cudart-static + - cuda-cudart-dev depends_on_cupy: common: - output_types: conda diff --git a/go/dlpack.go b/go/dlpack.go index 6fe619fd35..fcb9632586 100644 --- a/go/dlpack.go +++ b/go/dlpack.go @@ -3,6 +3,7 @@ package cuvs // #include // #include // #include +// #include import "C" import ( From ed1c77849714c4bb0533a4f7d38626d2060fad80 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Thu, 12 Mar 2026 13:46:21 +0000 Subject: [PATCH 18/22] Debugging --- cpp/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index d91bf0e30a..4340c5bfc5 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -744,6 +744,12 @@ if(NOT BUILD_CPU_ONLY) if(NOT cuvs_compile_mode STREQUAL "static_only") add_library(cuvs SHARED $ $) add_library(cuvs::cuvs ALIAS cuvs) + get_property( + rt + TARGET cuvs + PROPERTY CUDA_RUNTIME_LIBRARY + ) + message(STATUS "cuvs CUDA_RUNTIME_LIBRARY: ${rt}") set_target_properties( cuvs PROPERTIES BUILD_RPATH "\$ORIGIN" @@ -806,6 +812,12 @@ SECTIONS if(NOT cuvs_compile_mode STREQUAL "shared_only") add_library(cuvs_static STATIC $ $) add_library(cuvs::cuvs_static ALIAS cuvs_static) + get_property( + rt + TARGET cuvs_static + PROPERTY CUDA_RUNTIME_LIBRARY + ) + message(STATUS "cuvs_static CUDA_RUNTIME_LIBRARY: ${rt}") set_target_properties( cuvs_static From 1b67fe7caeafdcb48776eef0fcfae894d2e1a659 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Thu, 12 Mar 2026 14:04:16 +0000 Subject: [PATCH 19/22] Revert "Debugging" This reverts commit ed1c77849714c4bb0533a4f7d38626d2060fad80. --- cpp/CMakeLists.txt | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 4340c5bfc5..d91bf0e30a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -744,12 +744,6 @@ if(NOT BUILD_CPU_ONLY) if(NOT cuvs_compile_mode STREQUAL "static_only") add_library(cuvs SHARED $ $) add_library(cuvs::cuvs ALIAS cuvs) - get_property( - rt - TARGET cuvs - PROPERTY CUDA_RUNTIME_LIBRARY - ) - message(STATUS "cuvs CUDA_RUNTIME_LIBRARY: ${rt}") set_target_properties( cuvs PROPERTIES BUILD_RPATH "\$ORIGIN" @@ -812,12 +806,6 @@ SECTIONS if(NOT cuvs_compile_mode STREQUAL "shared_only") add_library(cuvs_static STATIC $ $) add_library(cuvs::cuvs_static ALIAS cuvs_static) - get_property( - rt - TARGET cuvs_static - PROPERTY CUDA_RUNTIME_LIBRARY - ) - message(STATUS "cuvs_static CUDA_RUNTIME_LIBRARY: ${rt}") set_target_properties( cuvs_static From 8c0de2f297e088f60124a68b829f7c26793805d7 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Thu, 12 Mar 2026 15:53:17 +0000 Subject: [PATCH 20/22] ignore_run_exports --- conda/recipes/cuvs/recipe.yaml | 1 + conda/recipes/libcuvs/recipe.yaml | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/conda/recipes/cuvs/recipe.yaml b/conda/recipes/cuvs/recipe.yaml index d00a32dab4..690a2cf1f9 100644 --- a/conda/recipes/cuvs/recipe.yaml +++ b/conda/recipes/cuvs/recipe.yaml @@ -94,6 +94,7 @@ requirements: ignore_run_exports: by_name: - cuda-version + - cuda-cudart tests: - python: diff --git a/conda/recipes/libcuvs/recipe.yaml b/conda/recipes/libcuvs/recipe.yaml index 85662c5c0c..4453b18393 100644 --- a/conda/recipes/libcuvs/recipe.yaml +++ b/conda/recipes/libcuvs/recipe.yaml @@ -138,6 +138,7 @@ outputs: - libnvjitlink ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libaio - libboost @@ -205,6 +206,7 @@ outputs: - libnvjitlink ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libaio - libboost @@ -270,6 +272,7 @@ outputs: - libnvjitlink ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libaio - libboost @@ -328,6 +331,7 @@ outputs: - libcusparse ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libaio - libboost @@ -432,6 +436,7 @@ outputs: - libnvjitlink ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libaio - libboost @@ -506,6 +511,7 @@ outputs: then: mkl =2023 ignore_run_exports: by_name: + - cuda-cudart - cuda-version - libcublas - libcurand From 11cb8bbd8e6bd24d52330d4e6dabace7dcd0f1ca Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Thu, 12 Mar 2026 19:46:24 +0000 Subject: [PATCH 21/22] Review feedback --- rust/cuvs-sys/build.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/rust/cuvs-sys/build.rs b/rust/cuvs-sys/build.rs index 477575ec0f..cec80eb736 100644 --- a/rust/cuvs-sys/build.rs +++ b/rust/cuvs-sys/build.rs @@ -15,10 +15,9 @@ fn main() { "cargo:rustc-link-search=native={}/lib", cuvs_build.display() ); - println!( - "cargo:rustc-link-search=native={}/lib", - env::var("CONDA_PREFIX").unwrap() - ); + if let Ok(conda_prefix) = env::var("CONDA_PREFIX") { + println!("cargo:rustc-link-search=native={}/lib", conda_prefix); + } println!("cargo:rustc-link-lib=dylib=cuvs_c"); println!("cargo:rustc-link-lib=static=cudart_static"); From 067efeac0529fbea18f8a0009280fd871ce49676 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Fri, 13 Mar 2026 14:30:03 +0000 Subject: [PATCH 22/22] Link tests against rmm --- c/tests/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/c/tests/CMakeLists.txt b/c/tests/CMakeLists.txt index 2d09490975..4f65238841 100644 --- a/c/tests/CMakeLists.txt +++ b/c/tests/CMakeLists.txt @@ -49,6 +49,7 @@ function(ConfigureTest) GTest::gtest_main $,$,cuvs::cuvs> $ + rmm::rmm ) set_target_properties( ${TEST_NAME}