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

    文章

    1193

    浏览量

    120317
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211129
  • 算法
    +关注

    关注

    23

    文章

    4599

    浏览量

    92636

原文标题:Roofline模型初步

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

收藏 人收藏

    评论

    相关推荐

    TLC555-Q1 spice模型到LTSPICE仿真软件中提示无法解析是怎么回事?

    请教贵司提供的模型spice模型到LTSPICE仿真软件中提示无法解析是怎么回事?
    发表于 11-08 07:42

    【大规模语言模型:从理论到实践】- 阅读体验

    再次感谢电子发烧友提供的书籍试读机会。今天来分享下我在学习大模型训练中 注意力机制 的心得体会。 虽然注意力机制可以显著提高模型处理长序列数据的能力,但这也带来了计算成本的增加。在大型模型中,自
    发表于 06-07 14:44

    鸿蒙应用模型:【应用模型解析

    应用模型是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。
    的头像 发表于 05-31 11:38 463次阅读
    鸿蒙应用<b class='flag-5'>模型</b>:【应用<b class='flag-5'>模型</b>】<b class='flag-5'>解析</b>

    大语言模型:原理与工程实践+初识2

    前言 深度学习是机器学习的分支,而大语言模型是深度学习的分支。机器学习的核心是让计算机系统通过对数据的学习提高性能,深度学习则是通过创建人工神经网络处理数据。近年人工神经网络高速发展,引发深度学习
    发表于 05-13 00:09

    【大语言模型:原理与工程实践】大语言模型的应用

    ,它通过抽象思考和逻辑推理,协助我们应对复杂的决策。 相应地,我们设计了两类任务来检验大语言模型的能力。一类是感性的、无需理性能力的任务,类似于人类的系统1,如情感分析和抽取式问答等。大语言模型在这
    发表于 05-07 17:21

    【大语言模型:原理与工程实践】大语言模型的评测

    评测任务则重点评估模型在提供方法论和实践建议方面的能力。这类任务要求模型能像经验丰富的导师或专家那样,为用户提供有价值的建议和解决方案。总之,这套综合性的评测框架为全面评估大语言模型
    发表于 05-07 17:12

    【大语言模型:原理与工程实践】大语言模型的预训练

    大语言模型的核心特点在于其庞大的参数量,这赋予了模型强大的学习容量,使其无需依赖微调即可适应各种下游任务,而更倾向于培养通用的处理能力。然而,随着学习容量的增加,对预训练数据的需求也相应
    发表于 05-07 17:10

    【大语言模型:原理与工程实践】探索《大语言模型原理与工程实践》2.0

    《大语言模型“原理与工程实践”》是关于大语言模型内在机理和应用实践的一次深入探索。作者不仅深入讨论了理论,还提供了丰富的实践案例,帮助读者理
    发表于 05-07 10:30

    【大语言模型:原理与工程实践】大语言模型的基础技术

    全面剖析大语言模型的核心技术与基础知识。首先,概述自然语言的基本表示,这是理解大语言模型技术的前提。接着,详细介绍自然语言处理预训练的经典结构Transformer,以及其工作原理,为构建大语言
    发表于 05-05 12:17

    【大语言模型:原理与工程实践】核心技术综述

    我也不打算把网上相关的信息在总结一下,这样的话,工作量很大。 我主要看了-大语言模型基础技术这节 大语言模型(Large Language Models,LLMs)的核心技术涵盖了从模型的架构设计到
    发表于 05-05 10:56

    【大语言模型:原理与工程实践】揭开大语言模型的面纱

    大语言模型(LLM)是人工智能领域的尖端技术,凭借庞大的参数量和卓越的语言理解能力赢得了广泛关注。它基于深度学习,利用神经网络框架来理解和生成自然语言文本。这些模型通过训练海量的文本数据集,如
    发表于 05-04 23:55

    【大语言模型:原理与工程实践】探索《大语言模型原理与工程实践

    的未来发展方向进行了展望,包括跨领域、跨模态和自动提示生成能力方向,为读者提供了对未来技术发展的深刻见解。《大语言模型原理与工程实践》是一本内容丰富、深入浅出的技术书籍。它不仅为读者提供了大语言模型
    发表于 04-30 15:35

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

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

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

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

    解析EMC滤波器:关键作用与应用实践

    解析EMC滤波器:关键作用与应用实践?|深圳比创达电子EMC
    的头像 发表于 02-21 10:20 506次阅读
    <b class='flag-5'>解析</b>EMC滤波器:关键作用与应用<b class='flag-5'>实践</b>?