[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN118277291A - 基于算子的数据处理方法、装置、电子设备及存储介质 - Google Patents

基于算子的数据处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN118277291A
CN118277291A CN202211710911.4A CN202211710911A CN118277291A CN 118277291 A CN118277291 A CN 118277291A CN 202211710911 A CN202211710911 A CN 202211710911A CN 118277291 A CN118277291 A CN 118277291A
Authority
CN
China
Prior art keywords
data
core
length
operator
index value
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
CN202211710911.4A
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.)
Cambrian Xi'an Integrated Circuit Co ltd
Original Assignee
Cambrian Xi'an Integrated Circuit 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 Cambrian Xi'an Integrated Circuit Co ltd filed Critical Cambrian Xi'an Integrated Circuit Co ltd
Priority to CN202211710911.4A priority Critical patent/CN118277291A/zh
Publication of CN118277291A publication Critical patent/CN118277291A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本申请提供一种基于算子的数据处理方法、装置、电子设备及存储介质。该方法应用于数据处理装置中,该装置包括多个核,每个核有独立的片上空间,该方法包括:获取算子的输入数据,其中,输入数据包括:多个第一数据和多个第二数据;基于第一数据,分别在多个核上申请各自的片上内存;在每个核的片上内存,对多个第二数据进行处理得到计算结果;在每个核上调用一次原子操作指令对所有核的计算结果和多个第一数据进行原子计算,得到算子的数据处理结果。用以解决现有技术中算子调用原子操作指令的次数过多,增加算子进行数据处理的耗时的技术问题。

Description

