CN118210554A - 处理器、服务器、数据处理方法与装置、存储介质和产品 - Google Patents
处理器、服务器、数据处理方法与装置、存储介质和产品 Download PDFInfo
- Publication number
- CN118210554A CN118210554A CN202410627302.5A CN202410627302A CN118210554A CN 118210554 A CN118210554 A CN 118210554A CN 202410627302 A CN202410627302 A CN 202410627302A CN 118210554 A CN118210554 A CN 118210554A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- cursor
- round
- cache
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 230000015654 memory Effects 0.000 claims abstract description 253
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 29
- 238000004364 calculation method Methods 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 230000007547 defect Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施方式公开了处理器、服务器、数据处理方法、装置、存储介质和产品。处理器包括第一高速缓冲存储器、第二高速缓冲存储器和计算单元,其中:第一高速缓冲存储器,用于存储以对齐访问方式从存储器中读取的第一数据;计算单元,用于以非对齐访问方式从第一高速缓冲存储器读取第一数据,基于人工智能算子对第一数据执行计算以得到第二数据,以非对齐访问方式将第二数据发送到第二高速缓冲存储器;第二高速缓冲存储器,用于存储第二数据,其中存储在第二高速缓冲存储器中的第二数据以对齐访问方式被发送到存储器。避免以非对齐访问方式直接存取数据,提升算子性能;同时通过利用多游标间的协同配合循环执行数据访问,降低了实施复杂度。
Description
技术领域
本发明涉及人工智能(Artificial Intelligence,AI)技术领域,更具体的说,涉及处理器、服务器、数据处理方法与装置、存储介质和产品。
背景技术
在机器指令层面,当尝试从不能被 N 整除 (addr % N != 0) 的内存起始地址读取 N 字节的数据时即发生非对齐访问,当尝试从能被 N 整除的内存起始地址读取 N 字节的数据时即发生对齐访问,其中N 为数据的自然对齐值 (Natural alignment)。计算机硬件针对对齐访问具有更高的带宽,而针对非对齐访问则具有较低带宽。
AI算子(operator)通常用于构建神经网络的各个层和组件,实现数据的传递、转换和计算。AI算子经常具有访问分段(slice)数据的需求。
目前,AI算子直接以非对齐方式访问分段数据,数据存储速度慢,影响算子性能。
发明内容
本发明提出处理器、服务器、数据处理方法、装置、存储介质和产品,有助于提高算子性能。
本发明实施方式的技术方案如下:
一种处理器,包括第一高速缓冲存储器、第二高速缓冲存储器和计算单元,其中:
所述第一高速缓冲存储器,用于存储以对齐访问方式从存储器中读取的第一数据;
计算单元,用于以非对齐访问方式从所述第一高速缓冲存储器读取第一数据,基于AI算子对所述第一数据执行计算以得到第二数据,以非对齐访问方式将所述第二数据发送到所述第二高速缓冲存储器;
所述第二高速缓冲存储器,用于存储所述第二数据,其中存储在所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
在一个实施方式中,所述计算单元包括第一寄存器和第二寄存器,其中:
所述第一寄存器,用于以非对齐访问方式从所述第一高速缓冲存储器中多轮循环读取所述第一数据,其中每轮循环读取的数据量等于硬件对齐要求,每轮循环的读取位置是根据所述AI算子的偏移量和所述硬件对齐要求而动态更新的;
所述第二寄存器,用于以非对齐访问方式将所述第二数据多轮循环发送到所述第二高速缓冲存储器,其中每轮循环发送的数据量等于所述硬件对齐要求,每轮循环的发送位置是根据所述AI算子的偏移量和所述硬件对齐要求而动态更新的。
在一个实施方式中,所述计算单元,进一步用于以对齐访问方式从所述存储器读取第三数据;
所述基于AI算子对所述第一数据执行计算以得到第二数据包括:基于所述AI算子对所述第一数据和所述第三数据执行计算以得到所述第二数据和第四数据;
所述计算单元,进一步用于以对齐访问方式将所述第四数据发送到所述存储器。
一种AI服务器,包括:
存储器,用于存储第一数据;
处理器,包括第一高速缓冲存储器、第二高速缓冲存储器和计算单元,其中:所述第一高速缓冲存储器,用于存储以对齐访问方式从所述存储器中读取的第一数据;计算单元,用于以非对齐访问方式从所述第一高速缓冲存储器读取所述第一数据,基于AI算子对所述第一数据执行计算以得到第二数据,以非对齐访问方式将所述第二数据发送到所述第二高速缓冲存储器;所述第二高速缓冲存储器,用于存储所述第二数据,其中存储在所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器;
所述存储器,还用于存储所述第二数据。
在一个实施方式中,所述计算单元包括第一寄存器和第二寄存器,其中:
所述第一寄存器,用于以非对齐访问方式从所述第一高速缓冲存储器中多轮循环读取所述第一数据,其中每轮循环读取的数据量等于硬件对齐要求,每轮循环的读取位置是根据所述AI算子的偏移量和所述硬件对齐要求而动态更新的;
所述第二寄存器,用于以非对齐访问方式将所述第二数据多轮循环发送到所述第二高速缓冲存储器,其中每轮循环发送的数据量等于所述硬件对齐要求,每轮循环的发送位置是根据所述AI算子的偏移量和所述硬件对齐要求而动态更新的。
在一个实施方式中,所述计算单元,进一步用于以对齐访问方式从所述存储器读取第三数据;
所述基于AI算子对所述第一数据执行计算以得到第二数据包括:基于所述AI算子对所述第一数据和所述第三数据执行计算以得到所述第二数据和第四数据;
所述计算单元,进一步用于以对齐访问方式将所述第四数据发送到所述存储器。
一种AI算子的数据处理方法,包括:
以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中所述第一数据是以对齐访问方式从存储器中读取的;
基于AI算子,对所述第一数据执行计算以得到第二数据;
以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器,其中所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
在一个实施方式中,所述第一高速缓冲存储器为第一高速缓冲循环存储器,所述第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;所述第二高速缓冲存储器为第二高速缓冲循环存储器,所述第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数;
所述以非对齐访问方式从第一高速缓冲存储器读取第一数据包括:基于表征所述第一高速缓冲循环存储器中的第一存储位置的第一游标,从所述第一存储位置开始读取第一数据,其中读取的数据量等于所述硬件对齐要求;
所述方法还包括:基于表征所述第一高速缓冲循环存储器中的第二存储位置的第二游标,从所述第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于所述硬件对齐要求;
所述以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器包括:
基于进一步表征所述第二高速缓冲循环存储器中的第三存储位置的所述第一游标,向所述第三存储位置开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求;
所述方法还包括:基于表征所述第二高速缓冲存储器中的第四存储位置的第三游标,向所述存储器开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求。
在一个实施方式中,所述以非对齐访问方式从第一高速缓冲存储器读取第一数据、从第二存储位置开始存储从存储器中继续读取的第一数据、以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器以及向所述存储器开始发送所述第二数据是多轮循环执行的,其中每轮循环包括:
基于所述硬件对齐要求、所述N和本轮循环中的第一游标,更新下轮循环中的第一游标;
基于所述硬件对齐要求、所述N和本轮循环中的第二游标,更新下轮循环中的第二游标;
基于所述硬件对齐要求、所述N和本轮循环中的第三游标,更新下轮循环中的第三游标;
其中第一轮循环中的第一游标为所述AI算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
在一个实施方式中,所述更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);
所述更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);
所述更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);
其中所述硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
在一个实施方式中,包括:
基于所述AI算子的偏移量,从所述存储器中读取所述第一数据中的偏移数据;
基于所述AI算子,对所述偏移数据执行计算以得到运算结果;
基于所述偏移量,将所述运算结果填充到所述第二高速缓冲存储器的所述第二数据中。
一种AI算子的数据处理装置,包括:
读取模块,用于以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中所述第一数据是以对齐访问方式从存储器中读取的;
计算模块,用于基于AI算子,对所述第一数据执行计算以得到第二数据;
发送模块,用于以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器,其中所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
在一个实施方式中,所述第一高速缓冲存储器为第一高速缓冲循环存储器,所述第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;所述第二高速缓冲存储器为第二高速缓冲循环存储器,所述第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数;
所述读取模块,基于表征所述第一高速缓冲循环存储器中的第一存储位置的第一游标,从所述第一存储位置开始读取第一数据,其中读取的数据量等于所述硬件对齐要求;基于表征所述第一高速缓冲循环存储器中的第二存储位置的第二游标,从所述第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于所述硬件对齐要求;
所述发送模块,用于基于进一步表征所述第二高速缓冲循环存储器中的第三存储位置的所述第一游标,向所述第三存储位置开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求;基于表征所述第二高速缓冲存储器中的第四存储位置的第三游标,向所述存储器开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求。
在一个实施方式中,所述读取模块,用于多轮循环执行以非对齐访问方式从第一高速缓冲存储器读取第一数据及从第二存储位置开始存储从存储器中继续读取的第一数据;
所述发送模块,用于多轮循环执行以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器及向所述存储器开始发送所述第二数据;
其中每轮循环包括:
基于所述硬件对齐要求、所述N和本轮循环中的第一游标,更新下轮循环中的第一游标;
基于所述硬件对齐要求、所述N和本轮循环中的第二游标,更新下轮循环中的第二游标;
基于所述硬件对齐要求、所述N和本轮循环中的第三游标,更新下轮循环中的第三游标;
其中第一轮循环中的第一游标为所述AI算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
在一个实施方式中,所述更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);
所述更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);
所述更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);
其中所述硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
一种电子设备,包括:
存储器;
处理器;
其中所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上任意所述的AI算子的数据处理方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使所述处理器执行如上任意所述的AI算子的数据处理方法。
一种程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任意所述的AI算子的数据处理方法。
从上述技术方案可以看出,在本发明实施方式中,以对齐访问方式将第一数据从处理器外部的存储器存储到处理器内部的第一高速缓冲存储器。在处理器内部,以符合AI算子要求的非对齐访问方式,从第一高速缓冲存储器为AI算子快速提供数据。而且,在处理器内部,以符合AI算子要求的非对齐访问方式,将AI算子计算出的第二数据存储到第二高速缓冲存储器。可以通过对齐访问方式将第二高速缓冲存储器中的第二数据发送到存储器。由此可见,本发明实施方式避免了以非对齐访问方式直接访问存储器,能够显著提升数据访问速度,并提高算子的性能 。
而且,利用多游标间的协同配合循环执行数据访问,降低了实施复杂度。
附图说明
图1为相关技术中的GLU算子的数据处理过程的示意图。
图2为根据本发明实施方式的处理器和AI服务器的示范性结构图。
图3为根据本发明实施方式的AI算子的数据处理方法的示范性流程图。
图4为根据本发明实施方式的GLU算子在第一循环中的数据处理示意图。
图5为根据本发明实施方式的GLU算子在第二循环中的数据处理示意图。
图6为根据本发明实施方式的GLU算子在第三循环中的数据处理示意图。
图7为根据本发明实施方式的AI算子的数据处理装置的示范性结构图。
图8为根据本发明实施方式的电子设备的示范性结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
首先,对非对齐访问和对齐访问进行说明。当尝试从不能被 N 整除 (addr % N != 0) 的内存起始地址读取 N 字节的数据时即发生非对齐访问。当尝试从能被 N 整除的内存起始地址读取 N 字节的数据时即发生对齐访问,其中N 为数据的自然对齐值。举例而言,从内存地址 0x10004 读取 4 字节是对齐访问,而从内存地址 0x10005 读取 4 字节数据是非对齐访问。计算机硬件针对对齐访问具有更高的带宽,而针对非对齐访问则具有较低带宽。
目前,各种类型的AI算子(比如,GLU算子或Chunk算子,等等)经常有访问分段数据的需求。在相关技术中,AI算子直接以非对齐方式访问分段数据,数据存储速度慢,影响算子性能。
下面以GLU算子为例,对相关技术中的涉及分段数据的访问方式进行说明。GLU算子是一种神经网络中常用的算子,通常用于序列模型中,例如循环神经网络(RNN)和长短期记忆网络(LSTM)中,通过门控机制来控制信息的流动,以改善模型的表示能力和学习能力。
图1为相关技术中的GLU算子的数据处理过程的示意图。GLU算子的输入数据包括非分段输入数据和分段输入数据。非分段输入数据和分段输入数据都存储在处理器外部的存储器中,比如,存储在高带宽存储器(High Bandwidth Memory,HBM)中。处理器中的GLU算子经由寄存器,以对齐访问方式直接从存储器中读取非分段输入数据。GLU算子还经由寄存器,以非对齐访问方式直接从存储器中读取分段输入数据。GLU算子基于非分段输入数据和分段输入数据执行运算,得到非分段输出数据和分段输出数据。然后,GLU算子经由寄存器,以对齐访问方式将非分段输出数据存储到存储器且以非对齐访问方式将分段输出数据存储到存储器中。
可见,在相关技术中,GLU算子直接以非对齐访问方式从存储器中获取分段输入数据以及直接以非对齐访问方式将分段输出数据存储到存储器,具有较低的带宽,影响了GLU的运算性能。
在本发明实施方式中,并不以非对齐访问方式直接访问处理器外部的存储器,而是首先以对齐访问方式将数据从处理器外部的存储器存储到处理器内部的高速缓冲存储器中,再通过内部的高速缓冲存储器为算子快速提供数据,可以避免直接以非对齐访问方式访问存储器的诸多缺点,并能够显著提升算子的性能。
上述披露详细说明了相关技术中存在的技术缺陷、导致该技术缺陷的原因以及克服该技术缺陷的思考分析过程。实际上,针对上述技术缺陷的认知并不是本领域的普遍知识,而是发明人在研究中的新颖发现。另外,该技术缺陷的原因追溯以及克服该技术缺陷的思考分析过程,也都是发明人在实际研究过程中的逐步分析结果,均不是本领域的普遍知识。
图2为根据本发明实施方式的处理器和AI服务器的示范性结构图。
在图2中,处理器10包括第一高速缓冲存储器11、第二高速缓冲存储器13和计算单元12。其中:第一高速缓冲存储器11,用于存储以对齐访问方式从处理器10之外的存储器20中读取的第一数据;计算单元12,用于以非对齐访问方式从第一高速缓冲存储器读取第一数据,基于AI算子对第一数据执行计算以得到第二数据,以非对齐访问方式将第二数据发送到第二高速缓冲存储器13;第二高速缓冲存储器13,用于存储第二数据,其中存储在第二高速缓冲存储器13中的第二数据,可以以对齐访问方式被发送到存储器20。
第一数据可以实施为AI算子的分段输入数据。第二数据可以实施为AI算子的分段输出数据。可见,以对齐访问方式将第一数据从处理器10外部的存储器20存储到处理器10内部的第一高速缓冲存储器11。在处理器内部,以符合AI算子要求的非对齐访问方式为AI算子快速提供数据。而且,在处理器内部,以符合AI算子要求的非对齐访问方式,将AI算子计算出的第二数据存储到第二高速缓冲存储器13。然后,通过对齐访问方式将第二高速缓冲存储器13中的第二数据发送到存储器20。因此,避免直接以非对齐访问方式访问存储器20,提高数据访问速度,显著提升算子的性能。
优选地,第一高速缓冲存储器11和第二高速缓冲存储器13分别可以实施为静态随机存取存储器(Static Random-Access Memory,SRAM)或动态随机存取存储器(DynamicRandom Access Memory,DRAM)。AI算子可以实施为诸如GLU算子、Chunk算子等任意具有访问分段数据需求的算子。处理器10可以实施为:中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、张量处理器(Tensor ProcessingUnit,TPU)、神经网络处理器(Neural Network Processing Unit,NPU)、深度学习处理器(Deep Learning Processing Unit,DPU)、加速处理器(Accelerated Processing Unit,APU),以及通用图形处理器(General-Purpose Computing on Graphics ProcessingUnit,GPGPU)中的任意一种。
以上示范性描述了处理器10、第一高速缓冲存储器11和第二高速缓冲存储器13的典型实例,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于限定本发明实施方式的保护范围。
在一个实施方式中,计算单元12包括第一寄存器和第二寄存器,其中:第一寄存器,用于以非对齐访问方式从第一高速缓冲存储器11中多轮循环读取第一数据,其中每轮循环读取的数据量等于硬件对齐要求,每轮循环的读取位置是根据AI算子的偏移量和硬件对齐要求而动态更新的;第二寄存器,用于以非对齐访问方式将第二数据多轮循环发送到第二高速缓冲存储器13,其中每轮循环发送的数据量等于硬件对齐要求,每轮循环的发送位置是根据AI算子的偏移量和硬件对齐要求而动态更新的。因此,通过循环执行数据访问,可以提高数据访问量。
很多算子(比如GLU算子)不仅涉及对分段数据的计算,还涉及对非分段数据的计算。对于非分段数据,可以直接基于对齐访问方式从存储器中读取。
在一个实施方式中,计算单元12基于AI算子对第一数据和第三数据执行计算以得到第二数据和第四数据;计算单元12以对齐访问方式将第四数据发送到存储器。其中:第三数据可以实施为AI算子的非分段输入数据,第四数据可以实施为AI算子的非分段输出数据。
如图2所示,本发明实施方式还提出AI服务器30。AI服务器30包括:存储器20,用于存储第一数据;处理器10,包括第一高速缓冲存储器11、第二高速缓冲存储器13和计算单元12,其中:第一高速缓冲存储器11,用于存储以对齐访问方式从存储器20中读取的第一数据;计算单元12,用于以非对齐访问方式从第一高速缓冲存储器11读取第一数据,基于AI算子对第一数据执行计算以得到第二数据,以非对齐访问方式将第二数据发送到第二高速缓冲存储器13;第二高速缓冲存储器13,用于存储第二数据,其中存储在第二高速缓冲存储器13中的第二数据以对齐访问方式被发送到存储器20;存储器20,还用于存储第二数据。
图2所示的AI服务器30的数目可以为多个以形成AI服务器集群以及包含该AI服务器集群的数据中心。
基于上述描述,本发明实施方式还提出了AI算子的数据处理方法。图3为根据本发明实施方式的AI算子的数据处理方法的示范性流程图。如图3所示,AI算子的数据处理方法包括:
步骤301:以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中第一数据是以对齐访问方式从存储器中读取的。
步骤302:基于AI算子,对第一数据执行计算以得到第二数据;
步骤303:以非对齐访问方式将第二数据发送到第二高速缓冲存储器,其中第二高速缓冲存储器中的第二数据以对齐访问方式被发送到存储器。
在一个实施方式中,第一高速缓冲存储器为第一高速缓冲循环存储器,第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;第二高速缓冲存储器为第二高速缓冲循环存储器,第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数。步骤301包括:基于表征第一高速缓冲循环存储器中的第一存储位置的第一游标,从第一存储位置开始读取第一数据,其中读取的数据量等于硬件对齐要求。该方法还包括:基于表征第一高速缓冲循环存储器中的第二存储位置的第二游标,从第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于硬件对齐要求。步骤303包括:基于进一步表征第二高速缓冲循环存储器中的第三存储位置的第一游标,向第三存储位置开始发送第二数据,其中发送的数据量等于硬件对齐要求。该方法还包括:基于表征第二高速缓冲存储器中的第四存储位置的第三游标,向存储器开始发送第二数据,其中发送的数据量等于硬件对齐要求。
可见,本发明实施方式利用多游标间的协同配合循环执行数据访问,降低了实施复杂度。
在一个实施方式中,上述以非对齐访问方式从第一高速缓冲存储器读取第一数据、从第二存储位置开始存储从存储器中继续读取的第一数据、以非对齐访问方式将第二数据发送到第二高速缓冲存储器以及向存储器开始发送第二数据是多轮循环执行的。其中每轮循环包括:
(1)基于硬件对齐要求、N和本轮循环中的第一游标,更新下轮循环中的第一游标。
(2)基于硬件对齐要求、N和本轮循环中的第二游标,更新下轮循环中的第二游标。
(3)基于硬件对齐要求、N和本轮循环中的第三游标,更新下轮循环中的第三游标;其中第一轮循环中的第一游标为人工智能算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
在一个实施方式中,更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);其中硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
基于图3所示方法,在第一次以非对齐访问方式从第一高速缓冲存储器读取第一数据时,由于偏移量的存在,有少量的偏移数据没有被读取。可以基于相关技术的处理方式从存储器中读取偏移数据,并对偏移数据执行运算,再将运算结果再填充到第二高速缓冲存储器的第二数据中,从而保证数据完整性。在一个实施方式中,包括:基于AI算子的偏移量,从存储器中读取第一数据中的偏移数据(通常位于第一数据的前部存储位置);基于AI算子,对偏移数据执行计算以得到运算结果;基于偏移量,将运算结果填充到第二高速缓冲存储器的第二数据中(同样填充到第二数据的前部存储位置)。
下面以GLU算子为例,对本发明实施方式的数据处理过程进行描述。
假定:(1)硬件的对齐要求align_size等于5,即align_size=5;(2)GLU算子需要数据的相对对齐要求的偏移offset等于2,即offset=2,其中offset小于 align_size。第一SRAM和第二SRAM都采用N×align_size大小的循环缓存。
在初始化时:第一游标a1= offset=2;第二游标a2=0;第三游标a0=0。
步骤1:从作为外部存储器的HBM中合并读取连续2块align_size大小的数据到作为执行器内存的第一SRAM(Input_buff[)中,其中2块align_size大小的数据在第一SRAM中的存储空间为:Input_buff[0,2× align_size]。
步骤2:读取Input_buff中的[a1, a1+align_size]到计算单元中的第一寄存器。
步骤3:合并读取HBM中的下一块align_size的数据,到Input_buff[a2, a2+align_size]。
步骤4:计算单元执行计算,计算结果存储到第二SRAM(Output_buff)中,其中计算结果在第二SRAM中的存储空间为:Output_buff[a1, a1+align_size]。
步骤5:将Output_buff[a0, a0+align_size]的数据,合并存储到HBM。
步骤6:更新第一游标a1、第二游标a2和第三游标a0。其中:
a1_new=(a1_old+align_size)%(N×align_size);
a2_new=(a2_old+align_size)%(N×align_size);
a0_new=(a0_old+align_size)%(N×align_size)。下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
重复循环上述步骤2~步骤6,以完成所有数据处理。
另外,可以将Output_buff[a0,a0+ offset]的数据,存储到HBM,并将第一块align_size的前offset个数据(即偏移数据)输入计算单元。计算单元对偏移数据执行计算以得到运算结果,再将运算结果填充到Output_buff中。
图4为根据本发明实施方式的GLU算子在第一循环中的数据处理示意图。在图4中,数据a、数据b、数据c……数据q……为非分段数据,数据0、数据1、数据2、数据3……数据16……为分段数据。
在第一循环中:a1= offset=2; a2=0;a0=0。
第一循环包括:
步骤1:计算单元以对齐访问方式,从HBM中读取一个align_size大小的非分段数据(数据a~数据e)。从HBM中以对齐方式读取分段数据(大小为2×align_size),即数据0~数据9,并将数据0~数据9存储到第一SRAM。
步骤2:基于a1指向第一SRAM的位置(即2),将第一SRAM中的数据2~数据6发送到第一寄存器。
步骤3:读取HBM中的下一块align_size的分段数据(即数据10~数据15),基于a2(即0)指向的位置,将数据10~数据15写入第一SRAM。写入后的第一SRAM中的数据依次为:数据10~14及在数据10~14之后的数据5~数据9。
步骤4:计算单元执行计算,计算结果包括:(1)非分段数据:数据o_a~数据o_e;(2)分段数据:数据o_2~数据o_6。
步骤5:以对齐访问方式,直接将数据o_a~数据o_e发送到HBM。基于a1指向第二SRAM的位置(即2),将数据o_2~数据o_6发送到第二SRAM。
步骤6:基于a0指向的位置(即0),从第二SRAM中读取一个align_size大小的数据发送到HBM。其中:该一个align_size大小的数据包括:数据o_2~数据o_4,以及数据o_2之前的两个数据。
步骤7:更新a1,a0和a2。更新后的a1=7;更新后的a2=5;更新后的a0=5。
取决于具体应用,在将align_size大小的数据发送到HBM之前,可以将数据o_2之前的两个数据填充为脏数据,还可以基于针对偏移数据的运算确定出这两个数据。比如,offset为2,即偏移数据为:数据0和数据1。计算单元从存储器中读取偏移数据(数据0和数据1),对偏移数据(数据0和数据1)与非分段数据中的对应于偏移数据的、末尾两个数据(比如,如图中的数据p和数据q)执行运算,得到作为非分段数据的第一输出部分和作为分段数据的第二输出部分。可以将第二输出部分确定为数据o_2之前的两个数据,将第一输出部分确定为以对齐访问方式发送到HBM的数据的尾部。
图5为根据本发明实施方式的GLU算子在第二循环中的数据处理示意图。
在第二循环中:a1=7;a2=5;a0=5。
第二循环包括:
步骤1:计算单元以对齐访问方式,从HBM中读取一个align_size大小的非分段数据(数据f~数据j)。
步骤2:基于a1指向第一SRAM的位置(即2),将第一SRAM中的数据7~数据11发送到第一寄存器。
步骤3:读取HBM中的下一块align_size的分段数据(即数据15~数据19),基于a2(即5)指向的位置,将数据15~数据19写入第一SRAM。写入后的第一SRAM中的数据依次为:数据10~19。
步骤4:计算单元执行计算,计算结果包括:(1)非分段数据:数据o_f~数据o_j;(2)分段数据:数据o_7~数据o_11。
步骤5:以对齐访问方式,直接将数据o_f~数据o_j发送到HBM。基于a1指向第二SRAM的位置(即7),将数据o_7~数据o_11发送到第二SRAM。
步骤6:基于a0指向的位置(即5),从第二SRAM中读取一个align_size大小的数据发送到HBM。其中:该一个align_size大小的数据包括数据o_5~数据o_9。
步骤7:更新a1,a0和a2。更新后的a1=2;更新后的a2=0;更新后的a0=0。
图6为根据本发明实施方式的GLU算子在第三循环中的数据处理示意图。
在第三循环中:a1=2;a2=0;a0=0。第三循环包括:
步骤1:计算单元以对齐访问方式,从HBM中读取一个align_size大小的非分段数据(数据k~数据o)。
步骤2:基于a1指向第一SRAM的位置(即2),将第一SRAM中的数据12~数据16发送到第一寄存器。
步骤3:读取HBM中的下一块align_size的分段数据(即数据20~数据24),基于a2(即0)指向的位置,将数据20~数据24写入第一SRAM。
步骤4:计算单元执行计算,计算结果包括:(1)非分段数据:数据o_k~数据o_o;(2)分段数据:数据o_12~数据o_16。
步骤5:以对齐访问方式,直接将数据o_k~数据o_o发送到HBM。基于a1指向第二SRAM的位置(即2),将数据o_12~数据o_16发送到第二SRAM。
步骤6:基于a0指向的位置(即0),从第二SRAM中读取一个align_size大小的数据发送到HBM。其中:该一个align_size大小的数据包括数据o_10~数据o_14。
步骤7:更新a1,a0和a2。
上述以三次循环以及GLU算子为例,对本发明实施方式进行描述,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于限定本发明实施方式的保护范围。实际上,取决于具体输入数据的数据量,上述循环的执行次数可以发送变更。
图7为根据本发明实施方式的AI算子的数据处理装置的示范性结构图。如图7所示,AI算子的数据处理装置700包括:读取模块701,用于以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中第一数据是以对齐访问方式从存储器中读取的;计算模块702,用于基于AI算子,对第一数据执行计算以得到第二数据;发送模块703,用于以非对齐访问方式将第二数据发送到第二高速缓冲存储器,其中第二高速缓冲存储器中的第二数据以对齐访问方式被发送到存储器。
在一个实施方式中,第一高速缓冲存储器为第一高速缓冲循环存储器,第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;第二高速缓冲存储器为第二高速缓冲循环存储器,第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数;
读取模块701,基于表征第一高速缓冲循环存储器中的第一存储位置的第一游标,从第一存储位置开始读取第一数据,其中读取的数据量等于硬件对齐要求;基于表征第一高速缓冲循环存储器中的第二存储位置的第二游标,从第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于硬件对齐要求;发送模块703,用于基于进一步表征第二高速缓冲循环存储器中的第三存储位置的第一游标,向第三存储位置开始发送第二数据,其中发送的数据量等于硬件对齐要求;基于表征第二高速缓冲存储器中的第四存储位置的第三游标,向存储器开始发送第二数据,其中发送的数据量等于硬件对齐要求。
在一个实施方式中,读取模块701,用于多轮循环执行以非对齐访问方式从第一高速缓冲存储器读取第一数据及从第二存储位置开始存储从存储器中继续读取的第一数据;发送模块703,用于多轮循环执行以非对齐访问方式将第二数据发送到第二高速缓冲存储器及向存储器开始发送第二数据;其中每轮循环包括:基于硬件对齐要求、N和本轮循环中的第一游标,更新下轮循环中的第一游标;基于硬件对齐要求、N和本轮循环中的第二游标,更新下轮循环中的第二游标;基于硬件对齐要求、N和本轮循环中的第三游标,更新下轮循环中的第三游标;其中第一轮循环中的第一游标为AI算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
在一个实施方式中,更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);其中硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
综上所述,在本发明实施方式中,以对齐访问方式将第一数据从处理器外部的存储器存储到处理器内部的第一高速缓冲存储器。在处理器内部,以符合AI算子要求的非对齐访问方式,从第一高速缓冲存储器为AI算子快速提供数据。而且,在处理器内部,以符合AI算子要求的非对齐访问方式,将AI算子计算出的第二数据存储到第二高速缓冲存储器。可以通过对齐访问方式将第二高速缓冲存储器中的第二数据发送到存储器。由此可见,本发明实施方式避免了以非对齐访问方式直接访问存储器,能够显著提升数据访问速度,并提高算子的性能 。
而且,利用多游标间的协同配合循环执行数据访问,降低了实施复杂度。
本发明实施方式还提出了一种具有处理器-存储器架构的电子设备。图8是根据本发明实施方式的电子设备的结构图。如图8所示,电子设备包括处理器801、存储器802及存储在存储器802上并可在处理器801上运行的计算机程序,计算机程序被处理器801执行时实现如上任一种的AI算子的数据处理方法。其中,存储器802具体可以实施为电可擦可编程只读存储器(EEPROM)、快闪存储器(Flash memory)、可编程程序只读存储器(PROM)等多种存储介质。处理器401可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体地,中央处理器或中央处理器核能够实施为CPU、GPU、GPGPU、MCU或DSP,等等。
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。比如,可以在各种类型的芯片(例如,人工智能芯片)中完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本申请所述方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施方式中任一实施方式的功能。用于提供程序代码的存储介质实施方式包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机或云上下载程序代码。
在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。为使图面简洁,各图中的只示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”并不表示将本发明相关部分的数量限制为“仅此一个”,并且“一个”不表示排除本发明相关部分的数量“多于一个”的情形。在本文中,“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等仅用于表示相关部分之间的相对位置关系,而非限定这些相关部分的绝对位置。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种处理器,其特征在于,包括第一高速缓冲存储器、第二高速缓冲存储器和计算单元,其中:
所述第一高速缓冲存储器,用于存储以对齐访问方式从存储器中读取的第一数据;
计算单元,用于以非对齐访问方式从所述第一高速缓冲存储器读取第一数据,基于人工智能算子对所述第一数据执行计算以得到第二数据,以非对齐访问方式将所述第二数据发送到所述第二高速缓冲存储器;
所述第二高速缓冲存储器,用于存储所述第二数据,其中存储在所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
2.根据权利要求1所述的处理器,其特征在于,所述计算单元包括第一寄存器和第二寄存器,其中:
所述第一寄存器,用于以非对齐访问方式从所述第一高速缓冲存储器中多轮循环读取所述第一数据,其中每轮循环读取的数据量等于硬件对齐要求,每轮循环的读取位置是根据所述人工智能算子的偏移量和所述硬件对齐要求而动态更新的;
所述第二寄存器,用于以非对齐访问方式将所述第二数据多轮循环发送到所述第二高速缓冲存储器,其中每轮循环发送的数据量等于所述硬件对齐要求,每轮循环的发送位置是根据所述人工智能算子的偏移量和所述硬件对齐要求而动态更新的。
3.根据权利要求1所述的处理器,其特征在于,
所述计算单元,进一步用于以对齐访问方式从所述存储器读取第三数据;
所述基于人工智能算子对所述第一数据执行计算以得到第二数据包括:基于所述人工智能算子对所述第一数据和所述第三数据执行计算以得到所述第二数据和第四数据;
所述计算单元,进一步用于以对齐访问方式将所述第四数据发送到所述存储器。
4.一种人工智能服务器,其特征在于,包括:
存储器,用于存储第一数据;
处理器,包括第一高速缓冲存储器、第二高速缓冲存储器和计算单元,其中:所述第一高速缓冲存储器,用于存储以对齐访问方式从所述存储器中读取的第一数据;计算单元,用于以非对齐访问方式从所述第一高速缓冲存储器读取所述第一数据,基于人工智能算子对所述第一数据执行计算以得到第二数据,以非对齐访问方式将所述第二数据发送到所述第二高速缓冲存储器;所述第二高速缓冲存储器,用于存储所述第二数据,其中存储在所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器;
所述存储器,还用于存储所述第二数据。
5.根据权利要求4所述的人工智能服务器,其特征在于,所述计算单元包括第一寄存器和第二寄存器,其中:
所述第一寄存器,用于以非对齐访问方式从所述第一高速缓冲存储器中多轮循环读取所述第一数据,其中每轮循环读取的数据量等于硬件对齐要求,每轮循环的读取位置是根据所述人工智能算子的偏移量和所述硬件对齐要求而动态更新的;
所述第二寄存器,用于以非对齐访问方式将所述第二数据多轮循环发送到所述第二高速缓冲存储器,其中每轮循环发送的数据量等于所述硬件对齐要求,每轮循环的发送位置是根据所述人工智能算子的偏移量和所述硬件对齐要求而动态更新的。
6.根据权利要求4所述的人工智能服务器,其特征在于,
所述计算单元,进一步用于以对齐访问方式从所述存储器读取第三数据;
所述基于人工智能算子对所述第一数据执行计算以得到第二数据包括:基于所述人工智能算子对所述第一数据和所述第三数据执行计算以得到所述第二数据和第四数据;
所述计算单元,进一步用于以对齐访问方式将所述第四数据发送到所述存储器。
7.一种人工智能算子的数据处理方法,其特征在于,包括:
以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中所述第一数据是以对齐访问方式从存储器中读取的;
基于人工智能算子,对所述第一数据执行计算以得到第二数据;
以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器,其中所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
8.根据权利要求7所述的方法,其特征在于,所述第一高速缓冲存储器为第一高速缓冲循环存储器,所述第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;所述第二高速缓冲存储器为第二高速缓冲循环存储器,所述第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数;
所述以非对齐访问方式从第一高速缓冲存储器读取第一数据包括:基于表征所述第一高速缓冲循环存储器中的第一存储位置的第一游标,从所述第一存储位置开始读取第一数据,其中读取的数据量等于所述硬件对齐要求;
所述方法还包括:基于表征所述第一高速缓冲循环存储器中的第二存储位置的第二游标,从所述第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于所述硬件对齐要求;
所述以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器包括:
基于进一步表征所述第二高速缓冲循环存储器中的第三存储位置的所述第一游标,向所述第三存储位置开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求;
所述方法还包括:基于表征所述第二高速缓冲存储器中的第四存储位置的第三游标,向所述存储器开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求。
9.根据权利要求8所述的方法,其特征在于,所述以非对齐访问方式从第一高速缓冲存储器读取第一数据、从第二存储位置开始存储从存储器中继续读取的第一数据、以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器以及向所述存储器开始发送所述第二数据是多轮循环执行的,其中每轮循环包括:
基于所述硬件对齐要求、所述N和本轮循环中的第一游标,更新下轮循环中的第一游标;
基于所述硬件对齐要求、所述N和本轮循环中的第二游标,更新下轮循环中的第二游标;
基于所述硬件对齐要求、所述N和本轮循环中的第三游标,更新下轮循环中的第三游标;
其中第一轮循环中的第一游标为所述人工智能算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
10.根据权利要求9所述的方法,其特征在于,
所述更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);
所述更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);
所述更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);
其中所述硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
11.根据权利要求7-10中任一项所述的方法,其特征在于,包括:
基于所述人工智能算子的偏移量,从所述存储器中读取所述第一数据中的偏移数据;
基于所述人工智能算子,对所述偏移数据执行计算以得到运算结果;
基于所述偏移量,将所述运算结果填充到所述第二高速缓冲存储器的所述第二数据中。
12.一种人工智能算子的数据处理装置,其特征在于,包括:
读取模块,用于以非对齐访问方式从第一高速缓冲存储器读取第一数据,其中所述第一数据是以对齐访问方式从存储器中读取的;
计算模块,用于基于人工智能算子,对所述第一数据执行计算以得到第二数据;
发送模块,用于以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器,其中所述第二高速缓冲存储器中的所述第二数据以对齐访问方式被发送到所述存储器。
13.根据权利要求12所述的装置,其特征在于,所述第一高速缓冲存储器为第一高速缓冲循环存储器,所述第一高速缓冲循环存储器的容量等于N倍硬件对齐要求;所述第二高速缓冲存储器为第二高速缓冲循环存储器,所述第二高速缓冲循环存储器的容量等于N倍硬件对齐要求,其中N为至少为2的正整数;
所述读取模块,基于表征所述第一高速缓冲循环存储器中的第一存储位置的第一游标,从所述第一存储位置开始读取第一数据,其中读取的数据量等于所述硬件对齐要求;基于表征所述第一高速缓冲循环存储器中的第二存储位置的第二游标,从所述第二存储位置开始存储从存储器中继续读取的第一数据,其中继续读取的数据量等于所述硬件对齐要求;
所述发送模块,用于基于进一步表征所述第二高速缓冲循环存储器中的第三存储位置的所述第一游标,向所述第三存储位置开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求;基于表征所述第二高速缓冲存储器中的第四存储位置的第三游标,向所述存储器开始发送所述第二数据,其中发送的数据量等于所述硬件对齐要求。
14.根据权利要求13所述的装置,其特征在于,
所述读取模块,用于多轮循环执行以非对齐访问方式从第一高速缓冲存储器读取第一数据及从第二存储位置开始存储从存储器中继续读取的第一数据;
所述发送模块,用于多轮循环执行以非对齐访问方式将所述第二数据发送到第二高速缓冲存储器及向所述存储器开始发送所述第二数据;
其中每轮循环包括:
基于所述硬件对齐要求、所述N和本轮循环中的第一游标,更新下轮循环中的第一游标;
基于所述硬件对齐要求、所述N和本轮循环中的第二游标,更新下轮循环中的第二游标;
基于所述硬件对齐要求、所述N和本轮循环中的第三游标,更新下轮循环中的第三游标;
其中第一轮循环中的第一游标为所述人工智能算子的偏移量;第一轮循环中的第二游标为零,第一轮循环中的第三游标为零。
15.根据权利要求14所述的装置,其特征在于,
所述更新下轮循环中的第一游标为:确定 a1_new,其中a1_new=(a1_old+align_size)%(N×align_size);
所述更新下轮循环中的第二游标为:确定a2_new,其中a2_new=(a2_old+align_size)%(N×align_size);
所述更新下轮循环中的第三游标为:确定a0_new,其中a0_new=(a0_old+align_size)%(N×align_size);
其中所述硬件对齐要求为align_size,下轮循环中的第一游标为a1_new,下轮循环中的第二游标为a2_new,下轮循环中的第三游标为a0_new,本轮循环中的第一游标为a1_old,本轮循环中的第二游标为a2_old,本轮循环中的第三游标为a0_old;%为求余运算符。
16.一种电子设备,其特征在于,包括:
存储器;
处理器;
其中所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如权利要求7-11中任一项所述的人工智能算子的数据处理方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使所述处理器执行如权利要求7-11中任一项所述的人工智能算子的数据处理方法。
18.一种程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求7-11中任一项所述的人工智能算子的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410627302.5A CN118210554A (zh) | 2024-05-21 | 2024-05-21 | 处理器、服务器、数据处理方法与装置、存储介质和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410627302.5A CN118210554A (zh) | 2024-05-21 | 2024-05-21 | 处理器、服务器、数据处理方法与装置、存储介质和产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118210554A true CN118210554A (zh) | 2024-06-18 |
Family
ID=91450679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410627302.5A Pending CN118210554A (zh) | 2024-05-21 | 2024-05-21 | 处理器、服务器、数据处理方法与装置、存储介质和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118210554A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449706B1 (en) * | 1999-12-22 | 2002-09-10 | Intel Corporation | Method and apparatus for accessing unaligned data |
US20020174317A1 (en) * | 2001-05-18 | 2002-11-21 | Intel Corporation | Apparatus and method for performing non-aligned memory accesses |
CN113222115A (zh) * | 2021-04-30 | 2021-08-06 | 西安邮电大学 | 面向卷积神经网络的共享缓存阵列 |
CN115113814A (zh) * | 2022-06-21 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 一种神经网络模型上线方法和相关装置 |
CN117389484A (zh) * | 2023-12-12 | 2024-01-12 | 深圳大普微电子股份有限公司 | 数据存储处理方法、装置、设备及存储介质 |
CN117539823A (zh) * | 2022-08-01 | 2024-02-09 | 中科寒武纪科技股份有限公司 | 芯片算力控制方法、芯片及存储介质 |
-
2024
- 2024-05-21 CN CN202410627302.5A patent/CN118210554A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449706B1 (en) * | 1999-12-22 | 2002-09-10 | Intel Corporation | Method and apparatus for accessing unaligned data |
US20020174317A1 (en) * | 2001-05-18 | 2002-11-21 | Intel Corporation | Apparatus and method for performing non-aligned memory accesses |
CN113222115A (zh) * | 2021-04-30 | 2021-08-06 | 西安邮电大学 | 面向卷积神经网络的共享缓存阵列 |
CN115113814A (zh) * | 2022-06-21 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 一种神经网络模型上线方法和相关装置 |
CN117539823A (zh) * | 2022-08-01 | 2024-02-09 | 中科寒武纪科技股份有限公司 | 芯片算力控制方法、芯片及存储介质 |
CN117389484A (zh) * | 2023-12-12 | 2024-01-12 | 深圳大普微电子股份有限公司 | 数据存储处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182207B2 (en) | Pre-fetching task descriptors of dependent tasks | |
US20090240895A1 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
US8392669B1 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
US20150205586A1 (en) | System, method, and computer program product for bulk synchronous binary program translation and optimization | |
CN111208933A (zh) | 数据访问的方法、装置、设备和存储介质 | |
Kasagi et al. | Parallel algorithms for the summed area table on the asynchronous hierarchical memory machine, with GPU implementations | |
CN112395093A (zh) | 多线程数据处理方法、装置、电子设备及可读存储介质 | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
US20200302334A1 (en) | Locality aware data loading for machine learning | |
CN109597697B (zh) | 一种资源撮合处理方法及装置 | |
US20240111536A1 (en) | Data processing apparatus and related products | |
CN118210554A (zh) | 处理器、服务器、数据处理方法与装置、存储介质和产品 | |
CN108427584A (zh) | 快速启动的具有并行计算核的芯片及该芯片的配置方法 | |
CN112669419A (zh) | 用于渲染的方法、中央处理器、图像处理器、系统和存储介质 | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
WO2023124304A1 (zh) | 芯片的缓存系统、数据处理方法、设备、存储介质及芯片 | |
CN116302328A (zh) | 智能合约数据处理方法和系统 | |
CN105700855A (zh) | 改进的simd k最近邻实现 | |
US11275669B2 (en) | Methods and systems for hardware-based statistics management using a general purpose memory | |
WO2013128343A2 (en) | Method for estimating a model on multi-core and many-core mimd architectures | |
CN112950451A (zh) | 一种基于GPU的极大k-truss发现算法 | |
CN112286578A (zh) | 由计算设备执行的方法、装置、设备和计算机可读存储介质 | |
CN115309555B (zh) | 一种用于卫星的并行计算方法及系统、存储介质、设备 | |
CN115794671B (zh) | 一种兼容向量数据的访存系统及方法 | |
CN114840255B (zh) | 处理数据的方法、装置及设备可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |