import numpy as np import seaborn as sns import matplotlib.pyplot as plt import math sns.set(style="white", context="talk") plt.rcdefaults() DPI=300 BBOX_INCHES='tight' def autolabel(ax, rect): """ Attach a text label above each bar displaying its height """ height = rect.get_height() ax.text(rect.get_x() + rect.get_width()/2., 1.05*height, '%d' % int(round(height)), ha='center', va='bottom') path="figures/mlfmm" width=0.33 WALLTIME="0.8" SPEEDUP="0.5" fig, axes = plt.subplots(2,1) ax=axes[0] ax.set_title("(a)") systems = ('1T\n(1 XE)', "32T\n(1 XE)", "1 GPU\n(1 XK)" ,"4 GPU\n(4 XK)", "16 GPU\n(16 XK)") mlfmm = (1.50e6, 8.64e4, 2.783779e4, 7.01e3, 1.89e3) num = (45,45,45,45,47) x_pos = np.arange(len(systems)) rects = ax.bar([p-width/2 for p in x_pos], [i/j for i,j in zip(mlfmm,num)], color=WALLTIME, log=True, width=width) autolabel(ax, rects[0]) autolabel(ax, rects[1]) autolabel(ax, rects[2]) autolabel(ax, rects[3]) autolabel(ax, rects[4]) ax.set_ylim(1,2e5) ax2=ax.twinx() rects = ax2.bar([p+width/2 for p in x_pos], [mlfmm[0] / i for i in mlfmm], color=SPEEDUP, log=True, width=width) autolabel(ax2, rects[1]) autolabel(ax2, rects[2]) autolabel(ax2, rects[3]) autolabel(ax2, rects[4]) ax2.set_ylim(1,5e3) ax.set_xticks(x_pos) ax.set_xticklabels(systems) ax=axes[1] ax.set_title("(b)") systems = ('1T\n(1 S822LC)', "160T\n(1 S822LC)", "1 GPU\n(1 S822LC)" ,"4 GPU\n(1 S822LC)") mlfmm = [1.25e6, 4.84e4, 5.22e3, 1.29e3] num = (44,44,44,44) x_pos = np.arange(len(systems)) rects = ax.bar([p-width/2 for p in x_pos], [i/j for i,j in zip(mlfmm,num)], color=WALLTIME, log=True, width=width) autolabel(ax, rects[0]) autolabel(ax, rects[1]) autolabel(ax, rects[2]) autolabel(ax, rects[3]) ax.set_ylim(1,2e5) ax2=ax.twinx() rects = ax2.bar([p+width/2 for p in x_pos], [mlfmm[0] / i for i in mlfmm], color=SPEEDUP, log=True, width=width) autolabel(ax2, rects[1]) autolabel(ax2, rects[2]) autolabel(ax2, rects[3]) ax2.set_ylim(1,5e3) ax.set_xticks(x_pos) ax.set_xticklabels(systems) fig.text(-0.01, 0.5, "Per-MLFMM Execution Time (ms)", va='center', rotation='vertical') fig.text(0.99, 0.5, "Speedup over Sequential", va='center', rotation='vertical') fig.tight_layout() plt.savefig(path+'.pdf', bbox_inches=BBOX_INCHES) plt.savefig(path+'.png', dpi=DPI, bbox_inches=BBOX_INCHES)