基于芯片的融合算子处理方法、装置及相关产品与流程

文档序号:31381498发布日期:2022-09-03 00:42阅读:129来源:国知局
基于芯片的融合算子处理方法、装置及相关产品与流程

1.本发明实施例涉及数据处理技术领域,尤其涉及一种基于芯片的融合算子处理方法、装置及相关产品。


背景技术:

2.随着人工智能及数字电子技术的不断发展,各种人工智能芯片的快速发展对于数据处理的要求越来越高。
3.目前在人工智能领域的自然语言人机交互技术中,快速编解码(英文为:fast-transformer)网络模型由于具有强大的语义表达能力,所以被广泛使用。在fast-transformer网络模型进行分类时,一般先采用全连接层将特征表示矩阵映射到样本标记空间,然后采用softmax分类器进行分类,最终取出最优的topk种分类结果。
4.而目前在采用芯片处理fast-transformer网络模型分类运算时,由于特征表示矩阵的维度很大,而在芯片上的计算装置的空间有限,所以需要从芯片的存储装置中进行大量的io操作,并且目前采用芯片处理fast-transformer网络模型分类运算时的处理过程会产生大量的冗余计算,进而导致对数据的处理效率较低。


技术实现要素:

5.本技术提供一种基于芯片的融合算子处理方法、装置及相关产品,用以解决现有技术中采用芯片处理fast-transformer网络模型分类运算时,需要从芯片的存储装置中进行大量的io操作,并且目前采用芯片处理fast-transformer网络模型分类运算时的处理过程会产生大量的冗余计算,进而导致对数据的处理效率较低的技术问题。
6.第一方面,本技术提供一种基于芯片的融合算子处理方法,包括:
7.从芯片的存储装置上按照顺序依次将矩阵单元加载到芯片上的计算装置上;其中,所述矩阵单元是按照预设的矩阵单元维度对所述目标矩阵进行矩阵拆分获得的;所述顺序是将目标矩阵拆分成矩阵单元时获得的;
8.采用所述芯片的计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到所述目标矩阵中全部矩阵单元的归一化分母之和以及所述目标矩阵对应的topk值;
9.采用所述计算装置根据所述目标矩阵对应的topk值,计算每个topk值的归一化分子;
10.采用所述计算装置根据所述目标矩阵对应的归一化分母之和及所述每个topk值的归一化分子,得到所述目标矩阵的融合算子的处理结果。
11.第二方面,本技术提供一种基于芯片的融合算子处理装置,包括:
12.加载单元,用于从芯片的存储装置上按照顺序依次将矩阵单元加载到芯片上的计算装置上;其中,所述矩阵单元是按照预设的矩阵单元维度对所述目标矩阵进行矩阵拆分获得的;所述顺序是将目标矩阵拆分成矩阵单元时获得的;
13.迭代处理单元,用于采用所述芯片的计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到所述目标矩阵中全部矩阵单元的归一化分母之和以及所述目标矩阵对应的topk值;
14.计算单元,用于采用所述计算装置根据所述目标矩阵对应的topk值,计算每个topk值的归一化分子;
15.所述计算单元,还用于采用所述计算装置根据所述目标矩阵对应的归一化分母之和及所述每个topk值的归一化分子,得到所述目标矩阵的融合算子的处理结果。
16.第三方面,本技术提供一种人工智能芯片,包括:存储装置、计算装置及如第二方面所述的基于芯片的数据处理装置。
17.第四方面,本技术提供一种电子设备,所述电子设备包括:片外存储器及如第三方面所述的人工智能芯片。
18.第五方面,本技术提供一种板卡,所述板卡包括:存储器件、对外接口装置和控制器件以及如第三方面所述的人工智能芯片;
19.其中,所述人工智能芯片与所述存储器件、所述控制器件以及所述对外接口装置分别连接;
20.所述存储器件,用于存储目标数据;
21.所述对外接口装置,用于实现所述人工智能芯片与外部设备之间的数据传输;
22.所述控制器件,用于对所述人工智能芯片的状态进行监控。
23.本技术提供的基于芯片的融合算子处理方法、装置及相关产品,通过从芯片的存储装置上按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的计算装置上,所述矩阵单元是按照预设的矩阵单元维度对所述目标矩阵进行矩阵拆分获得的;采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到所述目标矩阵中全部矩阵单元的归一化分母之和以及所述目标矩阵对应的topk值;采用所述计算装置根据所述目标矩阵对应的topk值,计算每个topk值的归一化分子;采用所述计算装置根据所述目标矩阵对应的归一化分母之和及所述每个topk值的归一化分子,得到所述目标矩阵的融合算子的处理结果。由于将读取矩阵单元、对矩阵单元计算归一化分母并求和以及确定目标矩阵的topk值的过程融合在一起,形成了循环迭代计算,所以能够有效减少冗余计算,提高了数据处理效率。并且只需要从存储装置中读取一次矩阵单元,所以也有效减少了io操作。
附图说明
24.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
25.图1示出根据本技术实施例的板卡的结构图;
26.图2示出根据本技术实施例的组合处理装置的结构图;
27.图3示出根据本技术实施例的单核计算装置的内部结构示意图;
28.图4示出根据本技术实施例的多核计算装置的内部结构示意图;
29.图5示出根据本技术实施例的处理器核的内部结构示意图;
30.图6为本技术一个实施例提供的基于芯片的融合算子处理方法的流程图;
31.图7为本技术另一个实施例提供的基于芯片的融合算子处理方法的流程图;
32.图8为本技术又一个实施例提供的基于芯片的融合算子处理方法的流程图;
33.图9为本技术再一个实施例提供的基于芯片的融合算子处理方法的流程图;
34.图10为本技术还一个实施例提供的基于芯片的融合算子处理方法的流程图;
35.图11为本技术还一个实施例提供的基于芯片的融合算子处理装置的结构示意图。
具体实施方式
36.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
37.为了便于说明,首先会对本技术方案涉及到的计算机硬件结构进行说明:
38.图1示出根据本技术实施例的板卡的结构图,该板卡可以作为上述的执行端设备。如图1所示,板卡10包括芯片101,其是一种系统级芯片(system on chip,soc),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
39.芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如pcie接口等。
40.板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(micro controller unit,mcu)。
41.需要说明的是,本技术实施例中,芯片101用于处理fast-transformer网络模型分类运算。具体地,图2是示出根据本技术实施例的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
42.计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
43.接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
44.处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
45.存储装置204用以存储待处理的数据,其可以是dram,为ddr内存,大小通常为16g或更大,用于保存计算装置201和/或处理装置203的数据。
46.需要说明的是,本技术实施例中处理fast-transformer网络模型分类运算具体可在图2中的计算装置中。
47.在一种可能的实现方式中,还提供了一种单核计算装置。如图3所示,单核计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
48.控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,ifu)311及指令译码单元(instruction decode unit,idu)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
49.运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
50.存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron ram,nram)331、参数存储单元(weight ram,wram)332、直接内存访问模块(direct memory access,dma)333。nram 331用以存储输入神经元、输出神经元和计算后的中间结果;wram 332则用以存储深度学习网络的卷积核,即权值;dma 333通过总线34连接dram 204,负责单核计算装置301与dram 204间的数据搬运。
51.在另一种可能的实现方式中,本技术实施例中处理fast-transformer网络模型分类运算的计算装置为多核计算装置。
52.图4示出根据本技术实施例的处理器核的内部结构示意图。多核计算装置41采用分层结构设计,多核计算装置41作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置41是以片上系统-集群-处理器核的层次所构成的。
53.以片上系统的层级来看,如图4所示,多核计算装置41包括外部存储控制器401、外设通信模块402、片上互联模块403、同步模块404以及多个集群405。
54.外部存储控制器401可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的dram 204,从而自片外读取数据或是将
数据写入。外设通信模块402用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块403将外部存储控制器401、外设通信模块402及多个集群405连接起来,用以在各个模块间传输数据和控制信号。同步模块404是一种全局同步屏障控制器(global barrier controller,gbc),用以协调各集群的工作进度,确保信息的同步。多个集群405是多核计算装置41的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的多核计算装置41还可以包括8个、16个、64个、甚至更多的集群405。集群405用以高效地执行深度学习算法。
55.以集群的层级来看,如图4所示,每个集群405包括多个处理器核(ipu core)406及一个存储核(mem core)407。
56.处理器核406在图中示例性地展示4个,本披露不限制处理器核406的数量。其内部架构如图5所示。每个处理器核406类似于图3的单核计算装置301,同样包括三大模块:控制模块51、运算模块52及存储模块53。控制模块51、运算模块52及存储模块53的功用及结构大致与控制模块31、运算模块32及存储模块33相同,不再赘述。需特别说明的是,存储模块53包括输入/输出直接内存访问模块(input/output direct memory access,iodma)533、搬运直接内存访问模块(move direct memory access,mvdma)534。iodma 533通过广播总线409控制nram 531/wram 532与dram 204的访存;mvdma 534则用以控制nram 531/wram 532与存储单元(sram)408的访存。
57.回到图4,存储核407主要用以存储和通信,即存储处理器核406间的共享数据或中间结果、以及执行集群405与dram 204之间的通信、集群405间彼此的通信、处理器核406间彼此的通信等。在其他实施例中,存储核407具有标量运算的能力,用以执行标量运算。
58.存储核407包括sram 408、广播总线409、集群直接内存访问模块(cluster direct memory access,cdma)410及全局直接内存访问模块(global direct memory access,gdma)411。sram 408承担高性能数据中转站的角色,在同一个集群405内不同处理器核406之间所复用的数据不需要通过处理器核406各自向dram 204获得,而是经sram 408在处理器核406间中转,存储核407只需要将复用的数据从sram 408迅速分发给多个处理器核406即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
59.广播总线409、cdma 410及gdma 411则分别用来执行处理器核406间的通信、集群405间的通信和集群405与dram 204的数据传输。以下将分别说明。
60.广播总线409用以完成集群405内各处理器核406间的高速通信,此实施例的广播总线409支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从sram 408传输到特定几个处理器核406的通信方式,而广播则是将一份数据从sram 408传输到所有处理器核406的通信方式,属于多播的一种特例。
61.cdma 410用以控制在同一个计算装置201内不同集群405间的sram 408的访存。
62.gdma 411与外部存储控制器401协同,用以控制集群405的sram 408到dram 204的访存,或是将数据自dram 204读取至sram 408中。从前述可知,dram 204与nram 431或wram 432间的通信可以经由2个渠道来实现。第一个渠道是通过iodam 433直接联系dram 204与nram 431或wram 432;第二个渠道是先经由gdma 411使得数据在dram 204与sram 408间传输,再经过mvdma 534使得数据在sram 408与nram 431或wram 432间传输。虽然表面上看来
第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此dram 204与nram 431或wram 432间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
63.在其他实施例中,gdma 411的功能和iodma 533的功能可以整合在同一部件中。本披露为了方便描述,将gdma 411和iodma 533视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,gdma 411的功能、iodma 533的功能、cdma 410的功能、mvdma 534的功能亦可以由同一部件来实现。
64.下面以图2所示的组合处理装置及图4所示的多核计算装置为例,来详细说明及分析现有技术中采用芯片处理fast-transformer网络模型分类运算时的具体过程。
65.其中,全连接层的输出矩阵可表示为fc,其可表示为输入矩阵input与权重矩阵weight的矩阵乘的结果。
66.若输入矩阵的矩阵维度为n*ci,权重矩阵weight的矩阵维度为ci*co,则fc的矩阵维度为n*co。而在fast-transformer网络模型中,fc的矩阵维度一般都是很大的,如input的矩阵维度为64*1024,weight的矩阵维度为1024*90000,则fc的矩阵维度为64*90000。为了能够在芯片上顺利完成softmax分类器的运算以及确定最优的topk种分类结果的运算,一般是对fc以行向量的形式进行处理,那么每个行向量的维度为1*co。
67.在进行softmax分类器的计算时,softmax分类器的计算公式为:其中,xi和xj为fc的行向量中的元素。m为行向量里的全局最大值。
68.现有技术中,由于fc的维度很大,在计算装置的片上空间中无法一次存储fc,并且计算出fc行向量的最大值,所以通常的处理方式是将行向量拆分为多个行向量单元,每个行向量单元的维度为1*coi。示例性的,如可以为1*64。
69.在图2所示的组合处理装置中,计算装置201从存储装置204读取input和weight,计算装置201计算出fc,并将fc写入到存储装置204中。在计算装置201进行softmax分类器中的softmax运算时,为了减少计算装置201片上空间的存储压力,计算装置201从存储装置204中分段读取fc,如分段读取的行向量称为矩阵单元,那么每个矩阵单元可表示为a0,b0,c0,d0,
……
,在计算装置201中分别计算每段中的最大值,并将最大值在写入到存储装置204中。在计算装置201计算完所有矩阵单元的最大值后,计算装置201从存储装置204中读取所有矩阵单元的最大值,并确定出全局最大值,将全局最大值写入到存储装置204中。由于计算装置201中片上空间有限,所以在第一次获取到矩阵单元后,为了节省空间,完成矩阵单元最大值的计算后,就将矩阵单元丢弃了。所以在计算装置201计算softmax时,需要重新从存储装置204中读取矩阵单元a0,b0,c0,d0,
……
,在计算完成后,将每个元素xi的softmax计算结果写入到存储装置204中。最后计算装置201再从存储装置204中获取每个元素xi的softmax计算结果,进而确定给出topk值。
70.所以从现有技术中可以获知,需要从存储装置中多次读取矩阵单元和中间结果数据,并将中间结果数据多次写入到存储装置中,所以产生了大量的io操作。并且在先采用全连接层将特征表示矩阵映射到样本标记空间,然后采用softmax分类器进行分类,最终取出最优的topk种分类结果时,有大量的冗余计算,进而导致对数据的处理效率较低。
71.而现有技术中,采用图4的多核计算装置处理fast-transformer网络模型分类运算时,首先输入矩阵input和权重矩阵weight存储在dram204中,通过gdma 411将input和weight加载到sram 408中,sram408将input和weight通过广播总线分别同步到至少一个处理器核中,处理器核计算出fc,将fc通过sram 408存储到dram 204中。
72.然后sram408从dram 204中分段读取矩阵单元a0b0,c0,d0,
……
,sram将矩阵单元分别分发到至少一个处理器核中,由处理器核分别计算出矩阵单元中的最大值,sram 408将矩阵单元的最大值写入到dram 204中,dram 204中将所有的矩阵单元的最大值加载到sram 408中,由sram 408加载到处理器核中计算出全局最大值,并写入到dram 204中,从dram 204中重新加载矩阵单元a0,b0,c0,d0,
……
到sram 408中,由sram 408分发到处理器核中进行softmax的计算,将计算结果通过sram 408写入到dram 204中,然后将所有的softmax的计算结果通过sram 408分发到处理器核中,计算出topk值。
73.所以从图4所示的现有技术中可知,需要从dram 204中多次读取矩阵单元和中间结果数据,并将中间结果数据多次写入到dram 204中,所以产生了大量的io操作。并且在先采用全连接层将特征表示矩阵映射到样本标记空间,然后采用softmax分类器进行分类,最终取出最优的topk种分类结果时,有大量的冗余计算,进而导致对数据的处理效率较低。
74.所以为了解决现有技术中的技术问题,可将fc计算,softmax xi计算及确定topk值的过程进行融合,形成fc-logsoftmax-topk融合算子,能够在无需与存储装置进行大量的io操作就可完成topk值的计算。
75.具体地,如图2所示,可从存储装置中按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的计算装置上,计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值,然后采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子,进而根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果。
76.由于在对fc-logsoftmax-topk融合算子的计算过程中,只从存储装置中读取过一次矩阵单元,所以能够有效减少了io操作。并且在进行topk值的计算时,将softmax的计算过程与topk值的计算过程进行了融合,所以能够有效减少冗余计算,提高了对数据的处理效率。
77.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
78.实施例一
79.图6为本技术一个实施例提供的基于芯片的融合算子处理方法的流程图,如图6所示,本实施例的执行主体为基于芯片的融合算子处理装置,该基于芯片的融合算子处理装置位于芯片上。具体可以为图2中的计算装置,则本实施例提供的基于芯片的融合算子处理方法包括以下步骤:
80.步骤601,从芯片的存储装置上按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的计算装置上,矩阵单元是按照预设的矩阵单元维度对目标矩阵进行矩阵拆分获得的。
81.其中,目标矩阵为全连接矩阵fc中的行向量对应的矩阵。如fc的维度为n*co,则目标矩阵的维度为1*co。
82.其中,存储装置用以存储待处理的数据,其可以是dram,为ddr内存。
83.本实施例中,目标矩阵在拆分成矩阵单元时,可按照预设的矩阵单元维度进行拆分,如预设的矩阵单元维度可表示为coi,其中,coi可以为64,128等,则矩阵单元的维度为1*coi。其中,被拆分的矩阵单元可表示为a0,b0,c0,d0,
……

