CN117492839A - 一种基于simd的低比特量化处理方法 - Google Patents

一种基于simd的低比特量化处理方法 Download PDF

Info

Publication number
CN117492839A
CN117492839A CN202210876520.3A CN202210876520A CN117492839A CN 117492839 A CN117492839 A CN 117492839A CN 202210876520 A CN202210876520 A CN 202210876520A CN 117492839 A CN117492839 A CN 117492839A
Authority
CN
China
Prior art keywords
data
sum
shift
max
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210876520.3A
Other languages
English (en)
Inventor
于晓静
田凤彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Ingenic Semiconductor Co Ltd
Original Assignee
Beijing Ingenic Semiconductor 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 Ingenic Semiconductor Co Ltd filed Critical Beijing Ingenic Semiconductor Co Ltd
Priority to CN202210876520.3A priority Critical patent/CN117492839A/zh
Publication of CN117492839A publication Critical patent/CN117492839A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供一种基于simd的低比特量化处理方法,包括:S1,将输入数据sum转化为64比特整型数据,将mul转化为64比特整型数据,max_precision=15;S2,sum与mul相乘得到的结果向右移位max_precision‑left_shift;得到结果res1,res1为32比特整型数据,如公式所示:res1=(sum×mul)>>(max_precision‑left_shift);S3,将res1向右移位right_shift,得res2;S4,对res1的公式优化处理;S5,对res2进行剪裁clip处理,得到结果res3;S6,根据要求输出是有符号还是无符号,利用res3和bitw进行数据转化得到最终结果。实现量化的simd优化,以及速度的提升。

Description

