发明内容
本申请实施例提供一种神经网络加速器的确定方法、装置、设备以及存储介质,可提升神经网络加速器的优化效果、适用性高。
第一方面,本申请实施例提供一种神经网络加速器的确定方法,该方法包括:
获取神经网络模型集合和加速器结构集合,所述神经网络模型集合包括至少一种神经网络模型,所述加速器结构集合包括至少一种加速器结构;
基于所述神经网络模型集合和所述加速器结构集合,确定至少一个神经网络加速器,任一神经网络加速器由至少一种神经网络模型和一种加速器结构确定,并用于处理一种数据类型的数据;
确定各所述神经网络加速器的设计参数,基于各所述设计参数,确定各所述神经网络加速器的性能指标;
基于各所述性能指标,从各所述神经网络加速器中确定目标神经网络加速器。
可选地,上述基于上述神经网络模型集合和上述加速器结构集合,确定至少一个神经网络加速器,包括:
确定现场可编程逻辑门阵列FPGA异构平台对应的各运算资源的最大运算资源数、以及上述FPGA异构平台的最高时钟频率;
基于上述神经网络模型集合、上述加速器结构集合、各上述运算资源的最大运算资源数以及上述最高时钟频率,确定至少一个基于FPGA异构平台的神经网络加速器。
可选地,上述性能指标包括计算密度和性能值;
上述基于各上述设计参数,确定各上述神经网络加速器的性能指标,包括:
基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的数据处理时延、数据运算总次数以及数据访存总次数;
对于每一上述神经网络加速器,基于该神经网络加速器对应的数据运算总次数和数据访存总次数,确定该神经网络加速器的计算密度,基于该神经网络加速器对应的数据运算总次数和数据处理时延,确定该神经网络加速器的性能值。
可选地,基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的数据处理时延,包括:
基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延,确定该神经网络加速器对应的神经网络模型的数据处理时延。
可选地,基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的输入特征读取时延,包括:
基于各上述设计参数,确定各上述神经网络加速器读取输入特征的第一时延、以及将上述输入特征进行缓存的第二时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第一时延和第二时延,确定该神经网络加速器对应的神经网络模型的输入特征读取时延。
可选地,基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的输出特征缓存时延,包括:
基于各上述设计参数,确定各上述神经网络加速器传输输出特征的第三时延、以及将上述输出特征进行缓存的第四时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第三时延和第四时延,确定该神经网络加速器对应的神经网络模型的输出特征缓存时延。
可选地,基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的特征处理时延,包括:
基于各上述设计参数,确定各上述神经网络加速器读取网络参数的第五时延、将上述网络参数进行缓存的第六时延以及对输入特征进行处理的第七时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第五时延、第六时延以及第七时延,确定该神经网络加速器对应的神经网络模型的特征处理时延。
可选地,对于每一上述神经网络加速器,该神经网络加速器的性能指标是通过该神经网络加速器对应的性能评估模型确定的,其中,该神经网络加速器对应的性能评估模型的模型输入和模型输出分别为该神经网络加速器的设计参数和性能指标;
上述基于各上述性能指标,从各上述神经网络加速器中确定目标神经网络加速器之后,上述方法还包括:
运行上述目标神经网络加速器,得到上述目标神经网络加速器的实际性能指标;
基于上述实际性能指标,更新上述目标神经网络加速器对应的性能评估模型的模型参数。
可选地,上述基于各上述性能指标,从各上述神经网络加速器中确定目标神经网络加速器之后,上述方法还包括:
确定上述目标神经网络加速器的设计参数中数据长度小于第一阈值和/或读取次数超过第二阈值的第一设计参数;
基于各上述第一设计参数生成第二设计参数,并将上述第二设计参数进行存储。
可选地,任一上述神经网络加速器的设计参数包括相对应的神经网络模型的网络参数。
可选地,上述基于各上述性能指标,从各上述神经网络加速器中确定目标神经网络加速器,包括:
确定各上述神经网络加速器的运行状态所对应的帕累托边界,将性能指标满足相对应的帕累托边界的神经网络加速器确定为目标神经网络加速器;或者,
确定各上述神经网络加速器对应的最大带宽值和最高性能值,基于各上述神经网络加速器的性能值和计算密度、以及对应的最大带宽值和最高性能值,从各上述神经网络加速器中确定目标神经网络加速器。
可选地,上述基于各上述神经网络加速器的性能值和计算密度、以及对应的最大带宽值和最高性能值,从各上述神经网络加速器中确定目标神经网络加速器,包括:
对于每一上述神经网络加速器,基于该神经网络加速器的计算密度和性能值,确定该神经网络加速器的带宽值,若该神经网络加速器的带宽值与上述最大带宽值的带宽差值小于或者等于第三阈值,和/或性能值与上述最高性能值的性能差值小于或者等于第四阈值,则将该神经网络加速器确定为目标神经网络加速器。
可选地,上述确定各上述神经网络加速器对应的最大带宽值和最高性能值,包括:
基于FPGA异构平台对应的各运算资源的最大运算资源数、上述FPGA异构平台的最高时钟频率以及各上述数据类型,确定各上述神经网络加速器对应的最大带宽值和最高性能值。
可选地,对于每一上述神经网络加速器,该神经网络加速器对应的神经网络模型所消耗的各上述运算资源的资源数小于或者等于相对应的运算资源的运算资源阈值,和/或该神经网络加速器所消耗的存储资源的总资源数小于或者等于存储资源阈值;
其中,各上述运算资源的运算资源阈值是通过以下方式确定的:
确定各上述运算资源的第一消耗比例;
对于每一上述运算资源,基于该运算资源对应的最大运算资源数和第一消耗比例,确定该运算资源的运算资源阈值;
其中,上述存储资源阈值是通过以下方式确定的:
确定上述FPGA异构平台对应的存储资源的最大存储资源数和第二消耗比例,基于上述最大存储资源数和第二消耗比例,确定上述存储资源阈值。
可选地,上述神经网络模型集合包括VGG16-D、YOLOv2、YOLOv2-Tiny、Mobilenetv1、Mobilenet v1-SSD、Resnet-50以及Resnet34-SSD中的至少一项神经网络模型。
可选地,上述加速器结构集合包括基于最优卷积算法的加速器架构、基于脉动阵列的加速器架构以及基于硬件循环展开的加速器架构中的至少一项。
可选地,上述数据类型包括浮点32位、浮点16位、定点16位以及定点8位中的至少一项。
可选地,上述运算资源包括数字信号处理器DSP和查找表LUT中的至少一项。
可选地,上述存储资源包括块随机存储器BRAM,每一上述神经网络加速器所消耗的存储资源包括用于缓存相对应的神经网络模型的输入特征的存储资源、用于缓存相对应的神经网络模型的输出特征的存储资源以及用于缓存相对应的神经网络模型的网络参数的存储资源中的至少一项。
第二方面,本申请实施例提供了一种神经网络加速器的确定装置,该装置包括:
获取模块,用于获取神经网络模型集合和加速器结构集合,所述神经网络模型集合包括至少一种神经网络模型,所述加速器结构集合包括至少一种加速器结构;
确定模块,用于基于所述神经网络模型集合和所述加速器结构集合,确定至少一个神经网络加速器,任一神经网络加速器由至少一种神经网络模型和一种加速器结构确定,并用于处理一种数据类型的数据;
参数确定模块,用于确定各所述神经网络加速器的设计参数,基于各所述设计参数,确定各所述神经网络加速器的性能指标;
性能评估模块,用于基于各所述性能指标,从各所述神经网络加速器中确定目标神经网络加速器。
第三方面,本申请实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行本申请实施例提供的神经网络加速器的确定方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现本申请实施例提供的神经网络加速器的确定方法。
在本申请实施例中,基于多种神经网络模型和多种加速器结构,可得到涵盖多种神经网络模型负载以及多种加速器结构的、用于处理不同数据类型的多种神经网络加速器,从而实现针对多种神经网络模型、多种加速器结构以及多种数据类型的加速器构建。进一步通过神经网络加速器的设计参数,可有效确定各神经网络加速器的性能指标,从而为神经网络加速器的优化提供准确高效的确定依据,适用性高。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
参见图1,图1是本申请实施例提供的神经网络加速器的确定方法的流程示意图。如图1所示,本申请实施例提供的神经网络加速器的确定方法可包括如下步骤:
步骤S11、获取神经网络模型集合和加速器结构集合。
在本申请实施例中,神经网络模型集合中包括至少一种神经网络模型,包括但不限于基于卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Recurrent Neural Networks,RNN)、长短期记忆人工神经网络(Long Short-TermMemory,LSTM)以及门控循环单元(Gated Recurrent Unit,GRU)中的一种或者多种神经网络所构建的神经网络模型,如基于BERT(Bidirectional Encoder Representations fromTransformers,基于transformer的双向编码器)模型以及基于XLnet(Extra-Long Net,长记忆网络)模型等。
可选地,本申请实施例中的神经网络模型集合包括VGG16-D、YOLOv2、YOLOv2-Tiny、Mobilenet v1、Mobilenet v1-SSD、Resnet-50以及Resnet34-SSD中的至少一项神经网络模型。
其中,神经网络模型集合中的任一神经网络模型包括卷积(Convolution,CONV)、最大池化(Max Pooling,MaxPool)、平均池化(Average Pooling,AvgPool)、深度可分离卷积(Depth-wise Convolution,DCONV)中的一种或者多种算子。
在本申请实施例中,加速器结构集合包括至少一种加速器结构,可选地,加速器结构集合包括基于最优卷积算法(Winograd与FFT算法)的加速器架构、基于脉动阵列的加速器架构以及基于硬件循环展开的加速器架构中的至少一项。
步骤S12、基于神经网络模型集合和加速器结构集合,确定至少一个神经网络加速器。
在本申请实施例中,基于神经网络模型集合中的各神经网络模型、以及加速器结构集合中各加速器结构,可确定出至少一个神经网络加速器。其中,任一神经网络加速器由至少一种神经网络模型和一种加速器结构确定,并用于处理一种数据类型的数据。换句话说,任一神经网络加速器所对应的神经网络模型、加速器结构以及数据类型中的至少一项,与其他神经网络加速器不同。
可选地,本申请实施例中的数据类型包括浮点32位、浮点16位、定点16位以及定点8位中的至少一项。
在基于神经网络模型集合和加速器结构集合确定神经网络加速器时,可基于神经网络模型集合中的至少一种神经网络模型,与加速器结构集合中一种加速器结构,确定出用于处理不同数据类型的数据的多个神经网络加速器。如数据类型包括浮点32位和浮点16位,则基于神经网络模型A和加速器结构B,可得到用于处理浮点32位的数据的神经网络加速器C和用于处理浮点16位的数据的神经网络加速器D。
在本申请实施例中,在基于神经网络模型集合和加速器结构集合确定神经网络加速器时,可确定现场可编程逻辑门阵列FPGA异构平台对应的各运算资源的最大运算资源数、以及FPGA异构平台的最高时钟频率。进而基于神经网络模型集合、加速器结构集合、各运算资源的最大运算资源数以及最高时钟频率,确定至少一个基于FPGA异构平台的神经网络加速器。
可选地,上述运算资源包括但不限于数字信号处理器(Digital SignalProcessor,DSP)和查找表(Look-Up-Table,LUT),也可以包括其他可应用于FPGA异构平台的其他具有运算功能的元器件,在此不做限制。
其中,任一基于FPGA异构平台神经网络加速器同样由至少一种神经网络模型和一种加速器结构确定,并用于处理一种数据类型的数据。
可选地,上述FPGA异构平台可以为基于中央处理单元(Central ProcessingUnit,CPU)和FPGA的系统级芯片(System on Chip,SoC)构筑的评估平台如EdgeBoard、Zedboard、Ultra96、Zynq 7000、Zynq Ultrascale+MPSoC以及ZCU102等。
步骤S13、确定各神经网络加速器的设计参数,基于各设计参数,确定各神经网络加速器的性能指标。
在本申请实施例中,每一神经网络加速器的设计参数包括加速器结构对应的硬件参数以及对应的神经网络模型的网络参数等。其中,神经网络模型的网络参数可包括各网络层的权重参数以及配置参数等。
可选地,对于任一神经网络加速器,若该神经网络加速器用于优化卷积循环网络,则该神经网络加速器对应的设计参数包括卷积循环网络对应的各项网络参数,如卷积核对应的输入特征、输出特征等相关的各项参数。
如表1所示,表1中为卷积循环的各项网络参数,N*(Nkx、Nky、Nox、Noy、Nif、Nof)表示卷积层的各维度(Conv Dimensions)的各项网络参数,T*(Tkx、Tky、Tox、Toy、Tif、Tof)表示循环分块(Loop Tiling)的各项网络参数,P*(Pkx、Pky、Pox、Poy、Pif、Pof)表示循环展开(Loop Unrolling)的各项网络参数。
表1
其中P*、T*和N*表示前缀不同但后缀相同的各设计参数,各项设计参数满足以下约束:
1≤P*≤T*≤N*
其中,卷积循环网络的输入特征的宽高与循环分块对应的设计参数可以由输出特征对应的设计参数确定:
Nix=(Nox-1)×S+Nkx
Niy=(Noy-1)×S+Nky
Tix=(Tox-1)×S+Tkx
Tiy=(Toy-1)×S+Tky
其中,S为卷积核的步长。
可选地,在确定各神经网络加速器的设计参数后,可对其中的部分或者全部设计参数进行评估。即确定设计参数中包括不合理设计参数的各神经网络加速器,并将该神经网络加速器以及相对应的设计参数筛除,从而达到对对神经网络加速器及其设计参数进行筛选的目的。
其中,以表1中的设计参数为例,由于FPGA片上块随机存储器(Block RandomAccess Memory,BRAM)有限(从几KB~几十MB),通过对卷积循环分块,使得每次访存只涉及Tif张输入特征图的Tix×Tiy大小的像素块、Tof个卷积核中对应的Tif×Tky×Tkx个网络参数,以及Tof张输出特征图的Toy×Tox大小的像素块。如果设计参数(如T*)较为合理,则通过复用片上存储中的数据,可以有效地减少访存次数和访存数据量。
因此可基于表1中的设计参数确定输入特征图缓存消耗的最小BRAM资源数
卷积核缓存消耗的最小BRAM资源数
以及输出特征图缓存耗费的最小BRAM资源数/>
其中,C
OneBRAM表示单一BRAM的存储能力,datawidth表示带宽。
若上述各最小BRAM资源数在预设数量范围内,即在合理范围内,则确定相对应的神经网络加速器的设计参数较为合理,反之则可对其进行筛除。
在本申请实施例中,对于每一神经网络加速器,可基于该神经网络加速器的设计参数,确定该神经网络加速器的性能指标。其中,基于该神经网络加速器的设计参数所确定出的性能指标,为在运行该神经网络加速器之前对应的预计性能指标。其中,任一神经网络加速器的性能指标可包括该神经网络加速器的计算密度和性能值。计算密度用于表示神经网络加速器的数据处理强度,性能值用于表示神经网络加速器的数据处理性能。
具体地,在确定神经网络加速器的性能指标时,对于每一神经网络加速器,可根据该神经网络加速器的设计参数,确定该神经网络加速器对应的神经网络模型的数据处理时延、数据运算总次数以及数据访存总次数。其中,基于神经网络模型的网络参数确定该神经网络加速器的数据运算总次数,基于加速器结构对应的硬件参数和神经网络模型的网络参数,确定数据处理时延和数据访存总次数。进一步基于该神经网络加速器对应的数据运算总次数和数据访存总次数,确定该神经网络加速器的计算密度,基于该神经网络加速器对应的数据运算总次数和数据处理时延,确定神经网络加速器的性能值。
可选地,任一神经网络加速器的性能指标还可包括该神经网络加速器的带宽值,且神经网络加速器的带宽值由神经网络加速器的计算密度和性能值确定(带宽值=性能值/计算密度)。
作为一示例,对于任一神经网络加速器,该神经网络加速器的计算密度
其中,Model Operations表示该神经网络加速器的数据运算总次数,包括但不限于对输入特征进行处理的卷积、池化、归一化等运算。/>
表示该神经网络加速器对应的数据访存总次数,即各项设计参数的访存次数,包括但不限输入特征的访存次数、输出特征的访存次数、神经网络模型的网络参数的访存次数以及神经网络模型对输入特征进行处理时对各项数据的访存次数(如循环神经网络中展开层对应的数据的访存次数)等。
例如,在表1中所示的各项参数为一神经网络加速器的设计参数的情况下,在每一层循环中,该神经网络加速器的输入特征的访存次数为:
在每一层循环中,该神经网络加速器的输出特征的访存次数为:
在每一层循环中,该神经网络加速器的网络参数的访存次数为:
该神经网络的设计参数的数据访存总次数为:
其中,i表示层索引,N表示层数。
作为一示例,对于任一神经网络加速器,该神经网络加速器的性能值P=ModelOperations/Latencytotal。其中,Model Operations表示该神经网络加速器的数据运算总次数。Latencytotal表示该神经网络加速器对应的神经网络模型的数据处理时延。
在本申请实施例中,每一神经网络加速器对应的神经网络模型的数据处理时延可包括输入特征读取时延、输出特征缓存时延以及特征处理时延中的至少一项。作为一示例,任一神经网络加速器对应的神经网络模型的数据处理时延包括输入特征读取时延、输出特征缓存时延以及特征处理时延。
在基于各神经网络加速器的设计参数,确定各神经网络加速器对应的神经网络模型的数据处理时延时,可基于各设计参数,确定各神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延。对于每一神经网络加速器,基于该神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延,确定该神经网络加速器对应的神经网络模型的数据处理时延。
作为一示例,可将任一神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延之和,确定为该神经网络加速器对应的神经网络模型的数据处理时延。
具体地,在确定任一神经网络加速器对应的神经网络模型的输入特征读取时延时,可基于该神经网络模型的设计参数,确定该神经网络加速器读取输入特征的第一时延、以及将输入特征进行缓存的第二时延。进一步基于该神经网络加速器对应的第一时延和第二时延,确定该神经网络加速器对应的神经网络模型的输入特征读取时延。如将该神经网络模型对应的第一时延和第二时延之和,确定为该神经网络加速器对应的神经网络模型的输入特征读取时延。
若该神经网络模型中包括多个网络层,则确定每一层读取输入特征的第一时延、以及将输入特征进行缓存的第二时延。对于每一层,基于该层对应的第一时延和第二时延,确定该层对应的输入特征读取时延,进而基于各层对应的输入特征读取时延,确定该神经网络模型对应的输入特征读取时延。
作为一示例,可将每一层对应的第一时延和第二时延之和确定为该层对应的输入特征读取时延,进而将各层对应的输入特征读取时延之和确定为该神经网络模型对应的输入特征读取时延。
具体地,在确定任一神经网络加速器对应的神经网络模型的输出特征缓存时延时,可基于该神经网络模型的设计参数,确定该神经网络加速器传输输出特征的第三时延、以及将输出特征进行缓存的第四时延。进一步基于该神经网络加速器对应的第三时延和第四时延,确定该神经网络加速器对应的神经网络模型的输出特征缓存时延。如将该神经网络模型对应的第三时延和第四时延之和,确定为该神经网络加速器对应的神经网络模型的输出特征缓存时延。
若该神经网络模型中包括多个网络层,则确定每一层传输输出特征的第三时延、以及将输出特征进行缓存的第四时延。对于每一层,基于该层对应的第三时延和第四时延,确定该层对应的输出特征缓存时延,进而基于各层对应的输出特征缓存时延,确定该神经网络模型对应的输出特征缓存时延。
作为一示例,可将每一层对应的第三时延和第四时延之和确定为该层对应的输出特征缓存时延,进而将各层对应的输出特征缓存时延之和确定为该神经网络模型对应的输出特征缓存时延。
具体地,在确定任一神经网络加速器对应的神经网络模型的特征处理时延时,可基于该神经网络模型的设计参数,确定该神经网络加速器读取网络参数的第五时延、将网络参数进行缓存的第六时延以及对输入特征进行处理的第七时延。其中上述网络参数包括但不限于神经网络模型中的权重参数以及其他相关参数。进一步基于该神经网络加速器对应的第五时延、第六时延以及第七时延,确定该神经网络加速器对应的神经网络模型的特征处理时延。如将该神经网络模型对应的第五时延、第六时延以及第七时延之和,确定为该神经网络加速器对应的神经网络模型的特征处理时延。
若该神经网络模型中包括多个网络层,则确定每一层读取网络参数的第五时延、以及将网络参数进行缓存的第六时延以及对输入特征进行处理的第七时延。对于每一层,基于该层对应的第五时延、第六时延以及第七时延,确定该层对应的特征处理时延,进而基于各层对应的特征处理时延,确定该神经网络模型对应的特征处理时延。
作为一示例,可将每一层对应的第五时延、第六时延以及第七时延之和确定为该层对应的特征处理时延,进而将各层对应的特征处理时延之和确定为该神经网络模型对应的特征处理时延。
可选地,在确定任一神经网络加速器对应的神经网络模型的数据处理时延时,对于每一层,可基于该神经网络模型的设计参数,确定该神经网络加速器读取输入特征的第一时延、以及将输入特征进行缓存的第二时延,进而基于第一时延和第二时延,确定该神经网络加速器对应的神经网络模型对应于该层的输入特征读取时延。
进一步的,对于每一层,可基于该神经网络模型的设计参数,确定该神经网络加速器传输输出特征的第三时延、以及将输出特征进行缓存的第四时延,进而基于第三时延和第四时延,确定该神经网络加速器对应的神经网络模型对应于该层的输出特征缓存时延。
进一步的,对于每一层,可基于该神经网络模型的设计参数,确定该神经网络加速器读取网络参数的第五时延、将网络参数进行缓存的第六时延以及对输入特征进行处理的第七时延,进而基于第五时延、第六时延以及第七时延,确定该神经网络加速器对应的神经网络模型对应于该层的特征处理时延。
进一步的,对于每一层,可基于该层对应的输入特征读取时延、输出特征缓存时延以及特征处理时延,确定该层对应的数据处理时延。如将该层对应的输入特征读取时延、输出特征缓存时延以及特征处理时延之和,确定为该层对应的数据处理时延。进一步基于各层对应的数据处理时延,确定该神经网络加速器对应的神经网络模型的数据处理时延。
任一神经网络加速器对应的神经网络模型的网络参数,包括但不限于该神经网络模型对应的各项配置参数(如卷积核数量、卷积步长等参数)、权重参数以及神经网络模型在进行特征处理时所产生的相关参数,如循环过程中产生的输入特征、输出特征以及相关的数量、特征大小等。
下面结合图2对本申请实施例中确定神经网络加速器的数据处理时延进行进一步说明。图2是本申请实施例提供的神经网络加速器的一架构示意图。图2所示的神经网络加速器包括输入特征图读取模块(Load_IFM)21、权重参数读取模块(Load_W)22、输出特征图写回模块(Store_OFM)23、控制模块(CTRL)24、输入缓冲模块(Input Buffer)25、权重缓冲模块(Weight Buffer)26、输出缓冲模块(Output Buffer)27以及FPGA的神经网络模型对应的算子模块28(如包括CONV、MaxPool、AvgPool、DCONV等算子)。
其中,输出特征图写回模块23中包含非线性处理模块,会根据不同算子对控制模块24中的非线性处理寄存器的写入类型值,对输出缓冲模块27中的输出特征图进行非线性处理(如实现ReLU、Leaky ReLU、ReLU6等处理方式)。在对算子模块28所对应的算子进行处理前,可通过控制模块24配置与设计参数相关的数据寄存器,再读写状态寄存器来控制算子处理过程。神经网络加速器与外部存储器(也称“片外存储器”)29通信的接口数据位宽(32位、64位、128位、256位等)可在构建神经网络加速器确定。
若上述神经网络加速器对应的加速器结构为基于硬件循环展开的加速器架构,且对应的神经网络模型为图卷积神经网络,则该神经网络加速器对应的输入特征图、输出特征图和卷积核参数(网络参数,也即权重参数)分别存储于外部存储器DRAM中。
其中,在输入特征图数和输出特征图数二维硬件展开后,外循环(Outer-Loop)由输出特征图数维度、输出特征图数维度和输入特征图数维度顺序组成,并控制外部存储器29与片上缓存间的数据交互。在采用输出特征图复用的数据复用模式下,所有的中间结果都保存在输出缓冲模块27中,只有最终结果才会写回外部存储器29。外循环状态机控制输入特征图读取模块21、权重参数读取模块22和输出特征图写回模块23,根据循环分块的设计参数从外部存储器29中读取输入特征图像素块和网络参数或从片上输出缓存将输出特征图像素块写回外部存储器29。在此情况下,该神经网络加速器会产生数据处理时延。
若表1中所示的各项参数为该神经网络加速器的设计参数,以MM(Length,BurstLengthmax)来表示在最大突发长度为Burst Lengthmax的前提下,传输连续Length个预设位宽的数据的时延,如可以为片上总线协议(Advanced Microcontroller BusArchitecture,AMBA)所规定的不小于1024位的位宽。
对于每一卷积层,输入特征图读取模块21通过直接存储器访问(Direct MemoryAccess,DMA)从外部存储器29读取大小为Tiy×Tix的输入特征图像到片上的第一时延为:
LatencyLoad IFM M2DMA=Tif×Tiy×MM(Tix,Burst Lengthmax);
将输入特征图像素块传输到片上缓存的第二时延为:
LatencyLoad IFM DMA2B=Tif×Tiy×Tix;
在不考虑乒乓缓冲的情况下,输入特征图读取时延为:
LatencyLoad IFM=LatencyLoad IFM M2DMA+LatencyLoad IFM DMA2B。
对于每一卷积层,将输出特征图传输到DMA的第三时延为:
LatencyStore OFM B2DMA=Tof×Toy×Tox;
通过DMA将Tof张大小为Toy×Tox的输出特征图写回外部存储器29的第四时延为:
Latencystore OFM DMA2M=Tof×Toy×MM(Tox,Burst Lengthmax);
输出特征图缓存时延为:
LatencyStore OFM=Latencystore OFM B2DMA+LatencyStore OFM DMA2M。
对于每一卷积层,权重参数读取模块22通过DMA从外部存储器29读取Tof个卷积核对应的Tif张大小为Nky×Nkx的输入特征图(网络参数)到片上的第五时延为:
LatencyLoad w M2DMA=Tof×MM(Tif×Nkx×Nky,Burst Lengthmax);
将各卷积核的输出特征图(网络参数)传输到片上缓存的第六时延为:
LatencyLoad w DMA2B=Tof×Tif×Nkx×Nky。
参见图3,图3是本申请实施例提供的神经网络加速器中算子模块的一架构示意图。图3为当设计参数Tof=2,Tif=4的卷积架构图。通过对卷积循环中输出特征图数和输入特征图数两维硬件循环展开,形成Pof×Pif个并行乘法计算单元和Pof个
深度的加法树,并基于此进行流水处理乘加计算。算子模块在神经网络加速器的每个时钟周期,从对应的Tif个独立输入缓存中读入Tif个相同位置的像素,同时也从Tof×Tif个独立的权重缓存中读入相同位置的网络参数,并通过Tof×Tif个并行乘法单元复用Tif个输入像素进行乘法计算。Tof个加法树将乘积两两相加,将得到的结果和偏置累加之和写回对应输出缓冲。在此过程中,神经网络模型(卷积算子)对于每一卷积层的计算时延为:
LatencyCompute=(Const+Nky×Nkx×Toy×Tox)/Freq。
其中,Freq表示时钟周期,Const表示常量。此时可将上述计算时延LatencyCompute作为对输入特征进行处理的第七时延。
进一步的,在输入特征图数和输出特征图数二维硬件展开后,内循环(Inner-Loop)将展开的维度放到最内层,而其他未展开的维度则在外层,按照内循环的外层对卷积循环展开形成的硬件计算架构进行控制和流水复用。为尽可能地复用输出特征图,将输出特征图和存储在片上缓存或局部寄存器中,将最终的结果写回外部存储器。在循环过程中,必须从外部存储器读取网络参数
次,读取输入特征图/>
次,则每一层对应的数据梳理时延为:
其中,LatencyLoad W=LatencyLoad W M2DMA+LatencyLoad W DMA2B。该神经网络加速器对应的神经网络模型的数据处理时延为:
其中,i表示层索引,N表示层数。
在本申请实施例中,对于任一神经网络加速器,该神经网络加速器的性能指标是通过该神经网络加速器对应的性能评估模型确定的,其中,该神经网络加速器对应的性能评估模型的模型输入和模型输出分别为该神经网络加速器的设计参数和性能指标。
即对于任一神经网络加速器,将该神经网络加速器的设计参数输入相对应的性能评估模型,进而通过性能评估模型得到该神经网络加速器对应的性能指标。其中,上述性能评估模型可基于Roofline模型构建。
其中,各神经网络加速器可对应同一性能评估模型,在基于性能评估模型确定任一神经网络加速器的性能指标之前,基于该神经网络加速器的设计参数对性能评估模型的模型参数进行调整,以得到与该神经网络加速器相匹配的性能评估模型,如神经网络模型、数据类型等相匹配。或者,基于任一神经网络加速器的设计参数,构建相对应的性能评估模型,如基于不同的加速器架构、不同的神经网络模型以及不同的数据类型选择相对应的性能评估模型。
步骤S14、基于各性能指标,从各神经网络加速器中确定目标神经网络加速器。
在本申请实施例中,在得到各神经网络加速器的性能指标之后,可确定各神经网络加速器的运行状态所对应的帕累托边界,进而将性能指标满足相对应的帕累托边界的神经网络加速器确定为目标神经网络加速器,即最终从构建出的各神经网络加速器中确定出性能较高的神经网络加速器。
在本申请实施例中,可基于各神经网络加速器的设计参数,确定各神经网络加速器对应的最大带宽值和最高性能值,进而对于每一神经网络加速器,可基于该神经网络加速器的性能值和计算密度、以及对应的最大带宽值和最高性能值,确定该神经网络加速器是否为目标神经网络加速器。
可选地,可基于各神经网络加速器的性能指标,确定出带宽值最接近理论最大带宽值以及性能值接近理论最高性能值的一定数量的目标神经网络加速器。
对于每一神经网络加速器,可基于该神经案例加速器的计算密度和性能值,确定该神经网络加速器的带宽值。若该神经网络加速器的带宽值与其相对应的最大带宽值的带宽差值小于或者等于第三阈值,和/或性能值与相对应的最高性能值的性能差值小于或者等于第四阈值,则说明该神经网络加速器的带宽值与最大带宽值相接近,和/或性能值与最高性能值相接近,进而可确定该神经网络加速器的运行状态接近理想状态,可将其确定为目标神经网络加速器。
其中,上述最大带宽值和上述最高性能值可基于FPGA异构平台对应的各运算资源的最大运算资源数、FPGA异构平台的最高时钟频率以及各数据类型确定。
在本申请实施例中,不同的FPGA对于不同的运算所消耗的运算资源同样存在差异,如在Zynq 7000系列芯片中,DSP资源类型为DSP48E1,单个DSP48E1能计算最大25*18位乘法,Zynq Ultrascale+MPSoC系列采用DSP48E2,单个DSP能计算最大27*18位乘法。因此同一神经网络加速器在对应于不同的FPGA时,其对应的设计参数也不同。
在本申请实施例中,对于每一神经网络加速器,该神经网络加速器在对应不同的数据类型(数据精度)时,所消耗的运算资源也不同。如卷积神经网络所消耗的运算资源大部分应用于乘法器和加法器,而单一乘法器和加法器的资源耗费又与数据精度有关。
在不同数据类型下,乘法器和加法器所消耗的运算资源如表2所示:
表2
浮点32位精度时,实现单个乘法器和加法器的DSP和LUT的耗费很大。定点16位、定点8位时,加法器只耗费少量LUT,乘法器和移位电路耗费的资源与浮点32位相比相应降低。
基于此,对于每一神经网络加速器,该神经网络加速器除神经网络模型所消耗一定数量的运算资源外,还有数据处理环节消耗一定数量的运算资源。因此对于该神经网络加速器而言,其所消耗的各运算资源的资源数小于或者等于相对应的运算资源的运算资源阈值。如其消耗的DSP小于DSP数量阈值,其消耗的LUT小于LUT对应的数量阈值。
对于每一种运算资源,可确定该运算资源的最大运算资源数以及第一消耗比例,进而基于最大运算资源数和第一消耗比例,确定该运算资源的运算资源阈值。其中,上述第一消耗比例可基于实际应用场景需求确定,在此不做限制。
作为一示例,一神经网络加速器对应的神经网络模型为卷积神经网络,则卷积神经网络所消耗的DSP的数量
小于或者等于/>
其中,R表示DSP对应的第一消耗比例,如R可以为85%,即/>
表示DSP对应的最大数量。其消耗的LUT的数量/>
小于或者等于/>
其中,P表示LUT对应的第二消耗比例,如P可以为80%,即/>
表示LUT对应的最大数量。
若上述卷积神经网络对应的各设计参数如表1所示,则
Tif×(Cost
MulDSP+CoSt
AddDSP),/>
其中,Cost
MulDSP表示在相对应的数据类型下,乘法器所消耗的DSP的数量,CoSt
AddDSP表示在相对应的数据类型下,加法器所消耗的DSP的数量,Cost
MulLUT表示在相对应的数据类型下,加乘法器所消耗的LUT的数量,COSt
AddLUT表示在相对应的数据类型下,加加法器所消耗的LUT的数量,Cost
Select表示其他处理项所消耗的LUT的数量,如选择电路和累加器所消耗的LUT的数量。
同样的,在不同维度展开形成的加速硬件架构需要同时从/向不同数目的BRAM中读取/写入数据,而BRAM本身的读写接口数有限(不超过4个),因此需要消耗一定数量的BRAM,由此也导致BRAM资源耗费的增加。由于神经网络加速器所对应的存储资源有限,因此每一神经网络加速器对应的神经网络模型所消耗的存储资源的总资源数小于或者等于存储资源阈值,如其消耗的BRAM的数量小于BRAM对应的数量阈值。
基于此,可确定存储资源的最大存储资源数和第二消耗比例,进而基于最大存储资源数和第二消耗比例,确定存储资源的存储资源阈值。其中,上述第二消耗比例可基于实际应用场景需求确定,在此不做限制。
其中,每一神经网络加速器所消耗的存储资源包括用于缓存相对应的神经网络模型的输入特征的存储资源、用于缓存相对应的神经网络模型的输出特征的存储资源以及用于缓存相对应的神经网络模型的网络参数的存储资源中的至少一项。
作为一示例,一神经网络加速器所消耗的用于缓存相对应的神经网络模型的输入特征的存储资源N
InBufBRAM、用于缓存相对应的神经网络模型的输出特征的存储资源N
outBufBRAM以及用于缓存相对应的神经网络模型的网络参数的存储资源N
WBufBRAM的总数量小于或者等寸
其中,Q表示BRAM对应的第二消耗比例,如Q可以为90%,即
表示BRAM的最大数量。
在本申请实施例中,在确定出目标神经网络加速器之后,其对应的设计参数即为经过优化的、运行性能较好的神经网络加速器。同时,为进一步提升数据访问效率,可确定出目标神经网络参数中数据长度小于第一阈值,和/或读取次数超过第二阈值的第一设计参数,进而基于各第一设计参数重新生成第二设计参数。
如将需要连续访问数据长度较短且需多次访问的权重参数重排为连续访问数据长度较长且少次访存的权重参数,并生成相应重排权重参数二进制文件。进而在需要基于目标神经网络加速器的设计参数构建目标神经网络加速器,或者在运行目标神经网络加速器需要读取相关参数时,直接读取第二设计参数(其对应的二进制文件)即可,进一步提升数据读取效率。
如将神经网络加速器的神经网络模型的权重参数中数据长度较小、且读取次数较多的权重参数,在相对读取顺序不变的情况下集中重排生成二进制文件。
可选地,对于任一目标神经网络加速器,还可基于FPGA异构平台运行该目标神经网络加速器,得到该目标神经网络加速器的实际性能指标。进一步基于该目标神经网络加速器的实际性能指标和/或该目标神经网络加速器的数据处理时延,更新该目标神经网络加速器对应的性能评估模型的模型参数。基于此,可提升性能评估模型确定神经网络加速器的性能指标的准确性。
其中,在对性能评估模型的模型参数进行更新时,可基于模拟退火算法、遗传算法、粒子群算法、基于学习的算法等,在此不做限制。
在本申请实施例中,基于多种神经网络模型和多种加速器结构,可得到涵盖多种神经网络模型负载以及多种加速器结构的、用于处理不同数据类型的多种神经网络加速器,从而实现针对多种神经网络模型、多种加速器结构以及多种数据类型的加速器构建。进一步通过神经网络加速器的设计参数,可有效确定各神经网络加速器的性能指标,从而基于性能指标对神经网络加速器的性能进行准确评估,以从中选取性能增益较高的目标神经网络加速器,适用性高。
参见图4,图4是本申请实施例提供的神经网络加速器的确定装置的结构示意图。本申请实施例提供神经网络加速器的确定装置包括:
获取模块41,用于获取神经网络模型集合和加速器结构集合,上述神经网络模型集合包括至少一种神经网络模型,上述加速器结构集合包括至少一种加速器结构;
确定模块42,用于基于上述神经网络模型集合和上述加速器结构集合,确定至少一个神经网络加速器,任一神经网络加速器由至少一种神经网络模型和一种加速器结构确定,并用于处理一种数据类型的数据;
参数确定模块43,用于确定各上述神经网络加速器的设计参数,基于各上述设计参数,确定各上述神经网络加速器的性能指标;
性能评估模块44,用于基于各上述性能指标,从各上述神经网络加速器中确定目标神经网络加速器。
可选地,上述获取模块41,用于:
确定现场可编程逻辑门阵列FPGA异构平台对应的各运算资源的最大运算资源数、以及上述FPGA异构平台的最高时钟频率;
基于上述神经网络模型集合、上述加速器结构集合、各上述运算资源的最大运算资源数以及上述最高时钟频率,确定至少一个基于FPGA异构平台的神经网络加速器。
可选地,上述性能指标包括计算密度和性能值;上述参数确定模块43,用于:
基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的数据处理时延、数据运算总次数以及数据访存总次数;
对于每一上述神经网络加速器,基于该神经网络加速器对应的数据运算总次数和数据访存总次数,确定该神经网络加速器的计算密度,基于该神经网络加速器对应的数据运算总次数和数据处理时延,确定该神经网络加速器的性能值。
可选地,上述参数确定模块43,用于:
基于各上述设计参数,确定各上述神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的神经网络模型的输入特征读取时延、输出特征缓存时延以及特征处理时延,确定该神经网络加速器对应的神经网络模型的数据处理时延。
可选地,上述参数确定模块43,用于:
基于各上述设计参数,确定各上述神经网络加速器读取输入特征的第一时延、以及将上述输入特征进行缓存的第二时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第一时延和第二时延,确定该神经网络加速器对应的神经网络模型的输入特征读取时延。
可选地,上述参数确定模块43,用于:
基于各上述设计参数,确定各上述神经网络加速器传输输出特征的第三时延、以及将上述输出特征进行缓存的第四时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第三时延和第四时延,确定该神经网络加速器对应的神经网络模型的输出特征缓存时延。
可选地,上述参数确定模块43,用于:
基于各上述设计参数,确定各上述神经网络加速器读取网络参数的第五时延、将上述网络参数进行缓存的第六时延以及对输入特征进行处理的第七时延;
对于每一上述神经网络加速器,基于该神经网络加速器对应的第五时延、第六时延以及第七时延,确定该神经网络加速器对应的神经网络模型的特征处理时延。
可选地,对于每一上述神经网络加速器,该神经网络加速器的性能指标是通过该神经网络加速器对应的性能评估模型确定的,其中,该神经网络加速器对应的性能评估模型的模型输入和模型输出分别为该神经网络加速器的设计参数和性能指标;
上述参数确定模块43,还用于:
运行上述目标神经网络加速器,得到上述目标神经网络加速器的实际性能指标;
基于上述实际性能指标,更新上述目标神经网络加速器对应的性能评估模型的模型参数。
可选地,上述参数确定模块43,用于:
确定上述目标神经网络加速器的设计参数中数据长度小于第一阈值和/或读取次数超过第二阈值的第一设计参数;
基于各上述第一设计参数生成第二设计参数,并将上述第二设计参数进行存储。
可选地,任一上述神经网络加速器的设计参数包括相对应的神经网络模型的网络参数。
可选地,上述性能评估模块44,用于:
确定各上述神经网络加速器的运行状态所对应的帕累托边界,将性能指标满足相对应的帕累托边界的神经网络加速器确定为目标神经网络加速器;或者,
确定各上述神经网络加速器对应的最大带宽值和最高性能值,基于各上述神经网络加速器的性能值和计算密度、以及对应的最大带宽值和最高性能值,从各上述神经网络加速器中确定目标神经网络加速器。
可选地,上述性能评估模块44,用于:
对于每一上述神经网络加速器,基于该神经网络加速器的计算密度和性能值,确定该神经网络加速器的带宽值,若该神经网络加速器的带宽值与上述最大带宽值的带宽差值小于或者等于第三阈值,和/或性能值与上述最高性能值的性能差值小于或者等于第四阈值,则将该神经网络加速器确定为目标神经网络加速器。
可选地,上述性能评估模块44,用于:
基于FPGA异构平台对应的各运算资源的最大运算资源数、上述FPGA异构平台的最高时钟频率以及各上述数据类型,确定各上述神经网络加速器对应的最大带宽值和最高性能值。
可选地,对于每一上述神经网络加速器,该神经网络加速器对应的神经网络模型所消耗的各上述运算资源的资源数小于或者等于相对应的运算资源的运算资源阈值,和/或该神经网络加速器所消耗的存储资源的总资源数小于或者等于存储资源阈值;
其中,上述参数确定模块43,用于:
确定各上述运算资源的第一消耗比例;
对于每一上述运算资源,基于该运算资源对应的最大运算资源数和第一消耗比例,确定该运算资源的运算资源阈值;
其中,上述参数确定模块43,用于:
确定上述FPGA异构平台对应的存储资源的最大存储资源数和第二消耗比例,基于上述最大存储资源数和第二消耗比例,确定上述存储资源阈值。
可选地,上述神经网络模型集合包括VGG16-D、YOLOv2、YOLOv2-Tiny、Mobilenetv1、Mobilenet v1-SSD、Resnet-50以及Resnet34-SSD中的至少一项神经网络模型。
可选地,上述加速器结构集合包括基于最优卷积算法的加速器架构、基于脉动阵列的加速器架构以及基于硬件循环展开的加速器架构中的至少一项。
可选地,上述数据类型包括浮点32位、浮点16位、定点16位以及定点8位中的至少一项。
可选地,上述运算资源包括数字信号处理器DSP和查找表LUT中的至少一项。
可选地,上述存储资源包括块随机存储器BRAM,每一上述神经网络加速器所消耗的存储资源包括用于缓存相对应的神经网络模型的输入特征的存储资源、用于缓存相对应的神经网络模型的输出特征的存储资源以及用于缓存相对应的神经网络模型的网络参数的存储资源中的至少一项。
具体实现中,上述装置可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
基于本申请实施例提供的装置,可得到涵盖多种神经网络模型负载以及多种加速器结构的、用于处理不同数据类型的多种神经网络加速器,从而实现针对多种神经网络模型、多种加速器结构以及多种数据类型的加速器构建。进一步通过神经网络加速器的设计参数,可有效确定各神经网络加速器的性能指标,从而基于性能指标对神经网络加速器的性能进行准确评估,以从中选取性能增益较高的目标神经网络加速器,适用性高。
参见图5,图5是本申请实施例提供的电子设备的结构示意图。如图5所示,本实施例中的电子设备50可以包括:处理器51,网络接口54和存储器55,此外,上述电子设备50还可以包括:用户接口53,和至少一个通信总线52。其中,通信总线52用于实现这些组件之间的连接通信。其中,用户接口53可以包括显示屏(Display)、键盘(Keyboard),可选用户接口53还可以包括标准的有线接口、无线接口。网络接口54可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器54可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Olatile Memory),例如至少一个磁盘存储器。存储器55可选的还可以是至少一个位于远离前述处理器51的存储装置。如图5所示,作为一种计算机可读存储介质的存储器55中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图5所示的电子设备50中,网络接口54可提供网络通讯功能;而用户接口53主要用于为用户提供输入的接口;而处理器51可以用于调用存储器55中存储的设备控制应用程序,以实现本申请实施提供的神经网络加速器的确定方法。
应当理解,在一些可行的实施方式中,上述处理器51可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备50可通过其内置的各个功能模块执行如上述图1中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图1中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的装置和/或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1中各个步骤所提供的方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。