当前位置: 首页 > 专利查询>卡雷公司专利>正文

分块矩阵乘法运算系统技术方案

技术编号:24708359 阅读:28 留言:0更新日期:2020-07-01 00:01
一种分块矩阵乘法运算系统,涉及一种处理器,其包括:N位数据总线,被配置为访问存储器;中央处理单元CPU,被连接到数据总线;协处理器,被耦合到CPU,该协处理器包括具有N位寄存器(V)的寄存器文件;CPU中的指令处理单元,被配置为响应于由CPU接收到的负载分散机器指令,读取对存储器地址的访问,并将对数据总线上呈现的对应的N位字(W)的处理委托给协处理器;和协处理器中的寄存器控制单元,由CPU响应于负载分散指令而被配置为将数据总线上呈现的字(W)划分成K个分段,并将该K个分段写入K个相应寄存器(V0‑V3)中的相同位置,该位置和寄存器由负载分散指令指定。

【技术实现步骤摘要】
分块矩阵乘法运算系统
本专利技术涉及数字矩阵的乘法运算,尤其涉及由专用硬件加速器辅助进行矩阵运算的处理器。
技术介绍
人工智能技术,尤其是深度学习,对于可以具有几百行和几百列的大矩阵的乘法运算(multiplication)要求特别高。因此,出现了专用于混合精度矩阵的乘法运算的硬件加速器。大矩阵的乘法运算通常在块(block)中执行,即通过将矩阵分解成尺寸适合于计算资源的子矩阵。加速器因此被设计成有效地计算这些子矩阵的乘积。例如,NVidia在其Volta图形处理器中提供被称为张量核(tensorcore)的硬件操作符,每个操作符独占处理器的数个图形核的资源,以并行执行子矩阵乘法运算中涉及的许多计算。NVidia还在其集成的Xavier处理器中提供了具有独立于图形核的张量核的NVDLA(“NVidia深度学习加速器”)单元,并且专用于加速神经推理这种加速器被称为“弱耦合”,因为它接收由主处理器(hostprocessor)准备的成批执行的任务,然后独立于主处理器管理任务,包括访问共享存储器以读取矩阵数据。加速器和主处理器因此异步操作,由此主处理器和加速器竞争存储器访问,并且必须定期同步,以便主处理器恢复任务结果并传送新任务。
技术实现思路
通常提供一种用于矩阵相乘的方法,包括以下步骤:a)在共享存储器中以行优先格式存储第一源矩阵,由此矩阵的行的连续元素被存储在连续的存储器地址;b)在共享存储器中以列优先格式存储第二源矩阵,由此矩阵的列的连续元素被存储在连续的存储器地址;c)在通过N位存储器总线从共享存储器到处理器寄存器的单个传输周期中:读取源矩阵中的N位字;将该字的K个连续分段写入K个相应的N位寄存器中的指定位置,K使得N可被K整除;e)对第一源矩阵的K=R个不同行执行步骤c),以便填充R个第一寄存器,由此R个第一寄存器中的每一个包含:在寄存器的R个连续分段中组织的N/R个位的R个行的不同子矩阵;f)对第二源矩阵的K=Q个不同列执行步骤c),以便填充Q个第二寄存器,由此Q个第二寄存器中的每一个包含:在寄存器的Q个连续分段中组织的N/Q个位的Q个列的不同子矩阵;和g)响应于子矩阵乘法机器指令的执行,使用专用硬件操作符并行地执行第一操作数寄存器的每个分段与第二操作数寄存器的每个分段的标量乘积(scalarproduct),该子矩阵乘法机器指令将R个第一寄存器中的一个指定为第一操作数,并且将Q个第二寄存器中的一个指定为第二操作数,操作数寄存器的分段被视为向量。该方法还可以包括以下步骤:在处理器的中央处理单元CPU中接收负载分散机器指令;响应于负载分散指令,将步骤c)委托给耦合到CPU的协处理器,寄存器和分段的位置由负载分散指令指定;在CPU中接收子矩阵乘法指令;和响应于子矩阵乘法指令,将步骤g)委托给协处理器。CPU和协处理器可以根据VLIW架构而耦合,该方法包括同时执行被包含在由CPU接收到的相同指令分组中的负载分散指令和子矩阵乘法指令的步骤,由此负载分散指令准备下一个操作数子矩阵,同时子矩阵乘法指令对当前操作数子矩阵进行操作。硬件操作符可以被配置为将由指令指定的目的地寄存器的相应分段中的每个标量乘积与相应分段的先前内容进行累加,该方法包括以下步骤:执行子矩阵乘法指令R次,同时每次在R个第一寄存器和Q个第二寄存器以及目的地寄存器的相同集合当中指定相同等级(rank)的不同操作数寄存器对。每个源矩阵的元素具有8、16和32位当中的可配置精度。提供一种处理器,包括:N位数据总线,被配置为访问存储器;中央处理单元CPU,被连接到数据总线;协处理器,被耦合到CPU,该协处理器包括具有N位寄存器的寄存器文件;CPU中的指令处理单元,被配置为响应于由CPU接收到的负载分散机器指令,读取对存储器地址的访问,并将对数据总线上呈现的对应的N位字的处理委托给协处理器;和协处理器中的寄存器控制单元,其由CPU响应于负载分散指令而被配置为将数据总线上呈现的字划分成K个分段,并将该K个分段写入K个相应寄存器中的相同位置,该位置和寄存器由负载分散指令指定。协处理器可以包括点乘积(dot-product)硬件操作符的数组,每个操作符被配置为同时执行被包含在两个相应操作数寄存器的两个分段中的两个向量的标量乘积,操作数寄存器中的两个分段的等级由操作符在操作符数组中的位置确定,并且操作数寄存器由CPU接收到的子矩阵乘法机器指令来指定,由此操作数寄存器包含相应的操作数子矩阵,并且操作符数组产生结果子矩阵。操作符可以被配置为在由子矩阵乘法指令指定的目的地寄存器的相应分段中累加标量乘积。每个操作数子矩阵的元素可以具有8、16和32位当中的可配置精度。附图说明关联附图,将在以下非限制性描述中描述实施例,其中:图1是集成强耦合到中央处理单元的协处理器的处理器的框图;图2A至图2D示出了从存储在存储器中的矩阵数据来填充协处理器寄存器的不同步骤;图3是协处理器硬件计算单元的实施例的框图,该协处理器硬件计算单元被设计成响应于单个机器指令而实现两个子矩阵的乘法运算;图4是在图3的计算单元中使用的点乘积操作符的框图;图5是协处理器硬件计算单元的另一实施例的框图,该协处理器硬件计算单元被设计成响应于单个机器指令而实现两个子矩阵的乘法运算;图6是在图5的计算单元中使用的点乘积操作符的框图;图7是可配置点乘积操作符实施例的框图;和图8是协处理器硬件计算单元的实施例的框图,该协处理器硬件计算单元被设计成响应于单个机器指令而实现不同尺寸的子矩阵的乘法运算。具体实施方式在将存储在共享存储器中的矩阵数据馈送到加速器的计算单元而不导致计算单元稀缺或这些单元利用不足的方面,专用于矩阵乘法运算的硬件加速器面临困难。例如,用于在存储器中存储数据的格式可能不适合于计算单元所需的格式,使得可能引入等待时间和数据缓冲器来重组数据。当加速器弱耦合(wealycoupled)并且与指挥加速器任务的主处理器异步操作时,这些困难被加剧。实际上,各自独立操作的主处理器和加速器在访问共享存储器时可能会相互冲突。此外,主处理器和加速器之间的同步机制可能导致其中一个或另一个在等待同步状态出现时停止。当矩阵元素在数个可能性当中具有可配置的精度时,会出现附加的困难。为了减轻这些困难,本文公开了一种处理器架构,将强耦合(strongcoupled)的协处理器与它自己的寄存器文件以及用于在存储器和协处理器寄存器之间传输数据的特殊机制集成在一起。图1是这种处理器架构的框图。它包括强耦合到协处理器12的通用中央处理单元(CPU)10,协处理器12集成专用于矩阵乘积的计算的硬件操作符。通过“强耦合”,可以理解,协处理器服从在CPU中执行并由硬件执行单元14实施的逐周期机器指令(cyclebycyclemachineinstructions)。本文档来自技高网...

