基于CNN矩阵分块的调度方法、装置、设备及存储介质

文档序号:30224182发布日期:2022-05-31 23:58阅读:136来源:国知局
基于CNN矩阵分块的调度方法、装置、设备及存储介质
基于cnn矩阵分块的调度方法、装置、设备及存储介质
技术领域
1.本技术涉及计算机网络技术领域,特别涉及一种基于cnn(convolutional neural networks,卷积神经网络)矩阵分块的调度方法、装置、设备及存储介质。


背景技术:

2.相关技术中,cnn在fpga(field programmable gate array,现场可编程门阵列)上的加速器架构研究已经十分成熟,为了增加计算的并行性,有多种对cnn进行网络分割的方法,可以从输入矩阵的深度、宽度和高度等维度对输入矩阵进行分块。由于卷积层的计算特点,在深度上对矩阵进行分块会产生大量的数据传输成本,造成了通信资源的浪费,因此最常采用的办法是对矩阵宽高进行分块。cnn矩阵分块后一般会部署在连接有多块fpga板卡的异构计算平台。
3.然而,相关技术中针对不同大小的cnn网络层无法灵活改变其分块方案,以达到最优的加速效果;cnn中会存在不适合分块计算的网络层,当计算到这些网络层时,因为网络层之间的数据依赖关系,相同cnn任务的其它网络层无法同时进行计算,导致fpga板卡资源空闲,造成资源浪费。


技术实现要素:

4.本技术提供一种基于cnn矩阵分块的调度方法、装置、设备及存储介质,以解决相关技术中针对不同大小的cnn网络层无法灵活改变其分块方案,以达到最优的加速效果,且cnn网络层之间的数据依赖性会造成的fpga资源浪费等问题。
5.本技术第一方面实施例提供一种基于cnn矩阵分块的调度方法,包括以下步骤:接收由用户提交的卷积神经网络cnn神经网络的至少一个计算作业,并按照预设作业优先级排序方式响应每个计算作业的同时,确定所述每个计算作业的优先级;根据一个或多个fpga板卡的空闲资源和已发布任务接收情况生成任务发布请求,按照预设数据依赖关系和所述预设作业优先级排序响应所述任务发布请求;基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,以部署到所述一个或多个fpga板卡上对所述已发布的待接收计算任务进行并行计算。
6.进一步地,所述按照预设作业优先级排序方式响应每个计算作业的同时,确定所述每个计算作业的优先级,包括:检测所述每个计算作业的实际类型;在检测到所述实际类型为紧急类型,则将所述紧急类型的计算作业加入紧急作业队列,并基于作业提交时间确定所述紧急类型的计算作业的优先级;在检测到所述实际类型为正常类型,则将所述正常类型的计算作业加入正常作业队列,并基于作业等待时间和预估执行时间确定所述正常类型的计算作业的优先级,其中,所述紧急作业队列的优先级高于所述正常作业队列的优先级。
7.进一步地,所述正常类型的计算作业的优先级由所述作业等待时间和所述预估执行时间的比值得到,并且所述作业等待时间为当前时间和所述正常类型的计算作业的提交
时间的差值得到。
8.进一步地,所述基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,包括:判断当前任务的网络层类型;如果所述网络层类型为全连接层,则为当前任务分配一块用于执行计算任务的fpga板卡;如果所述网络层类型为卷积层,则由乘加操作的数量确定需要计算的数据量,并基于所述需要计算的数据量得到最优矩阵分块和资源分配策略;如果所述网络层类型为池化层,则由输入矩阵大小计算总数据量,并基于所述总数据量得到所述最优矩阵分块和资源分配策略。
9.进一步地,已重构相同网络层类型电路的fpga板卡的分配优先级为最高,且每次同时待执行的计算任务数量小于或等于二。
10.本技术第二方面实施例提供一种基于cnn矩阵分块的调度装置,包括:接收模块,用于接收由用户提交的卷积神经网络cnn神经网络的至少一个计算作业,并按照预设作业优先级排序方式响应每个计算作业的同时,确定所述每个计算作业的优先级;响应模块,用于根据一个或多个fpga板卡的空闲资源和已发布任务接收情况生成任务发布请求,按照预设数据依赖关系和所述预设作业优先级排序响应所述任务发布请求;调度模块,用于基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,以部署到所述一个或多个fpga板卡上对所述已发布的待接收计算任务进行并行计算。
11.进一步地,所述接收模块进一步用于检测所述每个计算作业的实际类型;在检测到所述实际类型为紧急类型,则将所述紧急类型的计算作业加入紧急作业队列,并基于作业提交时间确定所述紧急类型的计算作业的优先级;在检测到所述实际类型为正常类型,则将所述正常类型的计算作业加入正常作业队列,并基于作业等待时间和预估执行时间确定所述正常类型的计算作业的优先级,其中,所述紧急作业队列的优先级高于所述正常作业队列的优先级;其中,所述正常类型的计算作业的优先级由所述作业等待时间和所述预估执行时间的比值得到,并且所述作业等待时间为当前时间和所述正常类型的计算作业的提交时间的差值得到。
12.进一步地,所述调度模块进一步用于:判断当前任务的网络层类型;如果所述网络层类型为全连接层,则为当前任务分配一块用于执行计算任务的fpga板卡;如果所述网络层类型为卷积层,则由乘加操作的数量确定需要计算的数据量,并基于所述需要计算的数据量得到最优矩阵分块和资源分配策略;如果所述网络层类型为池化层,则由输入矩阵大小计算总数据量,并基于所述总数据量得到所述最优矩阵分块和资源分配策略。
13.进一步地,已重构相同网络层类型电路的fpga板卡的分配优先级为最高,且每次同时待执行的计算任务数量小于或等于二。
14.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的基于cnn矩阵分块的调度方法。
15.本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上述实施例所述的基于cnn矩阵分块的调度方法。
16.由此,本技术至少具有如下有益效果:
17.实现cnn不同网络层矩阵的自动分块,使得系统能够根据不同网络层的特性灵活
改变分块方案,实现最优的加速效果和最高效的资源利用效率;支持多个cnn计算任务并行执行,有效解决cnn网络层之间的数据依赖性会造成的fpga资源浪费,同时能够结合cnn矩阵自动分块,高效地使用异构平台计算过程中空闲出来的fpga资源,以最大化资源利用效率。由此,解决了相关技术中针对不同大小的cnn网络层无法灵活改变其分块方案,以达到最优的加速效果,且cnn网络层之间的数据依赖性会造成的fpga资源浪费等问题。
18.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
19.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
20.图1为根据本技术实施例提供的基于cnn矩阵分块的调度方法的流程示意图;
21.图2为根据本技术实施例提供的作业优先级排序算法流程图;
22.图3为根据本技术实施例提供的任务调度算法流程图;
23.图4为根据本技术实施例提供的fpga资源调度算法流程图;
24.图5为根据本技术实施例提供的基于cnn矩阵分块的调度装置的方框示意图;
25.图6为根据本技术实施例提供的电子设备的结构示意图。
具体实施方式
26.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
27.下面参考附图描述本技术实施例的基于cnn矩阵分块的调度方法、装置、设备及存储介质。针对上述背景技术中心提到的相关技术中针对不同大小的cnn网络层无法灵活改变其分块方案,以达到最优的加速效果,且cnn网络层之间的数据依赖性会造成的fpga资源浪费的问题,本技术提供了一种基于cnn矩阵分块的调度方法,在该方法中,实现cnn不同网络层矩阵的自动分块,使得系统能够根据不同网络层的特性灵活改变分块方案,实现最优的加速效果和最高效的资源利用效率;支持多个cnn计算任务并行执行,有效解决cnn网络层之间的数据依赖性会造成的fpga资源浪费,同时能够结合cnn矩阵自动分块,高效地使用异构平台计算过程中空闲出来的fpga资源,以最大化资源利用效率。由此,解决了相关技术中针对不同大小的cnn网络层无法灵活改变其分块方案,以达到最优的加速效果,且cnn网络层之间的数据依赖性会造成的fpga资源浪费等问题。
28.具体而言,图1为本技术实施例所提供的一种基于cnn矩阵分块的调度方法的流程示意图。
29.如图1所示,该基于cnn矩阵分块的调度方法包括以下步骤:
30.在步骤s101中,接收由用户提交的卷积神经网络cnn神经网络的至少一个计算作业,并按照预设作业优先级排序方式响应每个计算作业的同时,确定每个计算作业的优先级。
31.可以理解的是,接收由用户提交的cnn神经网络计算作业,然后通过作业优先级排
序算法对作业进行紧急作业响应和优先级排序。其中,预设作业优先级排序方式即为作业优先级排序算法对应的方式。
32.在本实施例中,按照预设作业优先级排序方式响应每个计算作业的同时,确定每个计算作业的优先级,包括:检测每个计算作业的实际类型;在检测到实际类型为紧急类型,则将紧急类型的计算作业加入紧急作业队列,并基于作业提交时间确定紧急类型的计算作业的优先级;在检测到实际类型为正常类型,则将正常类型的计算作业加入正常作业队列,并基于作业等待时间和预估执行时间确定正常类型的计算作业的优先级,其中,紧急作业队列的优先级高于正常作业队列的优先级,正常类型的计算作业的优先级由作业等待时间和预估执行时间的比值得到,并且作业等待时间为当前时间和正常类型的计算作业的提交时间的差值得到。
33.具体而言,本技术实施例的作业优先级排序算法支持紧急作业响应,具备一定的实时性,如图2所示,具体执行过程如下:
34.(1)接收来自用户提交的cnn计算作业。
35.(2)首先判断是否为紧急作业,若为紧急作业,则将该作业直接加入紧急作业队列,紧急作业根据作业提交时间先后来判定优先级,提交时间越早,优先级越高。若不为紧急作业,则定义为普通作业。
36.(3)对于普通作业,记录作业被提交的时间,估算该作业的执行时长。因为这里估算的执行时长仅用于作业的优先级排序,所以暂时不用考虑矩阵分块带来的影响。根据该作业每层网络的运算类型(卷积层、池化层或全连接层),分别计算其在对应电路类型fpga上的计算和通信时间(fpga各种电路类型的计算速度和通信速度均有统一测试参数),再把所有网络层时间相加即可估算出该计算作业执行时长。
37.(4)将普通作业加入普通作业队列,并根据作业的等待时间与预估执行时间,计算各个普通作业的优先级,按照优先级对普通作业队列进行排序,作业调度优先级排序基于两个原则:提交的作业不会长时间得不到执行;优先执行预估计算时间较短的作业以减小提交作业总体等待时间。优先级的计算公式如下:优先级=作业等待时间/预估执行时间=(当前时间-作业提交时间)/预估执行时间。
38.在步骤s102中,根据一个或多个fpga板卡的空闲资源和已发布任务接收情况生成任务发布请求,按照预设数据依赖关系和预设作业优先级排序响应任务发布请求。
39.可以理解的是,本技术实施例可以运行任务调度算法,先根据空闲fpga板卡资源情况和已发布任务接收情况生成任务发布请求,然后按照数据依赖关系和作业优先级排序响应任务发布请求并发布待接收的网络层计算任务。
40.具体而言,每个cnn计算作业都是由多个网络层组成,网络层上下级之间存在数据依赖关系,考虑到这一特性,本发明的任务调度算法让多个不同cnn计算作业并行执行,最大化了fpga资源的利用效率,如图3所示,具体调度过程如下:
41.(1)系统不断查询fpga板卡资源使用情况,当检测到有空闲fpga板卡资源时,查询系统中是否有已发布的仍未被接收的计算任务。如果有则保持等待状态;如果没有,且fpga资源调度器中已被接收的待执行任务不超过1个,则发起一次任务发布请求。
42.(2)当系统收到任务发布请求后,按照先紧急作业优先级从高到低,后普通作业优先级从高到低的顺序进行遍历,每遍历到一个作业,查询当前所有在fpga中正在执行的计
算任务或待执行的已被接收进行fpga资源调度的任务是否与该作业的当前网络层计算任务存在数据依赖关系(一般为同一cnn作业上下级网络层关系)。如果有则遍历到下一作业重复执行上述操作;如果没有则发布该作业的当前网络层计算任务等待系统接收,并将该任务从作业的任务列表中删除,且如果该任务为作业任务列表最后一个任务,则代表该作业所有网络层任务都已被处理,将该作业从作业队列中删除。
43.(3)如果遍历完所有作业仍未发布计算任务,则说明所有作业的当前网络层计算任务都与正在执行或待执行的任务存在数据依赖关系,向fpga资源调度器发送任务发布等待信号,并且不再发起新的任务发布请求,直到某个任务执行完成或者新的cnn计算作业的接收,再开始发布计算任务。
44.进一步而言,上述任务调度方法可以使得多个cnn作业的网络层计算任务能够并行执行,将具有数据依赖关系的网络层计算任务拆分开来,在具有数据依赖关系的上一网络层计算完成后再为其分配fpga资源执行计算,从而可以有效避免了计算任务在部署到fpga之后因为等待输入数据而造成的fpga计算任务阻塞;有空闲fpga资源存在时,系统会不断发布没有数据依赖关系的计算任务,从而提高fpga资源利用效率。
45.在发布待接收的网络层计算任务后,fpga资源调度器会进行接收,然后根据空闲fpga板卡数量、该任务网络层相关计算参数和后一任务网络层相关计算参数以最大化当前空闲fpga资源利用效率为目标来对网络层矩阵进行分块,并根据需要补齐网络分块后的数据进行分块存储,然后为其分配相应fpga资源,并生成fpga配置文件,最终部署到fpga上执行计算任务。本技术实施例的调度算法将数据具有依赖关系的任务都进行了拆分,所以fpga板卡之间不需要通过主机进行通信,fpga的通信对象只有主机,理论上所有fpga板卡的通信速度只与主节点和其所在节点之间的通信速度有关。
46.在步骤s103中,基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,以部署到一个或多个fpga板卡上对已发布的待接收计算任务进行并行计算。
47.可以理解的是,fpga资源调度器接收已发布的待接收计算任务,通过自定义fpga资源调度算法进行矩阵分块并分配相应fpga资源,最后部署到多块fpga板卡上进行计算。
48.在本实施例中,基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,包括:判断当前任务的网络层类型;如果网络层类型为全连接层,则为当前任务分配一块用于执行计算任务的fpga板卡;如果网络层类型为卷积层,则由乘加操作的数量确定需要计算的数据量,并基于需要计算的数据量得到最优矩阵分块和资源分配策略;如果网络层类型为池化层,则由输入矩阵大小计算总数据量,并基于总数据量得到最优矩阵分块和资源分配策略。
49.具体而言,如图4所示,基于矩阵分块的fpga资源调度算法具体描述如下:
50.(1)检测是否收到任务发布等待信号,如果收到则立即给已接收的待执行的任务按照记录的预计板卡消耗数量进行矩阵分块和资源分配;如果没有收到则继续执行下面的步骤。上述操作是因为如果收到任务发布等待信号则说明短时间内不会收到下一个任务,那么待执行任务继续等待只会造成更多的fpga板卡资源的浪费。
51.(2)fpga资源调度器接收已发布的待接收计算任务,检测得到当前空闲fpga板卡数量n,并获取该计算任务的网络层相关计算参数。包括网络层类型(卷积层、池化层或全连
接层),输入矩阵宽度w0、高度h0和深度c0,卷积核(对于池化层则是过滤器)宽度k0、高度k1,输出矩阵宽度w1、高度h1和深度c1。
52.(2)如果fpga资源调度器中存在一个已接收待执行任务,则获取该任务预计消耗板卡数量n0,计算当前预计可供分配fpga板卡数量nv=n-n0;如果不存在待执行任务,则当前预计可供分配fpga板卡数量nv=n。
53.(3)如果当前任务网络层类型是全连接层,因为其输入矩阵大小并不适合进行分块计算,反而还可能增加计算成本,所以fpga资源调度器选择直接给当前任务分配1块fpga板卡进行计算,记录当前任务预计消耗fpga板卡数量n1=1,并直接进行步骤(6)。
54.(4)如果当前任务网络层类型是卷积层,可以用乘加操作的数量来衡量其需要计算的数据量z,而如果当前任务网络层类型是池化层,计算总数据量则只与输入矩阵大小有关,具体公式为:
55.z=k0
×
k1
×
w1
×
h1
×
c0
×
c1,卷积层
56.z=w0
×
h0
×
c0,池化层
57.两种网络层的通信总数据量都可以近似表示为2z。
58.设矩阵宽和高的分块份数分别为nw和nh,规定矩阵分块后的子矩阵大小不能小于卷积核矩阵大小,即
[0059][0060]
nw和nh必须为整数,但w0和h0可以不被nw和nh整除,在分块后边沿子矩阵的数据可能会比其他子矩阵的数据要少,系统会根据该网络层输入矩阵宽高和矩阵分块参数来求出边沿子矩阵数据具体参数并对其进行相应处理,不会影响任务的正常计算。对矩阵分块后,每个子矩阵都需要根据卷积核的大小补齐部分数据,所有子矩阵需要补齐的总数据量m可以表示为:
[0061][0062]
对于卷积层和池化层的fpga电路,其计算速度和通信速度都是固定的,通信速度相差不大用vt表示,计算速度池化层比卷积层要快,为了说明方便下面的公式中不进行区分都用vc表示,但实际算法运行卷积层和池化层计算速度会取不同值。矩阵在分块后为其执行计算的所有fpga资源处理数据的总平均速度v可以表示为:
[0063][0064]
考虑一直到本次任务执行完成都没有下一任务发布的最坏情况,在当前任务执行过程中的所有待分配的fpga板卡资源处理数据的速度就只能达到v。因此v的大小可以反映在最坏情况下矩阵分块方案的fpga资源利用率大小,我们需要在资源足够的基础上使v尽可能大。
[0065]
(5)接下来在nw和nh的整数取值范围内遍历求解v的最大值,在满足二者乘积小于等于n的条件下,求取得到nw和nh,计算二者乘积得到该任务的预计板卡消耗数量n1。
[0066]
(6)若n1=nv,则将fpga资源调度器中已接收待执行的所有任务(1个或2个)都按
照记录的预计板卡消耗数量和相应矩阵分块参数(对于卷积层和池化层)进行矩阵分块和资源分配;
[0067]
若n1《nv,则分为两种情况:(a)n1等于1,则当前网络层为全连接层或是不适合进行分块的卷积层和池化层,显然这几种类型的网络层最佳处理办法就是不分块,无法与下一个任务的网络层一起进行矩阵分块的局部优化,考虑到资源利用效率最大化,直接为当前任务分配1块fpga板卡资源进行计算,但已接收的前一个待执行任务仍然保持等待状态。(b)n1不为1,则将前一个已接收的待执行任务按照记录的预计板卡消耗数量进行矩阵分块和资源分配,而当前任务则等待下一次任务的接收;
[0068]
若n1》nv,则对两个任务的网络层一起进行矩阵分块的局部优化以求资源利用率最大化。具体分配过程如下:从fpga资源调度器得到之前记录的两个任务处理数据的平均速度分别为v0和v1,矩阵分块参数分别为nw0、nh0和nw1、nh1。在nw0、nw1、nh0和nh1四个参数的整数取值范围内遍历求解v0+v1的最大值,满足两个任务消耗的总板卡数量不超过当前空闲板卡数量n,然后按照求解得到的矩阵分块参数进行fpga资源分配。
[0069]
(7)fpga资源调度器在给任务进行资源分配时,遵循以下原则:优先分配已重构相同网络层类型电路的fpga板卡,这样可以节省一部分fpga重构时间。
[0070]
在本实施例中,已重构相同网络层类型电路的fpga板卡的分配优先级为最高,且每次同时待执行的计算任务数量小于或等于二。
[0071]
可以理解的是,本技术实施例可以对矩阵分块进行资源利用率局部最优化求解时,每次最多同时存在两个待执行的任务,因为软件遍历最优解也需要耗费一定时间,而且随着待执行任务的增加,求解最优解的成本会呈指数上升,在算法求解最优解过程中,fpga板卡资源一直未分配计算,反而会造成更大的资源浪费。因此安排两个待执行任务求最优解既避免了求解成本过高,也得到了矩阵分块的一个较优结果。
[0072]
综上,本技术实施例的实现cnn矩阵自动分块的fpga分布式异构计算平台调度算法,针对cnn计算作业相邻网络层之间存在数据依赖这一特性,将cnn计算作业的网络层任务进行拆分,实现了多个cnn计算作业的并行执行;同时实现了不同网络层任务的矩阵自动分块,使得fpga资源利用率最大化,让fpga分布式异构系统能够高效地完成多个cnn作业的计算。
[0073]
根据本技术实施例提出的基于cnn矩阵分块的调度方法,实现cnn不同网络层矩阵的自动分块,使得系统能够根据不同网络层的特性灵活改变分块方案,实现最优的加速效果和最高效的资源利用效率;支持多个cnn计算任务并行执行,有效解决cnn网络层之间的数据依赖性会造成的fpga资源浪费,同时能够结合cnn矩阵自动分块,高效地使用异构平台计算过程中空闲出来的fpga资源,以最大化资源利用效率。
[0074]
其次参照附图描述根据本技术实施例提出的基于cnn矩阵分块的调度装置。
[0075]
图5是本技术实施例的基于cnn矩阵分块的调度装置的方框示意图。
[0076]
如图5所示,该基于cnn矩阵分块的调度装置10包括:接收模块100、响应模块200和调度模块300。
[0077]
其中,接收模块100用于接收由用户提交的卷积神经网络cnn神经网络的至少一个计算作业,并按照预设作业优先级排序方式响应每个计算作业的同时,确定每个计算作业的优先级;响应模块200用于根据一个或多个fpga板卡的空闲资源和已发布任务接收情况
生成任务发布请求,按照预设数据依赖关系和预设作业优先级排序响应任务发布请求;调度模块300用于基于已发布的待接收计算任务,通过预设fpga资源调度算法进行矩阵分块,分配相应fpga资源,以部署到一个或多个fpga板卡上对已发布的待接收计算任务进行并行计算。
[0078]
进一步地,接收模块100进一步用于检测每个计算作业的实际类型;在检测到实际类型为紧急类型,则将紧急类型的计算作业加入紧急作业队列,并基于作业提交时间确定紧急类型的计算作业的优先级;在检测到实际类型为正常类型,则将正常类型的计算作业加入正常作业队列,并基于作业等待时间和预估执行时间确定正常类型的计算作业的优先级,其中,紧急作业队列的优先级高于正常作业队列的优先级;其中,正常类型的计算作业的优先级由作业等待时间和预估执行时间的比值得到,并且作业等待时间为当前时间和正常类型的计算作业的提交时间的差值得到。
[0079]
进一步地,调度模块300进一步用于:判断当前任务的网络层类型;如果网络层类型为全连接层,则为当前任务分配一块用于执行计算任务的fpga板卡;如果网络层类型为卷积层,则由乘加操作的数量确定需要计算的数据量,并基于需要计算的数据量得到最优矩阵分块和资源分配策略;如果网络层类型为池化层,则由输入矩阵大小计算总数据量,并基于总数据量得到最优矩阵分块和资源分配策略。
[0080]
进一步地,已重构相同网络层类型电路的fpga板卡的分配优先级为最高,且每次同时待执行的计算任务数量小于或等于二。
[0081]
需要说明的是,前述对基于cnn矩阵分块的调度方法实施例的解释说明也适用于该实施例的基于cnn矩阵分块的调度装置,此处不再赘述。
[0082]
根据本技术实施例提出的基于cnn矩阵分块的调度装置,实现cnn不同网络层矩阵的自动分块,使得系统能够根据不同网络层的特性灵活改变分块方案,实现最优的加速效果和最高效的资源利用效率;支持多个cnn计算任务并行执行,有效解决cnn网络层之间的数据依赖性会造成的fpga资源浪费,同时能够结合cnn矩阵自动分块,高效地使用异构平台计算过程中空闲出来的fpga资源,以最大化资源利用效率。
[0083]
图6为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0084]
存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序。
[0085]
处理器602执行程序时实现上述实施例中提供的基于cnn矩阵分块的调度方法。
[0086]
进一步地,电子设备还包括:
[0087]
通信接口603,用于存储器601和处理器602之间的通信。
[0088]
存储器601,用于存放可在处理器602上运行的计算机程序。
[0089]
存储器601可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0090]
如果存储器601、处理器602和通信接口603独立实现,则通信接口603、存储器601和处理器602可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便
于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0091]
可选地,在具体实现上,如果存储器601、处理器602及通信接口603,集成在一块芯片上实现,则存储器601、处理器602及通信接口603可以通过内部接口完成相互间的通信。
[0092]
处理器602可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0093]
本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的基于cnn矩阵分块的调度方法。
[0094]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0095]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0096]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
[0097]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或n个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0098]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技
术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0099]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0100]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0101]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1