CN116484157A - 矩阵乘计算核选取方法和矩阵乘运算的确定方法 - Google Patents
矩阵乘计算核选取方法和矩阵乘运算的确定方法 Download PDFInfo
- Publication number
- CN116484157A CN116484157A CN202310493077.6A CN202310493077A CN116484157A CN 116484157 A CN116484157 A CN 116484157A CN 202310493077 A CN202310493077 A CN 202310493077A CN 116484157 A CN116484157 A CN 116484157A
- Authority
- CN
- China
- Prior art keywords
- matrix multiplication
- multiplication operation
- matrix
- test
- computing
- 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.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 617
- 238000004364 calculation method Methods 0.000 title claims abstract description 106
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000010187 selection method Methods 0.000 title abstract description 12
- 238000012360 testing method Methods 0.000 claims abstract description 165
- 238000012545 processing Methods 0.000 claims abstract description 122
- 239000013598 vector Substances 0.000 claims abstract description 83
- 230000005540 biological transmission Effects 0.000 claims description 83
- 238000012549 training Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 description 32
- 238000005516 engineering process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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
-
- 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/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种矩阵乘计算核选取方法和矩阵乘运算的确定方法。包括:获取待处理矩阵乘数据和当前硬件资源;根据待处理矩阵乘数据和当前硬件资源确定当前特征向量,将当前特征向量输入到矩阵乘运算性能模型中,获得每一计算核的矩阵乘运算的处理耗时;选取矩阵乘运算的处理耗时最少的计算核作为目标计算核。其中,矩阵乘运算性能模型通过以下方式得到:获取测试芯片上进行矩阵乘运算的硬件资源;获取测试矩阵;将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时;根据硬件资源和测试矩阵确定矩阵乘运算的特征向量,获得矩阵乘运算性能模型。本申请能够选择效率最优的计算核进行矩阵乘运算。
Description
技术领域
本申请涉及芯片技术领域,尤其涉及一种矩阵乘计算核选取方法和矩阵乘运算的确定方法。
背景技术
矩阵乘在深度学习中十分常用,两矩阵相乘需要进行一系列乘加操作。目前进行矩阵乘运算的计算核(kernel)有多种。但是各个计算核对处理不同矩阵乘数据的边界不是清晰的,且其处理所覆盖的范围会有所重叠,从而导致用于实现矩阵乘运算的计算核的性能不佳,进而导致运算性能低。
发明内容
有鉴于此,本申请实施例提供了一种矩阵乘计算核选取方法和矩阵乘运算的确定方法,用以解决难以选取最优计算核的问题。
第一方面,本申请实施例提供了一种矩阵乘计算核选取方法,包括:
获取待处理矩阵乘数据和当前硬件资源;
根据所述待处理矩阵乘数据和所述当前硬件资源确定当前特征向量;
将所述当前特征向量输入到矩阵乘运算性能模型中,获得每一所述计算核的矩阵乘运算的处理耗时;
选取所述矩阵乘运算的处理耗时最少的所述计算核作为目标计算核。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述将所述当前特征向量输入到矩阵乘运算性能模型中,获得每一所述计算核的矩阵乘运算的处理耗时,包括:
使用所述当前硬件资源,将所述当前特征向量输入到所述矩阵乘运算性能模型进行前向推理计算,获得每一所述计算核的所述矩阵乘运算的处理耗时。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,在所述获取待处理矩阵乘数据和当前硬件资源之前,所述方法还包括:
根据矩阵乘运算的特征向量、测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:
获取测试芯片上进行所述矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到所述测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的所述计算核;
根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的所述特征向量。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量,包括:
根据所述硬件资源的存储资源、计算资源和数据传输资源,以及所述测试矩阵的矩阵规模和矩阵数据类型确定所述矩阵乘运算的所述特征向量。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量以及芯片算力;所述数据传输资源包括:数据的传输带宽、传输时延和读写带宽,其中,所述传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽;所述存储资源包括:所述计算单元的存储空间和集群存储空间。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型,包括:
将所述测试处理耗时作为所述初始网络模型的输出值,将所述特征向量作为所述初始网络模型的输入值,通过回归计算得到所述初始网络模型更新后的权重,获得所述矩阵乘运算性能模型。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,在所述根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量之前,所述方法还包括:
确定芯片上的可用硬件资源;
确定所述芯片上进行所述矩阵乘运算的数据传输路线;
根据所述数据传输路线从所述可用硬件资源中确定所述硬件资源。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,在所述获取待处理矩阵乘数据之前,所述方法还包括:
检测所述计算核是否支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核是否支持对所述待处理矩阵进行所述矩阵乘运算;
若所述计算核不支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核不支持对所述待处理矩阵进行所述矩阵乘运算,将不支持进行所述矩阵乘运算的所述计算核除外。
第二方面,本申请实施例提供一种矩阵乘计算核选取装置,包括:
第三获取模块,用于获取待处理矩阵乘数据和当前硬件资源;
第四获取模块,用于根据所述待处理矩阵乘数据和所述当前硬件资源确定当前特征向量;
输入模块,用于将所述当前特征向量输入到矩阵乘运算性能模型中,获得每一所述计算核的矩阵乘运算的处理耗时;
选取模块,用于选取所述矩阵乘运算的处理耗时最少的所述计算核作为目标计算核。
进一步地,所述输入模块还具体用于:
使用所述当前硬件资源,将所述当前特征向量输入到所述矩阵乘运算性能模型进行前向推理计算,获得每一所述计算核的所述矩阵乘运算的处理耗时。
进一步地,所述矩阵乘计算核选取装置还具体用于:
根据矩阵乘运算的特征向量、测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型。
进一步地,所述矩阵乘计算核选取装置还具体用于:
获取测试芯片上进行所述矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到所述测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的所述计算核;
根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的所述特征向量。
进一步地,所述矩阵乘计算核选取装置还具体用于:
根据所述硬件资源的存储资源、计算资源和数据传输资源,以及所述测试矩阵的矩阵规模和矩阵数据类型确定所述矩阵乘运算的所述特征向量。
进一步地,所述计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量以及芯片算力;所述数据传输资源包括:数据的传输带宽、传输时延和读写带宽,其中,所述传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽;所述存储资源包括:所述计算单元的存储空间和集群存储空间。
进一步地,所述矩阵乘计算核选取装置还具体用于:
将所述测试处理耗时作为所述初始网络模型的输出值,将所述特征向量作为所述初始网络模型的输入值,通过回归计算得到所述初始网络模型更新后的权重,获得所述矩阵乘运算性能模型。
进一步地,所述矩阵乘计算核选取装置还具体用于:
确定芯片上的可用硬件资源;
确定所述芯片上进行所述矩阵乘运算的数据传输路线;
根据所述数据传输路线从所述可用硬件资源中确定所述硬件资源。
进一步地,所述矩阵乘计算核选取装置还具体用于:
在所述获取待处理矩阵乘数据之前,所述方法还包括:
检测所述计算核是否支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核是否支持对所述待处理矩阵进行所述矩阵乘运算;
若所述计算核不支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核不支持对所述待处理矩阵进行所述矩阵乘运算,将不支持进行所述矩阵乘运算的所述计算核除外。
第三方面,本申请实施例提供了一种矩阵乘运算的性能确定方法,所述芯片采用计算核进行所述矩阵乘运算,所述方法包括:
获取测试芯片上进行所述矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的所述计算核;
根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量;
根据所述矩阵乘运算的特征向量、所述测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获取矩阵乘运算性能模型,以根据所述矩阵乘运算性能模型确定所述计算核的所述矩阵乘运算的性能。
第四方面,本申请实施例提供一种矩阵乘运算的性能确定装置,包括:
第一获取模块,用于获取测试芯片上进行所述矩阵乘运算的硬件资源;
第二获取模块,用于获取测试矩阵;
数据输入模块,用于将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的所述计算核;
特征向量确定模块,用于根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量;
模型训练模块,用于根据所述矩阵乘运算的特征向量、所述测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获取矩阵乘运算性能模型,以根据所述矩阵乘运算性能模型确定所述计算核的所述矩阵乘运算的性能。
第五方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时执行如第一方面所述矩阵乘计算核选取方法的步骤,或者,所述处理器执行所述计算机可读指令时执行如第三方面所述矩阵乘运算的性能确定方法的步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如第一方面所述矩阵乘计算核选取方法的步骤,或者,所述计算机可读指令被处理器执行时实现如第三方面所述矩阵乘运算的性能确定方法的步骤。
在本申请实施例中,通过待处理矩阵乘数据和当前硬件资源确定当前特征向量,将当前特征向量输入到矩阵乘运算性能模型中获得每一计算核的矩阵乘运算的处理耗时,并选取矩阵乘运算的处理耗时最少的计算核作为目标计算核,其中,该矩阵乘运算性能模型同时考虑了硬件资源和矩阵数据对处理耗时的影响,能够在不同待处理矩阵乘数据和不同硬件资源的情况下,选择计算效率最优的计算核对待处理矩阵乘数据进行矩阵乘运算,进而可以提高矩阵乘运算的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例中一种芯片中计算装置为多核的内部结构示意图;
图2是本申请实施例中一种芯片的存储结构;
图3是本申请实施例中一种矩阵乘运算的性能确定方法的流程图;
图4是本申请实施例中一种矩阵乘计算核选取方法的流程图;
图5是本申请实施例中一种与矩阵乘运算的性能确定方法一一对应的装置的原理框图;
图6是本申请实施例中一种与矩阵乘计算核选取方法一一对应的装置的原理框图;
图7是本申请实施例中一种计算机设备。
具体实施方式
为了更好的理解本申请的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的相同的字段,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应当理解,尽管在本申请实施例中可能采用术语第一、第二、第三等来描述预设范围等,但这些预设范围不应限于这些术语。这些术语仅用来将预设范围彼此区分开。例如,在不脱离本申请实施例范围的情况下,第一预设范围也可以被称为第二预设范围,类似地,第二预设范围也可以被称为第一预设范围。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
目前,通用的矩阵乘运算的计算核虽然可以处理任意大小的二维矩阵相乘,但对于某些特殊规模的矩阵乘,直接使用通用的矩阵乘运算的计算核实现,芯片的算力利用率无法达到最优。例如,卷积运算中经常涉及不同类型矩阵的处理,其中,在将小图多通道的卷积类型转换成矩阵乘数据后,矩阵乘涉及的数据M、N维度的尺寸很小,而累加维度K的尺寸却很大。其中,矩阵乘运算可以采用公式D=alpha*op(A)*op(B)+beta*C表示,M维度表示op(A)和D的行数,K维度表示op(A)的列数以及op(B)的行数,N维度表示op(B)和D的列数。
为了获得较好性能,需要对矩阵乘运算的实现做更精细的分类,覆盖不同情况,现在有多种处理不同情况的矩阵乘运算的计算核,其中处理特殊规模的计算核(kernel)在计算其所针对的矩阵规模时会有优于通用计算核的性能。
目前计算核的选取策略是按照优先级轮流进行尝试,遇到合适的计算核即停止搜索。然而,各个计算核能够处理的矩阵规模的边界并不是清晰的,即使是处理特殊规模的计算核之间,其覆盖的范围也会有所重叠。在计算核选取时,特殊计算核之间的顺序并非严格的性能顺序,所以选择的计算核不一定是最优的。且一些特殊计算核在其边界情况下,其性能也未必优于通用计算核。目前,存在无法准确从众多计算核中选取到最优计算核的问题,从而导致用于实现矩阵乘运算的计算核的性能不佳,进而导致运算性能低。
芯片可以用于执行实现上述矩阵乘运算的计算核。图1本申请实施例中一种芯片中计算装置为多核的内部结构示意图。如图1所示,多核计算装置100采用分层结构设计,多核计算装置100作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个计算单元,换言之,多核计算装置100是以片上系统-集群-计算单元的层次所构成的。
以片上系统的层级来看,如图1所示,多核计算装置100包括外部存储控制器101、外设通信模块102、片上互联模块103、同步模块104以及多个集群105。
外部存储控制器101可以有多个,在图中示例性地展示2个,其用以响应计算单元发出的访问请求,访问外部存储设备,从而自片外读取数据或是将数据写入。外设通信模块102用以通过接口装置接收来自处理装置的控制信号,启动计算装置201执行任务。片上互联模块103将外部存储控制器101、外设通信模块102及多个集群105连接起来,用以在各个模块间传输数据和控制信号。同步模块104是一种全局同步屏障控制器(global barriercontroller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群105是多核计算装置100的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核计算装置100还可以包括8个、16个、64个、甚至更多的集群105。集群105用以高效地执行深度学习算法。
以集群的层级来看,如图1所示,每个集群105包括多个计算单元(IPU(Intelligence Processing Unit)core)106。计算单元106在图中示例性地展示4个,本披露不限制计算单元106的数量。广播总线108用以完成集群105内各计算单元106间的高速通信,此实施例的广播总线108支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一计算单元至单一计算单元)的数据传输,多播是将一份数据从SRAM(Shared RandomAccess Memory,)107传输到特定几个计算单元106的通信方式,而广播则是将一份数据从SRAM 107传输到所有计算单元106的通信方式,属于多播的一种特例。
图2是本申请实施例中一种芯片的存储结构。如图2所示,芯片从上到下由cluster(集群)内片上存储、L2 cache(二级存储)以及memory device(存储设备,具体是全局动态随机存取存储器(Global Dynamic Random Access Memory,简称GDRAM))组成,其中,cluster内的片上存储可以包括一个共享存储器(SRAM)和四个计算单元内部的存储单元,每个计算单元内部包括WRAM(Weight RAM,权值存储单元)和NRAM(Neuron RAM,神经元存储单元)。
其中,芯片的计算资源包括计算单元及其组成的集群,多个计算单元可以完成并行运算。芯片的存储资源可以包括片上存储,具体可以分为计算单元的存储空间(即上述的WRAM和NRAM)和集群存储空间(即上述的SRAM)。芯片的数据传输资源可以包括存储资源上数据的传输能力。
在具体实现时,用于实现矩阵乘运算的程序代码可以封装为一个计算核(kernel),该计算核可以通过芯片的驱动程序加载至芯片上,从而使得上述芯片利用其上的计算资源实现矩阵乘运算。此时,芯片的计算资源、存储资源以及数据传输资源等就成为影响计算核运算性能的重要因素,具体可参见后文的描述。
图3是本申请实施例中一种矩阵乘运算的性能确定方法的流程图。该一种矩阵乘运算的性能确定方法可应用在包含矩阵乘运算的场景中,例如在进行图像识别、语音处理等场景中对矩阵乘数据进行计算时,用于辅助挑选出最优计算核。如图3所示,该矩阵乘运算的性能确定方法包括如下步骤:
S10:获取测试芯片上进行矩阵乘运算的硬件资源。
其中,测试芯片是指用于测试矩阵乘运算处理耗时所采用的芯片,不同测试芯片上的硬件资源可以相同也可以不相同。其中,芯片上的硬件资源可以包括计算资源、存储资源以及数据传输资源等等。此外,一块测试芯片上可运行多种用于处理矩阵乘运算的计算核,在面对不同需要进行处理的矩阵乘数据时,采用合适的计算核能够极大地提高矩阵乘数据处理的效率。
在一实施例中,本申请需要考虑涉及到矩阵乘运算的至少一个因素。经发现,硬件资源对矩阵乘运算的处理有较大的影响。当在不同的硬件资源条件下,采用同样的计算核对矩阵乘数据进行处理时,也会出现性能差异的情况。测试芯片上应用在矩阵乘运算的硬件资源是决定矩阵乘运算性能的重要因素,其中,测试芯片可以有多种,具体可以是采用具有不同硬件资源的多种型号的芯片。本申请中在测试矩阵乘运算的性能时,将首先确定、区别不同测试芯片上进行矩阵乘运算的硬件资源,以在选取计算核进行矩阵乘运算时,能够综合考虑芯片上硬件资源对矩阵乘运算的影响,将硬件资源作为重点关注对象将提高计算核选取的准确性。
S20:获取测试矩阵。
在矩阵乘运算处理时,不同矩阵所适用的计算核是有差异的,矩阵本身也是决定矩阵乘运算性能的重要因素。可以理解地,在进行如卷积运算时,经常会处理到不同矩阵规模、不同矩阵数据类型的矩阵,矩阵本身多种多样,对于不同的矩阵,采用其适用的计算核能够明显提高矩阵乘运算的处理效率。
在实际情况中,矩阵乘数据具体处理的矩阵是不确定的,任何矩阵都是有可能出现在实际矩阵乘数据的场景中。在一实施例中,本申请应对实际场景中可能出现的不同矩阵的情况,可预先准备尽可能多的不同的矩阵作为测试矩阵,其中,测试矩阵中包括的矩阵之间差异越大越好,以尽可能地囊括在实际矩阵乘运算中可能出现的矩阵,以更精确地对影响矩阵乘运算的因素进行划分,提高计算和选取的准确性。
S30:将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核。
在一实施例中,矩阵乘运算的性能具体可以采用处理耗时来体现,其中,该处理耗时是指一计算核在对矩阵乘数据进行一矩阵乘运算所需消耗的时长。为了深度了解硬件资源、矩阵对矩阵乘运算的影响,本申请中将大量的、不同的测试矩阵加载到不同的测试芯片上进行运行,以实现矩阵乘运算,以尽可能多地得到在不同测试条件下计算核处理矩阵乘数据的表现,以根据该计算核处理矩阵乘数据的表现分析硬件资源、矩阵是如何影响计算核处理效率的,其中,每一个计算核在一个测试芯片上运行时的处理耗时为一个测试处理耗时。
可以理解地,每一个得到的测试处理耗时可作为一个测试样本,该测试样本包括测试时具体的硬件资源、测试矩阵、选定的计算核以及得到的测试处理耗时。将所有的这些测试样本汇总可得到测试样本集,该测试样本集蕴含有硬件资源、矩阵对计算核的矩阵乘处理效率的深层特征,根据该深层特征可确定硬件资源、矩阵对计算核的矩阵乘处理效率所造成的影响,从而在实际进行矩阵乘运算时,选择出矩阵乘处理效率最高的计算核。
S40:根据硬件资源和测试矩阵确定矩阵乘运算的特征向量。
在一实施例中,将测试样本集中蕴含的硬件资源(包括计算资源、存储资源和数据传输资源)、测试矩阵(如测试矩阵的行数、列数、数据类型等属性)对计算核的矩阵乘处理效率的深层特征,采用特征向量的方式进行量化表示,以支持通过数据处理及运算,将深层特征对矩阵乘处理效率的影响能够以数据的方式表现出来。可以理解地,该特征向量实际上体现的是影响矩阵乘运算的因素,本申请中从硬件资源和测试矩阵中将这些影响矩阵乘运算的因素归纳为特征向量的方式,通过特征向量表现出不同因素对矩阵乘运算效率的影响。
如图1和图2所示,硬件资源具体可包括存储资源、计算资源和数据传输资源。这些不同类型的硬件资源对矩阵乘运算的影响是不同的,其影响的程度也会有所差别,测试矩阵具体可以分为矩阵规模和矩阵数据类型,其中,矩阵规模可以是矩阵的M、N、K维度等,矩阵数据可以是矩阵中数据具体的数据类型,不同的矩阵规模和矩阵数据类型都会不同程度地影响不同计算核的矩阵乘运算的处理效率。
传统使用通用计算核进行矩阵乘运算的方式,虽然通用计算核可适用于任意的矩阵乘数据处理,但是其效率一般。特殊计算核针对特殊的矩阵规模以及特殊的矩阵数据类型时,其效率相比一般计算核要高出许多,但是用户无法提前知晓这些特殊计算核所适用的所有矩阵,若特殊计算核用错,则其效率可能还不如通用计算核。本申请中,将上述影响运算的硬件资源和测试矩阵的自身属性等因素融入特征向量中,在模型训练阶段能够更好地学习到不同的硬件资源、不同的矩阵影响计算核的矩阵乘处理效率的深层特征,以使得训练得到的矩阵乘运算性能模型的模型输出的准确率更高。
在一个实施例中,硬件资源的计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量,以及芯片算力。其中,并行任务数量是指芯片中可支持并行运行的任务数量。可用集群数量是指可直接调用且使用的集群的数量。芯片算力是指芯片本身的数据处理能力。
在一实施例中,芯片上数据传输的能力也会对矩阵乘运算的效率造成不同程度的影响,其中,数据传输资源包括:数据的传输带宽、传输时延和读写带宽(反映的是数据读取和数据写入的能力)。进一步地,传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽。其中,片上间数据传输带宽是指计算单元的数据传输能力,片外到片上数据传输带宽是指进入到计算单元前的硬件资源的数据传输能力。本申请实施例中,由于数据的传输带宽、传输时延和读写带宽所造成的影响有所区别,进一步细分可更精确地确定对矩阵乘运算的影响。
在一个实施例中,芯片的存储资源可以包括片上存储,具体可以分为计算单元的存储空间(即上述的WRAM和NRAM)和集群存储空间(即上述的SRAM)。本申请实施例中,由于芯片的片上存储资源所造成的影响有所区别,进一步细分可更精确地确定对矩阵乘运算的影响。
上述的矩阵乘运算所使用的芯片的硬件资源以及测试矩阵本身对矩阵乘运算有较大的影响,是由矩阵乘运算在芯片上的运算过程决定的。下面集合矩阵乘运算在芯片上的运算过程进行说明。在一个实施例中,该矩阵乘运算的过程包括:
S611:根据矩阵乘运算时数据的数据类型,将测试矩阵划分为多个块组数据。
可选地,计算单元上的存储空间相对较小,不一定能够容纳整个待处理矩阵,对此,可根据矩阵乘运算时数据的数据类型将测试矩阵划分为多个块组数据。
S612:将块组数据分发到各个计算单元进行矩阵乘运算。
进一步地,在步骤S612中,即在将块组数据分发到各个计算单元进行矩阵乘运算的步骤中,具体包括:
S6121:根据任务类型数量、可用集群的存储空间数量和可用集群上包括的计算单元数量确定分发策略。
S6122:根据分发策略将块组数据采用流水的形式输入到计算单元进行矩阵乘运算。
在一实施例中,具体分发过程,需要考虑任务类型数量、可用集群的存储空间数量和可用集群上包括的计算单元数量,这些因素决定了分发策略,然后将块组数据以流水的形式输入计算单元进行计算,以得到计算单元对应的处理耗时。
在一实施例中,待处理矩阵一开始存储在片外存储空间(如图2中的memorydevice)上,在芯片执行矩阵乘运算时,需要将其搬运的到计算单元(即图2中的IPU core)上进行计算。由于计算单元上空间WRAM和NRAM存储空间相对较小,大多数时候无法容纳整个矩阵,因此,需要根据特性向量中的片上空间nram_size、wram_size、sram_size,以及计算时所用数据类型compute_dtype,将矩阵划分成对应的块组数据,将所有这些块组分发到各个计算单元上进行计算。
基于上述说明,下面举例说明该矩阵乘运算的特征向量。以公式D=alpha*op(A)*op(B)+beta*C表示的矩阵乘运算为例,该矩阵乘运算的特征向量可以是包括如下参数中的一种或多种的组合,其中M维度表示op(A)和D的行数,K维度表示op(A)的列数以及op(B)的行数,N维度表示op(B)和D的列数:
1、测试矩阵的规模及数据类型等特性
1)m:op(A)和D的行数;
2)k:op(A)的列数以及op(B)的行数;
3)n:op(B)和D的列数;
4)is_trans_a:标志A矩阵是否转置;
5)is_trans_b:标志B矩阵是否转置;
6)a_dtype:A矩阵数据类型;
7)b_dtype:B矩阵数据类型;
8)d_dtype:D矩阵数据类型;
9)compute_dtype:算法具体计算时的数据类型;
2、芯片的硬件资源
10)nram_size:计算核IPU上存储空间;
11)wram_size:计算核IPU上额外存储空间,一般用于存储权值;
12)sram_size:cluster上存储空间;
13)job_limit:job数限制;
14)num_union:可用cluster数;
15)num_core:每个cluster上计算核数;
16)GDRAM latency:片外到片上数据传输时延;
17)GDRAM带宽:片外到片上数据传输带宽;
18)L2 cache read带宽:二级缓存读带宽;
19)L2 cache write带宽:二级缓存写带宽;
20)当前类型芯片算力:当前类型芯片每秒计算次数;
21)sram to wram带宽:计算核公用RAM与wram传输带宽;
22)sram to nram带宽:计算核公用RAM与nram传输带宽。
S50:根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获得矩阵乘运算性能模型,以根据矩阵乘运算性能模型确定计算核的矩阵乘运算的性能。
在一实施例中,可通过模型训练的方式获得矩阵乘运算性能模型。该矩阵乘运算性能模型用于挑选出矩阵乘处理效率最优的计算核,以在处理不同矩阵乘数据时,总能采用最优的计算核进行矩阵乘运算,有效提升芯片的矩阵乘运算处理性能。需要说明的是,获得该矩阵乘运算性能模型所采用的模型并不进行限定,本申请中,具体进行训练的初始网络模型可采用弹性网络模型(ElasticNet),以通过对该弹性网络模型训练建立回归模型,获得矩阵乘运算性能模型。其中,该初始网络模型为人工神经网络模型,该初始网络模型可以包括权重和神经元。进一步地,该初始网络模型为非稀疏的人工神经网络模型。
可选地,本申请可以将测试处理耗时作为初始网络模型的输出值,将特征向量作为初始网络模型的输入值,通过回归计算得到初始网络模型更新后的权重,获得矩阵乘运算性能模型。
具体地,本申请可以将上述步骤获得特征向量集合作为输入向量集合,将上述步骤获得的测试处理耗时集合作为输出集合,这样,本申请可以将输出集合中的每一个测试处理耗时作为初始网络模型的输出值,将输入向量集合中每一个特征向量作为初始网络模型的输入值,对初始网络模型进行训练。其中,训练初始网络模型的过程中不断的对网络模型的权重进行更新,最终获得上述矩阵乘运算性能模型。
应当清楚的是,上述训练过程即为人工神经网络的训练过程,其可以包括正向运算和反向运算两个过程。在正向运算过程中,将输入向量集合中的特征向量输入到初始网络模型中进行运算,得到一个处理耗时结果。进而可以将该处理耗时结果与输出集合中的测试处理耗时进行比较计算获得损失结果,之后根据该损失结果和初始网络模型执行反向运算,在反向运算的过程中更新初始网络模型的权重。如此循环往复,直至损失结果满足预设需求。
当该弹性网络的权重确定以后,也即完成了模型训练,得到矩阵乘运算性能模型。该训练后的矩阵乘运算性能模型能够将各种影响矩阵乘运算的因素通过特性向量具象、量化且准确地表现出来,使得使用该训练得到的矩阵乘运算性能模型选取计算核的准确度更高。
本申请中的测试样本集中蕴含有硬件资源、矩阵对计算核的矩阵乘处理效率的深层特征,能够较好地将该深层特征训练并体现出来,当训练模型通过训练学习了这些深层特征,便能较好地理解不同的硬件资源、不同的矩阵对计算核的矩阵乘处理效率的影响,从而在将待处理矩阵乘数据输入到矩阵乘运算性能模型,能够根据不同的硬件资源、不同的矩阵对计算核的矩阵乘处理效率的影响,输出最优的计算核。
步骤S10-S50中,首先获取测试芯片上进行矩阵乘运算的硬件资源和测试矩阵,以从硬件资源的角度以及矩阵本身特性的角度出发综合考虑影响矩阵乘运算性能的影响因素;之后,将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核,以从数据层面反映出影响矩阵乘运算性能的影响因素在不同测试场景下对矩阵乘运算的影响程度;然后,根据硬件资源和测试矩阵确定矩阵乘运算的特征向量,以将这些影响矩阵乘运算性能的影响因素进行数据化转变,从抽象概念转变为具象对象,从而客观地确定矩阵乘运算性能;最后,根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获得矩阵乘运算性能模型,以根据矩阵乘运算性能模型确定计算核的矩阵乘运算的性能,该矩阵乘运算性能模型学习了特征向量之间深层的特征关系,能够在输入不同待处理矩阵乘数据和硬件资源的情况下选择计算效率最优的计算核对待处理矩阵乘数据进行矩阵乘运算。
本申请还提供一种矩阵乘计算核选取方法。该矩阵乘计算核选取方法具体可在采用矩阵乘运算的性能确定方法得到矩阵乘运算性能模型后,利用该矩阵乘运算性能模型实现计算核选取。图4是本申请实施例中一种矩阵乘计算核选取方法的流程图。如图4所示,该矩阵乘计算核选取方法具体包括:
S60:获取待处理矩阵乘数据和当前硬件资源。
其中,待处理矩阵乘数据是指待进行矩阵乘运算的矩阵数据,如第一矩阵和第二矩阵,第一矩阵和第二矩阵分别作为乘数和被乘数。
当前硬件资源是指用于执行该矩阵乘运算的芯片硬件层面的资源,该硬件资源可以包括计算资源、存储资源和数据传输资源。具体可参见上文的描述。
在一实施例中,在进行矩阵乘计算核选取时,首先需要确定待处理矩阵乘数据和当前硬件资源。该两个因素将对计算核选取造成决定性的影响,需要准确地获取该两个因素的信息。
S70:根据待处理矩阵乘数据和当前硬件资源确定当前特征向量。
在一实施例中,待处理矩阵乘数据在进行矩阵乘运算时,其矩阵规模和矩阵数据类型是确定的。在实际选取计算核时,进行矩阵乘运算时的当前硬件资源也是确定的,本申请实施例可以根据该待处理矩阵乘数据和当前硬件资源确定影响矩阵乘运算的各个因素,这些因素以当前特征向量的方式表现出来。
S80:将当前特征向量输入到矩阵乘运算性能模型中,获取得每一计算核的矩阵乘运算的处理耗时。
在一实施例中,将已确定的当前特征向量输入到矩阵乘运算性能模型中,矩阵乘运算性能模型将根据已确定的当前特征向量进行运算,得到每一计算核的矩阵乘运算的处理耗时。
可以理解地,矩阵乘运算性能模型在训练过程中学习了矩阵乘数据和硬件资源对矩阵乘运算的深层特征关系,并通过矩阵乘运算性能模型的对输入数据的运算逻辑的处理呈现出来,最终,综合待处理矩阵乘数据和当前硬件资源对矩阵乘运算各方面的影响,通过输入当前特征向量的方式,输出每一个计算核在该当前硬件资源环境下处理该待处理矩阵乘数据所需的处理耗时。
S90:选取矩阵乘运算的处理耗时最少的计算核作为目标计算核。
在一实施例中,矩阵乘运算的处理耗时越少说明对应进行处理的计算核在该硬件资源环境下处理该待处理矩阵乘数据时的效果最佳,则将该矩阵乘运算的处理耗时最少的计算核作为目标计算核,以在实际进行矩阵乘运算时采用该目标计算核作为矩阵乘运算处理的计算核。
在步骤S60-S90中,在选取计算核时利用上述实施例方法得到的矩阵乘运算性能模型,计算得到每一计算核的矩阵乘运算的处理耗时,该处理耗时反映了各计算核在面对待处理矩阵乘数据和当前硬件资源时的处理性能,能够帮助用户在各种不同的实际场景中选取出矩阵乘运算效率最高的计算核。同时本申请中,在选取计算核时,将会把不同的矩阵规模、矩阵数据类型对矩阵乘处理的性能影响都考虑进去,所选取的计算核在矩阵乘处理上,会借鉴测试矩阵的矩阵规模和矩阵数据类型,以使得在处理不同的数据规模和矩阵数据类型的矩阵乘数据时,能够选取出处理效率最优的计算核。
进一步地,在步骤S80中,将当前特征向量输入到矩阵乘运算性能模型中,获得每一计算核的矩阵乘运算的处理耗时,具体包括如下步骤:
将当前特征向量输入到矩阵乘运算性能模型进行前向推理计算获得每一计算核的矩阵乘运算的处理耗时。
在一实施例中,当前特征向量在输入到矩阵乘运算性能模型后,该矩阵乘运算模型可以通过特征向量推理出每一计算核的矩阵乘运算的处理耗时,该推理过程为前向推理计算,其实现的过程为利用当前特征向量及这些当前特征向量的权重计算的过程,例如上述前向推理运算的过程为:将当前特征向量中的元素与阵乘运算性能模型的权重进行运算(如乘加运算),得到每一计算核的矩阵乘运算的处理耗时。
在一个实施例中,上述的举证乘运算性能模型是通过模型训练获得。在步骤S60获取待处理矩阵乘数据之前,方法还包括:
根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型。
具体地,矩阵乘运算的特征向量、测试处理耗时的计算方式可参见上文的描述,以及该矩阵乘运算性能模型的训练过程具体可参见上文图3所示实施例的描述,此处不再赘述。
进一步地,在步骤S60获取待处理矩阵乘数据之前,方法还包括:
S621:检测计算核是否支持在当前硬件资源下进行矩阵乘运算,或者,计算核是否支持对待处理矩阵进行矩阵乘运算。
在一实施例中,部分矩阵乘数据在处理时,需要满足特定的硬件资源条件下才可进行处理,因此在对待处理矩阵进行处理之前,可先检测当前硬件资源是否支持对待处理矩阵乘数据进行数据处理,此外,还需确认计算核本身是否支持对待处理矩阵进行矩阵乘运算,这样可快速去除掉部分计算核,加快计算核的选取。
S622:若计算核不支持在当前硬件资源下进行矩阵乘运算,或者,计算核不支持对待处理矩阵进行矩阵乘运算,将不支持进行矩阵乘运算的计算核除外。
在一实施例中,计算核的选取在通过矩阵乘运算性能模型输出每一计算核的矩阵乘运算的处理耗时之前,可先判断当前硬件资源能不能支持做计算核对应的矩阵乘运算,以及计算核本身是否支持对待处理矩阵进行矩阵乘运算,则当该两条件有一不成立时,可提前筛选计算核。这样,矩阵乘运算性能模型输出的每一计算核的矩阵乘运算的处理耗时也不会出现处理耗时短,却无法进行矩阵乘运算处理的情况,可让矩阵乘运算性能模型输出的结果更加准确。
具体地,当前特征向量可以是根据硬件资源的存储资源、计算资源和数据传输资源,以及根据测试矩阵的矩阵规模和矩阵数据类型确定的。
如上,硬件资源具体可分为存储资源、计算资源和数据传输资源,这些不同类型的硬件资源对矩阵乘运算的影响是不同的,其影响的程度也会有所差别。测试矩阵具体可以分为矩阵规模和矩阵数据类型,其中,矩阵规模可以是矩阵的M、N、K维度等,矩阵数据可以是矩阵中数据具体的数据类型,不同的矩阵规模和矩阵数据类型都会不同程度地影响不同计算核的矩阵乘运算的处理效率。本申请中,在选取计算核时,将会把不同的矩阵规模、矩阵数据类型对矩阵乘处理的性能影响都考虑进去,所选取的计算核在矩阵乘处理上,会借鉴测试矩阵的矩阵规模和矩阵数据类型,以使得在处理不同的数据规模和矩阵数据类型的矩阵乘数据时,能够选取出处理效率最优的计算核。
进一步地,计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量,以及芯片算力。其中,并行任务数量是指芯片中可支持并行运行的任务数量。可用集群数量是指可直接调用且使用的集群的数量。芯片算力是指芯片本身的数据处理能力。
芯片上数据传输的能力也会对矩阵乘运算的效率造成不同程度的影响,其中,数据传输资源包括:数据的传输带宽、传输时延和读写带宽。传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽。其中,片上间数据传输带宽是指计算单元的数据传输能力,片外到片上数据传输带宽是指进入到计算单元前的硬件资源的数据传输能力。芯片的存储资源可以包括片上存储,具体可以分为计算单元的存储空间(即上述的WRAM和NRAM)和集群存储空间(即上述的SRAM)。
基于上述考虑,为了预估矩阵乘运算的实际运行时间,可采用以下影响因素作为矩阵乘运算的初始特征向量。下面举例说明该矩阵乘运算的特征向量。以公式D=alpha*op(A)*op(B)+beta*C表示的矩阵乘运算为例,该矩阵乘运算的当前特征向量可以是包括如下参数中的一种或多种的组合,其中M维度表示op(A)和D的行数,K维度表示op(A)的列数以及op(B)的行数,N维度表示op(B)和D的列数:
1、测试矩阵的规模及数据类型等特性
1)m:op(A)和D的行数;
2)k:op(A)的列数以及op(B)的行数;
3)n:op(B)和D的列数;
4)is_trans_a:标志A矩阵是否转置;
5)is_trans_b:标志B矩阵是否转置;
6)a_dtype:A矩阵数据类型;
7)b_dtype:B矩阵数据类型;
8)d_dtype:D矩阵数据类型;
9)compute_dtype:算法具体计算时的数据类型;
2、芯片的硬件资源
10)nram_size:计算核IPU上存储空间;
11)wram_size:计算核IPU上额外存储空间,一般用于存储权值;
12)sram_size:cluster上存储空间;
13)job_limit:job数限制;
14)num_union:可用cluster数;
15)num_core:每个cluster上计算核数;
16)GDRAM latency:片外到片上数据传输时延;
17)GDRAM带宽:片外到片上数据传输带宽;
18)L2 cache read带宽:二级缓存读带宽;
19)L2 cache write带宽:二级缓存写带宽;
20)当前类型芯片算力:当前类型芯片每秒计算次数;
21)sram to wram带宽:计算核公用RAM与wram传输带宽;
22)sram to nram带宽:计算核公用RAM与nram传输带宽。
可以看到,以上列举的特征向量细致划分了可能造成矩阵乘运算的影响因素,这些影响因素属于硬件资源和矩阵本身特性两大类,对两者进行的进一步划分能够更加精确地对影响因素进行细分,能够有效提高模型选取计算核的准确度。该当前特征向量的确定方式与上文中的特征向量的确定方式一致,具体可参见上文的描述。
进一步地,在步骤S10之前,即在获取测试芯片上进行矩阵乘运算的硬件资源之前,该方法还包括如下步骤:
S11:确定芯片上的可用硬件资源。
在一实施例中,芯片上的硬件资源是有多种的,其中,芯片可直接调用且使用的硬件资源称为可用硬件资源。这些可用硬件资源是潜在的能影响矩阵乘处理的资源,例如,矩阵乘数据在处理时受到数据传输带宽、芯片算力、传输时延等与硬件资源相关的因素的影响。
S12:确定芯片上进行矩阵乘运算的数据传输路线。
其中,数据传输路线是指矩阵乘数据运算时在芯片上数据所经过的路径。例如片外到片上数据传输带宽和片上间数据传输带宽在进行数据传输时对应有所需经过的路径。
在一实施例中,矩阵乘运算时,其实际的数据传输路线将影响到矩阵乘处理的性能。例如,一些数据传输路线跳过了硬件资源中一些可用的存储资源,则矩阵乘处理时无需考虑这些跳过的数据传输路线对应的硬件资源的影响,在矩阵乘处理时应去除这些确定的无关因素。
S13:根据数据传输路线从可用硬件资源中确定硬件资源。
在一实施例中,当确定数据传输路线后,即可确定矩阵乘数据处理过程中需要涉及的具体数据传输路线,从而能够更精确地得到在硬件层面上对矩阵乘处理的影响因素。这样在模型训练阶段中,一些训练样本可以提前去除掉已确定的无关因素,从而进一步地提高矩阵乘运算性能模型的计算核选取准确度。
步骤S11-S13中,利用数据传输路线提前考虑硬件层面中可能对矩阵乘处理的影响,能够提前在矩阵乘处理时应去除无关因素,精细化确定硬件层面上矩阵乘处理的影响因素,从而进一步地提高矩阵乘运算性能模型的计算核选取准确度。
在本申请实施例中,通过待处理矩阵乘数据和当前硬件资源确定当前特征向量,将当前特征向量输入到矩阵乘运算性能模型中获得每一计算核的矩阵乘运算的处理耗时,并选取矩阵乘运算的处理耗时最少的计算核作为目标计算核,其中,矩阵乘运算性能模型在训练过程中,首先获取测试芯片上进行矩阵乘运算的硬件资源和测试矩阵,以从硬件资源的角度以及矩阵本身特性的角度出发综合考虑影响矩阵乘运算性能的影响因素;之后,将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核,以从数据层面反映出影响矩阵乘运算性能的影响因素在不同测试场景下对矩阵乘运算的影响程度;然后,根据硬件资源和测试矩阵确定矩阵乘运算的特征向量,以将这些影响矩阵乘运算性能的影响因素进行数据化转变,从抽象概念转变为具象对象,从而客观地确定矩阵乘运算性能;最后,根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获取矩阵乘运算性能模型,以根据矩阵乘运算性能模型确定计算核的矩阵乘运算的性能,该矩阵乘运算性能模型学习了特征向量之间深层的特征关系,能够在输入不同待处理矩阵乘数据和硬件资源的情况下选择计算效率最优的计算核对待处理矩阵乘数据进行矩阵乘运算。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图5是本申请实施例中一种与矩阵乘运算的性能确定方法一一对应的装置的原理框图。如图5所示,该矩阵乘运算的性能确定装置包括第一获取模块10、第二获取模块20、数据输入模块30、特征向量确定模块40和模型训练模块50。
第一获取模块10,用于获取测试芯片上进行矩阵乘运算的硬件资源;
第二获取模块20,用于获取测试矩阵;
数据输入模块30,用于将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核;
特征向量确定模块40,用于根据硬件资源和测试矩阵确定矩阵乘运算的特征向量;
模型训练模块50,用于根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获得矩阵乘运算性能模型,以根据矩阵乘运算性能模型确定计算核的矩阵乘运算的性能。
图6是本申请实施例中一种与矩阵乘计算核选取方法一一对应的装置的原理框图。如图6所示,该矩阵乘计算核选取装置包括第三获取模块60、第四获取模块70、输入模块80和选取模块90。
第三获取模块60,用于获取待处理矩阵乘数据和当前硬件资源。
第四获取模块70,用于根据待处理矩阵乘数据和当前硬件资源确定当前特征向量。
输入模块80,用于将当前特征向量输入到矩阵乘运算性能模型中,获得每一计算核的矩阵乘运算的处理耗时。
选取模块90,用于选取矩阵乘运算的处理耗时最少的计算核作为目标计算核。
进一步地,输入模块80还具体用于:
使用当前硬件资源,将当前特征向量输入到矩阵乘运算性能模型进行前向推理计算,获得每一计算核的矩阵乘运算的处理耗时。
进一步地,矩阵乘计算核选取装置还具体用于:
根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获得矩阵乘运算性能模型。
进一步地,矩阵乘计算核选取装置还具体用于:
获取测试芯片上进行矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核;
根据硬件资源和测试矩阵确定矩阵乘运算的特征向量。
进一步地,矩阵乘计算核选取装置还具体用于:
根据硬件资源的存储资源、计算资源和数据传输资源,以及测试矩阵的矩阵规模和矩阵数据类型确定矩阵乘运算的特征向量。
进一步地,计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量以及芯片算力;数据传输资源包括:数据的传输带宽、传输时延和读写带宽,其中,传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽;存储资源包括:计算单元的存储空间和集群存储空间。
进一步地,矩阵乘计算核选取装置还具体用于:
将测试处理耗时作为初始网络模型的输出值,将特征向量作为初始网络模型的输入值,通过回归计算得到所述初始网络模型更新后的权重,获得矩阵乘运算性能模型。
进一步地,矩阵乘计算核选取装置还具体用于:确定芯片上的可用硬件资源;
确定芯片上进行矩阵乘运算的数据传输路线;
根据数据传输路线从可用硬件资源中确定硬件资源。
进一步地,矩阵乘计算核选取装置还具体用于:
在获取待处理矩阵乘数据之前,方法还包括:
检测计算核是否支持在当前硬件资源下进行矩阵乘运算,或者,计算核是否支持对待处理矩阵进行矩阵乘运算;
若计算核不支持在当前硬件资源下进行矩阵乘运算,或者,计算核不支持对待处理矩阵进行矩阵乘运算,将不支持进行矩阵乘运算的计算核除外。
在本申请实施例中,通过待处理矩阵乘数据和当前硬件资源确定当前特征向量,将当前特征向量输入到矩阵乘运算性能模型中获得每一计算核的矩阵乘运算的处理耗时,并选取矩阵乘运算的处理耗时最少的计算核作为目标计算核,其中,该矩阵乘运算性能模型在训练过程中,首先获取测试芯片上进行矩阵乘运算的硬件资源和测试矩阵,以从硬件资源的角度以及矩阵本身特性的角度出发综合考虑影响矩阵乘运算性能的影响因素;之后,将不同的测试矩阵输入到不同的测试芯片上进行矩阵乘运算,得到测试处理耗时,其中,每一测试处理耗时对应一矩阵乘运算时选定的计算核,以从数据层面反映出影响矩阵乘运算性能的影响因素在不同测试场景下对矩阵乘运算的影响程度;然后,根据硬件资源和测试矩阵确定矩阵乘运算的特征向量,以将这些影响矩阵乘运算性能的影响因素进行数据化转变,从抽象概念转变为具象对象,从而客观地确定矩阵乘运算性能;最后,根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的计算核训练初始网络模型,获取矩阵乘运算性能模型,以根据矩阵乘运算性能模型确定计算核的矩阵乘运算的性能,该矩阵乘运算性能模型学习了特征向量之间深层的特征关系,能够在输入不同待处理矩阵乘数据和硬件资源的情况下选择计算效率最优的计算核对待处理矩阵乘数据进行矩阵乘运算。
图7是本申请实施例的计算机设备。如图7所示,计算机设备110包括处理器111、存储器112以及存储在存储器112中并可在处理器111上运行的计算机可读指令113。处理器111执行计算机可读指令113时实现矩阵乘运算的性能确定方法或者芯片上计算核选取方法的各个步骤。
示例性地,计算机可读指令113可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器112中,并由处理器111执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述计算机可读指令113在计算机设备110中的执行过程。
计算机设备110可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,处理器111、存储器112。本领域技术人员可以理解,图7仅仅是计算机设备110的示例,并不构成对计算机设备110的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。
根据实现方式的不同,所称处理器111可以包括中央处理器(Central ProcessingUnit,CPU)、图形处理器(Graphics Processing Unit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。存储器112可以是计算机设备110的内部存储单元,例如计算机设备110的硬盘或内存。存储器112也可以是计算机设备110的外部存储设备,例如计算机设备110上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器112还可以既包括计算机设备110的内部存储单元也包括外部存储设备。存储器112用于存储计算机可读指令以及计算机设备所需的其他程序和数据。存储器112还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请实施例中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可读指令,计算机可读指令被执行时上述矩阵乘运算的性能确定方法或者实施例芯片上计算核选取方法的各个步骤。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (12)
1.一种矩阵乘计算核选取方法,其特征在于,包括:
获取待处理矩阵乘数据和当前硬件资源;
根据所述待处理矩阵乘数据和所述当前硬件资源确定当前特征向量;
将所述当前特征向量输入到矩阵乘运算性能模型中,获得每一所述计算核的矩阵乘运算的处理耗时;
选取所述矩阵乘运算的处理耗时最少的所述计算核作为目标计算核。
2.根据权利要求1所述的方法,其特征在于,所述将所述当前特征向量输入到矩阵乘运算性能模型中,获得每一所述计算核的矩阵乘运算的处理耗时,包括:
使用所述当前硬件资源,将所述当前特征向量输入到所述矩阵乘运算性能模型进行前向推理计算,获得每一所述计算核的所述矩阵乘运算的处理耗时。
3.根据权利要求1所述的方法,其特征在于,在所述获取待处理矩阵乘数据和当前硬件资源之前,所述方法还包括:
根据矩阵乘运算的特征向量、测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取测试芯片上进行所述矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到所述测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的所述计算核;
根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的所述特征向量。
5.根据权利要求4所述的方法,其特征在于,所述根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量,包括:
根据所述硬件资源的存储资源、计算资源和数据传输资源,以及所述测试矩阵的矩阵规模和矩阵数据类型确定所述矩阵乘运算的所述特征向量。
6.根据权利要求5所述的方法,其特征在于,所述计算资源包括:并行任务数量、可用集群数量、芯片的每个集群的计算单元数量以及芯片算力;所述数据传输资源包括:数据的传输带宽、传输时延和读写带宽,其中,所述传输带宽包括片外到片上数据传输带宽和片上间数据传输带宽;所述存储资源包括:所述计算单元的存储空间和集群存储空间。
7.根据权利要求3所述的方法,其特征在于,所述根据矩阵乘运算的特征向量、测试处理耗时和矩阵乘运算时选定的所述计算核训练初始网络模型,获得所述矩阵乘运算性能模型,包括:
将所述测试处理耗时作为所述初始网络模型的输出值,将所述特征向量作为所述初始网络模型的输入值,通过回归计算得到所述初始网络模型更新后的权重,获得所述矩阵乘运算性能模型。
8.根据权利要求3所述的方法,其特征在于,在所述根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量之前,所述方法还包括:
确定芯片上的可用硬件资源;
确定所述芯片上进行所述矩阵乘运算的数据传输路线;
根据所述数据传输路线从所述可用硬件资源中确定所述硬件资源。
9.根据权利要求1-8任一项所述的方法,其特征在于,在所述获取待处理矩阵乘数据之前,所述方法还包括:
检测所述计算核是否支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核是否支持对所述待处理矩阵进行所述矩阵乘运算;
若所述计算核不支持在所述当前硬件资源下进行所述矩阵乘运算,或者,所述计算核不支持对所述待处理矩阵进行所述矩阵乘运算,将不支持进行所述矩阵乘运算的所述计算核除外。
10.一种矩阵乘运算的性能确定方法,其特征在于,所述方法包括:
获取测试芯片上进行所述矩阵乘运算的硬件资源;
获取测试矩阵;
将不同的所述测试矩阵输入到不同的所述测试芯片上进行所述矩阵乘运算,得到测试处理耗时,其中,每一所述测试处理耗时对应一所述矩阵乘运算时选定的计算核;
根据所述硬件资源和所述测试矩阵确定所述矩阵乘运算的特征向量;
根据所述矩阵乘运算的所述特征向量、所述测试处理耗时和所述矩阵乘运算时选定的所述计算核训练初始网络模型,获得矩阵乘运算性能模型,以根据所述矩阵乘运算性能模型确定所述计算核的所述矩阵乘运算的性能。
11.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时执行如权利要求1-9任一项所述矩阵乘计算核选取方法的步骤,或者,所述处理器执行所述计算机可读指令时执行如权利要求10所述矩阵乘运算的性能确定方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如权利要求1-9任一项所述矩阵乘计算核选取方法的步骤,或者,所述计算机可读指令被处理器执行时实现如权利要求10所述矩阵乘运算的性能确定方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310493077.6A CN116484157A (zh) | 2023-04-28 | 2023-04-28 | 矩阵乘计算核选取方法和矩阵乘运算的确定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310493077.6A CN116484157A (zh) | 2023-04-28 | 2023-04-28 | 矩阵乘计算核选取方法和矩阵乘运算的确定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116484157A true CN116484157A (zh) | 2023-07-25 |
Family
ID=87211730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310493077.6A Pending CN116484157A (zh) | 2023-04-28 | 2023-04-28 | 矩阵乘计算核选取方法和矩阵乘运算的确定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116484157A (zh) |
-
2023
- 2023-04-28 CN CN202310493077.6A patent/CN116484157A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI699712B (zh) | 用於執行神經網路運算之方法及系統及相關非暫時性機器可讀儲存裝置 | |
US9886418B2 (en) | Matrix operands for linear algebra operations | |
JP7078758B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
CN110633153A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN105518625A (zh) | 具有高带宽存储器接口的计算硬件 | |
CN113469355B (zh) | 分布式系统中的多模型训练管道 | |
CN115186821A (zh) | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 | |
CN112085056A (zh) | 目标检测模型生成方法、装置、设备及存储介质 | |
US11119507B2 (en) | Hardware accelerator for online estimation | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
US11308396B2 (en) | Neural network layer-by-layer debugging | |
US20190050514A1 (en) | Fault injection using hybrid simulation model | |
Song et al. | Design and implementation of convolutional neural networks accelerator based on multidie | |
CN116185937B (zh) | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN116484157A (zh) | 矩阵乘计算核选取方法和矩阵乘运算的确定方法 | |
US11494326B1 (en) | Programmable computations in direct memory access engine | |
US11500802B1 (en) | Data replication for accelerator | |
US10997277B1 (en) | Multinomial distribution on an integrated circuit | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
US11868875B1 (en) | Data selection circuit | |
CN117112145B (zh) | 训练模型分配方法、装置、计算机设备和存储介质 | |
EP4206999A1 (en) | Artificial intelligence core, artificial intelligence core system, and loading/storing method of artificial intelligence core system |
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 |