|
|
|
@ -1,11 +1,77 @@
|
|
|
|
|
import pandas as pd
|
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
def p(data, width=14):
|
|
|
|
|
print(list(data))
|
|
|
|
|
with pd.option_context('display.max_colwidth', width, 'expand_frame_repr', False):
|
|
|
|
|
mw = pd.get_option('display.max_colwidth')
|
|
|
|
|
print(data.rename(columns=lambda x: x[:mw-3] + '...' if len(x) > mw else x))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def pq(data):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
filename = 'cz308.output'
|
|
|
|
|
filename = 'withmpi-cz40948.output'
|
|
|
|
|
filename = 'tokam_id_16p.output'
|
|
|
|
|
|
|
|
|
|
f = pd.read_csv(filename, sep=';')
|
|
|
|
|
|
|
|
|
|
swap_di = {16:'persistant' , 32: 'nonpersistant'}
|
|
|
|
|
swap_di = {8:'psblas', 16:'persistent' , 32: 'nonpersistent'}
|
|
|
|
|
f['swap_mode'].replace(swap_di, inplace=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q = f[['num_iterations','swap_mode','ave_halo_t_pi']]
|
|
|
|
|
q_nonb_p2p = q[q.swap_mode=='psblas']
|
|
|
|
|
q_per_nonb_col = q[q.swap_mode=='persistent']
|
|
|
|
|
q_nonper_nonb_col = q[q.swap_mode=='nonpersistent']
|
|
|
|
|
|
|
|
|
|
nonb_p2p_marker = 'g+-'
|
|
|
|
|
per_nonb_col_marker = 'rs-'
|
|
|
|
|
nonper_nonb_col_marker = 'bx-'
|
|
|
|
|
|
|
|
|
|
x_axis_label = 'Number of Halo Communications'
|
|
|
|
|
y_axis_label = 'Time per iteration (microseconds)'
|
|
|
|
|
ave_halo_title = "Average Halo Time per Communication (1-3000)"
|
|
|
|
|
ave_halo_title_100 = "Average Halo Time per Communication (1-100)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# the whole scale
|
|
|
|
|
plt.figure()
|
|
|
|
|
plt.plot(q_nonb_p2p.num_iterations, q_nonb_p2p.ave_halo_t_pi, nonb_p2p_marker, label='Non-blocking Point-to-Point')
|
|
|
|
|
plt.plot(q_per_nonb_col.num_iterations, q_per_nonb_col.ave_halo_t_pi, per_nonb_col_marker, label='Persistent Non-blocking Collective')
|
|
|
|
|
plt.plot(q_nonper_nonb_col.num_iterations, q_nonper_nonb_col.ave_halo_t_pi, nonper_nonb_col_marker, label='Non-persistent Non-Blocking Collective')
|
|
|
|
|
plt.legend()
|
|
|
|
|
plt.title(ave_halo_title)
|
|
|
|
|
plt.xlabel(x_axis_label)
|
|
|
|
|
plt.ylabel(y_axis_label)
|
|
|
|
|
|
|
|
|
|
# iterations below
|
|
|
|
|
ni = 101
|
|
|
|
|
q_nonb_p2p = q[(q.swap_mode=='psblas') & (q.num_iterations < ni)]
|
|
|
|
|
q_per_nonb_col = q[(q.swap_mode=='persistent') & (q.num_iterations < ni)]
|
|
|
|
|
q_nonper_nonb_col = q[(q.swap_mode=='nonpersistent') & (q.num_iterations < ni)]
|
|
|
|
|
plt.figure()
|
|
|
|
|
plt.plot(q_nonb_p2p.num_iterations, q_nonb_p2p.ave_halo_t_pi, nonb_p2p_marker, label='Non-blocking Point-to-Point')
|
|
|
|
|
plt.plot(q_per_nonb_col.num_iterations, q_per_nonb_col.ave_halo_t_pi, per_nonb_col_marker, label='Persistent Non-blocking Collective')
|
|
|
|
|
plt.plot(q_nonper_nonb_col.num_iterations, q_nonper_nonb_col.ave_halo_t_pi, nonper_nonb_col_marker, label='Non-persistent Non-Blocking Collective')
|
|
|
|
|
plt.legend()
|
|
|
|
|
plt.title(ave_halo_title_100)
|
|
|
|
|
plt.xlabel(x_axis_label)
|
|
|
|
|
plt.ylabel(y_axis_label)
|
|
|
|
|
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
w = f[f.np==16]
|
|
|
|
|
|
|
|
|
|
# q = f.loc[f.np==16, 'total_time':'ave_request_create_t']
|
|
|
|
|
# w = f.loc[f.np==16, 'ave_alltoall_comm_t':'ave_request_create_t']
|
|
|
|
|
w = f.loc[f.np==16, 'num_iterations':'ave_halo_t_pi']
|
|
|
|
|
w2 = f.loc[f.np==16, 'ave_neighbors':'min_rcv']
|
|
|
|
|
|
|
|
|
|
# p(w)
|
|
|
|
|
p(w,10)
|
|
|
|
|
p(w2,6)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q = f[['np','ave_time','swap_mode']]
|
|
|
|
|
q['swap_mode'].replace(swap_di, inplace=True)
|
|
|
|
|