Skip to content

feat: implement get-kernel-variants#595

Merged
sayakpaul merged 1 commit into
mainfrom
get-kernel-variants
May 28, 2026
Merged

feat: implement get-kernel-variants#595
sayakpaul merged 1 commit into
mainfrom
get-kernel-variants

Conversation

@sayakpaul
Copy link
Copy Markdown
Member

@sayakpaul sayakpaul commented May 28, 2026

As discussed internally.

User code:

from kernels import get_kernel_variants, VariantAccepted

for decision in get_kernel_variants("kernels-community/activation", version=1):
    name = decision.variant.variant_str
    if isinstance(decision, VariantAccepted):
        print(f"{name}: compatible")
    else:
        print(f"{name}: rejected ({decision.reason})")

or do we want it more simplified?

Sample output:
torch211-cxx11-cu128-x86_64-linux: compatible
torch211-cxx11-cu126-x86_64-linux: compatible
torch28-cxx11-cu129-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu129-x86_64-linux: rejected (Torch version (2.9) does not match environment Torch version (2.11))
torch29-cxx11-cu129-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch28-cxx11-cu129-x86_64-linux: rejected (Torch version (2.8) does not match environment Torch version (2.11))
torch210-cxx11-cu128-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch28-cxx11-cu128-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu128-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch211-cu128-x86_64-windows: rejected (OS (windows) does not match system OS (linux))
torch211-cxx11-cu128-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch27-cxx11-cu128-x86_64-linux: rejected (Torch version (2.7) does not match environment Torch version (2.11))
torch27-cxx11-cu118-x86_64-linux: rejected (Torch version (2.7) does not match environment Torch version (2.11))
torch210-cu128-x86_64-windows: rejected (OS (windows) does not match system OS (linux))
torch28-cxx11-cu128-x86_64-linux: rejected (Torch version (2.8) does not match environment Torch version (2.11))
torch27-cxx11-cu128-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu128-x86_64-linux: rejected (Torch version (2.9) does not match environment Torch version (2.11))
torch210-cxx11-cu128-x86_64-linux: rejected (Torch version (2.10) does not match environment Torch version (2.11))
torch211-cxx11-cu126-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch210-cxx11-cu126-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu126-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch212-cxx11-cu126-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch210-cxx11-cu126-x86_64-linux: rejected (Torch version (2.10) does not match environment Torch version (2.11))
torch28-cxx11-cu126-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch212-cxx11-cu126-x86_64-linux: rejected (Torch version (2.12) does not match environment Torch version (2.11))
torch28-cxx11-cu126-x86_64-linux: rejected (Torch version (2.8) does not match environment Torch version (2.11))
torch27-cxx11-cu126-x86_64-linux: rejected (Torch version (2.7) does not match environment Torch version (2.11))
torch29-cxx11-cu126-x86_64-linux: rejected (Torch version (2.9) does not match environment Torch version (2.11))
torch212-cxx11-cu132-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch212-cxx11-cu132-x86_64-linux: rejected (Torch version (2.12) does not match environment Torch version (2.11))
torch210-cxx11-cu130-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu130-x86_64-linux: rejected (Torch version (2.9) does not match environment Torch version (2.11))
torch212-metal-aarch64-darwin: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-metal-aarch64-darwin: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch212-cxx11-cu130-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch211-cxx11-cu130-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch210-metal-aarch64-darwin: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch29-cxx11-cu130-aarch64-linux: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch211-metal-aarch64-darwin: rejected (CPU (aarch64) does not match system CPU (x86_64))
torch210-cxx11-cu130-x86_64-linux: rejected (Torch version (2.10) does not match environment Torch version (2.11))
torch211-cxx11-cu130-x86_64-linux: rejected (CUDA version (13.0) is not compatible with system CUDA version (12.9))
torch212-cxx11-cu130-x86_64-linux: rejected (Torch version (2.12) does not match environment Torch version (2.11))

@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
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: 83.4% — 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, 79, 95
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 91 7 92% 72, 100, 154, 257, 263, 272, 290
src/kernels/layer/globals.py 5 0 100%
src/kernels/layer/kernelize.py 73 8 89% 255, 273, 281-282, 288, 292, 308-310
src/kernels/layer/layer.py 174 15 91% 156, 199, 205, 214, 306-307, 319, 328, 336, 347, 376, 380, 393, 446, 476
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 69 44 36% 37-98, 102-125
src/kernels/status.py 49 2 96% 23, 81
src/kernels/utils.py 287 59 79% 59, 71-75, 81-82, 207, 211, 214, 276, 301-302, 340, 369, 374, 408, 585-590, 616, 619, 621, 627, 640-641, 662-669, 673-680, 688, 692-702, 706-713, 751, 755, 774, 776
src/kernels/variants.py 262 19 93% 56, 87, 108, 138, 247-248, 289, 291, 371-378, 384-390, 421-427, 439-445, 533-535
TOTAL 1646 274 83%

Updated by the Test kernels workflow on commit b409adb89d93390c6e4af45531a16d07a16b2392.

@sayakpaul sayakpaul marked this pull request as ready for review May 28, 2026 10:29
Copy link
Copy Markdown
Member

@danieldk danieldk left a comment

Choose a reason for hiding this comment

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

Love it, so clean!

@sayakpaul sayakpaul merged commit 0ca3b4d into main May 28, 2026
71 checks passed
@sayakpaul sayakpaul deleted the get-kernel-variants branch May 28, 2026 10:51
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.

3 participants