CN117313803B - 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法 - Google Patents

基于risc-v向量处理器架构的滑动窗口2d卷积计算方法 Download PDF

Info

Publication number
CN117313803B
CN117313803B CN202311603053.8A CN202311603053A CN117313803B CN 117313803 B CN117313803 B CN 117313803B CN 202311603053 A CN202311603053 A CN 202311603053A CN 117313803 B CN117313803 B CN 117313803B
Authority
CN
China
Prior art keywords
matrix
vector register
source vector
input matrix
register
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
Application number
CN202311603053.8A
Other languages
English (en)
Other versions
CN117313803A (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.)
Jindi Space Time Hangzhou Technology Co ltd
Original Assignee
Jindi Space Time Hangzhou 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 Jindi Space Time Hangzhou Technology Co ltd filed Critical Jindi Space Time Hangzhou Technology Co ltd
Priority to CN202311603053.8A priority Critical patent/CN117313803B/zh
Publication of CN117313803A publication Critical patent/CN117313803A/zh
Application granted granted Critical
Publication of CN117313803B publication Critical patent/CN117313803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • G06F7/5095Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了基于RISC‑V向量处理器架构的滑动窗口2D卷积计算方法,包括如下步骤:给定输入矩阵A和B,设定输出矩阵C的尺寸大小;输入矩阵A分别在源向量寄存器VS1和源向量寄存器VS1+1中进行映射,B在源向量寄存器VS2中进行映射;计算输出矩阵C,并将该计算定义为矩阵乘法指令,将输出矩阵C储存在目标向量寄存器VD中;根据输入矩阵A的矩阵参数确定窗口的大小,根据滑动方向和偏移量在源向量寄存器VS1和源向量寄存器VS1+1内的矩阵上对窗口进行滑动并定义为滑动窗口指令;通过矩阵乘法指令和滑动窗口指令对2D卷积进行计算并累加。基于本发明滑动窗口2D卷积计算方法可以实现在低成本、低功耗的前提下大大加速图像处理与人工智能等相关应用的执行效率。

Description

基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法
技术领域
本发明属于通信技术领域,具体涉及RISC-V(开源指令集架构)向量处理器架构的滑动窗口2D卷积计算方法。
背景技术
在智能安防、智能影像设备、家居设备、手持设备、机器人、自动驾驶等等领域,卷积神经网络在整个智能化的方案中起到了至关重要的作用,是人工智能(AI)应用的核心。而卷积神经网络中高度并行化的矩阵以及卷积计算占总体计算量的90%以上。
目前已经有大量商业上很成功的通用图形处理器(GPGPU)和专用集成电路(ASIC)的加速器方案。而在中央处理器(CPU)上的加速方案却寥寥无几。而在传统意义上普遍认为CPU不擅长去处理数据高度并行计算,CPU算力提升随之而来要求是对于其内部和外部带宽的扩容,这成本是巨大的,而获取的算力提升往往得不偿失。
在计算机视觉领域,卷积算子和矩阵乘算子在整个网络中的计算比重巨大。现有方法基于向量指令集或者单指令多数据指令集(SIMD)对于卷积的处理大多在寄存器当中对数据进行频繁的移动和拷贝,造成了巨大的访存压力以及产生了很多无意义的CPU时钟消耗,也会由于拷贝指令与计算指令中数据的耦合造成数据冒险,进而在处理器多级流水线处理中产生气泡,最终降低程序的执行效率。
在高性能计算领域,访存是最大的性能制约,滑动窗口指令则可以规避上文所述的数据频繁移动和拷贝,并且利用卷积计算中数据的空间局部性,提升对已经加载到高速缓冲存储器(cache)、缓存器(register)等高速存储区数据的复用,从而降低对动态随机存储器(DRAM)的频繁访问,减少访存的时间消耗。
综上,设计合理的滑动窗口指令能够充分压榨CPU在AI领域中的性能,在现有的向量扩展(RVV)指令和硬件架构的基础上,构建专用指令、采用较低成本的CPU扩展指令实现矩阵乘以及滑动窗口,去获取高能效比的算力。
发明内容
本发明的目的在于公开了基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,实现了数据的复用,通过滑动窗口指令,有效避免了数据从cache或内存到寄存器中的拷贝、移动,减少了数据的访存消耗。
为了达到上述目的,本发明采用如下方案:
基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,包括如下步骤:
(1)给定输入矩阵A和输入矩阵B,设定输出矩阵C的尺寸大小;
(2)输入矩阵A分别在源向量寄存器VS1和源向量寄存器VS1+1中进行映射,输入矩阵B在源向量寄存器VS2中进行映射;
(3)根据输入矩阵A在源向量寄存器VS1和源向量寄存器VS1+1中的映射和输入矩阵B在源向量寄存器VS2中的映射,计算输出矩阵C,并将该计算定义为矩阵乘法指令,将输出矩阵C储存在目标向量寄存器VD中;
(4)根据输入矩阵A的矩阵参数确定窗口的大小,根据滑动方向和偏移量在源向量寄存器VS1和源向量寄存器VS1+1内的矩阵上对滑动窗口进行滑动并定义为滑动窗口指令;
(5)通过矩阵乘法指令和滑动窗口指令对2D卷积进行计算并累加。
优选的,步骤(1)中,输入矩阵A的数据类型为8bits整型数据,给定单个向量寄存器中的位数为256bits,矩阵尺寸大小为4×8,单个输入矩阵为32×8bits,输入矩阵A记为A4×8;输入矩阵B的数据类型为8bits整型数据,给定单个向量寄存器中的位数为256bits,矩阵尺寸大小为8×4,单个输入矩阵为32×8bits,输入矩阵B记为B8×4;输出矩阵C的数据类型为32bits整型数据,矩阵尺寸大小为4×4,单个输出矩阵为32×16bits,输出矩阵C记为C4×4
优选的,步骤(2)中,输入矩阵A中元素在源向量寄存器VS1中储存的映射方式为:
f: ai (VS1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中VS1表示源向量寄存器VS1,a表示输入矩阵A中的元素,i表示源向量寄存器VS1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1中;
输入矩阵A中元素在源向量寄存器VS1+1中储存的映射方式为:
f: ai (VS1+1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中VS1+1表示源向量寄存器VS1+1,a表示输入矩阵A中的元素,i表示源向量寄存器VS1+1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1+1中。
优选的,步骤(2)中,输入矩阵B中元素在源向量寄存器VS2储存的映射方式为:fg,其中g为矩阵转置映射,其表达式为:g:bij/>bji,bij∈B8×4,/>表示函数映射复合运算,b表示输入矩阵B中的元素,i表示输入矩阵B行坐标,j表示输入矩阵B列坐标,bij/>bji表示输入矩阵B中第i行第j列的元素和第j列第i行的元素交换。
优选的,步骤(3)中,给定输入矩阵A4×8和B8×4,输出矩阵C4×4的计算公式如下所示:
i∈{0,1,2,3},j∈{0,1,2,3},k∈{0,1,2,3,4,5,6,7},
其中c表示输出矩阵C中的元素,i表示输出矩阵C行坐标,j表示输出矩阵C列坐标,a表示输入矩阵A中的元素,b表示输入矩阵B中的元素,k表示输入矩阵A的列数或者输入矩阵B的行数。
优选的,步骤(3)中,目标向量寄存器VD包括目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H),输出矩阵C在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)的储存方式为:输出矩阵C中第0-7位元素即00,01,02,03,10,11,12,13放在目标向量低位寄存器VD(L),第8-15位元素即20,21,22,23,30,31,32,33放在目标向量高位寄存器VD(H)。
优选的,步骤(4)中,输入矩阵A分为两个输入矩阵A1 4×8和A2 4×8,其中A1 4×8存放在源向量寄存器VS1中,A2 4×8存放在源向量寄存器VS1+1中。
优选的,步骤(4)中,在源向量寄存器VS1和源向量寄存器VS1+1中滑动窗口尺寸大小为4×8,滑动方向为从上到下,偏移量为8个元素。
优选的,步骤(5)中,卷积计算的具体步骤为:
a. 源向量寄存器VS1和源向量寄存器VS1+1用来存输入特征图,源向量寄存器VS2用来存放卷积核,目标向量寄存器VD用来存放累积的输出特征图;
b. 源向量寄存器 VS1的一行和源向量寄存器VS2的一列做内积得到一个32bit的元素,并与目标向量寄存器VD中对应位置数据累加,首先执行有符号-有符号矩阵乘法指令计算得到无偏移的矩阵计算结果存放在目标向量寄存器VD中,然后滑动窗口执行偏移8元素的有符号-有符号矩阵乘法指令得到偏移量为8元素的矩阵计算结果,并和上述在目标向量寄存器VD中的结果累加,然后滑动窗口执行偏移16元素的有符号-有符号矩阵乘法指令得到偏移量为16元素的矩阵计算结果,并和上述在目标向量寄存器VD中的结果累加,直至一行的结果计算完毕;
c.按照步骤b计算剩余行并累积结果。
优选的,步骤(5)中,当滑动的方向元素个数小于8,进行填充补0,此时,源向量寄存器VS1中的值从上一轮中源向量寄存器VS1+1寄存器中搬运,源向量寄存器VS1+1的值全置为0。
由于采用上述技术方案,本发明具有以下有益效果:
本发明实现了数据的复用,通过滑动窗口指令,有效避免了数据从cache或内存到寄存器中的拷贝、移动,减少了数据的访存消耗。利用卷积计算的空间局部性,提升了cache、register等高速存储复用,降低了对DRAM的访问,从而达到采用较低成本的CPU扩展指令去获取高效比的算力。通过加速视觉领域当中消耗占比最大的算子,突破现有模型推理的性能瓶颈,从而实现在边缘端模型推理的加速。
基于当下模型量化技术相对成熟的背景,对于输入矩阵A和输入矩阵B元素,使用8bit整型存储,输入矩阵使用位宽为256bit的向量寄存器存储32个8bit数值,而输出矩阵输出使用2个256bit位宽的向量寄存器存储16个32bit数值。
综上构建出4×8×4的矩阵乘情况(C4×4= A4×8×B8×4),对输入矩阵在向量寄存器中进行映射,其中输入矩阵A按照HW展开(即先按照行再按列展开)的方式映射,输入矩阵B按照WH展开(先按照列再按行展开)的方式映射。根据本方案设计的AI指令,可以在单指令下计算得到4×4大小尺寸的输出矩阵C。根据本发明设计的移位指令,可以实现矩阵乘的滑窗效果。
附图说明
下面根据附图对本发明作进一步说明。
图1为实施例中输入矩阵A在源向量寄存器VS1的排布图。
图2为实施例中输入矩阵B在源向量寄存器VS2的排布图。
图3为实施例中输出矩阵C在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中的排布图。
图4为实施例中输出矩阵C00元素的计算过程图。
图5为实施例中输出矩阵C33元素的计算过程图。
图6为实施例中偏移量为0时矩阵乘。
图7为实施例中偏移量为1时矩阵乘。
图8为实施例中偏移量为2时矩阵乘。
图9为实施例中偏移量为3时矩阵乘。
图10为实施例中输入特征图感受野内第一行第一列和卷积第一行第一列计算并累加的示意图。
图11为实施例中输入特征图感受野内第一行第一列和卷积第一行第二列计算并累加的示意图。
图12为实施例中输入特征图感受野内第一行第一列和卷积第一行第三列计算并累加的示意图。
图13为实施例中输入特征图感受野内第二行和卷积第二行计算并累加的示意图。
图14为实施例中输入特征图感受野内第三行和卷积第三行计算并累加的示意图。
图15为实施例中目标向量寄存器中存储的值与输出特征图的映射关系的示意图。
具体实施方式
基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,包括如下步骤:
(1)给定输入矩阵A和输入矩阵B,输入矩阵A和输入矩阵B的数据类型为8bits整型数据,所以单个输入矩阵为32×8 bits,需要一个位宽为256bits的向量寄存器进行存储,输入矩阵A的尺寸大小为4×8,如公式(1)所示。
输入矩阵B的尺寸大小为8×4,其如公式(2)所示。
输出矩阵C的尺寸大小为4×4,其数据类型为32bits整型数据,所以单个输出矩阵为32×16 bits,需要两个位宽为256bits的目标向量寄存器进行存储,输出矩阵C如公式(3)所示。
(2)在给定向量寄存器宽度VLEN等于256bits、向量元素宽度ELEN等于8bits的情况下,源向量寄存器VS1的排布如图1所示,输入矩阵A中元素在源向量寄存器VS1中存储的映射方式为:
f: ai (VS1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中a表示输入矩阵A中的元素,VS1表示源向量寄存器VS1,i表示源向量寄存器VS1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1中。
输入矩阵A中元素在源向量寄存器VS1+1中储存的映射方式为:
f: ai (VS1+1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中a表示输入矩阵A中的元素,VS1+1表示源向量寄存器VS1+1,i表示源向量寄存器VS1+1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1+1中。
输入矩阵A中的元素都是8bit的也就是1个字节,输出矩阵C中的元素是32bit也就是4个字节,本发明中,偏移只针对于源向量寄存器VS1和源向量寄存器VS1+1,偏移8个元素和8字节是等价的,所以偏移8个元素就是偏移8个字节。
在给定向量寄存器宽度VLEN等于256bits、向量元素宽度ELEN等于8bits的情况下,输入矩阵B中的元素在源向量寄存器VS2中存储的映射方式为fg,其中g为矩阵转置映射,其表达式为:g:bij/>bji,bij∈B8×4,/>表示函数映射复合运算,b表示输入矩阵B中的元素,i表示输入矩阵B行坐标,j表示输入矩阵B列坐标,bij/>bji表示输入矩阵B中第i行第j列的元素和第j列第i行的元素交换。源向量寄存器VS2的排布如图2所示。
在给定VLEN等于256bits、ELEN等于32bits的情况下,目标向量寄存器VD包括目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H),输出矩阵C中元素在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中的存储方式如图3所示,输出矩阵C中第0-7位元素即00,01,02,03,10,11,12,13放在目标向量低位寄存器VD(L),第8-15位元素即20,21,22,23,30,31,32,33放在目标向量高位寄存器VD(H)。
(3)给定输入矩阵A4×8和B8×4,输出矩阵C4×4的计算如公式(4)所示:
i∈{0,1,2,3},j∈{0,1,2,3},k∈{0,1,2,3,4,5,6,7},
其中,c表示输出矩阵C中的元素,i表示输出矩阵C行坐标,j表示输出矩阵C列坐标,k表示输入矩阵A的列数或者输入矩阵B的行数。
按照输入矩阵A的行乘输入矩阵B的列的方式,公式(4)可以表示为公式(5)的形式。
上式中ai表示输入矩阵A的第i行行向量,bj表示输入矩阵B的第j列列向量,根据上节中矩阵在寄存器中的排布方式和映射,输出矩阵C中C00元素的计算如图4所示,输出矩阵C中C33元素的计算如图5所示。
根据矩阵元素在寄存器中的映射,目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中的数据计算如公式(6)所示。
将公式(6)的计算方式,定义为矩阵乘法指令,根据输入矩阵A和输入矩阵B中元素的不同数据类型(有符号、无符号)的排列组合,可将其拆分为4种不同的情况,如表1所示。
其中,int_8表示8字节有符号数,uint_8表示8字节无符号数,vmadot表示有符号-有符号矩阵乘法指令,vmadotu表示无符号-无符号矩阵乘法指令,vmadotsu表示有符号-无符号矩阵乘法指令,vmadotus表示无符号-有符号矩阵乘法指令。
(4)针对节(矩阵乘实现)中矩阵乘在RVV指令基础上的实现,综合利用数据的空间局部性,设计得到矩阵乘的滑动窗口指令。对于滑动窗口指令,要求VS1为偶数编号(0,2,……,30)的向量寄存器,潜在的使用编号VS1和编号VS1+1的向量寄存器;VS2为32个向量寄存器中的一个;VD为偶数编号(0,2,……,30)的向量寄存器,潜在使用编号VD向量寄存器作为VD(L)、使用编号VD+1向量寄存器作为VD(H)。
综上可以将一个8×8大小的矩阵分为两个输入矩阵A1 4×8和A2 4×8,其中A1 4×8存在源向量寄存器VS1中,A2 4×8按照存放在源向量寄存器VS1+1中,此时节(矩阵乘的实现)中构建的矩阵乘指令如图6所示。
当偏移量为1时,窗口滑动8元素即8字节,使用矩阵A1 4×8的第2、3、4行和矩阵A2 4×8的第1行作为输入矩阵A,如图7所示。
如表2所示,根据输入矩阵AB中元素的不同数据类型(有符号、无符号)的排列组合,可将偏移量为1的情况拆分为4条指令。
其中,vmadot1表示偏移8字节的有符号-有符号矩阵乘法指令,vmadot1u表示偏移8字节的无符号-无符号矩阵乘法指令,vmadot1su表示偏移8字节的有符号-无符号矩阵乘法指令,vmadot1us表示偏移8字节的无符号-有符号矩阵乘法指令。
当偏移量为2时,窗口滑动16元素即16字节,使用矩阵A1 4×8的第3、4行和矩阵A2 4×8的第1、2行作为输入矩阵A,其如图8所示。
如表3所示,根据输入矩阵A和输入矩阵B中元素的不同数据类型(有符号、无符号)的排列组合,可将偏移量为2的情况拆分为4条指令。
其中,vmadot2表示偏移16字节的有符号-有符号矩阵乘法指令,vmadot2u表示偏移16字节的无符号-无符号矩阵乘法指令,vmadot2su表示偏移16字节的有符号-无符号矩阵乘法指令,vmadot2us表示偏移16字节的无符号-有符号矩阵乘法指令。
当偏移量为3时,窗口滑动24元素即24字节,使用矩阵A1 4×8的第4行和矩阵A2 4×8的第1、2、3行作为输入矩阵A,其如图9所示。
如表4所示,根据输入矩阵A和输入矩阵B中元素的不同数据类型(有符号、无符号)的排列组合,可将偏移量为3的情况拆分为4条指令。
其中,vmadot3表示偏移24字节的有符号-有符号矩阵乘法指令,vmadot3u表示偏移24字节的无符号-无符号矩阵乘法指令,vmadot3su表示偏移24字节的有符号-无符号矩阵乘法指令,vmadot3us表示偏移24字节的无符号-有符号矩阵乘法指令。
(4)使用以上矩阵乘和滑动窗口指令,用以下示例来展示滑动窗口2d卷积的计算。卷积实现的是输入特征图感受野内元素和卷积核对应元素的乘并累加。
给定输入特征图尺寸为HWC=3×8×8,3×3卷积,H为高,W为宽,C为通道,步长=1,填充=0,输出通道数Oc=4,此时输出特征图尺寸为HWC=1×6×4。
使用表5三条指令,实现图10、图11、图12的效果。每次会将当前向量寄存器VD中存储的值累加上此次矩阵乘得到的值。
如图10所示,计算过程中,源向量寄存器VS1用来存输入特征图,源向量寄存器VS2用来存放卷积核,目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)用来存放累积的输出特征图。
输出通道数目等同于卷积核个数,即每个卷积核和输入特征图做完卷积计算得到的是一个2d的输出特征图。
卷积核4个一组,每个卷积核通道数按照8来分块,4个卷积核相同行位置和列位置放在同一个向量寄存器中,按照上述分块方式,卷积核大小为3×3的卷积在单个分块中可以用三个源向量寄存器VS2,VS2’和VS2’’存一行。输入特征图通道维按照8来划分,行方向按照8来划分,这样使用2个向量寄存器存储输入特征图的数据。
在下面的计算中,源向量寄存器VS1的一行(8个8bit元素)会和源向量寄存器VS2的一行(8个8bit元素)做内积得到一个32bit的元素,并与目标向量低位寄存器VD(L) 和目标向量高位寄存器VD(H)中对应位置数据累加。
如图10所示,首先执行vmadot计算得到无偏移的矩阵计算结果存放在目标向量低位寄存器VD(L) 和目标向量高位寄存器VD(H)中。如图11所示,执行vmadot1得到偏移量为8字节的矩阵计算结果,并和上述在目标向量低位寄存器VD(L) 和目标向量高位寄存器VD(H)中的结果进行累加。如图12所示,执行vmadot2得到偏移量为16字节的矩阵计算结果,并和上述在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中的结果进行累加;如果卷积核3×3,则一行的结果计算完毕。如此实现了输入特征图感受野内第一行和卷积核的第一行的计算,第二行和第三行的计算按照上述累加的方式进行,分别如图13和图14所示。
如图13所示,将卷积核第二行的数据搬运到源向量寄存器VS2中,执行上述过程,在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中累加,图14将卷积核第三行的数据搬运到源向量寄存器VS2中,执行上述过程,在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)中累加。如此得到了3×3卷积下,输出通道为4的部分输出特征图结果。
矩阵计算结果存放在目标向量低位寄存器VD(L) 和目标向量高位寄存器VD(H)取决于源向量寄存器VS1中窗口的位置。例如vmadot这种无偏移指令,其左边矩阵窗口范围是源向量寄存器VS1的1-4行,源向量寄存器VS1中第一行和第二行与源向量寄存器VS2的列做内积的结果放在目标向量低位寄存器VD(L),源向量寄存器VS1中第三行第四行与源向量寄存器VS2的列做内积的结果放在目标向量高位寄存器VD(H)。例如vmadot1这种有偏移指令,其左边矩阵窗口范围是源向量寄存器VS1的第二行、第三行和第四行和源向量寄存器VS1+1的第一行,那么源向量寄存器VS1中第二行和第三行与源向量寄存器VS2的列做内积的结果放在目标向量低位寄存器VD(L),源向量寄存器VS1中第四行、源向量寄存器VS1+1的第一行与源向量寄存器VS2的列做内积的结果放在目标向量高位寄存器VD(H)。
执行完以上操作,目标向量低位寄存器VD(L) 和目标向量高位寄存器VD(H)中存储的值与输出特征图的映射关系如图15所示。
对输入特征图进行滑动,当滑动的方向元素个数小于8,进行填充补0,此时,图15中源向量寄存器VS1中的值只需要从上一轮中源向量寄存器VS1+1中搬运,源向量寄存器VS1+1的值全置为0即可,按照图15的表示方式,即可计算完输出特征图,完成2D卷积操作。
以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。

Claims (8)

1.基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于,包括如下步骤:
(1)给定输入矩阵A和输入矩阵B,设定输出矩阵C的尺寸大小;
(2)输入矩阵A分别在源向量寄存器VS1和源向量寄存器VS1+1中进行映射,输入矩阵B在源向量寄存器VS2中进行映射;
(3)根据输入矩阵A在源向量寄存器VS1和源向量寄存器VS1+1中的映射和输入矩阵B在源向量寄存器VS2中的映射,计算输出矩阵C,给定输入矩阵A4×8和B8×4,输出矩阵C4×4的计算公式如下所示:,i∈{0,1,2,3},j∈{0,1,2,3},k∈{0,1,2,3,4,5,6,7}, 其中c表示输出矩阵C中的元素,i表示输出矩阵C行坐标,j表示输出矩阵C列坐标,a表示输入矩阵A中的元素,b表示输入矩阵B中的元素,k表示输入矩阵A的列数或者输入矩阵B的行数,并将该计算定义为矩阵乘法指令,将输出矩阵C储存在目标向量寄存器VD中;
(4)根据输入矩阵A的矩阵参数确定窗口的大小,根据滑动方向和偏移量在源向量寄存器VS1和源向量寄存器VS1+1内的矩阵上对窗口进行滑动并定义为滑动窗口指令;
(5)通过矩阵乘法指令和滑动窗口指令对2D卷积进行计算并累加,卷积计算的具体步骤为:
a. 源向量寄存器VS1和源向量寄存器VS1+1用来存输入特征图,源向量寄存器VS2用来存放卷积核,目标向量寄存器VD用来存放累积的输出特征图;
b. 源向量寄存器 VS1的一行和源向量寄存器VS2的一列做内积得到一个32bit的元素,并与目标向量寄存器VD中对应位置数据累加,首先执行有符号-有符号矩阵乘法指令计算得到无偏移的矩阵计算结果存放在目标向量寄存器VD中,然后滑动窗口执行偏移8元素的有符号-有符号矩阵乘法指令得到偏移量为8元素的矩阵计算结果,并和上述在目标向量寄存器VD中的结果累加,然后滑动窗口执行偏移16元素的有符号-有符号矩阵乘法指令得到偏移量为16元素的矩阵计算结果,并和上述在目标向量寄存器VD中的结果累加,直至一行的结果计算完毕;
c.按照步骤b计算剩余行并累积结果。
2.根据权利要求1所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(1)中,输入矩阵A的数据类型为8bits整型数据,给定单个向量寄存器中的位数为256bits,矩阵尺寸大小为4×8,单个输入矩阵为32×8bits,输入矩阵A记为A4×8;输入矩阵B的数据类型为8bits整型数据,给定单个向量寄存器中的位数为256bits,矩阵尺寸大小为8×4,单个输入矩阵为32×8bits,输入矩阵B记为B8×4;输出矩阵C的数据类型为32bits整型数据,矩阵尺寸大小为4×4,单个输出矩阵为32×16bits,输出矩阵C记为C4×4
3.根据权利要求2所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于,步骤(2)中,输入矩阵A中元素在源向量寄存器VS1中储存的映射方式为:
f: ai (VS1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中VS1表示源向量寄存器VS1,a表示输入矩阵A中的元素,i表示源向量寄存器VS1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1中;
输入矩阵A中元素在源向量寄存器VS1+1中储存的映射方式为:
f: ai (VS1+1)i,i∈{00,...,07,10,...,17,20,...,27,30,...,37},其中VS1+1表示源向量寄存器VS1+1,a表示输入矩阵A中的元素,i表示源向量寄存器VS1+1中第i个元素,/>表示输入矩阵A中元素映射到源向量寄存器VS1+1中。
4.根据权利要求2所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(2)中,输入矩阵B中元素在源向量寄存器VS2储存的映射方式为:fg,其中g为矩阵转置映射,其表达式为:g:bij/>bji,bij∈B8×4,/>表示函数映射复合运算,b表示输入矩阵B中的元素,i表示输入矩阵B行坐标,j表示输入矩阵B列坐标,bij/>bji表示输入矩阵B中第i行第j列的元素和第j列第i行的元素交换。
5.根据权利要求1所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(3)中,目标向量寄存器VD包括目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H),输出矩阵C在目标向量低位寄存器VD(L)和目标向量高位寄存器VD(H)的储存方式为:输出矩阵C中第0-7位元素即00,01,02,03,10,11,12,13放在目标向量低位寄存器VD(L),第8-15位元素即20,21,22,23,30,31,32,33放在目标向量高位寄存器VD(H)。
6.根据权利要求2所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(4)中,输入矩阵A分为两个输入矩阵A1 4×8和A2 4×8,其中A1 4×8存放在源向量寄存器VS1中,A2 4×8存放在源向量寄存器VS1+1中。
7.根据权利要求6所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(4)中,在源向量寄存器VS1和源向量寄存器VS1+1中滑动窗口尺寸大小为4×8,滑动方向为从上到下,偏移量为8个元素。
8.根据权利要求1所述基于RISC-V向量处理器架构的滑动窗口2D卷积计算方法,其特征在于:步骤(5)中,当滑动的方向元素个数小于8,进行填充补0,此时,源向量寄存器VS1中的值从上一轮中源向量寄存器VS1+1寄存器中搬运,源向量寄存器VS1+1的值全置为0。
CN202311603053.8A 2023-11-28 2023-11-28 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法 Active CN117313803B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311603053.8A CN117313803B (zh) 2023-11-28 2023-11-28 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311603053.8A CN117313803B (zh) 2023-11-28 2023-11-28 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法

Publications (2)

Publication Number Publication Date
CN117313803A CN117313803A (zh) 2023-12-29
CN117313803B true CN117313803B (zh) 2024-02-02

Family

ID=89250229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311603053.8A Active CN117313803B (zh) 2023-11-28 2023-11-28 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法

Country Status (1)

Country Link
CN (1) CN117313803B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108205702A (zh) * 2017-12-29 2018-06-26 中国人民解放军国防科技大学 一种多输入多输出矩阵卷积的并行处理方法
CN109997154A (zh) * 2017-10-30 2019-07-09 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN111213125A (zh) * 2017-09-08 2020-05-29 甲骨文国际公司 使用simd指令进行高效的直接卷积
CN112783555A (zh) * 2019-11-11 2021-05-11 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
CN113869498A (zh) * 2021-10-13 2021-12-31 安徽芯纪元科技有限公司 一种卷积运算电路及其运算方法
WO2023044707A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Methods and apparatus to accelerate convolution
CN115983348A (zh) * 2023-02-08 2023-04-18 天津大学 支持卷积神经网络扩展指令的risc-v加速器系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220391320A1 (en) * 2021-05-24 2022-12-08 Industry-Academic Cooperation Foundation, Yonsei University Operation device of convolutional neural network, operation method of convolutional neural network and computer program stored in a recording medium to execute the method thereof

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111213125A (zh) * 2017-09-08 2020-05-29 甲骨文国际公司 使用simd指令进行高效的直接卷积
CN109997154A (zh) * 2017-10-30 2019-07-09 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN108205702A (zh) * 2017-12-29 2018-06-26 中国人民解放军国防科技大学 一种多输入多输出矩阵卷积的并行处理方法
CN112783555A (zh) * 2019-11-11 2021-05-11 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
WO2023044707A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Methods and apparatus to accelerate convolution
CN113869498A (zh) * 2021-10-13 2021-12-31 安徽芯纪元科技有限公司 一种卷积运算电路及其运算方法
CN115983348A (zh) * 2023-02-08 2023-04-18 天津大学 支持卷积神经网络扩展指令的risc-v加速器系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CNN Specific ISA Extensions Based on RISC-V Processors;Xiang Yu et al.;2022 5th International Conference on Circuits, Systems and Simulation (ICCSS);第116-120页 *
基于CPU SIMD指令集的卷积计算优化;庄晨;中国优秀硕士学位论文全文数据库 信息科技辑;第2022卷(第12期);第I137-112页 *
快速的卷积神经网络算法及应用;包志强;赵志超;王宇霆;;计算机工程与设计(08);全文 *

