Prism Native Sparse Options
The 4-click speed dial that will just as happily break your video
- PRISM_SPARSE_OPTIONS
What it is
A settings node for Prism's native sparse attention. It produces a PRISM_SPARSE_OPTIONS bundle that you wire into the optional sparse_options input on Prism Native Video Audio Sampler, where it changes how the attention layers inside the video transformer actually compute.
Why you'd bother: attention over a 205-frame 720p latent is the expensive part of a video DiT, and block-sparse attention is how every serious acceleration effort attacks it - the same idea shows up in the community's SageAttention and sparse-attention stacks, usually in combination with step distillation and W8A8 quantisation. Prism ships the knobs natively, which is unusual and genuinely nice.
Why you'd be careful: sparse attention is an approximation. Skip too much of the attention matrix and detail collapses, motion turns to soup, or the audio stops agreeing with the picture. Turn it on, then look at the result.
The five inputs
enable_bsa - the master switch. Off by default, and nothing else on this node does anything until it's on.
sparsity (0.75, range 0–0.99) - how much of the attention work gets skipped. This is your quality/speed dial. 0.75 is the author's default and it's a sensible place to start; 0.9+ is where things start looking wrong, and at the top of the range you should expect artefacts rather than a speedup you'd want.
dynamic_blocks - fixed, ivpq or penalty. How the block selection is decided: a static pattern, or one of two dynamic-block methods that adapt per step. IVPQ and penalty are mutually exclusive (the node's validation says so explicitly) and they're the more aggressive options, so treat them as the second experiment, not the first.
high_noise_only - apply sparsity to the high-noise video expert only and leave the low-noise expert dense. If you only enable one thing on this node beyond enable_bsa, make it this. It matches the community's long-standing compromise on speed tricks: let the early structural steps move fast, keep the detail pass clean.
advanced_json - a JSON object using the exact official Prism CLI option names, per the author's tooltip, with examples/sparse_options.json in the pack as the reference. That file lists the whole upstream surface: BSA chunk shapes (bsa_chunk_3d_shape_q, bsa_chunk_3d_shape_k), CDF thresholds, the v2a audio-side BSA flags, audio guidance and variance guidance toggles, Taylor and rectified sparse attention, dynamic-block lambdas, and so on. It also accepts null for the CDF thresholds, where that's meaningful.
The validation is strict and opinionated, which is a feature: unknown keys are rejected (Unknown sparse flags), booleans must be booleans, BSA chunk axes have to be powers of two, the K-side chunk needs at least 16 tokens, the v2a audio chunk size must be a power of two of at least 64, Taylor and rectified sparse attention can't both be on, and neither dynamic-block method can be combined with audio or variance guidance. Read the error, fix the key - it beats wondering why the run went strange.
Output and wiring
One output, PRISM_SPARSE_OPTIONS, into sparse_options on the native sampler. Two things to note: the accelerated FreeVideo sampler has no sparse input - it applies its own upstream sparsity recipe internally (0.75 with a 0.2 CDF threshold in the shipped tiers) and isn't yours to tune. And the native sparse path needs Triton, matched to your PyTorch build; on Windows that means triton-windows. Default SDPA doesn't need it, which is why the plain example workflows run on a stock install.
Install
Install the pack (ComfyUI Manager → Comfyui-Prism-T8, registry t8star/prism-t8, or the usual clone), then the seven model files and the dependencies:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Prism-T8.git
cd Comfyui-Prism-T8
python -m pip install -r requirements.txt
Triton is optional in that requirements file - it's only for this node's path and the attention: auto route. The pack's tested setup is PyTorch 2.11/cu128 with triton-windows 3.6, and it deliberately disables Triton 3.7's FP16-accumulation attention extension.
Where people get burned
Turning it on and setting the sampler to sdpa. The native path only engages when the attention route allows it; if you're on plain SDPA, sparse options have nowhere to act. Start from the pack's 02 · Kitchen + BSA example, which is built for this.
Cranking sparsity first. Invert the order: enable BSA with high_noise_only, keep 0.75, compare, then experiment. Most of the way people break their videos is by arriving at 0.95 on the first run and concluding the model is bad.
Pasting CLI flags that don't exist. advanced_json accepts the official option names and rejects anything else rather than silently ignoring it. Start by copying examples/sparse_options.json and editing one value.
Expecting this to fix a slow machine. Sparse attention is one lever among several, and it doesn't reduce activation memory at high resolution. On a 24 GB laptop with block offload, the measured native run at 848×480/49 frames still took around 47 minutes. Sparse attention shaves time; it doesn't change the class of hardware you need.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_bsa | BOOLEAN | false | — |
| sparsity | FLOAT | 0.750–0.99 | — |
| dynamic_blocks | COMBO | 3 options: fixed, ivpq, penalty | |
| high_noise_only | BOOLEAN | false | — |
| advanced_json | STRING | {} | All native Prism CLI sparse options, using the exact official option names. See examples/sparse_options.json. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PRISM_SPARSE_OPTIONS | PRISM_SPARSE_OPTIONS | — |