| 517 | |
| 518 | |
| 519 | def plot_architectures(self): |
| 520 | graviton2 = [ |
| 521 | pd.read_csv(f'{self.results_directory}/c6g/fallback_scalar_aav_1024_uf1_falp.csv'), # Auto-Vectorized |
| 522 | pd.read_csv(f'{self.results_directory}/c6g/fallback_scalar_nav_1024_uf1_falp.csv'), # Scalar |
| 523 | pd.read_csv(f'{self.results_directory}/c6g/arm64v8_neon_intrinsic_1024_uf1_falp.csv')# SIMDized |
| 524 | ] |
| 525 | graviton3 = [ |
| 526 | pd.read_csv(f'{self.results_directory}/c7g/fallback_scalar_aav_1024_uf1_falp.csv'), # Auto-Vectorized |
| 527 | pd.read_csv(f'{self.results_directory}/c7g/fallback_scalar_nav_1024_uf1_falp.csv'), # Scalar |
| 528 | pd.read_csv(f'{self.results_directory}/c7g/arm64v8_neon_intrinsic_1024_uf1_falp.csv')# SIMDized |
| 529 | ] |
| 530 | icelake = [ |
| 531 | pd.read_csv(f'{self.results_directory}/i4i_4xlarge/fallback_scalar_aav_1024_uf1_falp.csv'), # Auto-Vectorized |
| 532 | pd.read_csv(f'{self.results_directory}/i4i_4xlarge/fallback_scalar_nav_1024_uf1_falp.csv'), # Scalar |
| 533 | pd.read_csv(f'{self.results_directory}/i4i_4xlarge/x86_64_avx512bw_intrinsic_1024_uf1_falp.csv')# SIMDized |
| 534 | ] |
| 535 | m1 = [ |
| 536 | pd.read_csv(f'{self.results_directory}/m1/fallback_scalar_aav_1024_uf1_falp.csv'), # Auto-Vectorized |
| 537 | pd.read_csv(f'{self.results_directory}/m1/fallback_scalar_nav_1024_uf1_falp.csv'), # Scalar |
| 538 | pd.read_csv(f'{self.results_directory}/m1/arm64v8_neon_intrinsic_1024_uf1_falp.csv')# SIMDized |
| 539 | ] |
| 540 | zen3 = [ |
| 541 | pd.read_csv(f'{self.results_directory}/m6a_xlarge/fallback_scalar_aav_1024_uf1_falp.csv'), # Auto-Vectorized |
| 542 | pd.read_csv(f'{self.results_directory}/m6a_xlarge/fallback_scalar_nav_1024_uf1_falp.csv'), # Scalar |
| 543 | pd.read_csv(f'{self.results_directory}/m6a_xlarge/x86_64_avx2_intrinsic_1024_uf1_falp.csv') # SIMDized |
| 544 | ] |
| 545 | |
| 546 | architecturesRaw = [graviton2, graviton3, icelake, m1, zen3] |
| 547 | |
| 548 | method = ['Auto-Vectorized', 'Scalar', 'SIMDized'] |
| 549 | architectures = ['Graviton2', 'Graviton3', 'Ice Lake', 'M1', 'Zen3'] |
| 550 | dfArch = [] |
| 551 | for i, arch in enumerate(architecturesRaw): |
| 552 | for j, df in enumerate(arch): |
| 553 | df['arch'] = architectures[i] |
| 554 | df['method'] = method[j] |
| 555 | dfArch.append(df) |
| 556 | df = pd.concat(dfArch) |
| 557 | df['tuples_per_cycle'] = 1 / df['cycles_per_tuple'] |
| 558 | df = df[ |
| 559 | (df['name'].str.contains('fused')) |
| 560 | & (~df['name'].str.contains('bw')) |
| 561 | & (~df['name'].str.contains('gov')) |
| 562 | ] |
| 563 | df = df[['tuples_per_cycle', 'arch', 'method']] |
| 564 | |
| 565 | font = {'size': 8} |
| 566 | matplotlib.rc('font', **font) |
| 567 | |
| 568 | fig, (ax1) = plt.subplots(1, 1, constrained_layout=True) |
| 569 | fig.set_size_inches(4.5, 1.8) |
| 570 | |
| 571 | sns.stripplot( |
| 572 | data=df, |
| 573 | x="arch", |
| 574 | y="tuples_per_cycle", |
| 575 | hue='method', |
| 576 | jitter=0.3, |