In [15]:
from __future__ import print_function
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker
import glob
import re
%matplotlib inline
from IPython.display import display
from collections import OrderedDict
In [2]:
def computeSpeedupEfficiency(df):
"""
Given a datafram with index of the number of threads, and the colums
multiple time measurements, computer the derived speed up and efficiency.
"""
for colName in df.columns:
cloc = df.columns.get_loc(colName)
# time with 1 thread
t1 = df.iloc[0][colName]
#df["Optimal"] = df_2d.iloc[0,1]/df_2d.index.values*(1.0)
df.insert(loc=cloc+1,
column="Relative Speedup {0}".format(colName),
value=t1/df.iloc[:,cloc])
df.insert(loc=cloc+1,
column="Relative Efficiency {0}".format(colName),
value=t1/(df.iloc[:,cloc]*df.index))
In [18]:
df_dict = {re.search('performance_vhm_lab(.*).csv',f).group(0):pd.read_csv(f) for f in glob.glob("*.csv")}
df_dict = OrderedDict(sorted(df_dict.items(), key=lambda t: t[0]))
for k in df_dict.keys():
m=re.search('performance_vhm_lab_100_(.+).csv',k)
if(m):
newk = m.group(1)
df_dict[newk]=df_dict.pop(k)
k=newk
else:
del(df_dict[k])
print("removing {0}".format(k))
continue;
df_dict[k].set_index(df_dict[k].columns[0],inplace=True)
df_dict[k].sort_index(inplace=True)
computeSpeedupEfficiency(df_dict[k])
In [19]:
print(df_dict.keys())
In [20]:
plot_data=pd.concat([df_dict[k]["With Connectivity"] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
plot_data=pd.concat([df_dict[k]["Relative Speedup With Connectivity"] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
plt.figure(dpi=320, figsize=(10, 10))
ax = plot_data.loc[:44].plot(figsize=(10, 8))
In [66]:
fig, axes = plt.subplots(ncols=2, dpi=320, figsize=(10, 5))
C="Without Connectivity"
plot_data=pd.concat([df_dict[k][C] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
ax = plot_data.plot(ax=axes[0], kind="bar")
ax.set_ylabel("seconds")
ax.legend().set_visible(False)
ax.set_title(C)
C="With Connectivity"
plot_data=pd.concat([df_dict[k][C] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
ax = plot_data.plot(ax=axes[1], kind="bar")
ax.set_title(C)
fig.savefig("ITKv5_time.eps")
In [28]:
C="Without Connectivity"
plot_data=pd.concat([df_dict[k][C] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
display(plot_data)
print(plot_data.to_latex(float_format='%.5f'))
C="With Connectivity"
plot_data=pd.concat([df_dict[k][C] for k in df_dict.keys()],axis=1,keys=df_dict.keys())
display(plot_data)
print(plot_data.to_latex(float_format='%.5f'))
In [59]:
colormap="Set2"
C="Without Connectivity"
plot_data=pd.concat([df_dict["Platform"][C]/df_dict["TBB-ITKv5"][C],
df_dict["TBB"][C]/df_dict["TBB-ITKv5"][C],
df_dict["Pool"][C]/df_dict["Pool-ITKv5"][C],
df_dict["Platform"][C]/df_dict["Platform-ITKv5"][C]],
axis=1,
keys=["Platform/TBB-ITKv5","TBB/TBB-ITKv5","Pool/Pool-ITKv5","Platform/Platform-ITKv5"])
fig, axes = plt.subplots(ncols=2, dpi=320, figsize=(10, 5))
ax =plot_data.plot(ax=axes[0], kind="bar",ylim=(0.9,1.4),colormap=colormap)
ax.legend().set_visible(False)
ax.set_title(C)
ax.set_ylabel("Speedup")
C="With Connectivity"
plot_data=pd.concat([df_dict["Platform"][C]/df_dict["TBB-ITKv5"][C],
df_dict["TBB"][C]/df_dict["TBB-ITKv5"][C],
df_dict["Pool"][C]/df_dict["Pool-ITKv5"][C],
df_dict["Platform"][C]/df_dict["Platform-ITKv5"][C]],
axis=1,
keys=["Platform/TBB-ITKv5","TBB/TBB-ITKv5","Pool/Pool-ITKv5","Platform/Platform-ITKv5"])
ax=plot_data.plot(ax=axes[1], kind="bar",ylim=(0.9,1.4),colormap=colormap)
ax.yaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.set_title(C)
fig.savefig("ITKv5_speedup.eps")
In [ ]:
display(df_dict["tbb"][C])
display(df_dict["tbb-new"][C])
In [64]:
C="Without Connectivity"
plot_data=pd.concat([df_dict["Platform"][C]/df_dict["TBB-ITKv5"][C],
df_dict["TBB"][C]/df_dict["TBB-ITKv5"][C],
df_dict["Pool"][C]/df_dict["Pool-ITKv5"][C],
df_dict["Platform"][C]/df_dict["Platform-ITKv5"][C]],
axis=1,
keys=["Platform/TBB-ITKv5","TBB/TBB-ITKv5","Pool/Pool-ITKv5","Platform/Platform-ITKv5"])
display(plot_data)
print(plot_data.to_latex(float_format='%.5f'))
C="With Connectivity"
plot_data=pd.concat([df_dict["Platform"][C]/df_dict["TBB-ITKv5"][C],
df_dict["TBB"][C]/df_dict["TBB-ITKv5"][C],
df_dict["Pool"][C]/df_dict["Pool-ITKv5"][C],
df_dict["Platform"][C]/df_dict["Platform-ITKv5"][C]],
axis=1,
keys=["Platform/TBB-ITKv5","TBB/TBB-ITKv5","Pool/Pool-ITKv5","Platform/Platform-ITKv5"])
display(plot_data)
print(plot_data.to_latex(float_format='%.5f'))