Files
pytorch/benchmarks/dynamo/microbenchmarks/dynamo_microbenchmarks.py
2024-03-18 18:08:06 +00:00

44 lines
957 B
Python

import cProfile
import pstats
import timeit
import torch
@torch.compile(backend="eager", fullgraph=True)
def symbolic_convert_overhead_stress_test(x, y, n):
while n > 0:
n -= 1
x, y = y, x
return x + y
def main():
def fn():
torch._dynamo.reset()
symbolic_convert_overhead_stress_test(x, y, 100000)
x = torch.randn(16)
y = torch.randn(16)
t = min(timeit.repeat(fn, number=1, repeat=3))
print(f"symbolic_convert_overhead_stress_test: {t:.1f}s")
def profile():
x = torch.randn(16)
y = torch.randn(16)
torch._dynamo.reset()
pr = cProfile.Profile()
pr.enable()
# 100k > 33k roughly cancels out the overhead of cProfile
symbolic_convert_overhead_stress_test(x, y, 33000)
pr.disable()
ps = pstats.Stats(pr)
ps.dump_stats("dynamo_microbenchmarks.prof")
print("snakeviz dynamo_microbenchmarks.prof")
if __name__ == "__main__":
main()
profile()