Comfy-Org / Comfy-Org/ComfyUI

(Windows) ROCm CPU compute much slower than CUDA CPU compute

Open
#12,058 2 comments 0 reactions 0 assignees View on GitHub
Potential Bug
Dominant language
Python
Stars
133k
Forks
15.7k
Avg merge
1d 7h
Merged PRs (30d)
158

Description

### Custom Node Testing

- [x] I have tried disabling custom nodes and the issue persists (see [how to disable custom nodes](https://docs.comfy.org/troubleshooting/custom-node-issues#step-1%3A-test-with-all-custom-nodes-disabled) if you need help)

### Expected Behavior

Same speed for inference regardless of GPU software/hardware when running on CPU only.

### Actual Behavior

CPU inference is (at least) **14** times slower when using "ComfyUI_windows_portable_amd.7z" (v0.10.0) compared to "ComfyUI_windows_portable_nvidia.7z" (v.0.10.0)

### Steps to Reproduce

Download and extract "ComfyUI_windows_portable_amd.7z" (v0.10.0) and "ComfyUI_windows_portable_nvidia.7z" (v.0.10.0)
set command-line arguments: --disable-all-custom-nodes --cpu --use-split-cross-attention

Default SD1 workflow, but with steps set to 1 instead of 20 (you could leave it at 20, but it already is noticeable at 1 step, so lets save time)
Or any workflow that computes over CPU (for example Flux1d/LTX, when you don't have enough VRAM, so you put CLIP on CPU compute)

Image
Image

### Debug Logs

```powershell
CUDA 11.7 (Windows 10)
"""
F:\Documents\MachineLearning\_RUNNERS\TEMP\ComfyUI_windows_portable>.\python_embeded\python.exe -s ComfyUI\main.py --cpu --windows-standalone-build --disable-all-custom-nodes --use-split-cross-attention
Checkpoint files will always be loaded safely.
Total VRAM 32509 MB, total RAM 32509 MB
pytorch version: 2.9.1+cu130
F:\Documents\MachineLearning\_RUNNERS\TEMP\ComfyUI_windows_portable\python_embeded\Lib\site-packages\torch\cuda\__init__.py:182: UserWarning: cudaGetDeviceCount() returned cudaErrorNotSupported, likely using older driver or on CPU machine (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\pytorch\c10\cuda\CUDAFunctions.cpp:88.)
return torch._C._cuda_getDeviceCount() > 0
Set vram state to: DISABLED
Device: cpu
Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_nvfp4']}
Found comfy_kitchen backend cuda: {'available': False, 'disabled': False, 'unavailable_reason': 'CUDA not available on this system', 'capabilities': []}
Found comfy_kitchen backend triton: {'available': False, 'disabled': True, 'unavailable_reason': "ImportError: No module named 'triton'", 'capabilities': []}
Using split optimization for attention
Python version: 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)]
ComfyUI version: 0.10.0
****** User settings have been changed to be stored on the server instead of browser storage. ******
****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******
ComfyUI frontend version: 1.36.14
[Prompt Server] web root: F:\Documents\MachineLearning\_RUNNERS\TEMP\ComfyUI_windows_portable\python_embeded\Lib\site-packages\comfyui_frontend_package\static
Skipping loading of custom nodes
Context impl SQLiteImpl.
Will assume non-transactional DDL.
Context impl SQLiteImpl.
Will assume non-transactional DDL.
Running upgrade -> 0001_assets, Initial assets schema
Revision ID: 0001_assets
Revises: None
Create Date: 2025-12-10 00:00:00
Database upgraded from None to 0001_assets
Assets scan(roots=['models']) completed in 0.042s (created=20, skipped_existing=0, total_seen=20)
Starting server

To see the GUI go to: http://127.0.0.1:8188
got prompt
model weight dtype torch.float32, manual cast: None
model_type EPS
Using split attention in VAE
Using split attention in VAE
VAE load device: cpu, offload device: cpu, dtype: torch.float32
Requested to load SD1ClipModel
loaded completely; 235.84 MB loaded, full load: True
CLIP/text encoder model load device: cpu, offload device: cpu, current: cpu, dtype: torch.float16
Requested to load BaseModel
loaded completely; 3278.81 MB loaded, full load: True
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:07<00:00, 7.88s/it]
Requested to load AutoencoderKL
loaded completely; 319.11 MB loaded, full load: True
Prompt executed in 17.07 seconds
"""

Adrenaline 26.1.1 (Windows 11)
"""
F:\Documents\MachineLearning\_RUNNERS\TEMP\ComfyUI_windows_portable>.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --disable-all-custom-nodes --cpu --use-split-cross-attention
[WARNING] failed to run amdgpu-arch: binary not found.
Checkpoint files will always be loaded safely.
Total VRAM 32509 MB, total RAM 32509 MB
pytorch version: 2.9.0+rocmsdk20251116
Set vram state to: DISABLED
Device: cpu
Found comfy_kitchen backend triton: {'available': False, 'disabled': True, 'unavailable_reason': "ImportError: No module named 'triton'", 'capabilities': []}
Found comfy_kitchen backend cuda: {'available': True, 'disabled': True, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8']}
Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_nvfp4']}
Using split optimization for attention
Python version: 3.12.10 (tags/v3.12.10:0cc8128, Apr 8 2025, 12:21:36) [MSC v.1943 64 bit (AMD64)]
ComfyUI version: 0.10.0
ComfyUI frontend version: 1.36.14
[Prompt Server] web root: F:\Documents\MachineLearning\_RUNNERS\TEMP\ComfyUI_windows_portable\python_embeded\Lib\site-packages\comfyui_frontend_package\static
Skipping loading of custom nodes
Context impl SQLiteImpl.
Will assume non-transactional DDL.
Assets scan(roots=['models']) completed in 0.017s (created=0, skipped_existing=20, total_seen=20)
Starting server

To see the GUI go to: http://127.0.0.1:8188
got prompt
model weight dtype torch.float32, manual cast: None
model_type EPS
Using split attention in VAE
Using split attention in VAE
VAE load device: cpu, offload device: cpu, dtype: torch.float32
Requested to load SD1ClipModel
loaded completely; 235.84 MB loaded, full load: True
CLIP/text encoder model load device: cpu, offload device: cpu, current: cpu, dtype: torch.float16
Requested to load BaseModel
loaded completely; 3278.81 MB loaded, full load: True
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [03:36<00:00, 216.81s/it]
Requested to load AutoencoderKL
loaded completely; 319.11 MB loaded, full load: True
Prompt executed in 240.42 seconds
"""
```

### Other

CPU: Intel i5-12500
RAM: 4x 8 GB (DDR4, 2133MT/s)
GPU: GTX 1070 (8 GB) -> RX 9060 XT (16 GB)
OS: Windows 10 -> Windows 11
NVMe SSD

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.