Uploaded sanitized BC250/ROCm Repository.
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
# GPU benchmark - test various operations
|
||||
export HSA_OVERRIDE_GFX_VERSION=10.1.0
|
||||
export HSA_ENABLE_SDMA=0
|
||||
export HIP_VISIBLE_DEVICES=0
|
||||
|
||||
cd /home/fabian/ComfyUI
|
||||
source venv/bin/activate
|
||||
|
||||
python3 -c "
|
||||
import torch
|
||||
import time
|
||||
|
||||
print(f'PyTorch: {torch.__version__}')
|
||||
print(f'CUDA: {torch.cuda.is_available()}')
|
||||
print(f'Device: {torch.cuda.get_device_name(0)}')
|
||||
print()
|
||||
|
||||
# Test 1: Small matmul (should be fast)
|
||||
print('=== Test 1: Small matmul 256x256 ===')
|
||||
a = torch.randn(256, 256, device='cuda', dtype=torch.float32)
|
||||
b = torch.randn(256, 256, device='cuda', dtype=torch.float32)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
for _ in range(10):
|
||||
c = torch.mm(a, b)
|
||||
torch.cuda.synchronize()
|
||||
print(f' 10x matmul 256x256 fp32: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 2: Large matmul (typical for model inference)
|
||||
print('=== Test 2: Large matmul 2048x2048 ===')
|
||||
a = torch.randn(2048, 2048, device='cuda', dtype=torch.float32)
|
||||
b = torch.randn(2048, 2048, device='cuda', dtype=torch.float32)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
c = torch.mm(a, b)
|
||||
torch.cuda.synchronize()
|
||||
print(f' 1x matmul 2048x2048 fp32: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 3: fp16 matmul
|
||||
print('=== Test 3: fp16 matmul 2048x2048 ===')
|
||||
a = torch.randn(2048, 2048, device='cuda', dtype=torch.float16)
|
||||
b = torch.randn(2048, 2048, device='cuda', dtype=torch.float16)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
c = torch.mm(a, b)
|
||||
torch.cuda.synchronize()
|
||||
print(f' 1x matmul 2048x2048 fp16: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 4: Conv2d (typical for VAE)
|
||||
print('=== Test 4: Conv2d 64ch ===')
|
||||
conv = torch.nn.Conv2d(64, 64, 3, padding=1).cuda().float()
|
||||
x = torch.randn(1, 64, 64, 64, device='cuda', dtype=torch.float32)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
y = conv(x)
|
||||
torch.cuda.synchronize()
|
||||
print(f' Conv2d 64x64x64 fp32: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 5: Attention-like operation
|
||||
print('=== Test 5: Attention (batch matmul) ===')
|
||||
q = torch.randn(1, 8, 1024, 64, device='cuda', dtype=torch.float32)
|
||||
k = torch.randn(1, 8, 1024, 64, device='cuda', dtype=torch.float32)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
attn = torch.matmul(q, k.transpose(-2, -1))
|
||||
torch.cuda.synchronize()
|
||||
print(f' BMM 8x1024x64 fp32: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 6: Larger attention (closer to model size)
|
||||
print('=== Test 6: Large attention ===')
|
||||
q = torch.randn(1, 16, 4096, 128, device='cuda', dtype=torch.float32)
|
||||
k = torch.randn(1, 16, 4096, 128, device='cuda', dtype=torch.float32)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
attn = torch.matmul(q, k.transpose(-2, -1))
|
||||
torch.cuda.synchronize()
|
||||
print(f' BMM 16x4096x128 fp32: {time.time()-t:.3f}s')
|
||||
|
||||
# Test 7: bf16
|
||||
print('=== Test 7: bf16 matmul ===')
|
||||
try:
|
||||
a = torch.randn(2048, 2048, device='cuda', dtype=torch.bfloat16)
|
||||
b = torch.randn(2048, 2048, device='cuda', dtype=torch.bfloat16)
|
||||
torch.cuda.synchronize()
|
||||
t = time.time()
|
||||
c = torch.mm(a, b)
|
||||
torch.cuda.synchronize()
|
||||
print(f' bf16 2048x2048: {time.time()-t:.3f}s')
|
||||
except Exception as e:
|
||||
print(f' bf16 FAILED: {e}')
|
||||
|
||||
print()
|
||||
print('=== All tests done ===')
|
||||
" 2>&1
|
||||
Reference in New Issue
Block a user