Files
tilelang/maint/scripts/ci_performance.py
T
Wenhao Xie 5501b31c3b [Doc] Python API docs generation (#278)
* fix bug

* update performance.py

* update python api docs

* test workflow

* fix dependency

* fix bug

* fix

* update correct git config

* test workflow

* clear cache

* lint fix

* fix exclude path
2025-03-27 17:32:19 +08:00

50 lines
1.7 KiB
Python

import subprocess
import re
from tabulate import tabulate
import os
env = os.environ.copy()
env["TILELANG_CLEAR_CACHE"] = "1"
def parse_output(output):
data = {}
for line in output.split('\n'):
line = line.strip()
if line.startswith('Latency:'):
match = re.search(r'Latency: ([\d.]+)', line)
data['latency'] = match.group(1) if match else 'N/A'
elif line.startswith('TFlops:'):
match = re.search(r'TFlops: ([\d.]+)', line)
data['best_tflops'] = match.group(1) if match else 'N/A'
elif line.startswith('Config:'):
data['config'] = line.split('Config: ')[-1]
elif line.startswith('Reference TFlops:'):
match = re.search(r'Reference TFlops: ([\d.]+)', line)
data['ref_tflops'] = match.group(1) if match else 'N/A'
return data
output_v1 = subprocess.run(['./tl/bin/python', './maint/scripts/performance.py'],
capture_output=True,
text=True,
env=env).stdout
data_v1 = parse_output(output_v1)
output_v2 = subprocess.run(['./tll/bin/python', './maint/scripts/performance.py'],
capture_output=True,
text=True,
env=env).stdout
data_v2 = parse_output(output_v2)
table = [[
"original", data_v1['latency'], data_v1['best_tflops'], data_v1['ref_tflops'], data_v1['config']
], [
"current", data_v2['latency'], data_v2['best_tflops'], data_v2['ref_tflops'], data_v2['config']
]]
headers = ["version", "Best Latency (s)", "Best TFlops", "Reference TFlops", "Best Config"]
print(tabulate(table, headers=headers, tablefmt="github", stralign="left", numalign="decimal"))