CN116415100A - 业务处理方法、装置、处理器及计算设备 - Google Patents

业务处理方法、装置、处理器及计算设备 Download PDF

Info

Publication number
CN116415100A
CN116415100A CN202111668819.1A CN202111668819A CN116415100A CN 116415100 A CN116415100 A CN 116415100A CN 202111668819 A CN202111668819 A CN 202111668819A CN 116415100 A CN116415100 A CN 116415100A
Authority
CN
China
Prior art keywords
matrix
vector
processor
data
elements
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
Application number
CN202111668819.1A
Other languages
English (en)
Inventor
杨仲凯
林腾毅
谢天元
季晨鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111668819.1A priority Critical patent/CN116415100A/zh
Publication of CN116415100A publication Critical patent/CN116415100A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Abstract

一种业务处理方法、装置、处理器及计算设备,涉及计算机技术领域。该业务处理方法包括:处理器获取业务所需的数据,该数据包括第一矩阵和第二矩阵;处理器依据第一矩阵和第二矩阵,输出业务的目标矩阵;该目标矩阵用于指示前述业务的处理结果,且该目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。由于业务的目标矩阵中包括至少两个有效数据集合,相较于通常技术中目标矩阵仅包括一个有效数据集合,提高了目标矩阵中有效数据的占比和数据存储资源的利用率。另外,在业务执行过程中,减少了处理器对部分无效数据的源数据进行计算的过程,节省了处理器的计算资源,从而提高了处理器执行业务的整体处理效率。

Description

