MCPcopy Create free account
hub / github.com/deepspeedai/DeepSpeed / SynchronizedWallClockTimer

Class SynchronizedWallClockTimer

deepspeed/utils/timer.py:44–161  ·  view source on GitHub ↗

Group of timers. Borrowed from Nvidia Megatron code

Source from the content-addressed store, hash-verified

42
43
44class SynchronizedWallClockTimer:
45 """Group of timers. Borrowed from Nvidia Megatron code"""
46
47 class Timer:
48 """Timer."""
49
50 def __init__(self, name):
51 self.name_ = name
52 self.started_ = False
53 self.event_timers = []
54 self.use_host_timer = get_accelerator().use_host_timers()
55 self.start_event = None
56 self.elapsed_records = None
57 self.start_time = 0.0
58 self.end_time = 0.0
59
60 def start(self):
61 """Start the timer."""
62 assert not self.started_, f"{self.name_} timer has already been started"
63 if self.use_host_timer:
64 self.start_time = time.time()
65 else:
66 event_class = get_accelerator().Event
67 self.start_event = event_class(enable_timing=True)
68 self.start_event.record()
69 self.started_ = True
70
71 def stop(self, reset=False, record=False):
72 """Stop the timer."""
73 assert self.started_, "timer is not started"
74 event_class = get_accelerator().Event
75 if self.use_host_timer:
76 self.end_time = time.time()
77 self.event_timers.append(self.end_time - self.start_time)
78 else:
79 event_class = get_accelerator().Event
80 end_event = event_class(enable_timing=True)
81 end_event.record()
82 self.event_timers.append(CudaEventTimer(self.start_event, end_event))
83 self.start_event = None
84 self.started_ = False
85
86 def _get_elapsed_msec(self):
87 if self.use_host_timer:
88 self.elapsed_records = [et * 1000.0 for et in self.event_timers]
89 else:
90 self.elapsed_records = [et.get_elapsed_msec() for et in self.event_timers]
91 return sum(self.elapsed_records)
92
93 def reset(self):
94 """Reset timer."""
95 self.started_ = False
96 self.start_event = None
97 self.elapsed_records = None
98 self.event_timers.clear()
99
100 def elapsed(self, reset=True):
101 """Calculate the elapsed time."""

Callers 7

test_mpi_perf.pyFile · 0.90
test_nccl_perf.pyFile · 0.90
profile_model_timeMethod · 0.90
__init__Method · 0.90
__init__Method · 0.90
__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected