Coverage for cuda/pathfinder/_headers/header_descriptor_catalog.py: 100.00%
22 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-03 02:41 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-03 02:41 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2# SPDX-License-Identifier: Apache-2.0
4"""Canonical authored descriptor catalog for header directories."""
6from __future__ import annotations
8from dataclasses import dataclass
9from typing import Literal
11HeaderPackagedWith = Literal["ctk", "other"]
14@dataclass(frozen=True, slots=True)
15class HeaderDescriptorSpec:
16 """Header metadata with ordered alternatives searched first-to-last."""
18 name: str
19 packaged_with: HeaderPackagedWith
20 header_basename: str
21 site_packages_dirs: tuple[str, ...] = ()
22 available_on_linux: bool = True
23 available_on_windows: bool = True
24 # Relative path(s) from anchor point to the include directory.
25 anchor_include_rel_dirs: tuple[str, ...] = ("include",)
26 # Product-specific environment variables whose values are anchor points.
27 product_root_env_vars: tuple[str, ...] = ()
28 # Subdirectories within the include dir to check before the include dir itself.
29 include_subdirs: tuple[str, ...] = ()
30 # Windows-only additional subdirectories within the include dir.
31 include_subdirs_windows: tuple[str, ...] = ()
32 # Linux system install directories (glob patterns; environment variables are expanded).
33 system_install_dirs: tuple[str, ...] = ()
34 # Windows system install directories (glob patterns; environment variables are expanded).
35 system_install_dirs_windows: tuple[str, ...] = ()
36 # Whether to search /usr/include/<sysconfig MULTIARCH> before system_install_dirs.
37 use_linux_multiarch_include_dir: bool = False
38 # Whether to use targets/<arch>/include layout for conda on Linux.
39 conda_targets_layout: bool = True
40 # Whether to attempt CTK-root canary probing (spawns a subprocess).
41 use_ctk_root_canary: bool = True
44HEADER_DESCRIPTOR_CATALOG: tuple[HeaderDescriptorSpec, ...] = (
45 # -----------------------------------------------------------------------
46 # CTK (CUDA Toolkit) headers
47 # -----------------------------------------------------------------------
48 HeaderDescriptorSpec(
49 name="cccl",
50 packaged_with="ctk",
51 header_basename="cuda/std/version",
52 site_packages_dirs=(
53 "nvidia/cu13/include/cccl", # cuda-toolkit[cccl]==13.*
54 "nvidia/cuda_cccl/include", # cuda-toolkit[cccl]==12.*
55 ),
56 include_subdirs=("cccl",),
57 include_subdirs_windows=("targets/x64/cccl", "targets/x64"),
58 ),
59 HeaderDescriptorSpec(
60 name="cublas",
61 packaged_with="ctk",
62 header_basename="cublas.h",
63 site_packages_dirs=("nvidia/cu13/include", "nvidia/cublas/include"),
64 ),
65 HeaderDescriptorSpec(
66 name="cudart",
67 packaged_with="ctk",
68 header_basename="cuda_runtime.h",
69 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_runtime/include"),
70 ),
71 HeaderDescriptorSpec(
72 name="cufft",
73 packaged_with="ctk",
74 header_basename="cufft.h",
75 site_packages_dirs=("nvidia/cu13/include", "nvidia/cufft/include"),
76 ),
77 HeaderDescriptorSpec(
78 name="cufile",
79 packaged_with="ctk",
80 header_basename="cufile.h",
81 site_packages_dirs=("nvidia/cu13/include", "nvidia/cufile/include"),
82 available_on_windows=False,
83 ),
84 HeaderDescriptorSpec(
85 name="curand",
86 packaged_with="ctk",
87 header_basename="curand.h",
88 site_packages_dirs=("nvidia/cu13/include", "nvidia/curand/include"),
89 ),
90 HeaderDescriptorSpec(
91 name="cusolver",
92 packaged_with="ctk",
93 header_basename="cusolverDn.h",
94 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusolver/include"),
95 ),
96 HeaderDescriptorSpec(
97 name="cusparse",
98 packaged_with="ctk",
99 header_basename="cusparse.h",
100 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparse/include"),
101 ),
102 HeaderDescriptorSpec(
103 name="npp",
104 packaged_with="ctk",
105 header_basename="npp.h",
106 site_packages_dirs=("nvidia/cu13/include", "nvidia/npp/include"),
107 ),
108 HeaderDescriptorSpec(
109 name="profiler",
110 packaged_with="ctk",
111 header_basename="cuda_profiler_api.h",
112 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_profiler_api/include"),
113 ),
114 HeaderDescriptorSpec(
115 name="nvcc",
116 packaged_with="ctk",
117 header_basename="fatbinary_section.h",
118 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/include"),
119 ),
120 HeaderDescriptorSpec(
121 name="nvfatbin",
122 packaged_with="ctk",
123 header_basename="nvFatbin.h",
124 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvfatbin/include"),
125 ),
126 HeaderDescriptorSpec(
127 name="nvjitlink",
128 packaged_with="ctk",
129 header_basename="nvJitLink.h",
130 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjitlink/include"),
131 ),
132 HeaderDescriptorSpec(
133 name="nvjpeg",
134 packaged_with="ctk",
135 header_basename="nvjpeg.h",
136 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjpeg/include"),
137 ),
138 HeaderDescriptorSpec(
139 name="nvrtc",
140 packaged_with="ctk",
141 header_basename="nvrtc.h",
142 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvrtc/include"),
143 ),
144 HeaderDescriptorSpec(
145 name="nvvm",
146 packaged_with="ctk",
147 header_basename="nvvm.h",
148 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/nvvm/include"),
149 anchor_include_rel_dirs=("nvvm/include",),
150 ),
151 HeaderDescriptorSpec(
152 name="cudla",
153 packaged_with="ctk",
154 header_basename="cudla.h",
155 site_packages_dirs=("nvidia/cu13/include",),
156 available_on_windows=False,
157 ),
158 # -----------------------------------------------------------------------
159 # Third-party / separately packaged headers
160 # -----------------------------------------------------------------------
161 HeaderDescriptorSpec(
162 name="cudnn",
163 packaged_with="other",
164 header_basename="cudnn.h",
165 site_packages_dirs=("nvidia/cudnn/include",),
166 product_root_env_vars=("CUDNN_PATH",),
167 system_install_dirs=(
168 "/usr/include",
169 "/usr/local/include",
170 ),
171 system_install_dirs_windows=("${ProgramFiles}/NVIDIA/CUDNN/v9.*/include",),
172 use_linux_multiarch_include_dir=True,
173 conda_targets_layout=False,
174 use_ctk_root_canary=False,
175 ),
176 HeaderDescriptorSpec(
177 name="cusolverMp",
178 packaged_with="other",
179 header_basename="cusolverMp.h",
180 site_packages_dirs=("nvidia/cu13/include", "nvidia/cu12/include"),
181 available_on_windows=False,
182 conda_targets_layout=False,
183 use_ctk_root_canary=False,
184 ),
185 HeaderDescriptorSpec(
186 name="cusparseLt",
187 packaged_with="other",
188 header_basename="cusparseLt.h",
189 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparselt/include"),
190 conda_targets_layout=False,
191 use_ctk_root_canary=False,
192 ),
193 HeaderDescriptorSpec(
194 name="cute",
195 packaged_with="other",
196 header_basename="cute/tensor.hpp",
197 site_packages_dirs=("cutlass_library/source/include",),
198 conda_targets_layout=False,
199 use_ctk_root_canary=False,
200 ),
201 HeaderDescriptorSpec(
202 name="cutensor",
203 packaged_with="other",
204 header_basename="cutensor.h",
205 site_packages_dirs=("cutensor/include",),
206 conda_targets_layout=False,
207 use_ctk_root_canary=False,
208 ),
209 HeaderDescriptorSpec(
210 name="cudensitymat",
211 packaged_with="other",
212 header_basename="cudensitymat.h",
213 site_packages_dirs=("cuquantum/include",),
214 available_on_windows=False,
215 conda_targets_layout=False,
216 use_ctk_root_canary=False,
217 ),
218 HeaderDescriptorSpec(
219 name="cupauliprop",
220 packaged_with="other",
221 header_basename="cupauliprop.h",
222 site_packages_dirs=("cuquantum/include",),
223 available_on_windows=False,
224 conda_targets_layout=False,
225 use_ctk_root_canary=False,
226 ),
227 HeaderDescriptorSpec(
228 name="cutensornet",
229 packaged_with="other",
230 header_basename="cutensornet.h",
231 site_packages_dirs=("cuquantum/include",),
232 available_on_windows=False,
233 conda_targets_layout=False,
234 use_ctk_root_canary=False,
235 ),
236 HeaderDescriptorSpec(
237 name="custabilizer",
238 packaged_with="other",
239 header_basename="custabilizer.h",
240 site_packages_dirs=("cuquantum/include",),
241 available_on_windows=False,
242 conda_targets_layout=False,
243 use_ctk_root_canary=False,
244 ),
245 HeaderDescriptorSpec(
246 name="custatevec",
247 packaged_with="other",
248 header_basename="custatevec.h",
249 site_packages_dirs=("cuquantum/include",),
250 available_on_windows=False,
251 conda_targets_layout=False,
252 use_ctk_root_canary=False,
253 ),
254 HeaderDescriptorSpec(
255 name="cutlass",
256 packaged_with="other",
257 header_basename="cutlass/cutlass.h",
258 site_packages_dirs=("cutlass_library/source/include",),
259 conda_targets_layout=False,
260 use_ctk_root_canary=False,
261 ),
262 HeaderDescriptorSpec(
263 name="mathdx",
264 packaged_with="other",
265 header_basename="libmathdx.h",
266 site_packages_dirs=("nvidia/cu13/include", "nvidia/cu12/include"),
267 conda_targets_layout=False,
268 use_ctk_root_canary=False,
269 ),
270 HeaderDescriptorSpec(
271 name="nccl",
272 packaged_with="other",
273 header_basename="nccl.h",
274 site_packages_dirs=("nvidia/nccl/include",),
275 available_on_windows=False,
276 anchor_include_rel_dirs=("include", "build/include"),
277 product_root_env_vars=("NCCL_HOME",),
278 system_install_dirs=("/usr/include", "/usr/local/include"),
279 conda_targets_layout=False,
280 use_ctk_root_canary=False,
281 ),
282 HeaderDescriptorSpec(
283 name="nvshmem",
284 packaged_with="other",
285 header_basename="nvshmem.h",
286 site_packages_dirs=("nvidia/nvshmem/include",),
287 available_on_windows=False,
288 system_install_dirs=("/usr/include/nvshmem_*",),
289 conda_targets_layout=False,
290 use_ctk_root_canary=False,
291 ),
292)