卷积运算的处理方法、电子设备及计算机可读存储介质

文档序号:169820 发布日期:2021-10-29 浏览:9次 >En<

阅读说明:本技术 卷积运算的处理方法、电子设备及计算机可读存储介质 (Convolution operation processing method, electronic device and computer readable storage medium ) 是由 庄晨 孟金涛 魏彦杰 于 2021-06-08 设计创作,主要内容包括:本申请涉及卷积运算技术领域,公开了卷积运算的处理方法、电子设备及计算机可读存储介质。该方法包括:获取待处理的卷积运算、硬件参数以及配置数据库;若确定配置数据库中无卷积运算的卷积尺寸和硬件参数对应的配置参数,则根据卷积尺寸以及硬件参数定义一参数搜索空间;其中,配置数据库的配置参数基于Winograd算法确定;根据Winograd算法将参数搜索空间中的配置参数生成多个运算代码,并利用多个运算代码对卷积运算进行计算,以得到多个运算结果;将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库。通过上述方式,能够提升该电子设备进行卷积运算的计算性能。(The application relates to the technical field of convolution operation, and discloses a convolution operation processing method, electronic equipment and a computer readable storage medium. The method comprises the following steps: acquiring convolution operation, hardware parameters and a configuration database to be processed; if the convolution size without convolution operation in the configuration database and the configuration parameters corresponding to the hardware parameters are determined, defining a parameter search space according to the convolution size and the hardware parameters; the configuration parameters of the configuration database are determined based on a Winograd algorithm; generating a plurality of operation codes according to the configuration parameters in the parameter search space by using a Winograd algorithm, and calculating convolution operation by using the operation codes to obtain a plurality of operation results; and storing the configuration parameters of the operation codes corresponding to one operation result which meets the preset condition in the plurality of operation results into a configuration database. By the method, the calculation performance of the electronic equipment for convolution operation can be improved.)

卷积运算的处理方法、电子设备及计算机可读存储介质

技术领域

本申请涉及卷积运算技术领域,特别是涉及卷积运算的处理方法、电子设备及计算机可读存储介质。

背景技术

IoT及移动设备市场研究估计,到2020年,市场上将有多达200亿个连接设备。这些设备预计将在云端和移动设备或IoT之间产生数十亿PB的数据流量。仅在2017年,市场预计将有84亿个连接的设备,这引发了在移动端预处理数据的强烈需求,并导致许多物联网设备制造商,尤其是那些致力于智能相机,无人机,机器人,AR/VR等视觉设备的设备制造商将智能带入了边缘或者移动端。

近些年来,深度学习已经开始部署于移动设备和嵌入式设备上,而且该趋势日益剧增。例如在消费级市场领域,Apple X上的人脸识别(称为Face ID),HoloLens上的手势识别,Apple TV上的语音控制,mavic pro上的障碍回避,自动驾驶汽车上的智能导航,实时战略游戏等;在政府或军事用途领域,数百万摄像头的交通监控,水下机器人的船舶清洁,无人无GPS的智能无人机巡航(彩虹3无人机),军用机器人目标识别等。

但是目前移动设备或嵌入式设备仍然是采用人工调参或者以固定方式进行卷积运算,不同设备因硬件不同,计算性能并不能得到提升。

发明内容

本申请主要解决的技术问题是提供卷积运算的处理方法、电子设备及计算机可读存储介质,能够提升该电子设备进行卷积运算的计算性能。

为了解决上述问题,本申请采用的一种技术方案是提供一种卷积运算的处理方法,该方法包括:获取待处理的卷积运算、硬件参数以及配置数据库;若确定配置数据库中无卷积运算的卷积尺寸和硬件参数对应的配置参数,则根据卷积尺寸以及硬件参数定义一参数搜索空间;其中,配置数据库的配置参数基于Winograd算法确定;根据Winograd算法将参数搜索空间中的配置参数生成多个运算代码,并利用多个运算代码对卷积运算进行计算,以得到多个运算结果;将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库。

其中,若确定配置数据库中无卷积运算的卷积尺寸和硬件参数对应的配置参数,则根据卷积尺寸以及硬件参数定义一参数搜索空间,包括:判断配置数据库中是否有卷积运算的卷积尺寸和硬件参数对应的配置参数;若是,则按照配置参数生成运算代码,并进行计算得到运算结果;若否,则根据卷积尺寸以及硬件参数定义多个配置参数,以形成参数搜索空间。

其中,卷积尺寸和硬件参数对应的配置参数至少包括输入通道的数量、输出通道的数量、输入数据的尺寸、卷积核变换对应的寄存器块数量、卷积核输出通道的数据块、输入数据变换对应的寄存器块数量、输入数据变换对应的缓存块、卷积核转换标签、搜索空间标签;其中,卷积核变换对应的寄存器块数量的取值范围为[2,7],卷积核输出通道的数据块的取值范围为[0,K/n],n为卷积核变换对应的寄存器块数量,K为输出通道的数量,输入数据变换对应的寄存器块数量的取值范围为[2,7],输入数据变换对应的缓存块的取值范围为[0,tiles/m],m为输入数据变换对应的寄存器块数量,tiles为缓存块的数量,卷积核转换标签为0或1,搜索空间标签为0、1、2或3。

其中,根据卷积尺寸以及硬件参数定义多个配置参数,以形成参数搜索空间,包括:根据卷积尺寸以及硬件参数定义多个参数组合,以得到配置参数;基于配置参数形成参数搜索空间。

其中,根据Winograd算法将参数搜索空间中的配置参数生成多个运算代码,并利用多个运算代码对卷积运算进行计算,以得到多个运算结果,包括:对参数搜索空间中的每个参数组合生成一运算代码,得到多个运算代码;利用多个运算代码分别对卷积运算进行计算,以得到多个运算结果。

其中,将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库,包括:判断多个运算结果中是否存在满足预设条件的运算结果,预设条件至少包括运算结果对应的运算时间最短;若是,则将满足预设条件的运算结果对应的配置参数存储至配置数据库。

其中,利用多个运算代码分别对卷积运算进行计算,以得到多个运算结果,包括:根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,得到卷积核变换矩阵;根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,得到输入数据变换矩阵;将卷积核变换矩阵和输入数据变换矩阵按照搜索空间标签进行矩阵乘法,得到预运算结果;将预运算结果进行压缩,得到运算结果。

其中,根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,得到卷积核变换矩阵,包括:根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,并根据卷积核的数据内存地址进行排序,得到卷积核变换矩阵,卷积核变换矩阵中的相邻元素的内存地址连续;根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,得到输入数据变换矩阵,包括:根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,并根据输入数据的数据内存地址进行排序,得到输入数据变换矩阵,输入数据变换矩阵中的相邻元素的内存地址连续。

为了解决上述问题,本申请采用的另一种技术方案是提供一种电子设备,该电子设备包括处理器以及与处理器耦接的存储器,存储器中存储有程序数据,处理器用于执行程序数据以实现如上述技术方案提供的处理方法。

为了解决上述问题,本申请采用的另一种技术方案是提供一种计算机可读存储介质,该计算机可读存储介质存储有程序数据,程序数据在被处理器执行时,实现如上述技术方案提供的处理方法。

本申请的有益效果是:区别于现有技术的情况,本申请的卷积运算的处理方法、电子设备及计算机可读存储介质。该方法通过确定配置数据库中没有卷积尺寸和硬件参数对应的配置参数后,根据卷积尺寸以及硬件参数定义一参数搜索空间,从而在根据参数搜索空间中的配置参数对卷积运算进行重构优化,生成多个运算代码,并利用多个运算代码对待处理的卷积运算进行计算,以得到多个运算结果,进而将满足预设条件的运算结果对应的配置参数存储至配置数据库,该满足预设条件的运算结果对应的配置参数能够提升该设备进行卷积运算的计算性能,进而能够实现电子设备在进行卷积运算时的自动配置参数优化,无需人工调参,提升电子设备的计算性能以及减少用户操作,进而提升用户体验。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:

图1是本申请提供的卷积运算的处理方法一实施例流程示意图;

图2是本申请提供的卷积运算的处理方法另一实施例流程示意图;

图3是本申请提供的步骤23的计算示意图;

图4是本申请提供的步骤24的流程示意图;

图5是本申请提供的步骤25的流程示意图;

图6是本申请提供的步骤252的流程示意图;

图7是本申请提供的步骤26的流程示意图;

图8是本申请提供的电子设备一实施例的结构示意图;

图9是本申请提供的计算机可读存储介质一实施例的结构示意图;

图10是本申请提供的一应用场景的结果示意图;

图11是本申请提供的另一应用场景的结果示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

