Skip to content

kernel-abi-check: add support for checking that a kernel does not use non-stable Torch ABI symbols#591

Open
danieldk wants to merge 2 commits into
mainfrom
torch-stable-abi-check
Open

kernel-abi-check: add support for checking that a kernel does not use non-stable Torch ABI symbols#591
danieldk wants to merge 2 commits into
mainfrom
torch-stable-abi-check

Conversation

@danieldk
Copy link
Copy Markdown
Member

And wire up in the nix-builder.

@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.6% — threshold: 80% — ✅

Per-file breakdown
Name Stmts Miss Cover Missing
src/kernels/__init__.py 9 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 281 54 81% 57, 69-73, 79-80, 205, 209, 212, 274, 299-300, 338, 367, 372, 406, 578, 581, 583, 589, 602-603, 624-631, 635-642, 650, 654-664, 668-675, 713, 717, 736, 738
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 1639 269 84%

Updated by the Test kernels workflow on commit 8c0742f191cc99828c5c2aef48f6387b9cb5705e.

Copy link
Copy Markdown
Member

@sayakpaul sayakpaul left a comment

Choose a reason for hiding this comment

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

Not a merge blocker but would it make sense to add check_torch_stable_abi() to the Python bindings?


use crate::version::Version;

// https://raw.githubusercontent.com/pytorch/pytorch/refs/heads/main/torch/csrc/stable/c/shim_function_versions.txt
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

(nit): Could use the permalink.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I didn't make it a permalink, because we typically want to use the URL to get the latest version and update our copy.

@@ -0,0 +1,114 @@
# Auto-generated file listing shim functions and their minimum required versions
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How do we ensure this is also the latest stable?

Copy link
Copy Markdown
Member Author

@danieldk danieldk May 27, 2026

Choose a reason for hiding this comment

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

Same question for the manylinux and Python ABI3 files. We should probably have a CI job to check for this and maybe make a PR automatically one one of the files is outdated.

print_torch_stable_abi_violations(&torch_stable_abi_violations, &torch_stable_abi);

if !torch_stable_abi_violations.is_empty() {
return Err(eyre::eyre!("Torch stable ABI compatibility issues found"));
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
return Err(eyre::eyre!("Torch stable ABI compatibility issues found"));
return Err(eyre::eyre!("Torch stable ABI compatibility issues found"));

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Already printed with an stop sign below.

Ok(())
}

fn print_torch_stable_abi_violations(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ouf, this is superb!

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