Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ci/build_wheel_libcuml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ 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"
--exclude "librapids_logger.so"
--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
Expand Down
19 changes: 18 additions & 1 deletion dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions python/libcuml/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 --- #
Expand Down Expand Up @@ -85,7 +84,6 @@ else()
"$ORIGIN/../../nvidia/nvjitlink/lib"
)
endif()
list(APPEND rpaths "$ORIGIN/../../nvidia/nccl/lib")

set_property(
TARGET ${CUML_CPP_TARGET}
Expand Down
2 changes: 2 additions & 0 deletions python/libcuml/libcuml/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
2 changes: 2 additions & 0 deletions python/libcuml/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
10 changes: 1 addition & 9 deletions python/libcuml/tests/test_libcuml_linkage.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 = {
Expand All @@ -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 = []
Expand All @@ -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
Comment on lines -150 to -153

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These libraries were never in the expected_libs dictionary that only tests CUDAtoolkit dependencies whose rpath is modified. As we explicitly load RAPIDS dependencies, we don't have to test for these linkages.

failures.append(f"Library {lib_name} => not found")
continue

Expand Down
Loading