84.具体地,本实施例中,计算装置从存储装置中按照拆分的顺序依次读取矩阵单元,如图3所示,可将读取的矩阵单元缓存到存储模块中的存储模块33中的dma 333中。或者如图4所示,将读取的矩阵单元缓存到sram 408中。
85.可以理解的是,在计算装置获取到一个矩阵单元后,就可执行步骤602,即步骤601-步骤602是一个循环迭代的读取数据及处理数据的过程。
86.步骤602,采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值。
87.具体地,本实施例中,计算装置在每读取到一个矩阵单元后,计算矩阵单元的归一化分母,并与上一次计算获得的矩阵单元的归一化分母进行求和,获得本次的矩阵单元的归一化分母之和。
88.并且本实施例中,计算装置每读取到一个矩阵单元后,获取上一次迭代计算完成时确定出topk值,并将本次读取到的矩阵单元与上一次迭代计算完成时确定出topk值进行筛选,进而确定出当前计算完成时的topk值。
89.可以理解的是,步骤602迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理可由图3中的运算模块来执行,具体可由图3中的向量运算单元321来执行。其中,上一次计算获得的矩阵单元的归一化分母及上一次迭代计算完成时确定出topk值等中间结果可存储在计算装置的dma 333中。
90.或者步骤602迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理可由图4中的至少一个处理器核来执行。
91.其中,上一次计算获得的矩阵单元的归一化分母及上一次迭代计算完成时确定出topk值等中间结果可存储在sram 408中。
92.可以理解的是,无论是dma 333存储中间结果还是sram 408存储中间结果,是需要存储当前计算时的前一次计算出来的中间结果,在计算出当前的中间结果后,就将前一次计算出来的中间结果丢弃,使当前的中间结果作为下一次计算时的中间结果,所以可有效减少数据的存储量,不会造成存储空间不够的情况。
93.所以在经过步骤601的和步骤602循环迭代的读取数据及处理数据的过程后,能够获取到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值。
94.其中,目标矩阵中全部矩阵单元的归一化分母之和可表示为suma0b0c0
……
z0。
95.步骤603,采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子。
96.本实施例中,从图3中的dma 333或图4中的sram 408中获取到最后一次计算获得的topk值,该最后一次计算获得的topk值为目标矩阵对应的topk值,并采用图3中的向量运
算模块32确定出目标矩阵对应的topk值中的最大值或者采用图4中的至少一个处理器核确定出目标矩阵对应的topk值中的最大值,进而根据目标矩阵对应的topk值及最大值,计算出每个topk值的归一化分子。
97.其中,目标矩阵对应的topk值中的最大值可表示为tmax,每个topk值的归一化分子可表示为:e
xi-tmax
,其中,i为1,2,
……
,k。
98.可以理解的是,每个topk值的归一化分子可存储到图3中的dma 333或图4中的sram 408中。
99.步骤604,采用计算装置根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果。
100.具体地,本实施例中,图3中的运算模块32从dma 333中获取每个topk值的归一化分子和步骤602中最后一次计算得到的矩阵单元的归一化分母之和,将最后一次计算得到的矩阵单元的归一化分母之和确定为目标矩阵对应的归一化分母之和。并采用运算模块32计算出目标矩阵的融合算子的处理结果。
101.或者本实施例中,图4中的至少一个处理器核从sram408中获取每个topk值的归一化分子和目标矩阵对应的归一化分母之和。并采用至少一个处理器核计算出目标矩阵的融合算子的处理结果。
102.其中,目标矩阵的融合算子的处理结果可表示为其中,目标矩阵的融合算子的处理结果可表示为其中,i为1,2,
……
,k。topxi表示目标矩阵topk元素中的第i个元素,z0表示最后一个矩阵单元。
103.本实施例提供的基于芯片的融合算子处理方法,通过从芯片的存储装置上按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的计算装置上,矩阵单元是按照预设的矩阵单元维度对目标矩阵进行矩阵拆分获得的;采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值;采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子;采用计算装置根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果,由于将读取矩阵单元、对矩阵单元计算归一化分母并求和以及确定目标矩阵的topk值的过程融合在一起,形成了循环迭代计算,所以能够有效减少冗余计算,提高了数据处理效率。并且只需要从存储装置中读取一次矩阵单元,所以也有效减少了io操作。
104.实施例二
105.图7为本技术另一个实施例提供的基于芯片的融合算子处理方法的流程图,如图7所示,本实施例提供的基于芯片的融合算子处理方法在实施例一提供的基于芯片的融合算子处理方法的基础上,对步骤602进行进一步细化,其中,如图3所示,计算装置包括存储模块和运算模块。则本实施例提供的基于芯片的融合算子处理方法中步骤602中采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,直至得到目标矩阵中全部矩阵单元的归一化分母之和的进一步细化,则包括以下步骤:
106.步骤6021,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块计算当前次迭代的矩阵单元的归一化分母。
107.作为一种可选实施方式,本实施例中,步骤6021包括以下步骤:
108.步骤6021a,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的初始最大值元素。
109.示例性的,当前迭代的矩阵单元为b0,则前一次迭代计算完a0的归一化分母,a0可表示为suma0=∑e
xj-t0
,其中,xj为a0中的第j个元素,t0为a0中的最大值元素,即为a0的初始最大值元素。
110.那么在迭代计算当前次的矩阵单元的归一化分母并求和时,将b0从存储模块移动到运算模块,采用运算模块确定b0的最大值元素,该最大值元素为初始最大值元素。
111.步骤6021b,将上一次迭代时的矩阵单元的目标最大值元素从存储模块移动到运算模块,并采用运算模块确定上一次迭代时的矩阵单元的目标最大值元素与初始最大值元素中的最大值,并将该最大值确定为当前次迭代的矩阵单元对应的目标最大值元素。
112.其中,上一次迭代时的矩阵单元的目标最大值元素为a0中的初始最大值元素t0,将t0从存储模块移动到运算模块,运算模块确定t0与t1中的最大值,最大值可表示为t’。若最大值t’=t0,则将t0确定为b0对应的目标最大值元素,若最大值为t’=t1,则将t1确定为b0的目标最大值元素。
113.步骤6021c,采用运算模块根据目标最大值元素计算当前次迭代的矩阵单元的归一化分母。
114.具体地,若t0》t1,则b0的归一化分母表示为:sumb0=∑e
xj-t0
。若t0《t1,则b0的归一化分母表示为:sumb0=∑e
xj-t1

115.示例性的,在以当前迭代的矩阵单元为c0,对步骤6021a-步骤6021c进行说明。
116.具体地,则当前次迭代的矩阵单元c0从存储模块移动到运算模块,并采用运算模块确定c0中的初始最大值元素,为t2。上一次迭代时的矩阵单元的目标最大值元素为t’,将t’从存储模块移动到运算模块,并采用运算模块确定t’与t2的最大值,将最大值确定为c0的目标最大值元素。若t’》t2,则t’为c0的目标最大值元素,则c0的归一化分母表示为:sumc0=∑e
xj-t

若t’《t2,则t2为c0的目标最大值元素,则c0的归一化分母表示为sumc0=∑e
xj-t2

117.本实施例中,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块计算当前次迭代的矩阵单元的归一化分母时,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的初始最大值元素;将上一次迭代时的矩阵单元的目标最大值元素从存储模块移动到运算模块,并采用运算模块确定上一次迭代时的矩阵单元的目标最大值元素与初始最大值元素中的最大值,并将该最大值确定为当前次迭代的矩阵单元对应的目标最大值元素;采用运算模块根据目标最大值元素计算当前次迭代的矩阵单元的归一化分母,能够保证在计算当前次迭代的矩阵单元的归一化分母时,是采用迭代计算完的目标矩阵中的最大值元素计算出来的,进而保证了当前次迭代的矩阵单元的归一化分母计算的准确性。
118.步骤6022,采用运算模块将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和,直至得到目标矩阵中全部矩阵单元的归一化分母之和。
119.示例性的,在以当前迭代的矩阵单元为c0进行说明。则上一次迭代计算完成的归
一化分母之和可表示为suma0b0。当前次迭代的矩阵单元的归一化分母为sumc0,则运算模块将suma0b0和sumc0进行求和,获得当前次迭代后的归一化分母之和,可表示为suma0b0c0=suma0b0+sumc0。
120.可选地,为了保证当前次迭代后的归一化分母之和的准确,则在步骤6022之前,还包括以下步骤:
121.步骤6022a,采用运算模块判断上一次迭代时的矩阵单元的目标最大值元素是否小于当前次迭代的矩阵单元中的初始最大值元素。
122.步骤6022b,若确定上一次迭代时的矩阵单元的目标最大值元素小于当前次迭代的矩阵单元中的初始最大值元素,则更新上一次迭代计算完成的归一化分母之和。
123.本实施例中,由于上一次迭代计算完成的归一化分母之和是采用上一次迭代计算完成为止时目标矩阵中元素的最大值计算完成的,该上一次迭代计算完成为止时目标矩阵中元素的最大值为上一次迭代时的矩阵单元的目标最大值元素。但是在处理当前次迭代的矩阵单元时,又会引出矩阵单元中的初始最大值元素,所以为了保证当前次迭代后的归一化分母之和是采用当前迭代计算为止的目标矩阵中元素的最大值来计算完成的,需要判断是否需要对上一次迭代计算完成的归一化分母之和进行更新。
124.具体地,采用运算模块判断上一次迭代时的矩阵单元的目标最大值元素是否小于当前次迭代的矩阵单元中的初始最大值元素,若确定上一次迭代时的矩阵单元的目标最大值元素小于当前次迭代的矩阵单元中的初始最大值元素,则说明上一次迭代计算完成为止时目标矩阵中元素的最大值并不是当前次迭代计算时的最大值,则对上一次迭代计算完成的归一化分母之和进行更新,在对上一次迭代计算完成的归一化分母之和进行更新时,具体的更新方式为sumy0更新为sumy0/e
ty
*e
t


