mirror of
https://github.com/Comfy-Org/comfy-kitchen.git
synced 2026-11-05 07:47:40 +00:00
[GH-ISSUE #210] gated_delta.is_available() returns True on sm_70 (V100); deltanet_conv_step then raises launch rejected #63
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/comfy-kitchen#63
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @itssutch on GitHub (Sep 28, 2026).
Original GitHub issue: https://github.com/Comfy-Org/comfy-kitchen/issues/210
Summary
On Tesla V100 (sm_70),
comfy_kitchen.gated_delta.is_available()returnsTrue, so ComfyUI 0.37's Qwen 3.5TextGeneratepath callsdeltanet_conv_step/gated_delta_decode_fused. The CUDA launcher then returns false and Python raises:ComfyUI already has a working eager/PyTorch fallback in
comfy/text_encoders/qwen35.py. It never reaches that path because it trustsgated_delta_decode_is_available.Environment
available=True, disabled=True(ComfyUI disables it below cu130); eager backend enableddeltanet_conv_stepWhy the gate is wrong
is_available()incomfy_kitchen/gated_delta.pyonly checks:_EXT_AVAILABLEand that_Chasgated_delta_decode_fused/deltanet_conv_stepshared_memory_per_block_optinvs_fused_shmem_bytes()It does not check device compute capability against the archs actually compiled into the wheel (Linux default is
75-virtual;80;89;90a;100f;120f). V100 reports ~96 KB opt-in shared memory, the fused kernel asks for ~74 KB, so the shmem test passes even though there is no sm_70 cubin.This path also ignores ComfyUI having disabled the kitchen CUDA backend.
gated_deltatalks to_Cdirectly and does not go through the registry constraint system described in the README.Expected
is_available(device=V100)returnsFalseso callers use eager/PyTorch. A rejected launch should not be the first signal that the device is unsupported.Suggested fix
In
is_available()(CUDA branch), also require:torch.cuda.get_device_capability(device) >= (7, 5), matchingsage_attention._NATIVE_MINIMUM_CAPABILITYand the wheel floordeltanet_conv_stepcurrently callsis_available(proj.device)with default head dims, so it inherits the fused-decode shmem gate even for the conv-only kernel. A dedicated conv-step capability check would be more accurate, but the CC / compiled-arch check is the one that stops this crash.Related
ComfyUI call site:
comfy/text_encoders/qwen35.py(use_fused+comfy_kitchen.deltanet_conv_step). If kitchen cannot fix the gate quickly, ComfyUI should treatlaunch rejectedas “fused unavailable” and fall through to the existingF.conv1dpath instead of failing the prompt.