RDNA35 PISA Runtime Report
The node that catches a benchmark lying to you — PISA runtime verification for ComfyUI
- model
- latent
- latent
- report
Here's a failure mode you've probably hit without realizing it: you wire a sparse-attention patch into your workflow, the generation finishes, and you proudly log the wall-clock time - never checking whether the patch actually ran or quietly fell back to dense attention on every single call. RDNA35 PISA Runtime Report exists to make that embarrassing mistake structurally impossible. Feed it the patched model and your latent, and it either confirms the PISA path executed as expected or throws an error in your face.
How it works
The pack's PISA patch nodes (RDNA35 Patch PISA Attention, and the generic path) attach a runtime accounting state to the model they clone - the README calls it PISA_RUNTIME_ATTACHMENT. Every PISA-eligible self-attention call records which layer it hit, and every fallback records why. This node reads that state and verifies three things:
- PISA actually ran. Zero recorded hits → it raises "INVALID BENCHMARK: PISA backend was not executed" with the report. This is the check that catches the fallback-everything case.
- The right layers ran. At the default Anima profile, it expects hits on exactly layers 20–27 (from the 28 Anima blocks), and no cross-attention or eligible-fallback calls.
- The counts are consistent. Every patched layer must have been called the same number of times across your generation, and that count must match the forward structure the verifier expects - the README says the runtime verifier expects eight PISA self-attention calls per model forward for the default profile.
If anything fails, it raises with the full report rather than letting you walk away with a garbage number. If it passes, it returns the report STRING.
The inputs and outputs
Two inputs: model (the patched MODEL - wire the same model you sent through your sampler) and latent (your LATENT, passed through untouched). Outputs are latent (pass-through, so you can keep the graph flowing) and report - the STRING that also shows in the UI text panel. It's an output node. There's nothing to tune, no toggles, no settings.
Why you should care
This is the integrity gate for every PISA benchmark workflow in the pack. The README is explicit that the progress bar is not a valid GPU timing source on asynchronous attention paths - you need synchronized end-to-end timing or GPU events, and you need to know the path you timed was actually the path you wanted. PISA is approximate and opt-in, so a fallback isn't a crash; it's a silent, correct-looking dense run that ruins your benchmark by making PISA look slower (or your fallback look like a win). The Runtime Report is the difference between "PISA benchmark: 129.6s" and "PISA benchmark: 129.6s - verified, 8 calls × layers 20–27."
Installing it
Same pack as everything else: ComfyUI Manager → search RDNA35 Attention, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Yasei-no-otoko/ComfyUI-RDNA35-Attention
Restart, and it's under RDNA35/Attention Research. Base install is zero-dependency; it needs the rdna35_pisa_ck wheel only because the patch that creates the runtime state needs it - this node itself just reads whatever state the patch attached. The one gotcha: if you wire in a model that was never patched, there's no attachment and it raises. That's not a bug - it's the same honesty the rest of this pack is built on.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| latent | LATENT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| report | STRING | — |