From 9e9bc8dc72523ae4f16e1b94df2b5d97a19c0828 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Wed, 11 Jan 2017 13:37:21 +0100
Subject: [PATCH] Update the floprate calculating script

---
 bin/calculate_floprate.py | 33 +++++++++++++++++++++------------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/bin/calculate_floprate.py b/bin/calculate_floprate.py
index c168643d..d149d2b0 100755
--- a/bin/calculate_floprate.py
+++ b/bin/calculate_floprate.py
@@ -1,31 +1,40 @@
 #!/usr/bin/env python
 
+import os
 import pandas
+import re
+
+
+def join_csv_files():
+    with open('timings.csv', 'w') as out:
+        for f in os.listdir(os.getcwd()):
+            match = re.match(".*rank-([0-9]*).csv", f)
+            if match:
+                for line in open(f, 'r'):
+                    out.write("{} {}".format(match.group(1), line))
 
 
 def parse_data():
-    frame = pandas.read_csv('timings.csv', header=None, names=('exec', 'kernel', 'what', 'value'), delimiter=' ')
+    frame = pandas.read_csv('timings.csv', header=None, names=('rank', 'exec', 'kernel', 'what', 'value'), delimiter=' ')
     time = frame[frame.what == "time"]
     ops = frame[frame.what != "time"]
 
-    # Here we should take 'min', but right now there are some zeroes written
-    timedata = time.groupby(('exec', 'kernel'))['value'].min()
-    opsdata = ops.groupby(('exec', 'kernel'))['value'].max()
+    timedata = time.groupby(('rank', 'exec', 'kernel'))['value'].min().to_frame().reset_index().groupby(('exec', 'kernel'))['value'].max()
+    opsdata = ops.groupby(('rank', 'exec', 'kernel'))['value'].max().to_frame().reset_index().groupby(('exec', 'kernel'))['value'].max()
 
     return timedata, opsdata
 
 
 def calculate_floprate():
+    join_csv_files()
     time, ops = parse_data()
 
-    for key in time.keys():
-        exe, kernel = key
-        if "nonopcount" in exe and kernel != "total":
-            opexe = exe.replace("nonopcount", "opcount")
-            print("exe={}".format(exe))
-            print("opexe={}".format(opexe))
-            print("kernel={}".format(kernel))
-            print("FLOPS={}\n".format(ops[opexe][kernel] / time[exe][kernel]))
+    with open('floprates.csv', 'w') as out:
+        for key in time.keys():
+            exe, kernel = key
+            if "nonopcount" in exe and kernel != "total":
+                opexe = exe.replace("nonopcount", "opcount")
+                out.write(" ".join([exe, kernel, str((ops[opexe][kernel] / time[exe][kernel]) / 1e9)]) + "\n")
 
 
 if __name__ == '__main__':
-- 
GitLab