sesa-gpu / tests /test_gpu_timing.py
John6666's picture
Upload 44 files
81ba775 verified
Raw
History Blame Contribute Delete
1.67 kB
from src import gpu_timing
def test_callback_timing_records_unavailable_queue_wait_without_cuda(monkeypatch):
monkeypatch.setattr(gpu_timing.torch.cuda, "is_available", lambda: False)
timing = gpu_timing.start_gpu_callback_timing()
snapshot = timing.to_dict()
assert snapshot["zerogpu_queue_allocation_wait_seconds"] is None
assert snapshot["zerogpu_queue_allocation_wait_status"].startswith("unavailable-by-design")
assert snapshot["browser_click_to_callback_seconds"] is None
assert snapshot["cuda_ready_status"] == "cuda-unavailable"
assert snapshot["gpu_callback_body_seconds"] >= 0
def test_callback_timing_synchronizes_once_at_entry(monkeypatch):
calls = []
monkeypatch.setattr(gpu_timing.torch.cuda, "is_available", lambda: True)
monkeypatch.setattr(gpu_timing.torch.cuda, "synchronize", lambda: calls.append("sync"))
timing = gpu_timing.start_gpu_callback_timing()
snapshot = timing.to_dict()
assert calls == ["sync"]
assert snapshot["cuda_ready_status"] == "ready-after-synchronize"
assert snapshot["cuda_initial_sync_seconds"] is not None
assert snapshot["callback_entry_to_cuda_ready_seconds"] is not None
def test_synchronized_wall_time_wraps_operation_with_cuda_sync(monkeypatch):
events = []
monkeypatch.setattr(gpu_timing.torch.cuda, "synchronize", lambda: events.append("sync"))
def operation():
events.append("operation")
return "ok"
result, elapsed, error = gpu_timing.synchronized_wall_time(operation, use_cuda=True)
assert result == "ok"
assert elapsed >= 0
assert error is None
assert events == ["sync", "operation", "sync"]