CN110503179B - 计算方法以及相关产品 - Google Patents
计算方法以及相关产品 Download PDFInfo
- Publication number
- CN110503179B CN110503179B CN201810479540.0A CN201810479540A CN110503179B CN 110503179 B CN110503179 B CN 110503179B CN 201810479540 A CN201810479540 A CN 201810479540A CN 110503179 B CN110503179 B CN 110503179B
- Authority
- CN
- China
- Prior art keywords
- computing
- calculation
- units
- group
- data
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 113
- 238000012545 processing Methods 0.000 claims description 61
- 238000003860 storage Methods 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 19
- 238000013528 artificial neural network Methods 0.000 claims description 17
- 230000004927 fusion Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- 238000009825 accumulation Methods 0.000 claims description 8
- 238000002360 preparation method Methods 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000011664 signaling Effects 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims 1
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000010801 machine learning Methods 0.000 abstract description 2
- 239000013598 vector Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000005284 excitation Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
Abstract
本披露提供一种计算方法以及相关产品,所述计算方法采用融合方式执行机器学习计算。本披露的技术方案具有计算量小,节省功耗的优点。
Description
技术领域
本披露涉及神经网络技术领域,具体涉及一种计算方法以及相关产品。
背景技术
神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
神经网络的计算方式包括但不限于:加法运算、乘法运算、激活运算等等运算方式,对于神经网络现有的计算方式,无法实现对神经网络数据的快速运算,影响运算速度。
发明内容
本披露实施例提供了一种计算方法及相关产品,可实现提升运算速度的优点。
第一方面,本披露实施例提供一种计算方法,所述计算方法包括如下步骤:
控制器接收第一级指令序列,所述译码逻辑将该第一级指令序列拆分成多个第二级指令序列,
控制器为所述多个第二级指令序列开辟M个线程,控制器为所述M个线程中每个线程分配独立的寄存器以及配置独立寻址功能;所述M取值范围为大于等于1的整数;
群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果。
第二方面,提供一种计算系统,所述控制单元、计算群和总存储单元,所述控制单元包括:第一存储单元、译码逻辑和控制器,所述计算群包括:群控制器和多个计算单元;所述总存储单元,用于存储数据;
控制器,用于接收第一级指令序列以及用于控制所述第一存储单元和所述译码逻辑;
所述译码逻辑,用于将该第一级指令序列拆分成多个第二级指令序列;
所述控制器,还用于为所述多个第二级指令序列开辟M个线程;为所述M个线程中每个线程分配独立的寄存器以及配置独立寻址功能;所述M取值范围为大于等于1的整数,将所述多个第二级指令序列转换成多个控制信号发送给所述群控制器;
所述群控制器,用于接收所述多个控制信号,获取所述多个控制信号的多个计算类型,将M个线程划分成N个线程组,依据该多个计算类型为多个计算单元分配N个线程组以及多个控制信号;
计算单元,用于通过分配的线程组以及控制信令从所述总存储单元提取数据执行运算得到中间结果,
所述群控制器,用于将所有中间结果拼接得到最终计算结果。
可选的,所述多个计算单元包括:加法计算器、乘法计算器、激活计算器或专用计算器。
可选的,所述专用计算器包括:人脸识别计算计算器、图形计算器、指纹计算器或神经网络计算器。
可选的,所述群组控制器,具体用于如多个控制信号的计算类型为图形计算、指纹识别、人脸识别或神经网络运算时,将该多个控制信号分别分配给人脸识别计算计算器、图形计算器、指纹计算器和神经网络计算器。
第三方面,提供一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第四方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面所述的方法。
可以看出,通过本披露实施例提供了一种SIMD、SMT和SIMT融合的计算系统和方法,将VLIW作为可选的辅助工具。本发明充分挖掘了计算的并行能力。在深度学习兴起的大背景下,向量计算的计算量越来越大,采用本发明提供的技术方案的能够更快的得到处理结果,所以其具有提高计算速度的优点。
附图说明
为了更清楚地说明本披露实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本披露的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本披露提供的一种计算方法的流程示意图。
图2是本披露提供的一种计算系统的结构示意图。
图2A为本披露的控制单元的结构示意图。
图2B为本披露的计算群的结构示意图。
图2C为群控制器与多个计算单元的一种硬件结构示意图。
图2D为群控制器与多个计算单元的另一种硬件结构示意图。
图3A为一种计算单元的结构示意图。
图3B为一种运算单元的结构示意图。
图3C为另一种运算单元的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
本披露的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本披露的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在第一方面提供的方法中,可选的,所述群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为相同类型的计算操作,群控制器调用相同类型的单指令多数据流SIMD结合单指令多线程SIMT的组合计算方式调用所述M个线程执行计算得到最终结果,具体包括:
译码逻辑将M个线程拆分成N个线程组分配给多个计算单元,群控制器将所述多个第二指令序列转换成多个第二控制信号并发送给多个计算单元,,多个计算单元调用分配的线程组以及第二控制信号依据所述独立寻址功能提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将多个中间结果拼接起来得到最终结果。
在第一方面提供的方法中,可选的,所述群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为不同类型的计算操作,调用同步多线程SMT调用所述M个线程执行计算得到最终结果,具体包括:
译码逻辑将M个线程拆分成N个线程组,将所述多个第二指令序列转换成多个第二控制信号,群控制器获取多个计算单元支持的计算类型,控制器将N个线程组以及多个第二控制信号分配给支持该线程组以及第二控制信号的计算类型对应的计算单元,多个计算单元调用分配的线程组以及第二控制信号提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将所有中间结果拼接起来得到最终结果。
在第一方面提供的方法中,可选的,所述方法还包括:
如多个线程组中的线程组A阻塞,将线程组A加入等待队列,如线程组A的数据已提取,将线程组A加入到准备队列,所述准备队列为计算资源空闲时被调度执行的线程组所在的队列。
在第一方面提供的方法中,可选的,所述第一级指令序列包括:超长指令,所述第二级指令序列包括:指令序列。
可选的,所述计算系统包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述译码逻辑,所述树型模块的多个支端口分别连接多个计算单元中的一个计算单元;
所述树型模块转发所述译码逻辑与所述多个计算单元之间的数据块、线程组或指令序列。
可选的,所述数型模块为n叉树。
可选的,所述计算系统包括:分支处理电路,
所述分支处理电路连接在所述译码逻辑与所述多个计算单元之间;
所述分支处理电路转发所述译码逻辑与所述多个计算单元之间的数据、线程组或指令序列。
可选的,所述计算单元包括:乘法处理电路;
所述乘法处理电路对接收到的数据执行乘积运算得到乘积结果。
可选的,所述计算单元还包括:累加处理电路,所述累加处理电路对所述乘积结果执行累加运算得到所述中间结果。
对于神经网络的计算方式,其一般分为多种方式,具体的,包括但不限于:单指令多数据流(SIMD)、单指令多线程(SIMT)和同步多线程(SMT)。
单指令多数据流(SIMD)是指计算机对多个数据同时执行单条指令所确定的操作。例如,当需要进行一个或两个长向量的加法运算时,在SIMD的情景下,可以将一个或两个长向量拆成若干个短向量,使多个向量加法部件并行执行若干个短向量的加法运算,随后,将若干个短向量的加法结果合并,即得到长向量的加法运算结果,在SIMD模型中,任意时刻指令流都是单一的,即执行的指令流可以是同一指令,但是执行的数据可以不同。
单指令多线程(SIMT)是指多个线程运行同一条指令,但每一个线程可以有不同的数据。在单指令多线程的情况下,我们常常把线程合成线程组(warp),每次运行同一个线程组中的线程,当一个线程的处理数据被阻塞时,我们通过上下文切换(context switch)将该处理数据切换为另一个线程组的线程进行执行。例如,第一线程组等待访存操作返回操作数时,切换为第二线程组,当操作数准备好之后,可以切换回来至第一线程组。
同步多线程是指处理器在同一个时钟周期内可以运行多个来自多个线程的指令。当一个线程被阻塞时,我们可以通过上下文切换来运行另一个线程的指令。
参阅图1,图1提供了一种计算方法,该计算方法可以由计算系统来执行,该计算系统包括:控制单元、计算群和总存储单元,所述控制单元包括:第一存储单元、译码逻辑和控制器,所述计算群包括:群控制器和多个计算单元;所述总存储单元,用于存储数据;所述计算方法包括如下步骤:
步骤S101、计算系统的控制器接收第一级指令序列,将该第一级指令序列拆分成多个第二级指令序列,
当然在实际应用中,计算系统也可以直接接收多个第二级指令序列。上述第二级指令序列为集成度比第一级指令序列低一级别的指令序列,即第一级指令序列可以包括或集成多个第二级指令序列。上述包括或集成的方式本申请并不限定。
上述第一级指令序列具体可以为:超长指令,该第二级指令序列包括:指令序列。当然在实际应用中,上述第一级指令序列具体可以为:指令序列,该第二级指令序列可以为:微指令序列。上述仅仅是为了举例说明,对于具体的实现方式中的指令序列只需第一级指令序列包含第二级指令序列的集合即可。
步骤S102、计算系统的控制器为所述多个第二级指令序列开辟M个线程,计算系统的控制器为所述M个线程中每个线程分配独立的存储空间以及配置独立寻址功能;所述M取值范围为大于等于1的整数;
步骤S103、计算系统的群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果。
本发明给出了一种SIMD、SMT和SIMT融合的计算系统和方法,将VLIW作为可选的辅助工具。本发明充分挖掘了计算的并行能力。在深度学习兴起的大背景下,向量计算的计算量越来越大,采用本发明提供的技术方案的能够更快的得到处理结果,所以其具有提高计算速度的优点。
下面我们以一个实际的例子来说明本发明的优点,这里假设有25个向量加法指令序列,25个向量加法指令序列结合成一个VLIW,对于采用常规运算的方式,即解析该VLIW得到25个向量加法指令,则采用SIMD方式对这25个向量加法指令进行计算得到25个中间结果,假设每个向量加法指令的实际为t,如该SIMD为串行执行,所需时间为25t,而采用本申请提供的计算方法,解析该VLIW得到25个向量加法指令,可以通过SIMT调用5个线程,每个线程采用SIMD方式执行5个向量加法指令,其得到25个向量加法指令的时间具体可以为5t,这里忽略切换时间,所以其计算的速度相对于现有的方式提高了近5倍的速度。
可选的,所述依据所述多个计算类型获取计算类型对应的融合计算方式,采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为相同类型的计算操作,调用相同类型的单指令多数据流SIMD结合单指令多线程SIMT的组合计算方式调用所述M个线程执行计算得到最终结果,具体包括:
将M个线程拆分成N个线程组,将所述多个第二指令序列转换成多个第二控制信号,将多个第二控制信号以及N个线程组分配给多个计算单元,多个计算单元调用分配的线程组以及第二控制信号提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将多个中间结果拼接起来得到最终结果。
可选的,所述依据所述多个计算类型获取计算类型对应的融合计算方式,采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为不同类型的计算操作,群控制器调用相同类型的单指令多数据流SIMD结合同步多线程SIM的组合计算方式调用所述M个线程执行计算得到最终结果,具体包括:
群控制器将M个线程拆分成N个线程组,将所述多个第二指令序列转换成多个第二控制信号,对不同类型的计算操作的第二指令序列分配N个线程组中不同的线程组,获取计算单元的功能类型,如计算单元A的功能类型与该多个第二指令序列的指令序列A的类型相同,将该指令序列A对应的控制信号A分配给计算单元A执行得到中间结果;如计算单元的功能类型与第二指令序列的计算类型不相同,将多个第二控制信号以及N个线程组分配给多个计算单元,多个计算单元调用分配的线程组以及第二控制信号提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将所有中间结果拼接起来得到最终结果。
可选的,所述方法还包括:
如多个线程组中的线程组A阻塞,将线程组A加入等待队列,如线程组A的数据已提取,将线程组A加入到准备队列,所述准备队列为计算资源空闲时被调度执行的线程组所在的队列。
参阅图2,图2提供一种计算系统,所述控制单元20、计算群21和总存储单元22,如图2A所示,所述控制单元包括:第一存储单元301、译码逻辑302、控制器303和调度器304,参阅图2B,计算群包括:群控制器305和多个计算单元306;所述总存储单元,用于存储数据;
控制器,用于接收第一级指令序列以及用于控制所述第一存储单元和所述译码逻辑;
所述译码逻辑,用于将该第一级指令序列拆分成多个第二级指令序列;
所述控制器,还用于为所述多个第二级指令序列开辟M个线程;为所述M个线程中每个线程分配独立的存储空间以及配置独立寻址功能;所述M取值范围为大于等于1的整数,将所述多个第二级指令序列转换成多个控制信号发送给所述群控制器;
所述群控制器,用于接收所述多个控制信号,获取所述多个控制信号的多个计算类型,将M个线程划分成N个线程组,依据该多个计算类型为多个计算单元分配N个线程组以及多个控制信号;
计算单元,用于通过分配的线程组以及控制信令从所述总存储单元提取数据执行运算得到中间结果,
所述群控制器,用于将所有中间结果拼接得到最终计算结果。
可选的,所述多个计算单元包括:加法计算器、乘法计算器、激活计算器或专用计算器。
可选的,所述专用计算器包括:人脸识别计算计算器、图形计算器、指纹计算器或神经网络计算器。
可选的,所述群组控制器,具体用于如多个控制信号的计算类型为图形计算、指纹识别、人脸识别或神经网络运算时,将该多个控制信号分别分配给人脸识别计算计算器、图形计算器、指纹计算器和神经网络计算器。
可选的,所述第一级指令序列包括:超长指令,所述第二级指令序列包括:指令序列。
计算系统可以包括:控制单元、计算群、存储单元。控制单元负责指令的分发、线程的开辟、普通指令和超长指令字的译码、控制信号的发出等。控制单元包括:本地存储、译码逻辑、调度器和控制器。其中,本地存储用于存储指令,译码逻辑可对超长指令字和普通指令进行译码,调度器负责线程的上下文切换,控制器调用存储的代码控制控制单元中各子模块(例如本地存储、译码逻辑和调度器)的行为。
计算群可以包括:群控制器和多个计算单元。群控制器接收来自控制单元的控制信号并将其转换为群内控制信号,发送给多个计算单元中的一个或多个计算单元以对该群内控制信号进行计算。计算单元可以包括多种功能部件,具体的,向量运算部件和各种针对专用算法的优化计算部件(如针对机器学习或图形处理的专用部件等)。计算单元还可以包括:单元控制器和本地存储。单元控制器用于控制计算单元内的各功能部件行为,本地存储用于缓存数据。
存储单元用于存储用户输入数据、计算群输出数据等。计算群可在控制单元的控制下通过多种寻址方式从存储单元提取合适的数据。
下面以超长指令字为例来说明该计算系统可以完成的功能,需要说明的是,上述超长指令字仅仅是为了举例说明,在实际应用中,本披露的技术方案并不限制上述指令的具体形式,例如指令序列。
定义超长向量是一个长度非常长的向量,该向量可以包括多段数据,可以对多段每一段执行不同的操作,也可以对多段数据执行相同的操作。当计算系统需要对一个或多个超长向量进行计算时,首先编译器将超长向量各段的存储信息和所需操作的信息打包成超长指令字发送给控制单元。控制单元对超长指令字进行译码,将超长指令字解码为一系列微控制指令序列。(注意,超长指令字是可选项,当不使用超长指令字的时候,控制单元的本地存储中存储的是指令序列,由译码逻辑将它们译码为微控制指令序列。注意,微控制指令序列也是可选的,指令序列也可以直接由控制器开辟线程执行。注意,本地存储也是可选项,可由存储单元替代。)对于一系列涉及向量的相同类型的计算操作,计算系统采取SIMT和SIMD融合的计算方式。控制器单元为微控制指令序列开辟多个线程,每个线程有独立的存储空间并且可以独立寻址。根据计算群中计算单元数目,将适当数量的线程打包为线程组,这样计算系统将会得到一个或多个线程组(一般为多个线程组)。调度器接收线程分配信息,协同译码逻辑将线程中的微控制指令序列转化为控制信号发往计算群的群控制单元。群控制单元接收来自控制单元的控制信号,并转化为群内控制信号发往合适的计算单元。计算单元从存储单元读取向量操作数并进行向量计算,中间结果可暂存在本地存储,最终结果存储在存储单元中。当线程组因为访存而阻塞时,通过上下文切换,计算群执行其他线程组的计算操作,阻塞的线程组进入等待队列,当阻塞的线程组的操作数准备好后,线程组从等待队列进入到准备队列。准备队列中的线程组可在计算资源空闲时被调度执行。线程组内包含的线程数量一般是恒定的,若剩余线程数不足一个线程组则用非活跃线程填充至恒定值。对于一系列涉及向量的不同类型的计算操作,计算系统采取SMT和SIMD融合的计算方式。计算系统将不同操作的微控制指令序列分配处于不同线程组的线程。在计算过程中,若一个线程组阻塞则计算系统可以进行上下文切换从而执行其他操作的线程组。上述计算可以由几个计算单元协同完成,如对于一个视频压缩计算,可将计算过程的预测、变换、量化和熵编码过程分配给不同的计算单元,计算单元之间可以互相传递结果,从而构成流水线。
参阅图2C,图2C为群控制器与多个计算单元的一种硬件结构示意图,该计算系统还可以包括树型模块401,该树型模块可以为n叉树结构,该n为大于2的整数,具体的,树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述群控制器,所述树型模块的多个支端口分别连接多个计算单元中的一个计算单元;
所述树型模块,用于转发所述群控制器与所述多个计算单元之间的数据块、线程组或指令序列。
参阅图2D,图2D为群控制器与多个计算单元的另一种硬件结构示意图,所述计算系统包括:分支处理电路,
所述分支处理电路连接在所述群控制器与所述多个计算单元之间;
所述分支处理电路,用于转发所述群控制器与所述多个计算单元之间的数据、线程组或指令序列。
所述计算单元包括:乘法处理电路;乘法处理电路对接收到的数据执行乘积运算得到乘积结果;所述计算单元还包括:累加处理电路,所述累加处理电路对所述乘积结果执行累加运算得到所述中间结果。
需要说明的是,上述计算单元还可以是另外一种硬件的结构,如图3A所示,控制器单元311和运算单元312,其中,控制器单元311与运算单元312连接,该运算单元312包括:一个主处理电路和多个从处理电路;
控制器单元311,用于获取数据、线程组以及指令,当为人工神经网络模型计算时,所述数据包括:输入神经元数据、权值数据和输出神经元数据;在一种可选方案中,具体的,获取数据、线程组以及指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制器单元311,还用于解析该指令得到多个运算指令,将该多个运算指令以及所述数据发送给所述主处理电路;
主处理电路3101,用于对所述数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路3102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间数据结果,并将多个中间数据结果传输给所述主处理电路;
主处理电路3101,用于对所述多个中间数据结果执行后续处理得到所述指令的指令结果。
可选的,上述计算单元还可以包括:该存储单元310和直接内存访问单元,存储单元可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储线程组、指令、数据和标量;所述缓存为高速暂存缓存。直接内存访问单元用于从存储单元310读取或存储数据。
可选的,该控制器单元包括:指令存储单元、指令处理单元和存储队列单元;
指令存储单元,用于存储指令;
所述指令处理单元,用于对所述计算指令解析得到多个运算指令;
存储队列单元,用于存储指令队列,该队列可以为指令队列、该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选的,该控制器单元还可以包括:依赖关系处理单元;
依赖关系处理单元,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
在一种可选的实施方案中,如图3B所示,为一种运算单元的结构,该运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;上述树型模块具有收发功能。
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
在一种可选实施例中,运算单元12如图3C所示,可以包括分支处理电路;其具体的连接结构如图3C所示,其中,
主处理电路3101与分支处理电路3103连接,分支处理电路3103与多个从处理电路3102连接;
分支处理电路3103,用于执行转发主处理电路3101与从处理电路3102之间的数据或指令。
本披露实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种计算方法的部分或全部步骤。
本披露实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种计算方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
Claims (21)
1.一种计算方法,其特征在于,所述计算方法应用于计算系统,所述计算系统包括:控制单元、计算群和总存储单元,所述控制单元包括:第一存储单元、译码逻辑和控制器,所述计算群包括:群控制器和多个计算单元;所述总存储单元,用于存储数据;所述计算方法包括如下步骤:
控制器接收第一级指令序列,所述译码逻辑将该第一级指令序列拆分成多个第二级指令序列,
控制器为所述多个第二级指令序列开辟M个线程,控制器为所述M个线程中每个线程分配独立的寄存器以及配置独立寻址功能;所述M取值范围为大于等于1的整数;
群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果。
2.根据权利要求1所述的方法,其特征在于,所述群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为相同类型的计算操作,群控制器调用相同类型的单指令多数据流SIMD结合单指令多线程SIMT的组合计算方式调用所述M个线程执行计算得到最终结果,具体包括:
译码逻辑将M个线程拆分成N个线程组分配给多个计算单元,群控制器将所述多个第二指令序列转换成多个第二控制信号并发送给多个计算单元,,多个计算单元调用分配的线程组以及第二控制信号依据所述独立寻址功能提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将多个中间结果拼接起来得到最终结果。
3.根据权利要求1所述的方法,其特征在于,所述群控制器获取所述多个第二级指令序列的多个计算类型,依据所述多个计算类型获取计算类型对应的融合计算方式,多个计算单元采用该融合计算方式调用所述M个线程对所述多个第二指令序列执行计算得到最终结果:
如所述计算类型为不同类型的计算操作,调用同步多线程SMT调用所述M个线程执行计算得到最终结果,具体包括:
译码逻辑将M个线程拆分成N个线程组,将所述多个第二指令序列转换成多个第二控制信号,群控制器获取多个计算单元支持的计算类型,控制器将N个线程组以及多个第二控制信号分配给支持该线程组以及第二控制信号的计算类型对应的计算单元,多个计算单元调用分配的线程组以及第二控制信号提取对应的数据,多个计算单元将该数据执行运算得到多个中间结果,将所有中间结果拼接起来得到最终结果。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
如多个线程组中的线程组A阻塞,将线程组A加入等待队列,如线程组A的数据已提取,将线程组A加入到准备队列,所述准备队列为计算资源空闲时被调度执行的线程组所在的队列。
5.根据权利要求1所述的方法,其特征在于,
所述第一级指令序列包括:超长指令,所述第二级指令序列包括:指令序列。
6.根据权利要求1所述的方法,其特征在于,所述计算系统包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述群控制器,所述树型模块的多个支端口分别连接多个计算单元中的一个计算单元;
所述树型模块转发所述群控制器与所述多个计算单元之间的数据块、线程组或指令序列。
7.根据权利要求6所述的方法,其特征在于,所述树型模块为n叉树,所述n为大于等于2的整数。
8.根据权利要求1所述的方法,其特征在于,所述计算系统包括:分支处理电路,
所述分支处理电路连接在所述群控制器与所述多个计算单元之间;
所述分支处理电路转发所述群控制器与所述多个计算单元之间的数据、线程组或指令序列。
9.根据权利要求1所述的方法,其特征在于,所述计算单元包括:乘法处理电路;
所述乘法处理电路对接收到的数据执行乘积运算得到乘积结果。
10.根据权利要求9所述的方法,其特征在于,所述计算单元还包括:累加处理电路,所述累加处理电路对所述乘积结果执行累加运算得到中间结果。
11.一种计算系统,其特征在于,所述计算系统包括:控制单元、计算群和总存储单元,所述控制单元包括:第一存储单元、译码逻辑和控制器,所述计算群包括:群控制器和多个计算单元;所述总存储单元,用于存储数据;
控制器,用于接收第一级指令序列以及用于控制所述第一存储单元和所述译码逻辑;
所述译码逻辑,用于将该第一级指令序列拆分成多个第二级指令序列;
所述控制器,还用于为所述多个第二级指令序列开辟M个线程;为所述M个线程中每个线程分配独立的寄存器以及配置独立寻址功能;所述M取值范围为大于等于1的整数,将所述多个第二级指令序列转换成多个控制信号发送给所述群控制器;
所述群控制器,用于接收所述多个控制信号,获取所述多个控制信号的多个计算类型,将M个线程划分成N个线程组,依据该多个计算类型为多个计算单元分配N个线程组以及多个控制信号;
多个计算单元,用于通过分配的线程组以及控制信令从所述总存储单元提取数据执行运算得到中间结果,
所述群控制器,用于将所有中间结果拼接得到最终计算结果。
12.根据权利要求11所述的计算系统,其特征在于,
所述多个计算单元包括:加法计算器、乘法计算器、激活计算器或专用计算器。
13.根据权利要求12所述的计算系统,其特征在于,
所述专用计算器包括:人脸识别计算器、图形计算器、指纹计算器或神经网络计算器。
14.根据权利要求13所述的计算系统,其特征在于,
群组控制器,具体用于如多个控制信号的计算类型为图形计算、指纹识别、人脸识别或神经网络运算时,将该多个控制信号分别分配给人脸识别计算器、图形计算器、指纹计算器和神经网络计算器。
15.根据权利要求6所述的计算系统,其特征在于,
所述第一级指令序列包括:超长指令,所述第二级指令序列包括:指令序列。
16.根据权利要求11所述的计算系统,其特征在于,所述计算系统包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述群控制器,所述树型模块的多个支端口分别连接多个计算单元中的一个计算单元;
所述树型模块,用于转发所述群控制器与所述多个计算单元之间的数据块、线程组或指令序列。
17.根据权利要求16所述的计算系统,其特征在于,所述树型模块为n叉树,所述n为大于等于2的整数。
18.根据权利要求11所述的计算系统,其特征在于,所述计算系统包括:分支处理电路,
所述分支处理电路连接在所述群控制器与所述多个计算单元之间;
所述分支处理电路,用于转发所述群控制器与所述多个计算单元之间的数据、线程组或指令序列。
19.根据权利要求11所述的计算系统,其特征在于,所述计算单元包括:乘法处理电路;
所述乘法处理电路对接收到的数据执行乘积运算得到乘积结果。
20.根据权利要求19所述的计算系统,其特征在于,所述计算单元还包括:累加处理电路,所述累加处理电路对所述乘积结果执行累加运算得到所述中间结果。
21.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序可操作来使计算机执行如权利要求1-10任一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810479540.0A CN110503179B (zh) | 2018-05-18 | 2018-05-18 | 计算方法以及相关产品 |
EP19803375.5A EP3624020A4 (en) | 2018-05-18 | 2019-05-07 | CALCULATION PROCEDURES AND RELATED PRODUCTS |
PCT/CN2019/085844 WO2019218896A1 (zh) | 2018-05-18 | 2019-05-07 | 计算方法以及相关产品 |
US16/718,742 US11409575B2 (en) | 2018-05-18 | 2019-12-18 | Computation method and product thereof |
US16/720,145 US11442785B2 (en) | 2018-05-18 | 2019-12-19 | Computation method and product thereof |
US16/720,171 US11442786B2 (en) | 2018-05-18 | 2019-12-19 | Computation method and product thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810479540.0A CN110503179B (zh) | 2018-05-18 | 2018-05-18 | 计算方法以及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110503179A CN110503179A (zh) | 2019-11-26 |
CN110503179B true CN110503179B (zh) | 2024-03-01 |
Family
ID=68584472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810479540.0A Active CN110503179B (zh) | 2018-05-18 | 2018-05-18 | 计算方法以及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110503179B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258655A (zh) * | 2020-01-14 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 融合计算方法及可读存储介质 |
CN113867792A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN114548352A (zh) * | 2020-11-25 | 2022-05-27 | 深圳鲲云信息科技有限公司 | 一种矩阵数据的处理方法、装置、电子设备及存储介质 |
CN114626540A (zh) * | 2020-12-11 | 2022-06-14 | 上海阵量智能科技有限公司 | 处理器和相关产品 |
CN113065639B (zh) * | 2021-03-08 | 2023-06-13 | 深圳云天励飞技术股份有限公司 | 算子融合方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021831A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 面向科学计算的64位流处理器芯片体系结构 |
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合系统及其融合方法 |
WO2017185418A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
-
2018
- 2018-05-18 CN CN201810479540.0A patent/CN110503179B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021831A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 面向科学计算的64位流处理器芯片体系结构 |
CN102073543A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 通用处理器与图形处理器融合系统及其融合方法 |
WO2017185418A1 (zh) * | 2016-04-29 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
Non-Patent Citations (1)
Title |
---|
杨鑫 ; 许端清 ; 杨冰 ; .基于不规则性的并行计算方法.浙江大学学报(工学版).2013,(11),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110503179A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110503179B (zh) | 计算方法以及相关产品 | |
CN109711539B (zh) | 运算方法、装置及相关产品 | |
CN111414197B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
CN109993285B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN111310910A (zh) | 一种计算装置及方法 | |
CN105393240A (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
Xu et al. | Automatic cross-replica sharding of weight update in data-parallel training | |
CN110717584A (zh) | 神经网络编译方法、编译器、计算机设备及可读存储介质 | |
US20220197858A1 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
CN109753319B (zh) | 一种释放动态链接库的装置及相关产品 | |
US12086592B2 (en) | Processor, processing method, and related device for accelerating graph calculation | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
US20130339689A1 (en) | Later stage read port reduction | |
CN104598304A (zh) | 用于作业执行中的调度的方法和装置 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN111258655A (zh) | 融合计算方法及可读存储介质 | |
CN118012632A (zh) | 基于多级重分配机制的gpgpu分支指令调度方法 | |
CN112051981B (zh) | 一种数据流水线计算路径结构及单线程数据流水线系统 | |
CN107179895B (zh) | 一种应用复合指令加快数据流结构中指令执行速度的方法 | |
CN111078286A (zh) | 数据通信方法、计算系统和存储介质 | |
CN206470741U (zh) | 一种基于分布式功能单元的微处理器架构 | |
US12124851B2 (en) | Graph instruction processing method and apparatus | |
EP4155977A1 (en) | Image instruction processing method and apparatus | |
CN117931729B (zh) | 向量处理器访存指令处理方法和系统 | |
US12105575B2 (en) | Reconfiguration of a computing system using a circuit switch |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |