MCPcopy
hub / github.com/deepspeedai/DeepSpeedExamples / Timers

Class Timers

Megatron-LM/utils.py:67–130  ·  view source on GitHub ↗

Group of timers.

Source from the content-addressed store, hash-verified

65
66
67class Timers:
68 """Group of timers."""
69
70 class Timer:
71 """Timer."""
72
73 def __init__(self, name):
74 self.name_ = name
75 self.elapsed_ = 0.0
76 self.started_ = False
77 self.start_time = time.time()
78
79 def start(self):
80 """Start the timer."""
81 assert not self.started_, 'timer has already been started'
82 torch.cuda.synchronize()
83 self.start_time = time.time()
84 self.started_ = True
85
86 def stop(self):
87 """Stop the timer."""
88 assert self.started_, 'timer is not started'
89 torch.cuda.synchronize()
90 self.elapsed_ += (time.time() - self.start_time)
91 self.started_ = False
92
93 def reset(self):
94 """Reset timer."""
95 self.elapsed_ = 0.0
96 self.started_ = False
97
98 def elapsed(self, reset=True):
99 """Calculate the elapsed time."""
100 started_ = self.started_
101 # If the timing in progress, end it first.
102 if self.started_:
103 self.stop()
104 # Get the elapsed time.
105 elapsed_ = self.elapsed_
106 # Reset the elapsed time
107 if reset:
108 self.reset()
109 # If timing was in progress, set it back.
110 if started_:
111 self.start()
112 return elapsed_
113
114 def __init__(self):
115 self.timers = {}
116
117 def __call__(self, name):
118 if name not in self.timers:
119 self.timers[name] = self.Timer(name)
120 return self.timers[name]
121
122 def log(self, names, normalizer=1.0, reset=True):
123 """Log a group of timers."""
124 assert normalizer > 0.0

Callers 4

mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected