This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ROCm-Research-Archive/_TestScripts/ComfyUI Scripts/run_verification.py
T
2026-08-20 00:45:43 +02:00

123 lines
4.7 KiB
Python

import paramiko
import sys
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect('192.168.178.150', username='fabian', key_filename=r'C:\Users\fabia\.ssh\id_ed25519')
def run(cmd, timeout=30):
stdin, stdout, stderr = c.exec_command(f"bash -c '{cmd}'", timeout=timeout)
out = stdout.read().decode()
err = stderr.read().decode()
rc = stdout.channel.recv_exit_status()
return out.strip(), err.strip(), rc
def section(title):
print(f"\n{'='*50}")
print(f" {title}")
print(f"{'='*50}")
# Test 1: Module status
section("Test 1: amdgpu Module")
out, _, _ = run("lsmod | grep amdgpu | head -3")
print(out)
# Test 2: v3 Module messages
section("Test 2: v3 Module (GFXOFF, BC-250)")
out, _, _ = run('sudo dmesg | grep -E "BC-250|GFXOFF|out-of-tree" | head -5')
print(out)
# Test 3: KIQ errors
section("Test 3: KIQ Fence Timeouts")
out, _, _ = run('sudo dmesg | grep -ci "timeout waiting for kiq fence" 2>/dev/null || echo 0')
print(f"KIQ timeout count: {out}")
# Test 4: GPU dead events
section("Test 4: GPU Unreachable/Dead Events")
out, _, _ = run('sudo dmesg | grep -ci "GPU unreachable\\|GPU died" 2>/dev/null || echo 0')
print(f"GPU dead count: {out}")
# Test 5: ppfeaturemask
section("Test 5: ppfeaturemask")
out, _, _ = run("cat /sys/module/amdgpu/parameters/ppfeaturemask")
print(f"ppfeaturemask: {out}")
# Test 6: Devices
section("Test 6: DRM/KFD Devices")
out, _, _ = run("ls -la /dev/dri/ 2>&1; echo; ls -la /dev/kfd 2>&1")
print(out)
# Test 7: GPU clocks
section("Test 7: GPU Clock Levels")
out, _, _ = run("cat /sys/class/drm/card0/device/pp_dpm_sclk 2>&1")
print(out)
# Test 8: Governor
section("Test 8: Cyan Skillfish Governor")
out, _, _ = run("systemctl is-active cyan-skillfish-governor.service 2>&1")
print(f"Governor: {out}")
# Test 9: rocminfo
section("Test 9: rocminfo")
out, _, _ = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; rocminfo 2>&1 | grep -E "Name:|Marketing Name:|Compute Unit:|gfx|Done"', timeout=60)
print(out)
# Test 10: hip_probe
section("Test 10: hip_probe (Dani's diagnostic)")
out, _, rc = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; /tmp/hip_probe 2>&1', timeout=60)
print(out)
print(f"Exit code: {rc}")
# Check KIQ after hip_probe
import time
time.sleep(3)
out, _, _ = run('sudo dmesg | tail -20 | grep -ci "timeout waiting for kiq fence" 2>/dev/null || echo 0')
print(f"\nKIQ errors after hip_probe: {out}")
# Test 11: hip_minimal_test
section("Test 11: hip_minimal_test (kernel compute)")
out, _, rc = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; /tmp/hip_minimal_test 2>&1', timeout=60)
print(out)
print(f"Exit code: {rc}")
time.sleep(3)
out, _, _ = run('sudo dmesg | tail -20 | grep -ci "timeout waiting for kiq fence" 2>/dev/null || echo 0')
print(f"\nKIQ errors after hip_minimal_test: {out}")
# Test 12: hip_vector_add (managed memory + timing)
section("Test 12: hip_vector_add (managed memory, sin²+cos²)")
out, _, rc = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; /tmp/hip_vector_add 2>&1', timeout=60)
print(out)
print(f"Exit code: {rc}")
time.sleep(3)
out, _, _ = run('sudo dmesg | tail -20 | grep -ci "timeout waiting for kiq fence" 2>/dev/null || echo 0')
print(f"\nKIQ errors after hip_vector_add: {out}")
# Test 13: Sequential stress (3 rounds)
section("Test 13: Sequential GPU Stress (3 rounds)")
for i in range(1, 4):
out, _, rc = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; /tmp/hip_minimal_test 2>&1 | tail -3', timeout=60)
status = "PASS" if rc == 0 else "FAIL"
print(f"Round {i}: {status} (rc={rc}) — {out.split(chr(10))[-1]}")
time.sleep(2)
# Final KIQ check
time.sleep(5)
section("Final: Post-Stress KIQ Check")
out, _, _ = run('sudo dmesg | grep -ci "timeout waiting for kiq fence" 2>/dev/null || echo 0')
print(f"Total KIQ timeout count: {out}")
out, _, _ = run('sudo dmesg | grep -ci "GPU unreachable\\|GPU died" 2>/dev/null || echo 0')
print(f"Total GPU dead count: {out}")
# Test 14: rocminfo AFTER all GPU tests
section("Test 14: rocminfo After Stress (previously would hang)")
out, _, rc = run('export HSA_OVERRIDE_GFX_VERSION=10.1.0 HIP_VISIBLE_DEVICES=0 HSA_ENABLE_SDMA=0 HSA_TOOLS_LIB= HSA_TOOLS_REPORT_LOAD_FAILURE=0; timeout 30 rocminfo 2>&1 | grep "Done"', timeout=60)
print(f"rocminfo: {out} (rc={rc})")
print("\n" + "="*50)
print(" ALL VERIFICATION COMPLETE")
print("="*50)
c.close()