
* fix.. speed_limit error... * draw tpms settings. * fix.. traffic light stopping only.. * fix.. waze cam * fix.. waze... * add setting (Enable comma connect ) * auto detect LFA2 * fix.. cruisespeed1 * vff2 driving model. * fix.. * agnos 12.3 * fix.. * ff * ff * test * ff * fix.. drawTurnInfo.. * Update drive_helpers.py * fix.. support eng voice eng sounds fix settings... english fix.. mph.. fix.. roadlimit speed bug.. * new vff model.. 250608 * fix soundd.. * fix safe exit speed.. * fix.. sounds. * fix.. radar timeStep.. * KerryGold model * Update drive_helpers.py * fix.. model. * fix.. * fix.. * Revert "fix.." This reverts commit b09ec459afb855c533d47fd7e8a1a6b1a09466e7. * Revert "fix.." This reverts commit 290bec6b83a4554ca232d531a911edccf94a2156. * fix esim * add more acc table. 10kph * kg update.. * fix cruisebutton mode3 * test atc..cond. * fix.. canfd * fix.. angle control limit
109 lines
3.7 KiB
Python
109 lines
3.7 KiB
Python
import unittest, time
|
|
from unittest.case import skipIf
|
|
|
|
from extra.bench_log import BenchEvent, InstantBenchEvent, WallTimeEvent, KernelTimeEvent, log_event_instant, _events, clear_events
|
|
from tinygrad.helpers import Context, CI
|
|
from tinygrad.tensor import Tensor
|
|
from tinygrad.device import Device
|
|
|
|
class TestBenchLog(unittest.TestCase):
|
|
def setUp(self):
|
|
clear_events()
|
|
|
|
def test_log_single_wall_time(self):
|
|
for event in BenchEvent:
|
|
with WallTimeEvent(event):
|
|
time.sleep(0.1)
|
|
|
|
# check event list
|
|
for event in BenchEvent:
|
|
self.assertEqual(len(_events[event]["wall"]), 1)
|
|
self.assertGreater(_events[event]["wall"][0], 0)
|
|
|
|
def test_log_double_wall_time(self):
|
|
for event in BenchEvent:
|
|
with WallTimeEvent(event):
|
|
time.sleep(0.1)
|
|
|
|
for event in reversed(BenchEvent):
|
|
with WallTimeEvent(event):
|
|
time.sleep(0.2)
|
|
|
|
# check event list
|
|
for event in BenchEvent:
|
|
self.assertEqual(len(_events[event]["wall"]), 2)
|
|
self.assertGreater(_events[event]["wall"][0], 0)
|
|
self.assertGreater(_events[event]["wall"][1], 0)
|
|
|
|
@skipIf(CI and Device.DEFAULT == "CUDA", "ci cuda timing is not accurate")
|
|
def test_log_single_kernel_time(self):
|
|
wall_times = []
|
|
|
|
with Context(DEBUG=2):
|
|
for event in BenchEvent:
|
|
with KernelTimeEvent(event):
|
|
st = time.perf_counter()
|
|
Tensor.rand(32, 32).sum().realize().item()
|
|
wall_times.append(time.perf_counter() - st)
|
|
|
|
# check event list
|
|
for event in BenchEvent:
|
|
self.assertEqual(len(_events[event]["kernel"]), 1)
|
|
self.assertLess(_events[event]["kernel"][0], wall_times[0])
|
|
self.assertGreater(_events[event]["kernel"][0], 0)
|
|
|
|
@skipIf(CI and Device.DEFAULT == "CUDA", "ci cuda timing is not accurate")
|
|
def test_interleaved_wall_kernel_time(self):
|
|
wall_times = []
|
|
with Context(DEBUG=2):
|
|
for event in BenchEvent:
|
|
with KernelTimeEvent(event):
|
|
st = time.perf_counter()
|
|
Tensor.rand(32, 32).sum().realize().item()
|
|
wall_times.append(time.perf_counter() - st)
|
|
|
|
with WallTimeEvent(event):
|
|
st = time.perf_counter()
|
|
Tensor.rand(32, 32).sum().realize().item()
|
|
wall_times.append(time.perf_counter() - st)
|
|
|
|
# check event list
|
|
for event in BenchEvent:
|
|
self.assertEqual(len(_events[event]["wall"]), 1)
|
|
self.assertEqual(len(_events[event]["kernel"]), 1)
|
|
self.assertLess(_events[event]["kernel"][0], wall_times[0])
|
|
self.assertGreater(_events[event]["kernel"][0], 0)
|
|
|
|
@skipIf(CI and Device.DEFAULT == "CUDA", "ci cuda timing is not accurate")
|
|
def test_stacked_wall_kernel_time(self):
|
|
with Context(DEBUG=2):
|
|
for event in BenchEvent:
|
|
with KernelTimeEvent(event):
|
|
with WallTimeEvent(event):
|
|
Tensor.rand(32, 32).sum().realize().item()
|
|
|
|
for event in BenchEvent:
|
|
with WallTimeEvent(event):
|
|
with KernelTimeEvent(event):
|
|
Tensor.rand(32, 32).sum().realize().item()
|
|
|
|
for event in BenchEvent:
|
|
self.assertEqual(len(_events[event]["wall"]), 2)
|
|
self.assertEqual(len(_events[event]["kernel"]), 2)
|
|
self.assertLess(_events[event]["kernel"][0], _events[event]["wall"][0])
|
|
self.assertGreater(_events[event]["kernel"][0], 0)
|
|
self.assertLess(_events[event]["kernel"][1], _events[event]["wall"][1])
|
|
self.assertGreater(_events[event]["kernel"][1], 0)
|
|
|
|
def test_log_instant_event(self):
|
|
for event in InstantBenchEvent:
|
|
log_event_instant(event, 1000)
|
|
|
|
# check event list
|
|
for event in InstantBenchEvent:
|
|
self.assertEqual(len(_events[event]), 1)
|
|
self.assertEqual(_events[event][0], 1000)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|