Skip to content

Commit 43851fb

Browse files
jamesjwufacebook-github-bot
authored andcommitted
Fix get_top() to return the base level event of the stack, not the most recently started event (#146649)
Summary: `get_top()` is really confusing when talking about a stack, because it can mean the most recently started event on the stack or the toplevel event in perfetto(which displays the stack upside down). Rename to `get_outermost` and fix the bug associated with it, so that it returns the correct value out of the stack. Running nanogpt now puts `guard_latency_us` correctly in the `dynamo` event: ``` tlp python benchmarks/dynamo/torchbench.py --backend inductor --device cuda --only nanogpt --amp --cold-start-latency --print-compilation-time --training --performance 2>&1 --dynamic-shapes | tee out.log ``` <img width="1281" alt="image" src="https://github.com/user-attachments/assets/4eeb371a-4d81-415a-acc4-7d303a4b2a93" /> X-link: pytorch/pytorch#146649 Approved by: https://github.com/masnesral, https://github.com/anijain2305 Reviewed By: atalman Differential Revision: D69319924 fbshipit-source-id: a451463c786fe54113f953a7dfc5a4938cc9dddf
1 parent 4278a34 commit 43851fb

File tree

1 file changed

+11
-10
lines changed
  • userbenchmark/dynamo/dynamobench/_dynamo

1 file changed

+11
-10
lines changed

userbenchmark/dynamo/dynamobench/_dynamo/utils.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ def add_data(event_name: str, log_level: CompileEventLogLevel, **metadata: objec
380380
chromium_log.add_event_data(event_name, **metadata)
381381
else:
382382
assert log_level == CompileEventLogLevel.COMPILATION_METRIC
383-
top_event = chromium_log.get_top()
383+
top_event = chromium_log.get_outermost_event()
384384

385385
if event_name != top_event:
386386
raise RuntimeError(
@@ -402,7 +402,7 @@ def add_toplevel(log_level: CompileEventLogLevel, **metadata: object):
402402
"""
403403
Syntactic sugar for logging to the toplevel event
404404
"""
405-
top_event = get_chromium_event_logger().get_top()
405+
top_event = get_chromium_event_logger().get_outermost_event()
406406
if top_event is None:
407407
raise RuntimeError(
408408
"No toplevel event active. Please only call this function within a dynamo_timed context."
@@ -424,7 +424,7 @@ def increment(
424424
chromium_log.increment(event_name, key, value)
425425
else:
426426
assert log_level == CompileEventLogLevel.COMPILATION_METRIC
427-
top_event = chromium_log.get_top()
427+
top_event = chromium_log.get_outermost_event()
428428
if event_name != top_event:
429429
raise RuntimeError(
430430
"Log level is COMPILATION_METRIC, but event_name isn't the toplevel event. "
@@ -450,7 +450,7 @@ def increment_toplevel(
450450
Increments a value on the toplevel metric. By default, logs to metric.
451451
"""
452452
chromium_log = get_chromium_event_logger()
453-
top_event = chromium_log.get_top()
453+
top_event = chromium_log.get_outermost_event()
454454
if top_event is None:
455455
raise RuntimeError(
456456
"No toplevel event active. Please only call this function within a metrics context/dynamo_timed."
@@ -472,7 +472,7 @@ def add_to_set(
472472
chromium_log.add_to_set(event_name, key, value)
473473
else:
474474
assert log_level == CompileEventLogLevel.COMPILATION_METRIC
475-
top_event = chromium_log.get_top()
475+
top_event = chromium_log.get_outermost_event()
476476
if event_name != top_event:
477477
raise RuntimeError(
478478
"Log level is COMPILATION_METRIC, but event_name isn't the toplevel event. "
@@ -499,7 +499,7 @@ def add_to_set_toplevel(
499499
Defaults to COMPILATION_METRIC log level.
500500
"""
501501
chromium_log = get_chromium_event_logger()
502-
top_event = chromium_log.get_top()
502+
top_event = chromium_log.get_outermost_event()
503503
if top_event is None:
504504
raise RuntimeError(
505505
"No toplevel event active. Please only call this function within a metrics context/dynamo_timed."
@@ -1294,7 +1294,7 @@ def add_compilation_metrics_to_chromium(c: CompilationMetrics) -> None:
12941294
TODO: Get rid of this function and replace it with CompileEventLogger directly instead.
12951295
"""
12961296
event_logger = get_chromium_event_logger()
1297-
event_name = event_logger.get_top()
1297+
event_name = event_logger.get_outermost_event()
12981298
if not event_name:
12991299
return
13001300
event_logger.add_event_data(
@@ -1525,12 +1525,13 @@ def get_stack(self) -> list[str]:
15251525
self.tls.stack = []
15261526
return self.tls.stack
15271527

1528-
def get_top(self) -> Optional[str]:
1528+
def get_outermost_event(self) -> Optional[str]:
15291529
"""
1530-
Get the top event name or None if the stack is empty.
1530+
Get the outermost event name (i.e. the longest running event)
1531+
or None if the stack is empty.
15311532
"""
15321533
stack = self.get_stack()
1533-
return stack[-1] if stack else None
1534+
return stack[0] if stack else None
15341535

15351536
def get_pt2_compile_substack(self):
15361537
"""

0 commit comments

Comments
 (0)