0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析Roofline模型实践

Linux阅码场 来源:面包板社区 作者:Linux阅码场 2021-04-28 16:14 次阅读

在多核异构的时代,软件人员普遍面临的一个困惑是,面对如此复杂的系统,应该如何部署我们的算法,是应该让它运行在CPUGPU还是甚至类似TPU的专门ASIC上才是最佳方案?另外给定特定的计算平台,我们的算法实现是不是已经榨干硬件平台的最大能力,还有没有进一步改善的空间?这些问题寻寻觅觅答案,真像雾里看花,我们渴望有一双慧眼,帮我们穿透迷津。

在衡量计算效能的正确姿势我们提到了内存带宽(memory bandiwidth)和以FLOPS为代表的算力是可以很好的刻画计算平台的两个指标。同时既然是要衡量算法的性能自然我们也要考虑算法的特性。基于此,论文《Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures》提出了Roofline模型,试图对硬件和软件通盘考虑,从而提出改善性能的洞见。

这里我们试着解释如下,首先我们要介绍运算强度(arithmetic intensity,简写成AI)的概念,指的是针对单位内存读写数据进行的运算次数,以FLOP/Byte为单位。比如衡量计算效能的正确姿势(2)介绍过的SAXPY,每次迭代,有三次内存访问(x读一次,y读写各一次),而有两次浮点运算(乘加各一次),所以其AI为(2 * N) / (3 * N * 4) = 1/6。

int N = 1 《《 22;

void saxpy(float a, float *x, float *y){

for (int i = 0; i 《 N; ++i)

y[i] = a*x[i] + y[i];

}

引进AI后,算力FLOPS就可以用以下公式来计算。

e6fcb8b8-a7f7-11eb-9728-12bb97331649.png

两边取对数,

e7379988-a7f7-11eb-9728-12bb97331649.png

以logFLOPS为Y,logAI为X,我们可以得到斜截式 Y = X + logBW,另对特定平台,算力FLOPS存在极限值,据此我们可以作如下图。

e7486da8-a7f7-11eb-9728-12bb97331649.png

图中紫色的线条是不是很类似屋脊线,这正是该模型命名的由来。以脊点为界,左边区域构成内存带宽瓶颈区域,右边区域对应算力瓶颈区域。已知某算法的AI,其最大可获取FLOPS很容易计算得到,见如下公式,为AI所在竖直线与Roofline的交点。如算法Algo1的AI处于内存带宽受限区域,而算法Algo2的AI则位于算力受限区域,如果Algo1和Algo2为同一问题两种算法方案,显然Alg2更有机会获取满意的FLOPS。

e77db544-a7f7-11eb-9728-12bb97331649.png

上面公式代表了理想化的情形,实际操作中,存在各种各样的天花板(Ceiling)障碍,算法优化的过程就是反复突破这些障碍而尽量接近roofline,最后得到理想的性能。如下图过程展示,介绍如何通过改善算法的数据局部性以充分利用Cache,并通过向量化而调用SIMD硬件资源来达到这一目的。

e7a00b3a-a7f7-11eb-9728-12bb97331649.png

除了上面介绍的Roofline模型能够让我们在特定平台“纸上谈兵”改善算法性能,Roofline也可以可视化同一算法部署在不同平台时候性能的比较,结果让人一目了然。在Google的有关TPU(TPU是Google开发的专门用于神经网络算法加速的芯片)的论文《In-Datacenter Performance Analysis of a Tensor Processing Unit》里,作者利用Roofline图表来比较各种神经网络算法分别部署在同时代CPU、GPU和TPU的性能差异,令人印象深刻。五角星、三角形、圆形分别代表对应算法在TPU、GPU和CPU上运行状况。

e8b3005e-a7f7-11eb-9728-12bb97331649.png

需要指出的是,Roofline模型在实践中并不像想象般容易,运用的时候有很多细微的地方需要仔细推敲。但它仍不失为非常insightful的寻宝图,如果你能学会正确解读,它完全有机会帮我们找到算法性能优化的巨大宝藏。以后我们会有很多场合涉及它的理念和具体用法,敬请期待。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • asic
    +关注

    关注

    34

    文章

    1137

    浏览量

    119243
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10409

    浏览量

    206457
  • 算法
    +关注

    关注

    23

    文章

    4446

    浏览量

    90714

原文标题:Roofline模型初步

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【书籍评测活动NO.31】大语言模型:原理与工程实践

    深远影响,尤其在优化业务流程和重塑组织结构方面。然而,在研究和实践过程中,我们遇到了一个主要挑战:市场上缺乏大语言模型在实际应用方面的资料。现有的资料多聚焦于理论研究,而具体的实践方法多被保密,难以获得
    发表于 03-18 15:49

    【书籍评测活动NO.30】大规模语言模型:从理论到实践

    更多的自然语言处理研究人员和对大语言模型感兴趣的读者能够快速了解大模型的理论基础,并开展大模型实践,复旦大学张奇教授团队结合他们在自然语言处理领域的研究经验,以及分布式系统和并行计算的
    发表于 03-11 15:16

    不要错过!NVIDIA “大模型没那么泛!”主题活动

    2024 新年首发! NVIDIA 大模型日系列活动 将于 2024 年 1 月 正式启动,由 NVIDIA 和业界专家携手分享大模型应用开发的洞见和最佳实践,探讨前沿技术的奥秘!活动旨在为开发者
    的头像 发表于 12-20 19:35 335次阅读
    不要错过!NVIDIA “大<b class='flag-5'>模型</b>没那么泛!”主题活动

    大规模神经网络优化:超参最佳实践与规模律

    从理论分析入手把握大规模神经网络优化的规律,可以指导实践中的超参数选择。反过来,实践中的超参数选择也可以指导理论分析。本篇文章聚焦于大语言模型,介绍从 GPT 以来大家普遍使用的训练超参数的变化
    的头像 发表于 12-10 21:45 579次阅读

    表贴式永磁电机空载时的磁场解析模型建立方案

    本文在二维极坐标下建立了在定子齿上开辅助槽的表贴式永磁电机空载时的磁场解析模型。如图1所示,电机被分为5个求解子域:子域Ⅰ(永磁体),子域Ⅱ(气隙),子域Ⅲ(电枢槽),子域Ⅳ(电枢槽开口
    的头像 发表于 10-30 14:37 474次阅读
    表贴式永磁电机空载时的磁场<b class='flag-5'>解析</b><b class='flag-5'>模型</b>建立方案

    软通动力受邀参加“昇思MindSpore AI框架”主题论坛,持续探索大模型创新实践

    、云集成业务部总经理杨磊受邀参加,并发表“软通动力基于昇思MindSpore的大模型产业创新实践”的主题分享,持续探索大模型创新实践。 会上,杨磊说到,软通动力推出的“软通天璇2.0
    的头像 发表于 09-21 21:20 529次阅读

    魔方大模型在智能汽车领域的应用实践与探索

    汽车领域最新的应用实践与探索。 当前,大模型的出现正在加速信息技术进入智能原生时代,并使得人机自然交互真正成为可能。而混合AI,端云协同等人工智能技术新的发展趋势,为大模型在汽车领域的应用奠定了基础, 加速了智能驾驶向人机共驾迈
    的头像 发表于 08-30 10:01 1126次阅读

    TFllite模型的格式简介

    简单来说:所谓模型就是一个滤波器,训练的权重就是滤波系数,输入经过滤波器后得到一个输出。所以嵌入式AI部署一般就是解析模型得到“滤波系数”,输入信号进行一系列类似"滤波&
    发表于 08-18 07:01

    MCU人脸识别模型的设计注意事项和最佳实践

    本指南介绍了在训练和量化MCU友好的人脸识别模型时需要考虑的一些设计注意事项和最佳实践。近年来,面部识别技术在日常生活中变得无处不在。它让我们的生活变得更轻松的方式有很多,包括: ·电子护照控制门
    发表于 08-02 08:58

    模型部署框架FastLLM实现细节解析

    接着 大模型部署框架 FastLLM 简要解析 这篇文章首先梳理了一下FastLLM的调用链和关键的数据结构,然后解析了 FastLLM 的一些实现细节和CPU/GPU后端实现采用的优化技巧。
    的头像 发表于 07-27 10:48 829次阅读
    大<b class='flag-5'>模型</b>部署框架FastLLM实现细节<b class='flag-5'>解析</b>

    中译语通展示格物多语言大模型技术和工业实践

    模型技术和工业实践。会议还汇聚了腾讯AI Lab、百度等科技企业,学术界和工业界的研究学者与从业人员,分享各自研究成果和实践经验,推动了大模型和自然语言生成领域的技术创新与研究成果转
    的头像 发表于 07-27 09:44 382次阅读
    中译语通展示格物多语言大<b class='flag-5'>模型</b>技术和工业<b class='flag-5'>实践</b>

    最强科普!深度解析华为云盘古大模型

    搭档完成复杂任务 预测台风路径降低灾害损失 帮助缩短药物研发周期 …… 此次发布有诸多新升级 更为客户提供了“开箱即用”的模型服务 简直就是一个AI大礼包! 一支视频为你深度解析盘古大模型硬实力! 你想了解的都在这儿 原文标题:
    的头像 发表于 07-14 15:20 1378次阅读

    如何部署ML模型到Google云平台

    实践中的机器学习:在 Google 云平台上部署 ML 模型
    的头像 发表于 07-05 16:30 416次阅读
    如何部署ML<b class='flag-5'>模型</b>到Google云平台

    机器学习构建ML模型实践

    实践中的机器学习:构建 ML 模型
    的头像 发表于 07-05 16:30 446次阅读