def plot_mem_conv50(config, local_dir, logs, iters): def smoother(ss): return ss.ewm(span=15).mean() df, _, fig = pl.memory_usage(logs, iter_times=iters[0:10], mem_type='GPU_0_bfc', smoother=smoother) return fig
def plot_mem_ptbL(config, local_dir, logs, iters): def smoother(ss): return ss df, _, fig = pl.memory_usage(logs, iter_times=iters[0:10], mem_type='GPU_0_bfc', smoother=smoother) return fig
def plot_mem_resnet50_25(config, local_dir, logs, iters): def smoother(ss, ss2): print('{}, {}, {}'.format(ss.min(), ss.max(), ss2.mean())) return ss # return ss.ewm(span=15).mean() df, _, fig = pl.memory_usage(logs, iter_times=iters[0:10], mem_type='GPU_0_bfc', smoother=smoother) return fig
def plot_mem_resnet152_75(config, local_dir, logs, iters): def smoother(ss, ss2): print('{}, {}, {}'.format(ss.min(), ss.max(), ss2.mean())) return ss # return ss.ewm(span=15).mean() df, _, fig = pl.memory_usage(logs, ends=iters[0][1], show_avg=False, mem_type='GPU_0_bfc') fig.set_size_inches(3.45, 1.75, forward=True) return fig
def plot_nested_doll_mix5_samelength(config, local_dir, logs, iters): with mpl.style.context(('color5')): pf.preprocess(local_dir) perfdf = pf.load_file(os.path.join(local_dir, 'sessiter.output')) fig = plt.figure() spec = mpl.gridspec.GridSpec(2, 1, height_ratios=[1, 3]) spec.update(hspace=0.2, left=0.18, right=.98, top=.8, bottom=0.22) ax0 = fig.add_subplot(spec[0]) ax1 = fig.add_subplot(spec[1], sharex=ax0) plt.setp(ax0.get_xticklabels(), visible=False) df, _ = pf.session_counters(perfdf, colnames=['scheduled'], ax=ax0) def smoother(ss): sampled = ss.resample('50ms').interpolate(method='time') print("previous len: {} now: {}".format(len(ss), len(sampled))) return sampled df, _, _ = pl.memory_usage(logs, mem_type='GPU_0_bfc', per_sess=True, ax=ax1, show_avg=False, smoother=smoother) ax0.set_title('Scheduled Tasks') ax0.legend().set_visible(False) handles, labels = ax1.get_legend_handles_labels() ax1.legend(handles=handles, labels=[ 'alexnet_100', 'overfeat_50', 'googlenet_50', "inception3_25", "resnet50_50" ], ncol=3, loc='upper center', bbox_to_anchor=(0.48, -0.19), frameon=False) ax0.set_ylabel('# of Tasks') ax1.set_xlabel('Time (s)') ax1.set_title('Memory Usage') ax1.tick_params(axis='x', labelsize=8) ax1.tick_params(axis='y', labelsize=8) ax0.tick_params(axis='y', labelsize=8) return fig
def plot_fair20(config, local_dir, logs, iters): with mpl.style.context(('grayscale20')): def smoother(ss): sampled = ss.resample('500us').interpolate(method='time') print("previous len: {} now: {}".format(len(ss), len(sampled))) return sampled df, _, fig = pl.memory_usage(logs, mem_type='GPU_0_bfc', per_sess=True, show_avg=False) ax = fig.axes[-1] ax.legend().remove() ax.set_title('Memory Usage') # ax.set_title('resnet50_50 of 265,180,170,100 iterations') fig.tight_layout(pad=0) # fig.adjust(right=.98, top=.85, left=.2, bottom=.2) return fig
def plot_case_bigsmall_wc(config, local_dir, logs, iters): pf.preprocess(local_dir) perfdf = pf.load_file(os.path.join(local_dir, 'sessiter.output')) fig = plt.figure() spec = mpl.gridspec.GridSpec(2, 1, height_ratios=[1, 3]) spec.update(hspace=0.2, left=0.16, right=.98, top=.8, bottom=0.18) ax0 = fig.add_subplot(spec[0]) ax1 = fig.add_subplot(spec[1], sharex=ax0) plt.setp(ax0.get_xticklabels(), visible=False) df, _ = pf.session_counters(perfdf, colnames=['scheduled'], ax=ax0) def smoother(ss): sampled = ss.resample('500us').interpolate(method='time') print("previous len: {} now: {}".format(len(ss), len(sampled))) return sampled df, _, _ = pl.memory_usage(logs, mem_type='GPU_0_bfc', per_sess=True, ax=ax1, show_avg=False, smoother=smoother) ax0.legend().set_visible(False) handles, labels = ax1.get_legend_handles_labels() ax1.legend(handles=handles, labels=['alexnet_100', 'inception3_25'], ncol=2, loc='upper center', bbox_to_anchor=(0.5, -0.2), frameon=False) ax0.set_ylabel('Scheduled\nTasks') ax1.set_xlabel('Time (s)') ax1.set_xlim([0, 115 * 1e9]) ax1.tick_params(axis='x', labelsize=8) ax1.tick_params(axis='y', labelsize=8) ax0.tick_params(axis='y', labelsize=8) return fig