| 4 | |
| 5 | |
| 6 | class Profiler(object): |
| 7 | def __init__(self, verbose=False) -> None: |
| 8 | self.timer = dict() |
| 9 | self.time_log = dict() |
| 10 | self.enabled = False |
| 11 | self.verbose = verbose |
| 12 | |
| 13 | def enable(self): |
| 14 | self.enabled = True |
| 15 | |
| 16 | def disable(self): |
| 17 | self.enabled = False |
| 18 | |
| 19 | def tick(self, name): |
| 20 | if not self.enabled: |
| 21 | return |
| 22 | self.timer[name] = time() |
| 23 | if name not in self.time_log: |
| 24 | self.time_log[name] = list() |
| 25 | |
| 26 | def tok(self, name): |
| 27 | if not self.enabled: |
| 28 | return |
| 29 | if name not in self.timer: |
| 30 | return |
| 31 | torch.cuda.synchronize() |
| 32 | elapsed = time() - self.timer[name] |
| 33 | if self.verbose: |
| 34 | print(f"{name}: {elapsed * 1000:.2f} ms") |
| 35 | else: |
| 36 | self.time_log[name].append(elapsed * 1000) |
nothing calls this directly
no outgoing calls
no test coverage detected