Also Published As

Publication number Publication date
CN117313803A (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
US20220365753A1 (en) Accelerated mathematical engine
TW201913460A (zh) 芯片裝置及相關産品
CN108805266A (zh) 一种可重构cnn高并发卷积加速器
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
CN109840585B (zh) 一种面向稀疏二维卷积的运算方法和系统
CN111381968B (zh) 一种高效运行深度学习任务的卷积运算优化方法及系统
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN113762493A (zh) 神经网络模型的压缩方法、装置、加速单元和计算系统
CN110796236A (zh) 多样本多通道卷积神经网络池化的向量化实现方法
WO2022001301A1 (zh) 神经网络运算方法及相关设备
CN113191491B (zh) 多维度并行的人工智能处理器架构
CN117313803B (zh) 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法
US20230206049A1 (en) Data processing method and device, and neural network processing device
CN116842304A (zh) 一种不规则稀疏矩阵的计算方法及系统
CN115170381A (zh) 一种基于深度学习的视觉slam加速系统及方法
WO2021217502A1 (zh) 一种计算架构
Zhang et al. Yolov3-tiny Object Detection SoC Based on FPGA Platform
CN112434255A (zh) 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
US20240134930A1 (en) Method and apparatus for neural network weight block compression in a compute accelerator
TW201937490A (zh) 計算記憶體
Wang et al. An FPGA-Based Reconfigurable CNN Training Accelerator Using Decomposable Winograd
TWI798591B (zh) 卷積神經網路運算方法及裝置
WO2023019972A1 (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