处理器运算能力单位

计算性能

模型对于硬件的要求,第一个是计算量,即一个深度学习模型需要多少次计算才能完成一次前馈.除了运算量之外,模型对内存带宽的需求也是影响实际计算所需要时间的重要参数。

如果把内存比做高速路,运算单元比作车道数,那么数据就是路上的车,而内存接口就是收费口,通过收费口的数据才能进入车道行驶(运算处理)。而内存带宽就是收费口的宽度了。收费口宽度越窄,则数据需要越多时间才能进入车道(处理单元)。正所谓「巧妇难为无米之炊」,如果带宽有限,那么即使车道再好、处理单元无限快,在大多数时候也是处理单元在空等数据,造成了计算力的浪费。

深度学习网络与Roofline模型

对内存需求定量分析

算法对于内存带宽的需求通常使用「运算强度(operational intensity,或称arithmetic

intensity)」这个量来表示,单位是OPs/byte。这个量的意思是,在算法中平均每读入单位数据,能支持多少次运算操作。运算强度越大,则表示单位数据能支持更多次运算,也就是说算法对于内存带宽的要求越低。所以,运算强度大是好事!

处理器运算能力单位
TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作。

与此对应的还有GOPS(Giga Operations Per Second),MOPS(Million Operation Per Second)算力单位。1GOPS代表处理器每秒钟可进行一亿次(109)操作,1MOPS代表处理器每秒钟可进行一百万次(106)操作。TOPS同GOPS与MOPS可以换算,都代表每秒钟能处理的次数,单位不同而已。

在某些情况下,还使用 TOPS/W 来作为评价处理器运算能力的一个性能指标,TOPS/W 用于度量在1W功耗的情况下,处理器能进行多少万亿次操作。

举一个例子。

对于步长(stride)为1的3×3卷积运算,假设输入数据平面大小为64×64。简单起见,假设输入和输出feature都为1。
这时候,总共需要进行62×62次卷积运算,每次卷积需要做3×3=9次乘加运算,所以总共的计算次数为34596,而数据量为(假设数据和卷积核都用单精度浮点数2byte):64x64x2(输入数据)+ 3x3x2(卷积核数据)= 8210 byte,所以运算强度为34596/8210=4.21。

如果我们换成1×1卷积,那么总的计算次数变成了64×64=4096,而所需的数据量为64x64x2 +1x1x2=8194。显然,切换为1×1卷积可以把计算量降低接近9倍,但是运算强度也降低为0.5,即对于内存带宽的需求也上升了接近9倍。因此,如果内存带宽无法满足1×1卷积计算,那么切换成1×1卷积计算虽然降低了接近9倍计算量,但是无法把计算速度提升9倍。

深度学习计算设备存在两个瓶颈,一个是处理器计算能力,另一个是计算带宽。如何分析究竟是哪一个限制了计算性能呢?可以使用Roofline模型。

在这里插入图片描述
典型的Roofline曲线模型如上图所示,坐标轴分别是计算性能(纵轴attainable GFLOPS/s)和算法的运算强度(横轴)。Roofline曲线分成了两部分:左边的上升区,以及右边的饱和区。

当算法的运算强度较小时,曲线处于上升区,即计算性能实际被内存带宽所限制,有很多计算处理单元是闲置的。随着算法运算强度上升,即在相同数量的数据下算法可以完成更多运算,于是闲置的运算单元越来越少,这时候计算性能就会上升。

然后,随着运算强度越来越高,闲置的计算单元越来越少,最后所有计算单元都被用上了,Roofline曲线就进入了饱和区,此时运算强度再变大也没有更多的计算单元可用了,于是计算性能不再上升,或者说计算性能遇到了由计算能力(而非内存带宽)决定的「屋顶」(roof)。

Roofline模型在算法-硬件协同设计中非常有用,可以确定算法和硬件优化的方向:到底应该增加内存带宽/减小内存带宽需求,还是提升计算能力/降低计算量?如果算法在roofline曲线的上升区,那么我们应该增加内存带宽/减小内存带宽需求,提升计算能力/降低计算量对于这类情况并没有帮助。反之亦然。

由于卷积神经网络中能实现卷积核复用,因此运算强度非常高,于是可以非常接近TPU roofline曲线的屋顶(86 TOPS)。

REF
https://www.jianshu.com/p/42e43368e921

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 处理器的基本结构 处理器是计算机中最重要的组成部分之一,它负责执行指令、存储和处理数据。处理器的基本结构包括运算器、控制器、寄存器、存储器和总线。 - 运算器:负责执行算术和逻辑运算,包括加法、减法、乘法、除法、与、或、非等操作。 - 控制器:负责管理指令的执行顺序和处理器的操作模式,包括指令译码、指令执行、分支控制、中断处理等。 - 寄存器:处理器内部的一种高速存储器,用于暂时存储指令和数据。常见的寄存器包括累加器、程序计数器、指令寄存器等。 - 存储器:计算机用于存储程序和数据的设备,包括内存、硬盘、U盘等。 - 总线:计算机内部各个组成部分之间传输数据和指令的通道,包括地址总线、数据总线和控制总线。 2. 处理器的指令集和编程模型 处理器的指令集是处理器能够执行的操作的集合,包括算术操作、逻辑操作、传输操作等。不同的处理器有不同的指令集,例如x86指令集、ARM指令集等。 编程模型是指程序员在编写程序时所使用的抽象模型,它描述了程序员如何使用处理器的指令集来编写程序。常见的编程模型包括传统的CISC模型和现代的RISC模型。 3. 处理器的性能指标 处理器的性能指标包括时钟频率、IPC、吞吐量和延迟等。 - 时钟频率:处理器内部时钟的运行频率,通常以GHz为单位。 - IPC(Instructions Per Cycle):每个时钟周期内处理器执行的指令数量。 - 吞吐量:单位时间内处理器能够执行的指令数量。 - 延迟:指令从发出到执行完成所需要的时间。 4. 处理器的发展历程 处理器的发展历程经历了从单核心到多核心的演变,以及从CISC模型到RISC模型的转变。 - 单核心处理器:早期的计算机使用单核心处理器处理器的性能主要依赖于时钟频率的提升。 - 多核心处理器:随着计算机应用的发展,多核心处理器逐渐被引入计算机中,可以同时执行多个任务,提高了计算机的并行处理能力。 - RISC模型:在处理器的指令集设计上,RISC模型强调简洁、规范的指令集,使得处理器的设计更加高效,提高了处理器的性能。 5. 处理器的未来发展方向 处理器的未来发展主要集中在以下几个方向: - 集成度的提高:将更多的处理器核心、缓存、内存控制器等集成到处理器中,提高处理器的性能。 - 异构计算:在处理器中引入异构计算单元,例如GPU、FPGA等,提高处理器的计算能力。 - 量子计算:引入量子计算的技术,实现更高效的计算处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值