业务处理方法、装置、处理器及计算设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种业务处理方法、装置、处理器及计算设备。
背景技术
矩阵是指由数字组成的矩形阵列,多个矩阵之间的运算可以实现目标矩阵的求解。示例的,目标矩阵中的数据(或称:元素)可以表示多种不同类型的业务数据,如业务数据是指图像渲染场景中图像的像素值,K-means聚类场景中的数据点等。由于矩阵内积所需的计算资源较大,因此,矩阵运算一般采用外积的方式。通常,处理器将矩阵1划分为多个列向量、将矩阵2划分为多个行向量,并对多个列向量和多个行向量的运算结果进行累加后获得目标矩阵。然而,由于矩阵1和矩阵2的规模一般不同,因此,列向量或行向量中存在大量的无效数据,导致目标矩阵中仅存在一个有效数据集合,该有效数据集合包括多个连续排列的有效数据,而目标矩阵中其他数据均为无效数据(冗余数据),无效数据所需的源数据计算过程不仅浪费了处理器提供的计算资源,还占据了处理器中有限的数据缓存资源。因此,如何提供一种高效的业务处理方法成为目前亟待解决的问题。
发明内容
本申请提供一种业务处理方法、装置、处理器及计算设备,解决了业务处理过程中,矩阵运算导致的计算资源和缓存资源的浪费问题。
本申请采用如下技术方案。
第一方面,本申请提供了一种业务处理方法,该业务处理方法由处理器执行,或者支持实现该业务处理方法的物理设备,示例的,该物理设备是一种计算设备,如该计算设备包括芯片系统。该业务处理方法包括:处理器获取业务所需的数据,该数据包括第一矩阵和第二矩阵;处理器依据第一矩阵和第二矩阵,输出业务的目标矩阵;其中,该目标矩阵用于指示前述业务的处理结果,且该目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
由于业务的目标矩阵中包括至少两个有效数据集合,相较于通常技术中目标矩阵仅包括一个有效数据集合,提高了目标矩阵中有效数据的占比,减少了目标矩阵中无效数据所占据的数据存储资源,提高了数据存储资源的利用率。另外,在业务执行过程中,减少了处理器对部分无效数据的源数据进行计算的过程,节省了处理器的计算资源,也提高了处理器执行业务的处理效率。
示例的,业务的处理结果是指业务所需的目标数据。例如,若业务为图像渲染的光栅化着色,目标数据是指画布中每个像素点的像素值。又如,若业务为K-means聚类,目标数据是指多个数据点对应的特征数据(如数据点对应的哈希值等)。又如,若业务为数据校验,目标数据是指复杂数据的运算结果。另外,在一些可选的情形中,本实施例中提供的业务是指神经网络中的卷积操作等,则目标数据是指对多个矩阵进行卷积处理后获得的数据。
在一种可选的实现方式中,第一矩阵为细长矩阵,和/或,第二矩阵为细长矩阵。细长矩阵为行数和列数的差值达到阈值的矩阵。举例来说,细长矩阵的行数和列数的差值达到一定阈值,如阈值是指20、30、100或其他等。示例的,矩阵的行数和列数的差值达到阈值可以理解为以下两种可能的情形。情形1,行数和列数的差值为正数,且该差值大于或等于阈值。情形2,行数和列数的差值为复数,且该差值小于或等于阈值。
在另一种可选的实现方式中,处理器依据第一矩阵和第二矩阵,输出业务的目标矩阵,包括:处理器将第一矩阵和第二矩阵相乘,确定目标矩阵;以及,处理器输出该目标矩阵。在本实施例中,由于业务的目标矩阵中包括至少两个有效数据集合,相较于通常技术中目标矩阵仅包括一个有效数据集合,提高了目标矩阵中有效数据的占比,减少了目标矩阵中无效数据所占据的数据存储资源,提高了处理器传输目标矩阵的网络资源(如带宽)的利用率。
在另一种可选的实现方式中,处理器将第一矩阵和第二矩阵相乘,确定目标矩阵,包括:处理器依据第一矩阵和第二矩阵,确定向量集合。以及,处理器对该向量集合包括的多个向量进行外积处理,获得业务的目标矩阵。其中,前述的向量集合包括第一列向量和第一行向量,第一列向量包括:第一矩阵中第一数量个元素和第二矩阵中第二数量个元素,第一行向量包括:第二矩阵中第二数量个元素和第一矩阵中第一数量个元素。
在通常技术中,第一向量和第二向量所包括的无效虽然为闲置,但在处理器进行矩阵的外积处理时,业务的指令执行不会因为向量中部分计算过程的闲置而变快,这导致了处理器大量算力的浪费。而在本实施例提供的方案中,处理器将向量寄存器中闲置的部分进行有效利用,从而在处理器提供的计算资源一致的情况下,增加了单位时间内业务执行的矩阵计算量,提高了业务的执行效率。
在另一种可选的实现方式中,前述的向量集合包括:列向量集合和行向量集合。示例的,列向量集合包括:一个或多个列向量,一个或多个列向量包含第一列向量;行向量集合包括:一个或多个行向量,一个或多个行向量包含第一行向量。值得注意的是,当向量集合包括多个行向量和多个列向量时,目标矩阵中的有效数据是由多个向量的外积结果进行累加获得的。
在另一种可选的实现方式中,第一列向量包括的第一矩阵中第一数量个元素和第一行向量包括的第一矩阵中第一数量个元素不同,第一列向量包括的第二矩阵中第二数量个元素和第一行向量包括的第二矩阵中第二数量个元素相同。例如,在第一矩阵包含的元素的数量大于第二矩阵包含的元素的数量时,由于第一矩阵的元素可以置于列向量和行向量中,有利于提高第一矩阵和第二矩阵相乘的计算效率,进而提高业务在处理器中的整体执行效率。
或者,第一列向量包括的第一矩阵中第一数量个元素和第一行向量包括的第一矩阵中第一数量个元素相同,第一列向量包括的第二矩阵中第二数量个元素和第一行向量包括的第二矩阵中第二数量个元素不同。在第一矩阵包含的数据的数量小于第二矩阵包含的数据的数量时,由于规模较大的第二矩阵的数据可以同时被置于列向量和行向量中,因此,每次向量的外积处理的数据总量更大,有利于提高第一矩阵和第二矩阵相乘的计算效率,进而提高业务在处理器中的整体执行效率。
在另一种可选的实现方式中,在处理器确定向量集合之前,处理器将第一矩阵和第二矩阵相乘,确定目标矩阵,还包括:处理器确定数据的特征值,该特征值用于指示第一矩阵和第二矩阵的矩阵规模。以及,处理器调用与特征值匹配的参考矩阵划分方式对第一矩阵和第二矩阵进行处理。
示例的,参考矩阵划分方式是指业务的一个或多个预估效率值中,最大的预估效率值对应的矩阵划分方式。该预估效率值是由数据的特征值和处理器的硬件信息确定的,硬件信息用于指示处理器在单位时间内处理指令的数量。本实施例中,在处理器依据硬件信息和数据的特征值确定多个预估效率值之后,从该多个预估效率值中选择最大预估效率值,并将该最大预估效率值对应的矩阵划分方式作为参考矩阵划分方式,进而,处理器对业务的数据进行矩阵划分获得向量集合,从而依据该向量集合确定至少包括两个有效数据集合的目标矩阵。如此,在处理器的硬件信息已经确定的情况下,处理器可以依据数据的特征值确定矩阵规模,进而确定矩阵划分方式,并在外积处理后获得目标矩阵,避免了在一些情形中,处理器采用处理效率更低的方式来对业务进行处理,提高了业务的整体处理效率。
第二方面,本申请提供了一种业务处理装置,该业务处理装置应用于处理器,该业务处理装置包括用于执行第一方面或第一方面任一种可能实现方式中的业务处理方法的各个模块。
示例的,业务处理装置包括:收发单元和计算单元。该收发单元用于获取业务所需的数据,数据包括第一矩阵和第二矩阵。该计算单元用于依据第一矩阵和第二矩阵,输出业务的目标矩阵。其中,该目标矩阵用于指示业务的处理结果,目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述业务处理装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请提供了一种处理器,该处理器包括:接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的数据并传输至控制电路,或将来自控制电路的数据发送给处理器之外的其它设备,控制电路通过逻辑电路或执行代码指令用于实现第一方面中任一方面中任一种可能实现方式的方法。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
第四方面,本申请提供一种计算机可读存储介质,存储介质中存储有计算机程序或指令,当计算机程序或指令被处理器执行时,实现第一方面和第一方面中任一种可能实现方式中的方法。
第五方面,本申请提供一种计算机程序产品,该计算程序产品包括指令,当计算机程序产品在处理器或计算设备上运行时,使得处理器或计算设备执行该指令,以实现第一方面和第一方面中任一种可能实现方式中的方法。
第六方面,本申请提供一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中的方法。
第七方面,本申请提供一种计算设备,该计算设备包括:一个或多个接口,以及处理器。
该一个或多个接口,用于:获取业务所需的数据,数据包括第一矩阵和第二矩阵。
该处理器,用于依据第一矩阵和第二矩阵,输出业务的目标矩阵。其中,该目标矩阵用于指示业务的处理结果,目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
另外,处理器还用于从执行上述第一方面及其第一方面任意可能的实现方式中的方法。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
第八方面,本申请提供一种业务处理系统,该业务处理系统可以包括第三方面提供的处理器,该处理器可以用于从执行上述第一方面及其第一方面任意可能的实现方式中的方法。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
示例的,该业务处理系统可以是指包括人工智能(artificial intelligence,AI)芯片的AI系统。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的一种AI系统的架构示意图;
图2为本申请提供的一种AI芯片的结构示意图;
图3为本申请提供的一种矩阵处理方法的流程示意图;
图4为本申请提供的一种细长矩阵的示意图;
图5为本申请提供的一种获取目标矩阵的示意图;
图6为本申请提供的一种矩阵处理的示意图;
图7为本申请提供的一种矩阵比对的示意图;
图8为本申请提供的不同方式的处理效率示意图一;
图9为本申请提供的不同方式的处理效率示意图二;
图10为本申请提供的一种业务处理装置的结构示意图。
具体实施方式
本申请提供一种业务处理方法,该业务处理方法包括:处理器获取业务所需的数据,该数据包括第一矩阵和第二矩阵;处理器依据第一矩阵和第二矩阵,输出业务的目标矩阵;其中,该目标矩阵用于指示前述业务的处理结果,且该目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。由于业务的目标矩阵中包括至少两个有效数据集合,相较于通常技术中目标矩阵仅包括一个有效数据集合,提高了目标矩阵中有效数据的占比,减少了目标矩阵中无效数据所占据的数据存储资源,提高了数据存储资源的利用率。另外,在业务执行过程中,减少了处理器对部分无效数据的源数据进行计算的过程,节省了处理器的计算资源,也提高了处理器执行业务的处理效率。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍。
图1为本申请提供的一种AI系统的架构示意图。AI系统包括主机110、加速装置115和客户设备120。主机110是一个常见的计算机设备。用户可通过客户设备120向主机110输入数据。客户设备120是一种终端设备,包括但不限于个人电脑、服务器、手机、平板电脑或者智能车等。
主机110包括输入输出(input/output,I/O)接口114、处理器111、存储器112。I/O接口114用于与位于主机110外部的设备通信。例如,客户设备120通过I/O接口114向主机110输入数据以及发送AI任务,主机110对输入的数据进行处理之后,再通过I/O接口114向客户设备120发送对该数据处理后的输出结果。
处理器111是主机110的运算核心和控制核心,它可以是中央处理器(centralprocessing unit,CPU),也可以是其他特定的集成电路。处理器111还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。实际应用中,主机110也可以包括多个处理器。处理器111中可以包括一个或多个处理器核(core)。在处理器111中安装有操作系统和其他软件程序,从而处理器111能够实现对存储器112及各种外围器件互联(Peripheral Component Interconnect express,PCIe)设备的访问。
处理器111通过双倍速率(double data rate,DDR)总线或者其他类型的总线和存储器112相连。存储器112是主机110的主存(main memory)。存储器112通常用来存放操作系统中各种正在运行的软件、从客户设备120接收的输入数据以及将来发送给客户设备120的输出结果等。为了提高处理器111的访问速度,存储器112需要具备访问速度快的优点。在传统的计算机设备中,通常采用动态随机存取存储器(dynamic random access memory,DRAM)作为存储器112。除了DRAM之外,存储器112还可以是其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。另外,存储器112也可以是只读存储器(read only memory,ROM)。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasableprogrammable read only memory,EPROM)等。本实施例不对存储器112的数量和类型进行限定。
可选的,为了对数据进行持久化存储,AI系统中还设置有数据存储系统113,数据存储系统113可位于主机110的外部(如图1所示),通过网络与主机110交换数据。可选的,数据存储系统113也可以位于主机的内部,如数据存储系统113通过PCIe总线116与处理器111交换数据。此时,数据存储系统113表现为硬盘。
加速装置115用于执行AI任务。处理器111将接收的AI任务以及输入数据发送给加速装置115,加速装置115根据输入数据完成所述AI任务之后将处理结果发送给处理器111。如图1所示,加速装置115可以直接插在主机110的主板上的卡槽中,通过PCIe总线116与处理器111交换数据。需注意的是,图1中的PCIe总线116也可以替换成计算快速互联(computeexpress link,CXL)、通用串行总线(universal serial bus,USB)协议或其他协议的总线加速装置115进行数据传输。
另外,上述的加速装置115也可以不是直接插在主机110的主板上的卡槽中,而是位于加速设备中的。如该加速设备是一个独立于主机110的设备。此时,主机110可以通过网线等有线网络与加速装置115进行连接,也可以通过无线热点或者蓝牙(bluetooth)等无线网络与加速装置115进行连接。如加速装置115用于处理AI任务,例如训练和推理,加速装置可以由一个或多个芯片来实现。如该芯片包括CPU、图形处理器(graphics processingunit,GPU)、神经网络处理器(neural-network processing units,NPU)、张量处理单元(tensor processing unit,TPU)、FPGA、ASIC中的任意一种。其中,GPU又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。NPU在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。ASIC适合于某一单一用途的集成电路产品。
上述的AI任务可以是指图像渲染、K-means聚类或者是基于神经网络模型的计算任务等。例如,AI任务包括图像渲染中的矩阵运算任务等。
另外,AI任务也可以是指数据校验,如基于矩阵乘法的方式对复杂数据的运算结果进行校验。
示例性的,图1中的处理器111可通过图2所示的AI芯片来实现,如图2所示,图2为本申请提供的一种AI芯片的结构示意图,示例的,该AI芯片200包括AI核心(core)201、AICPU 202、系统缓冲区203和DDR 206。
其中,AI CPU 202用于接受AI任务,并调用AI核心201执行该任务。在AI芯片200有多个AI核心201的情况下,AI CPU 202还用于承担调度的任务。例如,AI CPU 202可由ARM处理器实现,体积小、低功耗,采用32位精简指令集,寻址简单灵活。当然,在一些实施方式中,AI CPU 202也可以由其他处理器实现。
AI核心201用于提供AI任务中所涉及的神经网络模型以及进行相应的运算。在一种可选的情形中,AI核心201包括加载/存储单元(load/store unit,LSU)、立方体(cube)计算单元、标量(scalar)计算单元、向量(vector)计算单元以及缓冲区(buffer)。其中,LSU用于加载待处理的数据以及存储处理后的数据,还可以用于AI核心中内部数据在不同缓冲区之间的读写管理,以及完成一些格式转换的操作。立方体计算单元用于提供矩阵乘的核心算力。标量计算单元是一种单指令流单数据流(single instruction single data,SISD)的处理器,该类型处理器在同一时间内只处理一条数据(通常为整数或浮点数)。向量计算单元又称数组处理器,是可以实现直接操作一组数组或向量进行计算的处理器。缓冲区的数量可能是一个或多个,如该缓冲区主要指L1 buffer,缓冲区用来暂存AI核心201需要反复使用的一些数据从而减少从总线读写,另外,某些数据格式转换功能的实现,也要求源数据位于缓冲区中。在本实施例中,由于缓冲区位于AI核心,拉近了AI核心中的立方体计算单元和数据所在的存储区域之间的距离,减少立方体计算单元对DDR 206的访问,从而降低了数据的访问时延,以及AI核心的数据处理时延。
系统缓冲区203,主要指L2 buffer,或者L2 cache,它用于临时存储经过所述AI芯片的输入数据、中间结果或者最终结果。
DDR 206是一个片外存储器,它也可以替换为或者高带宽存储器(high bandwidthmemory,HBM)或者其他片外存储器。DDR 206位于AI芯片与外部存储器之间,克服了计算资源共享存储器读写时的访问速度限制。
AI芯片200所包含的I/O设备205主要是一些外设,例如网络接口卡等。
在一些应用场景中需要对数据进行编码或解码处理,因此AI芯片200还可能包括编/解码器204和I/O设备205,编/解码器204用于对于数据进行编码或者解码。
举例来说,当AI CPU 202将AI任务所要处理的数据(如矩阵)加载到DDR 206中后,AI核心201中的LSU从DDR 206读取(load)该数据,从发送给一个或多个计算单元进行计算。当得出处理结果后,LSU再将该处理结果加载(store)到DDR 206中,由网络接口卡将推理结果发送给主机。
值得注意的是,图1所示出的加速装置115也可以通过图2所示出的AI芯片200实现,本申请对此不予限定。
下面将结合附图对本实施例提供的矩阵处理方法的具体实现方式进行详细描述。
如图3所示,图3为本申请提供的一种矩阵处理方法的流程示意图,该矩阵处理方法可以应用于图1所示出的AI系统,该矩阵处理方法由处理器30A执行,如该处理器30A是指图1所示出的处理器201或加速装置115,或者图2所示出的AI芯片200;处理器30A与内存30B连接,该内存30B可由图1所示出的存储器112或数据存储系统113实现,也可由图2所示出的DDR 206或者系统缓冲区203实现。如图3所示,本实施例提供的矩阵处理方法包括以下步骤。
S310,处理器30A获取业务所需的数据。
示例的,该业务可以是指以下的任意一种:图像渲染、K-means聚类和数据校验。
例如,在图像渲染的光栅化着色过程中,处理器对投影到画布上的每个三角形包含的每个像素点进行颜色的计算。又如,在K-means算法的聚类过程中,处理器利用矩阵运算的方式确认多个数据点中的质心。又如,在容错算法中,处理器基于矩阵乘法的方式对复杂数据的运算结果进行校验。
S310中的数据包括第一矩阵和第二矩阵。
可选的,第一矩阵和第二矩阵中至少一个矩阵为细长矩阵。细长矩阵是指矩阵的行数和列数的差值较大的矩阵。举例来说,细长矩阵的行数和列数的差值达到一定阈值,如阈值是指20、30、100或其他等。
示例的,矩阵的行数和列数的差值达到阈值可以理解为以下两种可能的情形。
情形1,行数和列数的差值为正数,且该差值大于或等于阈值。
情形2,行数和列数的差值为复数,且该差值小于或等于阈值。
如图4所示,图4为本申请提供的一种细长矩阵的示意图,这里以第一矩阵是图4所示出的矩阵A,第二矩阵是图4所示出的矩阵B为例进行说明。矩阵的规模可以用行数×列数的方式来表示,如矩阵An×k,n用于指示矩阵A的行数、k用于指示矩阵A的列数;矩阵Bk×m,k用于指示矩阵B的行数、m用于指示矩阵B的列数。
图4示出了矩阵A或矩阵B为细长矩阵的4种情况。
情况1,n>>k~m:n远大于k和m,k和m的数值相近,如矩阵A为16行×3列的细长矩阵,矩阵B为3行×3列的矩阵。
情况2,m>>k~n:m远大于k和n,k和n的数值相近,如矩阵A为3行×3列的矩阵,矩阵B为16行×3列的细长矩阵。
值得注意的是,情况1和情况2在本质上是相同的,情况2可以视为将情况1中的两个矩阵进行转置后的情况。
情况3,n~k>>m:k和n远大于m,k和n的数值相近,如矩阵A为16行×16列的矩阵,矩阵B为16行×3列的细长矩阵。
情况4,k~m>>n:k和m远大于n,k和m的数值相近,如矩阵A为3行×16列的细长矩阵,矩阵B为16行×16列的矩阵。
值得注意的是,情况3和情况3在本质上是相同的,情况4可以视为将情况3中的两个矩阵进行转置后的情况。
另外,矩阵A和矩阵B也可以均为细长矩阵,如矩阵A为16行×3列的细长矩阵,矩阵B为3行×16列的细长矩阵。
请继续参见图3,本实施例提供的业务处理方法还包括以下步骤。
S320,处理器30A依据第一矩阵和第二矩阵,输出业务的目标矩阵。
其中,该目标矩阵用于指示S310中业务的处理结果,目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。如图3中目标矩阵中所示出的有效数据(黑色小方块)。
示例的,业务的处理结果是指业务所需的目标数据。
例如,若业务为图像渲染的光栅化着色,目标数据是指画布中每个像素点的像素值。
又如,若业务为K-means聚类,目标数据是指多个数据点对应的特征数据(如数据点对应的哈希值等)。
又如,若业务为数据校验,目标数据是指复杂数据的运算结果。
另外,在一些可选的情形中,本实施例中提供的业务是指神经网络中的卷积操作等,则目标数据是指对多个矩阵进行卷积处理后获得的数据。
可选的,S320中处理器30A输出业务的目标矩阵可以是指:处理器30A将目标矩阵写入内存30B。该内存30B可以被其他设备访问,如与内存30B通信的其他处理器、网卡,或者,可对该内存30B进行远程直接内存访问(remote direct memory access,RDMA)的远端设备,从而实现了处理器30A向其他设备输出该目标矩阵,完成了业务的处理过程。例如,若内存30B是由图1中的存储器112实现的,则前述的远端设备可以是指图1中的客户设备120。
在一些可选的情形中,处理器30A输出业务的目标矩阵还可以是指:处理器30A向其他设备发送该业务的目标矩阵。该其他设备可以是指与处理器30A通信的存储设备或计算设备,如图1所示出的客户设备120。
在本实施例中,由于业务的目标矩阵中包括至少两个有效数据集合,相较于通常技术中目标矩阵仅包括一个有效数据集合,提高了目标矩阵中有效数据的占比,减少了目标矩阵中无效数据所占据的数据存储资源,提高了数据存储资源的利用率。
另外,在业务执行过程中,减少了处理器对部分无效数据的源数据进行计算的过程,节省了处理器的计算资源,也提高了处理器执行业务的处理效率。
针对于处理器30A依据第一矩阵和第二矩阵输出目标矩阵的过程,可以包括:处理器30A将第一矩阵和第二矩阵相乘(如图3所示出的“×”),确定业务的目标矩阵,并输出该目标矩阵。
矩阵之间的乘法包括:内积和外积。
内积也可以称为:标积、数量积或点积;两个矩阵内积的结果为标量或数量。
外积也可以称为:矢积、向量积或叉积;两个矩阵外积的结果为矢量或向量。
在本实施例中,第一矩阵和第二矩阵相乘是指外积。
为便于描述,在本文中,矩阵(或向量)包括的数据也可称为元素,或矩阵元素。
为了确定业务的目标矩阵,在图3所示出的业务处理方法的基础上,本实施例提供一种可能的实现方式,如图5所示,图5为本申请提供的一种获取目标矩阵的示意图,获取目标矩阵的过程可以由处理器30A实现,处理器30A将第一矩阵和第二矩阵相乘,确定目标矩阵的过程可以包括:图5中的各步骤S510~S530。
S510,处理器30A确定业务所需的数据的特征值。
该特征值用于指示第一矩阵和第二矩阵的矩阵规模。在一些情况中,矩阵规模可以由矩阵的行数×列数来表示。
例如,数据的特征值包括n、k和m,第一矩阵的矩阵规模为n行×k列,第二矩阵的矩阵规模为k行×m列。
S520,处理器30A调用与特征值匹配的参考矩阵划分方式,对第一矩阵和第二矩阵进行矩阵划分,获取向量集合。
可选的,向量集合包括列向量集合和行向量集合。
在一种可能的示例中,该列向量集合包括:一个或多个列向量,如图5所示出的第一列向量。该第一列向量包括:第一矩阵中第一数量个元素和第二矩阵中第二数量个元素。如图5所示出的第一列向量包括:第一矩阵中12个元素和第二矩阵中4个元素。
在另一种可能的示例中,该行向量集合包括:一个或多个行向量,如图5所示出的第一行向量。该第一行向量包括:第二矩阵中第二数量个元素和第一矩阵中第一数量个元素。如图5所示出的第一行向量包括:第二矩阵中4个元素和第一矩阵中12个元素。
值得注意的是,在一些情形中,行向量所包括的元素可以是由第二矩阵中的一行元素提供的。例如,第二矩阵包括1行×4列个元素,第一行向量包括的第二矩阵中4个元素是指:第二矩阵中的第一行的4个元素,即第二矩阵中的所有元素。又如,第二矩阵包括2行×4列个元素,第一行向量包括的第二矩阵中4个元素是指:第二矩阵中的第一行的4个元素,或者,第二矩阵中的第二行的4个元素。
在图5所示出的向量集合和目标矩阵的基础上,本实施例提供一种向量的元素排列方式,如图6所示,图6为本申请提供的一种矩阵处理的示意图,向量集合包括第一列向量和第一行向量,该第一列向量中的元素包括集合1和集合2,第一行向量包括集合3和集合4。
可选的,上述的参考矩阵划分方式是指将第一矩阵的元素和第二矩阵的元素进行拼接,获得前述的第一行向量和第一列向量。
在一种可能的情形中,集合1和集合4所包括的元素来自于第一矩阵,集合2和集合3所包括的元素来自于第二矩阵。
在另一种可能的情形中,集合1和集合4所包括的元素来自于第二矩阵,集合2和集合3所包括的元素来自于第一矩阵。
图5以向量集合包括上述的第一列向量和第一行向量为例进行说明,但不应理解为对本申请的限定。在一些可能的情况中,向量集合还可以包括更多的行向量或列向量,如向量集合还包括第二行向量和第二列向量。
可选的,第一列向量和第一列向量的规模是由处理器30A包括的向量寄存器确定的。
示例的,处理器30A包括多个用于缓存矩阵的向量寄存器,如一个向量寄存器可容纳T个矩阵中的数据。
例如,该向量寄存器为支持存储管理功能实体(storage manage entity,SME)、且可容纳512位(Bit)的寄存器(简称:SME-512),且本实施例提供的矩阵的格式为32位浮点(32 float point,FP32)格式,FP32矩阵中每个数据所需的存储空间为4字节(byte,B);由于1B=8bit,因此,该向量寄存器可以存储16个格式为FP32矩阵的数据(元素),即T=16。
关于本实施例提供的矩阵划分方式可参考下述图8和图9的相关内容,此处不予赘述。
请继续参见图5,本实施例提供的目标矩阵的确定过程还包括以下步骤S530。
S530,处理器30A对向量集合包括的多个向量进行外积处理,获得目标矩阵。
外积处理是指对两个向量进行向量积,如处理器30A将上述的第一列向量和第一行向量进行外积。
示例的,该多个向量包括上述的第一列向量和第一行向量。在一些可行的实现方式中,该多个向量也可以包括第二行向量和第二列向量,本申请对此不予限定。值得注意的是,当向量集合包括多个行向量和多个列向量时,目标矩阵中的有效数据是由多个向量的外积结果进行累加获得的。
下面提供一种可能的具体示例,对本方案和通常技术的外积处理过程的区别进行详细说明。处理器将矩阵A包含的n×k个元素放置在向量V1={v11,v12,…,v1T},T为处理器中向量寄存器所能存储的元素的最大数量;处理器将矩阵B包含的k×m个元素放置在向量V2={v21,v22,…,v2T},T为处理器中向量寄存器所能存储的元素的最大数量。
假设矩阵An×k为细长矩阵,矩阵Bk×m为规模较小的矩阵,这里以T=n>>k~m为例进行说明,如T=16,n=12,k=2,m=4。
在通常技术中,向量V1包含矩阵A12×2的第一列的所有元素和第二列的前4位元素,V1={a11,a12,…,a112,a21,a22,a23,a24},其中,v1i=a1i,i为1至12中任一个,向量V2包含矩阵B的所有元素,即V2=B2×4={b11,b12,b13,b14,0,0,0,0,0,0,0,0,0,0,0,0}。也就是说,向量V2中的一部分矩阵元素的实际状态为闲置(或称无效)。
如图7所示,图7为本申请提供的一种矩阵比对的示意图,图7的(1)示出了通常技术中向量V1和向量V2所包含的元素,如向量V1包含矩阵A的16个元素,向量V2包含矩阵A的4个元素。
在本方案中,向量V1包含矩阵A12×2中第一列的所有元素(12个元素)和矩阵B2×4的所有元素,V1={a11,a12,…,a112,b11,b12,b13,b14},其中,v1i=a1i,i为1至12中任一个;向量V2包含矩阵B的第一行元素和矩阵A12×2中第二列的所有元素(12个元素),即V2={b11,b12,b13,b14,a21,a22,…,a212},其中,v2i=a2i,i为1至12中任一个。
图7的(2)示出了本方案中向量V1和向量V2所包含的元素,如向量V1包含矩阵A12×2中第一列的所有元素(12个元素)和矩阵B2×4的第一行元素,向量V2包含矩阵B2×4的第一行元素和矩阵A12×2中第二列的所有元素(12个元素)。
如图7所示,在通常技术的方案中,处理器将向量V1和向量V2进行外积处理获得目标矩阵,目标矩阵占据的存储空间为:T×T×每个数据占据的字节=16×16×4B=1千字节(kilobytes,KB),其中,有效数据(有效元素)所占的比例为(4×16)/(16×16)=25%。
在实施例提供的方案中,处理器将向量V1和向量V2进行外积处理获得目标矩阵,目标矩阵占据的存储空间为1KB,其中,有效数据(有效元素)所占的比例为(4×12+4×12)/(16×16)=37.5%。
也就是说,相较于通常技术方案中目标矩阵仅包含一个有效数据集合,本实施例提供的业务处理方法,目标矩阵包含至少两个有效数据集合,可以提高目标矩阵中有效数据的占比,进而,提高了存储目标矩阵的存储资源的利用率。
另外,向量V1和向量V2所包括的白色部分虽然为闲置,但在处理器进行矩阵的外积处理时,业务的指令执行不会因为向量中部分计算过程的闲置而变快,这导致了处理器大量算力的浪费。而在本实施例提供的方案中,处理器将向量寄存器中闲置的部分进行有效利用,从而在处理器提供的计算资源一致的情况下,增加了单位时间内业务执行的矩阵计算量,提高了业务的执行效率。
若业务所需的数据中,仅第一矩阵和第二矩阵中的一个矩阵为细长矩阵,另一个矩阵为规模较小的矩阵(如图4所示出的情况1和情况2),或规模较大的矩阵(如图4所示出的情况3和情况4),为提高业务的数据处理效率,这里提供两种可能实现方式。
在第一种可能的实现方式中,第一列向量包括的第一矩阵中第一数量个元素和第一行向量包括的第一矩阵中第一数量个元素不同,第一列向量包括的第二矩阵中第二数量个元素和第一行向量包括的第二矩阵中第二数量个元素相同。
如图7所示的(2)中,向量V1包括的前12个元素与向量V2包括的后12个元素不同,但向量V1包括的后4个元素与向量V2包括的前4个元素相同。又如,图6中所示出的集合1和集合4所包含的元素不同,但集合2和集合3所包含的元素相同。
示例的,第一种可能的实现方式可应用于图4所示出的情况1和情况3,在矩阵A包含的元素的数量大于矩阵B包含的元素的数量时,由于矩阵A的元素可以置于列向量和行向量中,有利于提高矩阵A和矩阵B相乘的计算效率,进而提高业务在处理器中的整体执行效率。
在第二种可能的实现方式中,第一列向量包括的第一矩阵中第一数量个元素和第一行向量包括的第一矩阵中第一数量个元素相同,第一列向量包括的第二矩阵中第二数量个元素和第一行向量包括的第二矩阵中第二数量个元素不同。
如图7所示的(2)中,向量V1包括的前12个元素与向量V2包括的后12个元素相同同,但向量V1包括的后4个元素与向量V2包括的前4个元素不同。又如,图6中所示出的集合1和集合4所包含的元素相同,但集合2和集合3所包含的元素不同。
示例的,第二种可能的实现方式可应用于图4所示出的情况2和情况4,在矩阵A包含的数据的数量小于矩阵B包含的数据的数量时,由于规模较大的矩阵B的数据可以同时被置于列向量和行向量中,因此,每次向量的外积处理的数据总量更大,有利于提高矩阵A和矩阵B相乘的计算效率,进而提高业务在处理器中的整体执行效率。
在一种可选的实施例中,处理器30A还可以调度其他的矩阵计算方式,以执行前述的业务。假设第一矩阵为矩阵An×k,第二矩阵为矩阵Bk×m,且矩阵Bk×m能全部加载到一个向量寄存器中,处理器包含的一个向量寄存器中最多容纳T个矩阵的元素,这里提供另外两种可能的矩阵计算方式,如下述的方式1和方式2。
方式1,矩阵An×k的按照T行划分为一个分块,第t个分块记为
Figure BDA0003449043530000111
每个分块分别与Bk×m相乘得到/>
Figure BDA0003449043530000112
即/>
Figure BDA0003449043530000113
再将/>
Figure BDA0003449043530000114
纵向拼接就可以得到原矩阵An×k和矩阵Bk×m的乘法结果Cn×m
具体的,对于矩阵乘法
Figure BDA0003449043530000121
处理器按列读取矩阵/>
Figure BDA0003449043530000122
其中第i列的向量为Ai,长度为T。例如,对于第一个向量A1,向量A1乘以矩阵B的第一行第一个元素B11,得到向量C1。以此类推,向量A1乘以矩阵B的第一行第i个元素B1i,得到向量Ci。向量A1乘以矩阵B的第一行的最后一个元素B1m,得到向量Cm。同样的,在对向量Aj,乘以矩阵B的第j行第一个元素Bj1,并将结果累加到向量C1中。向量Aj,乘以矩阵B的第j行第i个元素Bji,并将结果累加到向量Ci中。向量Aj乘以矩阵Bk×m的第一行的最后一个元素Bjm,并将结果累加到向量Cm中。最后,处理器将第k个向量Ak,乘以矩阵B的第k行第一个元素Bk1,并将结果累加到向量C1中。以此类推,向量Ak,乘以矩阵B的第k行第i个元素Bki,并将结果累加到向量Ci中。向量Ak乘以矩阵B的第k行的最后一个元素Bkm,并将结果累加到向量Cm中。最终的计算结果长度为T的向量Ci,i=1,...,m,也就是矩阵/>
Figure BDA0003449043530000123
中的m列。
方式2,由于矩阵Bk×m能全部加载到一个向量寄存器中,因此,对于矩阵乘法
Figure BDA0003449043530000124
Figure BDA0003449043530000125
处理器将矩阵An×k的第一个向量A1,乘以矩阵Bk×m的第一行向量B1,得到目标矩阵C。以此类推,向量Ai乘以矩阵B的第i行向量Bi,并将结果累加到矩阵C中。并在最终获得An×k和矩阵的Bk×m计算结果为目标矩阵C。关于方式2更详细的实现方式可以参考图7的(1)的相关内容,此处不予赘述。
相比之下,本申请提供的方案(下文称方式3),对于矩阵乘法An×kBk×m:处理器按照(2T-2m)行划分矩阵An×k的部分元素为一个分块,其中,第t个分块记为
Figure BDA0003449043530000126
每个分块分别与Bk×m相乘得到/>
Figure BDA0003449043530000127
即/>
Figure BDA0003449043530000128
再将/>
Figure BDA0003449043530000129
纵向拼接就可以得到原矩阵的乘法结果Cn×m
具体的,对于矩阵乘法
Figure BDA00034490435300001210
处理器按照上述参考矩阵划分方式获取输入向量(如上述的第一列向量和第一行向量):对于矩阵/>
Figure BDA00034490435300001211
的第一列,共2T-2m个元素,分成两份,都与矩阵Bk×m的第一行拼接在一起,进行外积乘法,得到矩阵C。以此类推,矩阵/>
Figure BDA00034490435300001212
的第i列,共2T-2m个元素,分成两份,都与矩阵Bk×m的第i行拼接在一起,外积累加到目标矩阵C中。业务最终的计算结果在图7中(2)所示出的有效数据。
可选的,处理器可以依据业务的预估效率来调用不同的矩阵划分方式,以执行本申请提供的业务处理方法。示例的,参考矩阵划分方式是指业务的一个或多个预估效率值中,最大的预估效率值对应的矩阵划分方式。该预估效率值可以是由数据的特征值和处理器的硬件信息确定的,硬件信息用于指示处理器在单位时间内处理指令的数量。例如,处理器的硬件信息可以是指:处理器在单位时间的指令吞吐量(execution throughput,instruction bandwidth per cycle),处理器的硬件信息指示了处理器在理想情况下的指令执行速度。
上述的指令可以包括,但不限于:L1 cache load指令、L1 cache store指令、乘加指令和外积乘加指令等。如处理器的硬件信息可以指示前述各指令的吞吐量。load指令是指处理器将数据从内存迁移到向量寄存器,store指令是指处理器将数据从向量寄存器迁移到内存。
那么,可以通过如下公式,获得处理器消耗的cycle数。
Figure BDA0003449043530000131
其中,指令X是指L1 cache load指令、L1 cache store指令、乘加指令和外积乘加指令中的任意一个。
处理器可以依据在单位时间内的数据处理量和上述的cycle数,预估处理器的处理效率η(或称:预估效率值)。
Figure BDA0003449043530000132
上述方式1~方式3每进行一次外积操作,处理器所需的指令数如下所示。
方式1,处理器处理T行的数据所需的指令数:k次load,m次store,km次外积乘加。
方式2,处理器处理T行的数据所需的指令数:k次load,m次store,k次外积乘加。若处理2T(T-m)行数据,所需的指令数为:2k(T-m)次load,2m(T-m)次store,2k(T-m)次外积乘加。
方式3,处理器处理2(T-m)行的数据所需的指令数:2k次load,2m次store,k次外积乘加。
在第一种可能的情形中,如上述的方式1~方式3应用于图4所示出的情况1或情况2,本实施例给出以下表1来说明各方式的处理效率η(预估效率值)。
表1
Figure BDA0003449043530000133
在本文中,BLoad表示从L1 cache load指令的吞吐量、BStore表示从L1 cache store指令的吞吐量、Bmla表示乘加指令的吞吐量、Bmopa表示外积乘加指令的吞吐量。
值得注意的是,上述的BLoad、BBtore、Bmla、Bmopa、T是由处理器的硬件信息决定的,方式1~方式3的预估效率值实际由业务所需的数据的矩阵规模来决定,即矩阵B的行数k和列数m。
依据表1中的内容,可得到以下比对关系。
Figure BDA0003449043530000141
对于方式1和方式2来说,Bmla-mBmopa>0时,也就是
Figure BDA0003449043530000142
时,/>
Figure BDA0003449043530000143
方式1优于方式2;反之,Bmla-mBmopa<0时,也就是/>
Figure BDA0003449043530000144
时,/>
Figure BDA0003449043530000145
方式2优于方式1。例如,当m很小,比如当m=1时,矩阵An×k和矩阵Bk×m的乘法就变成了矩阵和向量之间的乘法,此时,方式1提供的矩阵划分方式提供的业务处理效率,优于方式2提供的矩阵划分方式提供的业务处理效率。
依据表1中的内容,还可得到以下比对关系。
Figure BDA0003449043530000146
对于方式2和方式3来说,
Figure BDA0003449043530000147
时,/>
Figure BDA0003449043530000148
方式2优于方式3。反之,/>
Figure BDA0003449043530000149
时,/>
Figure BDA00034490435300001410
方式3优于方式2。
这里给出一种具体的示例,如k=3、m=3、BLoad=2、BStore=2、Bmla=2、Bmopa=1、T=16,处理器基于表1所给出的处理效率的表达式,获得每种方式的处理效率如下表2所示。
表2
Figure BDA00034490435300001411
也就是说,在表2所给出的示例中,方式3相较于方式2提高了约8.3%的效率。
示例的,图8为本申请提供的不同方式的处理效率示意图一,图8示出了方式1~方式3应用于图4所示出的情况1时,处理器基于表1所得到的上述的方式1~方式3的处理效率,其中,BLoad=2、BStore=2、Bmla=2、Bmopa=1、T=16,图8示出了k和m的取值不同时,各方式的处理效率的优劣比对关系。
如图8所示,取值情况①:若m=1、k为1~16中任一个时,方式1优于方式2、方式3。取值情况②:若m=2、k为1~16中任一个时,或,m=3、k为2~16中任一个时,或,m=4、k为4~16中任一个时,方式3优于方式1、方式2。取值情况③:m取3~8中任一个,k取1~16中任一个,且除上述取值情况①和②外的其他取值时,方式2优于方式1、方式3。
在第二种可能的情形中,如上述的方式1~方式3应用于图4所示出的情况3或情况4,本实施例给出以下表3来说明各方式的处理效率η(预估效率值)。
表3
Figure BDA0003449043530000151
BLoad表示从L1 cache load指令的吞吐量、Bstore表示从L1 cache store指令的吞吐量、Bmla表示乘加指令的吞吐量、Bmopa表示外积乘加指令的吞吐量。
这里以方式1~方式3应用于图4所示出的情况3为例进行说明,由于n~k>>m:k和n远大于m,k和n的数值相近,因此,表3中各表达式包含的
Figure BDA0003449043530000152
沟值较小,在忽略该/>
Figure BDA0003449043530000153
的情况下,表3的内容可以更新为以下表4。
表4
Figure BDA0003449043530000154
依据表4中的内容,可得到以下比对关系。
Figure BDA0003449043530000155
对于方式1和方式2来说,Bmla-mBmopa>0时,也就是
Figure BDA0003449043530000156
时,/>
Figure BDA0003449043530000157
方式1优于方式2;反之,Bmla-mBmopa<0时,也就是/>
Figure BDA0003449043530000158
时,/>
Figure BDA0003449043530000159
方式2优于方式1。这与上述第一种可能的情形是一致的。
依据表4中的内容,还可得到以下比对关系。
Figure BDA0003449043530000161
对于方式2和方式3来说,
Figure BDA0003449043530000162
随m的增大而增大,所以在m较小的时候,方式3优于方式2。
这里给出一种具体的示例,如k=3、m=3、BLoad=2、BStore=2、Bmla=2、Bmopa=1、T=16,处理器基于表4所给出的处理效率的表达式,获得每种方式的处理效率如下表5所示。
表5
Figure BDA0003449043530000163
也就是说,在表5所给出的示例中,方式3相较于方式1提高了约62.5%的效率,方式3相较于方式2提高了约30%的效率。
示例的,图9为本申请提供的不同方式的处理效率示意图二,图9示出了方式1~方式3应用于图4所示出的情况3时,处理器基于表4所得到的上述的方式1~方式3的处理效率,其中,BLoad=2、BStore=2、Bmla=2、Bmopa=1、T=16,图9示出了k和m的取值不同时,各方式的处理效率的优劣比对关系。
如图9所示,取值情况①:若m为1~6中任一个、k为1~16中任一个,方式3优于方式1、方式2。取值情况②:若m为7或8、k为1~16中任一个时,方式2优于方式1、方式3。
结合上述第一种可能的情形和第二种可能的情形,在处理器依据硬件信息和数据的特征值确定多个预估效率值之后,从该多个预估效率值中选择最大预估效率值,并将该最大预估效率值对应的矩阵划分方式作为参考矩阵划分方式,进而,处理器对业务的数据进行矩阵划分获得向量集合,从而依据该向量集合确定至少包括两个有效数据集合的目标矩阵。如此,在处理器的硬件信息已经确定的情况下,处理器可以依据数据的特征值确定矩阵规模,进而确定矩阵划分方式,并在外积处理后获得目标矩阵,避免了在一些情形中,处理器采用处理效率更低的方式来对业务进行处理,提高了业务的整体处理效率。
可以理解的是,为了实现上述实施例中功能,处理器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
如图10所示,图10为本申请提供的一种业务处理装置的结构示意图,该业务处理装置1000可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该业务处理装置1000可以是处理器,如上述的处理器111、AI芯片200或处理器30A等,还可以是应用于处理器的模块(如芯片)。
如图10所示,业务处理装置1000包括收发单元1010、计算单元1020和存储单元1030。该业务处理装置1000用于实现上述图3和图5中所示的方法实施例中处理器的功能。在一种可能的示例中,该业务处理装置1000用于实现上述业务处理方法的具体过程包括以下内容1和内容2。
内容1,收发单元1010,用于获取业务所需的数据,该数据包括第一矩阵和第二矩阵。
内容1,计算单元1020,用于依据第一矩阵和第二矩阵,输出业务的目标矩阵;其中,目标矩阵用于指示业务的处理结果,目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
在一种可能的情形中,存储单元1030可以用于存储上述的目标矩阵。
当业务处理装置1000用于实现图3所示的方法实施例中处理器30A的功能时:收发单元1010用于执行S310,收发单元1010和计算单元1020用于协同执行S320。
当业务处理装置1000用于实现图5所示的方法实施例时:计算单元1020用于执行S510~S530。
应理解的是,本申请实施例的业务处理装置1000可以通过CPU实现,也可以通过ASIC实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、FPGA、通用阵列逻辑(generic array logic,GAL)或其任意组合。业务处理装置1000通过软件实现前述附图中任一所示的业务处理方法时,业务处理装置1000及其各个模块也可以为软件模块。
有关上述业务处理装置1000更详细的描述可以直接参考前述附图所示的实施例中相关描述直接得到,这里不加赘述。
示例的,当业务处理装置1000通过硬件实现时,该硬件可以通过处理器实现,如上述的处理器30A等,如该处理器包括接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的数据并传输至控制电路,或将来自控制电路的数据发送给处理器之外的其它设备。
控制电路通过逻辑电路或执行代码指令用于实现上述实施例中任一种可能实现方式的方法。有益效果可以参见上述实施例中任一方面的描述,此处不再赘述。
本申请还提供一种计算设备,该计算设备包括处理器和存储器;该处理器和存储器可以协同实现上述实施例提供的业务处理方法。作为一种可选的实现方式,在硬件实现上,计算设备可以是指封装有一个或多个处理器的芯片或芯片系统。
示例的,当计算设备用于实现图3所示的方法时,计算设备包括的处理器执行S320所述的方法步骤及其可能的子步骤。在一种可选的情形中,计算设备还可以包括通信接口,该通信接口可以用于执行图3所示出的S310。
例如,通信接口用于获取业务的数据,该数据包括第一矩阵和第二矩阵。该处理器,用于依据第一矩阵和第二矩阵,输出业务的目标矩阵。其中,该目标矩阵用于指示业务的处理结果,目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
另外,当计算设备用于实现图5所示的方法时,计算设备包括的处理器执行S510~S530所述的方法步骤及其可能的子步骤。
值得注意的是,计算设备还可以执行图10所示出的业务处理装置1000的功能,此处不予赘述。
可以理解的是,本申请的实施例中的处理器可以CPU、NPU或GPU,还可以是其它通用处理器、DSP、ASIC、FPGA或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、ROM、PROM、EPROM、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

