CN110163353B - 一种计算装置及方法 - Google Patents
一种计算装置及方法 Download PDFInfo
- Publication number
- CN110163353B CN110163353B CN201910195535.1A CN201910195535A CN110163353B CN 110163353 B CN110163353 B CN 110163353B CN 201910195535 A CN201910195535 A CN 201910195535A CN 110163353 B CN110163353 B CN 110163353B
- Authority
- CN
- China
- Prior art keywords
- data
- input data
- processing circuit
- decimal point
- unit
- 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
- 238000000034 method Methods 0.000 title claims description 91
- 238000012545 processing Methods 0.000 claims abstract description 442
- 238000012549 training Methods 0.000 claims abstract description 90
- 238000004364 calculation method Methods 0.000 claims abstract description 70
- 238000003860 storage Methods 0.000 claims abstract description 59
- 238000010801 machine learning Methods 0.000 claims abstract description 56
- 230000015654 memory Effects 0.000 claims abstract description 40
- 238000006243 chemical reaction Methods 0.000 claims description 165
- 210000002364 input neuron Anatomy 0.000 claims description 106
- 210000004205 output neuron Anatomy 0.000 claims description 85
- 238000013528 artificial neural network Methods 0.000 claims description 56
- 230000004913 activation Effects 0.000 claims description 34
- 238000009825 accumulation Methods 0.000 claims description 27
- 230000005540 biological transmission Effects 0.000 claims description 13
- 210000004027 cell Anatomy 0.000 claims description 12
- 238000009795 derivation Methods 0.000 claims description 12
- 210000002569 neuron Anatomy 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 claims 6
- 239000010410 layer Substances 0.000 description 117
- 238000007667 floating Methods 0.000 description 76
- 239000013598 vector Substances 0.000 description 57
- 239000011159 matrix material Substances 0.000 description 48
- 230000006870 function Effects 0.000 description 37
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 21
- 238000011176 pooling Methods 0.000 description 16
- 239000000872 buffer Substances 0.000 description 6
- 238000003062 neural network model Methods 0.000 description 6
- 241001442055 Vipera berus Species 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 101100452593 Caenorhabditis elegans ina-1 gene Proteins 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 239000002356 single layer Substances 0.000 description 3
- 101100027969 Caenorhabditis elegans old-1 gene Proteins 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Pure & Applied Mathematics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Feedback Control In General (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Image Processing (AREA)
Abstract
一种计算装置,包括:用于获取输入数据以及计算指令的存储单元(10);用于从存储单元(10)提取计算指令,对该计算指令进行译码以得到一个或多个运算指令和将一个或多个运算指令以及输入数据发送给运算单元(12)的控制器单元(11);和用于根据一个或多个运算指令对输入数据执行计算得到计算指令的结果的运算单元(12)。所述计算装置对参与机器学习计算的数据采用定点数据进行表示,可提升训练运算的处理速度和处理效率。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种计算装置及方法。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的。
在实践中发现,这种基于通用处理器运行软件程序来处理信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息处理效率较低、时延较大,对于信息处理的计算模型例如训练模型来说,训练运算的计算量更大,通用的处理器完成训练运算的时间长,效率低。
发明内容
本申请实施例提供了一种计算装置及方法,可提升运算的处理速度,提高效率。
第一方面,本申请实施例提供一种计算装置,包括:存储单元、转换单元、运算单元以及控制器单元;所述存储单元包括缓存和寄存器,
所述控制器单元,用于确定第一输入数据的小数点位置和定点数据的位宽;所述定点数据的位宽为所述第一输入数据转换为定点数据的位宽;
所述运算单元,用于初始化所述第一输入数据的小数点位置和调整所述第一输入数据的小数点位置;并将所述调整后的第一输入数据的小数点位置存储至所述存储单元的缓存中,
所述控制器单元,用于从所述寄存器中获取第一输入数据和多个运算指令,并从所述缓存中获取所述调整后的第一输入数据的小数点位置;将所述调整后的第一输入数据的小数点位置及所述第一输入数据传输至所述转换单元;
所述转换单元,用于根据所述调整后的第一输入数据的小数点位置将所述第一输入数据转换为第二输入数据;
其中,所述运算单元调整所述第一输入数据的小数点位置,包括:
根据所述第一输入数据中数据绝对值的最大值单步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据中数据绝对值的最大值逐步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据分布单步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据分布逐步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据绝对值最大值向下调整所述第一输入数据的小数点位置。
在一个可行的实施例中,所述运算单元初始化所述第一输入数据的小数点位置,包括:
根据所述第一输入数据绝对值的最大值初始化所述第一输入数据的小数点位置,或者;根据所述第一输入数据的绝对值最小值初始化所述第一输入数据的小数点位置,或者;根据所述第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置,或者;根据经验值常量初始化所述第一输入数据的小数点位置。
在一个可行的实施例中,所述计算装置用于执行机器学习计算,所述控制器单元,还用于将所述多个运算指令传输至所述运算单元;
所述转换单元,还用于将所述第二输入数据传输至所述运算单元;
所述运算单元,还用于根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
在一个可行的实施例中,所述机器学习计算包括:人工神经网络运算,所述第一输入数据包括:输入神经元数据和权值数据;所述计算结果为输出神经元数据。
在一个可行的实施例中,所述运算单元包括一个主处理电路和多个从处理电路;
所述主处理电路,用于对所述第二输入数据进行执行前序处理以及与所述多个从处理电路之间传输数据和所述多个运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输第二输入数据以及所述多个运算指令并执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述运算结果。
在一个可行的实施例中,所述计算装置还包括:直接内存访问DMA单元;
所述缓存,还用于存储所述第一输入数据;其中,所述缓存包括高速暂存缓存;
所述寄存器,还用于存储所述第一输入数据中标量数据;
所述DMA单元,用于从所述存储单元中读取数据或者向所述存储单元存储数据。
在一个可行的实施例中,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
在一个可行的实施例中,所述运算单元还包括:
数据缓存单元,用于缓存所述一个或多个中间结果。
在一个可行的实施例中,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据以及运算指令;其中,所述树型模型为n叉树结构,所述n为大于或等于2的整数。
在一个可行的实施例中,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路,具体用于确定所述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,还用于将所述分支处理电路发送的中间结果进行后续处理得到所述运算指令的结果,将所述计算指令的结果发送至所述控制器单元。
在一个可行的实施例中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的K个从处理电路,所述K个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,还用于确定所述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据所述运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一个可行的实施例中,所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该计算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一个可行的实施例中,所述主处理电路包括:激活处理电路和加法处理电路中的一种或任意组合;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算;
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
第二方面,本申请实施例提供一种计算方法,包括:
控制器单元确定第一输入数据的小数点位置和定点数据的位宽,所述定点数据的位宽为所述第一输入数据的为定点数据的位宽;运算单元初始化所述第一输入数据的小数点位置和调整所述第一输入数据的小数点位置;转换单元获取调整后的第一输入数据的小数点位置,并根据所述调整后的小数点位置将所述第一输入数据转换为第二输入数据;其中,所述运算单元调整所述第一输入数据的小数点位置,包括:
根据所述第一输入数据中数据绝对值的最大值单步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中数据绝对值的最大值逐步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据分布单步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据分布逐步向上调整所述第一输入数据的小数点位置,或者;根据所述第一输入数据绝对值最大值向下调整所述第一输入数据的小数点位置。
在一个可行的实施例中,所述运算单元初始化所述第一输入数据的小数点位置,包括:
根据所述第一输入数据绝对值的最大值初始化所述第一输入数据的小数点位置,或者;根据所述第一输入数据的绝对值最小值初始化所述第一输入数据的小数点位置,或者;根据所述第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置,或者;根据经验值常量初始化所述第一输入数据的小数点位置。
在一个可行的实施例中,所述计算方法为用于执行机器学习计算的方法,所述方法还包括:所述运算单元根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
在一个可行的实施例中,所述机器学习计算包括:人工神经网络运算,所述第一输入数据包括:输入神经元和权值;所述计算结果为输出神经元。
在一个可行的实施例中,当所述第一输入数据为定点数据时,所述方法还包括:所述运算单元根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
第三方面,本发明实施例提供了一种机器学习运算装置,该机器学习运算装置包括一个或者多个第一方面所述的计算装置。该机器学习运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制***或拥有各自的控制***;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第四方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的机器学习处理装置、通用互联接口,和其他处理装置。该机器学习运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
第五方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第三方面所述的机器学习运算装置或者上述第四方面所述的组合处理装置。
第六方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;
第七方面,本发明实施例提供了一种板卡,该板卡包括存储器件、接口装置和控制器件以及上述第五方面所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
进一步地,所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
第八方面,本发明实施例提供了一种电子装置,该电子装置包括上述第五方面所述的神经网络芯片、第六方面所述的神经网络芯片封装结构或者上述第七方面所述的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供一种定点数据的数据结构示意图;
图2为本申请实施例提供另一种定点数据的数据结构示意图;
图2A为本申请实施例提供另一种定点数据的数据结构示意图;
图2B为本申请实施例提供另一种定点数据的数据结构示意图;
图3本申请实施例提供一种计算装置的结构示意图;
图3A是本申请一个实施例提供的计算装置的结构示意图;
图3B是本申请另一个实施例提供的计算装置的结构示意图;
图3C是本申请另一个实施例提供的计算装置的结构示意图;
图3D是本申请实施例提供的主处理电路的结构示意图;
图3E是本申请另一个实施例提供的计算装置的结构示意图;
图3F是本申请实施例提供的树型模块的结构示意图;
图3G是本申请另一个实施例提供的计算装置的结构示意图;
图3H是本申请另一个实施例提供的计算装置的结构示意图;
图4为本申请实施例提供的一种单层人工神经网络正向运算流程图;
图5为本申请实施例提供的一种神经网络正向运算和反向训练流程图;
图6是本申请实施例提供的一种组合处理装置的结构图;
图6A是本申请另一个实施例提供的计算装置的结构示意图;
图7是本申请实施例提供的另一种组合处理装置的结构图;
图8为本申请实施例提供的一种板卡的结构示意图;
图9为本申请实施例提供的一种计算方法的流程示意图;
图10为本申请实施例提供的一种数据的小数点位置确定和调整流程示意图;
图11为本申请实施例提供的一种分布式***的结构示意图;
图12为本申请实施例提供的另一种分布式***的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合
本申请实施例提供一种数据类型,该数据类型包括调整因子,该调整因子用于指示该数据类型的取值范围及精度。
其中,上述调整因子包括第一缩放因子和第二缩放因子(可选地),该第一缩放因子用于指示上述数据类型的精度;上述第二缩放因子用于调整上述数据类型的取值范围。
可选地,上述第一缩放因子可为2-m、8-m、10-m、2、3、6、9、10、2m、8m、10m或者其他值。
具体地,上述第一缩放因子可为小数点位置。比如以二进制表示的输入数据INA1的小数点位置向右移动m位后得到的输入数据INB1=INA1*2m,即输入数据INB1相对于输入数据INA1放大了2m倍;再比如,以十进制表示的输入数据INA2的小数点位置左移动n位后得到的输入数据INB2=INA2/10n,即输入数据INA2相对于输入数据INB2缩小了10n倍,m和n均为整数。
可选地,上述第二缩放因子可为2、8、10、16或其他值。
举例说明,上述输入数据对应的数据类型的取值范围为8-15-816,在进行运算过程中,得到的运算结果大于输入数据对应的数据类型的取值范围对应的最大值时,将该数据类型的取值范围乘以该数据类型的第二缩放因子(即8),得到新的取值范围8-14-817;当上述运算结果小于上述输入数据对应的数据类型的取值范围对应的最小值时,将该数据类型的取值范围除以该数据类型的第二缩放因子(8),得到新的取值范围8-16-815。
对于任何格式的数据(比如浮点数、离散数据)都可以加上缩放因子,以调整该数据的大小和精度。
需要说明的是,本申请说明书下文提到的小数点位置都可以是上述第一缩放因子,在此不再叙述。
下面介绍定点数据的结构,参加图1,图1为本申请实施例提供一种定点数据的数据结构示意图。如图1所示有符号的定点数据,该定点数据占X比特位,该定点数据又可称为X位定点数据。其中,该X位定点数据包括占1比特的符号位、M比特的整数位和N比特的小数位,X-1=M+N。对于无符号的定点数据,只包括M比特的整数位和N比特的小数位,即X=M+N。
相比于32位浮点数据表示形式,本发明采用的短位定点数据表示形式除了占用比特位数更少外,对于网路模型中同一层、同一类型的数据,如第一个卷积层的所有卷积核、输入神经元或者偏置数据,还另外设置了一个标志位记录定点数据的小数点位置,该标志位即为Point Location。这样可以根据输入数据的分布来调整上述标志位的大小,从而达到调整定点数据的精度与定点数据可表示范围。
举例说明,将浮点数68.6875转换为小数点位置为5的有符号16位定点数据。其中,对于小数点位置为5的有符号16位定点数据,其整数部分占10比特,小数部分占5比特,符号位占1比特。上述转换单元将上述浮点数68.6875转换成有符号16位定点数据为0000010010010110,如图2所示。
在一种可能的实施例中,上述定点数据还可用图2A所示方式进行表示。如图2A所示,该定点数据所占的比特位数为bitnum,小数点位置为s,该定点数据的精度为2s。第一位为符号位,用于指示该定数据是正数还是负数。比如当符号位为0时,表示该定点数据为正数;当符号位为1时,表示该定点数据为负数。该定点数据表示的范围为[neg,pos],其中,pos=(2bitnum-1-1)*2s,neg=-(2bitnum-1-1)*2s。
其中,上述bitnum可以去任意正整数。上述s可为任意不小于s_min的整数
可选地,上述bitnum可为8、16、24、32、64或者其他值。进一步地,上述s_min为-64。
可选地,上述bitnum为8,16,24,32或者其他值。s可以取任意不小于s_min的整数,进一步地,s_min取-64。
在一种实施例中,对于数值较大的数据可采用多种定点表示方法,具体参见图2B:如图2B所示,对上述数值较大的数据采用3种定点数据组合表示,即该数据由定点数据1、定点数据2和定点数据3组成。其中,定点数据1的位宽为bitnum1,小数点位置为s1,定点数据2的位宽为bitnum2,小数点位置为s2;定点数据3的位宽为bitnum3,小数点位置为s3,且bitnum2-2=s1-1,bitnum3-2=s2-1。采用3种定点数据表示的范围为[neg,pos],其中,pos=(2bitnum-1-1)*2s,neg=-(2bitnum-1-1)*2s。
首先介绍本申请使用的计算装置。参阅图3,提供了一种计算装置,该计算装置包括:控制器单元11、运算单元12和转换单元13,其中,控制器单元11与运算单元12连接,转换单元13与上述控制器单元11和运算单元12均相连接;
在一个可能的实施例中,控制器单元11,用于获取第一输入数据以及计算指令。
在一个实施例里,第一输入数据是机器学习数据。进一步地,机器学习数据包括输入神经元数据,权值数据。输出神经元数据是最终输出结果或者中间数据。
在一种可选方案中,获取第一输入数据以及计算指令方式具体可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
上述控制器单元11,还用于解析所述计算指令得到数据转换指令和/或一个或多个运算指令,其中,所述数据转换指令包括操作域和操作码,该操作码用于指示所述数据类型转换指令的功能,所述数据类型转换指令的操作域包括小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识。
当上述数据转换指令的操作域为存储空间的地址时,上述控制器单元11根据该地址对应的存储空间中获取上述小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识。
上述控制器单元11将所述数据转换指令的操作码和操作域及所述第一输入数据传输至所述转换单元13;将所述多个运算指令传输至所述运算单元12;
上述转换单元13,用于根据所述数据转换指令的操作码和操作域将所述第一输入数据转换为第二输入数据,该第二输入数据为定点数据;并将所述第二输入数据传输至运算单元12;
上述运算单元12,用于根据所述多个运算指令对所述第二输入数据进行运算,以得到所述计算指令的计算结果。
在一中可能的实施例中,本申请提供的技术方案将运算单元12设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路102即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。如图3A所示,上述运算单元12包括一个主处理电路101和多个从处理电路102;
上述主处理电路101,用于对上述第二输入数据进行执行前序处理以及与上述多个从处理电路102之间传输数据和上述多个运算指令;
上述多个从处理电路102,用于依据从上述主处理电路101传输第二输入数据以及上述多个运算指令并执行中间运算得到多个中间结果,并将多个中间结果传输给上述主处理电路101;
上述主处理电路101,用于对上述多个中间结果执行后续处理得到上述计算指令的计算结果。
在一个实施例里,机器学习运算包括深度学习运算(即人工神经网络运算),机器学习数据(即第一输入数据)包括输入神经元和权值(即神经网络模型数据)。输出神经元为上述计算指令的计算结果或中间结果。下面以深度学习运算为例,但应理解的是,不局限在深度学习运算。
可选的,上述计算装置还可以包括:该存储单元10和直接内存访问(directmemory access,DMA)单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器201,用于存储所述第一输入数据和标量。其中第一输入数据包括输入神经元、权值和输出神经元。
所述缓存202为高速暂存缓存。
DMA单元50用于从存储单元10读取或存储数据。
在一种可能的实施例中,上述寄存器201中存储有上述运算指令、第一输入数据、小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识;上述控制器单元11直接从上述寄存器201中获取上述运算指令、第一输入数据、小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识;将第一输入数据、小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识出传输至上述转换单元13;将上述运算指令传输至上述运算单元12;
上述转换单元13根据上述小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式标识将上述第一输入数据转换为第二输入数据;然后将该第二输入数据传输至上述运算单元12;
上述运算单元12根据上述运算指令对上述第二输入数据进行运算,以得到运算结果。
可选的,该控制器单元11包括:指令缓存单元110、指令处理单元111和存储队列单元113;
所述指令缓存单元110,用于存储所述人工神经网络运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到所述数据转换指令和所述多个运算指令,并解析所述数据转换指令以得到所述数据转换指令的操作码和操作域;
所述存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
举例说明,在一个可选的技术方案中,主处理电路101也可以包括一个控制单元,该控制单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从处理电路102也可以包括另一个控制单元,该另一个控制单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表1所示。
操作码 | 寄存器或立即数 | 寄存器/立即数 | …… |
表1
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
表2
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
可选的,该控制器单元11还可以包括:
依赖关系处理单元112,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令缓存单元110内,在所述第零运算指令执行完毕后,从所述指令缓存单元110提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
在另一种可选实施例中,如图3B所示,上述运算单元12包括一个主处理电路101、多个从处理电路102和多个分支处理电路103。
上述主处理电路101,具体用于确定所述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路103;
所述分支处理电路103,用于转发所述主处理电路101与所述多个从处理电路102之间的数据块、广播数据以及运算指令;
所述多个从处理电路102,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路103;
上述主处理电路101,还用于将上述分支处理电路103发送的中间结果进行后续处理得到上述运算指令的结果,将上述计算指令的结果发送至上述控制器单元11。
在另一种可选实施例中,运算单元12如图3C所示,可以包括一个主处理电路101和多个从处理电路102。如图3C所示,多个从处理电路102呈阵列分布;每个从处理电路102与相邻的其他从处理电路102连接,主处理电路101连接所述多个从处理电路102中的K个从处理电路102,所述K个从处理电路102为:第1行的n个从处理电路102、第m行的n个从处理电路102以及第1列的m个从处理电路102,需要说明的是,如图3C所示的K个从处理电路102仅包括第1行的n个从处理电路102、第m行的n个从处理电路102以及第1列的m个从处理电路102,即该K个从处理电路102为多个从处理电路102中直接与主处理电路101连接的从处理电路102。
K个从处理电路102,用于在上述主处理电路101以及多个从处理电路102之间的数据以及指令的转发;
所述主处理电路101,还用于确定上述输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路102;
所述K个从处理电路102,用于转换所述主处理电路101与所述多个从处理电路102之间的数据;
所述多个从处理电路102,用于依据所述运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路102;
所述主处理电路101,用于将所述K个从处理电路102发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元11。
可选的,如图3D所示,上述图3A-图3C中的主处理电路101还可以包括:激活处理电路1011、加法处理电路1012中的一种或任意组合;
激活处理电路1011,用于执行主处理电路101内数据的激活运算;
加法处理电路1012,用于执行加法运算或累加运算。
上述从处理电路102包括:乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一种可行的实施例中,上述第一输入数据为数据类型与参与运算的运算指令所指示的运算类型不一致的数据,第二输入数据为数据类型与参与运算的运算指令所指示的运算类型一致的数据,上述转换单元13获取上述数据转换指令的操作码和操作域,该操作码用于指示该数据转换指令的功能,操作域包括小数点位置和数据类型的转换方式标识。上述转换单元13根据上述小数点位置和数据类型的转换方式标识将上述第一输入数据转换为第二输入数据。
具体地,上述数据类型的转换方式标识与上述数据类型的转换方式一一对应。参见下表3,表3为一种可行的数据类型的转换方式标识与数据类型的转换方式的对应关系表。
数据类型的转换方式标识 | 数据类型的转换方式 |
00 | 定点数据转换为定点数据 |
01 | 浮点数据转换为浮点数据 |
10 | 定点数据转换为浮点数据 |
11 | 浮点数据转换为定点数据 |
表3
如表3所示,当上述数据类型的转换方式标识为00时,上述数据类型的转换方式为定点数据转换为定点数据;当上述数据类型的转换方式标识为01时,上述数据类型的转换方式为浮点数据转换为浮点数据;当上述数据类型的转换方式标识为10时,上述数据类型的转换方式为定点数据转换为浮点数据;当上述数据类型的转换方式标识为11时,上述数据类型的转换方式为浮点数据转换为定点数据。
可选地,上述数据类型的转换方式标识与数据类型的转换方式的对应关系还可如下表4所示。
数据类型的转换方式标识 | 数据类型的转换方式 |
0000 | 64位定点数据转换为64位浮点数据 |
0001 | 32位定点数据转换为64位浮点数据 |
0010 | 16位定点数据转换为64位浮点数据 |
0011 | 32位定点数据转换为32位浮点数据 |
0100 | 16位定点数据转换为32位浮点数据 |
0101 | 16位定点数据转换为16位浮点数据 |
0110 | 64位浮点数据转换为64位定点数据 |
0111 | 32位浮点数据转换为64位定点数据 |
1000 | 16位浮点数据转换为64位定点数据 |
1001 | 32位浮点数据转换为32位定点数据 |
1010 | 16位浮点数据转换为32位定点数据 |
1011 | 16位浮点数据转换为16位定点数据 |
表4
如表4所示,当上述数据类型的转换方式标识为0000时,上述数据类型的转换方式为64位定点数据转换为64位浮点数据;当上述数据类型的转换方式标识为0001时,上述数据类型的转换方式为32位定点数据转换为64位浮点数据;当上述数据类型的转换方式标识为0010时,上述数据类型的转换方式为16位定点数据转换为64位浮点数据;当上述数据类型的转换方式标识为0011时,上述数据类型的转换方式为32位定点数据转换为32位浮点数据;当上述数据类型的转换方式标识为0100时,上述数据类型的转换方式为16位定点数据转换为32位浮点数据;当上述数据类型的转换方式标识为0101时,上述数据类型的转换方式为16位定点数据转换为16位浮点数据;当上述数据类型的转换方式标识为0110时,上述数据类型的转换方式为64位浮点数据转换为64位定点数据;当上述数据类型的转换方式标识为0111时,上述数据类型的转换方式为32位浮点数据转换为64位定点数据;当上述数据类型的转换方式标识为1000时,上述数据类型的转换方式为16位浮点数据转换为64位定点数据;当上述数据类型的转换方式标识为1001时,上述数据类型的转换方式为32位浮点数据转换为32位定点数据;当上述数据类型的转换方式标识为1010时,上述数据类型的转换方式为16位浮点数据转换为32位定点数据;当上述数据类型的转换方式标识为1011时,上述数据类型的转换方式为16位浮点数据转换为16位定点数据。
在一种可行的实施例中,上述控制器单元11从上述存储单元10中获取计算指令,解析该计算指令以得到一个或者多个运算指令,其中该运算指令可为可变格式运算指令或者定点格式运算指令。
其中,上述可变格式运算指令包括操作码和操作域,该操作码用于指示该可变格式运算指令的功能,上述操作域包括第一输入数据的首地址、第一输入数据的长度(可选地)、输出数据的首地址、小数点位置、第一输入数据的数据类型标志位(可选地)和操作类型标识。
当上述运算指令为可变格式运算指令时,上述控制器单元11解析上述可变格式运算指令,以得到上述第一输入数据的首地址、第一输入数据的长度、输出数据的首地址、小数点位置、第一输入数据的数据类型标志位和操作类型标识,然后根据第一输入数据的首地址和上述第一输入数据的长度从上述存储单元10中获取第一输入数据,然后将第一输入数据、小数点位置、第一输入数据的数据类型标志位和操作类型标识传输至上述转换单元13,然后将上述输出数据的首地址上述运算单元12;
上述转换单元13根据上述数据类型标志位、上述小数点位置和上述操作类型标识指示的操作类型将上述第一输入数据转换为第二输入数据;然后将该第二输入数据传输至上述运算单元12。
上述运算单元12的主处理电路101和从处理电路102对上述第二输入数据进行运算,以得到上述计算指令的结果;将该计算指令的结果存储至上述存储单元10中上述输出数据的首地址对应的位置。
其中,上述操作类型标识用于指示上述运算单元12进行运算时参与运算的数据的类型。该类型包括定点数据,浮点数据、整型数据和离散数据等。
在一种可能的实施例中,上述存储单元10中存储有上述第一输入数据的首地址、第一输入数据的长度、输出数据的首地址、小数点位置、第一输入数据的数据类型标志位和操作类型标识,上述控制器单元11直接从上述存储单元10中获取上述上述第一输入数据的首地址、第一输入数据的长度、输出数据的首地址、小数点位置、第一输入数据的数据类型标志位和操作类型标识,然后按照上述过程进行后续操作。
举例说明,上述操作类型标识为0或1。当该标志位为1时,上述运算单元12的主处理电路101和从处理电路102进行浮点运算,即参与运算的数据类型为浮点数据;当操作类型标识为0时,上述运算单元12的主处理电路101和从处理电路102进行定点运算,即参与运算的数据类型为定点数据。
上述运算单元12可根据上述数据标志位和操作类型标识确定输入数据的类型和进行运算的类型。
具体地,参见表5,表5为数据类型标志位与操作类型标识的映射关系表。
表5
如表5所示,当上述操作类型标识为0且上述数据类型标志位为0时,上述第一输入数据为定点数据,上述运算单元12的主处理电路101和从处理电路102进行定点运算,不进行数据转换;当上述操作类型标识为0且上述数据类型标志位为1时,上述第一输入数据为浮点数据,上述运算单元12的主处理电路101和从处理电路102进行浮点运算,不进行数据转换;当上述操作类型标识为1且上述数据类型标志位为0时,上述第一输入数据为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为浮点数据,上述运算单元12的主处理电路101和从处理电路102对第二输入数据进行运算;当上述操作类型标识为1且上述数据类型标志位为1时,上述第一输入数据为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为定点数据,上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行运算。
其中,上述定点数据包括64位定点数据、32位定点数据、16位定点数据。上述浮点数据64位浮点数据、32位浮点数据和16位浮点数据。上述标志位与操作类型标识的映射关系具体还可参见下表6。
表6
如表6所示,当上述操作类型标识为0000且上述数据类型标志位为0时,上述第一输入数据为64为定点数据,上述运算单元12的主处理电路101和从处理电路102进行64位定点运算,不进行数据类型转换;当上述操作类型标识为0000且上述数据类型标志位为1时,上述第一输入数据为64为浮点数据,上述运算单元12的主处理电路101和从处理电路102进行64位浮点运算,不进行数据类型转换;当上述操作类型标识为0001且上述数据类型标志位为0时,上述第一输入数据为32为定点数据,上述运算单元12的主处理电路101和从处理电路102进行32位定点运算,不进行数据类型转换;当上述操作类型标识为0001且上述数据类型标志位为1时,上述第一输入数据为32为浮点数据,上述运算单元12的主处理电路101和从处理电路102进行32位浮点运算,不进行数据类型转换;当上述操作类型标识为0010且上述数据类型标志位为0时,上述第一输入数据为16为定点数据,上述运算单元12的主处理电路101和从处理电路102进行16位定点运算,不进行数据类型转换;当上述操作类型标识为0010且上述数据类型标志位为1时,上述第一输入数据为16为浮点数据,上述运算单元12的主处理电路101和从处理电路102进行16位浮点运算,不进行数据类型转换。
当上述操作类型标识为0011且上述数据类型标志位为0时,上述第一输入数据为64为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位浮点运算;当上述操作类型标识为0011且上述数据类型标志位为1时,上述第一输入数据为64为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位定点运算。
当上述操作类型标识为0100且上述数据类型标志位为0时,上述第一输入数据为32为定点数据,上述转换单元13根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位浮点运算;当上述操作类型标识为0100且上述数据类型标志位为1时,上述第一输入数据为32为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位定点运算。
当上述操作类型标识为0101且上述数据类型标志位为0时,上述第一输入数据为16为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位浮点运算;当上述操作类型标识为0101且上述数据类型标志位为1时,上述第一输入数据为16为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为64为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行64位定点运算。
当上述操作类型标识为0110且上述数据类型标志位为0时,上述第一输入数据为32为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位浮点运算;当上述操作类型标识为0110且上述数据类型标志位为1时,上述第一输入数据为32为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位定点运算。
当上述操作类型标识为0111且上述数据类型标志位为0时,上述第一输入数据为16为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位浮点运算;当上述操作类型标识为0111且上述数据类型标志位为1时,上述第一输入数据为16为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位定点运算。
当上述操作类型标识为1000且上述数据类型标志位为0时,上述第一输入数据为16为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位浮点运算;当上述操作类型标识为1000且上述数据类型标志位为1时,上述第一输入数据为16为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位定点运算。
当上述操作类型标识为1001且上述数据类型标志位为0时,上述第一输入数据为64为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位浮点运算;当上述操作类型标识为1001且上述数据类型标志位为1时,上述第一输入数据为64为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为32为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行32位定点运算。
当上述操作类型标识为1010且上述数据类型标志位为0时,上述第一输入数据为64为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位浮点运算;当上述操作类型标识为1010且上述数据类型标志位为1时,上述第一输入数据为64为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位定点运算。
当上述操作类型标识为1011且上述数据类型标志位为0时,上述第一输入数据为32为定点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为浮点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位浮点运算;当上述操作类型标识为1011且上述数据类型标志位为1时,上述第一输入数据为32为浮点数据,上述转换单元13先根据上述小数点位置将上述第一输入数据转换为第二输入数据,第二输入数据为16为定点数据,然后上述运算单元12的主处理电路101和从处理电路102对该第二输入数据进行16位定点运算。
在一种可行的实施例中,上述运算指令为定点格式运算指令,该定点格式运算指令包括操作域和操作码,该操作码用于指示该定点格式运算指令的功能,定点格式运算指令的操作码包括第一输入数据的首地址,第一输入数据的长度(可选地)、输出数据的首地址和小数点位置。
上述控制器单元11获取上述定点格式运算指令后,解析该定点格式运算指令,以得到上述第一输入数据的首地址、第一输入数据的长度、输出数据的首地址和小数点位置;然后上述控制器单元11根据上述第一输入数据的首地址和第一输入数据的长度从上述存储单元10中获取第一输入数据,接着将该第一输入数据和小数点位置传输至上述转换单元13;将上述输出数据的首地址传输至上述运算单元12。上述转换单元根据上述小数点位置将上述第一输入数据转换为第二输入数据,然后将该第二输入数据传输至上述运算单元13,该运算单元12的主处理电路101和从处理电路102按照对上述第二输入数据进行运算,以得到计算指令的结果,并将该计算指令的结果存储至上述存储单元10中上述输出数据的首地址对应的位置。
在一种可行的实施例中,上述计算装置的运算单元13在进行上述多层神经网络模型的第i层的运算之前,该计算装置的控制器单元11获取配置指令,该配置指令包括小数点位置和参与运算的数据类型。该控制器单元11解析该配置指令,以得到小数点位置和参与运算的数据类型,或者从上述存储单元10中直接获取上述小数点位置和参与运算的数据类型,然后上述控制器单元11获取输入数据后,判断输入数据的数据类型与参与运算的数据类型是否一致;当确定输入数据的数据类型与参与运算的数据类型不一致时,上述控制器单元11将上述输入数据、小数点位置和参与运算的数据类型传输至上述转换单元13;该转换单元根据上述小数点位置和参与运算的数据类型对上述输入数据进行数据类型转换,使得输入数据的数据类型与参与运算的数据类型一致;然后将转换后的数据传输至上述运算单元12,该运算单元12的主处理电路101和从处理电路102对转换后的输入数据进行运算;当确定输入数据的数据类型与参与运算的数据类型一致时,上述控制器单元11将上述输入数据传输至上述运算单元12,该运算单元12的主处理电路101和从处理电路102直接对输入数据进行运算,不用进行数据类型转换。
进一步地,当上述输入数据为定点数据且参与运算的数据类型为定点数据时,上述控制器单元11判断输入数据的小数点位置与参与运算的小数点位置是否一致,若不一致,上述控制器单元11将上述输入数据、输入数据的小数点位置和参与运算的小数点位置传输至上述转换单元13,该转换单元13将输入数据转换为与小数点位置与参与运算的数据的小数点位置一致的定点数据,然后将转换后的数据传输至上述运算单元,该运算单元12的主处理电路101和从处理电路102对转换后的数据进行运算。
换句话说,上述运算指令可以替换为上述配置指令。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一种可选的实施方案中,如图3E所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路101,所述树型模块的多个支端口分别连接多个从处理电路102中的一个从处理电路102;
上述树型模块具有收发功能,如图3E所示,该树型模块即为发送功能,如图6A所示,该树型模块即为接收功能。
所述树型模块,用于转发所述主处理电路101与所述多个从处理电路102之间的数据块、权值以及运算指令。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图3F所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路102可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图3F所示的倒数第一层的节点。
可选的,上述运算单元可以携带单独的缓存,如图3G所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路102的输入神经元向量数据和输出神经元值数据。
如图3H所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路102在计算过程中需要的权值数据。
在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路102,其实现的方法可以为:
控制器单元11从存储单元10内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路101;
主处理电路101将输入神经元矩阵x拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路102,将权值矩阵w广播给8个从处理电路102,
从处理电路102并行执行8个子矩阵与权值矩阵w的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路101;
上述主处理电路101,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制器单元11,控制器单元11将该最终结果y输出或存储至存储单元10内。
在一个实施例里,运算单元12包括但不仅限于:第一部分的第一个或多个乘法器;第二部分的一个或者多个加法器(更具体的,第二个部分的加法器也可以组成加法树);第三部分的激活函数单元;和/或第四部分的向量处理单元。更具体的,向量处理单元可以处理向量运算和/或池化运算。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法器相加得到输出数据(out)。更具体的,第二部分为加法树时,将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法运算(更具体的,为加法树运算,用于将输入数据1通过加法树逐级相加),或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。计算单元相应的即组成了二级,三级,或者四级流水级架构。
需要说明的是,上述第一输入数据为长位数非定点数据,例如32位浮点数据,也可以是针对标准的64位或者16位浮点数等,这里只是以32位为具体实施例进行说明;上述第二输入数据为短位数定点数据,又称为较少位数定点数据,表示相对于长位数非定点数据的第一输入数据来说,采用更少的位数来表示的定点数据。
在一种可行的实施例中,上述第一输入数据为非定点数据,上述第二输入数据为定点数据,该第一输入数据占的比特位数大于或者等于上述第二输入数据占的比特位数。比如上述第一输入输入数据为32位浮点数,上述第二输入数据为32位定点数据;再比如上述第一输入输入数据为32位浮点数,上述第二输入数据为16位定点数据。
具体地,对于不同的网络模型的不同的层,上述第一输入数据包括不同类型的数据。该不同类型的数据的小数点位置不相同,即对应的定点数据的精度不同。对于全连接层,上述第一输入数据包括输入神经元、权值和偏置数据等数据;对于卷积层时,上述第一输入数据包括卷积核、输入神经元和偏置数据等数据。
比如对于全连接层,上述小数点位置包括输入神经元的小数点位置、权值的小数点位置和偏置数据的小数点位置。其中,上述输入神经元的小数点位置、权值的小数点位置和偏置数据的小数点位置可以全部相同或者部分相同或者互不相同。
在一种可行的实施例中,所述控制器单元11还用于:在获取第一输入数据以及计算指令之前,确定所述第一输入数据的小数点位置和定点数据的位宽;所述定点数据的位宽为所述第一输入数据转换为定点数据的位宽;
运算单元12,还用于初始化所述第一输入数据的小数点位置和调整所述第一输入数据的小数点位置。
其中,上述第一输入数据的定点数据的位宽为以定点数据表示的第一输入数据所占的比特位,上述小数点位置为以定点数据表示的第一数据数据的小数部分所占的比特位。该小数点位置用于表征定点数据的精度。具体参见图2A的相关描述。
其中,当上述第一输入数据a满足条件neg≤a≤pos时,上述第二输入数据为|a/2s|*2s;当上述第一输入数据a大于pos时,上述第二输入数据为pos;当上述第一输入数据a小于neg时,上述第二输入数据为neg。
在一种实施例中,对于卷积层和全连接层的输入神经元、权值、输出神经元、输入神经元导数、输出神经元导数和权值导数均采用定点数据进行表示。
可选地,上述输入神经元采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输入神经元采用的定点数据的位宽为8。
可选地,上述权值采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述权值采用的定点数据的位宽为8。
可选地,上述输入神经元导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输入神经元导数采用的定点数据的位宽为16。
可选地,上述输出神经元导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输出神经元导数采用的定点数据的位宽为24。
可选地,上述权值导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述权值导数采用的定点数据的位宽为24。
在一种实施例中,对于参与上述多层网络模型运算的数据中数值较大的数据a可采用多种定点表示方法,具体参见图2B的相关描述。
进一步地,所述运算单元12初始化所述第一输入数据的小数点位置,包括:
根据所述第一输入数据绝对值的最大值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据的绝对值最小值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置,或者;
根据经验值常量初始化所述第一输入数据的小数点位置。
具体地,其中,上述小数点位置s需要根据不同类别的数据、不同神经网络层的数据,处于不同迭代轮次的数据进行初始化和动态调整。
下面具体介绍第一输入数据的小数点位置s的初始化过程,即确定进行第一次将第一输入数据转换时定点数据所采用的小数点位置s。
其中,上述运算单元1211对上述第一输入数据的小数点位置s进行初始化包括:根据第一输入数据绝对值最大值初始化第一输入数据的小数点位置s;根据第一输入数据绝对值的最小值初始化第一输入数据的小数点位置s;根据第一输入数据中不同数据类型间关系初始化第一输入数据的小数点位置s;根据经验值常量初始化第一输入数据的小数点位置s。
具体地,下面分别具体介绍上述初始化过程。
a)、上述计算单元12根据第一输入数据绝对值的最大值初始化第一输入数据的小数点位置s:
上述运算单元12具体通过进行以下公式所示的运算,以初始化上述第一输入数据的小数点位置s:。
其中,上述amax为上述第一输入数据绝对值的最大值,上述bitnum为上述第一输入数据转换为定点数据的位宽,上述sa为上述第一输入数据的小数点位置。
其中,参与运算的数据按类别与网络层次可分为:第l层的输入神经元X(l)、输出神经元Y(l)、权值W(l)、输入神经元导数输出神经元导数和权值导数寻找绝对值最大值时,可以按数据类别寻找;可以分层、分类别寻找;可以分层、分类别、分组寻找。第一输入数据绝对值的最大值的确定方法包括:
a.1)、上述计算单元12按数据类别寻找绝对值最大值
具体地,第一输入数据包括向量/矩阵中的每个元素为ai (l),其中,该a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述第一输入数据包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数,上述第一输入数据的小数点位置包括输入神经元的小数点位置、权值的小数点位置、输出神经元的小数点位置、输入神经元导数的小数点位置、权值导数的小数点位置和输出神经元导数的小数点位置。该输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数均以矩阵或者向量形式表示的。上述运算单元12通过遍历上述多层网络模型的每一层的向量/矩阵中所有元素,获取每种类别数据的绝对值最大值,即通过公式确定每种类别数据a转换为定点数据的小数点位置sa。
a.2)、上述计算单元12按照分层和分数据类别寻找绝对值最大值
具体地,第一输入数据向量/矩阵中的每个元素为ai (l),其中,该a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述多层网络模型的每层均包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数。上述第一输入数据的小数点位置包括输入神经元的小数点位置、权值的小数点位置、输出神经元的小数点位置、输入神经元导数的小数点位置、权值导数的小数点位置和输出神经元导数的小数点位置。该输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数均以矩阵/向量表示。上述运算单元12通过遍历多层网络模型的每层的每种数据的向量/矩阵中的所有元素,获取每种类别数据的绝对值的最大值,即通过公式:确定在第l层每种类别数据a的小数点位置
a.3)、上述计算单元12按照分层、分数据类别和分组进寻找绝对值最大值
具体地,第一输入数据向量/矩阵中的每个元素为ai (l),其中a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述多层网络模型的每层的数据类别包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数。上述运算单元12将上述多层网络模型的每层的每种类型数据分为g组,或者通过其他任意分组规则进行分组。上述运算单元12然后遍历上述多层网络模型中每层每种类型数据对应的g组数据中每组数据的每个元素,获取该组数据中绝对值最大的元素,即通过公式确定每层中每种数据类别对应的g组数据每组的小数点位置
其中,上述任意分组规则包括但不限定于根据数据范围进行分组、根据数据训练批次进行分组等规则。
b)上述运算单元12根据第一输入数据的绝对值最小值初始化该第一输入数据的小数点位置s:
具体地,上述运算单元12找到待量化数据的绝对值最小值amin,通过以下公式确定定点化精度s。
其中,上述amin为上述第一输入数据的绝对值最小值。获取amin的过程具体可参见上述步骤a.1)、a.2)、a.3)。
c)上述运算单元12根据第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置s:
d)上述计算单元12根据经验值常量初始化第一输入数据的小数点位置s:
具体地,上述多层网络模型的任一层(比如第l层)的数据类型a(l)的小数点位置sa (l)可人为设定sa (l)=c,其中c为整数常数,上述a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数
进一步地,上述输入神经元的小数点位置初始化值和输出神经元的小数点位置初始化值均可在[-8,8]范围内选取;权值的小数点位置初始化值可在[-17,8]范围内选取,输入神经元导数的小数点位置初始化值和输出神经元导数的小数点位置初始化值均可在[-40,-20]范围内选取。权值导数的小数点位置初始化值可在[-48,-12]范围内选取。
下面具体介绍上述运算单元12动态调整数据上述小数点位置s的方法。
上述运算单元12动态调整小数点位置s的方法包括向上调整s(s变大),和向下调整s(s变小)。具体包括根据第一输入数据绝对值最大值单步向上调整;根据第一输入数据绝对值最大值逐步向上调整;根据第一输入数据分布单步向上调整;根据第一输入数据分布逐步向上调整;根据第一输入数据绝对值最大值向下调整。
a)、上述运算单元12根据第一输入数据中数据绝对值的最大值单步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos]。其中,pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当上述第一输入数据中数据绝对值的最大值amax≥pos时,则调整之后的小数点位置为否则不调整上述小数点位置,即s_new=s_old。
b)、上述运算单元12根据第一输入数据中数据绝对值的最大值逐步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当上述第一输入数据中数据绝对值的最大值amax≥pos时,则调整之后的小数点位置为s_new=s_old+1;否则不调整上述小数点位置,即s_new=s_old。
c)、上述运算单元12根据第一输入数据分布单步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。计算第一输入数据的绝对值的统计量,如绝对值的均值amean和绝对值的标准差astd。设置数据的最大范围amax=amean+nastd。当amax≥pos时,否则不调整上述小数点位置,即s_new=s_old。
进一步地,上述n可取2或者3
d)、上述运算单元12根据第一输入数据分布逐步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。计算第一输入数据的绝对值的统计量,如绝对值的均值amean和绝对值的标准差astd。设置数据的最大范围amax=amean+nastd,n可取3。当amax≥pos时,s_new=s_old+1,否则不调整上述小数点位置,即s_new=s_old。
e)、上述运算单元12根据第一输入数据绝对值最大值向下调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当第一输入数据的绝对值最大值amax<2s_old+(bitnum-n)且s_old≥smin时,s_new=s_old-1,其中n为整数常数,smin可以是整数,也可以是负无穷。
进一步地,上述n为3,上述smin为-64。
可选地,对于调整上述小数点位置的频率,可以是永远不调整第一输入数据的小数点位置;或者是每隔n个第一训练周期(即iteration)调整一次,n为常量;或者每隔n个第二训练周期(即epoch)调整一次,n为常量;或者是每隔n个第一训练周期或n个第二训练周期调整一次第一输入数据的小数点位置,每隔n个第一训练周期或第二训练周期调整一次第一输入数据的小数点位置,然后调整n=αn,其中α大于1;或者是每隔n个第一训练周期或第二训练周期调整一次第一输入数据的小数点位置,随着训练轮数递增,逐渐减小n。
进一步地,每隔100个第一训练周期调整一次输入神经元的小数点位置、权值的小数点位置和输出神经元的小数点位置。每隔20个第一训练周期调整一次输入神经元导数的小数点位置和输出神经元导数的小数点位置。
需要说明的是,上述第一训练周期为训练一批次样本所需的时间,第二训练周期为对所有训练样本进行一次训练所需的时间。
在一种可能的实施例中,上述控制器单元11或上述运算单元12按照上述过程获取上述第一输入数据的小数点位置后,将第一输入数据的小数点位置存储至存储单元10的缓存202中。
当上述计算指令为立即数寻址的指令时,上述主处理单元101直接根据该计算指令的操作域所指示的小数点位置将第一输入数据进行转换为第二输入数据;当上述计算指令为直接寻址或者间接寻址的指令时,上述主处理单元101根据该计算指令的操作域所指示的存储空间获取第一输入数据的小数点位置,然后根据该小数点位置将第一输入数据进行转换为第二输入数据。
上述计算装置还包括舍入单元,在进行运算过程中,由于对第二输入数据进行加法运算、乘法运算和/或其他运算得到的运算结果(该运算结果包括中间运算结果和计算指令的结果)的精度会超出当前定点数据的精度范围,因此上述运算缓存单元缓存上述中间运算结果。在运算结束后,上述舍入单元对超出定点数据精度范围的运算结果进行舍入操作,得到舍入后的运算结果,然后上述数据转换单元将该舍入后的运算结果转换为当前定数数据类型的数据。
具体地,上述舍入单元对上述中间运算结果进行舍入操作,该舍入操作为随机舍入操作、四舍五入操作、向上舍入操作、向下舍入操作和截断舍入操作中的任一种。
当上述舍入单元执行随机舍入操作时,该舍入单元具体执行如下操作:
其中,y表示对舍入前的运算结果x进行随机舍入得到的数据,即上述舍入后的运算结果,ε为当前定点数据表示格式所能表示的最小正数,即2-Point Location,表示对上述舍入前的运算结果x直接截得定点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,上述公式表示对上述舍入前的运算结果x进行随机舍入获得的数据为的概率为对上述中间运算结果x进行随机舍入获得的数据为的概率为
当上述舍入单元进行四舍五入操作时,该舍入单元具体执行如下操作:
其中,y表示对上述舍入前的运算结果x进行四舍五入后得到的数据,即上述舍入后的运算结果,ε为当前定点数据表示格式所能表示的最小正整数,即2-Point Location,为ε的整数倍,其值为小于或等于x的最大数。上述公式表示当上述舍入前的运算结果x满足条件时,上述舍入后的运算结果为当上述舍入前的运算结果满足条件时,上述舍入后的运算结果为
当上述舍入单元进行向上舍入操作时,该舍入单元具体执行如下操作:
其中y表示对上述舍入前运算结果x进行向上舍入后得到的数据,即上述舍入后的运算结果,为ε的整数倍,其值为大于或等于x的最小数,ε为当前定点数据表示格式所能表示的最小正整数,即2-Point Location。
当上述舍入单元进行向下舍入操作时,该舍入单元具体执行如下操作:
其中,y表示对上述舍入前的运算结果x进行向下舍入后得到的数据,即上述舍入后的运算结果,为ε的整数倍,其值为小于或等于x的最大数,ε为当前定点数据表示格式所能表示的最小正整数,即2-Point Location。
当上述舍入单元进行截断舍入操作时,该舍入单元具体执行如下操作:
y=[x]
其中,y表示对上述舍入前的运算结果x进行截断舍入后得到的数据,即上述舍入后的运算结果,[x]表示对上述运算结果x直接截得定点数据所得的数据。
上述舍入单元得到上述舍入后的中间运算结果后,上述运算单元12根据上述第一输入数据的小数点位置将该舍入后的中间运算结果转换为当前定点数据类型的数据。
在一种可行的实施例中,上述运算单元12对上述一个或者多个中间结果中的数据类型为浮点数据的中间结果不做截断处理。
上述运算单元12的从处理电路102根据上述方法进行运算得到的中间结果,由于在该运算过程中存在乘法、除法等会使得到的中间结果超出存储器存储范围的运算,对于超出存储器存储范围的中间结果,一般会对其进行截断处理;但是由于在本申请运算过程中产生的中间结果不用存储在存储器中,因此不用对超出存储器存储范围的中间结果进行截断,极大减少了中间结果的精度损失,提高了计算结果的精度。
在一种可行的实施例中,上述运算单元12还包括推导单元,当该运算单元12接收到参与定点运算的输入数据的小数点位置,该推导单元根据该参与定点运算的输入数据的小数点位置推导得到进行定点运算过程中得到一个或者多个中间结果的小数点位置。上述运算子单元进行运算得到的中间结果超过其对应的小数点位置所指示的范围时,上述推导单元将该中间结果的小数点位置左移M位,以使该中间结果的精度位于该中间结果的小数点位置所指示的精度范围之内,该M为大于0的整数。
举例说明,上述第一输入数据包括输入数据I1和输入数据I2,分别对应的小数点位置分别为P1和P2,且P1>P2,当上述运算指令所指示的运算类型为加法运算或者减法运算,即上述运算子单元进行I1+I2或者I1-I2操作时,上述推导单元推导得到进行上述运算指令所指示的运算过程的中间结果的小数点位置为P1;当上述运算指令所指示的运算类型为乘法运算,即上述运算子单元进行I1*I2操作时,上述推导单元推导得到进行上述运算指令所指示的运算过程的中间结果的小数点位置为P1*P2。
在一种可行的实施例中,上述运算单元12还包括:
数据缓存单元,用于缓存上述一个或多个中间结果。
在一种可选的实施例中,上述计算装置还包括数据统计单元,该数据统计单元用于对所述多层网络模型的每一层中同一类型的输入数据进行统计,以得到所述每一层中每种类型的输入数据的小数点位置。
该数据统计单元也可以是外部装置的一部分,上述计算装置在进行数据转换之前,从外部装置获取参与运算数据的小数点位置。
具体地,上述数据统计单元包括:
获取子单元,用于提取所述多层网络模型的每一层中同一类型的输入数据;
统计子单元,用于统计并获取所述多层网络模型的每一层中同一类型的输入数据在预设区间上的分布比例;
分析子单元,用于根据所述分布比例获取所述多层网络模型的每一层中同一类型的输入数据的小数点位置。
其中,上述预设区间可为i=0,1,2,…,n,n为预设设定的一正整数,X为定点数据所占的比特位数。上述预设区间包括n+1个子区间。上述统计子单元统计上述多层网络模型的每一层中同一类型的输入数据在上述n+1个子区间上分布信息,并根据该分布信息获取上述第一分布比例。该第一分布比例为p0,p1,p2,…,pn,该n+1个数值为上述多层网络模型的每一层中同一类型的输入数据在上述n+1个子区间上的分布比例。上述分析子单元预先设定一个溢出率EPL,从0,1,2,…,n中获取去最大的i,使得pi≥1-EPL,该最大的i为上述多层网络模型的每一层中同一类型的输入数据的小数点位置。换句话说,上述分析子单元取上述多层网络模型的每一层中同一类型的输入数据的小数点位置为:max{i/pi≥1-EPL,i∈{0,1,2,…,n}},即在满足大于或者等于1-EPL的pi中,选取最大的下标值i为上述多层网络模型的每一层中同一类型的输入数据的小数点位置。
需要说明的是,上述pi为上述多层网络模型的每一层中同一类型的输入数据中取值在区间中的输入数据的个数与上述多层网络模型的每一层中同一类型的输入数据总个数的比值。比如m1个多层网络模型的每一层中同一类型的输入数据中有m2个输入数据取值在区间中,则上述
在一种可行的实施例中,为了提高运算效率,上述获取子单元随机或者抽样提取所述多层网络模型的每一层中同一类型的输入数据中的部分数据,然后按照上述方法获取该部分数据的小数点位置,然后根据该部分数据的小数点位置对该类型输入数据进行数据转换(包括浮点数据转换为定点数据、定点数据转换为定点数据、定点数据转换为定点数据等等),可以实现在即保持精度的前提下,又可以提高计算速度和效率。
可选地,上述数据统计单元可根据上述同一类型的数据或者同一层数据的中位值确定该同一类型的数据或者同一层数据的位宽和小数点位置,或者根据上述同一类型的数据或者同一层数据的平均值确定该同一类型的数据或者同一层数据的位宽和小数点位置。
可选地,上述运算单元根据对上述同一类型的数据或者同一层数据进行运算得到的中间结果超过该同一层类型的数据或者同一层数据的小数点位置和位宽所对应的取值范围时,该运算单元不对该中间结果进行截断处理,并将该中间结果缓存到该运算单元的数据缓存单元中,以供后续的运算使用。
具体地,上述操作域包括输入数据的小数点位置和数据类型的转换方式标识。上述指令处理单元对该数据转换指令解析以得到上述输入数据的小数点位置和数据类型的转换方式标识。上述处理单元还包括数据转换单元,该数据转换单元根据上述输入数据的小数点位置和数据类型的转换方式标识将上述第一输入数据转换为第二输入数据。
需要说明的是,上述网络模型包括多层,比如全连接层、卷积层、池化层和输入层。上述至少一个输入数据中,属于同一层的输入数据具有同样的小数点位置,即同一层的输入数据共用或者共享同一个小数点位置。
上述输入数据包括不同类型的数据,比如包括输入神经元、权值和偏置数据。上述输入数据中属于同一类型的输入数据具有同样的小数点位置,即上述同一类型的输入数据共用或共享同一个小数点位置。
比如运算指令所指示的运算类型为定点运算,而参与该运算指令所指示的运算的输入数据为浮点数据,故而在进行定点运算之前,上述数转换单元将该输入数据从浮点数据转换为定点数据;再比如运算指令所指示的运算类型为浮点运算,而参与该运算指令所指示的运算的输入数据为定点数据,则在进行浮点运算之前,上述数据转换单元将上述运算指令对应的输入数据从定点数据转换为浮点数据。
对于本申请所涉及的宏指令(比如计算指令和数据转换指令),上述控制器单元11可对宏指令进行解析,以得到该宏指令的操作域和操作码;根据该操作域和操作码生成该宏指令对应的微指令;或者,上述控制器单元11对宏指令进行译码,得到该宏指令对应的微指令。
在一种可行的实施例中,在片上***(System On Chip,SOC)中包括主处理器和协处理器,该主处理器包括上述计算装置。该协处理器根据上述方法获取上述多层网络模型的每一层中同一类型的输入数据的小数点位置,并将该多层网络模型的每一层中同一类型的输入数据的小数点位置传输至上述计算装置,或者该计算装置在需要使用上述多层网络模型的每一层中同一类型的输入数据的小数点位置时,从上述协处理器中获取上述多层网络模型的每一层中同一类型的输入数据的小数点位置。
在一种可行的实施例中,上述第一输入数据为均为非定点数据,该非定点数据包括包括长位数浮点数据、短位数浮点数据、整型数据和离散数据等。
上述第一输入数据的数据类型互不相同。比如上述输入神经元、权值和偏置数据均为浮点数据;上述输入神经元、权值和偏置数据中的部分数据为浮点数据,部分数据为整型数据;上述输入神经元、权值和偏置数据均为整型数据。上述计算装置可实现非定点数据到定点数据的转换,即可实现长位数浮点数据、短位数浮点数据、整型数据和离散数据等类型等数据向定点数据的转换。该定点数据可为有符号定点数据或者无符号定点数据。
在一种可行的实施例中,上述第一输入数据和第二输入数据均为定点数据,且第一输入数据和第二输入数据可均为有符号的定点数据,或者均为无符号的定点数据,或者其中一个为无符号的定点数据,另一个为有符号的定点数据。且第一输入数据的小数点位置和第二输入数据的小数点位置不同。
在一种可行的实施例中,第一输入数据为定点数据,上述第二输入数据为非定点数据。换言之,上述计算装置可实现定点数据到非定点数据的转换。
图4为本发明实施例提供的一种单层神经网络正向运算流程图。该流程图描述利用本发明实施的计算装置和指令集实现的一种单层神经网络正向运算的过程。对于每一层来说,首先对输入神经元向量进行加权求和计算出本层的中间结果向量。该中间结果向量加偏置并激活得到输出神经元向量。将输出神经元向量作为下一层的输入神经元向量。
在一个具体的应用场景中,上述计算装置可以是一个训练装置。在进行神经网络模型训练之前,该训练装置获取参与神经网络模型训练的训练数据,该训练数据为非定点数据,并按照上述方法获取上述训练数据的小数点位置。上述训练装置根据上述训练数据的小数点位置将该训练数据转换为以定点数据表示的训练数据。上述训练装置根据该以定点数据表示的训练数据进行正向神经网络运算,得到神经网络运算结果。上述训练装置对超出训练数据的小数点位置所能表示数据精度范围的神经网络运算结果进行随机舍入操作,以得到舍入后的神经网络运算结果,该神经网络运算结果位于上述训练数据的小数点位置所能表示数据精度范围内。按照上述方法,上述训练装置获取多层神经网络每层的神经网络运算结果,即输出神经元。上述训练装置根据每层输出神经元得到输出神经元的梯度,并根据该输出神经元的梯度进行反向运算,得到权值梯度,从而根据该权值梯度更新神经网络模型的权值。
上述训练装置重复执行上述过程,以达到训练神经网络模型的目的。
需要指出的是,在进行正向运算和反向训练之前,上述计算装置对参与正向运算的数据进行数据转换;对参与反向训练的数据不进行数据转换;或者,上述计算装置对参与正向运算的数据不进行数据转换;对参与反向训练的数据进行数据转换;上述计算装置对参与正向运算的数据参与反向训练的数据均进行数据转换;具体数据转换过程可参见上述相关实施例的描述,在此不再叙述。
其中,上述正向运算包括上述多层神经网络运算,该多层神经网络运算包括卷积等运算,该卷积运算是由卷积运算指令实现的。
上述卷积运算指令为Cambricon指令集中的一种指令,该Cambricon指令集的特征在于,指令由操作码和操作数组成,指令集包含四种类型的指令,分别是控制指令(controlinstructions),数据传输指令(data transfer instructions),运算指令(computationalinstructions),逻辑指令(logical instructions)。
优选的,指令集中每一条指令长度为定长。例如,指令集中每一条指令长度可以为64bit。
进一步的,控制指令用于控制执行过程。控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
进一步的,数据传输指令用于完成不同存储介质之间的数据传输。数据传输指令包括加载(load)指令,存储(store)指令,搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
进一步的,运算指令用于完成神经网络算术运算。运算指令包括矩阵运算指令,向量运算指令和标量运算指令。
更进一步的,矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector),向量乘矩阵(vector multiply matrix),矩阵乘标量(matrixmultiply scalar),外积(outer product),矩阵加矩阵(matrix add matrix),矩阵减矩阵(matrix subtract matrix)。
更进一步的,向量运算指令完成神经网络中的向量运算,包括向量基本运算(vector elementary arithmetics),向量超越函数运算(vector transcendentalfunctions),内积(dot product),向量随机生成(random vector generator),向量中最大/最小值(maximum/minimum of a vector)。其中向量基本运算包括向量加,减,乘,除(add,subtract,multiply,divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
更进一步的,标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalar elementary arithmetics)和标量超越函数运算(scalar transcendentalfunctions)。其中标量基本运算包括标量加,减,乘,除(add,subtract,multiply,divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
进一步的,逻辑指令用于神经网络的逻辑运算。逻辑运算包括向量逻辑运算指令和标量逻辑运算指令。
更进一步的,向量逻辑运算指令包括向量比较(vector compare),向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中向量比较包括但不限于大于,小于,等于,大于或等于,小于或等于和不等于。向量逻辑运算包括与,或,非。
更进一步的,标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalar logical operations)。其中标量比较包括但不限于大于,小于,等于,大于或等于,小于或等于和不等于。标量逻辑运算包括与,或,非。
对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。如图5所示,图5中虚线的箭头表示反向运算,实现的箭头表示正向运算。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令,包括正向运算指令和方向训练指令。
下面通过神经网络运算指令来说明如图3A所示的计算装置的具体计算方法。对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
如图3A所示的计算装置执行神经网络正向运算指令的方法具体可以为:
上述转换单元13对上述第一输入数据进行数据类型转换后,控制器单元11从指令缓存单元110内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制器单元11将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元12。
控制器单元11从存储单元10内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路101,控制器单元11从存储单元10内提取输入数据Xi,将该输入数据Xi发送至主处理电路101。
主处理电路101将输入数据Xi拆分成n个数据块;
控制器单元11的指令处理单元111依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路101,主处理电路101将该乘法指令、权值w以广播的方式发送给多个从处理电路102,将该n个数据块分发给该多个从处理电路102(例如具有n个从处理电路102,那么每个从处理电路102发送一个数据块);多个从处理电路102,用于依据该乘法指令将该权值w与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路101,该主处理电路101依据该累加指令将多个从处理电路102发送的中间结果执行累加运算得到累加结果,依据该偏执指令将该累加结果执行加偏执b得到最终结果,将该最终结果发送至该控制器单元11。
另外,加法运算和乘法运算的顺序可以调换。
需要说明的是,上述计算装置执行神经网络反向训练指令的方法类似于上述计算装置执行神经网络执行正向运算指令的过程,具体可参见上述反向训练的相关描述,在此不再叙述。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给***设备。***设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制***,也可以有各自独立的控制***;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图6为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、机器学习处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图7所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上***,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一个可行的实施例中,还申请了一种分布式***,该***包括n1个主处理器和n2个协处理器,n1是大于或等于0的整数,n2是大于或等于1的整数。该***可以是各种类型的拓扑结构,包括但不限于如图3B所示的拓扑结果、图3C所示的拓扑结构、图11所示的拓扑结构和图12所示的拓扑结构。
该主处理器将输入数据及其小数点位置和计算指令分别发送至上述多个协处理器;或者上述主处理器将上述输入数据及其小数点位置和计算指令发送至上述多个从处理器中的部分从处理器,该部分从处理器再将上述输入数据及其小数点位置和计算指令发送至其他从处理器。上述该协处理器包括上述计算装置,该计算装置根据上述方法和计算指令对上述输入数据进行运算,得到运算结果;
其中,上述输入数据包括但不限定于输入神经元、权值和偏置数据等等。
上述协处理器将运算结果直接发送至上述主处理器,或者与主处理器没有连接关系的协处理器将运算结果先发送至与主处理器有连接关系的协处理器,然后该协处理器将接收到的运算结果发送至上述主处理器。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。参阅图8,图8提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图9,图9为本发明实施例提供的一种执行机器学习计算的方法,所述方法包括:
S901、计算装置获取第一输入数据和计算指令。
其中,上述第一输入数据包括输入神经元和权值。
S902、计算装置解析所述计算指令,以得到数据转换指令和多个运算指令。
其中,所述数据转换指令包括数据转换指令包括操作域和操作码,该操作码用于指示所述数据类型转换指令的功能,所述数据类型转换指令的操作域包括小数点位置、用于指示第一输入数据的数据类型的标志位和数据类型的转换方式。
S903、计算装置根据所述数据转换指令将所述第一输入数据转换为第二输入数据,该第二输入数据为定点数据。
其中,所述根据所述数据转换指令将所述第一输入数据转换为第二输入数据,包括:
解析所述数据转换指令,以得到所述小数点位置、所述用于指示第一输入数据的数据类型的标志位和数据类型的转换方式;
根据所述第一输入数据的数据类型标志位确定所述第一输入数据的数据类型;
根据所述小数点位置和所述数据类型的转换方式,将所述第一输入数据转换为第二输入数据,所述第二输入数据的数据类型与所述第一输入数据的数据类型不一致。
其中,当所述第一输入数据和所述第二输入数据均为定点数据时,所述第一输入数据的小数点位置和所述第二输入数据的小数点位置不一致。
在一种可行的实施例中,当所述第一输入数据为定点数据时,所述方法还包括:
根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
S904、计算装置根据所述多个运算指令对所述第二输入数据执行计算得到计算指令的结果。
其中,上述运算指令包括正向运算指令和反向训练指令,即上述计算装置在执行正向运算指令和或反向训练指令(即该计算装置进行正向运算和/或反向训练)过程中,上述计算装置可根据上述图9所示实施例将参与运算的数据转换为定点数据,进行定点运算。
需要说明的是,上述步骤S901-S904具体描述可参见图1-8所示实施例的相关描述,在此不再叙述。
在一个具体的应用场景中,上述计算装置将参与运算的数据转换为定点数据,并对定点数据的小数点位置进行调整,具体过程参见图10,如图10所示,该方法包括:
S1001、计算装置获取第一输入数据。
其中,上述第一输入数据为参与多层网络模型的第m层运算的数据,该第一输入数据为任意类型的数据。比如该第一输入数据为定点数据、浮点数据、整型数据或离散数据,m为大于0的整数。
其中,上述多层网络模型的第m层为线性层,该线性层包括但不限定于卷积层和全连接层。上述第一输入数据包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数。
S1002、计算装置确定第一输入数据的小数点位置和定点数据的位宽。
其中,上述第一输入数据的定点数据的位宽为以定点数据表示的第一输入数据所占的比特位,上述小数点位置为以定点数据表示的第一数据数据的小数部分所占的比特位。该小数点位置用于表征定点数据的精度。具体参见图2A的相关描述。
其中,当上述第一输入数据a满足条件neg≤a≤pos时,上述第二输入数据为|a/2s|*2s;当上述第一输入数据a大于pos时,上述第二输入数据为pos;当上述第一输入数据a小于neg时,上述第二输入数据为neg。
在一种实施例中,对于卷积层和全连接层的输入神经元、权值、输出神经元、输入神经元导数、输出神经元导数和权值导数均采用定点数据进行表示。
可选地,上述输入神经元采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输入神经元采用的定点数据的位宽为8。
可选地,上述权值采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述权值采用的定点数据的位宽为8。
可选地,上述输入神经元导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输入神经元导数采用的定点数据的位宽为16。
可选地,上述输出神经元导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述输出神经元导数采用的定点数据的位宽为24。
可选地,上述权值导数采用的定点数据的位宽可为8、16、32、64或者其他值。进一步地,上述权值导数采用的定点数据的位宽为24。
在一种实施例中,对于参与上述多层网络模型运算的数据中数值较大的数据a可采用多种定点表示方法,具体参见图2B的相关描述。
S903、计算装置初始化第一输入数据的小数点位置和调整第一输入数据的小数点位置。
其中,上述小数点位置s需要根据不同类别的数据、不同神经网络层的数据,处于不同迭代轮次的数据进行初始化和动态调整。
下面具体介绍第一输入数据的小数点位置s的初始化过程,即确定进行第一次将第一输入数据转换时定点数据所采用的小数点位置s。
其中,上述计算装置第一输入数据的小数点位置s的初始化包括:根据第一输入数据绝对值最大值初始化第一输入数据的小数点位置s;根据第一输入数据绝对值的最小值初始化第一输入数据的小数点位置s;根据第一输入数据中不同数据类型间关系初始化第一输入数据的小数点位置s;根据经验值常量初始化第一输入数据的小数点位置s。
具体地,下面分别具体介绍上述初始化过程。
a)、上述计算装置根据第一输入数据绝对值的最大值初始化第一输入数据的小数点位置s:
上述计算装置具体通过以下公式初始化上述第一输入数据的小数点位置s:。
其中,上述amax为上述第一输入数据绝对值的最大值,上述bitnum为上述第一输入数据转换为定点数据的位宽,上述sa为上述第一输入数据的小数点位置。
其中,参与运算的数据按类别与网络层次可分为:第l层的输入神经元X(l)、输出神经元Y(l)、权值W(l)、输入神经元导数输出神经元导数和权值导数寻找绝对值最大值时,可以按数据类别寻找;可以分层、分类别寻找;可以分层、分类别、分组寻找。第一输入数据绝对值的最大值的确定方法包括:
a.1)、上述计算装置按数据类别寻找绝对值最大值
具体地,第一输入数据包括向量/矩阵中的每个元素为ai (l),其中,该a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述第一输入数据包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数,上述第一输入数据的小数点位置包括输入神经元的小数点位置、权值的小数点位置、输出神经元的小数点位置、输入神经元导数的小数点位置、权值导数的小数点位置和输出神经元导数的小数点位置。该输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数均以矩阵或者向量形式表示的。计算装置通过遍历上述多层网络模型的每一层的向量/矩阵中所有元素,获取每种类别数据的绝对值最大值,即通过公式确定每种类别数据a转换为定点数据的小数点位置sa。
a.2)、上述计算装置按照分层分类别寻找绝对值最大值
具体地,第一输入数据向量/矩阵中的每个元素为ai (l),其中,该a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述多层网络模型的每层均包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数。上述第一输入数据的小数点位置包括输入神经元的小数点位置、权值的小数点位置、输出神经元的小数点位置、输入神经元导数的小数点位置、权值导数的小数点位置和输出神经元导数的小数点位置。该输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数均以矩阵/向量表示。上述计算装置通过遍历多层网络模型的每层的每种数据的向量/矩阵中的所有元素,获取每种类别数据的绝对值的最大值,即通过公式:确定在第l层每种类别数据a的小数点位置
a.3)、上述计算装置按照分层分类别分组进寻找绝对值最大值
具体地,第一输入数据向量/矩阵中的每个元素为ai (l),其中a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数换言之,上述多层网络模型的每层的数据类别包括输入神经元、权值、输出神经元、输入神经元导数、权值导数和输出神经元导数。上述计算装置将上述多层网络模型的每层的每种类型数据分为g组,或者通过其他任意分组规则进行分组。然后遍历上述多层网络模型中每层每种类型数据对应的g组数据中每组数据的每个元素,获取该组数据中绝对值
其中,上述任意分组规则包括但不限定于根据数据范围进行分组、根据数据训练批次进行分组等规则。
b)上述计算装置根据第一输入数据的绝对值最小值初始化该第一输入数据的小数点位置s:
具体地,上述计算装置找到待量化数据的绝对值最小值amin,通过以下公式确定定点化精度s。
其中,上述amin为上述第一输入数据的绝对值最小值。获取amin的过程具体可参见上述步骤a.1)、a.2)、a.3)。
c)上述计算装置根据第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置s:
d)上述计算装置根据经验值常量初始化第一输入数据的小数点位置s:
具体地,上述多层网络模型的任一层(比如第l层)的数据类型a(l)的小数点位置sa (l)可人为设定sa (l)=c,其中c为整数常数,上述a(l)可为输入神经元X(l)或输出神经元Y(l)或权值W(l)或输入神经元导数或输出神经元导数或权值导数
进一步地,上述输入神经元的小数点位置初始化值和输出神经元的小数点位置初始化值均可在[-8,8]范围内选取;权值的小数点位置初始化值可在[-17,8]范围内选取,输入神经元导数的小数点位置初始化值和输出神经元导数的小数点位置初始化值均可在[-40,-20]范围内选取。权值导数的小数点位置初始化值可在[-48,-12]范围内选取。
下面具体介绍上述计算装置动态调整数据上述小数点位置s的方法。
上述计算装置动态调整小数点位置s的方法包括向上调整s(s变大),和向下调整s(s变小)。具体包括根据第一输入数据绝对值最大值单步向上调整;根据第一输入数据绝对值最大值逐步向上调整;根据第一输入数据分布单步向上调整;根据第一输入数据分布逐步向上调整;根据第一输入数据绝对值最大值向下调整。
a)、上述计算装置根据第一输入数据中数据绝对值的最大值单步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos]。其中,pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当上述第一输入数据中数据绝对值的最大值amax≥pos时,则调整之后的小数点位置为否则不调整上述小数点位置,即s_new=s_old。
b)、上述计算装置根据第一输入数据中数据绝对值的最大值逐步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当上述第一输入数据中数据绝对值的最大值amax≥pos时,则调整之后的小数点位置为s_new=s_old+1;否则不调整上述小数点位置,即s_new=s_old。
c)、上述计算装置根据第一输入数据分布单步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。计算第一输入数据的绝对值的统计量,如绝对值的均值amean和绝对值的标准差astd。设置数据的最大范围amax=amean+nastd。当amax≥pos时,否则不调整上述小数点位置,即s_new=s_old。
进一步地,上述n可取2或者3
d)、上述计算装置根据第一输入数据分布逐步向上调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。计算第一输入数据的绝对值的统计量,如绝对值的均值amean和绝对值的标准差astd。设置数据的最大范围amax=amean+nastd,n可取3。当amax≥pos时,s_new=s_old+1,否则不调整上述小数点位置,即s_new=s_old。
e)、上述计算装置根据第一输入数据绝对值最大值向下调整:
假设上述小数点位置调整之前为s_old,该小数点位置s_old对应的定点数据可表示数据范围是[neg,pos],其中pos=(2bitnum-1-1)*2s_old,neg=-(2bitnum-1-1)*2s_old。当第一输入数据的绝对值最大值amax<2s_old+(bitnum-n)且s_old≥smin时,s_new=s_old-1,其中n为整数常数,smin可以是整数,也可以是负无穷。
进一步地,上述n为3,上述smin为-64。
可选地,对于调整上述小数点位置的频率,可以是永远不调整第一输入数据的小数点位置;或者是每隔n个第一训练周期(即iteration)调整一次,n为常量;或者每隔n个第二训练周期(即epoch)调整一次,n为常量;或者是每隔n个第一训练周期或n个第二训练周期调整一次第一输入数据的小数点位置,每隔n个第一训练周期或第二训练周期调整一次第一输入数据的小数点位置,然后调整n=αn,其中α大于1;或者是每隔n个第一训练周期或第二训练周期调整一次第一输入数据的小数点位置,随着训练轮数递增,逐渐减小n。
进一步地,每隔100个第一训练周期调整一次输入神经元的小数点位置、权值的小数点位置和输出神经元的小数点位置。每隔20个第一训练周期调整一次输入神经元导数的小数点位置和输出神经元导数的小数点位置。
需要说明的是,上述第一训练周期为训练一批次样本所需的时间,第二训练周期为对所有训练样本进行一次训练所需的时间。
需要说明的是,上述通过上述数据绝对值的平均值或者中间值,初始化和调整上述数据的小数点位置,具体可参见上述通过数据的绝对值的最大值初始化和调整上述数据的小数点位置的相关描述,在此不再叙述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (47)
1.一种计算装置,所述计算装置包括:存储单元、转换单元、运算单元以及控制器单元;所述存储单元包括缓存和寄存器,
所述控制器单元,用于确定第一输入数据的小数点位置和定点数据的位宽;所述定点数据的位宽为所述第一输入数据转换为定点数据的位宽;
所述运算单元,用于初始化所述第一输入数据的小数点位置和调整所述第一输入数据的小数点位置;并将调整后的第一输入数据的小数点位置存储至所述存储单元的缓存中,
所述控制器单元,用于从所述寄存器中获取第一输入数据和多个运算指令,并从所述缓存中获取所述调整后的第一输入数据的小数点位置;将所述调整后的第一输入数据的小数点位置及所述第一输入数据传输至所述转换单元;其中,对所述第一输入数据的小数点位置进行调整是周期性的;
所述转换单元,用于根据所述调整后的第一输入数据的小数点位置将所述第一输入数据转换为第二输入数据;
其中,所述运算单元调整所述第一输入数据的小数点位置,包括:
根据所述第一输入数据中数据绝对值的最大值单步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中数据绝对值的最大值逐步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据分布单步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据分布逐步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据绝对值最大值向下调整所述第一输入数据的小数点位置。
2.根据权利要求1所述的装置,其特征在于,所述运算单元初始化所述第一输入数据的小数点位置,包括:
根据所述第一输入数据绝对值的最大值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据的绝对值最小值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置,或者;
根据经验值常量初始化所述第一输入数据的小数点位置。
3.根据权利要求1或2所述的装置,其特征在于,所述对所述第一输入数据的小数点位置进行调整是周期性的,包括:
每间隔n个第一训练周期iteration或者n个第二训练周期epoch调整一次所述第一输入数据的小数点位置,所述第一训练周期大于所述第二训练周期,所述n为常量。
4.根据权利要求1或2所述的装置,其特征在于,所述对所述第一输入数据的小数点位置进行调整是周期性的,包括:
每隔n个第一训练周期iteration或第二训练周期epoch调整一次第一输入数据的小数点位置,然后调整n=αn,其中α大于1,或者,
每隔n个第一训练周期iteration或第二训练周期epoch调整一次第一输入数据的小数点位置,所述n随着训练轮数的递增而逐渐减小;
其中,所述第一训练周期大于所述第二训练周期。
5.根据权利要求1所述的装置,其特征在于,所述计算装置用于执行机器学习计算,
所述控制器单元,还用于将所述多个运算指令传输至所述运算单元;
所述转换单元,还用于将所述第二输入数据传输至所述运算单元;
所述运算单元,还用于根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
6.根据权利要求2所述的装置,其特征在于,所述计算装置用于执行机器学习计算,
所述控制器单元,还用于将所述多个运算指令传输至所述运算单元;
所述转换单元,还用于将所述第二输入数据传输至所述运算单元;
所述运算单元,还用于根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
7.根据权利要求3所述的装置,其特征在于,所述计算装置用于执行机器学习计算,
所述控制器单元,还用于将所述多个运算指令传输至所述运算单元;
所述转换单元,还用于将所述第二输入数据传输至所述运算单元;
所述运算单元,还用于根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
8.根据权利要求4所述的装置,其特征在于,所述计算装置用于执行机器学习计算,
所述控制器单元,还用于将所述多个运算指令传输至所述运算单元;
所述转换单元,还用于将所述第二输入数据传输至所述运算单元;
所述运算单元,还用于根据所述多个运算指令对所述第二输入数据进行运算,以得到运算结果。
9.根据权利要求5-8任一项所述的装置,其特征在于,所述机器学习计算包括:人工神经网络运算,所述第一输入数据包括:输入神经元数据和权值数据;所述运算结果为输出神经元数据。
10.根据权利要求5-8任一项所述的装置,其特征在于,所述运算单元包括一个主处理电路和多个从处理电路;
所述主处理电路,用于对所述第二输入数据进行执行前序处理以及与所述多个从处理电路之间传输数据和所述多个运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输第二输入数据以及所述多个运算指令并执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述运算结果。
11.根据权利要求9所述的装置,其特征在于,所述运算单元包括一个主处理电路和多个从处理电路;
所述主处理电路,用于对所述第二输入数据进行执行前序处理以及与所述多个从处理电路之间传输数据和所述多个运算指令;
所述多个从处理电路,用于依据从所述主处理电路传输第二输入数据以及所述多个运算指令并执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述运算结果。
12.根据权利要求10所述的装置,其特征在于,所述计算装置还包括:直接内存访问DMA单元;
所述缓存,还用于存储所述第一输入数据;其中,所述缓存包括高速暂存缓存;
所述寄存器,还用于存储所述第一输入数据中标量数据;
所述DMA单元,用于从所述存储单元中读取数据或者向所述存储单元存储数据。
13.根据权利要求11所述的装置,其特征在于,所述计算装置还包括:直接内存访问DMA单元;
所述缓存,还用于存储所述第一输入数据;其中,所述缓存包括高速暂存缓存;
所述寄存器,还用于存储所述第一输入数据中标量数据;
所述DMA单元,用于从所述存储单元中读取数据或者向所述存储单元存储数据。
14.根据权利要求5-8任一项所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
15.根据权利要求9所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
16.根据权利要求10所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
17.根据权利要求11所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
18.根据权利要求12所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
19.根据权利要求13所述的装置,其特征在于,当所述第一输入数据为定点数据时,所述运算单元还包括:
推导单元,用于根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
20.根据权利要求14所述的装置,其特征在于,所述运算单元还包括:
数据缓存单元,用于缓存所述一个或多个中间结果。
21.根据权利要求15-19任一项所述的装置,其特征在于,所述运算单元还包括:
数据缓存单元,用于缓存所述一个或多个中间结果。
22.根据权利要求10所述的装置,其特征在于,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据以及运算指令;
其中,所述树型模块为n叉树结构,所述n为大于或等于2的整数。
23.根据权利要求11-13任一项所述的装置,其特征在于,所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据以及运算指令;
其中,所述树型模块为n叉树结构,所述n为大于或等于2的整数。
24.根据权利要求10所述的装置,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路,具体用于确定输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,还用于将所述分支处理电路发送的中间结果进行后续处理得到所述运算指令的结果,将所述运算指令的结果发送至所述控制器单元。
25.根据权利要求11-13任一项所述的装置,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路,具体用于确定输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,还用于将所述分支处理电路发送的中间结果进行后续处理得到所述运算指令的结果,将所述运算指令的结果发送至所述控制器单元。
26.根据权利要求10所述的装置,其特征在于,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的K个从处理电路,所述K个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,还用于确定输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据所述运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行处理得到该运算指令的结果,将该运算指令的结果发送给所述控制器单元。
27.根据权利要求11-13任一项所述的装置,其特征在于,所述运算单元还包括分支处理电路,
所述主处理电路,具体用于确定输入神经元为广播数据,权值为分发数据,将一个分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块、广播数据以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、广播数据以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及广播数据执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,还用于将所述分支处理电路发送的中间结果进行后续处理得到所述运算指令的结果,将所述运算指令的结果发送至所述控制器单元。
28.根据权利要求22、24和26任一项所述的装置,其特征在于,
所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该运算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该运算指令的结果。
29.根据权利要求23所述的装置,其特征在于,
所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该运算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该运算指令的结果。
30.根据权利要求25所述的装置,其特征在于,
所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该运算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该运算指令的结果。
31.根据权利要求27所述的装置,其特征在于,
所述主处理电路,具体用于将多个处理电路发送的中间结果进行组合排序得到该运算指令的结果;
或所述主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该运算指令的结果。
32.根据权利要求22、24和26任一项所述的装置,其特征在于,所述主处理电路包括:激活处理电路和加法处理电路中的一种或任意组合;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算;
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
累加处理电路,用于对该乘积结果执行累加运算得到中间结果。
33.根据权利要求23所述的装置,其特征在于,所述主处理电路包括:激活处理电路和加法处理电路中的一种或任意组合;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算;
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
累加处理电路,用于对该乘积结果执行累加运算得到中间结果。
34.根据权利要求25所述的装置,其特征在于,所述主处理电路包括:激活处理电路和加法处理电路中的一种或任意组合;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算;
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
累加处理电路,用于对该乘积结果执行累加运算得到中间结果。
35.根据权利要求27所述的装置,其特征在于,所述主处理电路包括:激活处理电路和加法处理电路中的一种或任意组合;
所述激活处理电路,用于执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行加法运算或累加运算;
所述从处理电路包括:
乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
累加处理电路,用于对该乘积结果执行累加运算得到中间结果。
36.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求5-35任一项所述的计算装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制***或拥有各自的控制***;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
37.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求36所述的机器学习运算装置,通用互联接口、存储装置和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作;
所述存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
38.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求36所述的机器学习运算装置或如权利要求37所述的组合处理装置。
39.一种电子设备,其特征在于,所述电子设备包括如权利要求38所述的芯片。
40.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求38所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控;
其中,所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接口装置为:标准PCIE接口。
41.一种计算方法,其特征在于,包括:
控制器单元确定第一输入数据的小数点位置和定点数据的位宽,所述定点数据的位宽为所述第一输入数据转换为定点数据的位宽;
运算单元初始化所述第一输入数据的小数点位置和调整所述第一输入数据的小数点位置;
转换单元获取调整后的第一输入数据的小数点位置,并根据所述调整后的小数点位置将所述第一输入数据转换为第二输入数据;其中,对所述第一输入数据的小数点位置进行调整是周期性的;
其中,所述运算单元调整所述第一输入数据的小数点位置,包括:
根据所述第一输入数据中数据绝对值的最大值单步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中数据绝对值的最大值逐步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据分布单步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据分布逐步向上调整所述第一输入数据的小数点位置,或者;
根据所述第一输入数据绝对值最大值向下调整所述第一输入数据的小数点位置。
42.根据权利要求41所述的方法,其特征在于,所述运算单元初始化所述第一输入数据的小数点位置,包括:
根据所述第一输入数据绝对值的最大值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据的绝对值最小值初始化所述第一输入数据的小数点位置,或者;
根据所述第一输入数据中不同数据类型间关系初始化所述第一输入数据的小数点位置,或者;
根据经验值常量初始化所述第一输入数据的小数点位置。
43.根据权利要求42所述的方法,所述计算方法为用于执行机器学习计算的方法,其特征在于,所述方法还包括:
所述运算单元根据多个运算指令对所述第二输入数据进行运算,以得到运算结果。
44.根据权利要求43所述的方法,其特征在于,所述机器学习计算包括:人工神经网络运算,所述第一输入数据包括:输入神经元和权值;所述运算结果为输出神经元。
45.根据权利要求44所述的方法,其特征在于,当所述第一输入数据为定点数据时,所述方法还包括:
所述运算单元根据所述第一输入数据的小数点位置,推导得到一个或者多个中间结果的小数点位置,其中所述一个或多个中间结果为根据所述第一输入数据运算得到的。
46.根据权利要求41-45任一项所述的方法,其特征在于,所述对所述第一输入数据的小数点位置进行调整是周期性的,包括:
每间隔n个第一训练周期iteration或者n个第二训练周期epoch调整一次所述第一输入数据的小数点位置,所述第一训练周期大于所述第二训练周期,所述n为常量。
47.根据权利要求41-45任一项所述的方法,其特征在于,所述对所述第一输入数据的小数点位置进行调整是周期性的,包括:
每隔n个第一训练周期iteration或第二训练周期epoch调整一次第一输入数据的小数点位置,然后调整n=αn,其中α大于1,或者;
每隔n个第一训练周期iteration或第二训练周期epoch调整一次第一输入数据的小数点位置,所述n随着训练轮数的递增而逐渐减小;
其中,所述第一训练周期大于所述第二训练周期。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810149287.2A CN110163350B (zh) | 2018-02-13 | 2018-02-13 | 一种计算装置及方法 |
CN2018101492872 | 2018-02-13 | ||
CN2018102079158 | 2018-03-14 | ||
CN201810207915.8A CN110276447A (zh) | 2018-03-14 | 2018-03-14 | 一种计算装置及方法 |
CN201880002628.1A CN110383300B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880002628.1A Division CN110383300B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110163353A CN110163353A (zh) | 2019-08-23 |
CN110163353B true CN110163353B (zh) | 2021-05-11 |
Family
ID=67638324
Family Applications (11)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910195598.7A Active CN110163354B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195627.XA Active CN110163357B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195816.7A Active CN110163358B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195898.5A Active CN110163362B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195819.0A Active CN110163360B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195899.XA Active CN110163363B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195535.1A Active CN110163353B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195820.3A Active CN110163361B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195599.1A Active CN110163355B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195818.6A Active CN110163359B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195600.0A Active CN110163356B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
Family Applications Before (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910195598.7A Active CN110163354B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195627.XA Active CN110163357B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195816.7A Active CN110163358B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195898.5A Active CN110163362B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195819.0A Active CN110163360B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195899.XA Active CN110163363B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910195820.3A Active CN110163361B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195599.1A Active CN110163355B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195818.6A Active CN110163359B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
CN201910195600.0A Active CN110163356B (zh) | 2018-02-13 | 2018-09-03 | 一种计算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (11) | CN110163354B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11169803B2 (en) | 2018-02-13 | 2021-11-09 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
US11609760B2 (en) * | 2018-02-13 | 2023-03-21 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN110597756B (zh) * | 2019-08-26 | 2023-07-25 | 光子算数(北京)科技有限责任公司 | 一种计算电路以及数据运算方法 |
CN112445524A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN112765537A (zh) * | 2019-11-01 | 2021-05-07 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112667241B (zh) * | 2019-11-08 | 2023-09-29 | 安徽寒武纪信息科技有限公司 | 机器学习指令的转换方法及装置、板卡、主板、电子设备 |
CN110929862B (zh) * | 2019-11-26 | 2023-08-01 | 陈子祺 | 定点化的神经网络模型量化装置和方法 |
KR20210077352A (ko) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 이를 위한 가속 장치 |
CN113190209A (zh) * | 2020-01-14 | 2021-07-30 | 中科寒武纪科技股份有限公司 | 一种计算装置和计算方法 |
CN113867792A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN111767024A (zh) * | 2020-07-09 | 2020-10-13 | 北京猿力未来科技有限公司 | 一种面向简便运算的解答方法与装置 |
EP4220448A1 (en) * | 2020-09-27 | 2023-08-02 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Data processing device, integrated circuit chip, device, and implementation method therefor |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6650327B1 (en) * | 1998-06-16 | 2003-11-18 | Silicon Graphics, Inc. | Display system having floating point rasterization and floating point framebuffering |
US6834293B2 (en) * | 2001-06-15 | 2004-12-21 | Hitachi, Ltd. | Vector scaling system for G.728 annex G |
CN100410871C (zh) * | 2003-07-23 | 2008-08-13 | 联发科技股份有限公司 | 应用跳跃式浮点数运算法的数字讯号处理器 |
US7432925B2 (en) * | 2003-11-21 | 2008-10-07 | International Business Machines Corporation | Techniques for representing 3D scenes using fixed point data |
CN1658153B (zh) * | 2004-02-18 | 2010-04-28 | 联发科技股份有限公司 | 复合式动态定点数表示法与运算法及其处理器结构 |
CN100340972C (zh) * | 2005-06-07 | 2007-10-03 | 北京北方烽火科技有限公司 | 数字自动增益控制中利用现场可编程门阵列实现对数计算的方法 |
JP4976798B2 (ja) * | 2006-09-28 | 2012-07-18 | 株式会社東芝 | 二自由度位置制御方法、二自由度位置制御装置および媒体記憶装置 |
CN101231632A (zh) * | 2007-11-20 | 2008-07-30 | 西安电子科技大学 | 应用fpga进行浮点fft处理的方法 |
CN101183873B (zh) * | 2007-12-11 | 2011-09-28 | 广州中珩电子科技有限公司 | 一种基于bp神经网络的嵌入式***数据压缩解压缩方法 |
CN101510149B (zh) * | 2009-03-16 | 2011-05-04 | 炬力集成电路设计有限公司 | 一种数据处理方法和装置 |
CN101754039A (zh) * | 2009-12-22 | 2010-06-23 | 中国科学技术大学 | 面向移动设备的3d参数解码*** |
US9104479B2 (en) * | 2011-12-07 | 2015-08-11 | Arm Limited | Apparatus and method for rounding a floating-point value to an integral floating-point value |
CN102981854A (zh) * | 2012-11-16 | 2013-03-20 | 天津市天祥世联网络科技有限公司 | 基于浮点数运算内联函数库的神经网络优化方法 |
CN103019647B (zh) * | 2012-11-28 | 2015-06-24 | 中国人民解放军国防科学技术大学 | 具有浮点精度保持功能的浮点累加/累减运算方法 |
CN103455983A (zh) * | 2013-08-30 | 2013-12-18 | 深圳市川大智胜科技发展有限公司 | 嵌入式视频***中的图像扰动消除方法 |
CN104572011B (zh) * | 2014-12-22 | 2018-07-31 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
CN104679720A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种实现fft的运算方法 |
CN104679719B (zh) * | 2015-03-17 | 2017-11-10 | 成都金本华科技股份有限公司 | 一种基于fpga的浮点运算方法 |
CN105094744B (zh) * | 2015-07-28 | 2018-01-16 | 成都腾悦科技有限公司 | 一种可变浮点数据微处理器 |
US9977116B2 (en) * | 2015-10-05 | 2018-05-22 | Analog Devices, Inc. | Scaling fixed-point fast Fourier transforms in radar and sonar applications |
CN106447037B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有多个可选择输出的神经网络单元 |
CN105426344A (zh) * | 2015-11-09 | 2016-03-23 | 南京大学 | 基于Spark的分布式大规模矩阵乘法的矩阵计算方法 |
CN107563497B (zh) * | 2016-01-20 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
CN106991476B (zh) * | 2016-01-20 | 2020-04-10 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络正向运算的装置和方法 |
CN109358900B (zh) * | 2016-04-15 | 2020-07-03 | 中科寒武纪科技股份有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107315575B (zh) * | 2016-04-26 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种用于执行向量合并运算的装置和方法 |
CN107315566B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行向量循环移位运算的装置和方法 |
CN111176608A (zh) * | 2016-04-26 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
CN107315571B (zh) * | 2016-04-27 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种用于执行全连接层神经网络正向运算的装置和方法 |
CN110188870B (zh) * | 2016-04-27 | 2021-10-12 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN107340993B (zh) * | 2016-04-28 | 2021-07-16 | 中科寒武纪科技股份有限公司 | 运算装置和方法 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN111860812B (zh) * | 2016-04-29 | 2024-03-01 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN106502626A (zh) * | 2016-11-03 | 2017-03-15 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN106708780A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 面向simt架构统一染色阵列的低复杂度分支处理电路 |
CN106775599B (zh) * | 2017-01-09 | 2019-03-01 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构***及方法 |
CN107292334A (zh) * | 2017-06-08 | 2017-10-24 | 北京深瞐科技有限公司 | 图像识别方法及装置 |
CN107807819B (zh) * | 2017-07-20 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
CN107451658B (zh) * | 2017-07-24 | 2020-12-15 | 杭州菲数科技有限公司 | 浮点运算定点化方法及*** |
-
2018
- 2018-09-03 CN CN201910195598.7A patent/CN110163354B/zh active Active
- 2018-09-03 CN CN201910195627.XA patent/CN110163357B/zh active Active
- 2018-09-03 CN CN201910195816.7A patent/CN110163358B/zh active Active
- 2018-09-03 CN CN201910195898.5A patent/CN110163362B/zh active Active
- 2018-09-03 CN CN201910195819.0A patent/CN110163360B/zh active Active
- 2018-09-03 CN CN201910195899.XA patent/CN110163363B/zh active Active
- 2018-09-03 CN CN201910195535.1A patent/CN110163353B/zh active Active
- 2018-09-03 CN CN201910195820.3A patent/CN110163361B/zh active Active
- 2018-09-03 CN CN201910195599.1A patent/CN110163355B/zh active Active
- 2018-09-03 CN CN201910195818.6A patent/CN110163359B/zh active Active
- 2018-09-03 CN CN201910195600.0A patent/CN110163356B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110163359A (zh) | 2019-08-23 |
CN110163359B (zh) | 2020-12-11 |
CN110163354A (zh) | 2019-08-23 |
CN110163360B (zh) | 2021-06-25 |
CN110163363A (zh) | 2019-08-23 |
CN110163358B (zh) | 2021-01-05 |
CN110163356A (zh) | 2019-08-23 |
CN110163361B (zh) | 2021-06-25 |
CN110163363B (zh) | 2021-05-11 |
CN110163354B (zh) | 2020-10-09 |
CN110163357B (zh) | 2021-06-25 |
CN110163353A (zh) | 2019-08-23 |
CN110163355B (zh) | 2020-10-09 |
CN110163357A (zh) | 2019-08-23 |
CN110163362A (zh) | 2019-08-23 |
CN110163356B (zh) | 2020-10-09 |
CN110163360A (zh) | 2019-08-23 |
CN110163361A (zh) | 2019-08-23 |
CN110163362B (zh) | 2020-12-11 |
CN110163355A (zh) | 2019-08-23 |
CN110163358A (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110163353B (zh) | 一种计算装置及方法 | |
TWI827432B (zh) | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡、及計算方法 | |
US11397579B2 (en) | Computing device and method | |
CN110163350B (zh) | 一种计算装置及方法 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
CN111047022A (zh) | 一种计算装置及相关产品 | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN111047021A (zh) | 一种计算装置及相关产品 | |
CN111198714B (zh) | 重训练方法及相关产品 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN111382848A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |