Coverage for cuda/pathfinder/_dynamic_libs/descriptor_catalog.py: 98.00%

50 statements  

« 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 

3 

4"""Canonical authored descriptor catalog for dynamic libraries.""" 

5 

6from __future__ import annotations 

7 

8from dataclasses import dataclass 

9from pathlib import PurePosixPath 

10from typing import Literal 

11 

12from cuda.pathfinder._utils.ctk_root_canary import CTK_ROOT_CANARY_ANCHOR_LIBNAMES 

13 

14PackagedWith = Literal["ctk", "other", "driver"] 

15WindowsArch = Literal["x64", "arm64"] 

16 

17 

18@dataclass(frozen=True, slots=True) 

19class WindowsSearchDirs: 

20 """Windows search locations, highest priority first, grouped by architecture.""" 

21 

22 x64: tuple[str, ...] = () 

23 arm64: tuple[str, ...] = () 

24 

25 @classmethod 

26 def x64_only(cls, *paths: str) -> WindowsSearchDirs: 

27 return cls(x64=paths) 2a ucGb

28 

29 @classmethod 

30 def arm64_only(cls, *paths: str) -> WindowsSearchDirs: 

31 return cls(arm64=paths) 2a Gb

32 

33 def for_arch(self, target_arch: str) -> tuple[str, ...]: 

34 if target_arch == "x64": 2a HbIbJbKbLbMbNbOb5 Pbb c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Qb6 Rb7 Sb8 Tb9 Ub! Vb# Wb$ Xb% Yb' Zb( 0b) 1b* 2b+ 3b, 4b- 5b. 6b/ 7b: 8b; 9b= !b? #b@ $b[ %b] 'b^ (b_ )b` *b{ +b| ,b} -b~ .bab/bbb:bcb;bdb=beb?bfb@bgb[bhb]bib^bjb_bkb`blb{bmb|bnb}bob~bpbacqbbcrbccsbdctbZ 0 ecub1 2 3 4 vbfcwbgcxbhcybzbicjcAbBbkclcmcncocCbDbEbpcFbqcrcsctc

35 return self.x64 2a HbIbJbKbLbMbNbObPbb c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y QbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcZ 0 ec1 2 3 4 fcgchcicjckclcmcncocpcqcrcsctc

36 if target_arch == "arm64": 25 b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbZ 0 ub1 2 3 4 vbwbxbybzbAbBbCbDbEbFb

37 return self.arm64 25 b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbZ 0 ub1 2 3 4 vbwbxbybzbAbBbCbDbEbFb

38 raise ValueError(f"Unsupported Windows target architecture: {target_arch!r}") 

39 

40 

41# Windows CTK before 13.4 was x64-only and used the common bin directory. 

42# Native ARM64 support starts with the architecture-qualified 13.4 layout. 

43DEFAULT_WINDOWS_CTK_ANCHOR_DIRS = WindowsSearchDirs( 

44 x64=("bin/x64", "bin"), 

45 arm64=("bin/arm64",), 

46) 

47 

48 

49def _ctk_windows_wheel_dirs(cuda13_bin_dir: str, cuda12_dir: str) -> WindowsSearchDirs: 

50 """Search CUDA 13 first, with the x64-only CUDA 12 wheel as an x64 fallback.""" 

51 cuda13_bin_path = PurePosixPath(cuda13_bin_dir) 

52 return WindowsSearchDirs( 

53 x64=((cuda13_bin_path / "x86_64").as_posix(), cuda12_dir), 

54 arm64=((cuda13_bin_path / "arm64").as_posix(),), 

55 ) 

56 

57 

58@dataclass(frozen=True, slots=True) 

59class DescriptorSpec: 

60 """Dynamic-library metadata; ordered search candidates are tried first-to-last.""" 

61 

62 name: str 

63 packaged_with: PackagedWith 

64 # Library filenames are authored in search/load preference order, most preferred first. 

65 linux_sonames: tuple[str, ...] = () 

66 windows_dlls: tuple[str, ...] = () 

67 supported_windows_arch: tuple[WindowsArch, ...] = () 

68 site_packages_linux: tuple[str, ...] = () 

69 site_packages_windows: WindowsSearchDirs = WindowsSearchDirs() 

70 dependencies: tuple[str, ...] = () 

71 optional_dependencies: tuple[str, ...] = () 

72 anchor_rel_dirs_linux: tuple[str, ...] = ("lib64", "lib") 

73 anchor_rel_dirs_windows: WindowsSearchDirs = DEFAULT_WINDOWS_CTK_ANCHOR_DIRS 

74 install_root_env_vars_linux: tuple[str, ...] = () 

75 install_root_env_rel_dirs_linux: tuple[str, ...] = () 

76 install_root_env_vars_windows: tuple[str, ...] = () 

77 install_root_env_rel_dirs_windows: WindowsSearchDirs = WindowsSearchDirs() 

78 program_files_root_globs_windows: WindowsSearchDirs = WindowsSearchDirs() 

79 ctk_root_canary_anchor_libnames: tuple[str, ...] = () 

80 requires_add_dll_directory: bool = False 

81 requires_rtld_deepbind: bool = False 

82 requires_windows_binary_arch_check: bool = False 

83 

84 

85DESCRIPTOR_CATALOG: tuple[DescriptorSpec, ...] = ( 

86 # ----------------------------------------------------------------------- 

87 # CTK (CUDA Toolkit) libraries 

88 # ----------------------------------------------------------------------- 

89 DescriptorSpec( 

90 name="cudart", 

91 packaged_with="ctk", 

92 linux_sonames=("libcudart.so.13", "libcudart.so.12"), 

93 windows_dlls=("cudart64_13.dll", "cudart64_12.dll"), 

94 supported_windows_arch=("x64", "arm64"), 

95 site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_runtime/lib"), 

96 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cuda_runtime/bin"), 

97 ), 

98 DescriptorSpec( 

99 name="nvfatbin", 

100 packaged_with="ctk", 

101 linux_sonames=("libnvfatbin.so.13", "libnvfatbin.so.12"), 

102 windows_dlls=("nvfatbin_130_0.dll", "nvfatbin_120_0.dll"), 

103 supported_windows_arch=("x64", "arm64"), 

104 site_packages_linux=("nvidia/cu13/lib", "nvidia/nvfatbin/lib"), 

105 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/nvfatbin/bin"), 

106 ), 

107 DescriptorSpec( 

108 name="nvJitLink", 

109 packaged_with="ctk", 

110 linux_sonames=("libnvJitLink.so.13", "libnvJitLink.so.12"), 

111 windows_dlls=("nvJitLink_130_0.dll", "nvJitLink_120_0.dll"), 

112 supported_windows_arch=("x64", "arm64"), 

113 site_packages_linux=("nvidia/cu13/lib", "nvidia/nvjitlink/lib"), 

114 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/nvjitlink/bin"), 

115 ), 

116 DescriptorSpec( 

117 name="nvrtc", 

118 packaged_with="ctk", 

119 linux_sonames=("libnvrtc.so.13", "libnvrtc.so.12"), 

120 windows_dlls=("nvrtc64_130_0.dll", "nvrtc64_120_0.dll"), 

121 supported_windows_arch=("x64", "arm64"), 

122 site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_nvrtc/lib"), 

123 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cuda_nvrtc/bin"), 

124 requires_add_dll_directory=True, 

125 ), 

126 DescriptorSpec( 

127 name="nvvm", 

128 packaged_with="ctk", 

129 linux_sonames=("libnvvm.so.4", "libnvvm.so"), 

130 windows_dlls=("nvvm70.dll", "nvvm64_40_0.dll", "nvvm64.dll"), 

131 supported_windows_arch=("x64", "arm64"), 

132 site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_nvcc/nvvm/lib64"), 

133 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cuda_nvcc/nvvm/bin"), 

134 anchor_rel_dirs_linux=("nvvm/lib64",), 

135 # CTK 13.4 installs the ARM64 DLL directly in nvvm/bin, while x64 

136 # uses nvvm/bin/x64. Older x64 toolkits also used nvvm/bin, so the 

137 # binary in the unqualified directory must be checked at runtime. 

138 anchor_rel_dirs_windows=WindowsSearchDirs( 

139 x64=("nvvm/bin/x64", "nvvm/bin"), 

140 arm64=("nvvm/bin",), 

141 ), 

142 ctk_root_canary_anchor_libnames=CTK_ROOT_CANARY_ANCHOR_LIBNAMES, 

143 # requires_windows_binary_arch_check disambiguates pre-13.4 x64 DLLs 

144 # from 13.4+ Arm64 DLLs in nvvm/bin; see 

145 # _utils/windows_arch.py for the validation. 

146 requires_windows_binary_arch_check=True, 

147 ), 

148 DescriptorSpec( 

149 name="cublas", 

150 packaged_with="ctk", 

151 linux_sonames=("libcublas.so.13", "libcublas.so.12"), 

152 windows_dlls=("cublas64_13.dll", "cublas64_12.dll"), 

153 supported_windows_arch=("x64", "arm64"), 

154 site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), 

155 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cublas/bin"), 

156 dependencies=("cublasLt",), 

157 ), 

158 DescriptorSpec( 

159 name="cublasLt", 

160 packaged_with="ctk", 

161 linux_sonames=("libcublasLt.so.13", "libcublasLt.so.12"), 

162 windows_dlls=("cublasLt64_13.dll", "cublasLt64_12.dll"), 

163 supported_windows_arch=("x64", "arm64"), 

164 site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), 

165 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cublas/bin"), 

166 ), 

167 DescriptorSpec( 

168 name="cufft", 

169 packaged_with="ctk", 

170 linux_sonames=("libcufft.so.12", "libcufft.so.11"), 

171 windows_dlls=("cufft64_12.dll", "cufft64_11.dll"), 

172 supported_windows_arch=("x64", "arm64"), 

173 site_packages_linux=("nvidia/cu13/lib", "nvidia/cufft/lib"), 

174 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cufft/bin"), 

175 requires_add_dll_directory=True, 

176 ), 

177 DescriptorSpec( 

178 name="cufftw", 

179 packaged_with="ctk", 

180 linux_sonames=("libcufftw.so.12", "libcufftw.so.11"), 

181 windows_dlls=("cufftw64_12.dll", "cufftw64_11.dll"), 

182 supported_windows_arch=("x64", "arm64"), 

183 site_packages_linux=("nvidia/cu13/lib", "nvidia/cufft/lib"), 

184 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cufft/bin"), 

185 dependencies=("cufft",), 

186 ), 

187 DescriptorSpec( 

188 name="curand", 

189 packaged_with="ctk", 

190 linux_sonames=("libcurand.so.11", "libcurand.so.10"), 

191 windows_dlls=("curand64_11.dll", "curand64_10.dll"), 

192 supported_windows_arch=("x64", "arm64"), 

193 site_packages_linux=("nvidia/cu13/lib", "nvidia/curand/lib"), 

194 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/curand/bin"), 

195 ), 

196 DescriptorSpec( 

197 name="cusolver", 

198 packaged_with="ctk", 

199 linux_sonames=("libcusolver.so.12", "libcusolver.so.11"), 

200 windows_dlls=("cusolver64_12.dll", "cusolver64_11.dll"), 

201 supported_windows_arch=("x64", "arm64"), 

202 site_packages_linux=("nvidia/cu13/lib", "nvidia/cusolver/lib"), 

203 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cusolver/bin"), 

204 dependencies=("nvJitLink", "cusparse", "cublasLt", "cublas"), 

205 ), 

206 DescriptorSpec( 

207 name="cusolverMg", 

208 packaged_with="ctk", 

209 linux_sonames=("libcusolverMg.so.12", "libcusolverMg.so.11"), 

210 windows_dlls=("cusolverMg64_12.dll", "cusolverMg64_11.dll"), 

211 supported_windows_arch=("x64", "arm64"), 

212 site_packages_linux=("nvidia/cu13/lib", "nvidia/cusolver/lib"), 

213 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cusolver/bin"), 

214 dependencies=("nvJitLink", "cublasLt", "cublas"), 

215 ), 

216 DescriptorSpec( 

217 name="cusparse", 

218 packaged_with="ctk", 

219 linux_sonames=("libcusparse.so.12",), 

220 windows_dlls=("cusparse64_12.dll",), 

221 supported_windows_arch=("x64", "arm64"), 

222 site_packages_linux=("nvidia/cu13/lib", "nvidia/cusparse/lib"), 

223 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cusparse/bin"), 

224 dependencies=("nvJitLink",), 

225 ), 

226 DescriptorSpec( 

227 name="nppc", 

228 packaged_with="ctk", 

229 linux_sonames=("libnppc.so.13", "libnppc.so.12"), 

230 windows_dlls=("nppc64_13.dll", "nppc64_12.dll"), 

231 supported_windows_arch=("x64", "arm64"), 

232 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

233 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

234 ), 

235 DescriptorSpec( 

236 name="nppial", 

237 packaged_with="ctk", 

238 linux_sonames=("libnppial.so.13", "libnppial.so.12"), 

239 windows_dlls=("nppial64_13.dll", "nppial64_12.dll"), 

240 supported_windows_arch=("x64", "arm64"), 

241 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

242 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

243 dependencies=("nppc",), 

244 ), 

245 DescriptorSpec( 

246 name="nppicc", 

247 packaged_with="ctk", 

248 linux_sonames=("libnppicc.so.13", "libnppicc.so.12"), 

249 windows_dlls=("nppicc64_13.dll", "nppicc64_12.dll"), 

250 supported_windows_arch=("x64", "arm64"), 

251 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

252 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

253 dependencies=("nppc",), 

254 ), 

255 DescriptorSpec( 

256 name="nppidei", 

257 packaged_with="ctk", 

258 linux_sonames=("libnppidei.so.13", "libnppidei.so.12"), 

259 windows_dlls=("nppidei64_13.dll", "nppidei64_12.dll"), 

260 supported_windows_arch=("x64", "arm64"), 

261 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

262 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

263 dependencies=("nppc",), 

264 ), 

265 DescriptorSpec( 

266 name="nppif", 

267 packaged_with="ctk", 

268 linux_sonames=("libnppif.so.13", "libnppif.so.12"), 

269 windows_dlls=("nppif64_13.dll", "nppif64_12.dll"), 

270 supported_windows_arch=("x64", "arm64"), 

271 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

272 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

273 dependencies=("nppc",), 

274 ), 

275 DescriptorSpec( 

276 name="nppig", 

277 packaged_with="ctk", 

278 linux_sonames=("libnppig.so.13", "libnppig.so.12"), 

279 windows_dlls=("nppig64_13.dll", "nppig64_12.dll"), 

280 supported_windows_arch=("x64", "arm64"), 

281 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

282 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

283 dependencies=("nppc",), 

284 ), 

285 DescriptorSpec( 

286 name="nppim", 

287 packaged_with="ctk", 

288 linux_sonames=("libnppim.so.13", "libnppim.so.12"), 

289 windows_dlls=("nppim64_13.dll", "nppim64_12.dll"), 

290 supported_windows_arch=("x64", "arm64"), 

291 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

292 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

293 dependencies=("nppc",), 

294 ), 

295 DescriptorSpec( 

296 name="nppist", 

297 packaged_with="ctk", 

298 linux_sonames=("libnppist.so.13", "libnppist.so.12"), 

299 windows_dlls=("nppist64_13.dll", "nppist64_12.dll"), 

300 supported_windows_arch=("x64", "arm64"), 

301 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

302 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

303 dependencies=("nppc",), 

304 ), 

305 DescriptorSpec( 

306 name="nppisu", 

307 packaged_with="ctk", 

308 linux_sonames=("libnppisu.so.13", "libnppisu.so.12"), 

309 windows_dlls=("nppisu64_13.dll", "nppisu64_12.dll"), 

310 supported_windows_arch=("x64", "arm64"), 

311 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

312 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

313 dependencies=("nppc",), 

314 ), 

315 DescriptorSpec( 

316 name="nppitc", 

317 packaged_with="ctk", 

318 linux_sonames=("libnppitc.so.13", "libnppitc.so.12"), 

319 windows_dlls=("nppitc64_13.dll", "nppitc64_12.dll"), 

320 supported_windows_arch=("x64", "arm64"), 

321 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

322 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

323 dependencies=("nppc",), 

324 ), 

325 DescriptorSpec( 

326 name="npps", 

327 packaged_with="ctk", 

328 linux_sonames=("libnpps.so.13", "libnpps.so.12"), 

329 windows_dlls=("npps64_13.dll", "npps64_12.dll"), 

330 supported_windows_arch=("x64", "arm64"), 

331 site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), 

332 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/npp/bin"), 

333 dependencies=("nppc",), 

334 ), 

335 DescriptorSpec( 

336 name="nvblas", 

337 packaged_with="ctk", 

338 linux_sonames=("libnvblas.so.13", "libnvblas.so.12"), 

339 windows_dlls=("nvblas64_13.dll", "nvblas64_12.dll"), 

340 supported_windows_arch=("x64", "arm64"), 

341 site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), 

342 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cublas/bin"), 

343 dependencies=("cublas", "cublasLt"), 

344 ), 

345 DescriptorSpec( 

346 name="nvjpeg", 

347 packaged_with="ctk", 

348 linux_sonames=("libnvjpeg.so.13", "libnvjpeg.so.12"), 

349 windows_dlls=("nvjpeg64_13.dll", "nvjpeg64_12.dll"), 

350 supported_windows_arch=("x64", "arm64"), 

351 site_packages_linux=("nvidia/cu13/lib", "nvidia/nvjpeg/lib"), 

352 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/nvjpeg/bin"), 

353 ), 

354 DescriptorSpec( 

355 name="cufile", 

356 packaged_with="ctk", 

357 linux_sonames=("libcufile.so.0",), 

358 site_packages_linux=("nvidia/cu13/lib", "nvidia/cufile/lib"), 

359 ), 

360 DescriptorSpec( 

361 name="cupti", 

362 packaged_with="ctk", 

363 linux_sonames=("libcupti.so.13", "libcupti.so.12"), 

364 windows_dlls=( 

365 "cupti64_2026.3.0.dll", 

366 "cupti64_2026.2.1.dll", 

367 "cupti64_2026.2.0.dll", 

368 "cupti64_2026.1.1.dll", 

369 "cupti64_2026.1.0.dll", 

370 "cupti64_2025.4.1.dll", 

371 "cupti64_2025.3.1.dll", 

372 "cupti64_2025.2.1.dll", 

373 "cupti64_2025.1.1.dll", 

374 "cupti64_2024.3.2.dll", 

375 "cupti64_2024.2.1.dll", 

376 "cupti64_2024.1.1.dll", 

377 "cupti64_2023.3.1.dll", 

378 "cupti64_2023.2.2.dll", 

379 "cupti64_2023.1.1.dll", 

380 "cupti64_2022.4.1.dll", 

381 ), 

382 supported_windows_arch=("x64", "arm64"), 

383 site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_cupti/lib"), 

384 site_packages_windows=_ctk_windows_wheel_dirs("nvidia/cu13/bin", "nvidia/cuda_cupti/bin"), 

385 anchor_rel_dirs_linux=("extras/CUPTI/lib64", "lib"), 

386 # CTK 13.4 uses architecture-qualified CUPTI directories. Older 

387 # Windows CUPTI toolkits were x64-only and used extras/CUPTI/lib64. 

388 anchor_rel_dirs_windows=WindowsSearchDirs( 

389 x64=("extras/CUPTI/lib/x64", "extras/CUPTI/lib64", "bin"), 

390 arm64=("extras/CUPTI/lib/arm64",), 

391 ), 

392 ctk_root_canary_anchor_libnames=CTK_ROOT_CANARY_ANCHOR_LIBNAMES, 

393 ), 

394 DescriptorSpec( 

395 name="cudla", 

396 packaged_with="ctk", 

397 linux_sonames=("libcudla.so.1",), 

398 windows_dlls=("cudla.dll",), 

399 supported_windows_arch=("arm64",), 

400 site_packages_linux=("nvidia/cu13/lib",), 

401 # No Windows pip wheel ships cudla.dll today; it is loaded from the local 

402 # CUDA Toolkit only, so site_packages_windows is intentionally left empty. 

403 anchor_rel_dirs_windows=WindowsSearchDirs.arm64_only("bin/arm64"), 

404 ), 

405 # ----------------------------------------------------------------------- 

406 # Third-party / separately packaged libraries 

407 # ----------------------------------------------------------------------- 

408 DescriptorSpec( 

409 name="cublasmp", 

410 packaged_with="other", 

411 linux_sonames=("libcublasmp.so.0",), 

412 site_packages_linux=("nvidia/cublasmp/cu13/lib", "nvidia/cublasmp/cu12/lib"), 

413 dependencies=("cublas", "cublasLt", "nvshmem_host"), 

414 ), 

415 DescriptorSpec( 

416 name="cufftMp", 

417 packaged_with="other", 

418 linux_sonames=("libcufftMp.so.12", "libcufftMp.so.11"), 

419 site_packages_linux=("nvidia/cufftmp/cu13/lib", "nvidia/cufftmp/cu12/lib"), 

420 dependencies=("nvshmem_host",), 

421 requires_rtld_deepbind=True, 

422 ), 

423 DescriptorSpec( 

424 name="cudnn", 

425 packaged_with="other", 

426 linux_sonames=("libcudnn.so.9",), 

427 windows_dlls=("cudnn64_9.dll",), 

428 supported_windows_arch=("x64", "arm64"), 

429 site_packages_linux=("nvidia/cudnn/lib",), 

430 site_packages_windows=WindowsSearchDirs.x64_only("nvidia/cudnn/bin"), 

431 dependencies=("cublasLt",), 

432 optional_dependencies=("nvrtc",), 

433 install_root_env_vars_linux=("CUDNN_PATH",), 

434 install_root_env_rel_dirs_linux=("lib", "lib64"), 

435 # The ARM64 layout is verified only for the standalone archive rooted 

436 # at CUDNN_PATH, not for conda, CUDA_PATH, or Program Files installs. 

437 anchor_rel_dirs_windows=WindowsSearchDirs.x64_only("bin/x64", "bin"), 

438 install_root_env_vars_windows=("CUDNN_PATH",), 

439 install_root_env_rel_dirs_windows=WindowsSearchDirs( 

440 x64=("bin/x64", "bin"), 

441 arm64=("bin/arm64",), 

442 ), 

443 program_files_root_globs_windows=WindowsSearchDirs.x64_only("NVIDIA/CUDNN/v9.*"), 

444 requires_add_dll_directory=True, 

445 ), 

446 DescriptorSpec( 

447 name="cusolverMp", 

448 packaged_with="other", 

449 linux_sonames=("libcusolverMp.so.0",), 

450 site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), 

451 dependencies=("cublas", "cudart", "cusolver", "nccl"), 

452 ), 

453 DescriptorSpec( 

454 name="mathdx", 

455 packaged_with="other", 

456 linux_sonames=("libmathdx.so.0",), 

457 windows_dlls=("mathdx64_0.dll",), 

458 supported_windows_arch=("x64", "arm64"), 

459 site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), 

460 site_packages_windows=WindowsSearchDirs( 

461 x64=("nvidia/cu13/bin", "nvidia/cu12/bin"), 

462 arm64=("nvidia/cu13/bin", "nvidia/cu12/bin"), 

463 ), 

464 dependencies=("nvrtc",), 

465 ), 

466 DescriptorSpec( 

467 name="cudss", 

468 packaged_with="other", 

469 linux_sonames=("libcudss.so.0",), 

470 windows_dlls=("cudss64_0.dll",), 

471 supported_windows_arch=("x64", "arm64"), 

472 site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), 

473 site_packages_windows=WindowsSearchDirs( 

474 x64=("nvidia/cu13/bin", "nvidia/cu12/bin"), 

475 arm64=("nvidia/cu13/bin", "nvidia/cu12/bin"), 

476 ), 

477 dependencies=("cublas", "cublasLt"), 

478 ), 

479 DescriptorSpec( 

480 name="cusparseLt", 

481 packaged_with="other", 

482 linux_sonames=("libcusparseLt.so.0",), 

483 windows_dlls=("cusparseLt.dll",), 

484 supported_windows_arch=("x64", "arm64"), 

485 site_packages_linux=("nvidia/cu13/lib", "nvidia/cusparselt/lib"), 

486 site_packages_windows=WindowsSearchDirs( 

487 x64=("nvidia/cu13/bin/x64", "nvidia/cusparselt/bin"), 

488 arm64=("nvidia/cu13/bin/arm64",), 

489 ), 

490 ), 

491 DescriptorSpec( 

492 name="cutensor", 

493 packaged_with="other", 

494 linux_sonames=("libcutensor.so.2",), 

495 windows_dlls=("cutensor.dll",), 

496 supported_windows_arch=("x64", "arm64"), 

497 site_packages_linux=("cutensor/lib",), 

498 site_packages_windows=WindowsSearchDirs(x64=("cutensor/bin",), arm64=("cutensor/bin",)), 

499 dependencies=("cublasLt",), 

500 ), 

501 DescriptorSpec( 

502 name="cutensorMg", 

503 packaged_with="other", 

504 linux_sonames=("libcutensorMg.so.2",), 

505 windows_dlls=("cutensorMg.dll",), 

506 supported_windows_arch=("x64", "arm64"), 

507 site_packages_linux=("cutensor/lib",), 

508 site_packages_windows=WindowsSearchDirs(x64=("cutensor/bin",), arm64=("cutensor/bin",)), 

509 dependencies=("cutensor", "cublasLt"), 

510 ), 

511 DescriptorSpec( 

512 name="cutensorMp", 

513 packaged_with="other", 

514 linux_sonames=("libcutensorMp.so.2",), 

515 site_packages_linux=("cutensor/lib",), 

516 dependencies=("cutensor", "cublasLt", "cudart", "nccl"), 

517 ), 

518 DescriptorSpec( 

519 name="cudensitymat", 

520 packaged_with="other", 

521 linux_sonames=("libcudensitymat.so.0",), 

522 site_packages_linux=("cuquantum/lib",), 

523 dependencies=( 

524 "cutensornet", 

525 "cutensor", 

526 "cusolver", 

527 "cublasLt", 

528 "cublas", 

529 "curand", 

530 "cusparse", 

531 "nvJitLink", 

532 ), 

533 ), 

534 DescriptorSpec( 

535 name="cupauliprop", 

536 packaged_with="other", 

537 linux_sonames=("libcupauliprop.so.0",), 

538 site_packages_linux=("cuquantum/lib",), 

539 ), 

540 DescriptorSpec( 

541 name="cutensornet", 

542 packaged_with="other", 

543 linux_sonames=("libcutensornet.so.2",), 

544 site_packages_linux=("cuquantum/lib",), 

545 dependencies=("cutensor", "cublas", "cusolver"), 

546 ), 

547 DescriptorSpec( 

548 name="custabilizer", 

549 packaged_with="other", 

550 linux_sonames=("libcustabilizer.so.0",), 

551 site_packages_linux=("cuquantum/lib",), 

552 ), 

553 DescriptorSpec( 

554 name="custatevec", 

555 packaged_with="other", 

556 linux_sonames=("libcustatevec.so.1",), 

557 site_packages_linux=("cuquantum/lib",), 

558 dependencies=("cublas", "cublasLt"), 

559 ), 

560 DescriptorSpec( 

561 name="nccl", 

562 packaged_with="other", 

563 linux_sonames=("libnccl.so.2",), 

564 site_packages_linux=("nvidia/nccl/lib",), 

565 install_root_env_vars_linux=("NCCL_HOME",), 

566 install_root_env_rel_dirs_linux=("lib", "lib64", "build/lib"), 

567 ), 

568 DescriptorSpec( 

569 name="nvpl_fftw", 

570 packaged_with="other", 

571 linux_sonames=("libnvpl_fftw.so.0",), 

572 site_packages_linux=("nvpl/lib",), 

573 ), 

574 DescriptorSpec( 

575 name="nvshmem_host", 

576 packaged_with="other", 

577 linux_sonames=("libnvshmem_host.so.3",), 

578 site_packages_linux=("nvidia/nvshmem/lib",), 

579 ), 

580 # ----------------------------------------------------------------------- 

581 # Driver libraries (system-search only, no CTK cascade) 

582 # ----------------------------------------------------------------------- 

583 DescriptorSpec( 

584 name="cuda", 

585 packaged_with="driver", 

586 linux_sonames=("libcuda.so.1",), 

587 windows_dlls=("nvcuda.dll",), 

588 supported_windows_arch=("x64", "arm64"), 

589 ), 

590 DescriptorSpec( 

591 name="nvcudla", 

592 packaged_with="driver", 

593 linux_sonames=("libnvcudla.so",), 

594 ), 

595 DescriptorSpec( 

596 name="nvml", 

597 packaged_with="driver", 

598 linux_sonames=("libnvidia-ml.so.1",), 

599 windows_dlls=("nvml.dll",), 

600 supported_windows_arch=("x64", "arm64"), 

601 ), 

602)