Add Helion as a supported Python dependency#706
Merged
Conversation
|
The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update. |
Coverage report —
|
| Name | Stmts | Miss | Cover | Missing |
|---|---|---|---|---|
| src/kernels/__init__.py | 10 | 0 | 100% | |
| src/kernels/_system.py | 6 | 1 | 83% | 10 |
| src/kernels/_versions.py | 63 | 7 | 89% | 46, 49, 52-53, 56-57, 100 |
| src/kernels/backends.py | 194 | 55 | 72% | 40, 44, 48-51, 68, 90, 108, 117, 121, 125-127, 148, 170, 181, 188-191, 201, 205-225, 233, 256-276 |
| src/kernels/compat.py | 8 | 1 | 88% | 5 |
| src/kernels/deps.py | 54 | 4 | 93% | 58-59, 95, 98 |
| src/kernels/layer/__init__.py | 6 | 0 | 100% | |
| src/kernels/layer/_interval_tree.py | 103 | 4 | 96% | 23, 52, 147, 150 |
| src/kernels/layer/device.py | 48 | 14 | 71% | 42, 47-49, 91, 96-98, 101, 149, 152, 155-157 |
| src/kernels/layer/func.py | 81 | 7 | 91% | 81, 111, 183, 301, 307, 320, 338 |
| src/kernels/layer/globals.py | 5 | 0 | 100% | |
| src/kernels/layer/kernelize.py | 74 | 8 | 89% | 255, 281, 289-290, 296, 300, 316-318 |
| src/kernels/layer/layer.py | 210 | 16 | 92% | 167, 210, 216, 229, 337, 417-418, 430, 439, 447, 458, 487, 491, 504, 557, 587 |
| src/kernels/layer/mode.py | 14 | 0 | 100% | |
| src/kernels/layer/repos.py | 130 | 34 | 74% | 27, 33, 36-41, 61-62, 68, 71-74, 88, 92, 101-102, 108, 111-114, 121-122, 128, 131-134, 141-142, 148, 151-154, 235 |
| src/kernels/lockfile.py | 71 | 46 | 35% | 37-104, 108-131 |
| src/kernels/status.py | 49 | 2 | 96% | 23, 81 |
| src/kernels/utils.py | 301 | 55 | 82% | 65, 77-81, 87-88, 218, 222, 225, 287, 295, 334-335, 373, 404, 409, 444, 673, 676, 678, 684, 697-698, 719-731, 735-742, 750, 754-764, 768-775, 813, 817, 836, 838 |
| src/kernels/variants.py | 262 | 19 | 93% | 56, 87, 108, 138, 247-248, 289, 291, 371-378, 384-390, 421-427, 439-445, 534-536 |
| src/kernels/verify.py | 88 | 1 | 99% | 32 |
| TOTAL | 1777 | 274 | 85% |
Updated by the Test kernels workflow on commit 2839c9b08a5afc85629de024ce9e7f133b9c1181.
Member
Author
|
Example kernel: https://huggingface.co/kernels/sayakpaul/vector-add-helion Try it: from kernels import get_kernel
kernel_module = get_kernel("sayakpaul/vector-add-helion", version=1)
vector_add = kernel_module.vector_add
vector_add(...) |
Helion kernels are pure-Python (Triton-based, JIT-compiled at runtime), so they build as noarch kernels. The pinned nixpkgs already ships python3Packages.helion (1.0.0, pytorch/helion), and it resolves torch through the Python package fixpoint, so it pairs with the builder's own torch variants. Verified end-to-end with a vector-add Helion kernel: builds as a torch-cuda noarch variant, passes get-kernel-check, records python-depends in metadata.json, and runs correctly through kernels.get_local_kernel on a GB10 GPU. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
nixpkgs marks Helion as broken without cudaSupport, but Helion also supports ROCm and XPU through Triton, so noarch kernels declaring those backends failed to evaluate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1518460 to
2839c9b
Compare
drbh
approved these changes
Jul 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Fixes #686
Adds Helion to the supported
python-dependslist so that Helion kernels can be built and published as noarch kernels:Helion kernels are pure Python (Triton-based, JIT-compiled at runtime, with optional pretuned/AOT heuristics shipped as
.pyfiles next to the kernel source), so no new build machinery is needed — only a dependency-registry entry.Verification
Tested end-to-end with a Helion vector-add kernel (based on Helion's pretuned
vector_add) declaringbackends = ["cuda", "rocm", "xpu"]andpython-depends = ["helion"]:torch-cuda,torch-rocm,torch-xpu) on x86_64-linux; without the overlay override, ROCm/XPU evaluation fails on the nixpkgs broken flag.torch-cudavariant builds on aarch64-linux, passesget-kernel-check(which imports the kernel, and therefore Helion, inside the sandbox), and records"python-depends": ["helion"]inmetadata.json.kernels.get_local_kerneland produces correct results on an NVIDIA GB10.helion.experimental.aot_kernel+_helion_aot_*_sm<NN>.pyheuristic files, available since Helion 1.0.0) also works from a package dir: on sm121 it falls back to the sm100 heuristics and runs correctly.Notes
torch >= 2.9but does not declare it as a dependency (peer dep); the builder's Torch range satisfies this.Generated kernel: https://huggingface.co/kernels/sayakpaul/vector-add-helion
🤖 Generated with Claude Code. Edited by me (Sayak)