CN115796239B - Ai算法架构的实现装置、卷积计算装置及相关方法与设备 - Google Patents
Ai算法架构的实现装置、卷积计算装置及相关方法与设备 Download PDFInfo
- Publication number
- CN115796239B CN115796239B CN202211605320.0A CN202211605320A CN115796239B CN 115796239 B CN115796239 B CN 115796239B CN 202211605320 A CN202211605320 A CN 202211605320A CN 115796239 B CN115796239 B CN 115796239B
- Authority
- CN
- China
- Prior art keywords
- mask
- data
- weight
- bit
- value
- 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 abstract description 23
- 238000007781 pre-processing Methods 0.000 claims abstract description 23
- 230000005540 biological transmission Effects 0.000 claims description 37
- 238000006243 chemical reaction Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 5
- 229910010293 ceramic material Inorganic materials 0.000 abstract 1
- 238000013473 artificial intelligence Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 230000015654 memory Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000003672 processing method Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供了一种AI算法架构的实现装置、卷积计算装置及相关方法与设备,AI算法架构的实现装置包括:权重预处理单元,用于将权重掩码转换为两个3bit的权重掩码mask_l和mask_h,且两个权重掩码中均最多有1bit的1;卷积计算装置,包括数据选择器,用于根据两个权重掩码从4个待选数据中选出2个目标。本申请可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择(即从3个数据中选择一个数据)的逻辑,由于2个C31数据选择的逻辑复杂度小于C42(即从4个数据中选择一个数据)的逻辑,因此简化了稀疏卷积中的数据选择逻辑,降低了稀疏数据选择电路关键路径上的延时。
Description
技术领域
本申请涉及处理器技术领域,具体而言,涉及一种AI算法架构的实现装置、卷积计算装置及相关方法与设备。
背景技术
为了降低权重内存开销,降低计算开销和提升推理效率,AI(ArtificialIntelligence,人工智能)算法中通过压缩模型(如模型剪枝)等方法降低weight(权重数据)中参数值的数量。因此AI算法中存在大量的sparsity Convolution(稀疏卷积)运算。稀疏卷积运算普遍采用的压缩算法为sparsity4:2压缩,即每2个weight有4bits index(权重掩码),每4bits权重掩码指示卷积运算时从4个数据中选择2个有效的数据和权重数据进行卷积运算,参与运算的数据减少一半达到降低计算开销和提升推理效率的目的。
目前,在采用sparsity4:2算法进行数据选择时,常规的方式是基于4bit的权重掩码,按照下述逻辑从4个数据(假设为data3、data2、data1、data0)中选择出两个目标数据data_1和data_h:
data_1=mask[0]?data0:
mask[1:0]==2?data1:
mask[2:0]==4?data2:0;
data_h=mask[3]?data3:
mask[3:2]==1?data2:
mask[3:1]==1?data1:0。
其中,mask为4bits的权重掩码。data_1的选择逻辑为:先判断mask[0]是否为真,若为真,则data_1取data0,若不为真,判断mask[1:0]是否等于2,若等于,data_1取data1,若不等于,则判断mask[2:0]是否等于4,若等于,data_1取data2,若不等于,则data_1取0。data_h的选择逻辑为:先判断mask[3]是否为真,若为真,则data_h取data3,若不为真,判断mask[3:2]是否等于1,若等于,data_h取data2,若不等于,则判断mask[3:1]是否等于1,若等于,data_h取data1,若不等于,则data_h取0。
从上述逻辑中可以看出,常规方式需要依次进行多次“==”判断,逻辑较为复杂,电路执行上述逻辑时数据选择效率较低。
发明内容
本申请实施例的目的在于提供一种AI算法架构的实现装置、卷积计算装置及相关方法与设备,用以提高数据选择过程中的数据选择效率。
本申请实施例提供了一种数据处理方法,包括:将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据。
在上述实现方式中,通过将权重掩码转换成2个3bits的权重掩码,且使得每个3bits的权重掩码中最多仅有一个bit的数值为1,这就可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择(即从3个数据中选择一个数据)的逻辑,由于C31数据选择的逻辑复杂度远小于C42(即从4个数据中选择一个数据)的逻辑,因此可以简化稀疏卷积中的数据选择逻辑,降低稀疏数据选择电路关键路径上的延时,提高数据选择效率。
进一步地,所述mask_l为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};所述mask_h为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
在上述实现过程中,通过上述方式得到的mask_l和mask_h,可以保证mask_l和mask_h中最多一个bit的值为1,从而保证数据选择效果。
进一步的,根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据,包括:将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
在上述实现方式中,通过mask_l和mask_h的每一位数据分别与不同待选数据进行与运算,然后进行或运算,这样,由于mask_l和mask_h中仅有一位数据为1,因此运算后得到的值必然为0或者为某一个待选数据,从而实现对于目标数据有效选取。
进一步的,在根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据之前,所述方法还包括:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;若所述第一权重数据的值为0,则将所述mask_l修改为0;若所述第二权重数据的值为0,则将所述mask_h修改为0。
如前文所述,在采用sparsity4:2算法进行数据选择时,每2个weight(权重数据)有一个4bits的权重掩码,可以从4个待选数据中选出两个目标数据,分别与两个权重数据进行卷积运算。因此,两个权重数据与两个目标数据之间有对应关系。而由于本申请中两个目标数据是分别基于mask_l和mask_h选出的,因此两个权重数据与mask_l和mask_h也就具有了对应关系。此外,由于权重数据为0时,其进行卷积运算的结果也必然为0。基于此,在上述实现过程中,在任一权重数据为0时,即将其对应的3bit的权重掩码修改为0,这就使得后续选择时可以直接将目标数据赋值为0,从而同样保证卷积运算的结果为0,减少选择过程中的运算开销,提高选择效率。
进一步的,将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h,包括:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;根据所述第一权重数据和第二权重数据的判断结果,将所述权重掩码转换所述mask_l和所述mask_h。
在上述实现过程中,通过先判断第一权重数据和第二权重数据中,是否存在值为0的权重数据,进而根据第一权重数据和第二权重数据的判断结果确定mask_l和mask_h,这就可以避免在对mask_l和mask_h赋值后再修改,从而进一步降低运算开销。
进一步的,根据所述第一权重数据和第二权重数据的判断结果,将所述权重掩码转换所述mask_l和所述mask_h,包括:若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
在上述实现过程中,任一权重数据为0时,即将其对应的3bit的权重掩码修改为0,这就使得后续选择时可以直接将目标数据赋值为0,从而同样保证卷积运算的结果为0,减少选择过程中的运算开销,提高选择效率。
本申请实施例还提供了一种AI算法架构的实现装置,包括:权重预处理单元,用于将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;卷积计算装置,包括数据选择器,所述数据选择器用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据。
在上述AI算法架构的实现装置中,通过权重预处理单元将权重掩码转换成2个3bits的权重掩码,且使得每个3bits的权重掩码中最多仅有一个bit的数值为1,这就可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择(即从3个数据中选择一个数据)的逻辑,由于C31数据选择的逻辑复杂度远小于C42(即从4个数据中选择一个数据)的逻辑,因此可以简化数据选择逻辑,提高数据选择效率。同时,由于权重掩码是在进入卷积计算装置之前就被转换成了2个3bits的权重掩码,从而无需在每一个卷积计算装置内单独进行权重掩码的转换,利于节约AI算法架构的实现装置的运算开销。
进一步的,所述mask_l为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};所述mask_h为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
进一步的,所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
进一步的,所述权重预处理单元还用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;若所述第一权重数据的值为0,则将所述mask_l修改为0;若所述第二权重数据的值为0,则将所述mask_h修改为0。
进一步的,所述权重预处理单元具体用于:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;根据所述第一权重数据和第二权重数据的判断结果,将所述权重掩码转换所述mask_l和所述mask_h。
进一步的,所述权重预处理单元具体用于:若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
本申请实施例还提供了一种卷积计算装置,包括:权重传输子单元,用于接收权重掩码;数据传输子单元,用于接收待选数据;掩码转换单元,与所述权重传输子单元连接,用于将所述权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;数据选择器,分别与所述数据传输子单元和所述掩码转换单元连接,用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据。
在上述卷积计算装置中,通过掩码转换单元将权重掩码转换成2个3bits的权重掩码,且使得每个3bits的权重掩码中最多仅有一个bit的数值为1,这就可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择的逻辑,由于C31数据选择的逻辑复杂度远小于C42的逻辑,因此可以简化数据选择逻辑,提高数据选择效率。同时,由于权重掩码是由卷积计算装置内的掩码转换单元进行转换的,因此可以无需增大权重传输子单元的面积(若权重传输子单元接收到的是两个3bits的权重掩码,那么在设计时,需要将权重传输子单元面积增大为可以至少存入6bits数据的面积大小,而在上述实现结构中,权重传输子单元面积只需满足至少可以存入4bits数据即可),从而当卷积计算装置设置到AI算法架构的实现装置中后,可以提高AI算法架构的实现装置的面积表现。
进一步的,所述mask_l为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};所述mask_h为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
进一步的,所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
进一步的,所述掩码转换单元还用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;若所述第一权重数据的值为0,则将所述mask_l修改为0;若所述第二权重数据的值为0,则将所述mask_h修改为0。
进一步的,所述掩码转换单元具体用于:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;根据所述第一权重数据和第二权重数据的判断结果,将所述权重掩码转换所述mask_l和所述mask_h。
进一步的,所述掩码转换单元具体用于:
若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;
若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;
若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0。
本申请实施例还提供了一种AI算法架构的实现装置,包括多个上述卷积计算装置。
本申请实施例还提供了一种处理器,包括上述任一种的AI算法架构的实现装置。
本申请实施例还提供了一种电子部件,包括上述的处理器。
本申请实施例还提供了一种电子设备,包括上述的电子部件。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例二提供的一种卷积计算装置的结构示意图;
图3为本申请实施例二提供的一种更具体的卷积计算装置的结构示意图;
图4为本申请实施例三提供的一种AI算法架构的实现装置的结构示意图;
图5为本申请实施例三提供的一种更具体的AI算法架构的实现装置的结构示意图;
图6为本申请实施例提供的另一种更具体的卷积计算装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。可以理解,以下各实施例之间可以相互自由结合或不结合,本申请对此不作限制。
实施例一:
为了解决现有技术存在的问题,本申请实施例中提供了一种数据处理方法,可以参见图1所示,包括:
S101:将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h。
在本申请实施例中,权重掩码为4bit大小。在拆分成两个3bit的权重掩码mask_l和mask_h时,mask_l和mask_h中均最多有1个bit的数值为1。
S102:根据mask_l和mask_h从4个待选数据中,选出2个目标数据。
示例性的,为了保证mask_l和mask_h中均仅有1个bit的数值为1,mask_l可以为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};mask_h可以为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&!表征与非运算。
进行选择时,可以将mask_l的第0位数据与第一个子数据进行与运算,将mask_l的第1位数据与第二个子数据进行与运算,将mask_l的第2位数据与第三个子数据进行与运算,将三次与运算的值进行或运算,得到第一个目标子数据;将mask_h的第0位数据与第二个子数据进行与运算,将mask_h的第1位数据与第三个子数据进行与运算,将mask_h的第2位数据与第四个子数据进行与运算,将三次与运算的值进行或运算,得到第二个目标子数据。
示例性的,选取逻辑可以通过如下公式体现(data_1和data_h为目标子数据):
data_1=({4{mask_l[0]}}&data0)|
({4{mask_l[1]}}&data1)|
({4{mask_l[2]}}&data2);
data_h=({4{mask_h[0]}}&data1)|
({4{mask_h[1]}}&data2)|
({4{mask_h[2]}}&data3);
其中,{4{mask[x]}}表征将mask[x]复制4份,得到4bit的数据{mask[x],mask[x],mask[x],mask[x]},x为0、1、2。&表征与运算,|表征或运算。
可见,本申请实施例中将4bits的权重掩码译码成2个3bits的权重掩码后,可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行数据选择的3级门逻辑,从而简化了数据选择逻辑,降低了稀疏数据选择电路上的延时,提高了数据选择效率。
可选的,考虑到在采用sparsity4:2算法进行数据选择时,每2个权重数据有一个4bits的权重掩码,可以从4个待选数据中选出两个目标数据,分别与两个权重数据进行卷积运算。因此,两个权重数据与两个目标数据之间有对应关系。而由于本申请中两个目标数据是分别基于mask_l和mask_h选出的,因此两个权重数据与mask_l和mask_h也就具有了对应关系。此外,由于权重数据为0时,其进行卷积运算的结果也必然为0,因此在权重数据为0时,该权重数据对应的目标数据其实并不存在选择的必要,因为卷积运算的结果必然为0。基于此,在本申请实施例中,可以将值为0的权重数据所对应的3bits的权重掩码设置为0,从而使得后续选择时可以直接将目标数据赋值为0,减少选择过程中的运算开销,避免了将无效的目标数据送到后级乘法单元执行的0*data的乘法运算,降低了卷积计算中乘法器资源的无效翻转功耗。
在一种可行实施方式中,可以在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,在根据mask_l和mask_h从4个待选数据中选出2个目标数据之前,先判断第一权重数据和第二权重数据中是否存在值为0的权重数据;若第一权重数据的值为0,则将mask_l修改为0;若第二权重数据的值为0,则将mask_h修改为0;若第一权重数据和第二权重数据的值均不为0,则不进行mask_l和mask_h的修改,此时mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
可以理解,在本申请实施例中,第一权重数据为与根据mask_l选出的目标数据相对应的权重数据,第二权重数据为与根据mask_h选出的目标数据相对应的权重数据。
而在另一种可行实施方式中,可以在执行步骤S101时,就判断第一权重数据和第二权重数据中,是否存在值为0的权重数据,进而根据第一权重数据和第二权重数据的判断结果,将权重掩码转换mask_l和mask_h。
示例性的,若第一权重数据和第二权重数据的值均为0,则可以设置mask_l和mask_h均为0;
若第一权重数据的值为0,第二权重数据的值不为0,则可以设置mask_l为0,mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
若第一权重数据的值不为0,第二权重数据的值为0,则可以设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为0;
若第一权重数据和第二权重数据的值均不为0,则可以设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
可以理解的是,对于mask_l为0的情况,可以仍旧按照以下公式确定出第一个目标数据:
data_1=({4{mask_l[0]}}&data0)|
({4{mask_l[1]}}&data1)|
({4{mask_l[2]}}&data2);
此时可以计算得到目标数据data_1为0。
但是,对于mask_l为0的情况,也可以通过判断电路直接将data_1赋值为0,对此本申请实施例不作限制。
类似的,对于mask_h为0的情况,可以仍旧按照以下公式确定出第二个目标数据:
data_h=({4{mask_h[0]}}&data1)|
({4{mask_h[1]}}&data2)|
({4{mask_h[2]}}&data3);
此时可以计算得到目标数据data_h为0。
但是,对于mask_h为0的情况,也可以通过判断电路直接将data_h赋值为0,对此本申请实施例也不作限制。
通过本申请实施例的方案,可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择的逻辑,由于C31数据选择的逻辑复杂度远小于C42的逻辑,因此可以简化数据选择逻辑,提高数据选择效率。且通过本申请实施例的方案,对于权重数据值为0的情况,该权重数据对应的3bits的权重掩码可设置为0,经过数据选择单元输出的目标数据为0,避免了将无效的目标数据送到后级乘法单元执行的0*data的乘法运算,降低了卷积计算中乘法器资源的无效翻转功耗。
可以理解,在本申请实施例中,待选数据为芯片使用过程中需要参与卷积运算的数据。待选数据可以为对图像、音频、通信数据、频谱信息等转换为二进制数后得到的数据。本申请实施例可应用于AI训练、金融、高精度计算、智能驾驶、安防、通信、频谱测量、智能推理等领域中的一个或多个领域。
实施例二
基于同一发明构思,本申请实施例中还提供了一种可用于实现上述数据处理方法的卷积计算装置。可以理解,卷积计算装置是处理器中用于实现卷积计算的基本硬件单元,通过大量卷积计算装置的排布,可以满足AI算法的各项数据运算需求。
可参见图2所示,图2示出了本实施例提供的卷积计算装置的基本结构,包括:权重传输子单元、数据传输子单元、掩码转换单元和数据选择器(可以理解,权重传输子单元、数据传输子单元、掩码转换单元与数据选择器一样,均为硬件单元)。其中:
权重传输子单元,用于接收权重掩码、第一权重数据和第二权重数据。
数据传输子单元,用于接收待选数据。
掩码转换单元,与权重传输子单元连接,用于将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:mask_l和mask_h中均最多有1个bit的数值为1。
数据选择器,分别与数据传输子单元和掩码转换单元连接,用于根据mask_l和mask_h从4个待选数据中,选出2个目标数据。
与方法实施例部分(即实施例一)类似,在一种可行的实施方式中,mask_l可以为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};mask_h可以为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
在该可行的实施方式中,数据选择器具体用于,将mask_l的第0位数据与第一个待选数据进行与运算,将mask_l的第1位数据与第二个待选数据进行与运算,将mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个目标数据;将mask_h的第0位数据与第二个待选数据进行与运算,将mask_l的第1位数据与第三个待选数据进行与运算,将mask_l的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个目标数据。
而在另一种可行的实施方式中,权重传输子单元还可以用于接收第一权重数据和第二权重数据。第一权重数据为与根据mask_l选出的目标数据相对应的权重数据,第二权重数据为与根据mask_h选出的目标数据相对应的权重数据。
掩码转换单元还可以用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;若第一权重数据的值为0,则将mask_l修改为0;若第二权重数据的值为0,则将mask_h修改为0。
此时,数据选择器可以继续按照前述逻辑进行运算,得到两个目标数据。
而在又一种可行的实施方式中,掩码转换单元可以具体用于:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据。根据第一权重数据和第二权重数据的判断结果,将权重掩码转换mask_l和mask_h。
示例性的,掩码转换单元可以具体用于:若第一权重数据和第二权重数据的值均为0,则设置mask_l和mask_h均为0;若第一权重数据的值为0,第二权重数据的值不为0,则设置mask_l为0,mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};若第一权重数据的值不为0,第二权重数据的值为0,则设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为0;若第一权重数据和第二权重数据的值均不为0,则设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
类似的,此时,数据选择器可以继续按照前述逻辑进行运算,得到两个目标数据。
可以理解,上述卷积计算装置中还可以具有其他的部件,例如图3所示,还可以具有权重执行子单元以及卷积运算电路。其中,权重执行子单元连接于权重传输子单元与掩码转换单元和卷积运算电路之间,用于将权重数据传输给卷积运算电路,将权重数据和权重掩码传输给掩码转换单元。
基于同一发明构思,本申请实施例中还提供了一种AI算法架构的实现装置,包括多个本实施例提供的卷积计算装置。
示例性的,在AI算法架构的实现装置中,多个卷积计算装置之间可以相连形成卷积计算装置,而多个卷积计算链可以相互连接,形成AI运算阵列。
示例性的,在AI算法架构的实现装置中还可以具有其他的部件,例如还可以具有存储单元、访存控制单元等部件。其中:存储单元用于存储待选数据和权重数据。访存控制单元用于从存储单元获取权重数据和待选数据并传输给各卷积计算装置。
可以理解,在本申请实施例中,权重传输子单元、权重执行子单元、数据传输子单元可以采用寄存器实现,但不作为限制。本申请实施例中,卷积运算电路可以采用各类已有的可以实现卷积运算的电路实现。本申请实施例中,掩码转换单元可以采用逻辑门电路实现,逻辑门电路的具体电路结构可以按照前述mask_l和mask_h的取值逻辑设置,对此本申请实施例中不做限制。
可以理解,在本申请实施例中,存储单元可以采用各类存储器实现,例如可以采用SPM(Scratch Pad Memory,记事本存储器)来实现,而访存控制单元则可以采用各类数据读取电路、访存控制电路实现,但也不作为限制。
可以理解,出于描述简洁性考虑,部分实施例一中描述过的内容,在本实施例中不再赘述。
基于本实施例提供的方案,可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择的逻辑,由于C31数据选择的逻辑复杂度远小于C42的逻辑,因此可以简化数据选择逻辑,提高数据选择效率。同时,由于权重掩码是由卷积计算装置内的掩码转换单元进行转换的,因此可以无需增大权重传输子单元的面积(若权重传输子单元接收到的是两个3bits的权重掩码,那么在设计时,需要将权重传输子单元面积增大为可以至少存入6bits数据的面积大小,而本实施例中,权重传输子单元面积只需满足至少可以存入4bits数据即可),从而当卷积计算装置设置到AI算法架构的实现装置中后,可以提高AI算法架构的实现装置的面积表现。
实施例三
基于同一发明构思,本申请实施例中还提供了另一种可用于实现上述数据处理方法的AI算法架构的实现装置。参见图4所示,包括权重预处理单元和卷积计算装置。卷积计算装置包括数据选择器。可以理解,在本实施例中,卷积计算装置的结构可以如图6所示,卷积计算装置内可以不具有掩码转换单元。其中:
权重预处理单元用于将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h。mask_l和mask_h中均最多有1个bit的数值为1。
数据选择器用于根据mask_l和mask_h从4个待选数据中,选出2个目标数据。
与方法实施例部分(即实施例一)类似,在一种可行的实施方式中,mask_l可以为:{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};mask_h可以为:{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
在该可行的实施方式中,数据选择器具体用于,将mask_l的第0位数据与第一个待选数据进行与运算,将mask_l的第1位数据与第二个待选数据进行与运算,将mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个目标数据;将mask_h的第0位数据与第二个待选数据进行与运算,将mask_l的第1位数据与第三个待选数据进行与运算,将mask_l的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个目标数据。
而在另一种可行的实施方式中,权重预处理单元在获取权重掩码的同时,还可以获取第一权重数据和第二权重数据。第一权重数据为与根据mask_l选出的目标数据相对应的权重数据,第二权重数据为与根据mask_h选出的目标数据相对应的权重数据。
权重预处理单元还可以用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;若第一权重数据的值为0,则将mask_l修改为0;若第二权重数据的值为0,则将mask_h修改为0。
此时,数据选择器可以继续按照前述逻辑进行运算,得到两个目标数据。
而在又一种可行的实施方式中,权重预处理单元可以具体用于:判断第一权重数据和第二权重数据中,是否存在值为0的权重数据。根据第一权重数据和第二权重数据的判断结果,将权重掩码转换mask_l和mask_h。
示例性的,权重预处理单元可以具体用于:若第一权重数据和第二权重数据的值均为0,则设置mask_l和mask_h均为0;若第一权重数据的值为0,第二权重数据的值不为0,则设置mask_l为0,mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};若第一权重数据的值不为0,第二权重数据的值为0,则设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为0;若第一权重数据和第二权重数据的值均不为0,则设置mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)}。
类似的,此时,数据选择器可以继续按照前述逻辑进行运算,得到两个目标数据。
可以理解,上述卷积计算装置与实施例二的卷积计算装置相比,除不具有掩码转换单元外,其他部分可以与实施例二的卷积计算装置一致。此时,权重预处理单元可以与卷积计算装置的权重传输子单元连接,从而通过权重传输子单元实现第一权重数据、第二权重数据、mask_l和mask_h到数据选择器的传输。权重预处理单元为硬件单元,其可以采用逻辑门电路实现,逻辑门电路的具体电路结构可以按照前述mask_l和mask_h的取值逻辑设置。
还可以理解,在AI算法架构的实现装置中卷积计算装置数量可以为多个,多个卷积计算装置之间可以相连形成卷积计算装置,而多个卷积计算链可以相互连接,形成AI运算阵列。
还可以理解,在AI算法架构的实现装置中还可以具有其他的部件,例如图5所示,还可以具有存储单元、访存控制单元、数据预处理单元等部件,但不作为限制。其中,存储单元、访存控制单元的功能可参见实施例二的记载,数据预处理单元则可以用于对从存储单元获取的数据进行诸如稀疏等预处理操作,可采用芯片内已有的实现数据预处理的电路实现,不作为限制。
基于本实施例提供的方案,可以将spasity4:2的数据选择逻辑优化成两个基于3bits的权重掩码进行C31数据选择的逻辑,由于C31数据选择的逻辑复杂度远小于C42的逻辑,因此可以简化数据选择逻辑,提高数据选择效率。同时,由于权重掩码是在进入各卷积计算装置之前就被转换成了2个3bits的权重掩码,从而无需在每一个卷积计算装置内单独进行权重掩码的转换,利于节约AI算法架构的实现装置的运算开销。
可以理解,出于描述简洁性考虑,部分实施例一中描述过的内容,在本实施例中不再赘述。
还可以理解,在实施例一、实施例二和实施例三中,待选数据为已稀疏过的数据(后文称稀疏数据)。因此,若存储单元中存储的本身就是稀疏数据,则可以直接采用本申请各实施例所提供的方案实现数据选择。若存储单元中存储的是未稀疏过的dense(密集)数据,则可以通过数据预处理单元先对dense数据进行稀疏。dense数据的稀疏方法可以为但不限于:根据数据类型在每2个dense数据中插入2个相同数据类型宽度的0,将dense数据扩展成2倍宽度的稀疏数据。
实施例四
基于同一发明构思,本申请实施例中还提供了一种处理器,该处理器中包括实施例二或实施例三中提供的AI算法架构的实现装置。
需要说明的是,本申请实施例提供的处理器可以是GPU(Graphic ProcessingUnit,图形处理器)、CPU(Central Processing Unit,中央处理器)、AI处理器等可以布设上述AI算法架构的实现装置,实现AI运算的处理器。
本申请实施例中还提供了一种电子部件,该电子部件中包括有前述的处理器。
可选的,该电子部件可以是诸如边缘处理盒子、可独立生产的控制器等可以实现AI运算的部件。
本申请实施例中还提供了一种电子设备,该电子设备中包括有前述的处理器或者包括有前述的电子部件。
可选的,该电子设备可以是诸如电脑、手机、服务器等设备,但不作为限制。
在本申请所提供的实施例中,应该理解到,所揭露方法或装置,可以通过其它的方式实现。以上所描述的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另一点,所显示或讨论的相互之间的连接可以是通过一些接口电性连接的。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本文中,多个是指两个或两个以上,“/”是指或的关系。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种AI算法架构的实现装置,其特征在于,包括:
权重预处理单元,用于将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;
卷积计算装置,包括数据选择器,所述数据选择器用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据;
所述mask_l={mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};
所述mask_h={mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
2.如权利要求1所述的AI算法架构的实现装置,其特征在于,
所述权重预处理单元还用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;若所述第一权重数据的值为0,则将所述mask_l修改为0;若所述第二权重数据的值为0,则将所述mask_h修改为0。
3.一种AI算法架构的实现装置,其特征在于,包括:
权重预处理单元,用于将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;
卷积计算装置,包括数据选择器,所述数据选择器用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据;
所述权重预处理单元具体用于:
判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;
若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;
若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;
若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
4.一种卷积计算装置,其特征在于,包括:
权重传输子单元,用于接收权重掩码、第一权重数据和第二权重数据;
数据传输子单元,用于接收待选数据;
掩码转换单元,与所述权重传输子单元连接,用于将所述权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;
数据选择器,分别与所述数据传输子单元和所述掩码转换单元连接,用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据;
所述mask_l={mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};
所述mask_h={mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
5.如权利要求4所述的卷积计算装置,其特征在于,
所述掩码转换单元还用于在将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h之后,判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;若所述第一权重数据的值为0,则将所述mask_l修改为0;若所述第二权重数据的值为0,则将所述mask_h修改为0。
6.一种卷积计算装置,其特征在于,包括:
权重传输子单元,用于接收权重掩码、第一权重数据和第二权重数据;
数据传输子单元,用于接收待选数据;
掩码转换单元,与所述权重传输子单元连接,用于将所述权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;
数据选择器,分别与所述数据传输子单元和所述掩码转换单元连接,用于根据所述mask_l和所述mask_h从4个待选数据中,选出2个目标数据;
所述掩码转换单元具体用于:
判断第一权重数据和第二权重数据中,是否存在值为0的权重数据;所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;
若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;
若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;
若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
所述数据选择器具体用于,将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个所述目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个所述目标数据。
7.一种数据处理方法,其特征在于,包括:
将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;其中:所述mask_l和所述mask_h中均最多有1个bit的数值为1;其中:所述mask_l={mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]};所述mask_h={mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个目标数据。
8.一种数据处理方法,其特征在于,包括:
将权重掩码转换为一个3bit的第一权重掩码mask_l和一个3bit的第二权重掩码mask_h;
判断第一权重数据和第二权重数据中,是否存在值为0的权重数据,
所述第一权重数据为与根据所述mask_l选出的目标数据相对应的权重数据,所述第二权重数据为与根据所述mask_h选出的目标数据相对应的权重数据;
若所述第一权重数据和所述第二权重数据的值均为0,则设置所述mask_l和所述mask_h均为0;
若所述第一权重数据的值为0,所述第二权重数据的值不为0,则设置所述mask_l为0,所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
若所述第一权重数据的值不为0,所述第二权重数据的值为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为0;
若所述第一权重数据和所述第二权重数据的值均不为0,则设置所述mask_l为{mask[2]&(mask[1:0]==0),mask[1]&!mask[0],mask[0]},所述mask_h为{mask[3],mask[2]&!mask[3],mask[1]&(mask[3:2]==0)};
其中,mask[3]、mask[2]、mask[1]、mask[0]、mask[1:0]、mask[3:2]分别表征4bit的所述权重掩码的第3位数据、第2位数据、第1位数据、第0位数据、第1位和第0位构成的2bit数据、第3位和第2位数据构成的2bit数据,&表征与运算,&!表征与非运算,==表征判断两端的值是否相等,相等则值为1,不相等则值为0;
将所述mask_l的第0位数据与第一个待选数据进行与运算,将所述mask_l的第1位数据与第二个待选数据进行与运算,将所述mask_l的第2位数据与第三个待选数据进行与运算,将三次与运算的值进行或运算,得到第一个目标数据;
将所述mask_h的第0位数据与第二个待选数据进行与运算,将所述mask_h的第1位数据与第三个待选数据进行与运算,将所述mask_h的第2位数据与第四个待选数据进行与运算,将三次与运算的值进行或运算,得到第二个目标数据。
9.一种AI算法架构的实现装置,其特征在于,包括多个如权利要求4-6任一项所述的卷积计算装置。
10.一种处理器,其特征在于,包括:如权利要求1-3、9中任一种所述的AI算法架构的实现装置。
11.一种电子部件,其特征在于,包括如权利要求10所述的处理器。
12.一种电子设备,其特征在于,包括如权利要求11所述的电子部件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605320.0A CN115796239B (zh) | 2022-12-14 | 2022-12-14 | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605320.0A CN115796239B (zh) | 2022-12-14 | 2022-12-14 | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115796239A CN115796239A (zh) | 2023-03-14 |
CN115796239B true CN115796239B (zh) | 2023-10-31 |
Family
ID=85420044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211605320.0A Active CN115796239B (zh) | 2022-12-14 | 2022-12-14 | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115796239B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
CN110574044A (zh) * | 2017-05-23 | 2019-12-13 | 英特尔公司 | 用于使用依赖树来增强二进制权重神经网络的方法和装置 |
CN111079563A (zh) * | 2019-11-27 | 2020-04-28 | 北京三快在线科技有限公司 | 交通信号灯识别方法、装置、电子设备和存储介质 |
CN113850379A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN113850380A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN114327640A (zh) * | 2021-12-30 | 2022-04-12 | 上海登临科技有限公司 | Simd乘法器及数字处理器 |
CN114492753A (zh) * | 2022-01-26 | 2022-05-13 | 南京大学 | 一种应用于片上训练的稀疏加速器 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN115865843A (zh) * | 2022-10-28 | 2023-03-28 | 新华三半导体技术有限公司 | 规则存储方法、报文处理方法、装置、电子设备及介质 |
CN115952846A (zh) * | 2022-12-14 | 2023-04-11 | 北京登临科技有限公司 | Ai算法架构的实现装置、稀疏卷积运算方法及相关设备 |
CN116127255A (zh) * | 2022-12-14 | 2023-05-16 | 北京登临科技有限公司 | 卷积运算电路、及具有该卷积运算电路的相关电路或设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7025515B2 (en) * | 2003-05-20 | 2006-04-11 | Software 2000 Ltd. | Bit mask generation system |
EP2798457B1 (en) * | 2011-12-29 | 2019-03-06 | Intel Corporation | Dot product processors, methods, systems, and instructions |
US10467795B2 (en) * | 2017-04-08 | 2019-11-05 | Intel Corporation | Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU |
US20210090328A1 (en) * | 2020-12-07 | 2021-03-25 | Intel Corporation | Tile-based sparsity aware dataflow optimization for sparse data |
-
2022
- 2022-12-14 CN CN202211605320.0A patent/CN115796239B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
CN110574044A (zh) * | 2017-05-23 | 2019-12-13 | 英特尔公司 | 用于使用依赖树来增强二进制权重神经网络的方法和装置 |
CN111079563A (zh) * | 2019-11-27 | 2020-04-28 | 北京三快在线科技有限公司 | 交通信号灯识别方法、装置、电子设备和存储介质 |
CN113850379A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN113850380A (zh) * | 2021-09-26 | 2021-12-28 | 安徽寒武纪信息科技有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN114327640A (zh) * | 2021-12-30 | 2022-04-12 | 上海登临科技有限公司 | Simd乘法器及数字处理器 |
CN114492753A (zh) * | 2022-01-26 | 2022-05-13 | 南京大学 | 一种应用于片上训练的稀疏加速器 |
CN115865843A (zh) * | 2022-10-28 | 2023-03-28 | 新华三半导体技术有限公司 | 规则存储方法、报文处理方法、装置、电子设备及介质 |
CN115640494A (zh) * | 2022-12-14 | 2023-01-24 | 北京登临科技有限公司 | 卷积计算单元、ai运算阵列及相关设备 |
CN115952846A (zh) * | 2022-12-14 | 2023-04-11 | 北京登临科技有限公司 | Ai算法架构的实现装置、稀疏卷积运算方法及相关设备 |
CN116127255A (zh) * | 2022-12-14 | 2023-05-16 | 北京登临科技有限公司 | 卷积运算电路、及具有该卷积运算电路的相关电路或设备 |
Non-Patent Citations (3)
Title |
---|
SME: ReRAM-based Sparse-Multiplication-Engine to Squeeze-Out Bit Sparsity of Neural Network;Fangxin Liu等;《2021 IEEE 39th International Conference on Computer Design (ICCD)》;第417-424页 * |
Sparse Convolutional Neural Networks;Baoyuan Liu等;《CVPR2015》;第806-814页 * |
一种支持稀疏卷积的深度神经网络加速器的设计;周国飞;《电子技术与软件工程》;第109-112页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115796239A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN111783971B (zh) | 一种用于深度神经网络的可高度灵活配置的数据后处理器 | |
CN109063825B (zh) | 卷积神经网络加速装置 | |
US11551068B2 (en) | Processing system and method for binary weight convolutional neural network | |
CN108665063B (zh) | 用于bnn硬件加速器的双向并行处理卷积加速系统 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
WO2022166199A1 (zh) | 量子纠错解码系统、方法、容错量子纠错系统及芯片 | |
CN112633507A (zh) | 一种将复向量编码到量子线路的方法及装置 | |
CN112950656A (zh) | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 | |
KR20220114519A (ko) | 양자 오류 정정 디코딩 시스템 및 방법, 내결함성 양자 오류 정정 시스템 및 칩 | |
CN113222133A (zh) | 一种基于fpga的压缩lstm加速器及加速方法 | |
CN111199277B (zh) | 一种卷积神经网络加速器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN115456155A (zh) | 一种多核存算处理器架构 | |
CN115952846B (zh) | Ai算法架构的实现装置、稀疏卷积运算方法及相关设备 | |
CN113222129B (zh) | 一种基于多级缓存循环利用的卷积运算处理单元及系统 | |
CN115796239B (zh) | Ai算法架构的实现装置、卷积计算装置及相关方法与设备 | |
CN115640494B (zh) | 卷积计算单元、ai运算阵列及相关设备 | |
Zhuang et al. | Vlsi architecture design for adder convolution neural network accelerator | |
CN115879530A (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN114884618A (zh) | 一种基于gpu的5g多用户ldpc码高速译码器及其译码方法 | |
CN117391148A (zh) | 卷积计算单元、ai运算阵列及相关设备 | |
CN112183744A (zh) | 一种神经网络剪枝方法及装置 | |
CN112257843B (zh) | 一种基于MobileNetV1网络推理任务的扩展指令集的系统 | |
Chen et al. | Approximate Network-on-Chips with Application to Image Classification |
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 |