MCPcopy Create free account
hub / github.com/AIS-SNU/Smart-Infinity / SynchronizedWallClockTimer

Class SynchronizedWallClockTimer

deepspeed/utils/timer.py:33–150  ·  view source on GitHub ↗

Group of timers. Borrowed from Nvidia Megatron code

Source from the content-addressed store, hash-verified

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

Callers 4

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