IoT及移动设备市场研究估计,到2020年,市场上将有多达200亿个连接设备。这些设备预计将在云端和移动设备或IoT之间产生数十亿PB的数据流量。仅在2017年,市场预计将有84亿个连接的设备,这引发了在移动端预处理数据的强烈需求,并导致许多物联网设备制造商,尤其是那些致力于智能相机,无人机,机器人,AR/VR等视觉设备的设备制造商将智能带入了边缘或者移动端。

近些年来,深度学习已经开始部署于移动设备和嵌入式设备上,而且该趋势日益剧增。例如在消费级市场领域,Apple X上的人脸识别(称为Face ID),HoloLens上的手势识别,Apple TV上的语音控制,mavic pro上的障碍回避,自动驾驶汽车上的智能导航,实时战略游戏等;在政府或军事用途领域,数百万摄像头的交通监控,水下机器人的船舶清洁,无人无GPS的智能无人机巡航(彩虹3无人机),军用机器人目标识别等。

卷积计算是常用卷积神经网络(CNN)中主要的运算部分,它在许多网络模型的运算占比达到了99%以上。如下表:

上表表示了深度学习常见CNN网络模型中卷积计算耗时占比。

在移动计算的环境中,基于ARM架构的CPU是移动设备中使用的主要硬件体系结构,它是探索当前神经网络部署的最佳解决方案的合适且实用的硬件平台。每年有数十家授权供应商通过修改ARM架构的缓存大小,内存类型,指令CPI或指令集来制造数十种不同类型的ARM SoC。因此,如果深度学习应用要充分利用给定设备中的硬件资源,那么应用性能可移植性也是一个挑战。当深度学习应用要使用ARM SoC上的后端计算库为深度学习模型提供服务时,它们就必须解决“应用性能可移植性”这一问题。

对于数十亿种具有数百种硬件规格的ARM SoC而言,性能移植的生产力是部署深度学习模型的另一个挑战。ARM已经发布了10种Cortex-M和16种Cortex-A/X系列架构,而Apple和其他供应商已经发布了基于ARM架构的37种架构。因此,通过手动调优这一方式来覆盖所有ARM硬件架构的矩阵运算库是不经济的。例如,OpenBLAS的作者在将这一高效矩阵运算库移植到13种不同的ARM体系结构之后,对于在2016年发布的Cortex-A73以及之后发布的设备上停止了移植工作。

因此,在这种情况下,本申请提出以下几种方式来进行解决。

参阅图1,图1是本申请提供的卷积运算的处理方法一实施例流程示意图。该方法包括:

步骤11:获取待处理的卷积运算、硬件参数以及配置数据库。

在一些实施例中,卷积运算运用于神经网络中,通常需要通过人工调节对应的参数,以完成卷积运算。

一般来讲,卷积运算通常有三部分组成,其中两部分是卷积,一部分是两卷积对应的卷积计算方法,通过获取待处理的卷积运算,可以实现对卷积运算的预备处理工作。

通常,往往在本地储存有配置数据库,配置数据库里有对应的卷积计算方法,用于在进行卷积运算时,通过获取配置数据库,可以为卷积后面的转换进行进一步地计算处理。

其中,可以先获取待处理的卷积运算,通过卷积来获取配置数据库。另外,也可以同时获取待处理的卷积运算以及获取配置数据库,本领域技术人员也可以再对待处理的卷积运算进行一部分处理,然后在获取配置数据库,具体根据需求进行获取,此处不做限定。

在本实施例中,可以通过获取待处理的卷积运算、硬件参数以及配置数据库,以在配置数据库中确定是否存在与本次卷积运算以及处理本次卷积运算的硬件相对应的配置参数。若存在,则将按照对应的配置参数进行卷积运算即可。若不存在,则执行步骤12。

步骤12:若确定配置数据库中无卷积运算的卷积尺寸和硬件参数对应的配置参数,则根据卷积尺寸以及硬件参数定义一参数搜索空间。

在本实施例中,配置数据库的配置参数基于Winograd算法确定。

通常,配置数据库中会有卷积尺寸以及硬件参数对应的配置参数,该配置参数是在各种卷积尺寸以及各种硬件参数下的最优参数组合,该参数组合可以在历史卷积运算中保留。但是,若配置数据库中无卷积运算的卷积尺寸和硬件参数对应的配置参数,则需要根据当前的卷积尺寸和硬件参数来确定最优参数组合。如根据卷积尺寸以及硬件参数定义一参数搜索空间。在参数搜索空间中存在众多待确定的配置参数。

在一应用场景中,随着数据中心和移动设备中深度学习应用程序种类的增加以及各种新研发的SoC也已投放到市场中。越来越多的具有不同体系结构的SoC和各式各样的深度学习应用使得配置数据库中没有卷积尺寸以及硬件参数对应的配置参数,同时也加剧了软件开发人员难以支持和优化现有的配置数据库。

大量不同硬件配置和不同卷积尺寸下,若确定配置数据库中无卷积尺寸和硬件参数对应的配置参数,则根据卷积尺寸以及硬件参数定义一参数搜索空间。

步骤13:根据Winograd算法将参数搜索空间中的配置参数生成多个运算代码,并利用多个运算代码对卷积运算进行计算,以得到多个运算结果。

由于对于多个卷积来将,可以对应有多个矩阵,每个卷积有匹配的自身性质,所以对应的矩阵形成各种配置参数,存放于参数搜索空间中。

因为每种配置参数有预设的取值范围,所以根据确定取值可以确定出一个具体的配置参数组合,从而根据参数搜索空间中的配置参数生成运算代码,通过利用该运算代码对待处理的卷积运算进行计算,则可以得到对应的运算结果。

当配置参数的组合有多个时,则可以生成多个运算代码,则可以利用多个运算代码对待处理的卷积运算进行计算,以得到多个运算结果,当然这些运算结果可能会一样,也可能不一样。

步骤14:将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库。

为了挑选最优质的配置参数,所以需要对多个运算结果设置条件限制,用于挑选达到预设条件的运算结果,具体可以设置预设条件,预设条件可以是优化后卷积运算运行的时间,也可以是优化后卷积运算运行所得到的性能误差等。

在多个运算结果中有一个运算结果满足预设条件时,则可以将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库,用于配置数据库的自我更新以及自优化。以使得在后续出现当前卷积尺寸时,可从配置数据库中直接获取该配置参数进行卷积运算。

因此,本实施例针对目前卷积运算的处理方法,通过确定配置数据库中没有卷积尺寸和硬件参数对应的配置参数后,根据卷积尺寸以及硬件参数定义一参数搜索空间,从而在根据参数搜索空间中的配置参数对卷积运算进行重构优化,生成多个运算代码,并利用多个运算代码对待处理的卷积运算进行计算,以得到多个运算结果,进而将满足预设条件的运算结果对应的配置参数存储至配置数据库,该满足预设条件的运算结果对应的配置参数能够提升该设备进行卷积运算的计算性能,进而能够实现电子设备在进行卷积运算时的自动配置参数优化,无需人工调参,提升电子设备的计算性能以及减少用户操作,进而提升用户体验。

参阅图2,图2是本申请提供的卷积运算的处理方法另一实施例流程示意图。该方法包括:

步骤21:获取待处理的卷积运算、硬件参数以及配置数据库。

步骤22:判断配置数据库中是否有卷积运算的卷积尺寸和硬件参数对应的配置参数。

在步骤22中,可以按照卷积尺寸和硬件参数为一组的方式,在配置数据库中进行遍历查找,以确定配置数据库中是否有与之匹配的配置参数。若有,则执行步骤23。若无,则执行步骤24。

步骤23:按照配置参数生成运算代码,并进行计算得到运算结果。

在一些实施例中,参阅图3,步骤23可以是如下流程:

根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,得到卷积核变换矩阵,如图3中的UT

根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,得到输入数据变换矩阵,如图3中的VT

将卷积核变换矩阵和输入数据变换矩阵按照搜索空间标签进行矩阵乘法,得到预运算结果。

将预运算结果进行压缩,得到运算结果。

步骤24:根据卷积尺寸以及硬件参数定义多个配置参数,以形成参数搜索空间。

如,卷积尺寸和硬件参数对应的配置参数至少包括输入通道的数量、输出通道的数量、输入数据的尺寸、卷积核变换对应的寄存器块数量、卷积核输出通道的数据块、输入数据变换对应的寄存器块数量、输入数据变换对应的缓存块、卷积核转换标签、搜索空间标签。

其中,卷积核变换对应的寄存器块数量的取值范围为[2,7],卷积核输出通道的数据块的取值范围为[0,K/n],n为卷积核变换对应的寄存器块数量,K为输出通道的数量,输入数据变换对应的寄存器块数量的取值范围为[2,7],输入数据变换对应的缓存块的取值范围为[0,tiles/m],m为输入数据变换对应的寄存器块数量,tiles为缓存块的数量,卷积核转换标签为0或1,搜索空间标签为0、1、2或3。

可以理解,由于Winograd算法的固有复杂性,一个参数化的可重构实现对于生成所有可能的代码结构是至关重要的,这些代码结构可以平衡各种硬件规格和不同卷积尺寸的计算、内存访问、缓存未命中等。例如,当Winograd算法无法将完整的卷积核变换矩阵UT和输入图片变换矩阵VT存储在高速缓存中时,可以在输出通道维度上来对卷积核变换矩阵UT进行分块,在tile维度上来对矩阵VT进行分块,让它们的分块放在缓存中。

为了提高缓存命中率,本申请的Winograd算法还对输入数据、卷积核和输出变换后的数据内存布局进行重排,以保证Tensor GEMM微内核的连续内存访问模式。数据内存布局重排的操作以及卷积核,输入和输出的转换将导致巨大的内存访问压力,可以通过分块将所有这些转换都保留在缓存中来缓解这种压力。为了确定不同的变换应该放在哪个缓存(L1、L2、L3等)上,可以使用循环重新排序来控制内存访问模式,该模式由搜索空间标签来确定。如缓存分块上的循环重新排序可以确定对VT进行一次扫描并将其保存在L1高速缓存中,对UT进行多次扫描并将其存储在L2高速缓存中,还是反过来让VT进行多次扫描并将其保存在L2高速缓存中,对UT进行一次扫描并将其存储在L1高速缓存中。

此外,由于卷积核的值在推理计算期间保持恒定,因此可以提前执行用于卷积核转换的数据内存布局重排,等到真正执行推理计算时就可以直接访问已经重排过的数据。卷积核转换标签可以确定是否提前执行卷积核转换。

在一些实施例中,参阅图4,步骤24可以是如下流程:

步骤241:根据卷积尺寸以及硬件参数定义多个参数组合,以得到配置参数。

硬件参数的不同,使得卷积尺寸对应的多组参数组合不同,为了更好的得到配置参数,使得之后的卷积运算能更好地运行,则可以根据硬件参数配置卷积尺寸对应的多组参数组合,得到配置参数。

可以按照上述卷积尺寸以及硬件参数定义多个参数组合,如将基于Winograd算法的参数如下表的方式表达:

运行时参数 取值范围
C
K
H,W
m [2,7]
n [2,7]
tB [0,tiles/m]
oB [0,K/n]
onof f Kernel 0,1
loopReorder 0,1,2,3

其中,C表示输入通道的数量、K表示输出通道的数量、H,W表示输入数据的尺寸,H表示高度,W表示宽度、m表示卷积核变换对应的寄存器块数量、tB表示卷积核输出通道的数据块、n表示输入数据变换对应的寄存器块数量、oB表示输入数据变换对应的缓存块、onoff Kernel表示卷积核转换标签、loopReorder表示搜索空间标签。

在本实施例中,可以在上述表格给定的参数的取值范围里,任意生成各种取值,以形成多个参数组合。可以理解,多个参数组合对应了该设备的硬件参数和本次卷积运算的卷积尺寸。

步骤242:基于配置参数形成参数搜索空间。

在这些多个参数组合形成后,则可以将这些参数组合存储于一存储空间,并将该存储空间定义为参数搜索空间。

步骤25:根据Winograd算法将参数搜索空间中的配置参数生成多个运算代码,并利用多个运算代码对卷积运算进行计算,以得到多个运算结果。

在一些实施例中,参阅图5,步骤25可以是如下流程:

步骤251:对参数搜索空间中的每个参数组合生成一运算代码,得到多个运算代码。

在参数搜索空间中,因为每个参数组合可以生成对应的一组运算代码,所以多个参数组合可以生成对应的多组运算代码,用于对同一待处理的卷积运算进行计算。

在本实施例中,该运算代码基于Winograd算法形成。

步骤252:利用多个运算代码分别对卷积运算进行计算,以得到多个运算结果。

在本实施例中,对Winograd算法进行了改进,将原有的固定值参数矩阵进行了改变。如,在卷积核变换时,不再是将3*3的卷积核矩阵变化为4*4的卷积核矩阵,而是根据配置参数进行变化。输入数据的变化也不再固定步长的特征提取,而是根据配置参数进行变化。

在一些实施例中,可以将多个运算代码按堆栈的方式进行排序,分别对待处理的卷积运算进行计算,得到多个运算结果,也可以同时使用多个运算代码,对待处理的卷积运算进行计算,同时得到多个运算结果。

可以理解,采用运算代码依次进行计算的方式得到的运算结果更加接近真实运算的场景。

在一些实施例中,参阅图6,步骤252可以是如下流程:

步骤2521:根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,得到卷积核变换矩阵。

具体地,根据运算代码中的卷积核变换对应的寄存器块数量和卷积核输出通道的数据块进行卷积核变换,并根据卷积核的数据内存地址进行排序,得到卷积核变换矩阵,卷积核变换矩阵中的相邻元素的内存地址连续。通过这样的方式,使卷积核变换矩阵中不为空的元素相邻,能够提高后续进行计算的效率。

步骤2522:根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,得到输入数据变换矩阵。

其中,输入数据可以是图像数据。

具体地,根据运算代码中的输入数据变换对应的寄存器块数量和输入数据变换对应的缓存块对输入数据进行变换,并根据输入数据的数据内存地址进行排序,得到输入数据变换矩阵,输入数据变换矩阵中的相邻元素的内存地址连续。通过这样的方式,使输入数据变换矩阵中不为空的元素相邻,能够提高后续进行计算的效率。

步骤2523:将卷积核变换矩阵和输入数据变换矩阵按照搜索空间标签进行矩阵乘法,得到预运算结果。

搜索空间标签用于定义卷积核变换矩阵和输入数据变换矩阵的运算方式,如以卷积核变换矩阵的元素为基准,每个元素依次与输入数据变换矩阵中的元素进行计算。又如以输入数据变换矩阵的元素为基准,每个元素依次与卷积核变换矩阵中的元素进行计算。

具体地根据搜索空间标签进行确定。

步骤2524:将预运算结果进行压缩,得到运算结果。

因是矩阵与矩阵之间的,因此得到的结果是一个多维立体的矩阵,则需要将多维立体的矩阵进行压缩,得到一个二维矩阵,将二维矩阵作为运算结果。

步骤26:将多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至配置数据库。

在一些实施例中,参阅图7,步骤26可以是如下流程:

步骤261:判断多个运算结果中是否存在满足预设条件的运算结果,预设条件至少包括运算结果对应的运算时间最短。

若存在满足预设条件的运算结果,则执行步骤262。

步骤262:将满足预设条件的运算结果对应的配置参数存储至配置数据库。

在一些实施例中,在筛选的过程种,也可以通过依次对比的方式对多个运算结果进行挑选,比如第一运算结果表示运算时间为10秒,第二运算结果表示运算时间为3秒,第三运算结果表示运算时间为5秒,10秒<3秒>5秒,也就是说第二运算结果对应的配置参数是最优的,当然还可以有多种比较的方式,可更需具体需求进行选择,此处不做限定。通常经过对基于Winograd算法的配置参数进行重构以及自优化,配置数据库对应在不同卷积层上的性能可以提高2%~17%。

通过上述方式,能够在根据参数搜索空间中的配置参数对卷积运算进行重构优化,生成多个运算代码,并利用多个运算代码对待处理的卷积运算进行计算,以得到多个运算结果,进而将满足预设条件的运算结果对应的配置参数存储至配置数据库,该满足预设条件的运算结果对应的配置参数能够提升该设备进行卷积运算的计算性能,进而能够实现电子设备在进行卷积运算时的自动配置参数优化,无需人工调参,提升电子设备的计算性能以及减少用户操作,进而提升用户体验。

参阅图8,图8是本申请提供的电子设备一实施例的结构示意图,该电子设备80包括处理器81以及与处理器81耦接的存储器82,存储器82中存储有程序数据,处理器81用于执行程序数据以实现以下方法:

获取待处理的卷积运算、硬件参数以及配置数据库;若确定所述配置数据库中无所述卷积运算的卷积尺寸和所述硬件参数对应的配置参数,则根据所述卷积尺寸以及所述硬件参数定义一参数搜索空间;其中,所述配置数据库的配置参数基于Winograd算法确定;根据所述Winograd算法将所述参数搜索空间中的配置参数生成多个运算代码,并利用所述多个运算代码对所述卷积运算进行计算,以得到多个运算结果;将所述多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至所述配置数据库。

