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"))