前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >roofline model - plus studio

roofline model - plus studio

作者头像
plus sign
发布2024-04-11 09:59:32
960
发布2024-04-11 09:59:32
举报
文章被收录于专栏:个人博客个人博客

roofline model

定义 \[运算强度 = 运算量/访存量\] 运算量是 一个样本进行一次前向传播的浮点运算次数 访存量是 一个样本进行一次前向传播的内存交换数量

以运算强度为横轴、每秒浮点运算次数为纵轴画图,就能得到roofline

roofline
roofline

算力决定屋顶的高度,带宽决定屋檐的斜率。

所有的计算对应的点都不会超过红绿线

红色部分叫做带宽瓶颈区域,模型计算强度达不到设备的最大性能是,这个时候模型性能由带宽和模型自身计算能力决定。这个时候只需要增加带宽,或者增加模型自身计算能力就可以提升性能(理论上)

绿色部分叫做计算瓶颈区域,不管模型计算强度怎么增加,模型的性能都不会超过红线。这个时候模型会充分压榨算力平台算力

12345678910111213141516171819202122232425

import matplotlib.pyplot as pltimport numpy as np# 峰值性能(Peak Performance)与内存带宽(Memory Bandwidth)peak_performance = 100 # 以 GFLOPS 表示, 处理器可以达到的最大浮点运算性能memory_bandwidth = 10 # 以 GB/s 表示, 内存与处理器之间每秒可以交换的最大数据量# 设置算术密集度的范围(FLOPS/Byte)arithmetic_intensity = np.logspace(-2, 2, num=100)# 计算绩效上限performance_limit = np.minimum(peak_performance, memory_bandwidth * arithmetic_intensity)# 绘制 Roofline 模型plt.loglog(arithmetic_intensity, performance_limit, label='Roofline')app_arithmetic_intensity = 0.2 # FLOPS/Byte 运算量/访存量app_peak_performance = 0.8 # 每秒进行的浮点运算次数# 标记应用程序性能plt.scatter(app_arithmetic_intensity, app_peak_performance, color='red', label='App Performance')# 添加图例和标签plt.xlabel('Arithmetic Intensity (FLOPS/Byte)')plt.ylabel('Performance (GFLOPS)')plt.legend()plt.grid(True, which="both", ls="--")plt.title('Roofline Model')# 显示图表plt.show()

优化手段可以分为两类 1. 提高算力 2. 提高带宽

对于 Memory-bound(红色) 的任务,优化内存带宽更加有效;而对于 Compute-bound(绿色) 的任务,则应该优化算力

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-4-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • roofline model
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com