CN112558918A - 用于神经网络的乘加运算方法和装置 - Google Patents

用于神经网络的乘加运算方法和装置 Download PDF

Info

Publication number
CN112558918A
CN112558918A CN202011460424.8A CN202011460424A CN112558918A CN 112558918 A CN112558918 A CN 112558918A CN 202011460424 A CN202011460424 A CN 202011460424A CN 112558918 A CN112558918 A CN 112558918A
Authority
CN
China
Prior art keywords
compressed
digit
mantissa
target
low
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.)
Granted
Application number
CN202011460424.8A
Other languages
English (en)
Other versions
CN112558918B (zh
Inventor
邓广来
田超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011460424.8A priority Critical patent/CN112558918B/zh
Publication of CN112558918A publication Critical patent/CN112558918A/zh
Priority to US17/455,100 priority patent/US20220113943A1/en
Priority to JP2021186752A priority patent/JP7320582B2/ja
Application granted granted Critical
Publication of CN112558918B publication Critical patent/CN112558918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical 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)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开了用于神经网络的乘加运算方法和装置,涉及计算机领域,具体涉及深度学习等人工智能技术领域。具体实现方案为:响应于获取到的乘加运算请求,确定待运算的各个数据的类型;在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数;将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数;基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。该方法实现了在节约硬件资源成本和功耗的情况下,实现高精度的运算,配合完成卷积操作,且较短的操作数,可占用更少的内存,减少操作开销、加快运算速度。

Description

用于神经网络的乘加运算方法和装置
技术领域
本申请涉及计算机领域,具体涉及深度学习等人工智能技术领域,尤其涉及一种用于神经网络的乘加运算方法和装置。
背景技术
在深度学习和神经网络中,存在着大量的卷积层操作,乘加单元是完成卷积操作的核心部件。
神经网络中数据的乘加运算,硬件资源成本和精度成正比,在提高芯片精度的情况下,硬件资源成本和功耗也会增加,例如在语音数据处理中就是如此。因此,如何在节约硬件资源成本和功耗的情况下,实现高精度的运算是亟待解决的问题。
发明内容
本申请提供一种用于神经网络的乘加运算方法和装置。
根据本申请的一方面,提供了一种用于神经网络的乘加运算方法,包括:
响应于获取到的乘加运算请求,确定待运算的各个数据的类型;
在所述待运算的各个数据的类型为单精度浮点的情况下,对所述待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,其中,每个所述压缩后的尾数小于或等于16位;
将每个所述压缩后的尾数按照预设的规则进行拆分,以确定每个所述压缩后的尾数中的高位数及低位数;
基于每个所述压缩后的尾数中的高位数及低位数,将所述压缩后的各个尾数进行乘加运算。
根据本申请的另一方面,提供了一种用于神经网络的乘加运算装置,包括:
第一确定模块,用于响应于获取到的乘加运算请求,确定待运算的各个数据的类型;
获取模块,用于在所述待运算的各个数据的类型为单精度浮点的情况下,对所述待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,其中,每个所述压缩后的尾数小于或等于16位;
第二确定模块,用于将每个所述压缩后的尾数按照预设的规则进行拆分,以确定每个所述压缩后的尾数中的高位数及低位数;
运算模块,用于基于每个所述压缩后的尾数中的高位数及低位数,将所述压缩后的各个尾数进行乘加运算。
根据本申请的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述一方面实施例所述的用于神经网络的乘加运算方法。
根据本申请另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其上存储有计算机程序,所述计算机指令用于使所述计算机执行上述一方面实施例所述的用于神经网络的乘加运算方法。
根据本申请另一方面,提供了一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现上述一方面实施例所述的用于神经网络的乘加运算方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1为本申请实施例提供的一种用于神经网络的乘加运算方法的流程示意图;
图2为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图;
图3为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图;
图4为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图;
图5为本申请实施例提供的语音识别场景的乘加运算过程示意图;
图6为本申请实施例提供的一种用于神经网络的乘加运算装置的结构示意图;
图7示出了可以用来实施本申请的实施例的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
人工智能是研究使用计算机类模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括传感器、专用人工智能芯片、云计算、分布式存储、深度学习、大数据处理技术、知识图谱技术等几大方向。
深度学习是机器学习领域中一个新的研究方向。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
下面参考附图描述本申请实施例的用于神经网络的乘加运算方法和装置。
图1为本申请实施例提供的一种用于神经网络的乘加运算方法的流程示意图。
本申请实施例的用于神经网络的乘加运算方法,可由本申请实施例提供的用于神经网络的乘加运算装置执行,该装置可配置于电子设备中,以实现在节约硬件资源成本和功耗的情况下,实现高精度的运算,配合完成神经网络的卷积操作。
本申请实施例的用于神经网络的乘加运算方法,可应用多种神经网络中,比如用于基于深度学习的神经网络中。
如图1所示,该用于神经网络的乘加运算方法包括:
步骤101,响应于获取到的乘加运算请求,确定待运算的各个数据的类型。
神经网络中数据的运算,可能包括多种类型的数据的运算,比如包括整型数据、单精度浮点数据等等。
本实施例中,训练神经网络或者利用神经网络进行预测时,将数据输入至神经网络中,当进行到乘加运算时,响应于获取到的乘加运算请求,确定待运算的各个数据的类型。
在确定待运算的各个数据的类型时,可根据待运算的各个数据的数据格式确定,待运算的各个数据的类型。比如,标准的单精度浮点数据在计算机存储器中占用4个位元(即32bits),int8类型的数据可用8位(即8bits)进行存储。
步骤102,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数。
由于单精度浮点类型的数据为32bits,由于位宽较大,使得乘法器的位宽也比较大,需要较高的硬件资源成本和功耗。
本实施例中,在待运算的各个数据的类型为单精度浮点的情况下,可对待运算的各个数据的尾数进行压缩,以减小数据位宽,获取压缩后的各个尾数。其中,每个压缩后的尾数小于或等于16位。
单精度浮点数据的长度字节,最高位为符号位,中间8位表示阶码,低23位表示尾数。比如,对于语音处理来讲,可将单精度浮点数据的尾数从23位压缩到15位,15位尾数可以满足语音处理所用的神经网络的精度需求。
需要说明的是,将尾数压缩到15位仅是示例,在实际应用中,可根据类型的具体应用,在满足精度需求情况下,将尾数压缩到相应的位数。
本实施例中,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,压缩后的尾数,可以满足神经网络的精度需求。并且,由于对尾数进行压缩使得尾数位宽减少,使得乘法器的位宽变短,对于节省芯片的硬件面积有很大的帮助。
步骤103,将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数。
为了节省硬件资源的成本,可使用位宽较小的乘法器进行乘法运算,本实施例中,可将每个压缩后的尾数按照预设的规则进行拆分,将压缩后的尾数拆分为高位数和低位数。
具体地,可根据使用的乘法器的位宽和压缩后的尾数的位数,将压缩后的尾数拆分为高位数和低位数。比如,使用的乘法器为8bits,而压缩后的尾数为15位,如果阶码为0,则在压缩后的15位尾数前面补0得到16bits的尾数,若如果阶码不为0,则在压缩后的15位尾数前面补1得到16bits的尾数,要完成一个16bits乘以16bits的乘法,可将16bits拆分为高8位和低8位;若压缩后的尾数为7位,可不对尾数进行拆分。
步骤104,基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。
在确定压缩后的尾数中的高位数和低位数后,可先基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘法运算,根据乘法运算的结果进行加法运算,从而获取乘加运算的结果。
本申请实施例中,通过响应于获取到的乘加运算请求,确定待运算的各个数据的类型,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,并将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数,基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。由此,在进行乘加运算时,若待运算的各个数据为单精度浮点数据时,对尾数进行压缩,由于尾数位宽减小,使得乘法器位宽变短,实现了在节约硬件资源成本和功耗的情况下,实现高精度的运算,配合完成神经网络的卷积操作。并且较短的操作数,可以占用更少的内存,减少操作开销、加快运算速度。
在本申请的一个实施例中,在进行乘加运算时,可将一个压缩后的尾数中的高位数与低位数,分别与另一个压缩后的尾数中的高位数与低位数相乘,根据相乘的结果和两个压缩后的尾数分别对应的阶码,获取乘加运算结果。下面结合图2进行说明,图2为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图。
如图2所示,该用于神经网络的乘加运算方法包括:
步骤201,响应于获取到的乘加运算请求,确定待运算的各个数据的类型。
步骤202,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数。
步骤203,将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数。
本实施例中,步骤201-步骤203与上述步骤101-步骤103类似,故在此不再赘述。
步骤204,将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数。
本实施例中,可将任一压缩后的尾数中的高位数分别与另一压缩后的尾数中的高位数及低位数进行相乘,并将任一压缩后的尾数中的低位数分别与另一压缩后的尾数中的高位数及低位数进行相乘,生成目标尾数。
具体地,可将任一压缩后的尾数中的高位数与另一压缩后的尾数中的高位数相乘,生成第一目标高位数,将任一压缩后的尾数中的高位数与另一压缩后的尾数中的低位数进行相乘,生成第二目标高位数。并将任一压缩后的尾数中的低位数,与另一压缩后的尾数中的高位数进行相乘,以生成第三目标高位数,将任一压缩后的尾数中的低位数,与另一压缩后的尾数中的低位数进行相乘,以生成目标低位数。
在获取第一目标高位数、第二目标高位数、第三目标高位数及目标低位数后,可根据第一目标高位数、第二目标高位数、第三目标高位数及目标低位数生成目标尾数。具体地,可将第一目标高位数左移第一预设的位数,以获取第一位移后的高位数,并将第二目标高位数及第三目标高位数分别左移第二预设的位数,获取对应的两个第二位移后的高位数,再将第一位移后的高位数、两个第二位移后的高位数及目标低位数进行相加,相加的结果为目标尾数。
其中,第一预设的位数和第二预设的位数,可根据目标低位数的位数确定,且第二预设的位数小于第一预设的位数。
以两个压缩后的位数为16bits的尾数A和B为例,压缩后的尾数A被拆分为高8位和低8位,用A_H和A_L表示,压缩后的尾数B被拆分为高8位和低8位,用B_H和B_L表示。在进行乘加运算时,第一目标高位数HH=A_H*B_H,第二目标高位数HL=A_H*B_L,第三目标高位数LH=A_L*B_H,目标高位数为LL=A_L*B_L。在获取HH、HL、LH和LL之后,将HH左移16位,HL和LH均左移8位,那么HH<<16+HL<<8+LH<<8+LL即为两个压缩后的尾数A和B的乘加运算结果目标尾数。其中,HH<<16表示将HH左移16位,HL<<8表示将HL左移8位。
本实施例中,通过将两个压缩后的尾数中的高位数和低位数分别相乘得到相应的高位数和低位数,根据得到高位数据和低位数,生成目标低位数,从而提供了根据两个压缩后的尾数计算目标尾数的方法。并且,通过将相乘得到的高位数进行相应位数的移位,将移位后的高位数据与目标低位数相加,得到目标尾数,从而实现了利用压缩后的尾数的高位数和低位数进行相乘,得到乘加运算结果的尾数。
步骤205,根据任一压缩后的尾数对应的阶码及另一压缩后的尾数对应的阶码,确定目标阶码。
单精度浮点数据的乘加运算,还需要考虑指数,也就是阶码,本实施例中,可将任一压缩后的尾数对应的阶码,与另一压缩后的尾数对应的阶码相加,得到目标阶码。也就是说,将两个单精度浮点数据的阶码相加,得到目标阶码。
步骤206,根据目标阶码及目标尾数,确定乘加运算结果。
本实施例中,目标阶码为乘加运算结果的阶码,目标尾数为乘加运算结果的尾数,由于单精度浮点数据存储时,分为三个部分:符号位、阶码和尾数,那么根据目标阶码和目标尾数,可以得到乘加运算结果。
本申请实施例中,在基于压缩后的各个尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算时,可通过将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数,根据任一压缩后的尾数对应的阶码及另一压缩后的尾数对应的阶码,确定目标阶码,根据目标阶码及目标尾数,确定乘加运算结果。由此,通过将两个压缩后的尾数中的高位数和低位数分别相乘,可得到两个单精度浮点数据相乘的结果的目标尾数,从而减少了乘法器的位宽,节省了硬件资源成本和功耗。
在本申请的一个实施例中,在上述将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数时,可调用四个乘法器,进行两个压缩后的尾数中的高位数和低位数分别相乘。
具体地,可调用四个乘法器,用一个乘法器将任一压缩后的尾数中的高位数与另一个压缩后的尾数中的高位数相乘,再用一个乘法器将任一压缩后的尾数中的高位数与另一个压缩后的尾数中的低位数相乘,再用一个乘法器将任一压缩后的尾数中的低位数与另一个压缩后的尾数中的高位数相乘,再用一个乘法器将任一压缩后的尾数中的低位数与另一个压缩后的尾数中的低位数相乘。由此,每个乘法器生成一个计算结果,得到四个计算结果。
在获取四个计算结果后,将进行乘积运算时,乘数或被乘数为高位数对应得到的计算结果进行移位,具体方法可参见上述实施例,在此不再赘述。在需要移位的计算结果移位后,将结果进行相加,生成目标尾数。
比如,两个单精度浮点数据为32bits,对应的压缩后的尾数为16bits,两个压缩后的尾数均被拆分为高8位数和低8位数,可调用4个8x8的乘法器,即调用4个位宽为8bits的乘法器,分别进行高8位数与高8位数、高8位数与低8位数、低8位数与高8位数、低8位数与低8位数的相乘,得到4个计算结果。在获取4个计算结果后,将高8位数与高8位数相乘得到的计算结果向左移位16位,将高8位数与低8位数相乘得到结算结果,和低8位数与高8位数相乘得到的计算结果均向左移位8位,将移位后的结果与低8位数与低8位数相乘的计算结果相加,得到目标尾数。由此,通过调用4个8bits位宽的乘法器,实现单精度浮点数据的乘法,相比常规的单精度乘法,要用24bits位宽的乘法器,节省了硬件资源成本和功耗,也提高了硬件的效率和利用率。
本申请实施例中,在将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数时,调用四个乘法器,以将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,生成四个计算结果,将四个计算结果进行移位相加,以生成目标尾数。由此,通过调用四个位宽小的乘法器,进行两个压缩后的尾数的相乘,节省了硬件资源成本和功耗。
为了满足乘加运算的个性化需求,在本申请的一个实施例中,在对待运算的各个数据的尾数进行压缩时,可根据各个数据对应的业务类型,确定压缩后的尾数的位数,以满足不同业务类型的精度需求。下面结合图3进行说明,图3为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图。
如图3所示,上述对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,包括:
步骤301,确定待运算的各个数据对应的业务类型。
本实施例中,可根据神经网络的输入数据,确定待运算的各个数据对应的业务类型。比如,如果输入数据是语音数据,那么神经网络是用于语音处理的,可确定业务类型为语音处理;如果输入数据是图像数据,那么神经网络是用于图像处理的,可确定业务类型为图像处理。
步骤302,根据业务类型,确定各个数据的尾数对应的目标压缩位数。
本实施例中,预先建立业务类型与压缩位数之间的对应的关系,其中,压缩位数可以理解为压缩后的尾数的位数,不同的业务类型对应的压缩位数可能不同。在获取待运算的各个数据对应的业务类型后,根据该对应关系,可以确定待运算的各个数据对应的目标压缩位数。
比如,待运算的各个数据的业务类型为语音处理,确定语音处理对应的目标压缩位数为15位,那么可将待运算的各个数据的尾数从23位压缩至15位,压缩后的尾数为15位,可以满足语音处理所用的神经网络的精度需求。
步骤303,根据目标压缩位数,对各个数据的尾数进行压缩,以获取压缩后的各个尾数。
本实施例中,在确定目标压缩位数后,可对待运算的各个数据的尾数进行压缩,将各个数据的尾数压缩至目标压缩位数。具体地,可将各个数据的尾数中预设数量的低位数舍弃,其中,预设数量为各个数据的尾数的位数与目标压缩位数之间的差值。
比如,目标压缩位数为15位,数据的尾数为23位,那么在对数据的尾数进行压缩时,可将尾数的低8位数舍弃,保留高15位数,得到位数为15位的压缩后的尾数。
在获取压缩后的尾数后,可将压缩后的尾数按照预设的规则进行拆分,确定压缩后的尾数中的高位数和低位数,根据每个压缩后的尾数中的高位数和低位数,将压缩后的各个尾数进行乘加运算。具体的运算方法,可参见上述图2所示实施例,在此不再赘述。
本申请实施例中,在对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数时,可确定待运算的各个数据对应的业务类型,根据业务类型,确定各个数据的尾数对应的目标压缩位数,根据目标压缩位数,对各个数据的尾数进行压缩,以获取压缩后的各个尾数。由此,通过根据单精度浮点数据对应的业务类型,确定压缩位数,根据确定的压缩位数对尾数进行压缩,从而可以在满足不同业务类型的精度需求的基础上,实现高精度的运算,满足了不同业务类型的乘加运算的个性化需求。
在本申请的一个实施例中,神经网络中数据的乘加运算除了包括单精度浮点数据的运算,还可支持整型数据的乘加运算。下面结合图4进行说明,图4为本申请实施例提供的另一种用于神经网络的乘加运算方法的流程示意图。
如图4所示,该用于神经网络的乘加运算方法包括:
步骤401,响应于获取到的乘加运算请求,确定待运算的各个数据的类型。
步骤402,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数。
步骤403,将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数。
步骤404,基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。
本实施例中,步骤401-步骤404,与上述步骤101-步骤104类似,故在此不再赘述。
步骤405,在待运算的各个数据的类型为整型的情况下,根据每个数据中包含的整型数据的数量,确定待调用的乘法器的数量。
本实施例中,在待运算的各个数据的类型为单精度浮点的情况下,可执行步骤402-步骤404所示的步骤。
在待运算的各个数据的类型为整型的情况下,可根据每个数据中包含的整型数据的数量,确定待调用的乘法器的数量。
比如,数据为32bits,32bits中包含4个int8类型的数据,那么可确定待调用的乘法器数量为4个、乘法器的位宽为8bits。又如,数据为24bits,24bits中包含3个int8类型的数据,那么可确定待调用的乘法器数量为3个、乘法器的位宽为8bits。
步骤406,根据数量,调用乘法器以对待运算的各个数据进行乘法运算。
本实施例中,可利用乘法器,对任一数据中包含的整型数据,与另一个数据中包含的整型数据一一对应相乘,每个乘法器对应一个计算结果,将所有乘法器的计算结果相加,得到乘法运算的结果。其中,一一对应相乘是指将两个数据中对应位置的整型数据相乘。
比如,待调用的乘法器数量为4,每个乘法器的位宽为8bits,那么可调用4个乘法器,将任一数据包含的4个int8类型的数据,与另一个数据包含的4个int8类型的数据一一对应相乘,得到4个计算结果,将4个计算结果相加,得到两个整型数据的乘法运算结果,运算结果为32bits。在待运算的数据为单精度浮点数据,压缩后的尾数为16位时,也可利用4个位宽为8bits的乘法器进行乘法运算。由此,实现了乘法器完全的融合复用,提高了硬件的效率和利用率。
本申请实施例中,在待运算的各个数据的类型为单精度浮点的情况下,可对待运算的各个数据的尾数进行压缩,利用压缩后的尾数中的高位数和低位数据,对压缩后的各个尾数进行乘加运算,还可在待运算的各个数据的类型为整型的情况下,根据每个数据中包含的整型数据的数量,确定待调用的乘法器的数量,根据数量,调用乘法器以对待运算的各个数据进行乘法运算。由此,用于神经网络的乘加运算可支持单精度浮点和整型数据的运算,并在节约了硬件资源和功耗的基础上,实现了高精度的运算,配合完成神经网络的卷积操作。
下面以语音识别场景为例,结合图5对用于神经网络的乘加运算方法进行说明:
如图5所示,将采集的语音数据输入至语音识别模型中进行识别。当语音识别模型的卷积层进行乘加运算时,基于待运算的各个语音数据为单浮点精度数据,将语音数据的尾数由23位压缩至15位,获取各个语音数据的压缩后的各个15位尾数。在获取压缩后的各个15位尾数后,可根据阶码是否为0,将压缩后的15位尾数补齐至16位,并调用4个8*8的乘法器对16位尾数进行乘法运算。乘法器进行计算时,可将任一压缩后的尾数中的高8位数及低8位数,分别与另一压缩后的尾数中的高8位数及低8位数进行相乘,生成四个计算结果。
在获取4个计算结果后,将4个计算结果移位相加,其中,将高8位数与高8位数相乘得到的计算结果向左移位16位,将高8位数与低8位数相乘得到结算结果,和低8位数与高8位数相乘得到的计算结果均向左移位8位,将移位后的结果与低8位数与低8位数相乘的计算结果相加,得到目标尾数。
如图5所示,同时将相乘的两个尾数分别对应的阶码相加,得到目标阶码。在获取目标阶码和目标尾数后,根据目标阶码及目标尾数,可确定两个待运算的语音数据的乘加运算结果。
为了实现上述实施例,本申请实施例还提出一种用于神经网络的乘加运算装置。图6为本申请实施例提供的一种用于神经网络的乘加运算装置的结构示意图。
如图6所示,该用于神经网络的乘加运算装置600包括:第一确定模块610、获取模块620、第二确定模块630和运算模块640。
第一确定模块610,用于响应于获取到的乘加运算请求,确定待运算的各个数据的类型;
获取模块620,用于在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,其中,每个压缩后的尾数小于或等于16位;
第二确定模块630,用于将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数;
运算模块640,用于基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。
在本申请实施例一种可能的实现方式中,运算模块640,包括:
生成单元,用于将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数;
第一确定单元,用于根据任一压缩后的尾数对应的阶码及另一压缩后的尾数对应的阶码,确定目标阶码;
第二确定单元,用于根据目标阶码及目标尾数,确定乘加运算结果。
在本申请实施例一种可能的实现方式中,生成单元,包括:
第一生成子单元,用于将任一压缩后的尾数中的高位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,以生成第一目标高位数及第二目标高位数;
第二生成子单元,用于将任一压缩后的尾数中的低位数,与另一压缩后的尾数中的高位数进行相乘,以生成第三目标高位数;
第三生成子单元,用于将任一压缩后的尾数中的低位数,与另一压缩后的尾数中的低位数进行相乘,以生成目标低位数;
确定子单元,用于根据第一目标高位数、第二目标高位数、第三目标高位数及目标低位数,确定目标尾数。
在本申请实施例一种可能的实现方式中,确定子单元,用于:
将第一目标高位数左移第一预设的位数,以获取第一位移后的高位数;
将第二目标高位数及第三目标高位数分别左移第二预设的位数,以获取对应的两个第二位移后的高位数,其中,第二预设的位数小于第一预设的位数;
将第一位移后的高位数、两个第二位移后的高位数及目标低位数进行相加,以生成目标尾数。
在本申请实施例一种可能的实现方式中,生成单元,用于:
调用四个乘法器,以将任一压缩后的尾数中的高位数及低位数,分别与另一压缩后的尾数中的高位数及低位数进行相乘,生成四个计算结果;
将四个计算结果进行移位相加,以生成目标尾数。
在本申请实施例一种可能的实现方式中,获取模块620,用于:
确定待运算的各个数据对应的业务类型;
根据业务类型,确定各个数据的尾数对应的目标压缩位数;
根据目标压缩位数,对各个数据的尾数进行压缩,以获取压缩后的各个尾数。
在本申请实施例一种可能的实现方式中,该装置还可包括:
第三确定模块,用于在待运算的各个数据的类型为整型的情况下,根据每个数据中包含的整型数据的数量,确定待调用的乘法器的数量;
运算模块640,还用于根据数量,调用乘法器以对待运算的各个数据进行乘法运算。
需要说明的是,前述用于神经网络的乘加运算方法实施例的解释说明,也适用于该实施例的用于神经网络的乘加运算装置,故在此不再赘述。
本申请实施例的用于神经网络的乘加运算装置,通过响应于获取到的乘加运算请求,确定待运算的各个数据的类型,在待运算的各个数据的类型为单精度浮点的情况下,对待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,并将每个压缩后的尾数按照预设的规则进行拆分,以确定每个压缩后的尾数中的高位数及低位数,基于每个压缩后的尾数中的高位数及低位数,将压缩后的各个尾数进行乘加运算。由此,在进行乘加运算时,若待运算的各个数据为单精度浮点数据时,对尾数进行压缩,由于尾数位宽减小,使得乘法器位宽变短,实现了在节约硬件资源成本和功耗的情况下,实现高精度的运算,配合完成神经网络的卷积操作。并且较短的操作数,可以占用更少的内存,减少操作开销、加快运算速度。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图7示出了可以用来实施本申请的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在ROM(Read-OnlyMemory,只读存储器)702中的计算机程序或者从存储单元708加载到RAM(Random AccessMemory,随机访问/存取存储器)703中的计算机程序,来执行各种适当的动作和处理。在RAM703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。I/O(Input/Output,输入/输出)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元)、各种专用的AI(Artificial Intelligence,人工智能)计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital SignalProcessor,数字信号处理器)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如用于神经网络的乘加运算方法。例如,在一些实施例中,用于神经网络的乘加运算方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的用于神经网络的乘加运算方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行用于神经网络的乘加运算方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific StandardProduct,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑设备)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory,可擦除可编程只读存储器)或快闪存储器、光纤、CD-ROM(Compact Disc Read-Only Memory,便捷式紧凑盘只读存储器)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode-Ray Tube,阴极射线管)或者LCD(Liquid Crystal Display,液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(LocalArea Network,局域网)、WAN(Wide Area Network,广域网)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(VirtualPrivate Server,虚拟专用服务器)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
根据本申请实施例的技术方案,具体涉及深度学习等人工智能技术领域,在进行乘加运算时,若待运算的各个数据为单精度浮点数据时,对尾数进行压缩,由于尾数位宽减小,使得乘法器位宽变短,实现了在节约硬件资源成本和功耗的情况下,实现高精度的运算,配合完成神经网络的卷积操作。并且较短的操作数,可以占用更少的内存,减少操作开销、加快运算速度。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (17)

1.一种用于神经网络的乘加运算方法,包括:
响应于获取到的乘加运算请求,确定待运算的各个数据的类型;
在所述待运算的各个数据的类型为单精度浮点的情况下,对所述待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,其中,每个所述压缩后的尾数小于或等于16位;
将每个所述压缩后的尾数按照预设的规则进行拆分,以确定每个所述压缩后的尾数中的高位数及低位数;
基于每个所述压缩后的尾数中的高位数及低位数,将所述压缩后的各个尾数进行乘加运算。
2.如权利要求1所述的方法,其中,所述基于每个所述压缩后的尾数中的高位数及低位数,将所述压缩后的各个尾数进行乘加运算,包括:
将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数;
根据所述任一所述压缩后的尾数对应的阶码及所述另一所述压缩后的尾数对应的阶码,确定目标阶码;
根据所述目标阶码及所述目标尾数,确定乘加运算结果。
3.如权利要求2所述的方法,其中,所述将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数,包括:
将任一所述压缩后的尾数中的高位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成第一目标高位数及第二目标高位数;
将所述任一所述压缩后的尾数中的低位数,与所述另一所述压缩后的尾数中的高位数进行相乘,以生成第三目标高位数;
将所述任一所述压缩后的尾数中的低位数,与所述另一所述压缩后的尾数中的低位数进行相乘,以生成目标低位数;
根据所述第一目标高位数、第二目标高位数、第三目标高位数及目标低位数,确定所述目标尾数。
4.如权利要求3所述的方法,其中,所述根据所述第一目标高位数、第二目标高位数、第三目标高位数及目标低位数,确定所述目标尾数,包括:
将所述第一目标高位数左移第一预设的位数,以获取第一位移后的高位数;
将所述第二目标高位数及所述第三目标高位数分别左移第二预设的位数,以获取对应的两个第二位移后的高位数,其中,所述第二预设的位数小于所述第一预设的位数;
将所述第一位移后的高位数、所述两个第二位移后的高位数及所述目标低位数进行相加,以生成所述目标尾数。
5.如权利要求2所述的方法,其中,所述将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数,包括:
调用四个乘法器,以将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,生成四个计算结果;
将所述四个计算结果进行移位相加,以生成所述目标尾数。
6.如权利要求1-4任一所述的方法,其中,所述对所述待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,包括:
确定所述待运算的各个数据对应的业务类型;
根据所述业务类型,确定所述各个数据的尾数对应的目标压缩位数;
根据所述目标压缩位数,对所述各个数据的尾数进行压缩,以获取压缩后的各个尾数。
7.如权利要求1-4任一所述的方法,其中,还包括:
在所述待运算的各个数据的类型为整型的情况下,根据每个所述数据中包含的整型数据的数量,确定待调用的乘法器的数量;
根据所述数量,调用乘法器以对所述待运算的各个数据进行乘法运算。
8.一种用于神经网络的乘加运算装置,包括
第一确定模块,用于响应于获取到的乘加运算请求,确定待运算的各个数据的类型;
获取模块,用于在所述待运算的各个数据的类型为单精度浮点的情况下,对所述待运算的各个数据的尾数进行压缩,以获取压缩后的各个尾数,其中,每个所述压缩后的尾数小于或等于16位;
第二确定模块,用于将每个所述压缩后的尾数按照预设的规则进行拆分,以确定每个所述压缩后的尾数中的高位数及低位数;
运算模块,用于基于每个所述压缩后的尾数中的高位数及低位数,将所述压缩后的各个尾数进行乘加运算。
9.如权利要求8所述的装置,其中,所述运算模块,包括:
生成单元,用于将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成目标尾数;
第一确定单元,用于根据所述任一所述压缩后的尾数对应的阶码及所述另一所述压缩后的尾数对应的阶码,确定目标阶码;
第二确定单元,用于根据所述目标阶码及所述目标尾数,确定乘加运算结果。
10.如权利要求9所述的装置,其中,所述生成单元,包括:
第一生成子单元,用于将任一所述压缩后的尾数中的高位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,以生成第一目标高位数及第二目标高位数;
第二生成子单元,用于将所述任一所述压缩后的尾数中的低位数,与所述另一所述压缩后的尾数中的高位数进行相乘,以生成第三目标高位数;
第三生成子单元,用于将所述任一所述压缩后的尾数中的低位数,与所述另一所述压缩后的尾数中的低位数进行相乘,以生成目标低位数;
确定子单元,用于根据所述第一目标高位数、第二目标高位数、第三目标高位数及目标低位数,确定所述目标尾数。
11.如权利要求10所述的装置,其中,所述确定子单元,用于:
将所述第一目标高位数左移第一预设的位数,以获取第一位移后的高位数;
将所述第二目标高位数及所述第三目标高位数分别左移第二预设的位数,以获取对应的两个第二位移后的高位数,其中,所述第二预设的位数小于所述第一预设的位数;
将所述第一位移后的高位数、所述两个第二位移后的高位数及所述目标低位数进行相加,以生成所述目标尾数。
12.如权利要求9所述的装置,其中,所述生成单元,用于:
调用四个乘法器,以将任一所述压缩后的尾数中的高位数及低位数,分别与另一所述压缩后的尾数中的高位数及低位数进行相乘,生成四个计算结果;
将所述四个计算结果进行移位相加,以生成所述目标尾数。
13.如权利要求8-11任一所述的装置,其中,所述获取模块,用于:
确定所述待运算的各个数据对应的业务类型;
根据所述业务类型,确定所述各个数据的尾数对应的目标压缩位数;
根据所述目标压缩位数,对所述各个数据的尾数进行压缩,以获取压缩后的各个尾数。
14.如权利要求8-11任一所述的装置,其中,还包括:
第三确定模块,用于在所述待运算的各个数据的类型为整型的情况下,根据每个所述数据中包含的整型数据的数量,确定待调用的乘法器的数量;
所述运算模块,还用于根据所述数量,调用乘法器以对所述待运算的各个数据进行乘法运算。
15.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的用于神经网络的乘加运算方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的用于神经网络的乘加运算方法。
17.一种计算机程序产品,包括计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1-7任一所述的用于神经网络的乘加运算方法。
CN202011460424.8A 2020-12-11 2020-12-11 用于神经网络的乘加运算方法和装置 Active CN112558918B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202011460424.8A CN112558918B (zh) 2020-12-11 2020-12-11 用于神经网络的乘加运算方法和装置
US17/455,100 US20220113943A1 (en) 2020-12-11 2021-11-16 Method for multiply-add operations for neural network
JP2021186752A JP7320582B2 (ja) 2020-12-11 2021-11-17 ニューラルネットワークの積和演算方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011460424.8A CN112558918B (zh) 2020-12-11 2020-12-11 用于神经网络的乘加运算方法和装置

Publications (2)

Publication Number Publication Date
CN112558918A true CN112558918A (zh) 2021-03-26
CN112558918B CN112558918B (zh) 2022-05-27

Family

ID=75062464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011460424.8A Active CN112558918B (zh) 2020-12-11 2020-12-11 用于神经网络的乘加运算方法和装置

Country Status (3)

Country Link
US (1) US20220113943A1 (zh)
JP (1) JP7320582B2 (zh)
CN (1) CN112558918B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115994561B (zh) * 2023-03-22 2023-06-16 山东云海国创云计算装备产业创新中心有限公司 卷积神经网络加速方法、系统、存储介质、装置及设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107900A1 (en) * 2000-12-08 2002-08-08 International Business Machines Corporation Processor design for extended-precision arithmetic
CN1924798A (zh) * 2005-09-02 2007-03-07 中国科学院计算技术研究所 一种64比特浮点乘加器及其流水节拍划分方法
CN101770355A (zh) * 2009-12-30 2010-07-07 北京龙芯中科技术服务中心有限公司 兼容双精度和双单精度的浮点乘加器及其兼容处理方法
US20150193203A1 (en) * 2014-01-07 2015-07-09 Nvidia Corporation Efficiency in a fused floating-point multiply-add unit
US20150199173A1 (en) * 2014-01-15 2015-07-16 Arm Limited Multiply adder
CN105404494A (zh) * 2015-12-18 2016-03-16 苏州中晟宏芯信息科技有限公司 一种基于内部前推的浮点融合乘加方法、装置及处理器
CN107015783A (zh) * 2017-04-21 2017-08-04 中国人民解放军国防科学技术大学 一种浮点角度压缩实现方法及装置
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
US20190018650A1 (en) * 2017-07-11 2019-01-17 International Business Machines Corporation Tiny detection in a floating-point unit
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质
US20190339937A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0378083A (ja) * 1989-08-21 1991-04-03 Hitachi Ltd 倍精度演算方式及び積和演算装置
JP4629750B2 (ja) * 2008-03-31 2011-02-09 日立オートモティブシステムズ株式会社 組み込み制御装置
EP3779670A4 (en) * 2018-03-30 2022-01-05 Riken DEVICE AND SYSTEM OF ARITHMETIC OPERATIONS
US10747502B2 (en) * 2018-09-19 2020-08-18 Xilinx, Inc. Multiply and accumulate circuit
JP2020135549A (ja) * 2019-02-21 2020-08-31 富士通株式会社 演算処理装置、情報処理装置および演算処理方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107900A1 (en) * 2000-12-08 2002-08-08 International Business Machines Corporation Processor design for extended-precision arithmetic
CN1924798A (zh) * 2005-09-02 2007-03-07 中国科学院计算技术研究所 一种64比特浮点乘加器及其流水节拍划分方法
CN101770355A (zh) * 2009-12-30 2010-07-07 北京龙芯中科技术服务中心有限公司 兼容双精度和双单精度的浮点乘加器及其兼容处理方法
US20150193203A1 (en) * 2014-01-07 2015-07-09 Nvidia Corporation Efficiency in a fused floating-point multiply-add unit
US20150199173A1 (en) * 2014-01-15 2015-07-16 Arm Limited Multiply adder
CN105404494A (zh) * 2015-12-18 2016-03-16 苏州中晟宏芯信息科技有限公司 一种基于内部前推的浮点融合乘加方法、装置及处理器
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
CN107015783A (zh) * 2017-04-21 2017-08-04 中国人民解放军国防科学技术大学 一种浮点角度压缩实现方法及装置
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
US20190018650A1 (en) * 2017-07-11 2019-01-17 International Business Machines Corporation Tiny detection in a floating-point unit
US20190339937A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
ANEKANT JAIN 等: "Precision and Double Precision Floating Point Multipliers", 《2018 INTERNATIONAL CONFERENCE ON ADVANCED COMPUTATION AND TELECOMMUNICATION (ICACAT)》, 19 December 2019 (2019-12-19), pages 1 - 4 *
吴铁彬 等: "一种快速SIMD浮点乘加器的设计与实现", 《计算机工程与科学》, vol. 34, no. 1, 31 December 2012 (2012-12-31), pages 69 - 73 *
车文博等: "M-DSP中高性能浮点乘加器的设计与实现", 《计算机应用》, no. 08, 10 August 2016 (2016-08-10) *
陈正博,吴铁彬等: "面向人工智能的浮点乘加器设计", 《计算机技术与发展》 *
陈正博,吴铁彬等: "面向人工智能的浮点乘加器设计", 《计算机技术与发展》, vol. 29, no. 8, 31 August 2019 (2019-08-31) *
靳战鹏,白永强等: "一种64位浮点乘加器的设计与实现", 《计算机工程与应用》 *
靳战鹏,白永强等: "一种64位浮点乘加器的设计与实现", 《计算机工程与应用》, 31 December 2006 (2006-12-31) *

Also Published As

Publication number Publication date
JP7320582B2 (ja) 2023-08-03
JP2022024080A (ja) 2022-02-08
CN112558918B (zh) 2022-05-27
US20220113943A1 (en) 2022-04-14

Similar Documents

Publication Publication Date Title
CN108053028B (zh) 数据定点化处理方法、装置、电子设备及计算机存储介质
CN112506935B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
US11651198B2 (en) Data processing method and apparatus for neural network
EP4191478A1 (en) Method and apparatus for compressing neural network model
CN114693934A (zh) 语义分割模型的训练方法、视频语义分割方法及装置
CN112558918B (zh) 用于神经网络的乘加运算方法和装置
WO2022057502A1 (zh) 点积运算实现方法、装置、电子设备及存储介质
CN115759209A (zh) 神经网络模型的量化方法、装置、电子设备及介质
CN113408304B (zh) 文本翻译方法、装置、电子设备及存储介质
CN114998649A (zh) 图像分类模型的训练方法、图像分类方法及装置
CN115034198B (zh) 语言模型中嵌入模块计算优化的方法
US20230367548A1 (en) Computing method
CN115292662B (zh) 一种卷积加速运算方法、装置、电子设备及存储介质
CN114663276A (zh) 地图数据的压缩方法、装置、设备及存储介质
CN115237991A (zh) 数据格式转换的方法、装置及矩阵处理的方法、装置
CN114418084A (zh) 非结构化剪枝模型获取方法、装置、电子设备及存储介质
CN115237372A (zh) 一种乘法电路、机器学习运算电路、芯片及数据处理方法
CN115237992A (zh) 数据格式转换的方法、装置及矩阵处理的方法、装置
CN115965047A (zh) 数据处理器、数据处理方法和电子设备
CN115860077A (zh) 状态数据的处理方法、装置、设备以及存储介质
CN114648112A (zh) 数据处理方法、装置、设备和存储介质
CN115238236A (zh) 数据处理方法、装置、电子设备、介质和芯片
CN115080650A (zh) 一种数据类型转换方法、装置、设备及存储介质
CN115310035A (zh) 数据处理方法、装置、电子设备、介质和芯片
CN116308997A (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