CN116842307A - 数据处理方法、装置、设备、芯片及存储介质 - Google Patents
数据处理方法、装置、设备、芯片及存储介质 Download PDFInfo
- Publication number
- CN116842307A CN116842307A CN202311089778.XA CN202311089778A CN116842307A CN 116842307 A CN116842307 A CN 116842307A CN 202311089778 A CN202311089778 A CN 202311089778A CN 116842307 A CN116842307 A CN 116842307A
- Authority
- CN
- China
- Prior art keywords
- matrix
- segmentation
- template
- buffer
- loading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 33
- 239000011159 matrix material Substances 0.000 claims abstract description 739
- 230000011218 segmentation Effects 0.000 claims abstract description 506
- 230000015654 memory Effects 0.000 claims abstract description 96
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 claims description 30
- 238000011156 evaluation Methods 0.000 claims description 25
- 230000000903 blocking effect Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 238000004088 simulation Methods 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 claims 1
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000003012 network analysis Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Processing (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备、芯片及存储介质,属于计算机技术领域。该方法包括:在存储器中确定第一矩阵和第二矩阵;在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,切分策略包括切分方式和加载顺序;对多个切分策略进行仿真,得到每个切分策略的加载时长;在多个切分策略中确定加载时长满足性能条件的目标切分策略;按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵加载至缓存器,对加载至缓存器中的矩阵进行运算。本申请能够在多个切分策略中查找到加载时长较小的切分策略,降低加载多个矩阵所花费的时间,进而提高数据处理的整体效率。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据处理方法、装置、设备、芯片及存储介质。
背景技术
AI(Artificial Intelligence,人工智能)芯片用于执行人工智能领域中的计算任务,例如该计算任务为神经网络中所涉及到的矩阵乘法运算。存储器中存储有需要进行乘法运算的两个矩阵,为了提高对矩阵的读取速度,需要先将矩阵从存储器中搬运至缓存器中,然后由矩阵运算引擎从缓存器中读取矩阵,对读取到的矩阵进行运算。但是,由于缓存器的缓存容量通常较小,如果矩阵的数据量大于缓存器的缓存容量,则无法将待运算的矩阵搬运至缓存器中,导致数据处理的过程受限。
发明内容
本申请实施例提供了一种数据处理方法、装置、设备、芯片及存储介质,能够在多个切分策略中查找到加载时长较小的切分策略,降低加载多个矩阵所花费的时间,进而提高数据处理的整体效率。所述技术方案如下。
一方面,提供了一种数据处理方法,所述方法包括:
在存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
在所述第一矩阵和所述第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
另一方面,提供了一种数据处理装置,所述装置包括:
矩阵确定模块,用于在存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
策略确定模块,用于在所述第一矩阵和所述第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
仿真模块,用于对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
策略选择模块,用于在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
矩阵处理模块,用于按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
可选地,所述策略确定模块,用于:
获取多个切分模板,所述切分模板指示切分目标和切分方向,所述切分目标是指所需切分的矩阵;
对于任一切分模板,基于所述切分模板、所述第一矩阵的数据量和所述第二矩阵的数据量,查找所述切分模板对应的满足切分条件的切分策略,所述切分条件是指在切分后的多个矩阵中,每次需要加载至所述缓存器中进行运算的矩阵的数据总量不大于所述缓存容量。
可选地,所述策略确定模块,用于:
基于所述切分模板指示的切分目标、所述切分模板指示的切分方向、所述第一矩阵的数据量和所述第二矩阵的数据量,查找满足所述切分条件的切分份数,所述切分目标、所述切分方向和所述切分份数构成所述切分方式;
基于所述切分模板指示的切分目标和切分方向,确定切分后的矩阵的运算顺序,基于所述运算顺序,确定所述加载顺序。
可选地,所述策略确定模块,用于:
基于所述切分目标、所述切分方向、所述第一矩阵的数据量和所述第二矩阵的数据量,按照候选切分份数从小到大的顺序,依次确定不同的候选切分份数的评定结果,直至满足停止查找条件时,基于至少一个候选切分份数的评定结果,在所述至少一个候选切分份数中,确定满足所述切分条件的切分份数;
其中,所述评定结果指示所述候选切分份数是否满足所述切分条件,所述候选切分份数为大于1的正整数。
可选地,所述停止查找条件包括以下至少一项:
当前的候选切分份数的评定结果指示满足所述切分条件;
按照所述候选切分份数进行切分后,得到的最小矩阵的数据量小于矩阵运算引擎的最小运算量,所述矩阵运算引擎用于对矩阵进行运算。
可选地,所述多个切分模板包括至少一个目标切分模板和至少一个非目标切分模板,所述目标切分模板指示的切分目标为任两个矩阵中的其中一个矩阵,所述非目标切分模板指示的切分目标为任两个矩阵中的每个矩阵;
所述策略确定模块,用于:
依次查找每个目标切分模板对应的满足所述切分条件的切分策略;
在查找到至少一个目标切分模板对应的满足所述切分条件的切分策略的情况下,停止查找;
在未查找到任一目标切分模板对应的满足所述切分条件的切分策略的情况下,依次查找每个非目标切分模板对应的满足所述切分条件的切分策略。
可选地,所述多个切分模板包括第一切分模板、第二切分模板、第三切分模板、第四切分模板、第五切分模板或第六切分模板中的至少一个;
所述第一切分模板指示对任两个矩阵中的右矩阵在宽度方向上进行切分;
所述第二切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分;
所述第三切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在宽度方向上进行切分;
所述第四切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分;
所述第五切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在宽度方向上进行切分;
所述第六切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分。
可选地,所述仿真模块,用于:
基于所述切分策略、所述第一矩阵的数据量和所述第二矩阵的数据量,确定加载次数和每次加载的数据量;
基于所述加载次数、每次加载的数据量以及所述存储器的读写带宽,确定所述切分策略的加载时长。
可选地,所述矩阵处理模块,用于:
对于当前所需加载的矩阵,将所述矩阵切分为第一分块矩阵和第二分块矩阵;
将所述第一分块矩阵加载至所述缓存器中,对所述缓存器中的所述第一分块矩阵进行运算,在对所述第一分块矩阵进行运算的过程中,并行地将所述第二分块矩阵加载至所述缓存器中。
可选地,所述切分策略还包括切分后的矩阵的缓存地址,所述矩阵处理模块,用于:
对于当前所需加载的矩阵,确定所述矩阵的缓存地址;
将所述矩阵加载至所述缓存器中所述缓存地址指示的缓存空间中。
可选地,所述矩阵处理模块,用于:
调用矩阵运算引擎,对所述缓存器中的矩阵进行运算,得到运算结果;
将所述运算结果存储至所述存储器中。
另一方面,提供了一种芯片,所述芯片与存储器通信连接,所述芯片上包括缓存器;所述芯片,用于执行以下操作:
在所述存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
在所述第一矩阵和所述第二矩阵的数据总量大于所述缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序由处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
本申请实施例提供的方案,待运算的第一矩阵和第二矩阵存储在存储器中,为了便于后续在运算时读取该第一矩阵和第二矩阵,需要将第一矩阵和第二矩阵从存储器中加载至缓存器中,在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定该第一矩阵和第二矩阵的切分策略,该切分策略用于指示对第一矩阵和第二矩阵如何进行切分,以及切分后得到的每个矩阵加载至缓存器中的顺序。在得到多个切分策略后,通过对每个切分策略进行仿真,得到每个切分策略的加载时长,从而在多个切分策略中查找加载时长满足性能条件的目标切分策略,便于筛选出加载时长较小的切分策略,因此按照目标切分策略进行切分,再依次将切分后的矩阵加载至缓存器中进行运算,一方面解决了第一矩阵和第二矩阵的数据总量较大无法一次性加载至缓存器中的问题,另一方面可以在多个切分策略中查找到加载时长较小的切分策略,从而降低了加载多个矩阵所花费的时间,进而提高了数据处理的整体效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理方法的系统架构图;
图2是本申请实施例提供的一种数据处理方法的流程图;
图3是本申请实施例提供的另一种数据处理方法的流程图;
图4是本申请实施例提供的一种切分模板的示意图;
图5是本申请实施例提供的再一种数据处理方法的流程图;
图6是本申请实施例提供的另一种数据处理方法的系统架构图;
图7是本申请实施例提供的又一种数据处理方法的流程图;
图8是本申请实施例提供的一种数据处理装置的结构示意图;
图9是本申请实施例提供的一种终端的结构示意图;
图10是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一矩阵称为第二矩阵,且类似地,可将第二矩阵称为第一矩阵。
其中,至少一个是指一个或者一个以上,例如,至少一个矩阵可以是一个矩阵、两个矩阵、三个矩阵等任一大于等于一的整数个矩阵。多个是指两个或者两个以上,例如,多个矩阵可以是两个矩阵、三个矩阵等任一大于等于二的整数个矩阵。每个是指至少一个中的每一个,例如,每个矩阵是指多个矩阵中的每一个矩阵,若多个矩阵为3个矩阵,则每个矩阵是指3个矩阵中的每一个矩阵。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号(包括但不限于用户终端与其他设备之间传输的信号等),均为经用户或相关方面充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本申请实施例提供的数据处理方法,能够用于计算机设备中。可选地,该计算机设备为服务器或终端。可选地,该服务器是独立的物理服务器,或者,是多个物理服务器构成的服务器集群或者分布式系统,或者,是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,该终端是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能终端等,但并不局限于此。
图1是本申请实施例提供的一种数据处理方法的系统架构图,本申请实施例的执行主体为计算机设备,例如该计算机设备为服务器或者终端。如图1所示,该计算机设备中包括芯片101和存储器102,芯片上包括缓存器1011。
本申请实施例中,可应用于对神经网络中的矩阵进行乘法运算的场景中。其中,存储器102中存储有第一矩阵和第二矩阵,第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵。例如,该第一矩阵为神经网络中某一层的输入矩阵,该第二矩阵为该层包括的权值矩阵,该权值矩阵用于对输入矩阵进行卷积,卷积属于一种特殊的矩阵乘法运算。芯片101用于在第一矩阵和第二矩阵的数据总量大于缓存器1011的缓存容量的情况下,确定该第一矩阵和第二矩阵的目标切分策略,按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,然后将切分后的矩阵从存储器102加载至缓存器1011中。可选地,如图1所示,芯片101上还包括矩阵运算引擎1012,矩阵运算引擎1012用于对加载至缓存器1011中的矩阵进行运算。
图2是本申请实施例提供的一种数据处理方法的流程图,本申请实施例由计算机设备执行,参见图2,该方法包括以下步骤。
201、计算机设备在存储器中确定第一矩阵和第二矩阵,第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵。
计算机设备上包括存储器,该存储器中存储有第一矩阵和第二矩阵,该第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵。矩阵乘法运算包括两个矩阵相乘的运算或者两个矩阵进行卷积的运算。
在一种可能实现方式中,第一矩阵是神经网络中任一层的输入矩阵,该输入矩阵为待卷积的矩阵,该第二矩阵是神经网络中该层的权值矩阵,该权值矩阵为卷积核的权值矩阵,用于对该层的输入矩阵进行卷积。例如,该层是指神经网络中的任意一个卷积层。
可选地,第一矩阵为神经网络中第一层的输入矩阵。可选地,第一矩阵为神经网络中第n层的输入矩阵,n为大于1的正整数,该第一矩阵也即是神经网络中第n-1层的输出矩阵。
其中,该存储器可以为任意类型的存储器,例如该存储器为DDR(Double DataRate,双倍数据速率)存储器等,本申请实施例对此不做限定。
202、计算机设备在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,切分策略包括切分方式和加载顺序,切分方式是指对第一矩阵或第二矩阵中的至少一个进行切分的方式,加载顺序是指将切分后的矩阵从存储器加载至缓存器的顺序。
计算机设备上还包括缓存器,该缓存器为计算机设备的处理器或芯片上的缓存器。该缓存器的容量比存储器的容量小,但是缓存器的读写速度比存储器的读写速度快。为了提高在矩阵运算过程中的读写速度,需要将存储器中的矩阵加载至缓存器中,也即是将存储器中的矩阵搬运至缓存器中,然后由处理器或者芯片在缓存器中读取矩阵进行运算。但是,由于缓存器的缓存容量较小,因此存在需要加载的矩阵的数据量大于缓存器的缓存容量的情况。因此本申请实施例中,在确定待运算的第一矩阵和第二矩阵后,计算机设备确定该第一矩阵和第二矩阵的数据总量,并判断该第一矩阵和第二矩阵的数据总量是否大于缓存器的缓存容量。
如果第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量,则需要对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵分批次加载至缓存器中进行运算,使得每一批所需运算的矩阵的数据总量不大于缓存器的缓存容量。因此,在此种情况下,计算机设备确定多个切分策略,该多个切分策略不同,每个切分策略包括切分方式和加载顺序,该切分方式指示如何对第一矩阵和第二矩阵进行切分,该加载顺序指示如何将切分后的矩阵按顺序加载至缓存器中。
其中,切分后的矩阵是指对第一矩阵或第二矩阵中的至少一个进行切分后剩余的矩阵。切分后的矩阵包括对第一矩阵或第二矩阵进行切分得到的子矩阵,或者切分后的矩阵还包括未被切分的第一矩阵或第二矩阵。例如,在仅对第一矩阵进行切分的情况下,切分后的矩阵包括第二矩阵和对第一矩阵进行切分得到的多个子矩阵。在仅对第二矩阵进行切分的情况下,切分后的矩阵包括第一矩阵和对第二矩阵进行切分得到的多个子矩阵。在对第一矩阵和第二矩阵均切分的情况下,切分后的矩阵包括对第一矩阵进行切分得到的多个子矩阵和对第二矩阵进行切分得到的多个子矩阵。
需要说明的是,本申请实施例以第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量为例进行说明。在另一实施例中,如果第一矩阵和第二矩阵的数据总量不大于缓存器的缓存容量,则无需对第一矩阵和第二矩阵进行切分,直接将第一矩阵和第二矩阵同时加载至缓存器中即可,后续直接在缓存器中读取该第一矩阵和第二矩阵并进行运算。
203、计算机设备对多个切分策略进行仿真,得到每个切分策略的加载时长。
由于对第一矩阵或第二矩阵中的至少一个进行了切分,因此无法一次性将第一矩阵和第二矩阵全部加载至缓存器中,需要将切分后的矩阵分批次加载至缓存器中,因此对矩阵进行切分会产生额外的加载时长。
不同的切分策略包括的切分方式和加载顺序不同,采用不同的切分方式,需要加载的次数以及每次加载的数据量也不同,因此采用不同的切分方式所需的加载时长也不同,也即是每个切分策略对应有各自的加载时长。其中,切分策略的加载时长能够反映切分策略的性能,加载时长越长,采用该切分策略进行处理的效率越低,加载时长越短,采用该切分策略进行处理的效率越高。
因此,为了在多个切分策略中筛选出处理性能更好的切分策略,计算机设备分别对该多个切分策略进行仿真,得到每个切分策略的加载时长,切分策略的加载时长也即是采用该切分策略进行处理时将切分后的矩阵分批次加载至缓存器中所需花费的总时长。
204、计算机设备在多个切分策略中确定加载时长满足性能条件的目标切分策略。
由于切分策略的加载时长能够反映切分策略的性能,因此计算机设备在多个切分策略中,确定加载时长满足性能条件的目标切分策略,从而筛选出性能相对更好的目标切分策略。
可选地,加载时长满足性能条件是指该加载时长小于预设时长。可选地,加载时长满足性能条件是指该加载时长为多个切分策略的加载时长中的最小值。
205、计算机设备按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵加载至缓存器,对加载至缓存器中的矩阵进行运算。
计算机设备在确定目标切分策略后,按照该目标切分策略指示的切分方式对第一矩阵或第二矩阵中的至少一个进行切分,得到切分后的矩阵,然后按照该目标切分策略指示的加载顺序,将切分后的矩阵分批次加载至缓存器中,每完成一次加载,则对缓存器中当前的矩阵进行运算。
其中,计算机设备按照加载顺序,将切分后的矩阵加载至缓存器中,在完成对缓存器中的矩阵的运算后,计算机设备将切分后的下一个矩阵加载至缓存器中,并且该下一个矩阵会替换掉缓存器中已完成运算的矩阵,然后对缓存器中的该下一个矩阵进行运算,以此类推,直至完成切分后的所有矩阵的运算,从而实现将切分后的矩阵分批次加载至缓存器中进行运算,并且每批次所需运算的矩阵的数据总量均不大于缓存器的缓存容量,以保证所需运算的矩阵能够加载至该缓存器中。
本申请实施例提供的方法,待运算的第一矩阵和第二矩阵存储在存储器中,为了便于后续在运算时读取该第一矩阵和第二矩阵,需要将第一矩阵和第二矩阵从存储器中加载至缓存器中,在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定该第一矩阵和第二矩阵的切分策略,该切分策略用于指示对第一矩阵和第二矩阵如何进行切分,以及切分后得到的每个矩阵加载至缓存器中的顺序。在得到多个切分策略后,通过对每个切分策略进行仿真,得到每个切分策略的加载时长,从而在多个切分策略中查找加载时长满足性能条件的目标切分策略,便于筛选出加载时长较小的切分策略,因此按照目标切分策略进行切分,再依次将切分后的矩阵加载至缓存器中进行运算,一方面解决了第一矩阵和第二矩阵的数据总量较大无法一次性加载至缓存器中的问题,另一方面可以在多个切分策略中查找到加载时长较小的切分策略,从而降低了加载多个矩阵所花费的时间,进而提高了数据处理的整体效率。
上述图2所示的实施例是对本申请实施例提供的数据处理方法的简要说明,该数据处理方法的详细过程可参见下述图3所示的实施例。图3是本申请实施例提供的另一种数据处理方法的流程图,本申请实施例由计算机设备执行,参见图3,该方法包括以下步骤。
301、计算机设备在存储器中确定第一矩阵和第二矩阵,第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵。
该步骤301与上述步骤201同理,在此不再赘述。
302、计算机设备在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,获取多个切分模板,切分模板指示切分目标和切分方向,切分目标是指所需切分的矩阵。
如果第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量,则需要对第一矩阵或第二矩阵中的至少一个进行切分,则计算机设备获取多个切分模板,该多个切分模板不同,每个切分模板包括切分目标和切分方向。
其中,切分目标是指任两个矩阵中所需切分的矩阵,在矩阵乘法运算中,待运算的两个矩阵分为左矩阵和右矩阵。可选地,该切分目标为左矩阵,则需要对左矩阵进行切分。可选地,该切分目标为右矩阵,则需要对右矩阵进行切分。可选地,该切分目标为左矩阵和右矩阵,则需要对左矩阵和右矩阵均进行切分。
其中,切分方向是指对矩阵进行切分的方向,矩阵包括高度方向和宽度方向。可选地,该切分方向为高度方向,则需要对矩阵进行横向切分,切分后的矩阵的高度发生改变。可选地,该切分方向为宽度方向,则需要对矩阵进行纵向切分,切分后的矩阵的宽度发生改变。可选地,该切分方向包括高度方向和宽度方向,则需要对矩阵进行横向和纵向相结合地切分,切分后的矩阵的高度和宽度均发生改变。
在一种可能实现方式中,多个切分模板包括第一切分模板、第二切分模板、第三切分模板、第四切分模板、第五切分模板或第六切分模板中的至少一个,该第一切分模板、第二切分模板、第三切分模板、第四切分模板、第五切分模板和第六切分模板的详细介绍如下。
(1)第一切分模板指示对任两个矩阵中的右矩阵在宽度方向上进行切分。第一切分模板的切分目标为右矩阵,切分方向为宽度方向。如图4中的(1)所示,左矩阵401无需切分,右矩阵402需要在宽度方向上进行切分,也即是纵向切分。
(2)第二切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分。第二切分模板的切分目标为左矩阵,切分方向为高度方向。如图4中的(2)所示,右矩阵402无需切分,左矩阵401需要在高度方向上进行切分,也即是横向切分。
(3)第三切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在宽度方向上进行切分。第三切分模板的切分目标为左矩阵和右矩阵,左矩阵的切分方向为高度方向,右矩阵的切分目标为宽度方向。如图4中的(3)所示,左矩阵401需要在高度方向上进行切分,也即是横向切分,右矩阵402需要在宽度方向上进行切分,也即是纵向切分。
(4)第四切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分。第四切分模板的切分目标为左矩阵和右矩阵,左矩阵的切分方向为高度方向,右矩阵的切分目标为高度方向和宽度方向。如图4中的(4)所示,左矩阵401需要在高度方向上进行切分,也即是横向切分,右矩阵402需要在高度方向和宽度方向上进行切分,也即是横向和纵向相结合地切分。
(5)第五切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在宽度方向上进行切分。第五切分模板的切分目标为左矩阵和右矩阵,左矩阵的切分方向为高度方向和宽度方向,右矩阵的切分目标为宽度方向。如图4中的(5)所示,左矩阵401需要在高度方向和宽度方向上进行切分,也即是横向和纵向相结合地切分,右矩阵402需要在宽度方向上进行切分,也即是纵向切分。
(6)第六切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分。第六切分模板的切分目标为左矩阵和右矩阵,左矩阵的切分方向为高度方向和宽度方向,右矩阵的切分目标为高度方向和宽度方向。如图4中的(6)所示,左矩阵401需要在高度方向和宽度方向上进行切分,也即是横向和纵向相结合地切分,右矩阵402需要在高度方向和宽度方向上进行切分,也即是横向和纵向相结合地切分。
需要说明的是,上述六种切分模板仅是本申请实施例所提供的简单示例,除了这六种切分模板之外,还可以包括其他类型的切分模板,例如切分模板指示对任两个矩阵中的右矩阵在高度方向上进行切分,切分模板指示对任两个矩阵中的左矩阵在宽度方向上进行切分,切分模板指示对任两个矩阵中的左矩阵在宽度方向上进行切分以及对右矩阵在高度方向上进行切分,切分模板指示对任两个矩阵中的左矩阵在宽度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分,切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在高度方向上进行切分等,本申请实施例对切分模板不做限定。
303、计算机设备对于任一切分模板,基于切分模板、第一矩阵的数据量和第二矩阵的数据量,查找切分模板对应的满足切分条件的切分策略,切分条件是指在切分后的多个矩阵中,每次需要加载至缓存器中进行运算的矩阵的数据总量不大于缓存容量。
计算机设备对于多个切分模板中的任一切分模板,查找该切分模板对应的满足切分条件的切分策略。切分策略包括切分方式和加载顺序,切分方式是指对第一矩阵或第二矩阵中的至少一个进行切分的方式,加载顺序是指将切分后的矩阵从存储器加载至缓存器的顺序。
切分模板对应的切分策略是指切分方式与该切分模板相符合的切分策略。例如,切分模板指示对右矩阵在宽度方向上进行切分,则该切分模板对应的切分策略用于指示将第一矩阵和第二矩阵中的右矩阵在宽度方向上切分成多份。
切分策略满足切分条件是指,按照该切分策略进行切分后,得到切分后的多个矩阵,该多个矩阵中每批次所需运算的矩阵的数据总量不大于缓存容量,也即是每次需要加载至缓存器中进行运算的矩阵的数据总量不大于缓存容量,以保证能够成功将每批次所需运算的矩阵加载至缓存器中。
在一种可能实现方式中,计算机设备基于切分模板、第一矩阵的数据量和第二矩阵的数据量,查找切分模板对应的满足切分条件的切分策略,包括以下步骤3031-步骤3032。
3031、计算机设备基于切分模板指示的切分目标、切分模板指示的切分方向、第一矩阵的数据量和第二矩阵的数据量,查找满足切分条件的切分份数,切分目标、切分方向和切分份数构成切分方式。
根据该切分目标可以确定对第一矩阵和第二矩阵中的哪个矩阵进行切分,根据切分方向可以确定对切分目标在哪个方向上进行切分,那么根据切分目标、切分方向、第一矩阵的数据量和第二矩阵的数据量以及切分份数,则可以确定切分后的矩阵的数据量,并判断切分后的矩阵中每批次所需运算的矩阵的数据总量是否大于缓存容量,如果均不大于缓存容量,则该切分份数满足切分条件,如果存在大于缓存容量的情况,则该切分份数不满足切分条件,需要重新确定切分份数。
可选地,计算机设备基于切分目标、切分方向、第一矩阵的数据量和第二矩阵的数据量,按照候选切分份数从小到大的顺序,依次确定不同的候选切分份数的评定结果,直至满足停止查找条件时,基于至少一个候选切分份数的评定结果,在至少一个候选切分份数中,确定满足切分条件的切分份数;其中,评定结果指示候选切分份数是否满足切分条件,候选切分份数为大于1的正整数。
可选地,从候选切分份数等于2开始,确定候选切分份数等于2时是否满足切分条件,然后确定候选切分份数等于3时是否满足切分条件,再确定候选切分份数等于4时是否满足切分条件,以此类推,直至满足停止查找条件,则将满足切分条件的候选切分份数确定为最终查找到的切分份数。
例如,第一矩阵为左矩阵,第二矩阵为右矩阵,切分模板指示对右矩阵在宽度方向上进行切分。以确定候选切分份数等于2时的评定结果为例,计算机设备确定将第二矩阵在宽度方向上切分成2份后得到的子矩阵A的数据量和子矩阵B的数据量,由于需要分别将第一矩阵与子矩阵A和子矩阵B进行运算,因此需要将第一矩阵和子矩阵A加载至缓存器中进行运算,再将第一矩阵和子矩阵B加载至缓存器中进行运算,如果第一矩阵和子矩阵A的数据总量不大于缓存器的缓存容量,且第一矩阵和子矩阵B的数据总量不大于缓存器的缓存容量,则评定结果指示该候选切分份数等于2时满足切分条件。如果第一矩阵和子矩阵A的数据总量大于缓存器的缓存容量,或者第一矩阵和子矩阵B的数据总量大于缓存器的缓存容量,则评定结果指示该候选切分份数等于2时不满足切分条件。可选地,在对第二矩阵进行均匀切分的情况下,子矩阵A的数据量和子矩阵B的数据量相等。
可选地,停止查找条件包括以下至少一项。
(1)当前的候选切分份数的评定结果指示满足切分条件。例如,候选切分份数等于2时的评定结果指示不满足切分条件,则确定候选切分份数等于3时的评定结果,如果候选切分份数等于3时的评定结果指示满足切分条件,则无需再确定候选切分份数大于3时的评定结果。
(2)按照候选切分份数进行切分后,得到的最小矩阵的数据量小于矩阵运算引擎的最小运算量,矩阵运算引擎用于对矩阵进行运算。其中,矩阵运算引擎的最小运算量是指该矩阵运算引擎在一次运算过程中所处理的数据的最小数据量,例如在小于该最小运算量的情况下,会导致矩阵运算引擎的利用率过小,因此设定了矩阵运算引擎的最小运算量。本申请实施例中,在对矩阵进行切分时为均匀切分,则切分份数越大,切分后的最小矩阵的数据量就越小,那么如果按照某一个候选切分份数进行切分后,得到的最小矩阵的数据量小于矩阵运算引擎的最小运算量,则按照大于该候选切分份数进行切分后,得到的最小矩阵的数据量也必定小于矩阵运算引擎的最小运算量。例如,候选切分份数在小于或等于5时的评定结果均指示不满足切分条件,且候选切分份数等于5时,切分后的最小矩阵的数据量小于该矩阵运算引擎的最小运算量,则无需再确定候选切分份数大于5时的评定结果,由于未查找到满足切换条件的切分份数,则可以确定未查找到该切分模板对应的满足切分条件的切分策略,也即是该切分模板无法适用于对第一矩阵和第二矩阵进行切分。
3032、计算机设备基于切分模板指示的切分目标和切分方向,确定切分后的矩阵的运算顺序,基于运算顺序,确定加载顺序。
其中,矩阵乘法运算的实质是对矩阵中的元素进行相乘后累加,那么需要确定矩阵的运算顺序,该运算顺序是指对矩阵中的元素进行运算的顺序。计算机设备先基于切分目标和切分方向,确定切分后的矩阵的运算顺序,在确定运算顺序后,即可确定切分后的矩阵的加载顺序。
可选地,如图4所示,在切分模板为第一切分模板的情况下,在右矩阵402的宽度方向上进行遍历,也即是将右矩阵402中以列为单位,从第一列元素开始,分别将每列元素与左矩阵401进行运算,直至完成对最后一列元素的运算,那么加载顺序为:将左矩阵401和右矩阵402的一个子矩阵加载至缓存器中进行运算,运算完成后,将右矩阵402的下一个子矩阵加载至缓存器中替换掉上一个子矩阵,并进行运算,以此类推,直至完成对右矩阵402中每个子矩阵的运算,且左矩阵401和右矩阵402的每个子矩阵均仅需加载一次。
可选地,如图4所示,在切分模板为第二切分模板的情况下,在左矩阵401的高度方向上进行遍历,也即是将左矩阵401中以行为单位,从第一行元素开始,分别将每行元素与右矩阵402进行运算,直至完成对最后一行元素的运算,那么加载顺序为:将右矩阵402和左矩阵401的一个子矩阵加载至缓存器中进行运算,运算完成后,将左矩阵401的下一个子矩阵加载至缓存器中替换掉上一个子矩阵,并进行运算,以此类推,直至完成对左矩阵401中每个子矩阵的运算,且右矩阵402和左矩阵401的每个子矩阵均仅需加载一次。
可选地,如图4所示,在切分模板为第三切分模板的情况下,可以在左矩阵401的高度方向上进行遍历,则左矩阵401的每个子矩阵均仅需加载一次,右矩阵402的每个子矩阵需要重复加载多次。或者在右矩阵402的宽度方向上进行遍历,则左矩阵401的每个子矩阵需要重复加载多次,右矩阵402的每个子矩阵均仅需加载一次。
可选地,如图4所示,在切分模板为第四切分模板的情况下,可以在左矩阵401的高度方向上进行遍历,则左矩阵401的每个子矩阵均仅需加载一次,右矩阵402的每个子矩阵需要重复加载多次。
可选地,如图4所示,在切分模板为第五切分模板的情况下,可以在右矩阵402的宽度方向上进行遍历,则右矩阵402的每个子矩阵均仅需加载一次,左矩阵401的每个子矩阵需要重复加载多次。
可选地,如图4所示,在切分模板为第六切分模板的情况下,左矩阵401的每个子矩阵需要重复加载多次,右矩阵402的每个子矩阵也需要重复加载多次。
在一种可能实现方式中,多个切分模板包括至少一个目标切分模板和至少一个非目标切分模板,目标切分模板指示的切分目标为任两个矩阵中的其中一个矩阵,非目标切分模板指示的切分目标为任两个矩阵中的每个矩阵。则计算机设备对于任一切分模板,基于切分模板、第一矩阵的数据量和第二矩阵的数据量,确定切分模板对应的满足切分条件的切分策略,包括:依次查找每个目标切分模板对应的满足切分条件的切分策略;在查找到至少一个目标切分模板对应的满足切分条件的切分策略的情况下,停止查找;在未查找到任一目标切分模板对应的满足切分条件的切分策略的情况下,依次查找每个非目标切分模板对应的满足切分条件的切分策略。
例如,如图4所示,第一切分模板和第二切分模板为目标切分模板,第三切分模板至第六切分模板为非目标切分模板,如果已经查找到第一切分模板或第二切分模板中的至少一个切分模板对应的满足切分条件的切分策略,则无需再查找第三切分模板至第六切分模板对应的切分策略。如果未查找到第一切分模板和第二切分模板对应的满足切分条件的切分策略,则需要查找第三切分模板至第六切分模板对应的切分策略。
本申请实施例中,考虑到目标切分模板的切分复杂度大于非目标切分模板的切分复杂度,因此先查找目标切分模板对应的切分策略,如果查找到了满足切分条件的切分策略,则不再查找非切分模板对应的切分策略,从而节省处理资源。
在一种可能实现方式中,切分策略还包括切分后的每个矩阵的缓存地址,该缓存地址用于指示切分后的矩阵在缓存器中的缓存空间。
本申请实施例中,基于查找到的切分策略,可以确定第一矩阵和第二矩阵所采用的切分模板、切分后的矩阵的加载顺序、切分后的矩阵的数据量以及切分后的矩阵的缓存地址等。
304、计算机设备对多个切分策略进行仿真,得到每个切分策略的加载时长。
计算机设备在确定多个切分策略后,为了在多个切分策略中筛选出处理性能更好的切分策略,计算机设备分别对该多个切分策略进行仿真,得到每个切分策略的加载时长,切分策略的加载时长也即是采用该切分策略进行处理时将切分后的矩阵分批次加载至缓存器中所需花费的总时长,切分策略的加载时长能够反映切分策略的处理性能。
在一种可能实现方式中,计算机设备基于切分策略、第一矩阵的数据量和第二矩阵的数据量,确定加载次数和每次加载的数据量,基于加载次数、每次加载的数据量以及存储器的读写带宽,确定切分策略的加载时长。
可选地,计算机设备采用下述公式,确定切分策略的加载时长。
;
其中,表示加载时长,表示左矩阵切分后得到的子矩阵的数据量,表示左矩
阵切分后得到的子矩阵的加载次数,表示对左矩阵的读带宽。表示输出矩阵的数据
量,表示输出矩阵搬运至存储器中的次数,表示对输出矩阵的写带宽。表示右矩阵
切分后得到的子矩阵的数据量,表示右矩阵切分后得到的子矩阵的加载次数,表示对
右矩阵的读带宽。
可选地,计算机设备中包括仿真器,该仿真器用于对切分策略进行仿真,则计算机设备将切分策略、第一矩阵的数据量、第二矩阵的数据量、存储器的读写带宽输入仿真器,由仿真器基于切分策略、第一矩阵的数据量和第二矩阵的数据量,确定加载次数和每次加载的数据量,基于加载次数、每次加载的数据量以及存储器的读写带宽,确定切分策略的加载时长,从而仿真器输出切分策略的加载时长。
305、计算机设备在多个切分策略中确定加载时长满足性能条件的目标切分策略。
由于切分策略的加载时长能够反映切分策略的性能,因此计算机设备在多个切分策略中,确定加载时长满足性能条件的目标切分策略,从而筛选出性能相对更好的目标切分策略。
可选地,加载时长满足性能条件是指该加载时长小于预设时长。可选地,加载时长满足性能条件是指该加载时长为多个切分策略的加载时长中的最小值。
306、计算机设备按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵加载至缓存器,对加载至缓存器中的矩阵进行运算。
计算机设备在确定目标切分策略后,按照该目标切分策略指示的切分方式对第一矩阵或第二矩阵中的至少一个进行切分,得到切分后的矩阵,然后按照该目标切分策略指示的加载顺序,将切分后的矩阵分批次加载至缓存器中,每完成一次加载,则对缓存器中当前的矩阵进行运算。
例如,第一矩阵为矩阵乘法运算的左矩阵,第二矩阵为矩阵乘法运算的右矩阵。目标切分策略指示对右矩阵在宽度方向上切分为3份,则计算机设备按照该目标切分策略,将第一矩阵在宽度方向上均匀切分成3份,得到子矩阵A、子矩阵B和子矩阵C。计算机设备按照目标切分策略指示的加载顺序,先将第一矩阵和子矩阵A加载至缓存器中,对缓存器中的第一矩阵和子矩阵A进行运算,得到运算结果1,然后将子矩阵B加载至缓存器中替换子矩阵A,对缓存器中的第一矩阵和子矩阵B进行运算,得到运算结果2,再将子矩阵C加载至缓存器中替换子矩阵B,对缓存器中的第一矩阵和子矩阵C进行运算,得到运算结果3,该运算结果1、运算结果2和运算结果3构成了第一矩阵和第二矩阵进行矩阵乘法运算的运算结果。也即是,通过对矩阵进行切分,将第一矩阵和第二矩阵的运算过程切分为3个批次,依次将每个批次所需运算的矩阵加载至缓存器中了。
在一种可能实现方式中,计算机设备对于当前所需加载的矩阵,将矩阵切分为第一分块矩阵和第二分块矩阵,将第一分块矩阵加载至缓存器中,对缓存器中的第一分块矩阵进行运算,在对第一分块矩阵进行运算的过程中,并行地将第二分块矩阵加载至缓存器中。
例如,第一矩阵为矩阵乘法运算的左矩阵,第二矩阵为矩阵乘法运算的右矩阵。目标切分策略指示对右矩阵在宽度方向上切分为3份,则计算机设备按照来目标切分策略,将第一矩阵在宽度方向上均匀切分成3份,得到子矩阵A、子矩阵B和子矩阵C。以第一矩阵和子矩阵A的运算过程为例,计算机设备将子矩阵A切分为子矩阵A1和子矩阵A2,将第一矩阵和子矩阵A1加载至缓存器中,在对缓存器中的第一矩阵和子矩阵A1进行运算的过程中,并行地将子矩阵B1加载至缓存器中,在将第一矩阵和子矩阵A1运算完成的同时,也将子矩阵B1加载完成了。因此,本申请实施例中,将待加载的矩阵分成了两部分,先加载第一部分,在对第一部分进行运算的同时,加载第二部分,从而并行地执行加载过程和运算过程,有利于提高处理效率。
在一种可能实现方式中,切分策略还包括切分后的矩阵的缓存地址,则计算机设备将切分后的矩阵加载至缓存器,包括:对于当前所需加载的矩阵,确定矩阵的缓存地址,将矩阵加载至缓存器中缓存地址指示的缓存空间中。
在一种可能实现方式中,计算机设备对加载至缓存器中的矩阵进行运算,包括:调用矩阵运算引擎,对缓存器中的矩阵进行运算,得到运算结果,将运算结果存储至存储器中。其中,该矩阵运算引擎用于实现矩阵乘法运算。
图5是本申请实施例提供的再一种数据处理方法的流程图,如图5所示,第一矩阵和第二矩阵存储在存储器中,采用目标切分策略将第一矩阵或第二矩阵中的至少一项进行切分后,将切分后的矩阵加载至缓存器中,矩阵运算引擎在缓存器中读取矩阵,对读取到的矩阵进行运算,得到运算结果,然后将运算结果写入存储器中。可选地,第一矩阵、第二矩阵和运算结果分别存储在存储器中不同的存储空间中。
本申请实施例提供的方法,待运算的第一矩阵和第二矩阵存储在存储器中,为了便于后续在运算时读取该第一矩阵和第二矩阵,需要将第一矩阵和第二矩阵从存储器中加载至缓存器中,在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定该第一矩阵和第二矩阵的切分策略,该切分策略用于指示对第一矩阵和第二矩阵如何进行切分,以及切分后得到的每个矩阵加载至缓存器中的顺序。在得到多个切分策略后,通过对每个切分策略进行仿真,得到每个切分策略的加载时长,从而在多个切分策略中查找加载时长满足性能条件的目标切分策略,便于筛选出加载时长较小的切分策略,因此按照目标切分策略进行切分,再依次将切分后的矩阵加载至缓存器中进行运算,一方面解决了第一矩阵和第二矩阵的数据总量较大无法一次性加载至缓存器中的问题,另一方面可以在多个切分策略中查找到加载时长较小的切分策略,从而降低了加载多个矩阵所花费的时间,进而提高了数据处理的整体效率。
本申请实施例对矩阵卷积和矩阵相乘等矩阵乘法类的AI算子,提供了一种切分策略的搜索方案,能够搜索到所需花费的加载时长相对较少的切分策略,有利于提高处理性能和处理效率。图6是本申请实施例提供的另一种数据处理方法的系统架构图,如图6所示,该系统架构由解析层、优化层和仿真层三部分组成。其中,解析层用于获取神经网络,对神经网络进行网络解析。优化层用于对网络解析后得到的神经网络中的算子进行融合和消除,并为神经网络中各层的输入数据和输出数据分配内存地址,然后确定神经网络中产生的需要进行矩阵乘法运算的任两个矩阵的切分策略。仿真层用于通过第一仿真器或第二仿真器对切分策略进行仿真,该第一仿真器和第二仿真器的精确度不同。仿真层还可以将通过仿真器筛选得到的目标切分策略部署在芯片中。
图7是本申请实施例提供的又一种数据处理方法的流程图,如图7所示,该方法包括以下步骤:步骤1、网络解析,也即是在解析层对神经网络进行解析;步骤2、算子融合、消除,也即是在优化层对解析后的神经网络进行算子融合和算子消除;步骤3、内存分配,也即是在优化层为神经网络中各层的输入数据和输出数据分配内存地址;步骤4、切分策略,也即是在优化层中确定神经网络中产生的需要进行矩阵乘法运算的任两个矩阵的切分策略,该切分策略包括切分方式和加载顺序;步骤5、仿真器,也即是在仿真层通过仿真器对已确定的多个切分策略进行仿真,得到每个切分策略的加载时长。
图8是本申请实施例提供的一种数据处理装置的结构示意图。参见图8,该装置包括:
矩阵确定模块801,用于在存储器中确定第一矩阵和第二矩阵,第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
策略确定模块802,用于在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,切分策略包括切分方式和加载顺序,切分方式是指对第一矩阵或第二矩阵中的至少一个进行切分的方式,加载顺序是指将切分后的矩阵从存储器加载至缓存器的顺序;
仿真模块803,用于对多个切分策略进行仿真,得到每个切分策略的加载时长;
策略选择模块804,用于在多个切分策略中确定加载时长满足性能条件的目标切分策略;
矩阵处理模块805,用于按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵加载至缓存器,对加载至缓存器中的矩阵进行运算。
本申请实施例提供的数据处理装置,待运算的第一矩阵和第二矩阵存储在存储器中,为了便于后续在运算时读取该第一矩阵和第二矩阵,需要将第一矩阵和第二矩阵从存储器中加载至缓存器中,在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定该第一矩阵和第二矩阵的切分策略,该切分策略用于指示对第一矩阵和第二矩阵如何进行切分,以及切分后得到的每个矩阵加载至缓存器中的顺序。在得到多个切分策略后,通过对每个切分策略进行仿真,得到每个切分策略的加载时长,从而在多个切分策略中查找加载时长满足性能条件的目标切分策略,便于筛选出加载时长较小的切分策略,因此按照目标切分策略进行切分,再依次将切分后的矩阵加载至缓存器中进行运算,一方面解决了第一矩阵和第二矩阵的数据总量较大无法一次性加载至缓存器中的问题,另一方面可以在多个切分策略中查找到加载时长较小的切分策略,从而降低了加载多个矩阵所花费的时间,进而提高了数据处理的整体效率。
可选地,策略确定模块802,用于:
获取多个切分模板,切分模板指示切分目标和切分方向,切分目标是指所需切分的矩阵;
对于任一切分模板,基于切分模板、第一矩阵的数据量和第二矩阵的数据量,查找切分模板对应的满足切分条件的切分策略,切分条件是指在切分后的多个矩阵中,每次需要加载至缓存器中进行运算的矩阵的数据总量不大于缓存容量。
可选地,策略确定模块802,用于:
基于切分模板指示的切分目标、切分模板指示的切分方向、第一矩阵的数据量和第二矩阵的数据量,查找满足切分条件的切分份数,切分目标、切分方向和切分份数构成切分方式;
基于切分模板指示的切分目标和切分方向,确定切分后的矩阵的运算顺序,基于运算顺序,确定加载顺序。
可选地,策略确定模块802,用于:
基于切分目标、切分方向、第一矩阵的数据量和第二矩阵的数据量,按照候选切分份数从小到大的顺序,依次确定不同的候选切分份数的评定结果,直至满足停止查找条件时,基于至少一个候选切分份数的评定结果,在至少一个候选切分份数中,确定满足切分条件的切分份数;
其中,评定结果指示候选切分份数是否满足切分条件,候选切分份数为大于1的正整数。
可选地,停止查找条件包括以下至少一项:
当前的候选切分份数的评定结果指示满足切分条件;
按照候选切分份数进行切分后,得到的最小矩阵的数据量小于矩阵运算引擎的最小运算量,矩阵运算引擎用于对矩阵进行运算。
可选地,多个切分模板包括至少一个目标切分模板和至少一个非目标切分模板,目标切分模板指示的切分目标为任两个矩阵中的其中一个矩阵,非目标切分模板指示的切分目标为任两个矩阵中的每个矩阵;
策略确定模块802,用于:
依次查找每个目标切分模板对应的满足切分条件的切分策略;
在查找到至少一个目标切分模板对应的满足切分条件的切分策略的情况下,停止查找;
在未查找到任一目标切分模板对应的满足切分条件的切分策略的情况下,依次查找每个非目标切分模板对应的满足切分条件的切分策略。
可选地,多个切分模板包括第一切分模板、第二切分模板、第三切分模板、第四切分模板、第五切分模板或第六切分模板中的至少一个;
第一切分模板指示对任两个矩阵中的右矩阵在宽度方向上进行切分;
第二切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分;
第三切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在宽度方向上进行切分;
第四切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分;
第五切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在宽度方向上进行切分;
第六切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分。
可选地,仿真模块803,用于:
基于切分策略、第一矩阵的数据量和第二矩阵的数据量,确定加载次数和每次加载的数据量;
基于加载次数、每次加载的数据量以及存储器的读写带宽,确定切分策略的加载时长。
可选地,矩阵处理模块805,用于:
对于当前所需加载的矩阵,将矩阵切分为第一分块矩阵和第二分块矩阵;
将第一分块矩阵加载至缓存器中,对缓存器中的第一分块矩阵进行运算,在对第一分块矩阵进行运算的过程中,并行地将第二分块矩阵加载至缓存器中。
可选地,切分策略还包括切分后的矩阵的缓存地址,矩阵处理模块805,用于:
对于当前所需加载的矩阵,确定矩阵的缓存地址;
将矩阵加载至缓存器中缓存地址指示的缓存空间中。
可选地,矩阵处理模块805,用于:
调用矩阵运算引擎,对缓存器中的矩阵进行运算,得到运算结果;
将运算结果存储至存储器中。
需要说明的是:上述实施例提供的数据处理装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种芯片,芯片与存储器通信连接,芯片上包括缓存器;该芯片,用于执行以下操作:
在存储器中确定第一矩阵和第二矩阵,第一矩阵和第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
在第一矩阵和第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,切分策略包括切分方式和加载顺序,切分方式是指对第一矩阵或第二矩阵中的至少一个进行切分的方式,加载顺序是指将切分后的矩阵从存储器加载至缓存器的顺序;
对多个切分策略进行仿真,得到每个切分策略的加载时长;
在多个切分策略中确定加载时长满足性能条件的目标切分策略;
按照目标切分策略对第一矩阵或第二矩阵中的至少一个进行切分,将切分后的矩阵加载至缓存器,对加载至缓存器中的矩阵进行运算。
在一种可能实现方式中,该芯片配置于计算机设备中,该芯片还用于实现上述实施例的数据处理方法中所执行的操作。
可选地,该芯片为AI芯片等,在应用于AI芯片的场景下,本申请实施例通过确定各个切分策略的加载时长,可以对整个AI芯片的处理性能进行评估,能够为AI芯片中各个算子的部署和开发提供指导,从而为AI芯片的硬件架构设计和优化提供有益指导。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的数据处理方法中所执行的操作。
可选地,该计算机设备提供为终端。图9示出了本申请一个示例性实施例提供的终端900的结构示意图。终端900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以集成有GPU(Graphics Processing Unit,图像处理的交互器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)芯片,该AI芯片用于处理有关机器学习的计算操作。
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一条计算机程序,该至少一条计算机程序用于被处理器901所具有以实现本申请中方法实施例提供的数据处理方法。
在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。可选地,外围设备包括:射频电路904、显示屏905、摄像头组件906、音频电路907和电源908中的至少一种。
外围设备接口903可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(,无线保真)网络。在一些实施例中,射频电路904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置在终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在另一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。前置摄像头设置在终端900的前面板,后置摄像头设置在终端900的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。
电源908用于为终端900中的各个组件进行供电。电源908可以是交流电、直流电、一次性电池或可充电电池。当电源908包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
可选地,该计算机设备提供为服务器。图10是本申请实施例提供的一种服务器的结构示意图,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1001和一个或一个以上的存储器1002,其中,所述存储器1002中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器1001加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的数据处理方法所执行的操作。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序由处理器加载并执行,以实现如上述实施例的数据处理方法所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种数据处理方法,其特征在于,所述方法包括:
在存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
在所述第一矩阵和所述第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一矩阵和所述第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,包括:
获取多个切分模板,所述切分模板指示切分目标和切分方向,所述切分目标是指所需切分的矩阵;
对于任一切分模板,基于所述切分模板、所述第一矩阵的数据量和所述第二矩阵的数据量,查找所述切分模板对应的满足切分条件的切分策略,所述切分条件是指在切分后的多个矩阵中,每次需要加载至所述缓存器中进行运算的矩阵的数据总量不大于所述缓存容量。
3.根据权利要求2所述的方法,其特征在于,所述基于所述切分模板、所述第一矩阵的数据量和所述第二矩阵的数据量,查找所述切分模板对应的满足切分条件的切分策略,包括:
基于所述切分模板指示的切分目标、所述切分模板指示的切分方向、所述第一矩阵的数据量和所述第二矩阵的数据量,查找满足所述切分条件的切分份数,所述切分目标、所述切分方向和所述切分份数构成所述切分方式;
基于所述切分模板指示的切分目标和切分方向,确定切分后的矩阵的运算顺序,基于所述运算顺序,确定所述加载顺序。
4.根据权利要求3所述的方法,其特征在于,所述基于所述切分模板指示的切分目标、所述切分模板指示的切分方向、所述第一矩阵的数据量和所述第二矩阵的数据量,查找满足所述切分条件的切分份数,包括:
基于所述切分目标、所述切分方向、所述第一矩阵的数据量和所述第二矩阵的数据量,按照候选切分份数从小到大的顺序,依次确定不同的候选切分份数的评定结果,直至满足停止查找条件时,基于至少一个候选切分份数的评定结果,在所述至少一个候选切分份数中,确定满足所述切分条件的切分份数;
其中,所述评定结果指示所述候选切分份数是否满足所述切分条件,所述候选切分份数为大于1的正整数。
5.根据权利要求4所述的方法,其特征在于,所述停止查找条件包括以下至少一项:
当前的候选切分份数的评定结果指示满足所述切分条件;
按照所述候选切分份数进行切分后,得到的最小矩阵的数据量小于矩阵运算引擎的最小运算量,所述矩阵运算引擎用于对矩阵进行运算。
6.根据权利要求2所述的方法,其特征在于,所述多个切分模板包括至少一个目标切分模板和至少一个非目标切分模板,所述目标切分模板指示的切分目标为任两个矩阵中的其中一个矩阵,所述非目标切分模板指示的切分目标为任两个矩阵中的每个矩阵;
所述对于任一切分模板,基于所述切分模板、所述第一矩阵的数据量和所述第二矩阵的数据量,查找所述切分模板对应的满足切分条件的切分策略,包括:
依次查找每个目标切分模板对应的满足所述切分条件的切分策略;
在查找到至少一个目标切分模板对应的满足所述切分条件的切分策略的情况下,停止查找;
在未查找到任一目标切分模板对应的满足所述切分条件的切分策略的情况下,依次查找每个非目标切分模板对应的满足所述切分条件的切分策略。
7.根据权利要求2所述的方法,其特征在于,所述多个切分模板包括第一切分模板、第二切分模板、第三切分模板、第四切分模板、第五切分模板或第六切分模板中的至少一个;
所述第一切分模板指示对任两个矩阵中的右矩阵在宽度方向上进行切分;
所述第二切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分;
所述第三切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在宽度方向上进行切分;
所述第四切分模板指示对任两个矩阵中的左矩阵在高度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分;
所述第五切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在宽度方向上进行切分;
所述第六切分模板指示对任两个矩阵中的左矩阵在高度方向和宽度方向上进行切分以及对右矩阵在高度方向和宽度方向上进行切分。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述对所述多个切分策略进行仿真,得到每个切分策略的加载时长,包括:
基于所述切分策略、所述第一矩阵的数据量和所述第二矩阵的数据量,确定加载次数和每次加载的数据量;
基于所述加载次数、每次加载的数据量以及所述存储器的读写带宽,确定所述切分策略的加载时长。
9.根据权利要求1-7任一项所述的方法,其特征在于,所述将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算,包括:
对于当前所需加载的矩阵,将所述矩阵切分为第一分块矩阵和第二分块矩阵;
将所述第一分块矩阵加载至所述缓存器中,对所述缓存器中的所述第一分块矩阵进行运算,在对所述第一分块矩阵进行运算的过程中,并行地将所述第二分块矩阵加载至所述缓存器中。
10.根据权利要求1-7任一项所述的方法,其特征在于,所述切分策略还包括切分后的矩阵的缓存地址,所述将切分后的矩阵加载至所述缓存器,包括:
对于当前所需加载的矩阵,确定所述矩阵的缓存地址;
将所述矩阵加载至所述缓存器中所述缓存地址指示的缓存空间中。
11.根据权利要求1-7任一项所述的方法,其特征在于,所述对加载至所述缓存器中的矩阵进行运算,包括:
调用矩阵运算引擎,对所述缓存器中的矩阵进行运算,得到运算结果;
将所述运算结果存储至所述存储器中。
12.一种数据处理装置,其特征在于,所述装置包括:
矩阵确定模块,用于在存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
策略确定模块,用于在所述第一矩阵和所述第二矩阵的数据总量大于缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
仿真模块,用于对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
策略选择模块,用于在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
矩阵处理模块,用于按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
13.一种芯片,其特征在于,所述芯片与存储器通信连接,所述芯片上包括缓存器;所述芯片,用于执行以下操作:
在所述存储器中确定第一矩阵和第二矩阵,所述第一矩阵和所述第二矩阵为神经网络中待进行矩阵乘法运算的两个矩阵;
在所述第一矩阵和所述第二矩阵的数据总量大于所述缓存器的缓存容量的情况下,确定多个切分策略,所述切分策略包括切分方式和加载顺序,所述切分方式是指对所述第一矩阵或所述第二矩阵中的至少一个进行切分的方式,所述加载顺序是指将切分后的矩阵从所述存储器加载至所述缓存器的顺序;
对所述多个切分策略进行仿真,得到每个切分策略的加载时长;
在所述多个切分策略中确定所述加载时长满足性能条件的目标切分策略;
按照所述目标切分策略对所述第一矩阵或所述第二矩阵中的至少一个进行切分,将切分后的矩阵加载至所述缓存器,对加载至所述缓存器中的矩阵进行运算。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如权利要求1至11任一项所述的数据处理方法所执行的操作。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如权利要求1至11任一项所述的数据处理方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311089778.XA CN116842307B (zh) | 2023-08-28 | 2023-08-28 | 数据处理方法、装置、设备、芯片及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311089778.XA CN116842307B (zh) | 2023-08-28 | 2023-08-28 | 数据处理方法、装置、设备、芯片及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116842307A true CN116842307A (zh) | 2023-10-03 |
CN116842307B CN116842307B (zh) | 2023-11-28 |
Family
ID=88162047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311089778.XA Active CN116842307B (zh) | 2023-08-28 | 2023-08-28 | 数据处理方法、装置、设备、芯片及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116842307B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785492A (zh) * | 2024-02-28 | 2024-03-29 | 上海燧原智能科技有限公司 | 一种算子的切分方式确定方法、装置、设备及介质 |
CN117908994A (zh) * | 2024-03-20 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 媒体信息的处理方法、装置、设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
US20210286860A1 (en) * | 2020-03-13 | 2021-09-16 | Alibaba Group Holding Limited | Method and device for matrix multiplication optimization using vector registers |
CN114090954A (zh) * | 2021-11-08 | 2022-02-25 | 湖南大学 | 一种基于ft-2000+的整数矩阵乘法内核优化方法 |
CN114416045A (zh) * | 2020-10-28 | 2022-04-29 | 华为技术有限公司 | 自动生成算子的方法和装置 |
CN114707114A (zh) * | 2022-04-25 | 2022-07-05 | 上海壁仞智能科技有限公司 | 分块方法及装置、卷积运算的方法及装置、存储介质 |
WO2022227962A1 (zh) * | 2021-04-29 | 2022-11-03 | 华为技术有限公司 | 一种数据处理方法及装置 |
US20230056315A1 (en) * | 2020-01-24 | 2023-02-23 | Northeastern University, Northeastern Univ. | Computer-implemented methods and systems for compressing recurrent neural network (rnn) models and accelerating rnn execution in mobile devices to achieve real-time inference |
CN115904539A (zh) * | 2022-11-29 | 2023-04-04 | 上海燧原科技有限公司 | 一种切分策略的在线生成方法、装置、设备及存储介质 |
-
2023
- 2023-08-28 CN CN202311089778.XA patent/CN116842307B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
US20230056315A1 (en) * | 2020-01-24 | 2023-02-23 | Northeastern University, Northeastern Univ. | Computer-implemented methods and systems for compressing recurrent neural network (rnn) models and accelerating rnn execution in mobile devices to achieve real-time inference |
US20210286860A1 (en) * | 2020-03-13 | 2021-09-16 | Alibaba Group Holding Limited | Method and device for matrix multiplication optimization using vector registers |
CN114416045A (zh) * | 2020-10-28 | 2022-04-29 | 华为技术有限公司 | 自动生成算子的方法和装置 |
WO2022227962A1 (zh) * | 2021-04-29 | 2022-11-03 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN114090954A (zh) * | 2021-11-08 | 2022-02-25 | 湖南大学 | 一种基于ft-2000+的整数矩阵乘法内核优化方法 |
CN114707114A (zh) * | 2022-04-25 | 2022-07-05 | 上海壁仞智能科技有限公司 | 分块方法及装置、卷积运算的方法及装置、存储介质 |
CN115904539A (zh) * | 2022-11-29 | 2023-04-04 | 上海燧原科技有限公司 | 一种切分策略的在线生成方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785492A (zh) * | 2024-02-28 | 2024-03-29 | 上海燧原智能科技有限公司 | 一种算子的切分方式确定方法、装置、设备及介质 |
CN117785492B (zh) * | 2024-02-28 | 2024-05-17 | 上海燧原智能科技有限公司 | 一种算子的切分方式确定方法、装置、设备及介质 |
CN117908994A (zh) * | 2024-03-20 | 2024-04-19 | 腾讯科技(深圳)有限公司 | 媒体信息的处理方法、装置、设备及可读存储介质 |
CN117908994B (zh) * | 2024-03-20 | 2024-06-11 | 腾讯科技(深圳)有限公司 | 媒体信息的处理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116842307B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116842307B (zh) | 数据处理方法、装置、设备、芯片及存储介质 | |
CN110149541B (zh) | 视频推荐方法、装置、计算机设备及存储介质 | |
CN110458294B (zh) | 模型运行方法、装置、终端及存储介质 | |
CN116775915A (zh) | 资源推荐方法、推荐预测模型训练方法、装置及设备 | |
CN113378863B (zh) | 一种图像处理方法及装置、电子设备和存储介质 | |
CN114117206B (zh) | 推荐模型处理方法、装置、电子设备及存储介质 | |
CN117217201B (zh) | 基于预训练语言模型的任务处理方法、装置、设备及介质 | |
CN112036492B (zh) | 样本集处理方法、装置、设备及存储介质 | |
CN111694768B (zh) | 运算方法、装置及相关产品 | |
CN109740730B (zh) | 运算方法、装置及相关产品 | |
CN111382831B (zh) | 加速卷积神经网络模型前向推理的方法及装置 | |
CN111626035A (zh) | 一种版面分析方法及电子设备 | |
CN110727462B (zh) | 数据处理器和数据处理方法 | |
CN115964331A (zh) | 一种数据访问方法、装置及设备 | |
CN111667046A (zh) | 深度学习加速方法及用户终端 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN116467153A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN114510911A (zh) | 文本处理方法、装置、计算机设备及存储介质 | |
CN110969217B (zh) | 基于卷积神经网络进行图像处理的方法和装置 | |
CN116980277B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
US20240112480A1 (en) | Method for publishing image and electronic device | |
CN116820524B (zh) | 模型更新方法、装置、计算机设备及存储介质 | |
CN117349222A (zh) | 处理器、数据处理方法及计算机设备 | |
CN117908994B (zh) | 媒体信息的处理方法、装置、设备及可读存储介质 | |
CN116909626B (zh) | 数据处理方法、处理器及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |