Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .agent/skills/sass-diff/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: sass-diff
description: Use when asked to check for SASS (or PTX) changes between commits, branches, or a local changeset; guides normalization, comparison, and reporting of CUDA disassembly diffs.
---

# SASS Diffs

Use this when asked to check for SASS changes between commits, branches or a local changeset.

## Goal

Detect relevant changes in generated CUDA machine code (i.e. SASS) while filtering noise from addresses, symbols, metadata, etc.
Any non-trivial change must be detected.

## Inputs to establish

* Compilation target under test
* The CUDA SM architectures to compile for. Try to detect this from the code and offer the user a list of suggestions.
The user must confirm or provide this list.
Comment on lines +18 to +19

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I would note that the bot should also check the compile_commands.json to get a definitive answer for this. The architectures will be listed explicitly in the compiler flags.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No it shouldn't. compile_commands.json is what the user compiles for but not necessarily what SM architectures you want to SASS diff. For example, I develop with only SM120 in CMAKE_CUDA_ARCHITECTURES, but every time I SASS-diff I lookup in the tuning headers what SM arches could be impacted by the change and then ask to diff for those.

@bernhardmgruber bernhardmgruber Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think I understand now, reworded a bit.

Comment thread
bernhardmgruber marked this conversation as resolved.
* Baseline source (e.g. the previous commit/branch or the current commit without the changes in the working copy).
* Comparison source (e.g. the current commit/branch or the current commit with the changes in the working copy).
* Whether a SASS (default) or PTX diff is requested.

Comment thread
coderabbitai[bot] marked this conversation as resolved.
## Disassembly listing generation

* Compile both, the baseline and comparison source, with the same compiler flags and options.
When not specified otherwise, lookup the options from `compile_commands.json`
or the current build system (i.e. CMake files).
Make sure the CUDA SM architectures (`CMAKE_CUDA_ARCHITECTURES`) are set to the user-provided or approved list.
* Dump the disassembly from the binaries produced in the previous set using `cuobjdump -sass` or `cuobjdump -ptx`.

## Comparison rules (what matters)

Ignore as trivial:

* Register renaming with identical instruction sequence and operands.
* Pure label renumbering or reordering of identical basic blocks.
* Formatting-only differences or reordered symbol tables.
* Changes to symbol names (global function names)

## Reporting

* If any non-trivial change was detected, report the top 5 regions where a non-trivial change was detected,
including the name of the kernel they appeared in.
* Provide a short summary of the diff type,
including opcode changes, memory access size/cache policy changes, control-flow changes, register-count changes,
spills/local memory, shared memory, and occupancy-relevant resource deltas.
* Explicitly state if only noise was detected.
* If you are not sure if the differences are impactful, show it and ask the user for guidance.
* Keep the disassembly dumps available and tell the user where they can find them.
48 changes: 0 additions & 48 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,54 +273,6 @@ Test organization:

---

## SASS Diffs

Use this test when asked to check for SASS changes between commits, branches or a local changeset.

### Goal

Detect relevant changes in generated CUDA machine code (i.e. SASS) while filtering noise from addresses, symbols, metadata, etc.
Any non-trivial change must be detected.

### Inputs to establish

* Compiled binary under test
* The CUDA SM architectures to compile for. Try to detect this from the code and offer the user a list of suggestions.
The user must conform or provide this list.
* Baseline disassembly (from the previous commit/branch or the current commit without the changes in the working copy).
* Comparison disassembly (form the current commit/branch or the current commit with the changes in the working copy).
* By default, prefer `cuobjdump -sass` to inspect SASS changes.
Use `cuobjdump -ptx` if the request is to check for PTX changes instead.

### Normalization rules (strip known noise)

Apply these transforms to both baseline and candidate listings before diffing.
Write the normalized listings to separate files.

* Remove addresses/offsets/hex location prefixes.
* Remove build IDs, timestamps, absolute paths, temp directories, and compiler banners.
* Normalize whitespace and alignment to single spaces.
* Remove empty lines and purely comment lines.

### Comparison rules (what matters)

Ignore as trivial:

* Register renaming with identical instruction sequence and operands.
* Pure label renumbering or reordering of identical basic blocks.
* Formatting-only differences or reordered symbol tables.

### Reporting

* If any non-trivial change was detected, the top 5 regions where a non-trivial change was detected,
including the name of the kernel they appeared in.
* A short summary of the diff type (opcode change, memory access size change, size delta, control-flow, etc.).
* Explicitly state if only noise was detected after normalization.
* If you are not sure if the differences are impactful, show it and ask the user for guidance.
* Keep the disassembly dumps available for reference and show the command to the user to generate a diff.

---

## Continuous Integration (CI)

See `ci-overview.md` for detailed examples and troubleshooting guidance.
Expand Down
Loading