MCPcopy
hub / github.com/zai-org/CogView / Timers

Class Timers

utils.py:77–140  ·  view source on GitHub ↗

Group of timers.

Source from the content-addressed store, hash-verified

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

Callers 1

mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected