Uploaded sanitized BC250/ROCm Repository.
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Deep diagnosis: WHY only 1 core? Check OpenMP, threading, GGUF code path."""
|
||||
import paramiko, json, textwrap
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect('192.168.178.150', username='fabian', key_filename=r'C:\Users\fabia\.ssh\id_ed25519')
|
||||
|
||||
def run(cmd, timeout=60):
|
||||
_, stdout, stderr = ssh.exec_command(cmd, timeout=timeout)
|
||||
out = stdout.read().decode()
|
||||
err = stderr.read().decode()
|
||||
rc = stdout.channel.recv_exit_status()
|
||||
return rc, out, err
|
||||
|
||||
def show(label, cmd, timeout=60):
|
||||
print(f"\n{'='*60}")
|
||||
print(f" {label}")
|
||||
print(f"{'='*60}")
|
||||
rc, out, err = run(cmd, timeout)
|
||||
if out.strip():
|
||||
print(out.strip())
|
||||
if err.strip():
|
||||
for line in err.strip().split('\n')[-10:]:
|
||||
print(f"STDERR: {line}")
|
||||
return out
|
||||
|
||||
# 1. Check ComfyUI queue/history - did generation succeed or fail?
|
||||
show("Queue status", "curl -s http://localhost:8188/queue")
|
||||
hist_out = show("History", "curl -s http://localhost:8188/history")
|
||||
try:
|
||||
h = json.loads(hist_out.strip())
|
||||
for pid, info in h.items():
|
||||
status = info.get('status', {})
|
||||
print(f"\n Prompt {pid}: status={status}")
|
||||
outputs = info.get('outputs', {})
|
||||
if outputs:
|
||||
print(f" Outputs: {json.dumps(outputs, indent=2)[:500]}")
|
||||
else:
|
||||
print(" NO OUTPUTS")
|
||||
except:
|
||||
pass
|
||||
|
||||
# 2. Check if PyTorch has OpenMP
|
||||
show("PyTorch OpenMP & threading",
|
||||
"bash -c 'source /home/fabian/comfyui-env/bin/activate && "
|
||||
"OMP_NUM_THREADS=12 python3 -c \""
|
||||
"import torch; "
|
||||
"print(f\\\"OpenMP available: {torch.backends.openmp.is_available()}\\\"); "
|
||||
"print(f\\\"MKL available: {torch.backends.mkl.is_available()}\\\"); "
|
||||
"print(f\\\"Num threads: {torch.get_num_threads()}\\\"); "
|
||||
"print(f\\\"Num interop threads: {torch.get_num_interop_threads()}\\\"); "
|
||||
"print(f\\\"torch.__config__.show(): \\\"); "
|
||||
"print(torch.__config__.show()); "
|
||||
"\"'")
|
||||
|
||||
# 3. Check if libomp/libgomp is available
|
||||
show("OpenMP libraries",
|
||||
"bash -c 'ldconfig -p 2>/dev/null | grep -i omp; "
|
||||
"echo ---; "
|
||||
"pacman -Qs openmp 2>/dev/null; "
|
||||
"echo ---; "
|
||||
"pacman -Qs libgomp 2>/dev/null; "
|
||||
"echo ---; "
|
||||
"ls -la /usr/lib/libomp* /usr/lib/libgomp* 2>/dev/null || echo none'")
|
||||
|
||||
# 4. Check pytorch shared lib dependencies for OpenMP
|
||||
show("PyTorch .so OpenMP deps",
|
||||
"bash -c 'ldd /usr/lib/python3.14/site-packages/torch/lib/libtorch_cpu.so 2>/dev/null | grep -i omp'")
|
||||
|
||||
# 5. Actual thread test - does a matrix multiply use multiple cores?
|
||||
show("Matrix multiply CPU benchmark (should use all cores)",
|
||||
"bash -c 'source /home/fabian/comfyui-env/bin/activate && "
|
||||
"OMP_NUM_THREADS=12 python3 -c \""
|
||||
"import torch, time, os; "
|
||||
"print(f\\\"PID: {os.getpid()}\\\"); "
|
||||
"torch.set_num_threads(12); "
|
||||
"print(f\\\"Threads set to: {torch.get_num_threads()}\\\"); "
|
||||
"a = torch.randn(4096, 4096); "
|
||||
"b = torch.randn(4096, 4096); "
|
||||
"# warmup; "
|
||||
"c = torch.mm(a, b); "
|
||||
"import subprocess; "
|
||||
"# Start monitoring in background; "
|
||||
"start = time.time(); "
|
||||
"for i in range(5): c = torch.mm(a, b); "
|
||||
"elapsed = time.time() - start; "
|
||||
"print(f\\\"5x matmul 4096x4096: {elapsed:.2f}s\\\"); "
|
||||
"\"'")
|
||||
|
||||
# 6. Check what the GGUF dequant code actually does (single-threaded python loop?)
|
||||
show("GGUF dequant code - is there a Python for-loop?",
|
||||
"bash -c 'grep -n \"for \" /home/fabian/ComfyUI/custom_nodes/ComfyUI-GGUF/dequant.py | head -20; "
|
||||
"echo \"---\"; "
|
||||
"grep -n \"for \" /home/fabian/ComfyUI/custom_nodes/ComfyUI-GGUF/ops.py | head -20; "
|
||||
"echo \"---\"; "
|
||||
"grep -n \"def dequantize\" /home/fabian/ComfyUI/custom_nodes/ComfyUI-GGUF/dequant.py'")
|
||||
|
||||
# 7. Check if lowvram is causing sequential layer-by-layer processing
|
||||
show("ComfyUI lowvram model loading code",
|
||||
"bash -c 'grep -rn \"lowvram\\|low_vram\\|offload\" /home/fabian/ComfyUI/comfy/model_management.py 2>/dev/null | head -30'")
|
||||
|
||||
# 8. Output directory
|
||||
show("Output files", "ls -lah /home/fabian/ComfyUI/output/ 2>/dev/null")
|
||||
|
||||
ssh.close()
|
||||
print("\n\nDONE.")
|
||||
Reference in New Issue
Block a user