diff --git a/scripts/plot.py b/scripts/plot.py index 38334593cf84493ff2ae228f150cae35981195f9..fc16665b9989bece767c0ebca84fc5aa7cd913fc 100644 --- a/scripts/plot.py +++ b/scripts/plot.py @@ -30,26 +30,35 @@ def main( elif name == "timeseq": for ndim, group_ndim in df.groupby('ndim'): plt.figure() - for (kernel_type, interp_type, tree_height, interp_order), group in group_ndim.groupby(['kernel_type', 'interp_type', 'tree_height', 'interp_order']): - x = group['size'] - y = group['timefull_avg'] - plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}-o={interp_order}") + for interp_type, group_interp in group_ndim.groupby('interp_type'): + x = group_interp['size'] + y = group_interp['timefull_avg'] + plt.plot(x, y, label=f"i={interp_type}", marker='x') + if interp_type == 1: + for xi, yi, height in zip(x, y, group_interp['tree_height']): + plt.text(xi, yi, str(height), fontsize=8, ha='right') + kernel_type = group_interp['kernel_type'].iloc[0] + interp_order = group_ndim['interp_order'].iloc[0] plt.xlabel('Size') plt.ylabel('Time (s)') - plt.title(f'Time vs. Size (d={ndim})') + plt.title(f'Time vs. Size (d={ndim},k={kernel_type},o={interp_order})') plt.legend() plt.savefig(f'scalfmm_timeseq_d={ndim}.pdf', bbox_inches='tight') elif name == "timeomp": for ndim, group_ndim in df.groupby('ndim'): plt.figure() - for (kernel_type, interp_type, tree_height, interp_order, size, groupsize), group in group_ndim.groupby(['kernel_type', 'interp_type', 'tree_height', 'interp_order', 'size', 'groupsize']): - x = group['nthread'] - y = group['timefull_avg'] - plt.plot(x, y, label=f"k={kernel_type}-i={interp_type}-h={tree_height}-o={interp_order}-{size}-{groupsize}") + for groupsize, group_groupsize in group_ndim.groupby('groupsize'): + x = group_groupsize['nthread'] + y = group_groupsize['timefull_avg'] + plt.plot(x, y, label=f"gs={groupsize}", marker='x') + size = group_groupsize['size'].iloc[0] + kernel_type = group_groupsize['kernel_type'].iloc[0] + interp_order = group_groupsize['interp_order'].iloc[0] + tree_height = group_groupsize['tree_height'].iloc[0] plt.xlabel('Number of threads') plt.ylabel('Time (s)') - plt.title(f'Time vs. Number of threads (d={ndim})') + plt.title(f'Time vs. Number of threads (d={ndim},s={size},k={kernel_type},o={interp_order},h={tree_height})') plt.legend() plt.savefig(f'scalfmm_timeomp_d={ndim}.pdf', bbox_inches='tight')