【技术保护点】
1.一种用于矩阵相乘的方法,包括以下步骤:/na)在共享存储器中以行优先格式存储第一源矩阵,由此矩阵的行的连续元素被存储在连续的存储器地址;/nb)在共享存储器中以列优先格式存储第二源矩阵,由此矩阵的列的连续元素被存储在连续的存储器地址;/nc)在通过N位存储器总线从共享存储器到处理器寄存器的单个传输周期中:/n读取源矩阵中的N位字;/n将所述字的K个连续分段写入K个相应的N位寄存器中的指定位置,K使得N可被K整除;/ne)对第一源矩阵的K=R个不同行执行步骤c),以便填充R个第一寄存器,由此R个第一寄存器中的每一个寄存器包含:在寄存器的R个连续分段中组织的N/R个位的R个行的不同子矩阵;/nf)对第二源矩阵的K=Q个不同列执行步骤c),以便填充Q个第二寄存器,由此Q个第二寄存器中的每一个寄存器包含:在寄存器的Q个连续分段中组织的N/Q个位的Q个列的不同子矩阵;和/ng)响应于子矩阵乘法机器指令的执行,使用专用硬件操作符并行地执行第一操作数寄存器的每个分段与第二操作数寄存器的每个分段的标量乘积,所述子矩阵乘法机器指令将R个第一寄存器中的一个指定为第一操作数,并且将Q个第二寄存器中的一个指定为第二操作数,操作数寄存器的分段被视为向量。/n...

