server / source /cuda /pathfinder /_dynamic_libs /supported_nvidia_libs.py
Harmony18090's picture
Add source batch 2/11
76f9669 verified
raw
history blame
14 kB
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# THIS FILE NEEDS TO BE REVIEWED/UPDATED FOR EACH CTK RELEASE
# Likely candidates for updates are:
# SUPPORTED_LIBNAMES
# SUPPORTED_WINDOWS_DLLS
# SUPPORTED_LINUX_SONAMES
from cuda.pathfinder._utils.platform_aware import IS_WINDOWS
SUPPORTED_LIBNAMES_COMMON = (
# Core CUDA Runtime and Compiler
"cudart",
"nvfatbin",
"nvJitLink",
"nvrtc",
"nvvm",
# Math Libraries
"cublas",
"cublasLt",
"cufft",
"cufftw",
"curand",
"cusolver",
"cusolverMg",
"cusparse",
"nppc",
"nppial",
"nppicc",
"nppidei",
"nppif",
"nppig",
"nppim",
"nppist",
"nppisu",
"nppitc",
"npps",
"nvblas",
# Other
"nvjpeg",
)
# Note: The `cufile_rdma` information is intentionally retained (commented out)
# despite not being actively used in the current build. It took a nontrivial
# amount of effort to determine the SONAME, dependencies, and expected symbols
# for this special-case library, especially given its RDMA/MLX5 dependencies
# and limited availability. Keeping this as a reference avoids having to
# reconstruct the information from scratch in the future.
SUPPORTED_LIBNAMES_LINUX_ONLY = (
"cufile",
# "cufile_rdma", # Requires libmlx5.so
)
SUPPORTED_LIBNAMES_LINUX = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_LINUX_ONLY
SUPPORTED_LIBNAMES_WINDOWS_ONLY = ()
SUPPORTED_LIBNAMES_WINDOWS = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_WINDOWS_ONLY
SUPPORTED_LIBNAMES_ALL = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_LINUX_ONLY + SUPPORTED_LIBNAMES_WINDOWS_ONLY
SUPPORTED_LIBNAMES = SUPPORTED_LIBNAMES_WINDOWS if IS_WINDOWS else SUPPORTED_LIBNAMES_LINUX
# Based on ldd output for Linux x86_64 nvidia-*-cu12 wheels (12.8.1)
DIRECT_DEPENDENCIES_CTK = {
"cublas": ("cublasLt",),
"cufftw": ("cufft",),
# "cufile_rdma": ("cufile",),
"cusolver": ("nvJitLink", "cusparse", "cublasLt", "cublas"),
"cusolverMg": ("nvJitLink", "cublasLt", "cublas"),
"cusparse": ("nvJitLink",),
"nppial": ("nppc",),
"nppicc": ("nppc",),
"nppidei": ("nppc",),
"nppif": ("nppc",),
"nppig": ("nppc",),
"nppim": ("nppc",),
"nppist": ("nppc",),
"nppisu": ("nppc",),
"nppitc": ("nppc",),
"npps": ("nppc",),
"nvblas": ("cublas", "cublasLt"),
}
DIRECT_DEPENDENCIES = DIRECT_DEPENDENCIES_CTK | {
"mathdx": ("nvrtc",),
"cublasmp": ("cublas", "cublasLt", "nvshmem_host"),
"cufftMp": ("nvshmem_host",),
"cudss": ("cublas", "cublasLt"),
"cutensor": ("cublasLt",),
"cutensorMg": ("cutensor", "cublasLt"),
}
# Based on these files:
# cuda_12.0.1_525.85.12_linux.run
# cuda_12.1.1_530.30.02_linux.run
# cuda_12.2.2_535.104.05_linux.run
# cuda_12.3.2_545.23.08_linux.run
# cuda_12.4.1_550.54.15_linux.run
# cuda_12.5.1_555.42.06_linux.run
# cuda_12.6.3_560.35.05_linux.run
# cuda_12.8.1_570.124.06_linux.run
# cuda_12.9.1_575.57.08_linux.run
# cuda_13.0.2_580.95.05_linux.run
# cuda_13.1.0_590.44.01_linux.run
# Generated with toolshed/build_pathfinder_sonames.py
# Please keep in old → new sort order.
SUPPORTED_LINUX_SONAMES_CTK = {
"cublas": (
"libcublas.so.12",
"libcublas.so.13",
),
"cublasLt": (
"libcublasLt.so.12",
"libcublasLt.so.13",
),
"cudart": (
"libcudart.so.12",
"libcudart.so.13",
),
"cufft": (
"libcufft.so.11",
"libcufft.so.12",
),
"cufftw": (
"libcufftw.so.11",
"libcufftw.so.12",
),
"cufile": ("libcufile.so.0",),
# "cufile_rdma": ("libcufile_rdma.so.1",),
"curand": ("libcurand.so.10",),
"cusolver": (
"libcusolver.so.11",
"libcusolver.so.12",
),
"cusolverMg": (
"libcusolverMg.so.11",
"libcusolverMg.so.12",
),
"cusparse": ("libcusparse.so.12",),
"nppc": (
"libnppc.so.12",
"libnppc.so.13",
),
"nppial": (
"libnppial.so.12",
"libnppial.so.13",
),
"nppicc": (
"libnppicc.so.12",
"libnppicc.so.13",
),
"nppidei": (
"libnppidei.so.12",
"libnppidei.so.13",
),
"nppif": (
"libnppif.so.12",
"libnppif.so.13",
),
"nppig": (
"libnppig.so.12",
"libnppig.so.13",
),
"nppim": (
"libnppim.so.12",
"libnppim.so.13",
),
"nppist": (
"libnppist.so.12",
"libnppist.so.13",
),
"nppisu": (
"libnppisu.so.12",
"libnppisu.so.13",
),
"nppitc": (
"libnppitc.so.12",
"libnppitc.so.13",
),
"npps": (
"libnpps.so.12",
"libnpps.so.13",
),
"nvJitLink": (
"libnvJitLink.so.12",
"libnvJitLink.so.13",
),
"nvblas": (
"libnvblas.so.12",
"libnvblas.so.13",
),
"nvfatbin": (
"libnvfatbin.so.12",
"libnvfatbin.so.13",
),
"nvjpeg": (
"libnvjpeg.so.12",
"libnvjpeg.so.13",
),
"nvrtc": (
"libnvrtc.so.12",
"libnvrtc.so.13",
),
"nvvm": ("libnvvm.so.4",),
}
SUPPORTED_LINUX_SONAMES_OTHER = {
"cublasmp": ("libcublasmp.so.0",),
"cufftMp": ("libcufftMp.so.12", "libcufftMp.so.11"),
"mathdx": ("libmathdx.so.0",),
"cudss": ("libcudss.so.0",),
"cusparseLt": ("libcusparseLt.so.0",),
"cutensor": ("libcutensor.so.2",),
"cutensorMg": ("libcutensorMg.so.2",),
"nccl": ("libnccl.so.2",),
"nvpl_fftw": ("libnvpl_fftw.so.0",),
"nvshmem_host": ("libnvshmem_host.so.3",),
}
# Driver libraries: shipped with the NVIDIA driver, always on the system
# linker path. Only system search is needed (no site-packages / conda /
# CUDA_HOME).
SUPPORTED_LINUX_SONAMES_DRIVER = {
"cuda": ("libcuda.so.1",),
"nvml": ("libnvidia-ml.so.1",),
}
SUPPORTED_LINUX_SONAMES = SUPPORTED_LINUX_SONAMES_CTK | SUPPORTED_LINUX_SONAMES_OTHER | SUPPORTED_LINUX_SONAMES_DRIVER
# Based on these files:
# cuda_12.0.1_528.33_windows.exe
# cuda_12.1.1_531.14_windows.exe
# cuda_12.2.2_537.13_windows.exe
# cuda_12.3.2_546.12_windows.exe
# cuda_12.4.1_551.78_windows.exe
# cuda_12.5.1_555.85_windows.exe
# cuda_12.6.3_561.17_windows.exe
# cuda_12.8.1_572.61_windows.exe
# cuda_12.9.1_576.57_windows.exe
# cuda_13.0.2_windows.exe
# cuda_13.1.0_windows.exe
# Generated with toolshed/build_pathfinder_dlls.py
# Please keep in old → new sort order.
SUPPORTED_WINDOWS_DLLS_CTK = {
"cublas": (
"cublas64_12.dll",
"cublas64_13.dll",
),
"cublasLt": (
"cublasLt64_12.dll",
"cublasLt64_13.dll",
),
"cudart": (
"cudart64_12.dll",
"cudart64_13.dll",
),
"cufft": (
"cufft64_11.dll",
"cufft64_12.dll",
),
"cufftw": (
"cufftw64_11.dll",
"cufftw64_12.dll",
),
"curand": ("curand64_10.dll",),
"cusolver": (
"cusolver64_11.dll",
"cusolver64_12.dll",
),
"cusolverMg": (
"cusolverMg64_11.dll",
"cusolverMg64_12.dll",
),
"cusparse": ("cusparse64_12.dll",),
"nppc": (
"nppc64_12.dll",
"nppc64_13.dll",
),
"nppial": (
"nppial64_12.dll",
"nppial64_13.dll",
),
"nppicc": (
"nppicc64_12.dll",
"nppicc64_13.dll",
),
"nppidei": (
"nppidei64_12.dll",
"nppidei64_13.dll",
),
"nppif": (
"nppif64_12.dll",
"nppif64_13.dll",
),
"nppig": (
"nppig64_12.dll",
"nppig64_13.dll",
),
"nppim": (
"nppim64_12.dll",
"nppim64_13.dll",
),
"nppist": (
"nppist64_12.dll",
"nppist64_13.dll",
),
"nppisu": (
"nppisu64_12.dll",
"nppisu64_13.dll",
),
"nppitc": (
"nppitc64_12.dll",
"nppitc64_13.dll",
),
"npps": (
"npps64_12.dll",
"npps64_13.dll",
),
"nvJitLink": (
"nvJitLink_120_0.dll",
"nvJitLink_130_0.dll",
),
"nvblas": (
"nvblas64_12.dll",
"nvblas64_13.dll",
),
"nvfatbin": (
"nvfatbin_120_0.dll",
"nvfatbin_130_0.dll",
),
"nvjpeg": (
"nvjpeg64_12.dll",
"nvjpeg64_13.dll",
),
"nvrtc": (
"nvrtc64_120_0.dll",
"nvrtc64_130_0.dll",
),
"nvvm": (
"nvvm64.dll",
"nvvm64_40_0.dll",
"nvvm70.dll",
),
}
SUPPORTED_WINDOWS_DLLS_OTHER = {
"mathdx": ("mathdx64_0.dll",),
"cudss": ("cudss64_0.dll",),
"cusparseLt": ("cusparseLt.dll",),
"cutensor": ("cutensor.dll",),
"cutensorMg": ("cutensorMg.dll",),
}
SUPPORTED_WINDOWS_DLLS_DRIVER = {
"cuda": ("nvcuda.dll",),
"nvml": ("nvml.dll",),
}
SUPPORTED_WINDOWS_DLLS = SUPPORTED_WINDOWS_DLLS_CTK | SUPPORTED_WINDOWS_DLLS_OTHER | SUPPORTED_WINDOWS_DLLS_DRIVER
LIBNAMES_REQUIRING_OS_ADD_DLL_DIRECTORY = (
"cufft",
"nvrtc",
)
LIBNAMES_REQUIRING_RTLD_DEEPBIND = ("cufftMp",)
# Based on output of toolshed/make_site_packages_libdirs_linux.py
SITE_PACKAGES_LIBDIRS_LINUX_CTK = {
"cublas": ("nvidia/cu13/lib", "nvidia/cublas/lib"),
"cublasLt": ("nvidia/cu13/lib", "nvidia/cublas/lib"),
"cudart": ("nvidia/cu13/lib", "nvidia/cuda_runtime/lib"),
"cufft": ("nvidia/cu13/lib", "nvidia/cufft/lib"),
"cufftw": ("nvidia/cu13/lib", "nvidia/cufft/lib"),
"cufile": ("nvidia/cu13/lib", "nvidia/cufile/lib"),
# "cufile_rdma": ("nvidia/cu13/lib", "nvidia/cufile/lib"),
"curand": ("nvidia/cu13/lib", "nvidia/curand/lib"),
"cusolver": ("nvidia/cu13/lib", "nvidia/cusolver/lib"),
"cusolverMg": ("nvidia/cu13/lib", "nvidia/cusolver/lib"),
"cusparse": ("nvidia/cu13/lib", "nvidia/cusparse/lib"),
"nppc": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppial": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppicc": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppidei": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppif": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppig": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppim": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppist": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppisu": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nppitc": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"npps": ("nvidia/cu13/lib", "nvidia/npp/lib"),
"nvJitLink": ("nvidia/cu13/lib", "nvidia/nvjitlink/lib"),
"nvblas": ("nvidia/cu13/lib", "nvidia/cublas/lib"),
"nvfatbin": ("nvidia/cu13/lib", "nvidia/nvfatbin/lib"),
"nvjpeg": ("nvidia/cu13/lib", "nvidia/nvjpeg/lib"),
"nvrtc": ("nvidia/cu13/lib", "nvidia/cuda_nvrtc/lib"),
"nvvm": ("nvidia/cu13/lib", "nvidia/cuda_nvcc/nvvm/lib64"),
}
SITE_PACKAGES_LIBDIRS_LINUX_OTHER = {
"cublasmp": ("nvidia/cublasmp/cu13/lib", "nvidia/cublasmp/cu12/lib"),
"cudss": ("nvidia/cu13/lib", "nvidia/cu12/lib"),
"cufftMp": ("nvidia/cufftmp/cu13/lib", "nvidia/cufftmp/cu12/lib"),
"cusparseLt": ("nvidia/cusparselt/lib",),
"cutensor": ("cutensor/lib",),
"cutensorMg": ("cutensor/lib",),
"mathdx": ("nvidia/cu13/lib", "nvidia/cu12/lib"),
"nccl": ("nvidia/nccl/lib",),
"nvpl_fftw": ("nvpl/lib",),
"nvshmem_host": ("nvidia/nvshmem/lib",),
}
SITE_PACKAGES_LIBDIRS_LINUX = SITE_PACKAGES_LIBDIRS_LINUX_CTK | SITE_PACKAGES_LIBDIRS_LINUX_OTHER
# Based on output of toolshed/make_site_packages_libdirs_windows.py
SITE_PACKAGES_LIBDIRS_WINDOWS_CTK = {
"cublas": ("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"),
"cublasLt": ("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"),
"cudart": ("nvidia/cu13/bin/x86_64", "nvidia/cuda_runtime/bin"),
"cufft": ("nvidia/cu13/bin/x86_64", "nvidia/cufft/bin"),
"cufftw": ("nvidia/cu13/bin/x86_64", "nvidia/cufft/bin"),
"curand": ("nvidia/cu13/bin/x86_64", "nvidia/curand/bin"),
"cusolver": ("nvidia/cu13/bin/x86_64", "nvidia/cusolver/bin"),
"cusolverMg": ("nvidia/cu13/bin/x86_64", "nvidia/cusolver/bin"),
"cusparse": ("nvidia/cu13/bin/x86_64", "nvidia/cusparse/bin"),
"nppc": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppial": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppicc": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppidei": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppif": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppig": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppim": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppist": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppisu": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nppitc": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"npps": ("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"),
"nvJitLink": ("nvidia/cu13/bin/x86_64", "nvidia/nvjitlink/bin"),
"nvblas": ("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"),
"nvfatbin": ("nvidia/cu13/bin/x86_64", "nvidia/nvfatbin/bin"),
"nvjpeg": ("nvidia/cu13/bin/x86_64", "nvidia/nvjpeg/bin"),
"nvrtc": ("nvidia/cu13/bin/x86_64", "nvidia/cuda_nvrtc/bin"),
"nvvm": ("nvidia/cu13/bin/x86_64", "nvidia/cuda_nvcc/nvvm/bin"),
}
SITE_PACKAGES_LIBDIRS_WINDOWS_OTHER = {
"cudss": ("nvidia/cu13/bin", "nvidia/cu12/bin"),
"mathdx": ("nvidia/cu13/bin/x86_64", "nvidia/cu12/bin"),
"cusparseLt": ("nvidia/cusparselt/bin",),
"cutensor": ("cutensor/bin",),
"cutensorMg": ("cutensor/bin",),
}
SITE_PACKAGES_LIBDIRS_WINDOWS = SITE_PACKAGES_LIBDIRS_WINDOWS_CTK | SITE_PACKAGES_LIBDIRS_WINDOWS_OTHER
def is_suppressed_dll_file(path_basename: str) -> bool:
if path_basename.startswith("nvrtc"):
# nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-win_amd64.whl:
# nvidia\cuda_nvrtc\bin\
# nvrtc-builtins64_128.dll
# nvrtc64_120_0.alt.dll
# nvrtc64_120_0.dll
return path_basename.endswith(".alt.dll") or "-builtins" in path_basename
return path_basename.startswith(("cudart32_", "nvvm32"))