Skip to content

Commit c5cb510

Browse files
committed
Move cuda_bindings to a src/ layout
1 parent 96e1b69 commit c5cb510

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+91
-1593
lines changed

.gitignore

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,45 +12,45 @@ __pycache__/
1212
.benchmarks/
1313
*.cpp
1414
!*_impl.cpp
15-
!cuda_bindings/cuda/bindings/_lib/param_packer.cpp
16-
!cuda_bindings/cuda/bindings/_bindings/loader.cpp
15+
!cuda_bindings/src/cuda/bindings/_lib/param_packer.cpp
16+
!cuda_bindings/src/cuda/bindings/_bindings/loader.cpp
1717
cache_driver
1818
cache_runtime
1919
cache_nvrtc
20-
cuda_bindings/cuda/bindings/_lib/utils.pxi
20+
cuda_bindings/src/cuda/bindings/_lib/utils.pxi
2121

2222
# CUDA Python specific (auto-generated)
23-
cuda_bindings/cuda/bindings/_bindings/cydriver.pxd
24-
cuda_bindings/cuda/bindings/_bindings/cydriver.pyx
25-
cuda_bindings/cuda/bindings/_bindings/cyruntime.pxd
26-
cuda_bindings/cuda/bindings/_bindings/cyruntime.pyx
27-
cuda_bindings/cuda/bindings/_bindings/cyruntime_ptds.pxd
28-
cuda_bindings/cuda/bindings/_bindings/cyruntime_ptds.pyx
29-
cuda_bindings/cuda/bindings/_bindings/cynvrtc.pxd
30-
cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx
31-
cuda_bindings/cuda/bindings/_internal/_nvml.pyx
32-
cuda_bindings/cuda/bindings/_internal/cufile.pyx
33-
cuda_bindings/cuda/bindings/_internal/nvfatbin.pyx
34-
cuda_bindings/cuda/bindings/_internal/nvjitlink.pyx
35-
cuda_bindings/cuda/bindings/_internal/nvml.pyx
36-
cuda_bindings/cuda/bindings/_internal/nvvm.pyx
37-
cuda_bindings/cuda/bindings/_lib/utils.pxd
38-
cuda_bindings/cuda/bindings/_lib/utils.pyx
39-
cuda_bindings/cuda/bindings/cydriver.pxd
40-
cuda_bindings/cuda/bindings/cydriver.pyx
41-
cuda_bindings/cuda/bindings/cyruntime.pxd
42-
cuda_bindings/cuda/bindings/cyruntime.pyx
43-
cuda_bindings/cuda/bindings/cyruntime_functions.pxi
44-
cuda_bindings/cuda/bindings/cyruntime_types.pxi
45-
cuda_bindings/cuda/bindings/cynvrtc.pxd
46-
cuda_bindings/cuda/bindings/cynvrtc.pyx
47-
cuda_bindings/cuda/bindings/driver.pxd
48-
cuda_bindings/cuda/bindings/driver.pyx
49-
cuda_bindings/cuda/bindings/runtime.pxd
50-
cuda_bindings/cuda/bindings/runtime.pyx
51-
cuda_bindings/cuda/bindings/nvrtc.pxd
52-
cuda_bindings/cuda/bindings/nvrtc.pyx
53-
cuda_bindings/cuda/bindings/utils/_get_handle.pyx
23+
cuda_bindings/src/cuda/bindings/_bindings/cydriver.pxd
24+
cuda_bindings/src/cuda/bindings/_bindings/cydriver.pyx
25+
cuda_bindings/src/cuda/bindings/_bindings/cyruntime.pxd
26+
cuda_bindings/src/cuda/bindings/_bindings/cyruntime.pyx
27+
cuda_bindings/src/cuda/bindings/_bindings/cyruntime_ptds.pxd
28+
cuda_bindings/src/cuda/bindings/_bindings/cyruntime_ptds.pyx
29+
cuda_bindings/src/cuda/bindings/_bindings/cynvrtc.pxd
30+
cuda_bindings/src/cuda/bindings/_bindings/cynvrtc.pyx
31+
cuda_bindings/src/cuda/bindings/_internal/_nvml.pyx
32+
cuda_bindings/src/cuda/bindings/_internal/cufile.pyx
33+
cuda_bindings/src/cuda/bindings/_internal/nvfatbin.pyx
34+
cuda_bindings/src/cuda/bindings/_internal/nvjitlink.pyx
35+
cuda_bindings/src/cuda/bindings/_internal/nvml.pyx
36+
cuda_bindings/src/cuda/bindings/_internal/nvvm.pyx
37+
cuda_bindings/src/cuda/bindings/_lib/utils.pxd
38+
cuda_bindings/src/cuda/bindings/_lib/utils.pyx
39+
cuda_bindings/src/cuda/bindings/cydriver.pxd
40+
cuda_bindings/src/cuda/bindings/cydriver.pyx
41+
cuda_bindings/src/cuda/bindings/cyruntime.pxd
42+
cuda_bindings/src/cuda/bindings/cyruntime.pyx
43+
cuda_bindings/src/cuda/bindings/cyruntime_functions.pxi
44+
cuda_bindings/src/cuda/bindings/cyruntime_types.pxi
45+
cuda_bindings/src/cuda/bindings/cynvrtc.pxd
46+
cuda_bindings/src/cuda/bindings/cynvrtc.pyx
47+
cuda_bindings/src/cuda/bindings/driver.pxd
48+
cuda_bindings/src/cuda/bindings/driver.pyx
49+
cuda_bindings/src/cuda/bindings/runtime.pxd
50+
cuda_bindings/src/cuda/bindings/runtime.pyx
51+
cuda_bindings/src/cuda/bindings/nvrtc.pxd
52+
cuda_bindings/src/cuda/bindings/nvrtc.pyx
53+
cuda_bindings/src/cuda/bindings/utils/_get_handle.pyx
5454

5555
# Version files from setuptools_scm
5656
_version.py

cuda_bindings/MANIFEST.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
33

4-
recursive-include cuda/ *.pyx *.pxd *.pxi *.pyx.in *.pxd.in *.pxi.in *.h
4+
recursive-include src/cuda/ *.pyx *.pxd *.pxi *.pyx.in *.pxd.in *.pxi.in *.h
55
# at least with setuptools 75.0.0 this folder was added erroneously
66
# to the payload, causing file copying to the build environment failed
7-
exclude cuda/bindings cuda?bindings
8-
exclude cuda/bindings/_bindings cuda?bindings?_bindings
7+
exclude src/cuda/bindings src?cuda?bindings
8+
exclude src/cuda/bindings/_bindings src?cuda?bindings?_bindings

cuda_bindings/build_hooks.py

Lines changed: 22 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -33,40 +33,10 @@
3333
_extensions = None
3434

3535

36-
# Please keep in sync with the copy in cuda_core/build_hooks.py.
37-
def _import_get_cuda_path_or_home():
38-
"""Import get_cuda_path_or_home, working around PEP 517 namespace shadowing.
39-
40-
See https://github.com/NVIDIA/cuda-python/issues/1824 for why this helper is needed.
41-
"""
42-
try:
43-
import cuda.pathfinder
44-
except ModuleNotFoundError as exc:
45-
if exc.name not in ("cuda", "cuda.pathfinder"):
46-
raise
47-
try:
48-
import cuda
49-
except ModuleNotFoundError:
50-
cuda = None
51-
52-
for p in sys.path:
53-
sp_cuda = os.path.join(p, "cuda")
54-
if os.path.isdir(os.path.join(sp_cuda, "pathfinder")):
55-
cuda.__path__ = list(cuda.__path__) + [sp_cuda]
56-
break
57-
else:
58-
raise ModuleNotFoundError(
59-
"cuda-pathfinder is not installed in the build environment. "
60-
"Ensure 'cuda-pathfinder>=1.5' is in build-system.requires."
61-
)
62-
import cuda.pathfinder
63-
64-
return cuda.pathfinder.get_cuda_path_or_home
65-
66-
6736
@functools.cache
6837
def _get_cuda_path() -> str:
69-
get_cuda_path_or_home = _import_get_cuda_path_or_home()
38+
from cuda.pathfinder import get_cuda_path_or_home
39+
7040
cuda_path = get_cuda_path_or_home()
7141
if not cuda_path:
7242
raise RuntimeError("Environment variable CUDA_PATH or CUDA_HOME is not set")
@@ -266,7 +236,7 @@ def _generate_output(infile, template_vars):
266236

267237

268238
def _rename_architecture_specific_files():
269-
path = os.path.join("cuda", "bindings", "_internal")
239+
path = os.path.join("src", "cuda", "bindings", "_internal")
270240
if sys.platform == "linux":
271241
src_files = glob.glob(os.path.join(path, "*_linux.pyx"))
272242
elif sys.platform == "win32":
@@ -290,7 +260,10 @@ def _prep_extensions(sources, libraries, include_dirs, library_dirs, extra_compi
290260
libraries = libraries if libraries else []
291261
exts = []
292262
for pyx in files:
293-
mod_name = pyx.replace(".pyx", "").replace(os.sep, ".").replace("/", ".")
263+
mod_path = pyx.replace(".pyx", "").replace(os.sep, "/")
264+
if mod_path.startswith("src/"):
265+
mod_path = mod_path[len("src/") :]
266+
mod_name = mod_path.replace("/", ".")
294267
exts.append(
295268
Extension(
296269
mod_name,
@@ -346,12 +319,12 @@ def _build_cuda_bindings(strip=False):
346319

347320
# Generate code from .in templates
348321
path_list = [
349-
os.path.join("cuda"),
350-
os.path.join("cuda", "bindings"),
351-
os.path.join("cuda", "bindings", "_bindings"),
352-
os.path.join("cuda", "bindings", "_internal"),
353-
os.path.join("cuda", "bindings", "_lib"),
354-
os.path.join("cuda", "bindings", "utils"),
322+
os.path.join("src", "cuda"),
323+
os.path.join("src", "cuda", "bindings"),
324+
os.path.join("src", "cuda", "bindings", "_bindings"),
325+
os.path.join("src", "cuda", "bindings", "_internal"),
326+
os.path.join("src", "cuda", "bindings", "_lib"),
327+
os.path.join("src", "cuda", "bindings", "utils"),
355328
]
356329
input_files = []
357330
for path in path_list:
@@ -375,6 +348,7 @@ def _build_cuda_bindings(strip=False):
375348
# Prepare compile/link arguments
376349
include_dirs = [
377350
os.path.dirname(sysconfig.get_path("include")),
351+
"src",
378352
] + include_path_list
379353
library_dirs = [sysconfig.get_path("platlib"), os.path.join(os.sys.prefix, "lib")]
380354
cudalib_subdirs = [r"lib\x64"] if sys.platform == "win32" else ["lib64", "lib"]
@@ -415,21 +389,21 @@ def _cleanup_dst_files():
415389
# Build extension list
416390
extensions = []
417391
static_runtime_libraries = ["cudart_static", "rt"] if sys.platform == "linux" else ["cudart_static"]
418-
cuda_bindings_files = glob.glob("cuda/bindings/*.pyx")
392+
cuda_bindings_files = glob.glob("src/cuda/bindings/*.pyx")
419393
if sys.platform == "win32":
420394
cuda_bindings_files = [f for f in cuda_bindings_files if "cufile" not in f]
421395
sources_list = [
422396
# private
423-
(["cuda/bindings/_bindings/cydriver.pyx", "cuda/bindings/_bindings/loader.cpp"], None),
424-
(["cuda/bindings/_bindings/cynvrtc.pyx"], None),
425-
(["cuda/bindings/_bindings/cyruntime.pyx"], static_runtime_libraries),
426-
(["cuda/bindings/_bindings/cyruntime_ptds.pyx"], static_runtime_libraries),
397+
(["src/cuda/bindings/_bindings/cydriver.pyx", "src/cuda/bindings/_bindings/loader.cpp"], None),
398+
(["src/cuda/bindings/_bindings/cynvrtc.pyx"], None),
399+
(["src/cuda/bindings/_bindings/cyruntime.pyx"], static_runtime_libraries),
400+
(["src/cuda/bindings/_bindings/cyruntime_ptds.pyx"], static_runtime_libraries),
427401
# utils
428-
(["cuda/bindings/utils/*.pyx"], None),
402+
(["src/cuda/bindings/utils/*.pyx"], None),
429403
# public
430404
*(([f], None) for f in cuda_bindings_files),
431405
# internal files used by generated bindings
432-
(["cuda/bindings/_internal/utils.pyx"], None),
406+
(["src/cuda/bindings/_internal/utils.pyx"], None),
433407
*(([f], None) for f in dst_files if f.endswith(".pyx")),
434408
]
435409

@@ -446,6 +420,7 @@ def _cleanup_dst_files():
446420
_extensions = cythonize(
447421
extensions,
448422
nthreads=nthreads,
423+
include_path=["src"],
449424
build_dir="." if compile_for_coverage else "build/cython",
450425
compiler_directives=cython_directives,
451426
**extra_cythonize_kwargs,

cuda_bindings/pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Repository = "https://github.com/NVIDIA/cuda-python"
5858
Documentation = "https://nvidia.github.io/cuda-python/"
5959

6060
[tool.setuptools.packages.find]
61+
where = ["src"]
6162
include = ["cuda*"]
6263

6364
[tool.setuptools]
@@ -92,7 +93,7 @@ xfail_strict = true
9293

9394
[tool.setuptools_scm]
9495
root = ".."
95-
version_file = "cuda/bindings/_version.py"
96+
version_file = "src/cuda/bindings/_version.py"
9697
# Preserve a/b pre-release suffixes, but intentionally strip rc suffixes.
9798
tag_regex = "^(?P<version>v\\d+\\.\\d+\\.\\d+(?:[ab]\\d+)?)"
9899
git_describe_command = ["git", "describe", "--dirty", "--tags", "--long", "--match", "v*[0-9]*"]

cuda_bindings/setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def finalize_options(self):
5959

6060
setup(
6161
ext_modules=build_hooks._extensions,
62+
package_dir={"": "src"},
6263
cmdclass={
6364
"build_ext": build_ext,
6465
"build_py": build_py,
File renamed without changes.

cuda_bindings/cuda/bindings/__init__.py renamed to cuda_bindings/src/cuda/bindings/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
33

44
from cuda.bindings import utils
File renamed without changes.

cuda_bindings/cuda/bindings/_bindings/cydriver.pxd.in renamed to cuda_bindings/src/cuda/bindings/_bindings/cydriver.pxd.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2458,4 +2458,3 @@ cdef CUresult _cuGraphicsVDPAURegisterVideoSurface(CUgraphicsResource* pCudaReso
24582458

24592459
cdef CUresult _cuGraphicsVDPAURegisterOutputSurface(CUgraphicsResource* pCudaResource, VdpOutputSurface vdpSurface, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil
24602460
{{endif}}
2461-

cuda_bindings/cuda/bindings/_bindings/cydriver.pyx.in renamed to cuda_bindings/src/cuda/bindings/_bindings/cydriver.pyx.in

File renamed without changes.

0 commit comments

Comments
 (0)