onnxruntime-gpu-extended-auto 1.23.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jeff Hykin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ include README.md
2
+ include LICENSE
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: onnxruntime-gpu-extended-auto
3
+ Version: 1.23.2
4
+ Summary: Installs the onnxruntime-gpu-extended build matching this machine's CUDA and cuDNN versions
5
+ Home-page: https://github.com/jeff-hykin/onnxruntime-gpu-extended-auto
6
+ License: MIT
7
+ Classifier: Operating System :: POSIX :: Linux
8
+ Classifier: Environment :: GPU :: NVIDIA CUDA
9
+ Classifier: Topic :: Scientific/Engineering
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: onnxruntime-gpu-extended==1.23.2.12.9
14
+ Dynamic: classifier
15
+ Dynamic: description
16
+ Dynamic: description-content-type
17
+ Dynamic: home-page
18
+ Dynamic: license
19
+ Dynamic: license-file
20
+ Dynamic: requires-dist
21
+ Dynamic: requires-python
22
+ Dynamic: summary
23
+
24
+ # onnxruntime-gpu-extended-auto
25
+
26
+ ```
27
+ pip install onnxruntime-gpu-extended-auto
28
+ ```
29
+
30
+ That is the whole thing. It looks at which CUDA and cuDNN are installed on the
31
+ machine you are running `pip` on, then pulls the matching
32
+ [onnxruntime-gpu-extended](https://pypi.org/project/onnxruntime-gpu-extended/)
33
+ build.
34
+
35
+ ## Why this exists
36
+
37
+ A wheel filename can say "Python 3.12, aarch64, glibc 2.34". It cannot say
38
+ "cuDNN 8" or "cuDNN 9". Both JetPack 6.0 and JetPack 6.2 produce the exact same
39
+ tag, `cp312-cp312-manylinux_2_34_aarch64`, so PyPI has no way to hand each one a
40
+ different file. An onnxruntime built against cuDNN 8 will not load on cuDNN 9,
41
+ and vice versa.
42
+
43
+ This package resolves that at install time instead.
44
+
45
+ Published versions are `<onnxruntime version>.<cuda major>.<cudnn major>`, so the
46
+ ABI that the filename cannot express lives in the version number instead.
47
+
48
+ | Detected | Installs |
49
+ |---|---|
50
+ | CUDA 12 / cuDNN 8 (JetPack 6.0, L4T r36.3) | `onnxruntime-gpu-extended==1.22.2.12.8` |
51
+ | CUDA 12 / cuDNN 9 (JetPack 6.1 / 6.2, L4T r36.4) | `onnxruntime-gpu-extended==1.23.2.12.9` |
52
+ | anything not aarch64 | `onnxruntime-gpu` |
53
+
54
+ Check what you have with `head -1 /etc/nv_tegra_release`.
55
+
56
+ Jetson is the only platform upstream never shipped CUDA wheels for, so on x86_64
57
+ this hands you the normal `onnxruntime-gpu` and gets out of the way. It is safe
58
+ to depend on from a project that runs on both.
59
+
60
+ ## Install it on the device
61
+
62
+ Detection reads the machine running `pip`. Building a lockfile or a container
63
+ image on one JetPack and deploying to another will bake in the wrong choice.
64
+
65
+ pip caches the wheel it builds from this package, keyed on the source archive
66
+ rather than on the machine. After upgrading JetPack on a box, reinstall with
67
+ `--no-cache-dir` so detection runs again.
68
+
69
+ To pick explicitly instead of detecting:
70
+
71
+ ```
72
+ ORT_GPU_EXTENDED_VARIANT='onnxruntime-gpu-extended==1.23.2.12.9' pip install onnxruntime-gpu-extended-auto
73
+ ```
74
+
75
+ The same variable is how this package's own source archive gets built off-device,
76
+ since detection otherwise refuses to run on an aarch64 machine without CUDA.
77
+
78
+ ## Verify
79
+
80
+ ```python
81
+ import onnxruntime
82
+ print(onnxruntime.get_available_providers())
83
+ ```
84
+
85
+ `get_available_providers()` lists what was compiled in, not what loads. To prove
86
+ CUDA actually works, build a session and ask it:
87
+
88
+ ```python
89
+ session = onnxruntime.InferenceSession("model.onnx", providers=["CUDAExecutionProvider"])
90
+ print(session.get_providers())
91
+ ```
@@ -0,0 +1,68 @@
1
+ # onnxruntime-gpu-extended-auto
2
+
3
+ ```
4
+ pip install onnxruntime-gpu-extended-auto
5
+ ```
6
+
7
+ That is the whole thing. It looks at which CUDA and cuDNN are installed on the
8
+ machine you are running `pip` on, then pulls the matching
9
+ [onnxruntime-gpu-extended](https://pypi.org/project/onnxruntime-gpu-extended/)
10
+ build.
11
+
12
+ ## Why this exists
13
+
14
+ A wheel filename can say "Python 3.12, aarch64, glibc 2.34". It cannot say
15
+ "cuDNN 8" or "cuDNN 9". Both JetPack 6.0 and JetPack 6.2 produce the exact same
16
+ tag, `cp312-cp312-manylinux_2_34_aarch64`, so PyPI has no way to hand each one a
17
+ different file. An onnxruntime built against cuDNN 8 will not load on cuDNN 9,
18
+ and vice versa.
19
+
20
+ This package resolves that at install time instead.
21
+
22
+ Published versions are `<onnxruntime version>.<cuda major>.<cudnn major>`, so the
23
+ ABI that the filename cannot express lives in the version number instead.
24
+
25
+ | Detected | Installs |
26
+ |---|---|
27
+ | CUDA 12 / cuDNN 8 (JetPack 6.0, L4T r36.3) | `onnxruntime-gpu-extended==1.22.2.12.8` |
28
+ | CUDA 12 / cuDNN 9 (JetPack 6.1 / 6.2, L4T r36.4) | `onnxruntime-gpu-extended==1.23.2.12.9` |
29
+ | anything not aarch64 | `onnxruntime-gpu` |
30
+
31
+ Check what you have with `head -1 /etc/nv_tegra_release`.
32
+
33
+ Jetson is the only platform upstream never shipped CUDA wheels for, so on x86_64
34
+ this hands you the normal `onnxruntime-gpu` and gets out of the way. It is safe
35
+ to depend on from a project that runs on both.
36
+
37
+ ## Install it on the device
38
+
39
+ Detection reads the machine running `pip`. Building a lockfile or a container
40
+ image on one JetPack and deploying to another will bake in the wrong choice.
41
+
42
+ pip caches the wheel it builds from this package, keyed on the source archive
43
+ rather than on the machine. After upgrading JetPack on a box, reinstall with
44
+ `--no-cache-dir` so detection runs again.
45
+
46
+ To pick explicitly instead of detecting:
47
+
48
+ ```
49
+ ORT_GPU_EXTENDED_VARIANT='onnxruntime-gpu-extended==1.23.2.12.9' pip install onnxruntime-gpu-extended-auto
50
+ ```
51
+
52
+ The same variable is how this package's own source archive gets built off-device,
53
+ since detection otherwise refuses to run on an aarch64 machine without CUDA.
54
+
55
+ ## Verify
56
+
57
+ ```python
58
+ import onnxruntime
59
+ print(onnxruntime.get_available_providers())
60
+ ```
61
+
62
+ `get_available_providers()` lists what was compiled in, not what loads. To prove
63
+ CUDA actually works, build a session and ask it:
64
+
65
+ ```python
66
+ session = onnxruntime.InferenceSession("model.onnx", providers=["CUDAExecutionProvider"])
67
+ print(session.get_providers())
68
+ ```
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: onnxruntime-gpu-extended-auto
3
+ Version: 1.23.2
4
+ Summary: Installs the onnxruntime-gpu-extended build matching this machine's CUDA and cuDNN versions
5
+ Home-page: https://github.com/jeff-hykin/onnxruntime-gpu-extended-auto
6
+ License: MIT
7
+ Classifier: Operating System :: POSIX :: Linux
8
+ Classifier: Environment :: GPU :: NVIDIA CUDA
9
+ Classifier: Topic :: Scientific/Engineering
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: onnxruntime-gpu-extended==1.23.2.12.9
14
+ Dynamic: classifier
15
+ Dynamic: description
16
+ Dynamic: description-content-type
17
+ Dynamic: home-page
18
+ Dynamic: license
19
+ Dynamic: license-file
20
+ Dynamic: requires-dist
21
+ Dynamic: requires-python
22
+ Dynamic: summary
23
+
24
+ # onnxruntime-gpu-extended-auto
25
+
26
+ ```
27
+ pip install onnxruntime-gpu-extended-auto
28
+ ```
29
+
30
+ That is the whole thing. It looks at which CUDA and cuDNN are installed on the
31
+ machine you are running `pip` on, then pulls the matching
32
+ [onnxruntime-gpu-extended](https://pypi.org/project/onnxruntime-gpu-extended/)
33
+ build.
34
+
35
+ ## Why this exists
36
+
37
+ A wheel filename can say "Python 3.12, aarch64, glibc 2.34". It cannot say
38
+ "cuDNN 8" or "cuDNN 9". Both JetPack 6.0 and JetPack 6.2 produce the exact same
39
+ tag, `cp312-cp312-manylinux_2_34_aarch64`, so PyPI has no way to hand each one a
40
+ different file. An onnxruntime built against cuDNN 8 will not load on cuDNN 9,
41
+ and vice versa.
42
+
43
+ This package resolves that at install time instead.
44
+
45
+ Published versions are `<onnxruntime version>.<cuda major>.<cudnn major>`, so the
46
+ ABI that the filename cannot express lives in the version number instead.
47
+
48
+ | Detected | Installs |
49
+ |---|---|
50
+ | CUDA 12 / cuDNN 8 (JetPack 6.0, L4T r36.3) | `onnxruntime-gpu-extended==1.22.2.12.8` |
51
+ | CUDA 12 / cuDNN 9 (JetPack 6.1 / 6.2, L4T r36.4) | `onnxruntime-gpu-extended==1.23.2.12.9` |
52
+ | anything not aarch64 | `onnxruntime-gpu` |
53
+
54
+ Check what you have with `head -1 /etc/nv_tegra_release`.
55
+
56
+ Jetson is the only platform upstream never shipped CUDA wheels for, so on x86_64
57
+ this hands you the normal `onnxruntime-gpu` and gets out of the way. It is safe
58
+ to depend on from a project that runs on both.
59
+
60
+ ## Install it on the device
61
+
62
+ Detection reads the machine running `pip`. Building a lockfile or a container
63
+ image on one JetPack and deploying to another will bake in the wrong choice.
64
+
65
+ pip caches the wheel it builds from this package, keyed on the source archive
66
+ rather than on the machine. After upgrading JetPack on a box, reinstall with
67
+ `--no-cache-dir` so detection runs again.
68
+
69
+ To pick explicitly instead of detecting:
70
+
71
+ ```
72
+ ORT_GPU_EXTENDED_VARIANT='onnxruntime-gpu-extended==1.23.2.12.9' pip install onnxruntime-gpu-extended-auto
73
+ ```
74
+
75
+ The same variable is how this package's own source archive gets built off-device,
76
+ since detection otherwise refuses to run on an aarch64 machine without CUDA.
77
+
78
+ ## Verify
79
+
80
+ ```python
81
+ import onnxruntime
82
+ print(onnxruntime.get_available_providers())
83
+ ```
84
+
85
+ `get_available_providers()` lists what was compiled in, not what loads. To prove
86
+ CUDA actually works, build a session and ask it:
87
+
88
+ ```python
89
+ session = onnxruntime.InferenceSession("model.onnx", providers=["CUDAExecutionProvider"])
90
+ print(session.get_providers())
91
+ ```
@@ -0,0 +1,9 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ setup.py
5
+ onnxruntime_gpu_extended_auto.egg-info/PKG-INFO
6
+ onnxruntime_gpu_extended_auto.egg-info/SOURCES.txt
7
+ onnxruntime_gpu_extended_auto.egg-info/dependency_links.txt
8
+ onnxruntime_gpu_extended_auto.egg-info/requires.txt
9
+ onnxruntime_gpu_extended_auto.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ onnxruntime-gpu-extended==1.23.2.12.9
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,136 @@
1
+ """Metadata-only package that resolves to the onnxruntime-gpu-extended build
2
+ matching the CUDA/cuDNN majors present on the machine running pip."""
3
+
4
+ import glob
5
+ import os
6
+ import platform
7
+ import re
8
+ import subprocess
9
+ import sys
10
+
11
+ from setuptools import setup
12
+
13
+ DISPATCHER_VERSION = "1.23.2"
14
+ DISTRIBUTION = "onnxruntime-gpu-extended"
15
+
16
+ # Jetson is the only platform upstream never shipped CUDA wheels for.
17
+ UPSTREAM_DISTRIBUTION = "onnxruntime-gpu"
18
+
19
+ # Published wheel versions are <ort_version>.<cuda_major>.<cudnn_major>, so the
20
+ # ABI lives in the version rather than in the project name.
21
+ # (cuda_major, cudnn_major) -> version
22
+ VARIANTS = {
23
+ (12, 8): "1.22.2.12.8",
24
+ (12, 9): "1.23.2.12.9",
25
+ }
26
+
27
+ LIBRARY_DIRECTORIES = [
28
+ "/usr/lib/aarch64-linux-gnu",
29
+ "/usr/lib/x86_64-linux-gnu",
30
+ "/usr/local/cuda/lib64",
31
+ "/usr/local/cuda/targets/aarch64-linux/lib",
32
+ "/usr/local/cuda/targets/x86_64-linux/lib",
33
+ "/usr/lib64",
34
+ "/usr/lib",
35
+ ]
36
+
37
+
38
+ def soname_majors(library_stem):
39
+ """Every N for which libFOO.so.N is visible to the dynamic linker."""
40
+ pattern = re.compile(re.escape(library_stem) + r"\.so\.(\d+)")
41
+ majors = set()
42
+
43
+ try:
44
+ ldconfig_output = subprocess.run(
45
+ ["/sbin/ldconfig", "-p"],
46
+ capture_output=True,
47
+ text=True,
48
+ timeout=30,
49
+ ).stdout
50
+ majors.update(int(match) for match in pattern.findall(ldconfig_output))
51
+ except (OSError, subprocess.SubprocessError):
52
+ pass
53
+
54
+ search_directories = list(LIBRARY_DIRECTORIES)
55
+ search_directories += [
56
+ directory
57
+ for directory in os.environ.get("LD_LIBRARY_PATH", "").split(":")
58
+ if directory
59
+ ]
60
+ for directory in search_directories:
61
+ for path in glob.glob(os.path.join(directory, library_stem + ".so.*")):
62
+ match = pattern.search(os.path.basename(path))
63
+ if match:
64
+ majors.add(int(match.group(1)))
65
+
66
+ return majors
67
+
68
+
69
+ def detect_requirement():
70
+ override = os.environ.get("ORT_GPU_EXTENDED_VARIANT")
71
+ if override:
72
+ return override, "ORT_GPU_EXTENDED_VARIANT"
73
+
74
+ # Only Jetson lacks upstream CUDA wheels; everywhere else upstream is correct.
75
+ machine = platform.machine()
76
+ if machine not in ("aarch64", "arm64"):
77
+ return UPSTREAM_DISTRIBUTION, "non-aarch64 machine (%s)" % machine
78
+
79
+ cuda_majors = soname_majors("libcudart")
80
+ cudnn_majors = soname_majors("libcudnn")
81
+ if not cuda_majors or not cudnn_majors:
82
+ raise SystemExit(
83
+ "onnxruntime-gpu-extended-auto: could not find CUDA and cuDNN on this "
84
+ "machine.\n"
85
+ " libcudart.so.N found: %s\n"
86
+ " libcudnn.so.N found: %s\n"
87
+ "This package must be installed on the target device (a Jetson with "
88
+ "JetPack installed), not cross-built.\n"
89
+ "To bypass detection, set ORT_GPU_EXTENDED_VARIANT to a pip "
90
+ "requirement, e.g.\n"
91
+ " ORT_GPU_EXTENDED_VARIANT='onnxruntime-gpu-extended==1.23.2'"
92
+ % (sorted(cuda_majors) or "none", sorted(cudnn_majors) or "none")
93
+ )
94
+
95
+ # A box carrying several cuDNN majors can run the build for the newest one.
96
+ key = (max(cuda_majors), max(cudnn_majors))
97
+ if key not in VARIANTS:
98
+ raise SystemExit(
99
+ "onnxruntime-gpu-extended-auto: no build published for CUDA %d / "
100
+ "cuDNN %d.\nPublished combinations: %s\n"
101
+ "Please open an issue at "
102
+ "https://github.com/jeff-hykin/onnxruntime-gpu-extended-auto/issues"
103
+ % (key[0], key[1], ", ".join("CUDA %d / cuDNN %d" % k for k in sorted(VARIANTS)))
104
+ )
105
+
106
+ return "%s==%s" % (DISTRIBUTION, VARIANTS[key]), "CUDA %d / cuDNN %d" % key
107
+
108
+
109
+ requirement, detection_source = detect_requirement()
110
+ sys.stderr.write(
111
+ "onnxruntime-gpu-extended-auto: detected %s -> installing %s\n"
112
+ % (detection_source, requirement)
113
+ )
114
+
115
+ setup(
116
+ name="onnxruntime-gpu-extended-auto",
117
+ version=DISPATCHER_VERSION,
118
+ description=(
119
+ "Installs the onnxruntime-gpu-extended build matching this machine's "
120
+ "CUDA and cuDNN versions"
121
+ ),
122
+ long_description=open(
123
+ os.path.join(os.path.dirname(os.path.abspath(__file__)), "README.md")
124
+ ).read(),
125
+ long_description_content_type="text/markdown",
126
+ license="MIT",
127
+ url="https://github.com/jeff-hykin/onnxruntime-gpu-extended-auto",
128
+ python_requires=">=3.10",
129
+ install_requires=[requirement],
130
+ py_modules=[],
131
+ classifiers=[
132
+ "Operating System :: POSIX :: Linux",
133
+ "Environment :: GPU :: NVIDIA CUDA",
134
+ "Topic :: Scientific/Engineering",
135
+ ],
136
+ )