diff --git a/ci/build_wheel_libcuml.sh b/ci/build_wheel_libcuml.sh index 302c8c5338..78dcd38969 100755 --- a/ci/build_wheel_libcuml.sh +++ b/ci/build_wheel_libcuml.sh @@ -35,7 +35,7 @@ EXCLUDE_ARGS=( --exclude "libcurand.so.*" --exclude "libcusolver.so.*" --exclude "libcusparse.so.*" - --exclude "libnccl.so.*" + --exclude "libcuvs.so" --exclude "libnvforest++.so" --exclude "libnvJitLink.so.*" --exclude "libraft.so" @@ -43,7 +43,7 @@ EXCLUDE_ARGS=( --exclude "librmm.so" ) -export SKBUILD_CMAKE_ARGS="-DDISABLE_DEPRECATION_WARNINGS=ON;-DCUML_USE_CUVS_STATIC=ON" +export SKBUILD_CMAKE_ARGS="-DDISABLE_DEPRECATION_WARNINGS=ON" ./ci/build_wheel.sh "${package_name}" "${package_dir}" # repair wheels and write to the location that artifact-uploading code expects to find them diff --git a/dependencies.yaml b/dependencies.yaml index f7a4945164..95b7164b98 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -193,7 +193,6 @@ files: - common_build - depends_on_cuda_python - depends_on_libcuml - - depends_on_libcuvs - depends_on_libnvforest - depends_on_libraft - depends_on_librmm @@ -892,6 +891,24 @@ dependencies: - output_types: conda packages: - &libcuvs_unsuffixed libcuvs==26.8.*,>=0.0.0a0 + - output_types: requirements + packages: + # pip recognizes the index as a global option for the requirements.txt file + - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple + specific: + - output_types: [requirements, pyproject] + matrices: + - matrix: + cuda: "12.*" + cuda_suffixed: "true" + packages: + - libcuvs-cu12==26.8.*,>=0.0.0a0 + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + packages: + - libcuvs-cu13==26.8.*,>=0.0.0a0 + - {matrix: null, packages: [*libcuvs_unsuffixed]} depends_on_libnvforest: common: - output_types: conda diff --git a/python/libcuml/CMakeLists.txt b/python/libcuml/CMakeLists.txt index 363205dbd3..997d800a6a 100644 --- a/python/libcuml/CMakeLists.txt +++ b/python/libcuml/CMakeLists.txt @@ -50,7 +50,6 @@ set(CUML_CPP_TARGET "cuml") set(CUML_CPP_SRC "../../cpp") # --- cuVS --- # -set(CUML_USE_CUVS_STATIC ON) set(CUML_EXCLUDE_CUVS_FROM_ALL ON) # --- raft --- # @@ -85,7 +84,6 @@ else() "$ORIGIN/../../nvidia/nvjitlink/lib" ) endif() -list(APPEND rpaths "$ORIGIN/../../nvidia/nccl/lib") set_property( TARGET ${CUML_CPP_TARGET} diff --git a/python/libcuml/libcuml/load.py b/python/libcuml/libcuml/load.py index 8ab00af389..5e4a793756 100644 --- a/python/libcuml/libcuml/load.py +++ b/python/libcuml/libcuml/load.py @@ -37,12 +37,14 @@ def load_library(): """Dynamically load libcuml.so and its dependencies""" try: # These libraries must all be loaded before libcuml + import libcuvs import libnvforest import libraft import librmm import rapids_logger rapids_logger.load_library() + libcuvs.load_library() libnvforest.load_library() librmm.load_library() libraft.load_library() diff --git a/python/libcuml/pyproject.toml b/python/libcuml/pyproject.toml index f1d3fddbef..6aa1916eb1 100644 --- a/python/libcuml/pyproject.toml +++ b/python/libcuml/pyproject.toml @@ -26,6 +26,7 @@ classifiers = [ ] dependencies = [ "cuda-toolkit[cublas,cufft,curand,cusolver,cusparse]==13.*", + "libcuvs==26.8.*,>=0.0.0a0", "libnvforest==26.8.*,>=0.0.0a0", "libraft==26.8.*,>=0.0.0a0", "librmm==26.8.*,>=0.0.0a0", @@ -68,6 +69,7 @@ dependencies-file = "../../dependencies.yaml" matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true" requires = [ "cmake>=4.0", + "libcuvs==26.8.*,>=0.0.0a0", "libnvforest==26.8.*,>=0.0.0a0", "libraft==26.8.*,>=0.0.0a0", "librmm==26.8.*,>=0.0.0a0", diff --git a/python/libcuml/tests/test_libcuml_linkage.py b/python/libcuml/tests/test_libcuml_linkage.py index 1cc12383a5..b4743541e9 100644 --- a/python/libcuml/tests/test_libcuml_linkage.py +++ b/python/libcuml/tests/test_libcuml_linkage.py @@ -106,7 +106,7 @@ def test_libcuml_linkage(): is_ctk_13_plus = cuda_major_version >= 13 # Define expected library paths - # For CTK 13: nvidia/cu13/lib and nvidia/nccl/lib + # For CTK 13: nvidia/cu13/lib # For CTK 12: individual nvidia/{library}/lib directories # The libcuml.so is at: site-packages/libcuml/lib64/libcuml.so # So relative paths from lib64 are: ../../nvidia/{cu13|library}/lib @@ -120,8 +120,6 @@ def test_libcuml_linkage(): "libcusparse.so.12": "nvidia/cu13/lib", "libnvJitLink.so.13": "nvidia/cu13/lib", "libcurand.so.10": "nvidia/cu13/lib", - # NCCL (in nvidia/nccl/lib) - "libnccl.so.2": "nvidia/nccl/lib", } else: expected_libs = { @@ -133,8 +131,6 @@ def test_libcuml_linkage(): "libcusparse.so.12": "nvidia/cusparse/lib", "libnvJitLink.so.12": "nvidia/nvjitlink/lib", "libcurand.so.10": "nvidia/curand/lib", - # NCCL (in nvidia/nccl/lib) - "libnccl.so.2": "nvidia/nccl/lib", } failures = [] @@ -147,10 +143,6 @@ def test_libcuml_linkage(): actual_path = linked_libs[lib_name] if actual_path == "not found": - # librmm.so and librapids_logger.so may not be found - # but are loaded dynamically at runtime, skip these - if lib_name in ["librmm.so", "librapids_logger.so"]: - continue failures.append(f"Library {lib_name} => not found") continue