Skip to content

kernel-builder: support specifying backend archs for noarch kernels#668

Open
danieldk wants to merge 1 commit into
mainfrom
noarch-capabilities-take2
Open

kernel-builder: support specifying backend archs for noarch kernels#668
danieldk wants to merge 1 commit into
mainfrom
noarch-capabilities-take2

Conversation

@danieldk

Copy link
Copy Markdown
Member

So far, we have assumed that noarch kernels work on all GPU architectures for a supported backend. However, some noarch kernels work on a more limited set of hardware. This change adds options to the torch-noarch section to indicate which archs are supported, which are then written to the kernel metadata.

Ideally we'd keep this path the same as arch kernels, where the capabilities are computed and written to metadata at build-time. However, this turns out to be quite tedious.

This PR lets kernel-builder write it to metadata, but keeps noarch vs arch handling out of the common paths, keeping the functions in common as generic is possible.

Instead, we move some of the code to the kernels-data crate. The Metadata struct gets a new for_backend constructor that creates the metadata for a given build configuration and backend.

So far, we have assumed that noarch kernels work on all GPU
architectures for a supported backend. However, some noarch kernels work
on a more limited set of hardware. This change adds options to the
`torch-noarch` section to indicate which archs are supported, which are
then written to the kernel metadata.

Ideally we'd keep this path the same as arch kernels, where the
capabilities are computed and written to metadata at build-time.
However, this turns out to be quite tedious.

This PR lets kernel-builder write it to metadata, but keeps noarch vs
arch handling out of the common paths, keeping the functions in `common`
as generic is possible.

Instead, we move some of the code to the `kernels-data` crate. The
`Metadata` struct gets a new `for_backend` constructor that creates the
metadata for a given build configuration and backend.

Co-authored-by: Sayak Paul <spsayakpaul@gmail.com>
@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: 84.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, 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 93 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% 166, 209, 215, 228, 320-321, 333, 342, 350, 361, 390, 394, 407, 460, 490
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 1752 273 84%

Updated by the Test kernels workflow on commit e0ab830ec91514985da74018fc8190ae1476720a.

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.

2 participants