基于算子的数据处理方法、装置、电子设备及存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于算子的数据处理方法、装置、电子设备及存储介质。
背景技术
在网络模型训练或者推理技术领域,通常会用到一类算子(例如,离散算子),该类算子通过循环调用原子操作指令,对输入数据进行计算处理。
但是,目前这类算子调用原子操作指令的次数过多,而且由于原子操作指令具有原子性,在内部执行时,需要上一次原子操作执行完毕后才会执行下一次原子操作。因此,如果算子调用原子操作指令的次数过多,则会增加算子进行数据处理的耗时,影响网络模型训练或者推理的性能。
发明内容
本申请提供一种基于算子的数据处理方法、装置、电子设备及存储介质,用以解决现有技术中算子调用原子操作指令的次数过多,增加算子进行数据处理的耗时的技术问题。
一方面,本申请提供一种基于算子的数据处理方法,上述方法应用于数据处理装置中,上述装置包括多个核,每个核有独立的片上空间,上述方法包括:
获取算子的输入数据,其中,上述输入数据包括:多个第一数据和多个第二数据;
基于上述第一数据,分别在多个上述核上申请各自的片上内存;
在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果;
在每个上述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个上述第一数据进行原子计算,得到上述算子的数据处理结果。
进一步地,上述基于上述第一数据,分别在多个上述核上申请各自的片上内存,包括:
获取上述第一数据的长度;
分别在多个上述核中的每个核上,申请与上述第一数据的长度对应大小的片上内存。
进一步地,上述第二数据包括第一数据的更新值,上述在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果,包括:
根据上述核的数量和上述第二数据的长度,将上述第二数据拆分到每个上述核上,得到每个上述核上的算子的待处理第二数据;
在每个上述核的片上内存,将上述待处理第二数据中的更新值与片上内存的数值进行计算,以得到上述计算结果。
进一步地,上述第二数据包括第一数据的索引值和更新值,上述在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果,包括:
根据上述核的数量和上述第一数据的索引值的长度,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值;
在每个上述核的片上内存,将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
进一步地,上述根据上述核的数量和上述第一数据的索引值的长度,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值,包括:
计算上述第一数据的索引值的长度与上述核的数量之间的比值;
根据上述比值,确定每个上述核的数据处理量;
基于每个上述核的数据处理量,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值。
进一步地,上述在每个上述核的片上内存,将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果,包括:
获取每个上述核上的算子的待处理索引值的起始地址和结束地址;
根据上述起始地址和上述结束地址,在每个上述核的片上内存,循环执行将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
进一步地,上述获取每个上述核上的算子的待处理索引值的起始地址和结束地址,包括:
获取每个上述核的核编码,以及每个上述核的数据处理量;
根据每个上述核的核编码和数据处理量,确定每个上述核上的算子的待处理索引值的起始地址;
根据每个上述核的数据处理量和每个上述核上的算子的待处理索引值的起始地址,确定每个上述核上的算子的待处理索引值的结束地址。
进一步地,上述在每个上述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个第一数据进行原子计算,包括:
根据上述第一数据的长度,在每个上述核上调用一次上述原子操作指令,以对上述所有核的计算结果和多个第一数据进行原子计算。
进一步地,在基于上述第一数据,分别在多个上述核上申请各自的片上内存之前,上述方法还包括:
获取上述第二数据的长度,以及上述第一数据的长度;
若上述第二数据的长度小于等于索引值阈值,且上述第一数据的长度大于等于长度阈值,则执行上述基于上述第一数据,分别在多个上述核上申请各自的片上内存的步骤。
进一步地,上述方法还包括:
若上述第二数据的长度大于上述索引值阈值,或上述第一数据的长度小于上述长度阈值,则基于上述第二数据的长度确定对应的原子操作指令的调用次数;
根据上述调用次数,在每个上述核上循环调用上述原子操作指令,以对上述第二数据和上述第一数据进行原子计算。
进一步地,当第二数据包括第一数据的索引值时,上述第二数据的长度为第一数据的索引值的长度。
进一步地,上述基于上述第一数据,分别在多个上述核上申请各自的片上内存,包括:
获取上述片上空间的存储容量;
若上述第一数据的长度超出上述存储容量的限制,则根据上述存储容量和上述第一数据的长度,切分上述第一数据,以得到满足存储容量限制的第一数据和超出存储容量限制的第一数据;
基于上述满足存储容量限制的第一数据的长度,分别在多个上述核上申请各自的片上内存。
进一步地,上述方法还包括:
基于上述超出存储容量限制的第一数据的长度,确定对应的上述原子操作指令的调用次数;
在每个上述核上,根据上述调用次数循环调用上述原子操作指令,以对上述第二数据和上述超出存储容量限制的第一数据进行原子计算。
另一方面,本申请提供一种基于算子的数据处理装置,上述装置包括多个核,每个核有独立的片上空间,上述装置包括:
获取模块,用于获取算子的输入数据,其中,上述输入数据包括:多个第一数据和多个第二数据;
内存申请模块,用于基于上述第一数据,分别在多个上述核上申请各自的片上内存;
核上计算模块,用于在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果;
原子计算模块,用于在每个上述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个第一数据进行原子计算,得到上述算子的数据处理结果。
另一方面,本申请提供一种电子设备,包括:处理器,以及与上述处理器连接的存储器;上述存储器存储计算机执行指令;上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。
另一方面,本申请提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。
另一方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。
本申请提供的一种基于算子的数据处理方法、装置、电子设备及存储介质,用于实现该基于算子的数据处理方法的数据处理装置中包含片上空间,该片上空间包括多个核,算子在核上被处理,该算子为循环调用原子操作指令的算子;通过获取算子的输入数据,得到多个第一数据和多个第二数据,之后,基于第一数据分别在多个核上申请各自的片上内存;在每个核的片上内存,对多个第二数据进行处理得到计算结果;最后在每个核上调用一次原子操作指令对所有核的计算结果和多个第一数据进行原子计算,得到算子的数据处理结果。
本申请实施例通过在每个核上申请片上内存用以对多个第二数据进行处理,每个核上都得到一个计算结果,调用一次原子操作指令,即可实现在所有核共用的片外空间上,将所有核中每个核的计算结果与第一数据进行原子处理,得到最终的数据处理结果。这样可以实现在每个核上仅调用一次原子操作指令对所有核的计算结果和多个第一数据进行原子计算,这种处理方式,将循环调用多次原子操作转化为在每个核上仅调用一次原子操作,可以有效减少算子调用原子操作指令的次数,从而降低算子调用原子操作指令的次数过多导致的数据处理耗时。采用本申请以空间换时间可以解决现有技术中算子调用原子操作指令的次数过多,增加算子进行数据处理的耗时的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本发明实施例所提供的一种基于算子的数据处理方法的流程示意图;
图2为本申请实施例提供的一种可选的基于算子的数据处理方法的网络架构图;
图3为本申请一实施例提供的基于算子的数据处理方法的工作原理图;
图4为本申请另一实施例提供的基于算子的数据处理方法的工作原理图;
图5为本申请另一实施例提供的一种基于算子的数据处理方法的流程示意图;
图6为本申请又一实施例提供的一种基于算子的数据处理方法的流程示意图;
图7为本申请又一实施例提供的基于算子的数据处理方法的工作原理图;
图8为本申请实施例提供的一种基于算子的数据处理装置的结构框图;
图9为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了清楚理解本申请的技术方案,首先对现有技术的方案进行详细介绍。
在网络模型训练或者推理技术领域,在对数据进行处理时,通常会用到一类算子,该类算子通过循环调用原子操作以对数据进行处理。例如,离散算子通过循环调用原子操作,根据第二数据对输入数据中的第一数据ref进行原子操作,例如,加、减、乘、除、求最小值,求最大值等一系列原子操作。
在采用离散算子对第一数据ref执行算子加计算scatterRef_add操作为例,离散算子需要循环多次调用原子加指令atomic_add_reduce将第一数据ref和第二数据的更新值相加,输出计算结果。采用这种处理方式,存在算子调用原子操作指令的次数过多的技术问题,进而增加算子进行数据处理的耗时,影响网络模型训练或者推理的性能。
本申请提供的基于算子的数据处理方法,旨在解决现有技术的如上技术问题。下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请提供一种基于算子的数据处理方法,上述方法应用于数据处理装置中,上述装置包括多个核,每个核有独立的片上空间,图1是本发明实施例所提供的一种基于算子的数据处理方法的流程示意图,如图1所示,该方法包括:
S101,获取算子的输入数据,其中,上述输入数据包括:多个第一数据和多个第二数据。
S102,基于上述第一数据,分别在多个上述核上申请各自的片上内存。
S103,在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果。
S104,在每个上述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个上述第一数据进行原子计算,得到上述算子的数据处理结果。
可选的,本实施例中,如图2所示,数据处理装置中的片上空间包括多个核(例如,block_0、block_i、block_n-1)。片上空间与片外空间通信连接,上述片上空间包括多个核,算子在每个核上被处理。
本实施例中,该算子为循环调用原子操作指令,以对该算子的输入数据进行处理的一类算子。该算子的输入数据包括多个第一数据和第二数据,其中第一数据存储在片外空间,第二数据存储在片上空间,该类算子在对数据进行处理时,通过循环调用多次原子操作以实现根据多个第二数据对第一数据进行处理,得到该算子的数据处理结果。本实施例中,根据第一数据,分别在片上空间的每个核上都申请一块片上内存用于处理第二数据。
在每个核的片上内存,第二数据只是与片上内存的数值进行计算,得到每个核的计算结果,例如,以核申请的该片上内存进行赋初值为0,则第二数据与片上内存的初值0进行加、减等二元运算,得到计算结果,其他运算同理。在每个上述核上调用一次原子操作指令,具体是将每个核上的计算结果,都与片外空间存储的第一数据ref相加,累加得到最终的数据处理结果。即,多个核与片外空间采用的是原子操作指令,每个核上采用的是二元操作。
可以理解的是,由于现有技术中在每个核上调用原子操作指令,是执行的片上空间的多个核与片外空间的第一数据之间的计算,因此,需要根据第一数据的索引值,调用多次原子操作指令。对此,考虑到每个核上的数据计算可以是二元操作等非原子计算操作,因此,先在每个核上分别申请片上内存,以将第二数据与片上内存的数值先进行处理,之后,由于第二数据在多个核上已经处理得到计算结果,多个核与片外空间之间只需要调用一次原子操作指令,即可实现在所有核共用的片外空间上,将所有核中每个核的计算结果与第一数据进行原子处理,得到最终的数据处理结果。
本申请实施例通过在每个核上申请片上内存用以对多个第二数据进行处理,每个核上都得到一个计算结果,调用一次原子操作指令,即可实现在所有核共用的片外空间上,将所有核中每个核的计算结果与第一数据进行原子处理,得到最终的数据处理结果。这样可以实现在每个核上仅调用一次原子操作指令对所有核的计算结果和多个第一数据进行原子计算,这种处理方式,将循环调用多次原子操作转化为在每个核上仅调用一次原子操作,可以有效减少算子调用原子操作指令的次数,从而降低算子调用原子操作指令的次数过多导致的数据处理耗时。采用本申请以空间换时间可以解决现有技术中算子调用原子操作指令的次数过多,增加算子进行数据处理的耗时的技术问题。
一种示例中,该输入数据中的数据类型可以包括:浮点型(例如,float16类型、float32类型等)、整数型(例如,int32类型等)。
本实施例中,每个核有独立的片上空间,可以根据第一数据的长度ref_len,在多个核block中的每个核block上,从每个核内的片上空间分别申请内存大小为第一数据长度ref_len的片上内存nram_ref_block_i,并将片上内存赋初值,该初值可以为0也可以为其他,本申请对此不作限制,其中,i为每个核block的编号。可选的,上述片上内存nram_ref_block_i的内存空间,还可以大于第一数据的长度ref_len,本申请对此不作限制。
本申请中,为了减少每个核上调用一次原子操作指令对第一数据进行处理的次数,降低算子进行数据处理的耗时,可以分别在多个核上申请各自的片上内存,以在片上内存中对第一数据进行处理,得到计算结果。由于片外空间对所有的核都是共用的,因此,通过在每个核上调用一次原子操作指令,即将每个核的计算结果均与片外空间存储的多个第一数据ref进行计算,这样即实现了对所有计算结果和多个第一数据进行原子计算,即可得到算子的数据处理结果。
作为一种可选实施方式,本实施例中,步骤103中,若第二数据仅包括第一数据的更新值,上述在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果,可以采用如下方法步骤实现:
根据上述核的数量和上述第二数据的长度,将上述第二数据拆分到每个上述核上,得到每个上述核上的算子的待处理第二数据;在每个上述核的片上内存,将上述待处理第二数据中的更新值与上述片上内存的数值进行计算,以得到上述计算结果。
一种示例中,如图3所示,输入数据中包括多个第一数据ref:R0、R1、R2、R3、R4、R5;示意性的,若第二数据仅包括第一数据的更新值updates:U0、U1、U2,则根据核的数量和更新值的长度,将第二数据中的更新值拆分到每个核上,得到每个上述核上的算子的待处理更新值,这样在每个核的片上空间申请到的片上内存,将待处理更新值与片上内存的数值进行计算,以得到计算结果。
可选的,上述数值最开始为片上内存的初值,后续在片上内存进行计算之后,该数值,则同步根据第二数据中的更新值与该初值的计算结果进行更新。
一种示例中,如果存在两个更新值updates指向片上内存的同一个位置,那么,第一个更新值与该片上内存上该位置的初值进行二元计算,第二个更新值则是与该位置当前的数值进行计算,其中,该数值为第一个更新值与该位置的初值之间的计算结果。以此类推,多个更新值updates同理,对此不具体限定。
示例性的,算子对输入数据中第一数据ref的计算类型,包含但不限于加add、减sub、乘mul、除div、求最小值min、求最大值max、更新update等二元计算。其中,需要说明的是,由于原子操作指令无法处理乘mul、除div的计算,因此,若算子对第一数据ref的计算类型为乘mul、除div,则不采用本申请实施例所提供的数据处理方案。
本申请实施例,通过在每个核上申请片上内存,对更新值updates拆分分到各个核中运算,每个核上的算子根据分得到的更新值updates与片上内存的数值进行计算,得到计算结果,本实施例,通过将第二数据中更新值拆分到多个核上进行计算处理的方式,可以减少算子对输入数据中第一数据和第二数据进行计算的耗时。
作为一种可选实施方式,本实施例中,步骤103中,上述第二数据包括第一数据的索引值和更新值,上述在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果,可以采用如下方法步骤实现:
根据上述核的数量和上述第一数据的索引值的长度,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值;在每个上述核的片上内存,将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
可选的,上述第二数据还可以包括第一数据的索引值和更新值,第一数据的索引值indices,可以是标量、一维或者多维张量tensor,用来索引片上内存上的位置block_i[indice[i];本实施例中的第二数据中记录的更新值updates,可以为多维张量tensor,更新值updates的数据类型与第一数据ref的数据类型相同,以便于采用具体的更新值indice[i]与block_i[indice[i]]进行计算。
另一种示例中,如果存在两个更新值updates各自对应的索引值指向片上内存的同一个位置,那么,第一个更新值与该片上内存上该位置的初值进行二元计算,第二个更新值则是与该位置当前的数值进行计算,其中,该数值为第一个更新值与该位置的初值之间的计算结果。以此类推,多个更新值updates同理,对此不具体限定。
可选的,一种示例中,输入数据中包括如图3所示的多个第一数据ref:R0、R1、R2、R3、R4、R5;第二数据包括第一数据的索引值indices为[2,0,5],分别指向第一数据ref的第2个元素R2,第0个元素R0,第5个元素R5,该索引值indices用于索引输入数据中需要更新的第一数据;第二数据还包括更新值updates:U0、U1、U2,该更新值用于与索引值指向的片上内存的数值进行计算。
一种可选的实施例中,根据上述核的数量和上述第一数据的索引值的长度,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值,可以采用如下方法步骤实现:
计算上述第一数据的索引值的长度与上述核的数量之间的比值;根据上述比值,确定每个上述核的数据处理量;基于每个上述核的数据处理量,将上述索引值拆分到每个上述核上,得到每个上述核上的算子的待处理索引值。
本实施例中,例如,若第一数据的索引值indices的长度为64000,核的数量为taskdim,每一个核block上对应处理的数据处理量为64000/TaskDim,因此,可以根据每个核的数据处理量64000/TaskDim,将第一数据的索引值indices拆分到每个核上,例如,可以将第一数据的索引值indices平均拆分到每个核block上,以得到每个核上的算子的待处理索引值,再例如,也可以采用其他的拆分规则将第一数据的索引值indices拆分到每个核block上。
本申请实施例,通过在每个核上申请片上内存,对第一数据的索引值indices拆分分到各个核中运算,每个核根据第二数据中的更新值updates,与拆分得到的索引值指向的片上内存的数值进行计算,得到计算结果,本实施例,通过将第一数据的索引值拆分到多个核上,与第一数据进行计算处理的方式,可以减少算子对输入数据中第一数据和第二数据进行计算的耗时。
作为一种可选实施方式,本实施例中,上述在每个上述核的片上内存,将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果,可以采用如下方法步骤实现:
获取每个上述核上的算子的待处理索引值的起始地址和结束地址;根据上述起始地址和上述结束地址,在每个上述核的片上内存,循环执行将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
本申请实施例中,上述获取每个上述核上的算子的待处理索引值的起始地址和结束地址,具体可以采用如下方法步骤实现:
获取每个上述核的核编码,以及每个上述核的数据处理量;根据每个上述核的核编码和数据处理量,确定每个上述核上的算子的待处理索引值的起始地址;根据每个上述核的数据处理量和每个上述核上的算子的待处理索引值的起始地址,确定每个上述核上的算子的待处理索引值的结束地址。
示例性的,每个核block上的算子的待处理索引值indices的起始地址index_start=核编码taskId*数据处理量(64000/TaskDim),每个核block上的算子的待处理索引值indices的结束地址index_end=indices_index_start+64000/TaskDim;从上述起始地址index_start开始,循环执行将更新值updates与待处理索引值指向的第一数据ref进行计算,直至上述结束地址index_end结束计算,以得到计算结果;本申请实施例中,还可以直接获取索引值的地址,比如文件中存储有每个索引值的地址,还可以是其他方式获取索引值的地址。
仍如图4所示,在多个核(例如,block_0、block_i、block_n-1)中的每个核的片上内存,如每个核中的待处理索引值indices为多个,每次处理一个待处理索引值indices中的一个indice,循环执行将第二数据中的更新值updates与待处理索引值indices指向的片上内存的数值进行计算,直到每个核中的待处理索引值indices完全执行完毕。在每个核循环执行上述处理的过程中,例如,以采用算子对第二数据中的更新值updates与待处理索引值indices指向的第一数据进行加处理为例,在核block_i的片上内存,每一次都可以根据待处理索引值indices,将第二数据中的更新值updates[i]加到对应nram_ref_block_i[indice[i]]的位置上,即得到计算结果。
在循环执行处理结束之后,仍如图4所示,在每个核上调用一次原子操作指令atomic_reduce,对每个核所申请的片上内存nram_ref_block_i上的计算结果results和片外空间的多个第一数据进行原子计算,即可以得到算子的数据处理结果。
可选的,原子操作指令atomic_reduce包含但不限于:原子加指令atomic_add_reduce、原子减指令atomic_sub_reduce、原子求最小值指令atomic_min_reduce、原子求最大值指令atomic_max_reduce、原子更新指令atomic_update_reduce等。
一种可选的实施例中,具体可以根据上述第一数据的长度ref_len,在每个核block上调用一次原子操作指令atomic_reduce。即原子操作指令atomic_reduce的原子计算的长度等于第一数据的长度ref_len。
通过本申请实施例,采用空间换取时间的处理方式,通过在每个核上申请片上内存用以对多个第二数据进行处理,在每个核上仅调用一次原子操作指令对所有核的计算结果和多个第一数据进行原子计算,这种处理方式,可以有效减少算子调用原子操作指令的次数,从而降低算子调用原子操作指令的次数过多导致的数据处理耗时。采用本申请可以解决现有技术中算子调用原子操作指令的次数过多,增加算子进行数据处理的耗时的技术问题。
经过发明人的测试发现,例如下规模的算子:%scatter.421=f32[1000,128]{1,0}scatter(f32[1000,128]{1,0}%copy.86,s32[64000]{0}%bitcast.22,f32[64000,128]{1,0}%bitcast.90)。在耗时上,采用本实施例所提供的基于算子的数据处理方案,数据处理速度是现有传统方案的3.2倍以上,采用本实施例方案,可以大大降低网络训练模型、推理模型的耗时,进而可以提升相关产品的竞争力。
实施例二
图5为本申请另一实施例提供的一种基于算子的数据处理方法的流程示意图,如图5所示,本实施例提供的基于算子的数据处理方法,在实施例一提供的基于算子的数据处理方法上,本实施例二提供的基于算子的数据处理方法是对采用本方案,是否可以降低算子待处理数据的整体耗时的一种预先判断,具体为在执行步骤S102,即基于上述第一数据,分别在多个上述核上申请各自的片上内存之前,采用步骤S200-S204,确定是否继续执行基于上述第一数据,分别在多个上述核上申请各自的片上内存的方法步骤,即S102~S104或者直接采用多次在每个上述核上循环调用上述原子操作指令,以对上述第二数据和上述第一数据进行原子计算。如图5所示,步骤S200-S204包括:
S200,获取上述第二数据的长度,以及上述第一数据的长度;
S201,若上述第二数据的长度小于等于索引值阈值,且上述第一数据的长度大于等于长度阈值,则执行上述基于上述第一数据,分别在多个上述核上申请各自的片上内存的步骤及之后的步骤(步骤S102~S104)。
S203,若上述第二数据的长度大于上述索引值阈值,或上述第一数据的长度小于上述长度阈值,则基于上述第二数据的长度确定对应的原子操作指令的调用次数;
S204,根据上述调用次数,在每个上述核上循环调用上述原子操作指令,以对上述第二数据和上述第一数据进行原子计算。
可选的,本申请实施例中,当上述第二数据包括第一数据的索引值时,上述第二数据的长度为第一数据的索引值的长度。
上述实施例一中,由于根据第一数据的索引值的长度确定每个核上的数据处理量,并循环多次执行在每个核的片上内存对更新值和该索引值指向的片上内存的数值进行计算,因此,根据每个核上的最大数据处理量,预先设定索引值阈值。而且,最后每个核block上只执行一次原子操作指令atomic_reduce时原子计算的长度是第一数据的长度ref_len,因此,根据本申请实施例中,采用原子操作指令进行原子计算的最大长度,预先设定长度阈值。
因此,采用实施例一更加适用于采用算子进行大规模数据进行处理的场景,例如,当第一数据的索引值的长度indices_len大于预先设定的索引值阈值,在每个上述核的片上内存计算索引值指向的第一数据和更新值的循环执行处理次数降低,且第一数据的长度ref_len小于预先设定的长度阈值,后续采用原子操作指令进行原子计算时,原子计算的长度也会相对较短,可以有效降低原子计算的耗时,使得计算性能有很大的提升。
可以理解的是,本实施例方案在每个核block上只执行一次原子操作指令atomic_reduce,且原子计算的长度是第一数据的长度ref_len,当第一数据的索引值的长度indices_len小于等于索引值阈值,而第一数据的长度ref_len大于等于预先设定的长度阈值时,采用实施例一中的实施方式会导致耗时更长,因此在小规模的算子处理场景中,即若第一数据的索引值的长度大于索引值阈值,或第一数据的长度小于长度阈值的情况下,则可以采用索引值的长度确定对应的原子操作指令的调用次数,以直接在每个核上循环调用上述原子操作指令,以对上述第二数据和上述第一数据进行原子计算,得到算子的数据处理结果。
采用上述方式,可以避免采用实施例一中,根据第一数据的索引值的长度确定每个核上的数据处理量过多,需要在每个上述核的片上内存循环多次执行计算,还可以避免后续采用原子操作指令进行原子计算时,原子计算的长度过长,导致耗时更长并不利于计算性能提升的技术问题。
实施例三
图6为本申请又一实施例提供的一种基于算子的数据处理方法的流程示意图,如图6所示,本实施例提供的基于算子的数据处理方法,在实施例一提供的基于算子的数据处理方法上,本实施例三提供的基于算子的数据处理方法是对实施例一中的步骤S102,即基于上述第一数据,分别在多个上述核上申请各自的片上内存的另一种具体细化方案。采用步骤S300-S304,可以确定是分别在多个上述核上申请各自的片上内存,或者是直接采用多次在每个核上循环调用原子操作指令的方式进行原子计算。
一种示例中,每个上述核内包括独立的片上空间,如图6所示,步骤S300-S304包括:
S300,获取片上空间的存储容量。
S301,若上述第一数据的长度超出上述存储容量的限制,则根据上述存储容量和上述第一数据的长度,切分上述第一数据,以得到满足存储容量限制的第一数据和超出存储容量限制的第一数据。
S302,基于上述满足存储容量限制的第一数据的长度,分别在多个上述核上申请各自的片上内存。
S303,基于上述超出存储容量限制的第一数据的长度,确定对应的上述原子操作指令的调用次数;
S304,在每个上述核上,根据上述调用次数循环调用上述原子操作指令,以对上述第二数据和上述超出存储容量限制的第一数据进行原子计算。
由于每个核内片上空间的存储容量nram_size总是有限的,对于第一数据的长度超出核内片上空间的存储容量限制的算子处理场景而言,基于第一数据的长度申请的片上内存必然会超出片上空间的存储容量nram_size的限制,本实施例提出进一步的优化方案,采用根据存储容量和第一数据的长度切分第一数据的方式,在每个核上申请到符合核内片上空间的存储容量限制的片上内存,以使得每个核在片上内存对更新值和满足存储容量限制的第一数据进行计算。
一种可选的示例中,当第一数据的长度大于核内片上空间的存储容量时,在核上无法申请到超出片上空间的存储容量限制的片上内存。即使申请核内全部的片上空间作为算子计算的片上内存,该片上内存仍无法满足对第一数据和第二数据进行计算的需求。因此,如果第一数据的长度大于核内片上空间的存储容量,则可以对第一数据进行切分,即将按照核内片上空间的存储容量,将第一数据切分为满足存储容量限制的第一数据和超出存储容量限制的第一数据,该满足存储容量限制的第一数据的长度小于或等于片上空间的存储容量。
例如,若存储容量和第一数据的长度之间的大小关系为:第一数据的长度ref_length=1.2*存储容量nram_size,则可以保留前80%ref_length的第一数据作为满足存储容量限制的第一数据,并将后20%ref_length的第一数据作为超出存储容量限制的第一数据。这样,满足存储容量限制的第一数据的长度ref_length≤1.2*存储容量nram_size,可以分别在多个核上申请各自的片上内存。
图7为本申请又一实施例提供的基于算子的数据处理方法的工作原理图,如图7所示,对于满足存储容量限制的第一数据,例如,图7中黑色区域所示的前80%ref_length的第一数据,采用实施例一的方案,根据满足存储容量限制的第一数据的长度,分别在多个核上申请各自的片上内存,以对多个上述第二数据进行处理得到计算结果。并且,后续在每个核block上调用一次原子操作指令atomic_reduce,即可实现在片外空间对所有核的计算结果和多个第一数据ref进行原子计算,得到上述算子的数据处理结果。其中,原子操作指令atomic_reduce的长度是上述满足存储容量限制的第一数据的长度。
对于超出存储容量限制的第一数据,例如,图7中白色区域所示的后20%ref_length的第一数据,采用多次调用原子操作指令atomic_reduce的处理方式,在每个核上根据调用次数,循环调用原子操作指令,以对第二数据和超出存储容量限制的第一数据进行原子计算。
通过上述实施例,在从核内片上空间申请各自的片上内存之前,先根据核内片上空间的存储容量与第一数据的长度ref_length进行大小比较,并对超出存储容量限制的第一数据和满足存储容量限制的第一数据,采用不同的数据处理方式,可以最大限度的减少调用原子操作指令atomic_reduce的次数过多带来的耗时,进而可以显著提升采用算子进行数据处理的时效。
实施例四
根据本申请的一个或多个实施例,提供了一种基于算子的数据处理装置,上述装置包括多个核,每个核有独立的片上空间,图8为本申请实施例提供的一种基于算子的数据处理装置的结构框图,如图8所示,上述装置包括:
获取模块601,用于获取算子的输入数据,其中,上述输入数据包括:多个第一数据和多个第二数据。
内存申请模块602,用于基于上述第一数据,分别在多个上述核上申请各自的片上内存。
核上计算模块603,用于在每个上述核的片上内存,对多个上述第二数据进行处理得到计算结果。
原子计算模块604,用于在每个上述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个上述第一数据进行原子计算,得到上述算子的数据处理结果。
根据本申请的一个或多个实施例,上述内存申请模块,包括:
第一获取单元,用于获取上述第一数据的长度。
第一申请单元,用于分别在多个上述核中的每个核上,申请与上述第一数据的长度对应大小的片上内存。
根据本申请的一个或多个实施例,上述第二数据包括第一数据的更新值,上述核上计算模块,包括:
第一拆分单元,用于根据上述核的数量和上述第二数据的长度,拆分上述第二数据,得到每个上述核上的算子的待处理第二数据。
第一计算单元,用于在每个上述核的片上内存,将上述待处理第二数据中的更新值与上述片上内存的数值进行计算,以得到上述计算结果。
根据本申请的一个或多个实施例,上述第二数据包括第一数据的索引值和更新值,上述核上计算模块,还包括:
第二拆分单元,用于根据上述核的数量和上述第一数据的索引值的长度,拆分上述索引值,得到每个上述核上的算子的待处理索引值。
第二计算单元,用于在每个上述核的片上内存,将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
根据本申请的一个或多个实施例,上述第二拆分单元具体还用于计算上述第一数据的索引值的长度与上述核的数量之间的比值;根据上述比值,确定每个上述核的数据处理量;基于每个上述核的数据处理量,拆分上述索引值,得到每个上述核上的算子的待处理索引值。
根据本申请的一个或多个实施例,上述原子计算模块,包括:
第二获取单元,用于获取每个上述核上的算子的待处理索引值的起始地址和结束地址。
循环执行单元,用于根据上述起始地址和上述结束地址,在每个上述核的片上内存,循环执行将上述更新值与上述待处理索引值指向的片上内存的数值进行计算,以得到上述计算结果。
根据本申请的一个或多个实施例,上述第二获取单元,包括:
获取子单元,用于获取每个上述核的核编码,以及每个上述核的数据处理量。
第一确定子单元,用于根据每个上述核的核编码和数据处理量,确定每个上述核上的算子的待处理索引值的起始地址。
第二确定子单元,用于根据每个上述核的数据处理量和每个上述核上的算子的待处理索引值的起始地址,确定每个上述核上的算子的待处理索引值的结束地址。
根据本申请的一个或多个实施例,上述原子计算模块,包括:
调用单元,用于根据上述第一数据的长度,在每个上述核上调用一次上述原子操作指令,以对上述所有核的计算结果和多个上述第一数据进行原子计算。
根据本申请的一个或多个实施例,上述装置还包括:
长度获取模块,用于获取上述第二数据的长度,以及上述第一数据的长度;
执行确定模块,用于若上述第二数据的长度小于等于索引值阈值,且上述第一数据的长度大于等于长度阈值,则执行上述内存申请模块。
根据本申请的一个或多个实施例,上述装置还包括:
第一调用确定模块,用于若上述第二数据的长度大于上述索引值阈值,或上述第一数据的长度小于上述长度阈值,则基于上述第二数据的长度确定对应的原子操作指令的调用次数。
第一循环调用模块,用于根据上述调用次数,在每个上述核上循环调用上述原子操作指令,以对上述第一数据进行计算得到计算结果。
根据本申请的一个或多个实施例,当上述第二数据包括第一数据的索引值时,上述第二数据的长度为上述第一数据的索引值的长度。
根据本申请的一个或多个实施例,上述内存申请模块,包括:
容量获取单元,用于获取上述片上空间的存储容量;
切分单元,用于若上述第一数据的长度超出上述存储容量的限制,则根据上述存储容量和上述第一数据的长度,切分上述第一数据,以得到满足存储容量限制的第一数据和超出存储容量限制的第一数据。
第二申请单元,用于基于上述满足存储容量限制的第一数据的长度,分别在多个上述核上申请各自的片上内存。
根据本申请的一个或多个实施例,上述装置还包括:
第二调用确定模块,用于基于上述超出存储容量限制的第一数据的长度,确定对应的上述原子操作指令的调用次数。
第二循环调用模块,用于在每个上述核上,根据上述调用次数循环调用上述原子操作指令,以对上述第二数据和上述超出存储容量限制的第一数据进行原子计算。
在一种可能的实现方式中,还公开了一种人工智能芯片,其包括多个片上空间及上述基于算子的数据处理装置。
在一种可能的实现方式中,还提供了一种电子设备,其包括了上述片外存储器及人工智能芯片。电子设备可以为数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储设备、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在示例性实施例中,本申请实施例还提供了一种电子设备,包括:处理器,以及与上述处理器连接的存储器;
上述存储器存储计算机执行指令;
上述处理器执行上述存储器存储的计算机执行指令,以实现如任一项上述的方法。
在示例性实施例中,本申请实施例还提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机执行指令,上述计算机执行指令被处理器执行时用于实现如任一项上述的方法。
在示例性实施例中,本申请实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现任一项上述的方法。
为了实现上述实施例,本申请实施例还提供了一种电子设备。
参考图9,其示出了适于用来实现本申请实施例的电子设备700的结构示意图,该电子设备700可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图9所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(Read Only Memory,简称ROM)702中的程序或者从存储装置708加载到随机访问存储器(Random Access Memory,简称RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本申请实施例的方法中限定的上述功能。
需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行装置或设备使用或与指令执行装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
依据以下条款可更好地理解前述内容(The foregoing may be betterunderstood in view of the following clauses):
条款1.一种基于算子的数据处理方法,所述方法应用于数据处理装置中,所述装置包括多个核,每个核有独立的片上空间,所述方法包括:
获取算子的输入数据,其中,所述输入数据包括:多个第一数据和多个第二数据;
基于所述第一数据,分别在多个所述核上申请各自的片上内存;
在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果;
在每个所述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个所述第一数据进行原子计算,得到所述算子的数据处理结果。
条款2.根据条款1所述的方法,所述基于所述输入数据,分别在多个所述核上申请各自的片上内存,包括:
获取所述第一数据的长度;
分别在多个所述核中的每个核上,申请与所述第一数据的长度对应大小的片上内存。
条款3.根据条款1所述的方法,所述第二数据包括第一数据的更新值,所述在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果,包括:
根据所述核的数量和所述第二数据的长度,将所述第二数据拆分到每个所述核上,得到每个所述核上的算子的待处理第二数据;
在每个所述核的片上内存,将所述待处理第二数据中的更新值与所述片上内存的数值进行计算,以得到所述计算结果。
条款4.根据条款1所述的方法,所述第二数据包括第一数据的索引值和更新值,所述在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果,包括:
根据所述核的数量和所述第一数据的索引值的长度,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值;
在每个所述核的片上内存,将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果。
条款5.根据条款4所述的方法,所述根据所述核的数量和所述第一数据的索引值的长度,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值,包括:
计算所述第一数据的索引值的长度与所述核的数量之间的比值;
根据所述比值,确定每个所述核的数据处理量;
基于每个所述核的数据处理量,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值。
条款6.根据条款4所述的方法,所述在每个所述核的片上内存,将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果,包括:
获取每个所述核上的算子的待处理索引值的起始地址和结束地址;
根据所述起始地址和所述结束地址,在每个所述核的片上内存,循环执行将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果。
条款7.根据条款6所述的方法,所述获取每个所述核上的算子的待处理索引值的起始地址和结束地址,包括:
获取每个所述核的核编码,以及每个所述核的数据处理量;
根据每个所述核的核编码和数据处理量,确定每个所述核上的算子的待处理索引值的起始地址;
根据每个所述核的数据处理量和每个所述核上的算子的待处理索引值的起始地址,确定每个所述核上的算子的待处理索引值的结束地址。
条款8.根据条款1至7中任意一项所述的方法,所述在每个所述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个所述第一数据进行原子计算,包括:
根据所述第一数据的长度,在每个所述核上调用一次所述原子操作指令,以对所述所有核的计算结果和多个所述第一数据进行原子计算。
条款9.根据条款1至7中任意一项所述的方法,在基于所述第一数据,分别在多个所述核上申请各自的片上内存之前,所述方法还包括:
获取所述第二数据的长度,以及所述第一数据的长度;
若所述第二数据的长度小于等于索引值阈值,且所述第一数据的长度大于等于长度阈值,则执行所述基于所述第一数据,分别在多个所述核上申请各自的片上内存的步骤。
条款10.根据条款9所述的方法,所述方法还包括:
若所述第二数据的长度大于所述索引值阈值,或所述第一数据的长度小于所述长度阈值,则基于所述第二数据的长度确定对应的原子操作指令的调用次数;
根据所述调用次数,在每个所述核上循环调用所述原子操作指令,以对所述第二数据和所述第一数据进行原子计算。
条款11.根据条款9所述的方法,当所述第二数据包括第一数据的索引值时,所述第二数据的长度为所述第一数据的索引值的长度。
条款12.根据条款9所述的方法,所述基于所述第一数据,分别在多个所述核上申请各自的片上内存,包括:
获取所述片上空间的存储容量;
若所述第一数据的长度超出所述存储容量的限制,则根据所述存储容量和所述第一数据的长度,切分所述第一数据,以得到满足存储容量限制的第一数据和超出存储容量限制的第一数据;
基于所述满足存储容量限制的第一数据的长度,分别在多个所述核上申请各自的片上内存。
条款13.根据条款12所述的方法,所述方法还包括:
基于所述超出存储容量限制的第一数据的长度,确定对应的所述原子操作指令的调用次数;
在每个所述核上,根据所述调用次数循环调用所述原子操作指令,以对所述第二数据和所述超出存储容量限制的第一数据进行原子计算。
条款14.一种基于算子的数据处理装置,所述装置包括多个核,每个核有独立的片上空间,所述装置包括:
获取模块,用于获取算子的输入数据,其中,所述输入数据包括:多个第一数据和多个第二数据;
内存申请模块,用于基于所述第一数据,分别在多个所述核上申请各自的片上内存;
核上计算模块,用于在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果;
原子计算模块,用于在每个所述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个所述第一数据进行原子计算,得到所述算子的数据处理结果。
条款15.一种电子设备,包括:处理器,以及与所述处理器连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如条款1至13中任一项所述的方法。
条款16.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如条款1至13中任一项所述的方法。
条款17.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现条款1至13中任一项所述的方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

Claims (17)

1.一种基于算子的数据处理方法,其特征在于,所述方法应用于数据处理装置中,所述装置包括多个核,每个核有独立的片上空间,所述方法包括:
获取算子的输入数据,其中,所述输入数据包括:多个第一数据和多个第二数据;
基于所述第一数据,分别在多个所述核上申请各自的片上内存;
在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果;
在每个所述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个所述第一数据进行原子计算,得到所述算子的数据处理结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一数据,分别在多个所述核上申请各自的片上内存,包括:
获取所述第一数据的长度;
分别在多个所述核中的每个核上,申请与所述第一数据的长度对应大小的片上内存。
3.根据权利要求1所述的方法,其特征在于,所述第二数据包括第一数据的更新值,所述在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果,包括:
根据所述核的数量和所述第二数据的长度,将所述第二数据拆分到每个所述核上,得到每个所述核上的算子的待处理第二数据;
在每个所述核的片上内存,将所述待处理第二数据中的更新值与所述片上内存的数值进行计算,以得到所述计算结果。
4.根据权利要求1所述的方法,其特征在于,所述第二数据还包括第一数据的索引值和更新值,所述在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果,包括:
根据所述核的数量和所述第一数据的索引值的长度,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值;
在每个所述核的片上内存,将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述核的数量和所述第一数据的索引值的长度,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值,包括:
计算所述第一数据的索引值的长度与所述核的数量之间的比值;
根据所述比值,确定每个所述核的数据处理量;
基于每个所述核的数据处理量,将所述索引值拆分到每个所述核上,得到每个所述核上的算子的待处理索引值。
6.根据权利要求4所述的方法,其特征在于,所述在每个所述核的片上内存,将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果,包括:
获取每个所述核上的算子的待处理索引值的起始地址和结束地址;
根据所述起始地址和所述结束地址,在每个所述核的片上内存,循环执行将所述更新值与所述待处理索引值指向的片上内存的数值进行计算,以得到所述计算结果。
7.根据权利要求6所述的方法,其特征在于,所述获取每个所述核上的算子的待处理索引值的起始地址和结束地址,包括:
获取每个所述核的核编码,以及每个所述核的数据处理量;
根据每个所述核的核编码和数据处理量,确定每个所述核上的算子的待处理索引值的起始地址;
根据每个所述核的数据处理量和每个所述核上的算子的待处理索引值的起始地址,确定每个所述核上的算子的待处理索引值的结束地址。
8.根据权利要求1至7中任意一项所述的方法,其特征在于,所述在每个所述核上调用一次原子操作指令,包括:
根据所述第一数据的长度,在每个所述核上调用一次所述原子操作指令。
9.根据权利要求1至7中任意一项所述的方法,其特征在于,在基于所述第一数据,分别在多个所述核上申请各自的片上内存之前,所述方法还包括:
获取所述第二数据的长度,以及所述第一数据的长度;
若所述第二数据的长度小于等于索引值阈值,且所述第一数据的长度大于等于长度阈值,则执行所述基于所述第一数据,分别在多个所述核上申请各自的片上内存的步骤。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若所述第二数据的长度大于所述索引值阈值,或所述第一数据的长度小于所述长度阈值,则基于所述第二数据的长度确定对应的原子操作指令的调用次数;
根据所述调用次数,在每个所述核上循环调用所述原子操作指令,以对所述第二数据和所述第一数据进行原子计算。
11.根据权利要求9所述的方法,其特征在于,当所述第二数据包括第一数据的索引值时,所述第二数据的长度为所述第一数据的索引值的长度。
12.根据权利要求9所述的方法,其特征在于,所述基于所述第一数据,分别在多个所述核上申请各自的片上内存,包括:
获取所述片上空间的存储容量;
若所述第一数据的长度超出所述存储容量的限制,则根据所述存储容量和所述第一数据的长度,切分所述第一数据,以得到满足所述存储容量限制的第一数据和超出所述存储容量限制的第一数据;
基于所述满足存储容量限制的第一数据的长度,分别在多个所述核上申请各自的片上内存。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
基于所述超出存储容量限制的第一数据的长度,确定对应的所述原子操作指令的调用次数;
在每个所述核上,根据所述调用次数循环调用所述原子操作指令,以对所述第二数据和所述超出存储容量限制的第一数据进行原子计算。
14.一种基于算子的数据处理装置,其特征在于,所述装置包括多个核,每个核有独立的片上空间,所述装置包括:
获取模块,用于获取算子的输入数据,其中,所述输入数据包括:多个第一数据和多个第二数据;
内存申请模块,用于基于所述第一数据,分别在多个所述核上申请各自的片上内存;
核上计算模块,用于在每个所述核的片上内存,对多个所述第二数据进行处理得到计算结果;
原子计算模块,用于在每个所述核上调用一次原子操作指令,以在片外空间对所有核的计算结果和多个所述第一数据进行原子计算,得到所述算子的数据处理结果。
15.一种电子设备,其特征在于,包括:处理器,以及与所述处理器连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至13中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至13中任一项所述的方法。
17.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法。
CN202211710911.4A 2022-12-29 2022-12-29 基于算子的数据处理方法、装置、电子设备及存储介质 Pending CN118277291A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211710911.4A CN118277291A (zh) 2022-12-29 2022-12-29 基于算子的数据处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211710911.4A CN118277291A (zh) 2022-12-29 2022-12-29 基于算子的数据处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN118277291A true CN118277291A (zh) 2024-07-02

Family

ID=91634862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211710911.4A Pending CN118277291A (zh) 2022-12-29 2022-12-29 基于算子的数据处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN118277291A (zh)

Similar Documents

Publication Publication Date Title
CN107833176A (zh) 一种信息处理方法及相关产品
CN110413812B (zh) 神经网络模型的训练方法、装置、电子设备及存储介质
US11775269B2 (en) Generating a synchronous digital circuit from a source code construct defining a function call
CN112650790B (zh) 目标点云平面确定方法,装置,电子设备及存储介质
CN112463159A (zh) 编译方法、装置、电子设备和存储介质
CN109711540B (zh) 一种计算装置及板卡
CN114330689A (zh) 数据处理方法、装置、电子设备及存储介质
CN112416303B (zh) 软件开发工具包热修复方法、装置及电子设备
CN118277291A (zh) 基于算子的数据处理方法、装置、电子设备及存储介质
CN115952848A (zh) 卷积运算电路、编译方法及相关产品
CN116340632A (zh) 对象推荐方法、装置、介质及电子设备
CN116805085A (zh) 零部件的3d到2d信息转化方法、装置、设备及存储介质
CN111209042B (zh) 一种建立函数栈的方法、装置、介质和电子设备
CN109542837B (zh) 运算方法、装置及相关产品
CN110222777B (zh) 图像特征的处理方法、装置、电子设备及存储介质
CN109558565B (zh) 运算方法、装置及相关产品
CN109543835B (zh) 运算方法、装置及相关产品
CN114692824A (zh) 一种神经网络模型的量化训练方法、装置和设备
CN111459584A (zh) 页面渲染方法、装置和电子设备
CN111562913B (zh) 视图组件的预创建方法、装置、设备及计算机可读介质
WO2022001438A1 (zh) 一种计算装置、集成电路芯片、板卡、设备和计算方法
CN109558943B (zh) 运算方法、装置及相关产品
CN109543833B (zh) 运算方法、装置及相关产品
CN109543834B (zh) 运算方法、装置及相关产品
CN109583580B (zh) 运算方法、装置及相关产品

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination