Coverage for cuda / pathfinder / _headers / header_descriptor_catalog.py: 100.00%
19 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 01:07 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 01:07 +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 name: str
17 packaged_with: HeaderPackagedWith
18 header_basename: str
19 site_packages_dirs: tuple[str, ...] = ()
20 available_on_linux: bool = True
21 available_on_windows: bool = True
22 # Relative path(s) from anchor point to the include directory.
23 anchor_include_rel_dirs: tuple[str, ...] = ("include",)
24 # Subdirectories within the include dir to check before the include dir itself.
25 include_subdirs: tuple[str, ...] = ()
26 # Windows-only additional subdirectories within the include dir.
27 include_subdirs_windows: tuple[str, ...] = ()
28 # System install directories (glob patterns).
29 system_install_dirs: tuple[str, ...] = ()
30 # Whether to use targets/<arch>/include layout for conda on Linux.
31 conda_targets_layout: bool = True
32 # Whether to attempt CTK-root canary probing (spawns a subprocess).
33 use_ctk_root_canary: bool = True
36HEADER_DESCRIPTOR_CATALOG: tuple[HeaderDescriptorSpec, ...] = (
37 # -----------------------------------------------------------------------
38 # CTK (CUDA Toolkit) headers
39 # -----------------------------------------------------------------------
40 HeaderDescriptorSpec(
41 name="cccl",
42 packaged_with="ctk",
43 header_basename="cuda/std/version",
44 site_packages_dirs=(
45 "nvidia/cu13/include/cccl", # cuda-toolkit[cccl]==13.*
46 "nvidia/cuda_cccl/include", # cuda-toolkit[cccl]==12.*
47 ),
48 include_subdirs=("cccl",),
49 include_subdirs_windows=("targets/x64/cccl", "targets/x64"),
50 ),
51 HeaderDescriptorSpec(
52 name="cublas",
53 packaged_with="ctk",
54 header_basename="cublas.h",
55 site_packages_dirs=("nvidia/cu13/include", "nvidia/cublas/include"),
56 ),
57 HeaderDescriptorSpec(
58 name="cudart",
59 packaged_with="ctk",
60 header_basename="cuda_runtime.h",
61 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_runtime/include"),
62 ),
63 HeaderDescriptorSpec(
64 name="cufft",
65 packaged_with="ctk",
66 header_basename="cufft.h",
67 site_packages_dirs=("nvidia/cu13/include", "nvidia/cufft/include"),
68 ),
69 HeaderDescriptorSpec(
70 name="cufile",
71 packaged_with="ctk",
72 header_basename="cufile.h",
73 site_packages_dirs=("nvidia/cu13/include", "nvidia/cufile/include"),
74 available_on_windows=False,
75 ),
76 HeaderDescriptorSpec(
77 name="curand",
78 packaged_with="ctk",
79 header_basename="curand.h",
80 site_packages_dirs=("nvidia/cu13/include", "nvidia/curand/include"),
81 ),
82 HeaderDescriptorSpec(
83 name="cusolver",
84 packaged_with="ctk",
85 header_basename="cusolverDn.h",
86 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusolver/include"),
87 ),
88 HeaderDescriptorSpec(
89 name="cusparse",
90 packaged_with="ctk",
91 header_basename="cusparse.h",
92 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparse/include"),
93 ),
94 HeaderDescriptorSpec(
95 name="npp",
96 packaged_with="ctk",
97 header_basename="npp.h",
98 site_packages_dirs=("nvidia/cu13/include", "nvidia/npp/include"),
99 ),
100 HeaderDescriptorSpec(
101 name="nvcc",
102 packaged_with="ctk",
103 header_basename="fatbinary_section.h",
104 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/include"),
105 ),
106 HeaderDescriptorSpec(
107 name="nvfatbin",
108 packaged_with="ctk",
109 header_basename="nvFatbin.h",
110 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvfatbin/include"),
111 ),
112 HeaderDescriptorSpec(
113 name="nvjitlink",
114 packaged_with="ctk",
115 header_basename="nvJitLink.h",
116 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjitlink/include"),
117 ),
118 HeaderDescriptorSpec(
119 name="nvjpeg",
120 packaged_with="ctk",
121 header_basename="nvjpeg.h",
122 site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjpeg/include"),
123 ),
124 HeaderDescriptorSpec(
125 name="nvrtc",
126 packaged_with="ctk",
127 header_basename="nvrtc.h",
128 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvrtc/include"),
129 ),
130 HeaderDescriptorSpec(
131 name="nvvm",
132 packaged_with="ctk",
133 header_basename="nvvm.h",
134 site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/nvvm/include"),
135 anchor_include_rel_dirs=("nvvm/include",),
136 ),
137 # -----------------------------------------------------------------------
138 # Third-party / separately packaged headers
139 # -----------------------------------------------------------------------
140 HeaderDescriptorSpec(
141 name="cusparseLt",
142 packaged_with="other",
143 header_basename="cusparseLt.h",
144 site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparselt/include"),
145 conda_targets_layout=False,
146 use_ctk_root_canary=False,
147 ),
148 HeaderDescriptorSpec(
149 name="cutensor",
150 packaged_with="other",
151 header_basename="cutensor.h",
152 site_packages_dirs=("cutensor/include",),
153 conda_targets_layout=False,
154 use_ctk_root_canary=False,
155 ),
156 HeaderDescriptorSpec(
157 name="nvshmem",
158 packaged_with="other",
159 header_basename="nvshmem.h",
160 site_packages_dirs=("nvidia/nvshmem/include",),
161 available_on_windows=False,
162 system_install_dirs=("/usr/include/nvshmem_*",),
163 conda_targets_layout=False,
164 use_ctk_root_canary=False,
165 ),
166)