Skip to content

Add Helion as a supported Python dependency#706

Merged
sayakpaul merged 2 commits into
mainfrom
add-helion-dependency
Jul 11, 2026
Merged

Add Helion as a supported Python dependency#706
sayakpaul merged 2 commits into
mainfrom
add-helion-dependency

Conversation

@sayakpaul

@sayakpaul sayakpaul commented Jul 9, 2026

Copy link
Copy Markdown
Member

What does this PR do?

Fixes #686

Adds Helion to the supported python-depends list so that Helion kernels can be built and published as noarch kernels:

[general]
backends = ["cuda", "rocm", "xpu"]
python-depends = ["helion"]

[torch-noarch]

Helion kernels are pure Python (Triton-based, JIT-compiled at runtime, with optional pretuned/AOT heuristics shipped as .py files 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) declaring backends = ["cuda", "rocm", "xpu"] and python-depends = ["helion"]:

  • Bundle evaluates to all three noarch variants (torch-cuda, torch-rocm, torch-xpu) on x86_64-linux; without the overlay override, ROCm/XPU evaluation fails on the nixpkgs broken flag.
  • The torch-cuda variant builds on aarch64-linux, passes get-kernel-check (which imports the kernel, and therefore Helion, inside the sandbox), and records "python-depends": ["helion"] in metadata.json.
  • The built variant loads through kernels.get_local_kernel and produces correct results on an NVIDIA GB10.
  • Helion's pretuned/AOT flow (helion.experimental.aot_kernel + _helion_aot_*_sm<NN>.py heuristic 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

  • Helion requires torch >= 2.9 but does not declare it as a dependency (peer dep); the builder's Torch range satisfies this.
  • nixpkgs is at Helion 1.0.0 while PyPI is at 1.2.0; if newer features are ever needed at build-check time, the overlay can bump the version.

Generated kernel: https://huggingface.co/kernels/sayakpaul/vector-add-helion

🤖 Generated with Claude Code. Edited by me (Sayak)

@HuggingFaceDocBuilderDev

Copy link
Copy Markdown

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.

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

Coverage report — kernels/

Measured on: Python 3.10 / Torch 2.12.0.
Other CI configurations are not included in this number.
Hardware-gated code paths (ROCm/XPU/NPU/Darwin/Windows) are excluded or unreachable on the Linux+CUDA runner.

Total coverage: 84.6% — threshold: 80% — ✅

Per-file breakdown
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.

@sayakpaul

Copy link
Copy Markdown
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(...)

sayakpaul and others added 2 commits July 10, 2026 13:27
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>
@drbh drbh force-pushed the add-helion-dependency branch from 1518460 to 2839c9b Compare July 10, 2026 17:28

@drbh drbh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me! (rebased and waiting to see if CI is green now)

@sayakpaul sayakpaul merged commit 570dcf4 into main Jul 11, 2026
54 checks passed
@sayakpaul sayakpaul deleted the add-helion-dependency branch July 11, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Helion kernels

3 participants