From fa151bb66c7143f434c3d1ddd8ea5c9b079ded4c Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Thu, 9 Jul 2026 17:12:56 -0400 Subject: [PATCH] fix(deps): add explicit cufile dependency --- dependencies.yaml | 23 +++++++++++++++++++++-- python/libcuopt/libcuopt/load.py | 8 +++++++- python/libcuopt/pyproject.toml | 3 ++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/dependencies.yaml b/dependencies.yaml index dd2dea32be..edaabf970e 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -154,6 +154,7 @@ files: - test_python_common - test_python_cuopt - depends_on_rapids_logger + - test_cufile py_build_cuopt_server: output: pyproject pyproject_dir: python/cuopt_server @@ -736,6 +737,10 @@ dependencies: cuda_wheels: + common: + - output_types: [requirements, pyproject] + packages: + - cuda-pathfinder specific: # cuOpt needs 'nvJitLink>={whatever-cuopt-was-built-against}' at runtime, and mixing # old-CTK with new-nvJitLink is supported, so maintain 1 entry here per CUDA major.minor @@ -754,14 +759,14 @@ dependencies: cuda: "12.*" use_cuda_wheels: "true" packages: - - cuda-toolkit[cublas,cudart,curand,cusolver,cusparse,nvtx]==12.* + - cuda-toolkit[cublas,cudart,cufile,curand,cusolver,cusparse,nvtx]==12.* - nvidia-cudss-cu12>=0.7,<0.8 - nvidia-nvjitlink-cu12>=12.9,<13 - matrix: cuda: "13.*" use_cuda_wheels: "true" packages: - - &ctk_cu13 cuda-toolkit[cublas,cudart,curand,cusolver,cusparse,nvtx]==13.* + - &ctk_cu13 cuda-toolkit[cublas,cudart,cufile,curand,cusolver,cusparse,nvtx]==13.* - &cudss_cu13 nvidia-cudss-cu13>=0.7,<0.8 - &nvjitlink_cu13 nvidia-nvjitlink>=13.0,<14 # if no matching matrix selectors passed, list the CUDA 13 requirement @@ -848,3 +853,17 @@ dependencies: - matrix: packages: - python>=3.11,<3.15 + test_cufile: + specific: + # The `cufile` extra was added to the `cuda-toolkit` metapackage in 12.6.3 + # Adding an explicit test dependency on the cufile package here for + # testing on versions before 12.6.3 + - output_types: pyproject + matrices: + - matrix: + cuda: "12.*" + use_cuda_wheels: "true" + packages: + - nvidia-cufile-cu12 + - matrix: + packages: diff --git a/python/libcuopt/libcuopt/load.py b/python/libcuopt/libcuopt/load.py index 77dd6ed161..463aa1478d 100644 --- a/python/libcuopt/libcuopt/load.py +++ b/python/libcuopt/libcuopt/load.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 @@ -41,10 +41,16 @@ def load_library(): import libraft import librmm import rapids_logger + from cuda.pathfinder import load_nvidia_dynamic_lib rapids_logger.load_library() librmm.load_library() libraft.load_library() + # We manually load librt.so.1 here to workaround a bad dynamic link + # in nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl + # https://nvbugspro.nvidia.com/bug/6425783 + ctypes.CDLL("librt.so.1", mode=ctypes.RTLD_GLOBAL) + load_nvidia_dynamic_lib("cufile") except ModuleNotFoundError: pass diff --git a/python/libcuopt/pyproject.toml b/python/libcuopt/pyproject.toml index cbfb4384b9..ecfa52400c 100644 --- a/python/libcuopt/pyproject.toml +++ b/python/libcuopt/pyproject.toml @@ -30,7 +30,8 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dependencies = [ - "cuda-toolkit[cublas,cudart,curand,cusolver,cusparse,nvtx]==13.*", + "cuda-pathfinder", + "cuda-toolkit[cublas,cudart,cufile,curand,cusolver,cusparse,nvtx]==13.*", "librmm==26.8.*,>=0.0.0a0", "nvidia-cudss-cu13>=0.7,<0.8", "nvidia-nvjitlink>=13.0,<14",