125.其中,ty表示当前次迭代的矩阵单元中的初始最大值元素。t

表示上一次迭代时的矩阵单元的目标最大值元素。
126.可以理解的是,若确定上一次迭代时的矩阵单元的目标最大值元素大于或等于当前次迭代的矩阵单元中的初始最大值元素,则无需更新上一次迭代计算完成的归一化分母之和。
127.示例性的,在以当前迭代的矩阵单元为c0进行说明。c0的初始最大值元素表示为t2。
128.具体地,运算模块从存储模块中获取上一次迭代时的矩阵单元的目标最大值元素,那么对于c0而言,上一次迭代时的矩阵单元的目标最大值元素为t’,判断t’与t2的大小关系,若t’《t2,则说明在上一次迭代计算完成的归一化分母之和不是采用当前迭代计算为止的目标矩阵中元素的最大值来计算的,则更新上一次迭代计算完成的归一化分母之和。则对于c0而言,上一次迭代计算完成的归一化分母之和suma0b0更新为suma0b0/e
t2
*e
t


129.需要说明的是,若更新上一次迭代计算完成的归一化分母之和,则步骤6022具体包括:
130.采用运算模块将更新后的上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和。
131.继续上面的示例,suma0b0c0=suma0b0/e
t2
*e
t

+sumc0
132.本实施例提供的基于芯片的融合算子处理方法,在采用运算模块将上一次迭代计
算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和之前,采用运算模块判断上一次迭代时的矩阵单元的目标最大值元素是否小于当前次迭代的矩阵单元中的初始最大值元素;若确定上一次迭代时的矩阵单元的目标最大值元素小于当前次迭代的矩阵单元中的初始最大值元素,则更新上一次迭代计算完成的归一化分母之和,在确定上一次迭代时的矩阵单元的目标最大值元素小于当前次迭代的矩阵单元中的初始最大值元素时,通过对上一次迭代计算完成的归一化分母之和进行更新,能够有效保证当前次迭代后的归一化分母之和的准确性。
133.实施例三
134.图8为本技术又一个实施例提供的基于芯片的融合算子处理方法的流程图,如图8所示,本实施例提供的基于芯片的融合算子处理方法在上述任意一个实施例提供的基于芯片的融合算子处理方法的基础上,对步骤602中采用计算装置确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵对应的topk值的进一步细化,则本实施例中,步骤602还包括以下步骤:
135.步骤6023,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的topk值。
136.本实施例中,在当前次迭代的矩阵单元中包括多于k个的矩阵元素,将当前次迭代的矩阵单元从存储模块移动到运算模块后,运算模块对当前次迭代的矩阵单元中的多于k个的矩阵元素比较大小,进而确定出排在前k个的矩阵元素,该排在前k个的矩阵元素为当前次迭代的矩阵单元中的topk值。
137.示例性的,当前次迭代的矩阵单元为c0,在c0中有64个矩阵元素,运算单元对这64个矩阵元素比较大小,确定出由大到小的前k个矩阵元素为c0的topk值。
138.步骤6024,将上一次迭代计算完成时确定出的topk值从存储模块移动到运算模块,并采用运算模块从当前次迭代的矩阵单元的topk值和上一次迭代计算完成时确定出的topk值中筛选出当前次迭代计算完成时的topk值,直至得到目标矩阵对应的topk值。
139.具体地,上一次迭代计算完成时确定出的topk值存储在存储模块,运算模块从存储模块中读取上一次迭代计算完成时确定出的topk值。并获取当前次迭代的矩阵单元的topk值,将两个topk值再次进行比较,并由大到小进行排序,确定出排序在前k个的值为当前次迭代计算完成时的topk值。
140.同理,在下一次迭代计算时,获取当前迭代计算完成时确定出的topk值,采用运算模块从下一次迭代的矩阵单元的topk值和当前迭代计算完成时确定出的topk值中筛选出下一次迭代计算完成时的topk值,以此类推,直至得到目标矩阵对应的topk值。
141.示例性的,当前次迭代的矩阵单元为c0,c0的topk值为topk_c0。上一次迭代计算完成时确定出的topk值为topk_a0b0。那么将topk_c0和topk_a0b0再次进行比较,确定出当前次迭代计算完成时的topk值为topk_a0b0c0。
142.下一次迭代的矩阵单元为d0,d0的topk值为topk_d0。上一次迭代计算完成时确定出的topk值为topk_a0b0c0。那么将topk_d0和topk_a0b0c0再次进行比较,确定出下一次迭代计算完成时的topk值为topk_a0b0c0d0。那么目标矩阵对应的topk值为topk_a0b0c0d0
……
z0。其中,z0为目标矩阵中的最后一个矩阵单元。
143.本实施例提供的基于芯片的融合算子处理方法,在采用计算装置确定每一个矩阵
单元的topk值并迭代处理,直至得到目标矩阵对应的topk值时,将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的topk值;将上一次迭代计算完成时确定出的topk值从存储模块移动到运算模块,并采用运算模块从当前次迭代的矩阵单元的topk值和上一次迭代计算完成时确定出的topk值中筛选出当前次迭代计算完成时的topk值,直至得到目标矩阵对应的topk值,由于在计算目标矩阵的topk值时,所进行的矩阵单元topk值的迭代处理,所以无需从存储装置中再次读取矩阵单元就可确定出目标矩阵的topk值,所以有效减少了io操作。并且无需计算除topk值以外的其他矩阵元素的softmax的值,所以进一步减少了冗余计算,提高了数据处理效率。
144.实施例四
145.图9为本技术再一个实施例提供的基于芯片的融合算子处理方法的流程图,如图9所示,本实施例提供的基于芯片的融合算子处理方法在上述任意一个实施例提供的基于芯片的融合算子处理方法的基础上,对步骤603的进一步细化,则本实施例提供的基于芯片的融合算子处理方法,步骤603包括以下步骤:
146.步骤6031,采用运算模块从存储模块获取目标矩阵对应的topk值,并确定目标矩阵对应的topk值中的最大值。
147.其中,在存储模块中存储有目标矩阵对应的topk。运算模块从存储模块中读取目标矩阵对应的topk值,并确定目标矩阵对应的topk值中的最大值为tmax。
148.步骤6032,采用运算模块根据每个topk值及目标矩阵对应的topk值中的最大值计算每个topk值的归一化分子。
149.其中,每个topk值的归一化分子可表示为e
topxi-tmax
。其中topxi表示topk值中的第i个元素。
150.本实施例提供的基于芯片的融合算子处理方法,在采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子时,采用运算模块从存储模块获取目标矩阵对应的topk值,并确定目标矩阵对应的topk值中的最大值;采用运算模块根据每个topk值及目标矩阵对应的topk值中的最大值计算每个topk值的归一化分子,由于目标矩阵对应的topk值是基于目标矩阵的topk值计算出的,所以只需要从存储模块中读取目标矩阵对应的topk值,即可在运算模块中计算出目标矩阵对应的topk值中的最大值,无需再从存储装置中去读取数据,所以有效减少了io操作。
151.可选地,本实施例提供的基于芯片的融合算子处理方法,步骤604在上述任意一个实施例提供的基于芯片的融合算子处理方法的基础上,包括以下步骤:
152.步骤6041,采用运算模块分别计算每个topk值的归一化分子与目标矩阵对应的归一化分母之和的商值。
153.其中,每个topk值的归一化分子与目标矩阵对应的归一化分母之和的商值表示为:
154.步骤6042,将每个商值确定为目标矩阵的融合算子的处理结果。
155.其中,目标矩阵的融合算子的处理结果可表示为softmax topxi,所以
156.实施例五
157.图10为本技术还一个实施例提供的基于芯片的融合算子处理方法的流程图,如图10所示,本实施例提供的基于芯片的融合算子处理方法基于图4所示的多核计算装置。其中如图4所示,存储装置为dram,存储模块为共享随机存取存储器sram,运算模块为至少一个处理器核。则本实施例提供的基于芯片的融合算子处理方法包括以下步骤:
158.步骤701,从dram上按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的sram上。
159.其中,矩阵单元是按照预设的矩阵单元维度对目标矩阵进行矩阵拆分获得的。
160.如图4所示,矩阵单元是通过gdma加载到sram上的。
161.步骤702,采用至少一个处理器核迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值。
162.具体地,将当前次迭代的矩阵单元从sram移动到至少一个处理器核,并采用至少一个处理器核计算当前次迭代的矩阵单元的归一化分母。采用至少一个处理器核将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和,直至得到目标矩阵中全部矩阵单元的归一化分母之和。
163.示例性的,如图4所示,将四个处理器核同时从sram中读取当前次迭代的矩阵单元,每个处理器核计算当前次迭代的矩阵单元的归一化分母。四个处理器核同时将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和。以此类推,直到得到目标矩阵中全部矩阵单元的归一化分母之和。
164.其中,每个处理器核计算当前次迭代的矩阵单元的归一化分母的方式与上述实施例中运算模块计算当前次迭代的矩阵单元的归一化分母的方式类似,在此不再一一赘述。同理,至少一个处理器核将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和的方式与上述实施例中运算模块将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和的方式类似,在此不再一一赘述。
165.步骤703,采用至少一个处理器核根据目标矩阵对应的topk值,计算每个topk值的归一化分子。
166.示例性的,如图4所示,采用四个处理器核同时根据目标矩阵对应的topk值,计算每个topk值的归一化分子,或者采用四个处理器核中的任意一个或多个根据目标矩阵对应的topk值,计算每个topk值的归一化分子。
167.其中,采用处理器核根据目标矩阵对应的topk值,计算每个topk值的归一化分子的方式与上述实施例中采用运算模块根据目标矩阵对应的topk值,计算每个topk值的归一化分子的方式类似,在此不再一一赘述。
168.步骤704,采用至少一个处理器核根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果。
169.示例性的,如图4所示,采用四个处理器核中的一个或多个同时根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果。其
具体实现方式与采用运算模块根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果的实现方式类似,在此不再一一赘述。
170.本实施例提供的基于芯片的融合算子处理方法,能够适用于多个计算装置,并且将读取矩阵单元、对矩阵单元计算归一化分母并求和以及确定目标矩阵的topk值的过程融合在一起,形成了循环迭代计算,所以能够有效减少冗余计算,提高了数据处理效率。并且只需要从存储装置中读取一次矩阵单元,所以也有效减少了io操作。
171.实施例六
172.图11为本技术还一个实施例提供的基于芯片的融合算子处理装置的结构示意图,如图11所示,本技术实施例提供的基于芯片的融合算子处理装置用于执行图6所示的基于芯片的融合算子处理方法,则本实施例提供的基于芯片的融合算子处理装置80包括:加载单元81,迭代处理单元82及计算单元83。
173.其中,加载单元81,用于从芯片的存储装置上按照将目标矩阵拆分成矩阵单元的顺序依次将矩阵单元加载到芯片上的计算装置上,矩阵单元是按照预设的矩阵单元维度对目标矩阵进行矩阵拆分获得的。迭代处理单元82,用于采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,并确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵中全部矩阵单元的归一化分母之和以及目标矩阵对应的topk值。计算单元83,用于采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子。计算单元83,还用于采用计算装置根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果。
174.可选地,计算装置包括存储模块和运算模块。
175.迭代处理单元82,在采用计算装置迭代计算每一个矩阵单元的归一化分母并求和,直至得到目标矩阵中全部矩阵单元的归一化分母之和时,具体用于:
176.将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块计算当前次迭代的矩阵单元的归一化分母;采用运算模块将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和,直至得到目标矩阵中全部矩阵单元的归一化分母之和。
177.迭代处理单元82,在将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块计算当前次迭代的矩阵单元的归一化分母时,具体用于:
178.将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的初始最大值元素;将上一次迭代时的矩阵单元的目标最大值元素从存储模块移动到运算模块,并采用运算模块确定上一次迭代时的矩阵单元的目标最大值元素与初始最大值元素中的最大值,并将该最大值确定为当前次迭代的矩阵单元对应的目标最大值元素;采用运算模块根据目标最大值元素计算当前次迭代的矩阵单元的归一化分母。
179.迭代处理单元82,在采用运算模块将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和之前,还用于:
180.采用运算模块判断上一次迭代时的矩阵单元的目标最大值元素是否小于当前次迭代的矩阵单元中的初始最大值元素;若确定上一次迭代时的矩阵单元的目标最大值元素
小于当前次迭代的矩阵单元中的初始最大值元素,则更新上一次迭代计算完成的归一化分母之和;
181.迭代处理单元82,在采用运算模块将上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和时,具体用于:
182.采用运算模块将更新后的上一次迭代计算完成的归一化分母之和与当前次迭代的矩阵单元的归一化分母进行求和,以获得当前次迭代后的归一化分母之和。
183.可选地,迭代处理单元82,在采用计算装置确定每一个矩阵单元的topk值并迭代处理,直至得到目标矩阵对应的topk值时,具体用于:
184.将当前次迭代的矩阵单元从存储模块移动到运算模块,并采用运算模块确定当前次迭代的矩阵单元中的topk值;将上一次迭代计算完成时确定出的topk值从存储模块移动到运算模块,并采用运算模块从当前次迭代的矩阵单元的topk值和上一次迭代计算完成时确定出的topk值中筛选出当前次迭代计算完成时的topk值,直至得到目标矩阵对应的topk值。
185.可选地,计算单元83,在采用计算装置根据目标矩阵对应的topk值,计算每个topk值的归一化分子时,具体用于:
186.采用运算模块从存储模块获取目标矩阵对应的topk值,并确定目标矩阵对应的topk值中的最大值;采用运算模块根据每个topk值及目标矩阵对应的topk值中的最大值计算每个topk值的归一化分子。
187.可选地,计算单元,在采用计算装置根据目标矩阵对应的归一化分母之和及每个topk值的归一化分子,得到目标矩阵的融合算子的处理结果时,具体用于:
188.采用运算模块分别计算每个topk值的归一化分子与目标矩阵对应的归一化分母之和的商值;将每个商值确定为目标矩阵的融合算子的处理结果。
189.可选地,存储装置为dram,存储模块为共享随机存取存储器sram,运算模块为至少一个处理器核。
190.本技术还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如实施例一任一项的基于芯片的融合算子处理方法。
191.计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nand flash)、固态硬盘(ssd))等。
192.本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现实施例一任一项的基于芯片的融合算子处理方法。
193.本技术实施例还提供一种人工智能芯片,包括存储装置、计算装置及如上述实施例提供的基于芯片的数据处理装置。
194.本技术实施例还提供一种电子设备,电子设备包括:片外存储器及如上述实施例提供的人工智能芯片。
195.本技术实施例还提供一种板卡,卡包括:存储器件、对外接口装置和控制器件以及
如上述实施例提供的人工智能芯片;
196.其中,人工智能芯片与存储器件、控制器件以及对外接口装置分别连接;存储器件,用于存储目标数据;对外接口装置,用于实现人工智能芯片与外部设备之间的数据传输;控制器件,用于对人工智能芯片的状态进行监控。
197.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本技术所必须的。
198.进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
199.应该理解,上述的装置实施例仅是示意性的,本技术的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
200.另外,若无特别说明,在本技术各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
201.集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。
202.集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
203.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1