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

50 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-16 01:23 +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.1.dll", 

366 "cupti64_2026.3.0.dll", 

367 "cupti64_2026.2.1.dll", 

368 "cupti64_2026.2.0.dll", 

369 "cupti64_2026.1.1.dll", 

370 "cupti64_2026.1.0.dll", 

371 "cupti64_2025.4.1.dll", 

372 "cupti64_2025.3.1.dll", 

373 "cupti64_2025.2.1.dll", 

374 "cupti64_2025.1.1.dll", 

375 "cupti64_2024.3.2.dll", 

376 "cupti64_2024.2.1.dll", 

377 "cupti64_2024.1.1.dll", 

378 "cupti64_2023.3.1.dll", 

379 "cupti64_2023.2.2.dll", 

380 "cupti64_2023.1.1.dll", 

381 "cupti64_2022.4.1.dll", 

382 ), 

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

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

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

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

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

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

389 anchor_rel_dirs_windows=WindowsSearchDirs( 

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

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

392 ), 

393 ctk_root_canary_anchor_libnames=CTK_ROOT_CANARY_ANCHOR_LIBNAMES, 

394 ), 

395 DescriptorSpec( 

396 name="cudla", 

397 packaged_with="ctk", 

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

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

400 supported_windows_arch=("arm64",), 

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

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

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

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

405 ), 

406 # ----------------------------------------------------------------------- 

407 # Third-party / separately packaged libraries 

408 # ----------------------------------------------------------------------- 

409 DescriptorSpec( 

410 name="cublasmp", 

411 packaged_with="other", 

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

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

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

415 ), 

416 DescriptorSpec( 

417 name="cufftMp", 

418 packaged_with="other", 

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

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

421 dependencies=("nvshmem_host",), 

422 requires_rtld_deepbind=True, 

423 ), 

424 DescriptorSpec( 

425 name="cudnn", 

426 packaged_with="other", 

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

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

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

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

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

432 dependencies=("cublasLt",), 

433 optional_dependencies=("nvrtc",), 

434 install_root_env_vars_linux=("CUDNN_PATH",), 

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

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

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

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

439 install_root_env_vars_windows=("CUDNN_PATH",), 

440 install_root_env_rel_dirs_windows=WindowsSearchDirs( 

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

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

443 ), 

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

445 requires_add_dll_directory=True, 

446 ), 

447 DescriptorSpec( 

448 name="cusolverMp", 

449 packaged_with="other", 

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

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

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

453 ), 

454 DescriptorSpec( 

455 name="mathdx", 

456 packaged_with="other", 

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

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

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

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

461 site_packages_windows=WindowsSearchDirs( 

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

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

464 ), 

465 dependencies=("nvrtc",), 

466 ), 

467 DescriptorSpec( 

468 name="cudss", 

469 packaged_with="other", 

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

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

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

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

474 site_packages_windows=WindowsSearchDirs( 

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

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

477 ), 

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

479 ), 

480 DescriptorSpec( 

481 name="cusparseLt", 

482 packaged_with="other", 

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

484 windows_dlls=("cusparseLt_13.dll", "cusparseLt.dll"), 

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

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

487 site_packages_windows=WindowsSearchDirs( 

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

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

490 ), 

491 ), 

492 DescriptorSpec( 

493 name="cutensor", 

494 packaged_with="other", 

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

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

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

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

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

500 dependencies=("cublasLt",), 

501 ), 

502 DescriptorSpec( 

503 name="cutensorMg", 

504 packaged_with="other", 

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

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

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

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

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

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

511 ), 

512 DescriptorSpec( 

513 name="cutensorMp", 

514 packaged_with="other", 

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

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

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

518 ), 

519 DescriptorSpec( 

520 name="cudensitymat", 

521 packaged_with="other", 

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

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

524 dependencies=( 

525 "cutensornet", 

526 "cutensor", 

527 "cusolver", 

528 "cublasLt", 

529 "cublas", 

530 "curand", 

531 "cusparse", 

532 "nvJitLink", 

533 ), 

534 ), 

535 DescriptorSpec( 

536 name="cupauliprop", 

537 packaged_with="other", 

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

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

540 ), 

541 DescriptorSpec( 

542 name="cutensornet", 

543 packaged_with="other", 

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

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

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

547 ), 

548 DescriptorSpec( 

549 name="custabilizer", 

550 packaged_with="other", 

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

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

553 ), 

554 DescriptorSpec( 

555 name="custatevec", 

556 packaged_with="other", 

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

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

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

560 ), 

561 DescriptorSpec( 

562 name="nccl", 

563 packaged_with="other", 

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

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

566 install_root_env_vars_linux=("NCCL_HOME",), 

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

568 ), 

569 DescriptorSpec( 

570 name="nvpl_fftw", 

571 packaged_with="other", 

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

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

574 ), 

575 DescriptorSpec( 

576 name="nvshmem_host", 

577 packaged_with="other", 

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

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

580 ), 

581 # ----------------------------------------------------------------------- 

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

583 # ----------------------------------------------------------------------- 

584 DescriptorSpec( 

585 name="cuda", 

586 packaged_with="driver", 

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

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

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

590 ), 

591 DescriptorSpec( 

592 name="nvcudla", 

593 packaged_with="driver", 

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

595 ), 

596 DescriptorSpec( 

597 name="nvml", 

598 packaged_with="driver", 

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

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

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

602 ), 

603)