2727from cuda .pathfinder ._dynamic_libs .load_nvidia_dynamic_lib import (
2828 _resolve_system_loaded_abs_path_in_subprocess ,
2929)
30+ from cuda .pathfinder ._headers .header_descriptor import HEADER_DESCRIPTORS
3031from cuda .pathfinder ._headers .supported_nvidia_headers import (
3132 SUPPORTED_HEADERS_CTK ,
3233 SUPPORTED_HEADERS_CTK_ALL ,
4344
4445NON_CTK_IMPORTLIB_METADATA_DISTRIBUTIONS_NAMES = {
4546 "cudensitymat" : r"^cudensitymat-.*$" ,
47+ "cudnn" : r"^nvidia-cudnn-.*$" ,
4648 "cupauliprop" : r"^cupauliprop-.*$" ,
4749 "cusolverMp" : r"^nvidia-cusolvermp-.*$" ,
4850 "cusparseLt" : r"^nvidia-cusparselt-.*$" ,
5355 "custatevec" : r"^custatevec-.*$" ,
5456 "cutlass" : r"^nvidia-cutlass$" ,
5557 "mathdx" : r"^nvidia-libmathdx-.*$" ,
58+ "nccl" : r"^nvidia-nccl-.*$" ,
5659 "nvshmem" : r"^nvidia-nvshmem-.*$" ,
5760}
5861
@@ -78,6 +81,25 @@ def test_non_ctk_importlib_metadata_distributions_names():
7881 assert sorted (NON_CTK_IMPORTLIB_METADATA_DISTRIBUTIONS_NAMES ) == sorted (SUPPORTED_HEADERS_NON_CTK_ALL )
7982
8083
84+ @pytest .mark .agent_authored (model = "gpt-5" )
85+ def test_cudnn_and_nccl_header_metadata_matches_wheel_layouts ():
86+ cudnn = HEADER_DESCRIPTORS ["cudnn" ]
87+ assert cudnn .header_basename == "cudnn.h"
88+ assert cudnn .site_packages_dirs == ("nvidia/cudnn/include" ,)
89+ assert cudnn .available_on_linux
90+ assert cudnn .available_on_windows
91+ assert not cudnn .conda_targets_layout
92+ assert not cudnn .use_ctk_root_canary
93+
94+ nccl = HEADER_DESCRIPTORS ["nccl" ]
95+ assert nccl .header_basename == "nccl.h"
96+ assert nccl .site_packages_dirs == ("nvidia/nccl/include" ,)
97+ assert nccl .available_on_linux
98+ assert not nccl .available_on_windows
99+ assert not nccl .conda_targets_layout
100+ assert not nccl .use_ctk_root_canary
101+
102+
81103@functools .cache
82104def have_distribution_for (libname : str ) -> bool :
83105 pattern = re .compile (NON_CTK_IMPORTLIB_METADATA_DISTRIBUTIONS_NAMES [libname ])
0 commit comments