gpu-tester / app.py
Facececersek's picture
Upload app.py with huggingface_hub
a499520 verified
import gradio as gr
import torch
import time
def get_gpu_info():
"""Get information about available GPUs."""
if torch.cuda.is_available():
gpu_count = torch.cuda.device_count()
gpu_info = []
for i in range(gpu_count):
name = torch.cuda.get_device_name(i)
mem_total = torch.cuda.get_device_properties(i).total_memory / (1024**3)
gpu_info.append(f"GPU {i}: {name} ({mem_total:.1f}GB)")
return "\n".join(gpu_info)
return "No GPU available"
def test_gpu(gpu_name):
"""Test the selected GPU with a simple computation."""
if not torch.cuda.is_available():
return "No GPU available on this system"
# Find the GPU index based on the name
device_idx = 0
for i in range(torch.cuda.device_count()):
if gpu_name in torch.cuda.get_device_name(i):
device_idx = i
break
device = torch.device(f"cuda:{device_idx}")
# Simple GPU computation test
start_time = time.time()
# Create a tensor on GPU
x = torch.randn(1000, 1000, device=device)
y = torch.randn(1000, 1000, device=device)
# Perform matrix multiplication
z = torch.matmul(x, y)
# Move back to CPU
result = z.cpu()
elapsed = time.time() - start_time
return f"GPU Test Successful!\n\nSelected GPU: {gpu_name}\nComputation Time: {elapsed:.4f} seconds\nResult shape: {result.shape}\nResult sum: {result.sum().item():.2f}"
def get_available_gpus():
"""Get list of available GPU names."""
if torch.cuda.is_available():
return [torch.cuda.get_device_name(i) for i in range(torch.cuda.device_count())]
return ["No GPU available"]
# Get available GPUs
available_gpus = get_available_gpus()
gpu_info = get_gpu_info()
# Create Gradio interface
with gr.Blocks(title="GPU Tester") as demo:
gr.Markdown("# GPU Selector and Tester")
gr.Markdown(f"### Available GPU Information:\n```\n{gpu_info}\n```")
with gr.Row():
with gr.Column():
gpu_dropdown = gr.Dropdown(
choices=available_gpus if available_gpus else ["No GPU available"],
label="Select GPU",
value=available_gpus[0] if available_gpus else None
)
test_button = gr.Button("Test GPU", variant="primary")
with gr.Column():
output = gr.Textbox(label="Test Results", lines=10)
test_button.click(fn=test_gpu, inputs=gpu_dropdown, outputs=output)
gr.Markdown("---")
gr.Markdown("This app allows you to select a GPU and test its computation capability using PyTorch.")
# Launch the app
demo.launch(server_name="0.0.0.0", server_port=7860)