Claims (20)

1.一种业务处理方法,其特征在于,所述方法由处理器执行,所述方法包括:
获取业务所需的数据,所述数据包括第一矩阵和第二矩阵;
依据所述第一矩阵和所述第二矩阵,输出所述业务的目标矩阵;其中,
所述目标矩阵用于指示所述业务的处理结果,所述目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
2.根据权利要求1所述的方法,其特征在于,
依据所述第一矩阵和所述第二矩阵,输出所述业务的目标矩阵,包括:
将所述第一矩阵和所述第二矩阵相乘,确定所述目标矩阵;
输出所述目标矩阵。
3.根据权利要求2所述的方法,其特征在于,
将所述第一矩阵和所述第二矩阵相乘,确定所述目标矩阵,包括:
依据所述第一矩阵和所述第二矩阵,确定向量集合;其中,所述向量集合包括第一列向量和第一行向量,所述第一列向量包括:第一矩阵中第一数量个元素和第二矩阵中第二数量个元素,所述第一行向量包括:第二矩阵中第二数量个元素和第一矩阵中第一数量个元素;
对所述向量集合包括的多个向量进行外积处理,获得所述业务的目标矩阵。
4.根据权利要求3所述的方法,其特征在于,
所述向量集合包括:列向量集合和行向量集合;
所述列向量集合包括:一个或多个列向量,所述一个或多个列向量包含所述第一列向量;所述行向量集合包括:一个或多个行向量,所述一个或多个行向量包含所述第一行向量。
5.根据权利要求3或4所述的方法,其特征在于,
所述第一列向量包括的第一矩阵中第一数量个元素和所述第一行向量包括的第一矩阵中第一数量个元素不同,所述第一列向量包括的第二矩阵中第二数量个元素和所述第一行向量包括的第二矩阵中第二数量个元素相同;或者,
所述第一列向量包括的第一矩阵中第一数量个元素和所述第一行向量包括的第一矩阵中第一数量个元素相同,所述第一列向量包括的第二矩阵中第二数量个元素和所述第一行向量包括的第二矩阵中第二数量个元素不同。
6.根据权利要求3-5中任一项所述的方法,其特征在于,在所述确定向量集合之前,
将所述第一矩阵和所述第二矩阵相乘,确定所述目标矩阵,还包括:
确定所述数据的特征值,所述特征值用于指示所述第一矩阵和所述第二矩阵的矩阵规模;
调用与所述特征值匹配的参考矩阵划分方式对所述第一矩阵和所述第二矩阵进行处理。
7.根据权利要求6所述的方法,其特征在于,所述参考矩阵划分方式是指所述业务的一个或多个预估效率值中,最大的预估效率值对应的矩阵划分方式;
所述预估效率值是由所述数据的特征值和所述处理器的硬件信息确定的,所述硬件信息用于指示所述处理器在单位时间内处理指令的数量。
8.根据权利要求1-7中任一项所述的方法,其特征在于,
所述业务为以下任意一种:图像渲染、K-means聚类和数据校验。
9.根据权利要求1-8中任一项所述的方法,其特征在于,
所述第一矩阵为细长矩阵,和/或,所述第二矩阵为细长矩阵;所述细长矩阵为行数和列数的差值达到阈值的矩阵。
10.一种业务处理装置,其特征在于,所述装置应用于处理器,所述装置包括:
收发单元,用于获取业务所需的数据,所述数据包括第一矩阵和第二矩阵;
计算单元,用于依据所述第一矩阵和所述第二矩阵,输出所述业务的目标矩阵;其中,
所述目标矩阵用于指示所述业务的处理结果,所述目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
11.根据权利要求10所述的装置,其特征在于,
所述计算单元,具体用于将所述第一矩阵和所述第二矩阵相乘,确定所述目标矩阵;
所述计算单元,还具体用于输出所述目标矩阵。
12.根据权利要求11所述的装置,其特征在于,
所述计算单元,具体用于依据所述第一矩阵和所述第二矩阵,确定向量集合;其中,所述向量集合包括第一列向量和第一行向量,所述第一列向量包括:第一矩阵中第一数量个元素和第二矩阵中第二数量个元素,所述第一行向量包括:第二矩阵中第二数量个元素和第一矩阵中第一数量个元素;
所述计算单元,还具体用于对所述向量集合包括的多个向量进行外积处理,获得所述业务的目标矩阵。
13.根据权利要求12所述的装置,其特征在于,
所述向量集合包括:列向量集合和行向量集合;
所述列向量集合包括:一个或多个列向量,所述一个或多个列向量包含所述第一列向量;所述行向量集合包括:一个或多个行向量,所述一个或多个行向量包含所述第一行向量。
14.根据权利要求12或13所述的装置,其特征在于,
所述第一列向量包括的第一矩阵中第一数量个元素和所述第一行向量包括的第一矩阵中第一数量个元素不同,所述第一列向量包括的第二矩阵中第二数量个元素和所述第一行向量包括的第二矩阵中第二数量个元素相同;或者,
所述第一列向量包括的第一矩阵中第一数量个元素和所述第一行向量包括的第一矩阵中第一数量个元素相同,所述第一列向量包括的第二矩阵中第二数量个元素和所述第一行向量包括的第二矩阵中第二数量个元素不同。
15.根据权利要求12-14中任一项所述的装置,其特征在于,
所述计算单元,还具体用于确定所述数据的特征值,所述特征值用于指示所述第一矩阵和所述第二矩阵的矩阵规模;
所述计算单元,还具体用于调用与所述特征值匹配的参考矩阵划分方式,对所述第一矩阵和所述第二矩阵进行处理。
16.根据权利要求15所述的装置,其特征在于,所述参考矩阵划分方式是指所述业务的一个或多个预估效率值中,最大的预估效率值对应的矩阵划分方式;
所述预估效率值是由所述数据的特征值和所述处理器的硬件信息确定的,所述硬件信息用于指示所述处理器在单位时间内处理指令的数量。
17.根据权利要求10-16中任一项所述的装置,其特征在于,
所述业务为以下任意一种:图像渲染、K-means聚类和数据校验。
18.根据权利要求10-17中任一项所述的装置,其特征在于,
所述第一矩阵为细长矩阵,和/或,所述第二矩阵为细长矩阵;所述细长矩阵为行数和列数的差值达到阈值的矩阵。
19.一种处理器,其特征在于,包括:控制电路和接口电路;
所述接口电路,用于:接收来自所述处理器之外的其它设备的数据并传输至所述控制电路,或将来自所述控制电路的数据发送给所述处理器之外的其它设备;
所述控制电路,用于:通过逻辑电路或执行代码指令用于实现如权利要求1至9中任一项所述的方法。
20.一种计算设备,其特征在于,包括:
一个或多个接口,用于获取业务所需的数据,所述数据包括第一矩阵和第二矩阵;
处理器,用于依据所述第一矩阵和所述第二矩阵,输出所述业务的目标矩阵;其中,
所述目标矩阵用于指示所述业务的处理结果,所述目标矩阵包括至少两个有效数据集合,一个有效数据集合包括多个连续排列的有效数据。
CN202111668819.1A 2021-12-30 2021-12-30 业务处理方法、装置、处理器及计算设备 Pending CN116415100A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111668819.1A CN116415100A (zh) 2021-12-30 2021-12-30 业务处理方法、装置、处理器及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111668819.1A CN116415100A (zh) 2021-12-30 2021-12-30 业务处理方法、装置、处理器及计算设备

