CN111241031A - 一种数据计算系统、方法以及装置 - Google Patents
一种数据计算系统、方法以及装置 Download PDFInfo
- Publication number
- CN111241031A CN111241031A CN202010015690.3A CN202010015690A CN111241031A CN 111241031 A CN111241031 A CN 111241031A CN 202010015690 A CN202010015690 A CN 202010015690A CN 111241031 A CN111241031 A CN 111241031A
- Authority
- CN
- China
- Prior art keywords
- calculation
- data
- memory
- processor
- chip
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本说明书公开了一种数据计算系统、方法以及装置,通过在计算芯片侧配置第一存储器,使得处理器可将取待处理的原始数据存储至计算芯片的第一存储器中,在进行计算时,根据预设的计算模型的各计算步骤对应的计算指令,依次向所述计算芯片发送计算指令,而计算芯片则将计算过程中产生的数据存储在计算芯片的第一存储器中,避免了对处理器侧存储空间的占用,处理器在确定计算模型各计算步骤已执行时,从计算芯片的第一存储器中获取计算结果。计算芯片也无需固化计算模型的算法逻辑,而只需能够根据计算指令,进行通用的逻辑运算、协议转换即可,保证了算法的灵活性。
Description
技术领域
本申请涉及信息处理技术领域,尤其涉及一种数据计算系统、方法以及装置。
背景技术
目前,现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片由于具有处理速度快、安全性高等优势,经常被运用在高性能计算系统中进行如深度学习、神经网络训练等复杂计算。这类算法的特点是需要多步运算,每步运算需要基于上一步运算的中间数据,使得运算时所需的数据较多,因此对于计算系统的缓存性能提出了较高的要求。
在现有技术中,高性能计算系统的解决方案主要有两种:其一,利用系统中央处理器CPU端的双速率同步动态随机存取存储器(Double Data Rate Synchronous DynamicRandom-access Memory,DDR)存储运算过程中所需的数据,在进行运算时由CPU获取数据再传输给FPGA,并由CPU向FPGA发送计算指令,FPGA则负责根据计算指令进行通用的逻辑运算、协议转换等操作,计算过程中产生的中间数据存储在DDR中。其二,在计算系统中为FPGA配置DDR作为存储设备,在该FPGA在生产时,便根据计算模型的计算逻辑将对应的算法逻辑固化在FPGA中,FPGA根据DDR控制器传输的数据以及自身固化的算法逻辑进行计算。
但是第一种方案,由于通常计算系统的CPU还需要承担其他操作,CPU端的DDR也需要存储其他缓存数据,导致在进行运算时由于原始数据以及中间数据需要占用CPU的DDR的存储空间,影响CPU的工作效率,并且DDR中存储的其他数据也限制DDR中留给运算存储空间,限制了运算性能。而在第二种方案中,由于FPGA中固化了计算模型的算法逻辑,因此FPGA进行的逻辑运算以及协议转换等操作并非通用的,而是根据计算模型进行设计的,这就使得当需要对算法进行优化或者修改时,需要对FPGA进行重新设计以及验证,不但耗时并且考虑到不同算法之间的兼容性,也可能出现修改后性能下降的情况,导致计算系统的灵活性较低。
发明内容
本说明书实施例提供的一种数据计算系统、方法以及装置,用于部分解决现有技术中存在的问题。
本说明书实施例采用下述技术方案:
本说明书提供的数据计算系统,所述系统包括:处理器、计算芯片、第一存储器,所述处理器与所述计算芯片连接,所述计算芯片与所述第一存储器连接,其中,
所述第一存储器,存储待处理的原始数据以及计算产生的数据;
所述处理器,根据预设的计算模型对应的各计算步骤,向所述计算芯片发送当前计算步骤对应的计算指令;
所述计算芯片,根据接收到的所述计算指令,从所述第一存储器中获取计算所需数据并进行计算,将计算产生的数据存储至所述第一存储器,向所述处理器发送计算完成信号;
所述处理器,响应于所述计算完成信号,判断所述计算模型对应的各计算步骤是否已执行,若是,通过所述计算芯片,获取所述第一存储器中存储的所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果,若否,则根据已执行的计算步骤,确定下一计算步骤对应的计算指令,并发送至所述计算芯片,直至所述计算模型各计算步骤均已执行为止。
可选地,所述系统还包括:第二存储器,存储待处理的原始数据,以及计算模型对应的各计算步骤的计算指令;
所述处理器,从所述第二存储器获取待处理的原始数据,传输给所述计算芯片;
所述计算芯片,将接收到所述原始数据存储至所述第一存储器中。
可选地,所述计算芯片,在所述第一存储器存储完成所述原始数据时,向所述处理器发送提示;
所述处理器,根据接收到的提示,确定计算准备完成,并当需要进行计算时,向所述计算芯片发送当前计算步骤对应的计算指令。
可选地,所述第一存储器,预先划分为:参数区、初始区、结果区以及至少两个数据区;
所述处理器,具有对所述参数区以及所述初始区执行写操作的权限,对所述结果区执行读操作的权限;
所述计算芯片,具有对所述参数区以及所述初始区执行读操作的权限,对所述数据区执行读操作和写操作的权限,对所述结果区执行写操作的权限。
可选地,所述第二存储器中,存储有所述计算模型的模型参数;
所述处理器,当需要进行计算时,从所述第二存储器中获取所述模型参数,并发送至所述计算芯片;
所述计算芯片,将接收到所述模型参数存储至所述第一存储器的参数区。
可选地,所述计算芯片,根据接收到的计算指令,从所述第一存储器的所述参数区获取计算所需模型参数,从所述第一存储器最近存储数据的数据区和/或所述初始区中获取计算所需数据。
可选地,所述计算芯片,当根据所述计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,从所述第二存储器的各数据区中,确定非最近存储数据的数据区存储所述中间数据;
所述计算芯片,当根据所述计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至所述结果区。
可选地,所述处理器,判断所述计算模型各计算步骤是否已执行之前,响应于所述计算完成信号,更新所述计算芯片已执行的计算步骤。
可选地,所述处理器,从所述第二存储器中获取待处理的原始数据,并对所述原始数据进行预处理得到预处理数据,将所述预处理数据传输给所述计算芯片;
所述计算芯片,将接收到所述预处理据存储至所述第一存储器中的初始区;
其中,当所述原始数据为图像时,所述预处理包括图像尺寸调整。
本说明书提供的数据计算方法,包括:
计算芯片接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的;
根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器;
根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器;
向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
可选地,所述第一存储器预先划分为:参数区、初始区、结果区以及至少两个数据区;
所述处理器,具有对所述参数区以及所述初始区执行写操作的权限,对所述结果区执行读操作的权限;
所述计算芯片,具有对所述参数区以及所述初始区执行读操作的权限,对所述数据区执行读操作和写操作的权限,对所述结果区执行写操作的权限。
可选地,接收处理器发送的计算指令之前,所述方法还包括:
接收所述处理器从第二存储器获取的所述原始数据,以及所述计算模型的模型参数;
将所述原始数据存储至所述第一存储器的初始区,以及将所述模型参数存储至所述第一存储器的参数区。
可选地,所述方法还包括:
当所述第一存储器存储完成所述原始数据时,向所述处理器发送提示,所述提示用于提示计算准备完成。
可选地,将计算产生的数据存储至所述第一存储器,具体包括:
当根据所述计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,并存储至所述第二存储器非最近存储数据的数据区中;
当根据所述计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至所述结果区。
可选地,所述计算芯片接收所述处理器从第二存储器获取的所述原始数据,具体包括:
所述计算芯片接收所述处理器发送的预处理数据,所述预处理数据为所述处理器根据从所述第二存储器获取的所述原始数据进行预处理得到的;
其中,当所述原始数据为图像时,所述预处理包括图像尺寸调整。
本说明书提供的数据计算装置,包括:
指令接收模块,接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的;
数据获取模块,根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器;
计算存储模块,根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器;
发送模块,向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
计算芯片分别与处理器以及第一存储器连接,并将处理器发送的原始数据存储在第一存储器中,当接收到处理器发送的计算指令时,可从第一存储器中获取计算所需数据(包括原始数据和计算产生的数据中的至少一种),并根据计算指令以及计算所需数据进行计算,将产生的数据存储在第一存储器中,通过向处理器发送计算完成信号,使处理器可以根据计算模型的计算步骤继续发送计算指令,直至所有计算步骤都已执行完成时,将最后计算产生的数据作为计算结果返回处理器。通过将计算所需数据以及计算过程中产生的数据存储在第一存储器中,避免了对处理器侧存储器的空间占用,减少了对运算性能的限制,并且计算指令可由处理器提供,避免了在计算芯片中固化计算模型的算法逻辑,使得计算芯片可以灵活适应不同的计算模型。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的数据计算系统的结构示意图;
图2为本说明书实施例提供的数据计算系统的结构示意图;
图3为本说明书实施例提供的计算模型的示意图;
图4为本说明书实施例提供的数据计算系统的结构示意图;
图5为本说明书实施例提供的数据存储示意图;
图6为本说明书提供的协处理器和运算模块的示意图;
图7为本说明书实施例提供的数据计算的过程示意图;
图8为本说明书实施例提供的数据计算装置的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有技术对图像中文字的识别时,通常是先确定出的文本行对应的最小外接矩形,在对该最小外接矩形对应的图像区域进行文字识别,确定文本行的字符串。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例提供的数据计算系统的结构示意图,该系统包括:处理器100、计算芯片200以及第一存储器300,其中,该处理器100与该计算芯片200连接,该计算芯片200与该第一存储器300连接。
在本说明书中,该数据计算系统为高性能计算系统,用于运行神经网络模型、深度学习模型、卷积神经网络、长短期记忆网络模型等需要多步计算,且存储计算过程中产生的数据的模型。或者,该数据计算系统也可用于进行模型训练,尤其是对于前述的各种需要多步计算的模型的训练,当然,具体该数据计算系统用于计算何种模型本说明书不做限定。
具体的,在本说明书一个或多个实施例中,该计算芯片200还可细分为:协处理器2002、运算模块2004、总线控制器2006、内存接口控制器2008。其中,该协处理器2002分别与该处理器100以及该运算模块2004连接,该总线控制器2006分别与该处理器100、协处理器2002以及内存接口控制器2008连接,该内存接口控制器2008与该第一存储器300连接,如图2所示。该计算芯片200为用于计算的芯片,例如,现场可编程门阵列(Field ProgrammableGate Array,FPGA)芯片,或者FPGA芯片的可编程逻辑(Progarmmable Logic,PL)端等。
其中,该协处理器2002配置为用于接收处理器100的指令,并根据指令控制第一存储器300中的数据的读写,以及控制运算模块2004进行计算。
该运算模块2004配置为用于收协处理器2002发送的计算指令以及进行计算。
该总线控制器2006为接口总线的选择器,例如,当总线为符合先进的可扩展接口(Advanced eXtensible Interface,AXI)第4版协议的总线时,即,AXI4总线,该总线控制器2006为通信总线AXI4接口选择器。该总线控制器2006连接的处理器100和协处理器2002为主端设备,该内存接口控制器2008为从端设备,使的处理器100和协处理器2002可通过该该总线控制器2006访问第一存储器300。
该内存接口控制器2008具体可以为计算芯片100端该第一存储器300的控制器,以上述总线为AXI4为例,该内存接口控制器2008左侧的通信总线接口协议是AXI4,连接到总线控制器2006,内存接口控制器2008右侧通过物理引脚连接第一存储器300。
在本说明书中,该第一存储器300,配置为用于存储待处理的原始数据,以及存储该计算芯片100计算产生的数据。该第一存储器300具体可以是双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR),尤其是考虑到计算所需数据占用的存储空间可能较大,在进行复杂计算时该第一存储器100存取的数据量较大,因此该第一存储器300具体可以是第4代DDR,即,DDR4内存。
图3为本说明书实施例提供的模型示意图,图3为一个多层感知器(Multi-LayerPerceptron,MLP)模型,其中输入端节点为3个,中间层节点为4个,输出端节点也为3个,箭头为数据流向。该第一存储器300存储的原始数据即为需要输入各输入节点的数据,而当各输入节点输出计算产生的数据时,也可先存储至该第一存储器300中,并在后续中间层节点进行计算时,再从第一存储器300中获取计算所需数据,依次类推。
并且,该第一存储器300为计算芯片200侧的存储器,该处理器100无法直接对该第一存储器300直接进行读、写、删、改等操作,而是需要通过该计算芯片200对该第一存储器300进行操作。
在本说明书一个或多个实施例中,该处理器100配置为在该数据计算系统启动后,确定是否存在需要处理的原始数据,并将该原始数据通过该计算芯片200存储至该第一存储器300中。也就是说,该第一存储器300中待处理的原始数据是由处理器100提供的。其中,该处理器100具体可以是中央处理器(Central Processing Unit,CPU)、RISC微处理器(Advanced RISC Machines,ARM)或者FPGA芯片的处理系统(Processing System,PS)端等,本说明书对此不做限制。该处理器用于确定待处理的原始数据,并通过计算芯片200存储至第一存储器300,以及确定计算指令发送至计算芯片200。
具体的,在本说明书中,该处理器100将原始数据存储至第一存储器300的过程可包括:处理器100获取待处理的原始数据,并根据该原始数据以及处理器100的标识,生成携带有原始数据以及处理器100标识的写指令。然后将该写指令发送至该总线控制器2006。之后该总线控制器2006确定该写指令在第一存储器300的地址,并发送该写指令至该内存接口控制器2008。然后该内存接口控制器2008可根据该写指令中该处理器100标识,确定该处理器100具有写权限,在根据该总线控制器2006确定出的地址,将该原始数据写入该第一存储器300中。
当然,在本说明书中并不限制该处理器100获取原始数据的方式,具体可根据需要设置。例如,假设该数据计算系统中包含有通用串行总线(Universal Serial Bus,USB)接口,当该USB接口与通用串行总线闪存盘(Universal Serial Bus Flash Disk,U盘)连接时,该U盘中存储有触发进行计算的代码以及原始数据,该处理器100通过总线访问该U盘后可以通过运行该代码,获取U盘中的原始数据从通过该计算芯片200存储至该第一存储器300中。或者,该处理器100通过网络连接从其他设备(例如,数据库,服务器等)获取该原始数据。
进一步地,在本说明书一个或多个实施例中,该数据计算系统中还可包括:第二存储器400,该第二存储器400与该处理器100连接,属于处理器100侧的存储器,如图4所示。该第二存储器400具体可以是处理器100中的只读存储器(Read-Only Memory,ROM),或者也可以是该数据计算系统中与该处理器100连接的DDR内存,当然,对于该第二存储器400具体形式本说明书不做限定,可以根据需要设置。
该处理器100在该计算系统启动后,可从该第二存储器400中获取待处理的原始数据,并通过该总线控制器2006以及该内存接口控制器2008,将原始数据存储至该第一存储器300。结合前述对原始数据来源的说明,该原始数据的来源可以是多种的,因此该第二存储400可以配置为用于缓存该原始数据,使得该计算系统进行计算时,该原始数据不会占用该处理器100侧存储器的存储空间,提高该处理器100的效率。
进一步地,在本说明书一个或多个实施例中,该第一存储器300在存储完成该原始数据时,可以向该计算芯片200发送提示,该计算芯片200可将该提示发送至该处理器100。该处理器100在接收到提示后,可确定计算准备完成,并当需要进行计算时向该计算芯片200发送当前计算步骤对应的计算指令。
具体的,在本说明书一个或多个实施例中,该数据计算系统当需要进行计算时,该处理器100还可配置为根据预设的计算模型对应的各计算步骤,向该计算芯片200发送当前计算步骤对应的计算指令,以使该计算芯片200进行根据第一存储器300中存储的计算所需数据,进行计算。
该处理器100可根据接收到的开始计算的信息,确定需要进行计算,确定计算指令并发送至该计算芯片200。结合前述对原始数据来源的说明,该开始计算的信息可以是由其他设备发送的。例如,处理器100接收服务器通过网络发送的开始计算的信息。
或者,该处理器100也可在配置为,在接收到计算芯片200发送的提示时,确定接收到开始计算的信息,从而确定计算指令并发送至该计算芯片200。也就是说,该处理器100被配置为,只要第一存储器300完成对原始数据的存储便开始进行数据计算。当然,具体该处理器100在何时开始发送计算指令,可以根据需要设置,本说明书不做限制。
另外,在本说明书中,由于该处理器100可根据预设的计算模型对应的各计算步骤,确定需要发送至计算芯片200的计算步骤对应的计算指令,因此该第二存储器400中还可存储有该计算模型包含的各计算步骤分别对应的计算指令。其中,该计算指令至少包含了:需要获取哪些计算所需数据,以及对如何进行计算的逻辑命令。
其中,需要说明的是,各计算步骤为根据该计算模型确定的,因此当计算模型不同时,计算步骤不完全相同。同样的,各计算步骤对应的计算指令也是根据计算模型确定的,即进行计算的逻辑命令是根据计算模型确定的。并且,在现有用于运行计算模型的数据计算系统也包含进行计算的逻辑命令,因此具体如何确定进行计算的逻辑命令已经是较为成熟的方法,本说明书对此不作限定。
并且,由于计算模型为多步骤的模型,因此存在中间数据存储和读取的过程。而在本说明书中该计算指令至少包括需要获取哪些计算所需数据,因此该处理器100在确定计算指令时,还可根据该第一存储器300存储数据的地址,确定计算指令中获取计算所需数据的地址。并且,该地址可能随着原始数据的大小而改变。例如,以计算模型为卷积神经网络模型为例,原始数据是10×10的图像,还是256×256的图像,所产生的中间数据的大小就不同,因此地址也可能不同。因此,该处理器100可以是根据预先确定的逻辑命令,以及第一存储器300存储数据的地址,确定各计算指令的。
进一步地,该计算芯片200在接收到处理器100发送的计算指令后,可根据该计算指令从该第一存储器300中获取计算所需的数据,并进行计算。然后将计算产生的数据再存储至该第一存储器300中。并向该处理器100发送计算完成信号
最后,该处理器100可响应于该计算完成信号,判断该计算模型对应的各计算步骤是否已执行,若是,则通过该计算芯片200,获取该第一存储器300中存储的该计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果,若否,则根据已执行的计算步骤,确定下一计算步骤对应的计算指令,并发送至该计算芯片200,直至该计算模型各计算步骤均已执行为止。
具体的,该数据计算系统在进行计算时的详细过程可包括:
第一,该处理器100首先可从该协处理器2002获取已经执行的计算步骤的信息,并根据该预设的计算模型对应的各计算步骤,确定当前需要执行的计算步骤。再根据第二存储器400中存储的各计算步骤对应的计算指令,确定当前计算步骤对应的计算指令,并将该计算指令发送至该协处理器2002。
第二,该协处理器2002接收该处理器100发送的计算指令,并根据计算指令中包含的需要获取的计算所需数据的存储地址,确定读指令并发送至该总线控制器2006。以及将该计算指令中的逻辑命令转发至运算模块2004。其中,该协处理器2002确定的该读指令中携带有该计算芯片200标识。
第三,该总线控制器2006可将该读指令发送至该内存接口控制器2008。则该内存接口控制器2008可根据该读指令携带的该计算芯片200标识,确定该计算芯片200具有从该地址获取数据的权限,并根据该读指令从该第一存储器300中获取计算所需数据。
第四,该内存接口控制器2008通过该总线控制器2006将从该第一存储器300中获取的计算所需数据返回该协处理器2002。若当前计算步骤是中间步骤,例如图3中间层的计算步骤,则该计算所需数据至少包括中间数据,若当前计算步骤是第一步骤,例如图3输入层的计算步骤,则该计算所需数据至少包括原始数据。当然,具体计算所需数据包括哪些数据,可视计算模型的不同而不同,在根据该计算模型生成计算指令时就已经确定了需要获取的数据。
第五,该协处理器2002将计算所需数据发送给运算模块2004,则该运算模块2004可根据协处理器2002分别提供的进行计算的逻辑命令以及计算所需数据进行运算。
第六,该运算模块2004将计算产生的数据返回该协处理器2002,由该协处理器2002确定写指令,并将该计算产生的数据携带在写指令中,发送至该总线控制器2006,并通过内存接口控制器2008将该计算产生的数据存储至第一存储器300中。
上述过程为该计算芯片200进行一次计算的过程,在该计算芯片200完成计算后,还需向该处理器100发送计算完成信号,以使该处理器100确定发送的计算指令已经完成,并确定该计算模型后续的计算步骤还有哪些,确定相应的计算指令并继续发送至计算芯片200,重复计算过程,直至计算模型的各计算步骤均执行完成为止。因此该处理器100还用于响应于计算完成信号,确定计算指令并发送至计算芯片200,具体是发送至协处理器2002。
具体的,延续上述过程,在该运算模块2004将计算产生的数据返回该协处理器2002时,该运算模块2004还可更新自身存储的计算状态(即,计算步骤的信息)。
第七,该第一存储器300在存储该计算产生的数据后,可向该计算芯片200反馈存储完成的信息,则该计算芯片200向该处理器100发送计算完成信号。具体可由该协处理器2002可从该运算模块2004获取计算步骤的信息,作为计算完成信号,并返回该处理器100。
第八,该处理器100根据该计算模型对应的各计算步骤,以及协处理器2002返回的计算步骤的信息,确定该计算模型各计算步骤是否均已执行,若是,则确定第一存储器300最近存储的数据为计算结果,若否,则确定该协处理器2002从该运算模块2004获取的计算产生的数据为中间数据,并根据该计算步骤的信息以及计算模型对应的各计算步骤,确定下一计算步骤,以及从第二存储器400获取下一计算步骤对应的计算指令,再发送至该协处理器2002进行计算,直至计算模型各计算步骤均已执行为止。其中,该协处理器2002、运算模块2004、总线控制器2006以及内存接口控制器2008可通过上述第二至第六的过程根据接收到的计算指令进行计算。
其中,该处理器100若确定计算模型各计算步骤均已执行时,可生成读指令并通过总线控制器2006以及内存接口控制器2008发送至该第一存储器300,从该第一存储器300获取最后一个计算指令计算产生的数据,作为计算结果。
基于图1所示的数据计算系统,计算芯片分别与处理器以及第一存储器连接,并将处理器发送的原始数据存储在第一存储器中,当接收到处理器发送的计算指令时,可从第一存储器中获取计算所需数据(包括原始数据和计算产生的数据中的至少一种),并根据计算指令以及计算所需数据进行计算,将产生的数据存储在第一存储器中,通过向处理器发送计算完成信号,使处理器可以根据计算模型的计算步骤继续发送计算指令,直至所有计算步骤都已执行完成时,将最后计算产生的数据作为计算结果返回处理器。通过将计算所需数据以及计算过程中产生的数据存储在第一存储器中,避免了对处理器侧存储器的空间占用,减少了对运算性能的限制,并且计算指令可由处理器提供,避免了在计算芯片中固化计算模型的算法逻辑,使得计算芯片可以灵活适应不同的计算模型。
另外,在本说明书一个或多个实施例中,该处理器100在接收到提示,确定计算准备完成时,由于此时计算尚未开始,因此还没有已经完成的计算步骤,因此该处理器100可确定该计算模型的首个计算步骤对应的计算指令,并发送至协处理器2002。但是,后续计算指令发送时,该处理器100就需要从协处理器2002获取该运行模块2004的计算状态(即,计算步骤的信息),从而确定下一步需要发送那个计算步骤对应的计算指令。当然,该处理器100发送计算指令之前,都需要确定该第一存储器300已经存储了数据。例如,发送原始数据时确定第一存储器300已经将原始数据存储完毕,才可发送计算指令,或者当第一存储器300将中间数据存储完毕后,再发送下一个步骤的计算指令。
进一步地,在本说明书一个或多个实施例中,该处理器100在发送计算指令时,还可确定该计算模型的模型参数,并将模型参数携带在该计算指令中发送至计算芯片200。模型参数具体可与计算指令一样,是预先存储在第二存储器400中的。并且,由于计算指令对应的是不同的计算步骤,而不同的计算步骤所需的模型参数可能不完全相同,因此该模型参数可以是一次全部发送至该计算芯片200的,或者为了节省计算芯片200(具体为运算模块2004)的存储压力,该处理器100也可仅将计算指令设计的模型参数发送至该计算芯片200。
例如,仍以图3为例,该MLP模型中不同层所需的模型参数不同,则该处理器100在发送输入层的计算指令时,可以仅将输入层的模型参数(例如节点权重)发送至计算芯片200,依次类推。
另外,在本说明书一个或多个实施例中,由于该第一存储器300可以被处理器100以及计算芯片200访问,因此为了减少地址冲突带来的排队问题,提高计算效率,该第一存储器300可预先划分为参数区、初始区、结果区以及至少两个数据区。
其中,参数区用于存储模型参数,初始区用于存储原始数据,处理器100具有对该参数区以及该初始区执行写操作的权限。
结果区用于存储最后作为计算结果的数据,该计算芯片200具有对该结果区执行写操作的权限,但是没有执行读操作的权限,而该处理器100具有对该结果区执行读操作的权限,但是没有执行写操作的权限。
各数据区用于存储不同计算步骤产生的中间数据,因此至少需要有两个数据区。当然,由于中间数据还可能用于后续步骤的计算,因此该计算芯片200具有对各数据区的读写操作的权限。
当然,需要说明的是该第一存储器300中数据区的数量可以根据需要设置,并且,由于某些计算模型在计算时可能需要多个计算步骤的中间数据,因此该数据区的数量可根据需要设置。例如,在全卷积网络(Fully Convolutional Networks,FCN)模型中,为了提高最终输出的结果精度,可能需要根据不同层数的池化层的结果进行反卷积,并综合确定输出的结果,则此时第一存储器300可通过不同的数据区存储不同层的池化层的中间数据。
更进一步地,当第一存储器300划分为多个区,并用于存储不同的数据时,该数据计算系统的数据存储过程可如图5所示。
图5为本说明书实施例提供的数据存储示意图,包括第二存储器400,第一存储器300以及协处理器2002,虚线框为总线控制器2006,表示数据存储都需要通过总线控制器2006,图5中省略了处理器100以及内存接口控制器2008,图5中的数字表示计算过程中数据存储读取的顺序,假设计算模型的计算步骤有3步。
S1,第二存储器400中存储的原始数据可通过处理器100通过计算芯片200存储至第一存储器300的初始区。
S2,处理器100通过计算芯片200将第二存储器400中存储的模型参数存储至第一存储器300的参数区。
S3,计算芯片200根据处理器100发送的计算指令,从第一存储器300的初始区获取原始数据以及从参数区获取模型参数,并进行计算。
S4,计算芯片200将计算产生的数据,作为中间数据存储至第一数据区。
S5,计算芯片200继续根据处理器100发送的计算指令,从第一存储器300第一数据区获取中间数据,从第一存储器300参数区获取模型参数,进行计算。
S6,计算芯片200将计算产生的数据,作为中间数据存储至第二数据区。
S7,计算芯片200继续根据处理器100发送的计算指令,从第一存储器300第二数据区获取中间数据,从第一存储器300参数区获取模型参数,进行计算。
S8,计算芯片200将计算产生的数据,作为计算结果存储至结果区。
S9,处理器100从第一存储器300的结果区获取计算结果,并可存储至第二存储器400中。
其中,S3、S5以及S7计算芯片200从参数区获取的模型参数不完全相同,例如分别对应第一、第二以及第三计算步骤的模型参数。
由于第一存储器300进行了存储区的划分,因此再根据计算指令获取第一存储器300存储的计算所需数据时,可以根据需要获取的数据所在的区域确定基地址,并根据计算所需数据的大小,确定偏移量。并将基地址以及偏移量从第一存储器300获取数据。
另外,当该数据区只有两个时,该协处理器2002可依次将各计算步骤产生的数据存储至不同的数据区中,使得数据区中存储有最近两个计算步骤产生的数据。
进一步地,当第一存储器300分区时,该协处理器2002在将运算模块2004计算得到的数据存储至第一存储器300时,需要确定存储至那个区中,可由处理器100确定数据存储的数据区,或者由协处理器2002根据运算模块2004的记录的运算状态确定。
具体的,该运算模块2004在将计算产生的数据返回该协处理器2002时,还可更新自身存储的计算状态,而该协处理器2002在接收到计算产生的数据后,从该运算模块2004获取更新后的计算状态,并向该处理器100发送计算完成信号。
而该处理器100根据该计算完成信号,向该协处理器2002发送状态查询请求,该协处理器2002将获取的更新后的计算状态返回该处理器100,该处理器100可根据计算模型对应的各计算步骤以及协处理器2002返回的计算状态(即,计算步骤的信息)确定已经完成的计算步骤为哪一步,并确定该计算产生的数据需要存储在第一存储器300的哪个区中(包括各数据区以及结果区),以向该协处理器2002发送写指令。
而该协处理器2002可根据写指令确定需要存储的区,并将该计算产生的数据,通过该总线控制器2006以及该内存接口控制器2008,存储至该第一存储器300中。其中,与之前过程类似,协处理器2002生成携带有根据计算芯片200标识以及该计算产生的数据的写指令,该总线控制器2006确定存储地址,该内存接口控制器2008根据计算芯片200标识确定具有写权限,并将该计算产生的数据写入该第一存储器300。
最后,该第一存储器300在完成存储后,通过总线控制器2006以及该内存接口控制器2008向该协处理器2002发送提示,该协处理器200根据提示向该处理器100发送可以继续计算的信号,该处理器100可根据后续需要执行的计算步骤向协处理器2002发送计算指令,或者当计算步骤均执行完成时,从该第一存储器300获取计算结果。
上述描述中,计算步骤计算产生的数据具体存储在哪个区,是由处理器100确定的,当然,在本说明书一个或多个实施例中,该处理器100发送的计算指令中还可携带有计算产生的数据需要存储在哪个区的信息,例如,该计算指令中携带有基地址以及偏移量,使得该协处理器2002或者运算芯片2004,在确定计算产生的数据后,可根据计算指令确定数据如何存储,而无需额外通过处理器100来确定如何存储数据。
并且,由于计算指令是处理器100获取并发送至协处理器2002的,因此当处理器100接收到计算完成信号时,也可根据已经发送的计算指令,确定计算完成的计算步骤所产生的数据存储在哪里。也就是说,即使计算芯片200不通知该处理器100数据的存储地址,该处理器100也应该根据自身发送的计算指令确定数据的存储地址。
另外,在本说明书一个或多个实施例中,该处理器100可以在每次确定可以向协处理器2002发送计算指令时,先从运算模块2004或协处理器2002处获取已经执行的步骤信息,再根据计算模型的各计算步骤,确定下一计算步骤,以及下一计算步骤对应的计算指令。或者,该处理器100也可在接收到计算完成信息后,根据最近发送的计算指令对应的计算步骤,更新记录的该计算芯片200已执行的计算步骤,进而确定下一计算步骤对应的计算指令。
也就是说,在本说明书中可以由计算芯片200记录计算步骤,处理器100每次发送计算指令前通过计算芯片200确定已经执行的计算步骤到了哪一步,或者,也可由处理器100自己记录已经执行的计算步骤。
进一步地,在本说明书中,若该计算模型为图像处理模型,例如,FCN模型,则该原始数据为图像,则该处理器100在从第二存储器400获取待处理的原始数据(即,图像)后,可对该图像进行预处理,得到预处理数据,并将预处理数据通过计算芯片200存储至第一存储器300的初始区中。其中,预处理至少可包括图像尺寸调整。
另外,在本说明书一个或多个实施例中,该协处理器2002与处理器100连接端还可包括指令寄存器以及计算状态寄存器,分别用于在接收到处理器100发送的计算指令时存储该计算指令,以及从运算模块2004获取计算状态(即,计算步骤的信息)时存储计算状态。该协处理器2002与总线控制器2006连接端还包括读先进先出(First Input FirstOutput,FIFO)寄存器、写FIFO寄存器以及总线控制状态机(Finite State Machine,FSM),例如总线为AIX4时,总线控制状态机为AIX4 control FSM。其中,各FIFO分别用于进行读写操作时对数据时进行缓存,FSM主要用于确定FIFO状态,以使协处理器2002确定何时可以进行读写操作。读写操作的对象是数据,目标是总线控制器2006以及运算模块2004,包括:从总线控制器2006读取第一存储器300的数据,写入运算模块2004,从运算模块2004读取数据通过总线控制器2006写入第一存储器300等。
该运算模块2004包括算法状态机,与协处理器2002的指令寄存器和计算状态寄存器对接,用于接收计算指令和发送当前的计算状态。运算模块2004还包括块随机存储器组(Block Random Access Memory,BRAM)用于缓存接收到的计算所需数据,以及缓存计算产生的数据。算法结构子模块由算法状态机进行整体控制,并根据从接收块随机存储器组中的数据进行数据传递和填充,传输给处理单元(Processing Element,PE)进行运算执行,PE的运算结果再通过算法结构子模块块写入块随机存储器组中等待协处理器2002读取。运算模块2004中的PE通过根据接收到存储的计算指令接收到的数据进行运算,上述结构可如图6所示。图6中运算模块2004中的BRAM中左侧为缓存计算产生数据并传输至协处理器2002的RAM,右侧为缓存接收到协处理器2002传输的数据的RAM。
进一步地,在本说明书一个或多个实施例中,若运算模块2004的块随机存储器组的大小不足以缓存一次计算过程所需的所有数据,则在预先确定各计算步骤对应的计算指令时,该计算指令可以指示协处理器2002分多次获取计算所需的数据,以及指示运算模块2004分多次进行计算。
例如,假设某个计算步骤对应的计算所需的数据大小为64bit,而块随机存储器组大小为8bit,则计算指令可为每次获取8分之一的数据,每次对8分之一的数据进行计算。当然,上述举例仅为示意性的,计算步骤具体可以如何划分还得根据模型结构确定,例如图3所示的MLP模型输入层对应的计算步骤就可划分为3个节点的计算,若数据量太大,则输入层对应的计算指令可以分为3个,分别计算得到3个节点的计算结果。
基于图1所示的数据计算系统,本说明书还提供了一种数据计算方法的流程,示意图如图7所示,具体可包括以下步骤:
S500:计算芯片接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的。
在本说明书中,该计算过程以图1中数据计算系统的计算芯片为执行主体进行说明,该计算芯片可接收处理器发送的计算指令。该计算指令可以是处理器侧的第二存储中存储的计算模型的各计算步骤对应的计算指令,并由处理器根据已经执行的计算步骤以及该计算模型的各计算步骤,确定出的当前计算步骤对应的计算指令。
S502:根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器。
在本说明书中,该计算芯片在接收到计算指令后,可根据计算指令从第一存储器(即,计算芯片侧的存储器)中获取计算所需数据,该计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种。其中,该第一存储器可预先划分为:参数区、初始区、结果区以及至少两个数据区。该处理器,具有对该参数区以及该初始区执行写操作的权限,对该结果区执行读操作的权限。该计算芯片,具有对该参数区以及该初始区执行读操作的权限,对该数据区执行读操作和写操作的权限,对该结果区执行写操作的权限。
当该计算指令为计算模型的第一个计算步骤对应的计算指令时,计算芯片可从初始区获取原始数据,从参数区获取模型参数,当计算指令不是第一个计算步骤对应的计算指令时,该计算芯片可从最近存储数据的数据区获取中间数据,从参数区获取模型参数。
另外,第一存储器在将原始数据存储完成后,可通过计算芯片向该处理器发送提示,提示计算准备完成,而之后处理器可根据需要向计算芯片发送计算指令,则计算芯片可执行步骤S500。
S504:根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器。
在本说明书中,该计算芯片在接收到计算所需数据后,便可根据计算指令,进行计算,得到计算产生的数据。当计算芯片是根据该计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,并存储至该第一存储器非最近存储数据的数据区中,当根据该计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至该结果区。
S506:向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
该计算芯片在第一存储器存储完成计算产生的数据后,便可向处理器发送计算完成信号,使该处理器在确定各计算步骤均执行完成时,通过计算芯片从第一存储的结果区获取计算结构,或者在确定还有计算步骤需要执行时,继续向该计算芯片发送计算指令,则计算芯片可以重复步骤S500~步骤506的过程,直至处理器确定各计算步骤均执行完成为止。
该计算芯片执行的各步骤的详细过程可参考上述对数据计算系统的描述,在数据计算系统中已经进行了详细描述,再此不再赘述。
基于图7所示的数据计算方法,计算芯片分别与处理器以及第一存储器连接,并将处理器发送的原始数据存储在第一存储器中,当接收到处理器发送的计算指令时,可从第一存储器中获取计算所需数据(包括原始数据和计算产生的数据中的至少一种),并根据计算指令以及计算所需数据进行计算,将产生的数据存储在第一存储器中,通过向处理器发送计算完成信号,使处理器可以根据计算模型的计算步骤继续发送计算指令,直至所有计算步骤都已执行完成时,将最后计算产生的数据作为计算结果返回处理器。通过将计算所需数据以及计算过程中产生的数据存储在第一存储器中,避免了对处理器侧存储器的空间占用,减少了对运算性能的限制,并且计算指令可由处理器提供,避免了在计算芯片中固化计算模型的算法逻辑,使得计算芯片可以灵活适应不同的计算模型。
基于图1所示数据计算系统以及图7所示的数据计算过程,本说明书实施例还对应提供数据计算装置的结构示意图,如图8所示。
图8为本说明书实施例提供的数据计算装置的结构示意图,所述装置包括:
指令接收模块600,接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的;
数据获取模块602,根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器;
计算存储模块604,根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器;
发送模块606,向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
可选地,所述第一存储器预先划分为:参数区、初始区、结果区以及至少两个数据区,所述处理器,具有对所述参数区以及所述初始区执行写操作的权限,对所述结果区执行读操作的权限,所述计算芯片,具有对所述参数区以及所述初始区执行读操作的权限,对所述数据区执行读操作和写操作的权限,对所述结果区执行写操作的权限。
可选地,所述指令接收模块600,接收处理器发送的计算指令之前,接收所述处理器从第二存储器获取的所述原始数据,以及所述计算模型的模型参数,将所述原始数据存储至所述第一存储器的初始区,以及将所述模型参数存储至所述第一存储器的参数区。
可选地,所述发送模块606,当所述第一存储器存储完成所述原始数据时,向所述处理器发送提示,所述提示用于提示计算准备完成。
可选地,所述计算存储模块604,当根据所述计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,并存储至所述第一存储器非最近存储数据的数据区中,当根据所述计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至所述结果区。
可选地,所述指令接收模块600,所述计算芯片接收所述处理器发送的预处理数据,所述预处理数据为所述处理器根据从所述第二存储器获取的所述原始数据进行预处理得到的,其中,当所述原始数据为图像时,所述预处理包括图像尺寸调整。
本说明书实施例还提供了计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述确备餐的方法中的任一个。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (16)
1.一种数据计算系统,其特征在于,所述系统包括:处理器、计算芯片、第一存储器,所述处理器与所述计算芯片连接,所述计算芯片与所述第一存储器连接,其中,
所述第一存储器,存储待处理的原始数据以及计算产生的数据;
所述处理器,根据预设的计算模型对应的各计算步骤,向所述计算芯片发送当前计算步骤对应的计算指令;
所述计算芯片,根据接收到的所述计算指令,从所述第一存储器中获取计算所需数据并进行计算,将计算产生的数据存储至所述第一存储器,向所述处理器发送计算完成信号;
所述处理器,响应于所述计算完成信号,判断所述计算模型对应的各计算步骤是否已执行,若是,通过所述计算芯片,获取所述第一存储器中存储的所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果,若否,则根据已执行的计算步骤,确定下一计算步骤对应的计算指令,并发送至所述计算芯片,直至所述计算模型各计算步骤均已执行为止。
2.如权利要求1所述的系统,其特征在于,所述系统还包括:第二存储器,存储待处理的原始数据,以及计算模型对应的各计算步骤的计算指令;
所述处理器,从所述第二存储器获取待处理的原始数据,传输给所述计算芯片;
所述计算芯片,将接收到所述原始数据存储至所述第一存储器中。
3.如权利要求2所述的系统,其特征在于,所述计算芯片,在所述第一存储器存储完成所述原始数据时,向所述处理器发送提示;
所述处理器,根据接收到的提示,确定计算准备完成,并当需要进行计算时,向所述计算芯片发送当前计算步骤对应的计算指令。
4.如权利要求2所述的系统,其特征在于,所述第一存储器,预先划分为:参数区、初始区、结果区以及至少两个数据区;
所述处理器,具有对所述参数区以及所述初始区执行写操作的权限,对所述结果区执行读操作的权限;
所述计算芯片,具有对所述参数区以及所述初始区执行读操作的权限,对所述数据区执行读操作和写操作的权限,对所述结果区执行写操作的权限。
5.如权利要求4所述的系统,其特征在于,所述第二存储器中,存储有所述计算模型的模型参数;
所述处理器,当需要进行计算时,从所述第二存储器中获取所述模型参数,并发送至所述计算芯片;
所述计算芯片,将接收到所述模型参数存储至所述第一存储器的参数区。
6.如权利要求4所述的系统,其特征在于,所述计算芯片,根据接收到的计算指令,从所述第一存储器的所述参数区获取计算所需模型参数,从所述第一存储器最近存储数据的数据区和/或所述初始区中获取计算所需数据。
7.如权利要求4所述的系统,其特征在于,所述计算芯片,当根据所述计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,从所述第二存储器的各数据区中,确定非最近存储数据的数据区存储所述中间数据;
所述计算芯片,当根据所述计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至所述结果区。
8.如权利要求1所述的系统,其特征在于,所述处理器,判断所述计算模型各计算步骤是否已执行之前,响应于所述计算完成信号,更新所述计算芯片已执行的计算步骤。
9.如权利要求4所述的系统,其特征在于,所述处理器,从所述第二存储器中获取待处理的原始数据,并对所述原始数据进行预处理得到预处理数据,将所述预处理数据传输给所述计算芯片;
所述计算芯片,将接收到所述预处理据存储至所述第一存储器中的初始区;
其中,当所述原始数据为图像时,所述预处理包括图像尺寸调整。
10.一种数据计算方法,其特征在于,包括:
计算芯片接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的;
根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器;
根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器;
向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
11.如权利要求10所述的方法,其特征在于,所述第一存储器预先划分为:参数区、初始区、结果区以及至少两个数据区;
所述处理器,具有对所述参数区以及所述初始区执行写操作的权限,对所述结果区执行读操作的权限;
所述计算芯片,具有对所述参数区以及所述初始区执行读操作的权限,对所述数据区执行读操作和写操作的权限,对所述结果区执行写操作的权限。
12.如权利要求11所述的方法,其特征在于,接收处理器发送的计算指令之前,所述方法还包括:
接收所述处理器从第二存储器获取的所述原始数据,以及所述计算模型的模型参数;
将所述原始数据存储至所述第一存储器的初始区,以及将所述模型参数存储至所述第一存储器的参数区。
13.如权利要求12所述的方法,其特征在于,所述方法还包括:
当所述第一存储器存储完成所述原始数据时,向所述处理器发送提示,所述提示用于提示计算准备完成。
14.如权利要求11所述的方法,其特征在于,将计算产生的数据存储至所述第一存储器,具体包括:
当根据所述计算模型中非最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为中间数据,并存储至所述第一存储器非最近存储数据的数据区中;
当根据所述计算模型中最后计算步骤对应的计算指令进行计算后,将计算产生的数据作为计算结果存储至所述结果区。
15.如权利要求12所述的方法,其特征在于,所述计算芯片接收所述处理器从第二存储器获取的所述原始数据,具体包括:
所述计算芯片接收所述处理器发送的预处理数据,所述预处理数据为所述处理器根据从所述第二存储器获取的所述原始数据进行预处理得到的;
其中,当所述原始数据为图像时,所述预处理包括图像尺寸调整。
16.一种数据计算装置,其特征在于,包括:
指令接收模块,接收处理器发送的计算指令,所述计算指令为所述处理器根据预设的计算模型对应的各计算步骤确定并发送的;
数据获取模块,根据所述计算指令,从第一存储器中获取计算所需数据,所述计算所需数据包括待处理的原始数据以及计算产生的数据中的至少一种,所述第一存储器为所述计算芯片的存储器;
计算存储模块,根据所述计算指令以及获取的计算所需数据进行计算,并将计算产生的数据存储至所述第一存储器;
发送模块,向所述处理器发送计算完成信号,使所述处理器响应于所述计算完成信号,在确定存在未执行的计算步骤时,继续向所述计算芯片发送计算指令,以及在确定所述计算模型对应的各计算步骤均已执行时,通过所述计算芯片从所述第一存储器获取所述计算模型对应的最后一个计算步骤计算产生的数据,作为计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015690.3A CN111241031A (zh) | 2020-01-07 | 2020-01-07 | 一种数据计算系统、方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015690.3A CN111241031A (zh) | 2020-01-07 | 2020-01-07 | 一种数据计算系统、方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111241031A true CN111241031A (zh) | 2020-06-05 |
Family
ID=70874255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010015690.3A Withdrawn CN111241031A (zh) | 2020-01-07 | 2020-01-07 | 一种数据计算系统、方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241031A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986141A (zh) * | 2021-11-08 | 2022-01-28 | 北京奇艺世纪科技有限公司 | 服务端模型更新方法、系统、电子设备及可读存储介质 |
CN114356541A (zh) * | 2021-11-29 | 2022-04-15 | 苏州浪潮智能科技有限公司 | 一种计算核心的配置方法及装置、系统、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360968A (zh) * | 2014-09-24 | 2015-02-18 | 广东电网有限责任公司佛山供电局 | 数据甄别与预处理物理卡及运行方法、电能数据处理系统 |
CN109993287A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 神经网络处理方法、计算机系统及存储介质 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
-
2020
- 2020-01-07 CN CN202010015690.3A patent/CN111241031A/zh not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360968A (zh) * | 2014-09-24 | 2015-02-18 | 广东电网有限责任公司佛山供电局 | 数据甄别与预处理物理卡及运行方法、电能数据处理系统 |
CN109993287A (zh) * | 2017-12-29 | 2019-07-09 | 北京中科寒武纪科技有限公司 | 神经网络处理方法、计算机系统及存储介质 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986141A (zh) * | 2021-11-08 | 2022-01-28 | 北京奇艺世纪科技有限公司 | 服务端模型更新方法、系统、电子设备及可读存储介质 |
CN114356541A (zh) * | 2021-11-29 | 2022-04-15 | 苏州浪潮智能科技有限公司 | 一种计算核心的配置方法及装置、系统、电子设备 |
CN114356541B (zh) * | 2021-11-29 | 2024-01-09 | 苏州浪潮智能科技有限公司 | 一种计算核心的配置方法及装置、系统、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957989B (zh) | 基于集群的词向量处理方法、装置以及设备 | |
CN110737608B (zh) | 一种数据操作方法、装置及系统 | |
CN115981870B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN112036236A (zh) | 一种基于GhostNet的检测模型的训练方法、设备及介质 | |
CN116432778B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN112597013A (zh) | 一种在线开发以及调试方法及装置 | |
CN111241031A (zh) | 一种数据计算系统、方法以及装置 | |
CN116151363B (zh) | 分布式强化学习系统 | |
CN116822657B (zh) | 一种模型训练加速的方法、装置、存储介质及电子设备 | |
CN114253694B (zh) | 一种基于神经网络加速器的异步处理方法与装置 | |
CN117635822A (zh) | 一种模型训练的方法、装置、存储介质及电子设备 | |
CN116309823A (zh) | 一种位姿的确定方法、装置、设备及存储介质 | |
CN117392485A (zh) | 图像生成模型训练方法、业务执行方法、装置及介质 | |
CN117409466B (zh) | 一种基于多标签控制的三维动态表情生成方法及装置 | |
CN108170663A (zh) | 基于集群的词向量处理方法、装置以及设备 | |
CN116107728B (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
CN117035123A (zh) | 一种并行训练中的节点通信方法、存储介质、设备 | |
CN115017915B (zh) | 一种模型训练、任务执行的方法及装置 | |
CN117424827A (zh) | 一种基于分布式深度学习缓存系统的通讯方法和装置 | |
CN112612427A (zh) | 一种车辆停靠点数据处理方法、装置、存储介质及终端 | |
CN114254563A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
CN111984720A (zh) | 一种数据获取方法、装置、电子设备和接口适配装置 | |
CN113673436A (zh) | 一种行为识别、模型训练的方法及装置 | |
CN107645541B (zh) | 数据存储方法、装置及服务器 | |
CN117726907B (zh) | 一种建模模型的训练方法、三维人体建模的方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200605 |
|
WW01 | Invention patent application withdrawn after publication |