comfy-env 0.0.41__py3-none-any.whl → 0.0.43__py3-none-any.whl
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.
- comfy_env/__init__.py +8 -4
- comfy_env/cli.py +77 -147
- comfy_env/env/config.py +2 -0
- comfy_env/env/config_file.py +27 -3
- comfy_env/env/manager.py +30 -129
- comfy_env/install.py +124 -498
- comfy_env/registry.py +48 -9
- comfy_env/resolver.py +10 -187
- comfy_env/wheel_sources.yml +52 -103
- {comfy_env-0.0.41.dist-info → comfy_env-0.0.43.dist-info}/METADATA +118 -46
- {comfy_env-0.0.41.dist-info → comfy_env-0.0.43.dist-info}/RECORD +14 -15
- comfy_env/index_resolver.py +0 -132
- {comfy_env-0.0.41.dist-info → comfy_env-0.0.43.dist-info}/WHEEL +0 -0
- {comfy_env-0.0.41.dist-info → comfy_env-0.0.43.dist-info}/entry_points.txt +0 -0
- {comfy_env-0.0.41.dist-info → comfy_env-0.0.43.dist-info}/licenses/LICENSE +0 -0
comfy_env/registry.py
CHANGED
|
@@ -3,13 +3,9 @@
|
|
|
3
3
|
This module loads package configurations from wheel_sources.yml and provides
|
|
4
4
|
lookup functions for the install module.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- "find_links": Use pip --find-links (for PyG, etc.)
|
|
10
|
-
- "pypi_variant": Package name varies by CUDA version (e.g., spconv-cu124)
|
|
11
|
-
- "github_release": Direct wheel URL from GitHub releases with fallback sources
|
|
12
|
-
- "pypi": Standard PyPI install
|
|
6
|
+
Each package has either:
|
|
7
|
+
- wheel_template: Direct URL template for .whl file
|
|
8
|
+
- package_name: PyPI package name template (for packages like spconv-cu124)
|
|
13
9
|
"""
|
|
14
10
|
|
|
15
11
|
from pathlib import Path
|
|
@@ -34,8 +30,6 @@ def get_cuda_short2(cuda_version: str) -> str:
|
|
|
34
30
|
'124'
|
|
35
31
|
>>> get_cuda_short2("12.8")
|
|
36
32
|
'128'
|
|
37
|
-
>>> get_cuda_short2("11.8")
|
|
38
|
-
'118'
|
|
39
33
|
"""
|
|
40
34
|
parts = cuda_version.split(".")
|
|
41
35
|
major = parts[0]
|
|
@@ -89,3 +83,48 @@ def is_registered(package: str) -> bool:
|
|
|
89
83
|
True if package is registered
|
|
90
84
|
"""
|
|
91
85
|
return package.lower() in PACKAGE_REGISTRY
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def get_wheel_template(package: str) -> Optional[str]:
|
|
89
|
+
"""Get wheel_template for a package.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
package: Package name (case-insensitive)
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
wheel_template string or None if not found/not available
|
|
96
|
+
"""
|
|
97
|
+
info = get_package_info(package)
|
|
98
|
+
if info:
|
|
99
|
+
return info.get("wheel_template")
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_package_name_template(package: str) -> Optional[str]:
|
|
104
|
+
"""Get package_name template for PyPI variant packages (like spconv).
|
|
105
|
+
|
|
106
|
+
Args:
|
|
107
|
+
package: Package name (case-insensitive)
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
package_name template string or None if not found/not available
|
|
111
|
+
"""
|
|
112
|
+
info = get_package_info(package)
|
|
113
|
+
if info:
|
|
114
|
+
return info.get("package_name")
|
|
115
|
+
return None
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def get_default_version(package: str) -> Optional[str]:
|
|
119
|
+
"""Get default_version for a package.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
package: Package name (case-insensitive)
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
default_version string or None if not specified
|
|
126
|
+
"""
|
|
127
|
+
info = get_package_info(package)
|
|
128
|
+
if info:
|
|
129
|
+
return info.get("default_version")
|
|
130
|
+
return None
|
comfy_env/resolver.py
CHANGED
|
@@ -1,30 +1,20 @@
|
|
|
1
1
|
"""
|
|
2
|
-
|
|
2
|
+
Runtime environment detection for wheel resolution.
|
|
3
3
|
|
|
4
|
-
This module provides
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Unlike pip's constraint solver, this module constructs exact URLs from templates
|
|
8
|
-
and validates that they exist. If a wheel doesn't exist, it fails fast with
|
|
9
|
-
a clear error message.
|
|
4
|
+
This module provides RuntimeEnv for detecting the current system environment
|
|
5
|
+
(CUDA version, PyTorch version, Python version, platform).
|
|
10
6
|
|
|
11
7
|
Example:
|
|
12
|
-
from comfy_env.resolver import
|
|
8
|
+
from comfy_env.resolver import RuntimeEnv
|
|
13
9
|
|
|
14
10
|
env = RuntimeEnv.detect()
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
url = resolver.resolve("nvdiffrast", version="0.4.0", env=env)
|
|
18
|
-
# Returns: https://github.com/.../nvdiffrast-0.4.0+cu128torch28-cp310-...-linux_x86_64.whl
|
|
11
|
+
print(f"CUDA: {env.cuda_version}, PyTorch: {env.torch_version}")
|
|
19
12
|
"""
|
|
20
13
|
|
|
21
14
|
import platform
|
|
22
|
-
import re
|
|
23
15
|
import sys
|
|
24
|
-
from dataclasses import dataclass
|
|
25
|
-
from
|
|
26
|
-
from typing import Dict, List, Optional, Tuple
|
|
27
|
-
from urllib.parse import urlparse
|
|
16
|
+
from dataclasses import dataclass
|
|
17
|
+
from typing import Dict, Optional, Tuple
|
|
28
18
|
|
|
29
19
|
from .env.cuda_gpu_detection import detect_cuda_version, detect_gpu_info
|
|
30
20
|
|
|
@@ -106,8 +96,8 @@ class RuntimeEnv:
|
|
|
106
96
|
try:
|
|
107
97
|
gpu_info = detect_gpu_info()
|
|
108
98
|
if gpu_info:
|
|
109
|
-
gpu_name = gpu_info.get("name")
|
|
110
|
-
gpu_compute = gpu_info.get("compute_capability")
|
|
99
|
+
gpu_name = gpu_info[0].get("name") if isinstance(gpu_info, list) else gpu_info.get("name")
|
|
100
|
+
gpu_compute = gpu_info[0].get("compute_capability") if isinstance(gpu_info, list) else gpu_info.get("compute_capability")
|
|
111
101
|
except Exception:
|
|
112
102
|
pass
|
|
113
103
|
|
|
@@ -127,7 +117,6 @@ class RuntimeEnv:
|
|
|
127
117
|
|
|
128
118
|
def as_dict(self) -> Dict[str, str]:
|
|
129
119
|
"""Convert to dict for template substitution."""
|
|
130
|
-
# Extract py_minor from python_version (e.g., "3.10" -> "10")
|
|
131
120
|
py_minor = self.python_version.split(".")[-1] if self.python_version else ""
|
|
132
121
|
|
|
133
122
|
result = {
|
|
@@ -137,20 +126,18 @@ class RuntimeEnv:
|
|
|
137
126
|
"py_version": self.python_version,
|
|
138
127
|
"py_short": self.python_short,
|
|
139
128
|
"py_minor": py_minor,
|
|
140
|
-
"py_tag": f"cp{self.python_short}",
|
|
129
|
+
"py_tag": f"cp{self.python_short}",
|
|
141
130
|
}
|
|
142
131
|
|
|
143
132
|
if self.cuda_version:
|
|
144
133
|
result["cuda_version"] = self.cuda_version
|
|
145
134
|
result["cuda_short"] = self.cuda_short
|
|
146
|
-
# cuda_major: just the major version (e.g., "12" from "12.8")
|
|
147
135
|
result["cuda_major"] = self.cuda_version.split(".")[0]
|
|
148
136
|
|
|
149
137
|
if self.torch_version:
|
|
150
138
|
result["torch_version"] = self.torch_version
|
|
151
139
|
result["torch_short"] = self.torch_short
|
|
152
140
|
result["torch_mm"] = self.torch_mm
|
|
153
|
-
# torch_dotted_mm: "2.8" format (major.minor with dot) for flash-attn URLs
|
|
154
141
|
parts = self.torch_version.split(".")[:2]
|
|
155
142
|
result["torch_dotted_mm"] = ".".join(parts)
|
|
156
143
|
|
|
@@ -173,7 +160,6 @@ def _get_platform_tag() -> str:
|
|
|
173
160
|
machine = platform.machine().lower()
|
|
174
161
|
|
|
175
162
|
if sys.platform.startswith('linux'):
|
|
176
|
-
# Use manylinux tag
|
|
177
163
|
if machine in ('x86_64', 'amd64'):
|
|
178
164
|
return 'linux_x86_64'
|
|
179
165
|
elif machine == 'aarch64':
|
|
@@ -186,7 +172,6 @@ def _get_platform_tag() -> str:
|
|
|
186
172
|
return 'win32'
|
|
187
173
|
|
|
188
174
|
elif sys.platform == 'darwin':
|
|
189
|
-
# macOS - use generic tag
|
|
190
175
|
if machine == 'arm64':
|
|
191
176
|
return 'macosx_11_0_arm64'
|
|
192
177
|
return 'macosx_10_9_x86_64'
|
|
@@ -199,7 +184,6 @@ def _detect_torch_version() -> Optional[str]:
|
|
|
199
184
|
try:
|
|
200
185
|
import torch
|
|
201
186
|
version = torch.__version__
|
|
202
|
-
# Strip CUDA suffix (e.g., "2.8.0+cu128" -> "2.8.0")
|
|
203
187
|
if '+' in version:
|
|
204
188
|
version = version.split('+')[0]
|
|
205
189
|
return version
|
|
@@ -207,166 +191,6 @@ def _detect_torch_version() -> Optional[str]:
|
|
|
207
191
|
return None
|
|
208
192
|
|
|
209
193
|
|
|
210
|
-
@dataclass
|
|
211
|
-
class WheelSource:
|
|
212
|
-
"""Configuration for a wheel source (GitHub releases, custom index, etc.)."""
|
|
213
|
-
name: str
|
|
214
|
-
url_template: str
|
|
215
|
-
packages: List[str] = field(default_factory=list) # Empty = all packages
|
|
216
|
-
|
|
217
|
-
def supports(self, package: str) -> bool:
|
|
218
|
-
"""Check if this source provides the given package."""
|
|
219
|
-
if not self.packages:
|
|
220
|
-
return True # Empty list = supports all
|
|
221
|
-
return package.lower() in [p.lower() for p in self.packages]
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
class WheelResolver:
|
|
225
|
-
"""
|
|
226
|
-
Resolves CUDA wheel URLs from package name and runtime environment.
|
|
227
|
-
|
|
228
|
-
Resolution strategy:
|
|
229
|
-
1. Check explicit overrides in config
|
|
230
|
-
2. Try configured wheel sources in order
|
|
231
|
-
3. Fail with actionable error message
|
|
232
|
-
|
|
233
|
-
This is NOT a constraint solver. It constructs deterministic URLs
|
|
234
|
-
based on exact version matches.
|
|
235
|
-
"""
|
|
236
|
-
|
|
237
|
-
def __init__(
|
|
238
|
-
self,
|
|
239
|
-
sources: Optional[List[WheelSource]] = None,
|
|
240
|
-
overrides: Optional[Dict[str, str]] = None,
|
|
241
|
-
):
|
|
242
|
-
"""
|
|
243
|
-
Initialize resolver.
|
|
244
|
-
|
|
245
|
-
Args:
|
|
246
|
-
sources: List of WheelSource configurations. Defaults to empty
|
|
247
|
-
(use PACKAGE_REGISTRY in install.py for actual sources).
|
|
248
|
-
overrides: Package-specific URL overrides (package -> template).
|
|
249
|
-
"""
|
|
250
|
-
self.sources = sources or []
|
|
251
|
-
self.overrides = overrides or {}
|
|
252
|
-
|
|
253
|
-
def resolve(
|
|
254
|
-
self,
|
|
255
|
-
package: str,
|
|
256
|
-
version: str,
|
|
257
|
-
env: RuntimeEnv,
|
|
258
|
-
verify: bool = False,
|
|
259
|
-
) -> str:
|
|
260
|
-
"""
|
|
261
|
-
Resolve wheel URL for a package.
|
|
262
|
-
|
|
263
|
-
Args:
|
|
264
|
-
package: Package name (e.g., "nvdiffrast").
|
|
265
|
-
version: Package version (e.g., "0.4.0").
|
|
266
|
-
env: Runtime environment for template expansion.
|
|
267
|
-
|
|
268
|
-
Returns:
|
|
269
|
-
Fully resolved wheel URL.
|
|
270
|
-
|
|
271
|
-
Raises:
|
|
272
|
-
WheelNotFoundError: If no wheel URL could be constructed or verified.
|
|
273
|
-
"""
|
|
274
|
-
from .errors import WheelNotFoundError
|
|
275
|
-
|
|
276
|
-
# Prepare template variables
|
|
277
|
-
variables = env.as_dict()
|
|
278
|
-
variables["package"] = package
|
|
279
|
-
variables["version"] = version
|
|
280
|
-
|
|
281
|
-
# 1. Check explicit override
|
|
282
|
-
if package.lower() in self.overrides:
|
|
283
|
-
url = self._substitute(self.overrides[package.lower()], variables)
|
|
284
|
-
if verify and not self._url_exists(url):
|
|
285
|
-
raise WheelNotFoundError(
|
|
286
|
-
package=package,
|
|
287
|
-
version=version,
|
|
288
|
-
env=env,
|
|
289
|
-
tried_urls=[url],
|
|
290
|
-
reason="Override URL returned 404",
|
|
291
|
-
)
|
|
292
|
-
return url
|
|
293
|
-
|
|
294
|
-
# 2. Try wheel sources
|
|
295
|
-
tried_urls = []
|
|
296
|
-
for source in self.sources:
|
|
297
|
-
if not source.supports(package):
|
|
298
|
-
continue
|
|
299
|
-
|
|
300
|
-
url = self._substitute(source.url_template, variables)
|
|
301
|
-
tried_urls.append(url)
|
|
302
|
-
|
|
303
|
-
if verify:
|
|
304
|
-
if self._url_exists(url):
|
|
305
|
-
return url
|
|
306
|
-
else:
|
|
307
|
-
return url
|
|
308
|
-
|
|
309
|
-
# 3. Fail with helpful error
|
|
310
|
-
raise WheelNotFoundError(
|
|
311
|
-
package=package,
|
|
312
|
-
version=version,
|
|
313
|
-
env=env,
|
|
314
|
-
tried_urls=tried_urls,
|
|
315
|
-
reason="No wheel source found for package",
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
def resolve_all(
|
|
319
|
-
self,
|
|
320
|
-
packages: Dict[str, str],
|
|
321
|
-
env: RuntimeEnv,
|
|
322
|
-
verify: bool = False,
|
|
323
|
-
) -> Dict[str, str]:
|
|
324
|
-
"""
|
|
325
|
-
Resolve URLs for multiple packages.
|
|
326
|
-
|
|
327
|
-
Args:
|
|
328
|
-
packages: Dict of package -> version.
|
|
329
|
-
env: Runtime environment.
|
|
330
|
-
verify: Whether to verify URLs exist.
|
|
331
|
-
|
|
332
|
-
Returns:
|
|
333
|
-
Dict of package -> resolved URL.
|
|
334
|
-
|
|
335
|
-
Raises:
|
|
336
|
-
WheelNotFoundError: If any package cannot be resolved.
|
|
337
|
-
"""
|
|
338
|
-
results = {}
|
|
339
|
-
for package, version in packages.items():
|
|
340
|
-
results[package] = self.resolve(package, version, env, verify=verify)
|
|
341
|
-
return results
|
|
342
|
-
|
|
343
|
-
def _substitute(self, template: str, variables: Dict[str, str]) -> str:
|
|
344
|
-
"""
|
|
345
|
-
Substitute variables into URL template.
|
|
346
|
-
|
|
347
|
-
Handles both {var} and {var_name} style placeholders.
|
|
348
|
-
Missing variables are left as-is (caller should validate).
|
|
349
|
-
"""
|
|
350
|
-
result = template
|
|
351
|
-
for key, value in variables.items():
|
|
352
|
-
result = result.replace(f"{{{key}}}", str(value))
|
|
353
|
-
return result
|
|
354
|
-
|
|
355
|
-
def _url_exists(self, url: str, timeout: float = 10.0) -> bool:
|
|
356
|
-
"""
|
|
357
|
-
Check if a URL exists using HTTP HEAD request.
|
|
358
|
-
|
|
359
|
-
Returns True if URL returns 200 OK.
|
|
360
|
-
"""
|
|
361
|
-
try:
|
|
362
|
-
import urllib.request
|
|
363
|
-
request = urllib.request.Request(url, method='HEAD')
|
|
364
|
-
with urllib.request.urlopen(request, timeout=timeout) as response:
|
|
365
|
-
return response.status == 200
|
|
366
|
-
except Exception:
|
|
367
|
-
return False
|
|
368
|
-
|
|
369
|
-
|
|
370
194
|
def parse_wheel_requirement(req: str) -> Tuple[str, Optional[str]]:
|
|
371
195
|
"""
|
|
372
196
|
Parse a wheel requirement string.
|
|
@@ -379,7 +203,6 @@ def parse_wheel_requirement(req: str) -> Tuple[str, Optional[str]]:
|
|
|
379
203
|
Returns:
|
|
380
204
|
Tuple of (package_name, version_or_None).
|
|
381
205
|
"""
|
|
382
|
-
# Handle version specifiers
|
|
383
206
|
for op in ['==', '>=', '<=', '~=', '!=', '>', '<']:
|
|
384
207
|
if op in req:
|
|
385
208
|
parts = req.split(op, 1)
|
comfy_env/wheel_sources.yml
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Wheel sources registry for CUDA packages
|
|
2
2
|
#
|
|
3
|
+
# Each package has a single wheel_template that resolves to a direct .whl URL.
|
|
4
|
+
# Users can override these in their comfy-env.toml [wheel_sources] section.
|
|
5
|
+
#
|
|
3
6
|
# Template variables:
|
|
7
|
+
# {version} - Package version (e.g., "0.4.0")
|
|
4
8
|
# {cuda_version} - Full CUDA version (e.g., "12.8")
|
|
5
9
|
# {cuda_short} - CUDA without dot (e.g., "128")
|
|
6
|
-
# {cuda_short2} - CUDA short for spconv (e.g., "124" not "1240")
|
|
7
10
|
# {cuda_major} - CUDA major version (e.g., "12")
|
|
8
11
|
# {torch_version} - Full PyTorch version (e.g., "2.8.0")
|
|
9
12
|
# {torch_short} - PyTorch without dots (e.g., "280")
|
|
@@ -14,173 +17,119 @@
|
|
|
14
17
|
# {py_minor} - Python minor version only (e.g., "10")
|
|
15
18
|
# {py_tag} - Python tag (e.g., "cp310")
|
|
16
19
|
# {platform} - Platform tag (e.g., "linux_x86_64")
|
|
17
|
-
#
|
|
18
|
-
# Install methods:
|
|
19
|
-
# index - pip --extra-index-url (PEP 503)
|
|
20
|
-
# find_links - pip --find-links
|
|
21
|
-
# github_index - GitHub Pages index (--find-links)
|
|
22
|
-
# pypi_variant - Package name varies by CUDA (e.g., spconv-cu124)
|
|
23
|
-
# github_release - Direct wheel URL from GitHub releases
|
|
24
|
-
# pypi - Standard PyPI install
|
|
25
20
|
|
|
26
21
|
packages:
|
|
27
22
|
# ===========================================================================
|
|
28
|
-
# PyTorch Geometric (PyG) - official
|
|
23
|
+
# PyTorch Geometric (PyG) - official wheels
|
|
29
24
|
# https://pytorch-geometric.readthedocs.io/en/latest/install/installation.html
|
|
30
25
|
# ===========================================================================
|
|
31
26
|
torch-scatter:
|
|
32
|
-
|
|
33
|
-
index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
|
|
27
|
+
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_scatter-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
34
28
|
description: Scatter operations for PyTorch
|
|
35
29
|
|
|
36
30
|
torch-cluster:
|
|
37
|
-
|
|
38
|
-
index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
|
|
31
|
+
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_cluster-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
39
32
|
description: Clustering algorithms for PyTorch
|
|
40
33
|
|
|
41
34
|
torch-sparse:
|
|
42
|
-
|
|
43
|
-
index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
|
|
35
|
+
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_sparse-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
44
36
|
description: Sparse tensor operations for PyTorch
|
|
45
37
|
|
|
46
38
|
torch-spline-conv:
|
|
47
|
-
|
|
48
|
-
index_url: "https://data.pyg.org/whl/torch-{torch_version}+cu{cuda_short}.html"
|
|
39
|
+
wheel_template: "https://data.pyg.org/whl/torch-{torch_version}%2Bcu{cuda_short}/torch_spline_conv-{version}%2Bpt{torch_mm}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
49
40
|
description: Spline convolutions for PyTorch
|
|
50
41
|
|
|
51
42
|
# ===========================================================================
|
|
52
|
-
#
|
|
53
|
-
# https://
|
|
43
|
+
# PozzettiAndrea cuda-wheels (GitHub releases)
|
|
44
|
+
# https://github.com/PozzettiAndrea/cuda-wheels/releases
|
|
54
45
|
# ===========================================================================
|
|
55
46
|
pytorch3d:
|
|
56
|
-
|
|
57
|
-
index_url: "https://pozzettiandrea.github.io/cuda-wheels"
|
|
58
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/pytorch3d/pytorch3d-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
47
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/pytorch3d-latest/pytorch3d-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
59
48
|
default_version: "0.7.9"
|
|
60
49
|
description: PyTorch3D - 3D deep learning library
|
|
61
50
|
|
|
62
|
-
# ===========================================================================
|
|
63
|
-
# PozzettiAndrea cuda-wheels (unified PEP 503 index)
|
|
64
|
-
# https://pozzettiandrea.github.io/cuda-wheels
|
|
65
|
-
# Wheel naming: {package}-{version}+cu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl
|
|
66
|
-
# ===========================================================================
|
|
67
51
|
nvdiffrast:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/nvdiffrast/nvdiffrast-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
52
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/nvdiffrast-latest/nvdiffrast-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
53
|
+
default_version: "0.4.0"
|
|
71
54
|
description: NVIDIA differentiable rasterizer
|
|
72
55
|
|
|
73
56
|
cumesh:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/cumesh/cumesh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
57
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cumesh-latest/cumesh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
58
|
+
default_version: "0.0.1"
|
|
77
59
|
description: CUDA-accelerated mesh utilities
|
|
78
60
|
|
|
79
61
|
cubvh:
|
|
80
|
-
|
|
81
|
-
|
|
62
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cubvh-latest/cubvh-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
63
|
+
default_version: "0.1.2"
|
|
82
64
|
description: CUDA BVH acceleration for mesh operations and marching cubes
|
|
83
65
|
|
|
84
66
|
o_voxel:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/o-voxel/o_voxel-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
67
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/o_voxel-latest/o_voxel-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
68
|
+
default_version: "0.0.1"
|
|
88
69
|
description: O-Voxel CUDA extension for TRELLIS
|
|
89
70
|
|
|
90
71
|
flex_gemm:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/flex-gemm/flex_gemm-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
72
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/flex_gemm-latest/flex_gemm-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
73
|
+
default_version: "1.0.0"
|
|
94
74
|
description: Flexible GEMM operations
|
|
95
75
|
|
|
96
76
|
nvdiffrec_render:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/nvdiffrec-render/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
77
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/nvdiffrec_render-latest/nvdiffrec_render-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
78
|
+
default_version: "0.0.1"
|
|
100
79
|
description: NVDiffRec rendering utilities
|
|
101
80
|
|
|
102
81
|
gsplat:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/gsplat/gsplat-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
82
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/gsplat-latest/gsplat-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
83
|
+
default_version: "1.5.3"
|
|
106
84
|
description: Gaussian splatting rasterization
|
|
107
85
|
|
|
108
86
|
cc_torch:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/cc-torch/cc_torch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
87
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/cc_torch-latest/cc_torch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
88
|
+
default_version: "0.2"
|
|
112
89
|
description: GPU-accelerated connected components
|
|
113
90
|
|
|
114
91
|
torch_generic_nms:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/torch-generic-nms/torch_generic_nms-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
92
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/torch_generic_nms-latest/torch_generic_nms-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
93
|
+
default_version: "0.1"
|
|
118
94
|
description: GPU-accelerated Non-Maximum Suppression
|
|
119
95
|
|
|
120
96
|
lietorch:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/lietorch/lietorch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
97
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/lietorch-latest/lietorch-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
98
|
+
default_version: "0.3"
|
|
124
99
|
description: Lie group operations for PyTorch (DPVO dependency)
|
|
125
100
|
|
|
126
|
-
dpvo-cuda:
|
|
127
|
-
method: index
|
|
128
|
-
index_url: "https://pozzettiandrea.github.io/cuda-wheels"
|
|
129
|
-
wheel_template: "https://pozzettiandrea.github.io/cuda-wheels/dpvo_cuda/dpvo_cuda-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
130
|
-
default_version: "1.0.0"
|
|
131
|
-
description: DPVO CUDA extensions (cuda_corr, cuda_ba, lietorch_backends)
|
|
132
|
-
|
|
133
|
-
# ===========================================================================
|
|
134
|
-
# spconv - PyPI with CUDA-versioned package names
|
|
135
|
-
# ===========================================================================
|
|
136
|
-
spconv:
|
|
137
|
-
method: pypi_variant
|
|
138
|
-
package_template: "spconv-cu{cuda_short2}"
|
|
139
|
-
description: Sparse convolution library (use spconv-cu126 for CUDA 12.6+)
|
|
140
|
-
|
|
141
|
-
# ===========================================================================
|
|
142
|
-
# sageattention - Fast quantized attention
|
|
143
|
-
# ===========================================================================
|
|
144
101
|
sageattention:
|
|
145
|
-
|
|
146
|
-
|
|
102
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/sageattention-latest/sageattention-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
103
|
+
default_version: "2.2.0"
|
|
147
104
|
description: SageAttention - 2-5x faster than FlashAttention with quantized kernels
|
|
148
105
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
method: pypi
|
|
154
|
-
description: Triton compiler for custom CUDA kernels
|
|
106
|
+
dpvo_cuda:
|
|
107
|
+
wheel_template: "https://github.com/PozzettiAndrea/cuda-wheels/releases/download/dpvo_cuda-latest/dpvo_cuda-{version}%2Bcu{cuda_short}torch{torch_mm}-{py_tag}-{py_tag}-{platform}.whl"
|
|
108
|
+
default_version: "0.0.0"
|
|
109
|
+
description: DPVO CUDA extensions (cuda_corr, cuda_ba, lietorch_backends) - torch 2.4 only
|
|
155
110
|
|
|
156
111
|
# ===========================================================================
|
|
157
112
|
# detectron2 - Facebook's detection library
|
|
158
113
|
# https://github.com/facebookresearch/detectron2
|
|
159
114
|
# Prebuilt wheels from miropsota's torch_packages_builder
|
|
160
|
-
# Version format: 0.6+<commit>pt<torch_version>cu<cuda_short>
|
|
161
115
|
# ===========================================================================
|
|
162
116
|
detectron2:
|
|
163
|
-
|
|
164
|
-
index_url: "https://miropsota.github.io/torch_packages_builder"
|
|
165
|
-
version_template: "0.6+2a420edpt{torch_version}cu{cuda_short}"
|
|
117
|
+
wheel_template: "https://miropsota.github.io/torch_packages_builder/detectron2/detectron2-0.6%2B2a420edpt{torch_version}cu{cuda_short}-{py_tag}-{py_tag}-{platform}.whl"
|
|
166
118
|
description: Detectron2 - Facebook's detection and segmentation library
|
|
167
119
|
|
|
168
120
|
# ===========================================================================
|
|
169
|
-
# flash-attn -
|
|
121
|
+
# flash-attn - Dao-AILab (Linux x86_64)
|
|
122
|
+
# For other platforms, users should add custom wheel_source in their config
|
|
170
123
|
# ===========================================================================
|
|
171
124
|
flash-attn:
|
|
172
|
-
|
|
173
|
-
description: Flash Attention for fast transformer inference
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
platforms: [win_amd64]
|
|
184
|
-
- name: bdashore3
|
|
185
|
-
url_template: "https://github.com/bdashore3/flash-attention/releases/download/v{version}/flash_attn-{version}%2Bcu{cuda_short}torch{torch_version}cxx11abiFALSE-{py_tag}-{py_tag}-win_amd64.whl"
|
|
186
|
-
platforms: [win_amd64]
|
|
125
|
+
wheel_template: "https://github.com/Dao-AILab/flash-attention/releases/download/v{version}/flash_attn-{version}%2Bcu{cuda_major}torch{torch_dotted_mm}cxx11abiTRUE-{py_tag}-{py_tag}-linux_x86_64.whl"
|
|
126
|
+
description: Flash Attention for fast transformer inference (Linux x86_64)
|
|
127
|
+
|
|
128
|
+
# ===========================================================================
|
|
129
|
+
# spconv - Sparse convolution library
|
|
130
|
+
# PyPI with CUDA-versioned package names (spconv-cu124, spconv-cu126, etc.)
|
|
131
|
+
# Note: This uses a special package_name field, not wheel_template
|
|
132
|
+
# ===========================================================================
|
|
133
|
+
spconv:
|
|
134
|
+
package_name: "spconv-cu{cuda_short2}"
|
|
135
|
+
description: Sparse convolution library (installs spconv-cu124, spconv-cu126, etc.)
|