一种基于simd的低比特量化处理方法
技术领域
本发明属于图像处理技术领域,特别涉及一种基于simd的低比特量化处理方法。
背景技术
集成电路技术中,现有的芯片厂商都顺应时代发展而开发自己的芯片。而在芯片应用中,在各自的芯片设计中也会产生各自的问题。例如,北京君正集成电路股份有限公司(简称:北京君正)生产的芯片,例如其中的北京君正T30、T31型号等T和X系列芯片,北京君正T30,T31等T和X系列芯片具有simd指令集。针对基于北京君正T30,T31等T系列的simd指令集设计进行优化算法。算法适合矢量(向量)指令的运算。然而T30、T31型号芯片的寄存器是128位寄存器,并且寄存器个数是有限的,这在优化设计中就不得不要考虑寄存器个数问题;simd指令集有限,有些运算需要使用几种指令才能实现其运算。
此外,在北京君正芯片上,也存在直接使用C程序,速度比较慢的问题。
现有技术中的常用术语如下:
1、simd指令:单指令流多数据流,即一次运算指令可以执行多个数据流,这样可以提高程序的运算速度。更通俗理解,就是一种矢量(向量)的计算。不同芯片,具体指令集不同。
2、卷积核:卷积核是用来做图像处理时的矩阵,与原图像做运算的参数。卷积核通常是一个列矩阵数组成(例如3*3的矩阵),该区域上每个方格都有一个权重值。矩阵形状一般是1×1,3×3,5×5,7×7,1×3,3×1,2×2,1×5,5×1,……
3、卷积:将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结构就是该位置的新像素值,这个过程称为卷积。
4、特征图:输入数据通过卷积计算后得到的结果称之为特征图(或输出数据),数据通过全连接后生成的结果也称为特征图(或输出数据)。特征图大小一般表示为长×宽×深度,或1×深度。
发明内容
为了解决上述问题,本申请的目的在于:实现量化的simd优化,以及速度的提升。
具体地,本发明提供一种基于simd的低比特量化处理方法,所述方法中量化处理需要的数据输入参数,预处理数据sum,固定移位值max_precision,模型参数相乘数据mul,模型参数左移数据left_shift,模型参数右移数据right_shift,输出特征图比特位数bitw,所述方法包括以下步骤:
S1,卷积计算结果数据作为量化处理的输入数据sum,将输入数据sum转化为64比特整型数据,将mul转化为64比特整型数据,max_precision=15;
S2,sum与mul相乘得到的结果向右移位max_precision-left_shift;得到结果res1,res1为32比特整型数据,如公式所示:
res1=(sum×mul)>>(max_precision-left_shift);
S3,将res1向右移位right_shift,结果为res2,如公式所示:
res2=res1>>right_shift;
S4,res1对应的公式进行优化处理,如公式(1)所示:
res2=[(sum×(mul<<(left_shift+16))]>>(max_precision+16) (1);
将mul数据向左移16位,设为mul32,即
mul32=mul<<(left_shift+16) (2)
将max_precision+16,设为max_precision31,即
max_prcision31=max_precision+16,
max_precision31=31 (3)
其中max_precision31是向左移位的位数,这里是31位。由于存在一条simd指令sumv=ingenic_mulq_h(sumv,mulv);可以实现两个存放32位数据的寄存器相乘后再移位31位的操作,所以这里在向这个31位移位方向处理。
由(2)和(3)有
res2=[(sum×mul32)>>max_precision31] (4)
S5,对res2进行剪裁clip处理,得到结果res3;
S6,根据要求输出是有符号还是无符号,利用res3和bitw进行数据转化得到最终结果。
所述mul为16比特整型数据,left_shift和right_shift数据小于等于16。
由于根据步骤S2无法使用现有的指令实现其功能,需要使用更多的指令复合使用才能实现其功能,所以必须改变其传入的参数,在加载模型参数时,根据步骤S2,重新生成参数mul32,使其符合指令要求;同时,加载模型时,将模型的right_shift原始的16位数据转化为32比特整型数据;加载模型,是指将数据加载到转化后要求的mul32和right_shift数据组中。在步骤S2公式推导中,mul32和right_shift表示具体一个数,在这里表示一类数据,即数组。
所述simd算法设计包括,设加载mul32数据的寄存器为mulv,卷积累加数据sum的寄存器为sumv,加载right_shift数据的寄存器为shiftv;所述步骤S4进一步包括:
(1),加载mul32数据到寄存器mulv;
(2),使用simd指令进行运算实现公式(1)的计算;使用该指令,需要相乘后满足右移31移位,具体指令如下:
sumv=ingenic_mulq_h(sumv,mulv);
该指令实现两个寄存器相乘,相乘后的结果向右移位31位;
(3),使用带有银行家舍入法的移位指令运算
sumv=ingenic_srar_h(sumv,shiftv);
该指令是将sumv中数据按照对应的shiftv中的数据向右移位,并且移位后的结果具有银行舍入法;
所述步骤S5进一步包括,
(4),对sumv求最大值和最小值,也就是clip的处理;对大于2bitw-1,取2bitw-1,对于小于0的,取0;设寄存器v8_max中存储的是2bitw-1,这是最大值;寄存器v8_min中存储的是0,这是最小值;具体指令实现
sum_0=ingenic_maxs_h(sum_0,v8_min);
该指令实现sum_0和v8_min中取最大值,存放到sum_0中;
sum_0=ingenic_mins_h(sum_0,v8_max);
该指令实现sum_0和v8_max中取最小值,存放到sum_0中;
(5),重复以上步骤(1)-(4)即步骤S4、S5,获取四组sum_0数据,这里的sum_0是32位存放的8比特数据,sum_0中有4个数据,将四组sum_0数据即16个数据存放到寄存器sum_1中,sum_1中存放的是8比特数据共16个。
所述步骤S6中,根据具体需要,对结果进行有符号还是无符号的转化,如果是有符号,设v_8为2bitw-1,具体simd指令实现
sum_1=ingenic_sub_b(sum_1,v_8);
该指令实现sum_1与v8_8做差,存放到sum_1中。
所述方法是针对卷积累加和即卷积计算结果数据作为量化处理的输入数据sum为32比特整型数据,输出特征图比特位数为4~6比特的一种处理方法。
由此,本申请的优势在于:该方法是基于类似于北京君正T30、T31等T系列的simd指令集设计的一种优化方法。该方法适合矢量(向量)指令的运算。实现量化的simd优化,速度的提升。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。
图1是本发明方法的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
本申请实施例的优化方法是基于北京君正T30,T31等T系列的simd指令集设计的一种优化算法。该算法适合矢量(向量)指令的运算。其中,T30和T31的寄存器是128位寄存器,并且寄存器个数是有限的,这在优化设计中要考虑寄存器个数问题;simd指令集有限,有些运算需要使用几种指令才能实现其运算。具体地,本方法包括:
1、量化算法:
一般情况下,整型运算速度快于浮点运算,所以,使用整型运算。在卷积计算中,使用整型运算,计算出卷积累加和结果,再对卷积累加和结果进行量化处理,也就是相加一个数据,再相乘一个数据,然后再移位,最后通过clip处理,从而得到最终结果。这个过程就是量化的过程。这里是对卷积结果进行量化处理的方法。在低比特中,卷积累加和一般是16比特整型数据,这导致输入特征图的深度受到很大限制。防止卷积累加和溢出16比特整型数据,所以卷积累加和使用32比特整型数据。这里是针对卷积累加和为32比特,输出特征图比特位数为4~6比特的一种优化方法。
量化处理需要的数据输入参数,预处理数据sum,固定移位值max_precision,模型参数相乘数据mul,模型参数左移数据left_shift,模型参数右移数据right_shift,输出特征图比特位数bitw。mul为16比特整型数据,left_shift和right_shift数据小于等于16。
在这里是卷积计算出结果后,进行的量化处理。
如图1所示,本发明涉及一种基于simd的低比特量化处理方法,其实现方法如下:
S1,将输入数据sum转化为64比特整型数据,将mul转化为64比特整型数据(32比特整型数据与16比特整型数据相乘后结果可能超出32比特,所以将数据升到64比特整型数据),max_precision=15;
S2,sum与mul相乘得到的结果向右移位(max_precision-left_shift);得到结果res1,res1为32比特整型数据;
S3,将res1向右移位right_shift,结果为res2。
S4,res1对应的公式进行优化处理。
S5,对res2进行clip处理,得到结果res3。
S6,根据要求输出是有符号还是无符号,利用res3和bitw进行数据转化得到最终结果。
2、优化处理量化方法。
步骤S2中公式
res1=(sum×nul)>>(max_precision-left_shift),
res2=[sum×(mul<<(left_shift+16))]>>(max_precision+16)……(1)将mul数据向左移16位,设为mul32,
mul32=mul<<(left_shift+16)……(2)
将max_precision+16,设max_precision31,
max_precision31=max_precision+16,
max_precision31=31……(3)
其中max_precision31是向左移位的位数,这里是31位。由于存在一条simd指令sumv=ingenic_mulq_h(sumv,mulv);可以实现两个存放32位数据的寄存器相乘后再移位31位的操作,所以这里在向这个31位移位方向处理。
由(2)和(3)有
res2=[(sum×mul32)>>max_precision31]……(4)
S5,对res2进行剪裁clip处理,得到结果res3;
由于根据步骤S2无法使用现有的指令,实现其功能,需要使用更多的指令复合使用,才能实现其功能,所以必须改变其传入的参数,在加载模型参数时进行处理,使其符合指令要求。同时,加载模型时,将模型的right_shift数据进行转化为32比特整型数据。加载模型,是指将数据加载到mul32,right_shift数据组中。
simd算法设计如下:
设加载mul32数据的寄存器为mulv,卷积累加和sum的寄存器为sumv,加载right_shift数据的寄存器为shiftv。
所述步骤S4进一步包括:
(1)加载mul32数据到寄存器mulv;
(2)使用simd指令进行运算实现公式(1)的计算。使用该指令,需要相乘后满足右移31移位。具体指令如下:
sumv=ingenic_mulq_h(sumv,mulv);
该指令实现两个寄存器相乘,相乘后的结果向右移位31位。
(3)使用带有银行家舍入法的移位指令运算
sumv=ingenic_srar_h(sumv,shiftv);
该指令是将sumv中数据按照对应的shiftv中的数据向右移位,并且移位后的结果具有银行舍入法。
所述步骤S5进一步包括:
(4)对sumv求最大值和最小值,也就是clip的处理。对大于2bitw-1,取2bitw-1,对于小于0的,取0。设寄存器v8_max中存储的是2bitw-1,寄存器v8_min中存储的是0。具体指令实现
sum_0=ingenic_maxs_h(sum_0,v8_min);
该指令实现sum_0和v8_min中取最大值,存放到sum_0中。
sum_0=ingenic_mins_h(sum_0,v8_max);
该指令实现sum_0和v8_max中取最小值,存放到sum_0中。
(5)重复上述步骤(1)-(4)获取四组sum_0数据,这里的sum_0是32位存放的8比特数据,sum_0中有4个数据,将四组sum_0数据存放到寄存器sum_1中,sum_1中存放的是8比特数据共16个。
所述步骤S6进一步包括:
(6)根据具体需要,对结果进行有符号还是无符号的转化。如果是有符号,设v_8为2bitw-1,具体指令实现
sum_1=ingenic_sub_b(sum_1,v_8);
该指令实现sum_1与v8_8做差,存放到sum_1中。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于simd的低比特量化处理方法,其特征在于,所述方法中量化处理需要的数据输入参数,预处理数据sum,固定移位值max_precision,模型参数相乘数据mul,模型参数左移数据left_shift,模型参数右移数据right_shift,输出特征图比特位数bitw,所述方法包括以下步骤:
S1,卷积计算结果数据作为量化处理的输入数据sum,将输入数据sum转化为64比特整型数据,将mul转化为64比特整型数据,max_precision=15;
S2,sum与mul相乘得到的结果向右移位max_precision-left_shift;得到结果res1,res1为32比特整型数据,如公式所示:
res1=(sum×mul)>>(max_precision-left_shift);
S3,将res1向右移位right_shift,结果为res2,如公式所示:
res2=res1>>right_shift;
S4,res1对应的公式进行优化处理,如公式(1)所示:
res2=[(sum×(mul)<<(left_shift+16))]>>(max_precision+16) (1);
将mul数据向左移16位,设为mul32,即
mul32=mul<<(left_shift+16) (2)
将max_precision+16,设为max_precision31,即
max_prcision31=max_precision+16,
max_precision31=31 (3)
其中max_precision31是向左移位的位数,这里是31位;由于存在一条simd指令sumv=ingenic_mulq_h(sumv,mulv);能够实现两个存放32位数据的寄存器相乘后再移位31位的操作,所以这里在向这个31位移位方向处理;
由(2)和(3)有
res2=[(sum×mul32)>>max_precision31] (4)
S5,对res2进行剪裁clip处理,大于255的为255,小于0的为0,中间结果不变,得到结果res3;
S6,根据要求输出是有符号还是无符号,利用res3和bitw进行数据转化得到最终结果。
2.根据权利要求1所述的一种基于simd的低比特量化处理方法,其特征在于,所述mul为16比特整型数据,left_shift和right_shift数据小于等于16。
3.根据权利要求1所述的一种基于simd的低比特量化处理方法,其特征在于,由于根据步骤S2无法使用现有的指令实现其功能,需要使用更多的指令复合使用才能实现其功能,所以必须改变其传入的参数,在加载模型参数时,根据步骤S2,重新生成参数mul32,使其符合指令要求;同时,加载模型时,将模型的right_shift数据进行转化为32比特整型数据;加载模型,是指将数据加载到转化后要求的mul32和right_shift数据组中;在步骤S2公式推导中,mul32和right_shift表示具体一个数,在这里表示一类数据,即数组。
4.根据权利要求3所述的一种基于simd的低比特量化处理方法,其特征在于,所述simd的算法设计包括,设加载mul32数据的寄存器为mulv,卷积累加的寄存器为sumv,加载right_shift数据的寄存器为shiftv;
所述步骤S4进一步包括:
(1),加载mul32数据到寄存器mulv;
(2),使用simd指令进行运算实现公式(1)的计算;使用该指令,需要相乘后满足右移31移位,具体指令如下:
sumv=ingenic_mulq_h(sumv,mulv);
该指令实现两个寄存器相乘,相乘后的结果向右移位31位;
(3),使用带有银行家舍入法的移位指令运算
sumv=ingenic_srar_h(sumv,shiftv);
该指令是将sumv中数据按照对应的shiftv中的数据向右移位,并且移位后的结果具有银行舍入法;
所述步骤S5进一步包括,
(4),对sumv求最大值和最小值,也就是clip的处理;对大于2bitw-1,取2bitw-1,对于小于0的,取0,bitws是位宽,其取值范围为4~6,如果生成数据是8比特,bitw=8;设寄存器v8_max中存储的是2bitw-1,这是最大值;寄存器v8_min中存储的是0,这是最小值;具体指令实现sum_0=ingenic_maxs_h(sum_0,v8_min);
该指令实现sum_0和v8_min中取最大值,存放到sum_0中;
sum_0=ingenic_mins_h(sum_0,v8_max);
该指令实现sum_0和v8_max中取最小值,存放到sum_0中;
(5),重复以上步骤(1)-(4)即步骤S4、S5,获取四组sum_0数据,这里的sum_0是32位存放的8比特数据,sum_0中有4个数据,将四组sum_0数据即16个数据存放到寄存器sum_1中,sum_1中存放的是8比特数据共16个。
5.根据权利要求4所述的一种基于simd的低比特量化处理方法,其特征在于,所述步骤S6中,根据具体需要,对结果进行有符号还是无符号的转化,如果是有符号,设v_8为2bitw-1,具体simd指令实现sum_1=ingenic_sub_b(sum_1,v_8);
该指令实现sum_1与v8_8做差,存放到sum_1中。
6.根据权利要求1所述的一种基于simd的低比特量化处理方法,其特征在于,所述方法是针对卷积累加和即卷积计算结果数据作为量化处理的输入数据sum为32比特整型数据,输出特征图比特位数为4~6比特的一种处理方法。
CN202210876520.3A 2022-07-25 2022-07-25 一种基于simd的低比特量化处理方法 Pending CN117492839A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210876520.3A CN117492839A (zh) 2022-07-25 2022-07-25 一种基于simd的低比特量化处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210876520.3A CN117492839A (zh) 2022-07-25 2022-07-25 一种基于simd的低比特量化处理方法

Publications (1)

Publication Number Publication Date
CN117492839A true CN117492839A (zh) 2024-02-02

Family

ID=89683479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210876520.3A Pending CN117492839A (zh) 2022-07-25 2022-07-25 一种基于simd的低比特量化处理方法

Country Status (1)

Country Link
CN (1) CN117492839A (zh)

Similar Documents

Publication Publication Date Title
US5506799A (en) Booth array multiplying circuit having carry correction
US8024551B2 (en) Pipelined digital signal processor
US6601077B1 (en) DSP unit for multi-level global accumulation
US10776078B1 (en) Multimodal multiplier systems and methods
JPH0613914A (ja) 乗算不要の離散的コサイン変換方式および装置
CN110826685A (zh) 神经网络卷积计算的方法和装置
US5517437A (en) Alpha blending calculator
US6370556B1 (en) Method and arrangement in a transposed digital FIR filter for multiplying a binary input signal with tap coefficients and a method for designing a transposed digital filter
JPH0520030A (ja) 跳躍配列と修正形ワラストリーとを使用する並列乗算器
US6675286B1 (en) Multimedia instruction set for wide data paths
CN1218240C (zh) 数据处理设备及其数据处理方法
CN117492839A (zh) 一种基于simd的低比特量化处理方法
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
US6983298B2 (en) Method and apparatus for linear interpolation using gradient tables
US5685008A (en) Computer Processor utilizing logarithmic conversion and method of use thereof
CN113780545A (zh) 神经网络激活函数的通用拟合方法及装置
US5696986A (en) Computer processor utilizing logarithmic conversion and method of use thereof
WO2022150058A1 (en) Numerical precision in digital multiplier circuitry
JP6863907B2 (ja) 演算回路
JP2645422B2 (ja) 浮動小数点演算処理装置
WO2024108934A1 (zh) 乘加和的确定方法、装置、电子设备及存储介质
CN111610955B (zh) 一种数据饱和加打包处理部件、芯片及设备
WO2023078364A1 (zh) 矩阵乘法的运算方法及装置
US20230176819A1 (en) Pipelined processing of polynomial computation
WO2022198685A1 (en) Reduced approximation sharing-based single-input multi-weights multiplier

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