|
| 1 | +import os, sys |
| 2 | + |
| 3 | +runs = { |
| 4 | + "[email protected]_cuda-release" : [ "seq", "omp", "cuda"], |
| 5 | + "[email protected]" : [ "seq", "omp"], |
| 6 | + "[email protected]" : [ "seq", "omp"], |
| 7 | + "[email protected]" : [ "seq", "omp"], |
| 8 | + "[email protected]_hip-release" : [ "seq", "hip"], |
| 9 | + "[email protected]_hip-release" :[ "seq", "hip"] |
| 10 | +} |
| 11 | + |
| 12 | +sizes = (50, 100, 200, 500, 1000, 1500, 2000, 4000, 8000) |
| 13 | + |
| 14 | +def generate(): |
| 15 | + for r in runs: |
| 16 | + filename = os.path.join(r, "run_concentric_circles.bash") |
| 17 | + f = open(filename, "wt") |
| 18 | + f.write("#!/bin/bash\n\n") |
| 19 | + f.write("CONCENTRIC_CIRCLES=./examples/mir_concentric_circles\n\n") |
| 20 | + |
| 21 | + for s in sizes: |
| 22 | + f.write(f"# Size {s}\n") |
| 23 | + for policy in runs[r]: |
| 24 | + f.write(f'echo "Running --gridsize {s} --numcircles 5 --policy {policy}"\n') |
| 25 | + f.write(f'$CONCENTRIC_CIRCLES --gridsize {s} --numcircles 5 --policy {policy} > result_{policy}_{s}.txt\n\n') |
| 26 | + |
| 27 | + f.close() |
| 28 | + os.chmod(filename, 0o700) |
| 29 | + print(f"Wrote {filename}") |
| 30 | + |
| 31 | +def read_timings(filename): |
| 32 | + retval = "" # no data |
| 33 | + try: |
| 34 | + lines = open(filename, "rt").readlines() |
| 35 | + for line in lines: |
| 36 | + pos = line.find("runMIR") |
| 37 | + if pos != -1: |
| 38 | + toks = [x for x in line.split() if x != ''] |
| 39 | + retval = float(toks[2]) # timings (I) |
| 40 | + break |
| 41 | + except: |
| 42 | + pass |
| 43 | + return retval |
| 44 | + |
| 45 | +def make_csv(outputfile): |
| 46 | + columns = [] |
| 47 | + # Add sizes column |
| 48 | + sc = ["Sizes"] |
| 49 | + for s in sizes: |
| 50 | + sc.append(s) |
| 51 | + columns.append(sc) |
| 52 | + |
| 53 | + # Gather data. |
| 54 | + for r in sorted(runs.keys()): |
| 55 | + for policy in runs[r]: |
| 56 | + buildname = r[6:-8] |
| 57 | + name = f"{buildname} {policy.upper()}" |
| 58 | + data = [name] |
| 59 | + for s in sizes: |
| 60 | + filename = os.path.join(r, f"result_{policy}_{s}.txt") |
| 61 | + value = read_timings(filename) |
| 62 | + data.append(value) |
| 63 | + columns.append(data) |
| 64 | + |
| 65 | + # Write data |
| 66 | + f = open(outputfile, "wt") |
| 67 | + nrows = len(columns[0]) |
| 68 | + for i in range(nrows): |
| 69 | + rowdata = [str(c[i]) for c in columns] |
| 70 | + line = ",".join(rowdata) |
| 71 | + f.write(f"{line}\n") |
| 72 | + f.close() |
| 73 | + |
| 74 | +def main(): |
| 75 | + if "--generate" in sys.argv: |
| 76 | + generate() |
| 77 | + else: |
| 78 | + make_csv("concentric_circle_timings.csv") |
| 79 | + |
| 80 | +main() |
0 commit comments