Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
895d503
Add explicit compatibility guard rails to cuda.pathfinder.
rwgk Apr 24, 2026
041cb43
Add a public process-wide guard-rails singleton.
rwgk Apr 24, 2026
4d93265
Route public pathfinder lookups through process-wide guard rails.
rwgk Apr 24, 2026
0b15665
Add guard-rails mode switch for public pathfinder APIs.
rwgk Apr 24, 2026
e2a0909
Allow strict guard rails for driver libraries.
rwgk Apr 25, 2026
b622613
Accept wheel metadata version ranges in strict guard rails.
rwgk Apr 25, 2026
3bf0e98
Merge branch 'main' into pathfinder_compatibility_guard_rails
rwgk Apr 25, 2026
f7e81ed
Add cuda.h toolkit version parser.
rwgk Apr 25, 2026
e3b402a
Share encoded CUDA version decoding logic.
rwgk Apr 25, 2026
c6c38e3
Use cuda.h for CTK guard-rails metadata.
rwgk Apr 25, 2026
298888e
Make real guard-rails tests derive their CTK line from cuda.h.
rwgk Apr 26, 2026
8900cd2
Make real guard-rails tests query the driver version.
rwgk Apr 27, 2026
583af91
pre-commit fixes
rwgk Apr 27, 2026
f13c754
Adjust real guard-rails tests for cu12 nvcc wheels.
rwgk Apr 27, 2026
47e0edc
Align pathfinder conda setup scripts with test groups
rwgk Apr 27, 2026
b86a942
Merge branch 'main' into pathfinder_compatibility_guard_rails
rwgk Apr 27, 2026
147f113
Add set +u / set -u pairs around conda activate, conda install to avo…
rwgk Apr 27, 2026
11be7c9
Adjust pathfinder conda setup scripts for CTK-specific Python pins
rwgk Apr 27, 2026
4c95352
Simplify pathfinder conda setup scripts.
rwgk Apr 28, 2026
5a35125
Handle both Windows conda static-lib layouts.
rwgk Apr 28, 2026
95a2576
Merge branch 'main' into pathfinder_compatibility_guard_rails
rwgk Apr 28, 2026
c7d7397
Centralize guard rails default mode.
rwgk Apr 28, 2026
01ddbe7
Merge branch 'main' into pathfinder_compatibility_guard_rails
rwgk Apr 28, 2026
2ea4b26
Use packaging specifiers for CTK constraints.
rwgk Apr 28, 2026
a441f10
Merge branch 'main' into pathfinder_compatibility_guard_rails
rwgk May 2, 2026
aa4472c
pathfinder: split compatibility policy surface
rwgk May 2, 2026
7fe89a2
pathfinder: encode authored relation metadata
rwgk May 2, 2026
b6f9e31
pathfinder: localize CTK coherence and driver policy
rwgk May 2, 2026
8fe0ccd
pathfinder: add display-driver release compatibility checks
rwgk May 2, 2026
6b4d910
pathfinder: add explicit pipeline guard rails
rwgk May 2, 2026
c59f3cd
pathfinder: harden compatibility guard rails tests
rwgk May 2, 2026
326cd51
pathfinder: streamline compatibility test coverage
rwgk May 3, 2026
bbddbec
pathfinder: split compatibility guard rails tests
rwgk May 3, 2026
ad4a531
pathfinder: deduplicate test setup helpers
rwgk May 3, 2026
6da23cf
pathfinder: cache static and bitcode locate results
rwgk May 3, 2026
c3ddf79
pathfinder: harden guard-rails dispatch and prune dead code
rwgk May 3, 2026
fc963ff
pathfinder: refine guard-rails env-var validation, binary classificat…
rwgk May 3, 2026
356049d
pathfinder: polish guard-rails diagnostics, comments, and lock-in tests
rwgk May 3, 2026
fe4b2fe
pathfinder: simplify NVML init/shutdown handling and document ref-cou…
rwgk May 4, 2026
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
63 changes: 44 additions & 19 deletions cuda_pathfinder/cuda/pathfinder/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,19 @@
# cuda_pathfinder/docs/source/api.rst
# to keep the documentation in sync.

from cuda.pathfinder._binaries.find_nvidia_binary_utility import (
find_nvidia_binary_utility as find_nvidia_binary_utility,
)
from cuda.pathfinder._binaries.supported_nvidia_binaries import SUPPORTED_BINARIES as _SUPPORTED_BINARIES
from cuda.pathfinder._compatibility_guard_rails import (
CompatibilityCheckError as CompatibilityCheckError,
)
from cuda.pathfinder._compatibility_guard_rails import (
CompatibilityGuardRails as CompatibilityGuardRails,
)
from cuda.pathfinder._compatibility_guard_rails import (
CompatibilityInsufficientMetadataError as CompatibilityInsufficientMetadataError,
)
from cuda.pathfinder._compatibility_guard_rails import (
DriverCtkCompatibilityError as DriverCtkCompatibilityError,
)
from cuda.pathfinder._dynamic_libs.load_dl_common import (
DynamicLibNotAvailableError as DynamicLibNotAvailableError,
)
Expand All @@ -19,16 +28,38 @@
DynamicLibUnknownError as DynamicLibUnknownError,
)
from cuda.pathfinder._dynamic_libs.load_dl_common import LoadedDL as LoadedDL
from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import load_nvidia_dynamic_lib as load_nvidia_dynamic_lib
from cuda.pathfinder._dynamic_libs.supported_nvidia_libs import (
SUPPORTED_LIBNAMES as SUPPORTED_NVIDIA_LIBNAMES,
)
from cuda.pathfinder._headers.find_nvidia_headers import LocatedHeaderDir as LocatedHeaderDir
from cuda.pathfinder._headers.find_nvidia_headers import find_nvidia_header_directory as find_nvidia_header_directory
from cuda.pathfinder._headers.find_nvidia_headers import (
from cuda.pathfinder._headers.supported_nvidia_headers import SUPPORTED_HEADERS_CTK as _SUPPORTED_HEADERS_CTK
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
find_bitcode_lib as find_bitcode_lib,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
find_nvidia_binary_utility as find_nvidia_binary_utility,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
find_nvidia_header_directory as find_nvidia_header_directory,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
find_static_lib as find_static_lib,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
load_nvidia_dynamic_lib as load_nvidia_dynamic_lib,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
locate_bitcode_lib as locate_bitcode_lib,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
locate_nvidia_header_directory as locate_nvidia_header_directory,
)
from cuda.pathfinder._headers.supported_nvidia_headers import SUPPORTED_HEADERS_CTK as _SUPPORTED_HEADERS_CTK
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
locate_static_lib as locate_static_lib,
)
from cuda.pathfinder._process_wide_compatibility_guard_rails import (
process_wide_compatibility_guard_rails as _process_wide_compatibility_guard_rails,
)
from cuda.pathfinder._static_libs.find_bitcode_lib import (
SUPPORTED_BITCODE_LIBS as _SUPPORTED_BITCODE_LIBS,
)
Expand All @@ -38,12 +69,6 @@
from cuda.pathfinder._static_libs.find_bitcode_lib import (
LocatedBitcodeLib as LocatedBitcodeLib,
)
from cuda.pathfinder._static_libs.find_bitcode_lib import (
find_bitcode_lib as find_bitcode_lib,
)
from cuda.pathfinder._static_libs.find_bitcode_lib import (
locate_bitcode_lib as locate_bitcode_lib,
)
from cuda.pathfinder._static_libs.find_static_lib import (
SUPPORTED_STATIC_LIBS as _SUPPORTED_STATIC_LIBS,
)
Expand All @@ -53,16 +78,16 @@
from cuda.pathfinder._static_libs.find_static_lib import (
StaticLibNotFoundError as StaticLibNotFoundError,
)
from cuda.pathfinder._static_libs.find_static_lib import (
find_static_lib as find_static_lib,
)
from cuda.pathfinder._static_libs.find_static_lib import (
locate_static_lib as locate_static_lib,
)
from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home as get_cuda_path_or_home

from cuda.pathfinder._version import __version__ # isort: skip

#: Process-wide default compatibility guard rails instance. Public APIs can
#: delegate through this singleton while the explicit ``CompatibilityGuardRails``
#: class remains available for advanced use cases.
process_wide_compatibility_guard_rails = _process_wide_compatibility_guard_rails


# Indirections to help Sphinx find the docstrings.
#: Mapping from short CUDA Toolkit (CTK) library names to their canonical
#: header basenames (used to validate a discovered include directory).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,24 @@
"nsight-compute": (_NSIGHT_COMPUTE_BIN,),
}

SUPPORTED_BINARIES_CTK_COMPANION_TAGS = {
"bin2c": ("toolchain_cuda_nvcc",),
"cuobjdump": ("toolchain_cuda_nvcc",),
"fatbinary": ("toolchain_cuda_nvcc",),
"nvcc": ("toolchain_cuda_nvcc",),
"nvdisasm": ("toolchain_cuda_nvcc",),
"nvlink": ("toolchain_cuda_nvcc",),
"nvprune": ("toolchain_cuda_nvcc",),
}

# Nsight Systems and Nsight Compute ship in their own PyPI/Conda packages
# (`nvidia/nsight_systems`, `nvidia/nsight_compute`) and are not pinned by the
# `cuda-toolkit` distribution, so they cannot participate in CTK-coherence
# checks. They are tagged "other" so the guard rails treat them as separately
# packaged tools rather than reporting them as missing CTK metadata.
SUPPORTED_BINARIES_PACKAGED_WITH = {
name: ("other" if name in {"nsys", "nsight-sys", "ncu", "nsight-compute"} else "ctk")
for name in SITE_PACKAGES_BINDIRS
}

SUPPORTED_BINARIES_ALL = SUPPORTED_BINARIES = tuple(SITE_PACKAGES_BINDIRS.keys())
Loading