Pulse Bench
Settle the Sol-Attn vs Spectrum speed argument with your own numbers
- table
The node that reads your render manifests so you stop guessing
Every serious MiniMax H3 workflow ends up with a patch chain - Sol-Attn here, Spectrum offloading history there, Sage attention as a fallback - and everyone has an opinion about which one is fast. The catch: Sol-Attn and Spectrum address different memory, and community reports on Spectrum's effect on speed genuinely disagree. One thread will tell you it saves time, another that it costs it. On your box, with your card and your window lengths, the truth is a number sitting on disk.
Pulse Bench is the node that reads it out. When PulseRender finishes a run, every segment entry carries render_seconds, peak_vram_bytes, and a patch_fingerprint in its manifest. Pulse Bench loads those manifests, groups the timings by fingerprint, and prints a table of seconds-per-frame and peak VRAM per patch chain. It turns an argument into a lookup - which is exactly what the pack's README says it's for.
Using it
It's an output node with two inputs, and run_dirs is the one you set:
run_dirs- one run folder per line, the folders holdingmanifest.json(the ones PulseRender'ssegment_pathsoutput prints). Absolute paths, or relative toComfyUI/output.schema_version- written by the node, read at load time, do not edit.
Output is a single table (STRING). It's marked as an output node, so the table renders in the UI - there's no video or image to preview, just the numbers. The grouping is by patch fingerprint, so you can point it at several run folders from different patch configurations and compare rows directly. Warm-up segments (the Triton autotune sweep you pay once per distinct sequence length) are counted separately rather than dropped, so the table won't understate the cost of a ragged plan.
The workflow: render the same timeline twice, once with Spectrum + Sol-Attn and once without, point Pulse Bench at both run folders, and read which chain was actually faster on your hardware. That's the whole job, and it's the right size for it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Addis-Pulse-Studio/comfyui-pulse-studio
Restart ComfyUI; no pip install and no dependencies beyond what a working ComfyUI already has. The host must be ComfyUI 0.30.0+ with H3 support, and the model weights come from Comfy-Org/MiniMax-H3 (they carry the geofenced MiniMax H3 Community License - no US, EU, UK, Korea). On Linux and macOS, example-graph loader widgets load red until you re-pick each file.
What to expect
If you run Pulse Bench on a folder that has no manifest, it lists the problem per path rather than crashing - one line per run folder. That's the whole troubleshooting story: it reads JSON files and imports nothing from ComfyUI, so it can't really fail in interesting ways. It's a thin utility, and it's the one you reach for when someone on the subreddit starts confidently telling you which patch chain is faster than yours.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| schema_version | STRING | 3.0.0 | Which widget layout this node was saved with. Written by the node, read at load time to restore values by name. Do not edit. |
| run_dirs | STRING | One run folder per line -- the folders holding manifest.json, printed by PulseRender's `segment_paths`. Absolute paths, or paths relative to ComfyUI/output. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| table | STRING | — |