Roofline model 论文简读

导读

Roofline model 一个衡量计算机软件/硬件性能的一个分析模型
Roofline Model与深度学习模型的性能分析
论文地址
在这里插入图片描述

摘要

其实就一句话:提出一种易于理解的视觉性能模型,为程序员和架构师提供关于改进浮点计算的并行软硬件的见解。

Introduction

这一部分简单叙述现如今计算机体系结构下,多核心处理器的核心数逐年翻倍,意味着微处理器会变的更加多样化,因此对架构师等来说,加剧其工作难度,为此作者提出一种模型,帮助开发者。

THE ROOFLINE MODEL

作者认为芯片外储存器带宽往往是限制性资源,因此需要一个模型,将处理器性能与芯片外内存流量关联起来。

首先定义operational intensity (计算密度)单位是FLOPs/Byte,表示的是传送单位数据可以进行的浮点运算数。

先来看operational intensity (计算密度)公式: 计算密度 = 计算量 / 访存量 . 计算密度= 计算量/访存量. 计算密度=计算量/访存量.

计算量单位是FLOPs,表示模型中有多少个floating point operations。是衡量模型大小的标准,过去的很多文章里用FLOPs来说明自己的模型的性能,其实这是不准确的。

文中对访存量的一个提醒:
That is, we measure traffic between the caches and memory rather than between the processor and the caches.
主要是测量缓存与内存之间的流量,而不是处理器与缓存之间的流量。这里指的是访存量。
来仔细分析一下这句话,以下是memory跟caches在CPU中跟GPU的区别:

CPU

  • Memory(内存): 主要指主存储器(RAM),用于存储程序的数据和指令。与CPU之间的通信速度相对较慢,需要通过内存总线进行。

  • Caches(缓存): 指CPU内部的缓存,通常分为多个层次(L1、L2、L3等)。缓存旨在提高内存访问速度,保存最近使用的数据和指令。

GPU

  • Memory(内存): GPU的内存通常指全局显存,包含GPU程序所需的数据和指令。与CPU类似,GPU需要从全局显存中读取数据进行计算。

  • Caches(缓存): GPU(图形处理单元)也内置多级缓存,包括一级缓存(L1)和二级缓存(L2)。一级缓存主要用于存储图形渲染的着色器程序的指令和数据,而二级缓存则提供更大容量的存储,通常用于多个处理单元之间的共享。此外,GPU还包括全局缓存,用于存储大量的数据,以及可能的共享内存,用于在线程块之间的数据共享。这些缓存层级共同协作,加速并行计算任务。

主板上对应的内存条DRAM(CPU的memory)
主内存
处理器
在这里插入图片描述

该模型将浮点性能,计算密度和内存性能联系在一起。如下图,横坐标为计算密度,纵坐标为处理器浮点性能,斜线为内存性能。

在这里插入图片描述首先二维图中的peak floating-point performance可以通过硬件规格或者微基准测试找到(显卡白皮书里有)。peak memory performance is defined by the memory system behind the caches。这边的peak memory performance作者编写了一些列的逐步优化的微基准测算,进而确定的。其单位是(Byte/s)

以CPU为例,如果知道主内存信息,带宽计算举例:
Intel Xeon Gold 6000 (server)
• memory: DDR4-2666
• memory clock: 2666 MHz
• memory bus width: 8 Bytes
• memory channel: 6
• => memory bindwidth = 2666 MHz * 8 Bytes * 6 = 128GB/s

图1a显示了一个2.2 GHz的AMD Opteron X2 2214型号在双插槽系统中的模型。图表采用对数-对数刻度。Y轴是可达到的浮点性能。X轴是计算密度,从1/4 Flops/byte 访问到16 Flops/byte 访问变化。该图所展示峰值双精度浮点性能为17.6 GFlops/s,峰值内存带宽为15 GB/s。

绘制一条水平线,显示计算机的峰值浮点性能。显然,浮点内核的实际浮点性能不能超过水平线,因为那是硬件限制。

对于一个给定的核函数。找到其计算密度并在二维图中划粉红色虚线,那么计算机上该内核的性能必定在该线的某个位置。Roofline可以看成是屋顶线条,也就是图中斜线跟横线构成的部分。不管计算密度等于多少,都无法突破处理器硬件的峰值浮点性能。

斜线跟横线相交的山脊点对应的x坐标,是实现最大性能所需要的最小计算密度,如果山脊点偏右,那么只有具有非常高计算密度的内核才能实现该计算机的最大性能。如果它偏左,那么几乎任何内核都有可能达到最大性能。

1b中Opteron X4 比X2多两个核心,其处理器浮点性能更好,可以看到图中横线部分更高。但其具有相同的DRAM通道,因此具有相同的peak memory bandwidth。对应相同的斜线。因此山脊点向右偏移。所以需要更大的计算密度,才能发挥X4的最佳性能。

一些个人理解

在我们作深度学习的模型分析的时候,Roofline model所展示的这个二维这线图是由计算平台的算力和带宽上限决定的。也就是说,如果我们用不同模型在同一个设备里跑,这台设备的Roofline model是不变的。我们可以根据
计算密度 = 计算量 / 访存量 . 计算密度= 计算量/访存量. 计算密度=计算量/访存量.
这个公式,计算量的单位是FLOPs,表示模型中有多少个floating point operations,是衡量模型大小的标准。通常集中在卷积运算当中。
访存量单位是Byte,表示模型中某一个算子,或者某一层layer进行计算时需要与memory产生read/write的量。是分析模型中某些计算的计算效率的标准之一。如一个卷积运算,
input tensor: 5x5x3
kernel : 3x3x3, 2
output tensor: 3x3x2
所需要的访存量:
(3x3x3x2 + 3x3x2) * 4 = 588 Byte
x4是因为卷积如果用float32类型储存,则是32位等于4个字节,访存量的单位是byte字节,因此x4

由此可以计算出模型的计算密度。

得到模型的计算密度后,在计算平台的Roofline model中找到对应的横坐标,作垂直线与Roofline相交,则模型的在计算平台算力和带宽的限制下,所能达到的理论最大性能上界为垂直线交点处。如图下粉红色虚线所示。
再回忆一下上文提到的山脊点。
如果模型的计算密度在山脊点对应的x坐标的左边,则该模型处于Memory Band也就是由于计算平台主内存带宽的限制,导致模型无法发挥计算平台最大性能。
如果模型的计算密度在山脊点对应的x坐标的右边,则该模型处于Conpute Band也就是由于计算平台处理器算力的限制,模型理论性能无法突破计算平台最大性能。
在这里插入图片描述

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值