File: combine_csv.py

package info (click to toggle)
pytorch-cuda 2.6.0%2Bdfsg-7
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid, trixie
  • size: 161,620 kB
  • sloc: python: 1,278,832; cpp: 900,322; ansic: 82,710; asm: 7,754; java: 3,363; sh: 2,811; javascript: 2,443; makefile: 597; ruby: 195; xml: 84; objc: 68
file content (50 lines) | stat: -rw-r--r-- 1,296 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# This script takes csvs produced by parse_logs.py and combines them
# into a single CSV file

import ast
import csv
import sys
from collections import defaultdict


assert len(sys.argv) == 3

RESULTS = defaultdict(dict)

for side, f in zip(["static", "dynamic"], sys.argv[1:]):
    with open(f) as f:
        reader = csv.DictReader(f)
        for row in reader:
            RESULTS[(row["bench"], row["name"])][side] = row

fields = ["frame_time", "graph_breaks"]

out = csv.DictWriter(
    sys.stdout,
    ["bench", "name"] + [f"delta_{n}" for n in fields] + ["static_url", "dynamic_url"],
    dialect="excel",
)
out.writeheader()

for (bench, name), sides in RESULTS.items():
    if "static" not in sides:
        continue
    if "dynamic" not in sides:
        continue
    if not name:
        out.writerow(
            {
                "static_url": sides["static"]["explain"],
                "dynamic_url": sides["dynamic"]["explain"],
            }
        )
        continue
    row = {"bench": bench, "name": name}
    for f in fields:
        try:
            static = ast.literal_eval(sides["static"][f])
            dynamic = ast.literal_eval(sides["dynamic"][f])
        except SyntaxError:
            continue
        row[f"delta_{f}"] = dynamic - static
    out.writerow(row)