可以理解的,处理器81还用于执行程序数据以实现上述任一实施例的方法,这里不再赘述。

参阅图9,图9是本申请提供的计算机可读存储介质一实施例的结构示意图。计算机可读存储介质90存储有程序数据91,该程序数据91在被处理器执行时,用于实现以下的方法步骤:

获取待处理的卷积运算、硬件参数以及配置数据库;若确定所述配置数据库中无所述卷积运算的卷积尺寸和所述硬件参数对应的配置参数,则根据所述卷积尺寸以及所述硬件参数定义一参数搜索空间;其中,所述配置数据库的配置参数基于Winograd算法确定;根据所述Winograd算法将所述参数搜索空间中的配置参数生成多个运算代码,并利用所述多个运算代码对所述卷积运算进行计算,以得到多个运算结果;将所述多个运算结果中满足预设条件的一个运算结果对应的运算代码的配置参数,存储至所述配置数据库。

可以理解的,本实施例中的计算机可读存储介质90应用于电子设备80,其具体的实施步骤可以参考上述实施例,这里不再赘述。

在一应用场景中,本申请上述实施例的方案在下表中的5个ARM CPU平台上进行了测试。

首先在Kunpeng920上进行测试来证明本申请提供的方案的性能提升,选择的深度学习网络模型为VGG-16。使用FeatherCNN提供的Winograd算法实现作为测试基准。参阅图11,图11中表示为“FastConv”,默认的运行时参数oB=40,tB=3,TensorGEMM的形状为4*5。我们将逐步打开优化选项,来查看每一个优化选项对Winograd算法的提升效果。打开优化选项的过程分成了三步:打开缓存分块优化,打开微内核优化,以及访存顺序重排调度优化。测试的结果如图10所示。“FastConv”是未优化的可重配置Winograd算法库的结果,“FastConv+Cache”表示在原来的基础上,打开缓存分块优化,“FastConv+Cache+Register”表示在原来的基础上,打开缓存分块优化和微内核优化,“FastConv+Cache+Register+Scheduling”表示在原来的基础上,打开缓存分块优化、微内核优化和访存顺序重排调度优化。测试结果证实,打开了优化选项的FastConv与未打开优化相比有1.07至1.40倍的加速比。与FeatherCNN相比,除了conv5_1层,FastConv实现了1.3至2.5倍的加速比。此外我们还与另一个Winograd算法库NNPACK进行了比较,结果表明在每层卷积层上FastConv的性能都比NNPACK的好。这也表明了本申请提供的方案可以在不同尺寸的卷积计算上保持较好的性能。

在一应用场景中,在5个ARM CPU硬件平台上进行了测试,测试本申请提供的方案在不同硬件平台上的可移植性。选用的深度学习网络模型依然是VGG-16。FastConv就是本发明提到的可重配置Winograd算法库及上述的配置数据库,测试过程中已经打开了自动优化,它可以自动选择最优参数,并生成针对具体卷积形状和ARM CPU体系结构的最佳代码。测试结果如图11所示。与另一个Winograd算法库NNPACK相比,FastConv分别在Kunpeng920,Snapdragon 835、855、888和Apple M1上实现了平均1.15、1.21、1.55、1.72和2.08倍的加速比。测试结果展示表示越新的芯片可获得更好的加速比。华为Kunpeng 920基于Cortex-A57(2012年发布)实现,Snapdragon 835、855和888分别基于Cortex-A73,Cortex-A76和Cortex-X1(分别于2015年,2018年和2020年发布)实现。而Apple M1则是在2021年发布。这个结果证明了本申请提供的方案在不同ARM CPU硬件架构上的性能可移植性。此外,整个移植过程是全自动的,它可以帮助优化人员减少大量的工作。

综上,本申请提供的上述任一方案,能够基于Winograd算法提取出该算法中关键的、与性能相关的运行时参数(例如缓存分块、数据内存排布等),所以本申请提供的上述任一方案可以针对不同的硬件架构和卷积尺寸生成性能较优的代码,从而高效地完成卷积计算。并且使用了自动优化的机制,从所有参数组合中搜索到当前硬件架构和卷积尺寸下最优的参数组合,从而使算法在不同硬件架构和卷积尺寸上都维持一个较好的性能。

在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于半监督深度神经网络的有限数据频谱感知方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!