【技术特征摘要】
20181220 FR 18735941.一种用于矩阵相乘的方法,包括以下步骤:
a)在共享存储器中以行优先格式存储第一源矩阵,由此矩阵的行的连续元素被存储在连续的存储器地址;
b)在共享存储器中以列优先格式存储第二源矩阵,由此矩阵的列的连续元素被存储在连续的存储器地址;
c)在通过N位存储器总线从共享存储器到处理器寄存器的单个传输周期中:
读取源矩阵中的N位字;
将所述字的K个连续分段写入K个相应的N位寄存器中的指定位置,K使得N可被K整除;
e)对第一源矩阵的K=R个不同行执行步骤c),以便填充R个第一寄存器,由此R个第一寄存器中的每一个寄存器包含:在寄存器的R个连续分段中组织的N/R个位的R个行的不同子矩阵;
f)对第二源矩阵的K=Q个不同列执行步骤c),以便填充Q个第二寄存器,由此Q个第二寄存器中的每一个寄存器包含:在寄存器的Q个连续分段中组织的N/Q个位的Q个列的不同子矩阵;和
g)响应于子矩阵乘法机器指令的执行,使用专用硬件操作符并行地执行第一操作数寄存器的每个分段与第二操作数寄存器的每个分段的标量乘积,所述子矩阵乘法机器指令将R个第一寄存器中的一个指定为第一操作数,并且将Q个第二寄存器中的一个指定为第二操作数,操作数寄存器的分段被视为向量。


2.根据权利要求1所述的方法,包括以下步骤:
在处理器的中央处理单元CPU中接收负载分散机器指令;
响应于负载分散指令,将步骤c)委托给耦合到CPU的协处理器,寄存器和分段的位置由负载分散指令指定;
在CPU中接收子矩阵乘法指令;和
响应于子矩阵乘法指令,将步骤g)委托给协处理器。


3.根据权利要求2所述的方法,其中,所述CPU和协处理器根据VLIW架构而耦合,所述方法包括同时执行被包含在由CPU接收到的相同指令分组中的负载分散指令和子矩阵乘法指令的步骤,由此负载分散指令准备下一...

【专利技术属性】
技术研发人员:B杜蓬特德丁奇恩J勒迈尔N布鲁尼
申请(专利权)人:卡雷公司
类型:发明
国别省市:法国;FR

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1