Publications (1)

Publication Number Publication Date
CN116415100A true CN116415100A (zh) 2023-07-11

Family

ID=87055086

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111668819.1A Pending CN116415100A (zh) 2021-12-30 2021-12-30 业务处理方法、装置、处理器及计算设备

Country Status (1)

Country Link
CN (1) CN116415100A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724856A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117724856A (zh) * 2024-02-08 2024-03-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质
CN117724856B (zh) * 2024-02-08 2024-04-19 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN110506260B (zh) 用于神经网络环境中的增强数据处理的方法、系统和介质
CN109388595B (zh) 高带宽存储器系统以及逻辑管芯
CN112840356B (zh) 运算加速器、处理方法及相关设备
WO2018205708A1 (zh) 应用于二值权重卷积网络的处理系统及方法
US11544191B2 (en) Efficient hardware architecture for accelerating grouped convolutions
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN107256424B (zh) 三值权重卷积网络处理系统及方法
CN108388527B (zh) 直接存储器存取引擎及其方法
CN112116085A (zh) 用于执行存储器中训练数据扩增以用于人工智能的技术
US11277149B2 (en) Bit string compression
CN114008589A (zh) 用于在顺序处理器上进行多次执行的动态代码加载
CN116415100A (zh) 业务处理方法、装置、处理器及计算设备
JP7033507B2 (ja) ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
CN115994040A (zh) 计算系统以及进行数据广播和数据归约的方法及存储介质
US11782711B2 (en) Dynamic precision bit string accumulation
CN115563053A (zh) 高性能片上内存控制器及其执行的方法
CN115827552A (zh) 计算任务处理方法、装置以及存储介质
US20240028666A1 (en) Method for optimizing matrix multiplication operation on system on chip, and related product
US11809868B2 (en) Bit string lookup data structure
US20240134930A1 (en) Method and apparatus for neural network weight block compression in a compute accelerator
CN111222632B (zh) 计算装置、计算方法及相关产品
US11875150B2 (en) Converting floating-point bit strings in a multi-user network
KR102435447B1 (ko) 뉴럴 네트워크 시스템 및 이의 동작 방법
US11403096B2 (en) Acceleration circuitry for posit operations
US11829301B2 (en) Acceleration circuitry for posit operations

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication