1. 引言
卷积神经网络(CNN)在图像分类和识别领域应用非常广泛.但是,由于它们需要大量的
计算操作,通用处理器不能很好地挖掘它们计算的并行性.因此,基于 GPU,ASIC 或
FPGA 的 CNN 加速器层出不穷.各种加速器旨在实现高性能神经网络,其中卷积运算是最
关键的部分.
由于卷积可视为多层循环,因此具有巨大的设计空间.不同的加速方案会显著影响功
率,延迟和性能.通常,Roofline 模型可用于评估在相应硬件上加速 CNN 可获得的理论最
佳性能,但这仅是性能上限的粗略估计
[1]
;更常见的方案是分析整个 CNN 结构,并在整个
CNN 的所有层上执行相同的优化,这样可以简化硬件结构,但是某些层的加速效果可能较
差
[2-3]
;CNN 的不同层也可以分别分析和优化
[4]
.这种加速方案更具针对性,但是难以实现全
局优化.本文提出了一种新颖的算法,可以针对具体的网络结构和硬件资源,计算出最优化
的加速方案.本文还基于提出的优化方案,设计了一种支持上述多种加速方案的加速器.
2. 设计优化算法
本文提出的设计优化算法主要由两个部分组成,一个是循环优化算法,主要应用于卷
积层和全连接层;一个是动态精度量化算法,主要用于优化计算和访存开销不能很好隐藏
的层,并对指定类型数据进行半精度处理以减小延迟.
2.1 循环优化算法
常见的循环优化算法有循环分块,循环展开和循环顺序调度.
大多数 CNN 加速器通常将 CNN 网络的每层卷积计算划分为固定的循环分块和固定的
循环顺序.就像文献[3]中的 AlexNet 的加速器一样,每一层都使用相同的展开因子.然而对
于不同的 CNN 层或不同的 CNN 网络,使用相同的展开因子并不是最佳的加速方案,反而
会带来一定程度的性能损失.这是因为固定配置无法适应不同结构的网络层.因此,对于
CNN 网络的每一层,采用可调整的分块大小和可调整的循环顺序可以使加速器在不同的网
络或者不同的 CNN 层中有不同程度的性能提升.
本算法旨在广大的设计空间中找到对于每层网络逐层定制的最优循环优化方案,并在
包括所有层在内的完整网络结构中达到最优性能.
加速器进行加速的限制因素主要是构成脉动阵列的计算资源,SRAM 资源和对应的
CNN 网络结构.因此我们的算法可以分为两个步骤.第一步是在存储输入,权重,偏置和输
出数据的总片上 SRAM 容量固定不变的情况下,为单个卷积层或全连接层计算最佳循环顺
评论0
最新资源