图形处理器及其加速方法
技术领域
本发明涉及图形处理器,特别涉及改善im2col计算效率的图形处理器及其加速方法。
背景技术
随着人工智能的发展,用图形处理器(GPU)对神经网络进行加速成为一个重要方向。为了对神经网络算法进行硬件加速,各芯片厂不断地提升运算模块的性能、减少数据的内存访问,和设计优化算法,而使得神经网络推理性能愈来愈快。通用矩阵乘法(GEMM)是一个被广泛应用的卷积加速方法。在执行GEMM之前,需要准备输入数据,而准备输入数据的过程即称为图像块重排为矩阵列(im2col)。
传统的图形处理器执行GEMM过程中,首先须先从存储器中读取一矩阵,将对矩阵执行im2col操作,并且将im2col后的结果存入存储器中。接着,图形处理器以im2col后的结果作为GEMM的输入,用以执行矩阵相乘的操作。换句话说,传统的图形处理器在执行GEMM过程中,需要读取存储器(或内存)两次,增加了对带宽的需求。传统的图形处理器更需要执行两次的计算才可得到最终矩阵相乘结果,计算推理的时间变长。
发明内容
依据本发明实施例的图形处理器,用以加速一卷积运算,包括一纹素(texel)单元及一执行单元。纹素单元包括一读取模块,执行单元包括一图像块重排为矩阵列(im2col)模块。读取模块从一存储器中读取用于卷积运算的一原始矩阵。存储器包括彼此相邻且大小相同的多个存储区块,原始矩阵存储在至少一该等存储区块中。图像块重排为矩阵列(im2col)模块,用以执行一im2col算法,依据一卷积核(kernal)的大小,将原始矩阵进行扩展,而得到一扩展矩阵。执行单元将该扩展矩阵内的每一元素分别定义为一扩展坐标。执行单元将该扩展矩阵与卷积核相乘,而得到对应于原始矩阵的一特征(feature map)矩阵。读取模块接收来自执行单元的扩展坐标,并且依据扩展坐标,计算出特征矩阵的每一元素的一特征坐标。读取模块依据该特征坐标、该卷积核的大小、步伐值(stride)及填充值(padding),得到原始矩阵的每一元素的一原始坐标。读取模块读取原始矩阵的每一元素的原始坐标所涵盖的至少一该等存储区块,并且将至少一该等存储区块中对应于该原始坐标的数据传送给im2col模块。
如上所述的图形处理器,其中,执行单元还包括一寄存器文件(register file),用以在卷积运算中存储来自im2col模块的原始矩阵内的数据、扩展矩阵内的数据,及特征矩阵内的数据。
如上所述的图形处理器,其中,执行单元还包括一执行模块,用以依据寄存器文件中的原始矩阵内的数据、扩展矩阵内的数据,及特征矩阵内的数据,执行该卷积运算。
如上所述的图形处理器,其中,纹素单元还包括一L1快取(cache);在该卷积运算中,L1快取从该存储器中读取并存储用于该卷积运算的原始矩阵,用以供读取模块的存取。
如上所述的图形处理器,其中,该图形处理器还包括一存储单元,用以将该执行单元所执行卷积运算的一结果存入该存储器中。
如上所述的图形处理器,其中,存储器所包括每一该等存储区块的大小为4*8的矩阵大小。
如上所述的图形处理器,其中,该im2col模块包括:一返回缓冲器(returnbuffer)、一数据扩展器、一数据多工器(data MUX),及一输出合并缓冲器(output mergebuffer)。返回缓冲器用以接收并存放来自纹素单元的原始矩阵或至少一该等存储区块中对应于原始坐标的数据。数据扩展器用以将原始矩阵以im2col的方式进行扩展,而得到扩展矩阵。数据多工器依据执行单元从扩展矩阵中挑选在卷积运算中所需的数据。输出合并缓冲器用以将数据多工器从扩展矩阵中挑选的数据进行合并,并且输出至一寄存器文件。
如上所述的图形处理器,其中,卷积核的大小为3*3的矩阵大小,步伐值等于1,及填充值等于0。
依据本发明实施例的一种加速卷积运算的方法,包括:从一存储器中得到一原始矩阵;其中,存储器包括彼此相邻且大小相同的多个存储区块,原始矩阵存储在至少一该等存储区块中;执行一图像块重排为矩阵列(im2col)算法,依据一卷积核(kernal)的大小,将原始矩阵进行扩展,而得到一扩展矩阵;其中,该扩展矩阵内的每一元素分别具有一扩展坐标;将扩展矩阵与卷积核相乘,而得到对应于原始矩阵的一特征(feature map)矩阵;依据扩展坐标,计算出特征矩阵的每一元素的一特征坐标。依据特征坐标、卷积核的大小、步伐值及填充值,得到原始矩阵的每一元素的一原始坐标;读取原始矩阵的每一元素的原始坐标所涵盖的至少一该等存储区块,并且将至少一该等存储区块中对应于原始坐标的数据输出。
附图说明
图1为本发明实施例的图形处理器的示意图。
图2为本发明实施例的图1存储器的数据配置示意图。
图3A-3D为本发明实施例图1im2col模块执行im2col算法的示意图。
图4为本发明实施例的图1im2col模块的扩展矩阵示意图。
图5A为本发明实施例的原始矩阵示意图。
图5B为本发明实施例的图5A原始矩阵的扩展矩阵示意图。
图5C为本发明实施例的卷积核及特征矩阵示意图。
图6为本发明实施例的图1的im2col模块的示意图。
图7为本发明实施例的图1的图形处理器加速卷积运算的流程图。
【符号说明】
100:图形处理器
102:纹素单元
104:执行单元
106:存储器
108:存储单元
110:读取单元
112:L1快取
114:im2col模块
116:寄存器文件
118:执行模块
X,Y:方向
①,②,③,④,⑤:区块
⑥,⑦,⑧,⑨:区块
300,302,304,306,308,310:矩阵
0~15:矩阵元素
im2col:图像块重排为矩阵列
400,404:矩阵
402,406:卷积核
H:矩阵列数
W:矩阵行数
Kh:卷积核列数
Kw:卷积核行数
410,420:扩展矩阵
C:通道数
C0,C1:通道(channel)
500,502:矩阵
504:扩展矩阵
(w_offset,h_offset):矩阵500的起始坐标
0~179:矩阵元素
506:卷积核
508,510:特征矩阵
(w_,h_):特征矩阵510的起始坐标
A,B,C:矩阵元素
600:返回缓冲器
602:数据扩展器
604:数据多工器
606:输出合并缓冲器
S702,S704,S706,S708:步骤
具体实施方式
本发明参照附图进行描述,其中遍及附图上的相同参考数字标示了相似或相同的元件。上述附图并没有依照实际比例大小描绘,其仅仅提供对本发明的说明。一些发明的形态描述于下方作为图解示范应用的参考。这意味着许多特殊的细节、关系及方法被阐述来对这个发明提供完整的了解。无论如何,本领域技术人员将认识到若没有一个或更多的特殊细节或用其他方法,此发明仍然可以被实现。以其他例子来说,众所皆知的结构或操作并没有详细列出以避免对这发明的混淆。本发明并没有被阐述的行为或事件顺序所局限,如有些行为可能发生在不同的顺序亦或同时发生在其他行为或事件之下。此外,并非所有阐述的行为或事件都需要被执行在与现有发明相同的方法之中。
图1为本发明实施例的图形处理器的示意图。如图1所示,图形处理器100包括一纹素(texel)单元102、一执行单元104、一存储单元108。纹素单元102包括一读取(LD)单元110、一L1快取(cache)112。执行单元104包括一图像块重排为矩阵列(im2col)模块114、一寄存器文件(register file:RF)116,及一执行模块(EU)118。在一些实施例中,图形处理器100设置在一电子装置中,电子装置可例如一笔记型计算机、一桌上型计算机、一智能移动装置、一平板计算机,以及一工作站服务器等。电子装置可包括另一处理器(例如一中央处理器(CPU))(未图示),用以依据使用者的操作对应地传输指令(例如矩阵运算指令)给图形处理器100。
当图形处理器100接收到中央处理器(CPU)的一通用矩阵乘法(GEMM)指令时,纹素单元102内的读取单元110读取用于卷积运算(例如矩阵乘法运算)的一原始矩阵。在一些实施例中,原始矩阵可代表输入于一卷积神经网络(CNN)的一输入图像。卷积神经网络用以对输入图像进行图像辨识的操作。在一些实施例中,原始矩阵以一特殊配置的方式存储在一存储器106之中。
图2为本发明实施例的图1存储器106的数据配置示意图。如图2所示,存储器106包括彼此相邻且大小相同的多个存储区块。在一些实施例中,每一存储区块的大小为4*8的矩阵大小。换句话说。每一存储区块可存储32位的数据。每一存储区块沿着X方向及Y方向排列延伸,并且定义存储器106内最左上角的区块(例如区块①)为整个存储器106的区块配置的原点坐标(0,0)。举例来说,假设一图像的大小为8*16位,当图像对齐于原点坐标存储在存储器106内时,图像存储于区块①、区块②、区块③及区块④之中。当图像并未对齐于原点坐标(例如图像的左上角端点对齐于坐标(4,2)),则图像可存储涵盖于区块①~⑨之中。
回到图1,执行单元104内的图像块重排为矩阵列(im2col)模块114接收来自读取单元110的原始矩阵(或原始图像)。im2col模块114执行一im2col算法,依据卷积运算(或矩阵乘法运算)中卷积核(kernel)的大小,将原始矩阵进行扩展,而得到一扩展矩阵。图3A-3D为本发明实施例图1im2col模块114执行im2col算法的示意图。如图3所示,读取单元110读取来自存储器106的一矩阵300。矩阵300为4*4的矩阵,具有矩阵元素0~15。当im2col模块114接收来自读取单元110的矩阵300时,im2col模块114对矩阵300对矩阵300执行im2col的操作。首先,如图3A所示,im2col模块114依据卷积核的大小(例如卷积核为3*3的矩阵,但本发明不限于此),将矩阵300内的矩阵元素0~2、4~6、8~10转换为9*1的矩阵302。
接着,在图3B中,im2col模块114将矩阵300内的矩阵元素1~3、5~7、9~11转换为9*1的矩阵304,并且将矩阵304排列于矩阵302的右侧。接着,如图3C所示,im2col模块114将矩阵300内的矩阵元素4~6、8~10、12~14转换为9*1的矩阵306,并且将矩阵306排列于矩阵304的右侧。最后,如图3D所示,im2col模块114将矩阵300内的矩阵元素5~7、9~11、13~15转换为9*1的矩阵308,并且将矩阵308排列于矩阵306的右侧,而得到矩阵310。换句话说,矩阵310(包括矩阵302、304、306及308)即为扩展矩阵。im2col模块114将原始矩阵(例如矩阵300)转换为扩展矩阵(例如矩阵310),为了后续矩阵乘法的便利性。
在一些实施例中,如图3D所示,执行单元104将扩展矩阵(例如矩阵310)内的每一元素分别定义为一扩展坐标。举例来说,执行单元104将矩阵302内的第1个矩阵元素的扩展坐标定义为(0,0),将矩阵302内的第2个矩阵元素的扩展坐标定义为(0,1),并且将矩阵304内的第1个矩阵元素的扩展坐标定义为(1,0),但本发明不限于此。在一些实施例中,图1的im2col模块114将扩展矩阵内的每一元素的扩展坐标回传给读取单元110,使得读取单元110可依据扩展矩阵(例如矩阵310)的扩展坐标来回推原始矩阵(例如矩阵300)在存储器106内的原始坐标。
图4为本发明实施例的图1im2col模块114的扩展矩阵示意图。如图4所示,图形处理器100的im2col模块114在一矩阵(或一图像)中取出矩阵400及矩阵404,其中矩阵400及矩阵404都为(H+2)*(W+2)的矩阵,其中(H+2)为矩阵列数,(W+2)为矩阵行数。在一些实施例中,矩阵400及矩阵404可表示图像中的2个不同特征。举例来说,假设图像中具有一只狗及一只猫的特征,则矩阵400可代表为狗的特征,以及矩阵404可代表为猫的特征。卷积核402及卷积核406皆为Kh*Kw的矩阵,其中Kh为卷积核的列数,Kw为卷积核的行数。当im2col模块114以卷积核402、卷积核406对矩阵400及矩阵404进行im2col扩展时,可得到图4的扩展矩阵410、矩阵420。扩展矩阵410及扩展矩阵420的列数为C*Kh*Kw。其中,C为扩展矩阵410的通道(channel)数,Kh为卷积核402、406的列数,Kw为卷积核402、406的行数。
在一些实施例中,图形处理器100的im2col模块114以卷积核402对矩阵400执行im2col操作,而得到扩展矩阵410中通道C0内的矩阵。图形处理器100的im2col模块114以卷积核406对矩阵400执行im2col操作,而得到扩展矩阵410中通道C1内的矩阵。举例来说,若矩阵400可代表为狗的特征,则以卷积核402对矩阵400进行扩展可代表将狗的鼻子特征取出,以卷积核406对矩阵400进行扩展可代表将狗的尾巴特征取出。简单来说,矩阵410中的通道C0表示狗的鼻子特征,矩阵410中的通道C1表示狗的尾巴特征。
在一些实施例中,图形处理器100的im2col模块114以卷积核402对矩阵404执行im2col操作,而得到扩展矩阵420中通道C0内的矩阵。图形处理器100的im2col模块114以卷积核406对矩阵404执行im2col操作,而得到扩展矩阵420中通道C1内的矩阵。举例来说,若矩阵404可代表为猫的特征,则以卷积核402对矩阵404进行扩展可代表将猫的鼻子特征取出,以卷积核406对矩阵404进行扩展可代表将猫的尾巴特征取出。简单来说,矩阵420中的通道C0表示猫的鼻子特征,矩阵420中的通道C1表示猫的尾巴特征。在一些实施例中,通道数C可代表矩阵400、矩阵404所各别具有的子特征数目。在图4的例示中,通道数C为2,亦即通道C0、通道C1,但本发明不限于此。
扩展矩阵410及扩展矩阵420的行数分别为H*W。由于在图4中图形处理器100的im2col模块114是对矩阵400及矩阵404(亦即2个特征)进行扩展,因此所得到的扩展矩阵(扩展矩阵410及扩展矩阵420)的总行数为N*H*W,其中N等于2,但本发明不限于此。在一些实施例中,N亦称为批次(batch)数目,批次数目即代表所需要识别图像的数目,例如需要识别图4的矩阵400及矩阵404。总而言之,扩展矩阵(例如矩阵410、矩阵420)的大小取决于原始矩阵(例如矩阵400、矩阵404)的大小及数目,以及卷积核(例如卷积核402、卷积核406)的大小及数目。
图5A为本发明实施例的原始矩阵示意图。图5B为本发明实施例的图5A原始矩阵的扩展矩阵示意图。如图5A、5B所示,图形处理器100的im2col模块114从原始矩阵500中取出矩阵502,并且执行im2col算法,以3*3的卷积核对矩阵502进行扩展,而得到扩展矩阵504。换句话说,扩展矩阵504为矩阵502的扩展矩阵。执行单元104定义扩展矩阵504内每一元素的一扩展坐标。举例来说,执行单元104将扩展矩阵504中第1列第1行元素0的扩展坐标定义为(0,0),将第5列第3行元素21的扩展坐标定义为(3,5),并且将第7列第11行元素56的扩展坐标定义为(11,7)。
接着,im2col模块114将扩展矩阵504中每一元素的扩展坐标传送给图1纹素单元102内的读取单元110(如图1读取单元110与im2col模块114之间的虚线箭头所示),使得读取单元110可依据扩展矩阵(例如矩阵504)的扩展坐标来回推原始矩阵(例如矩阵502)在存储器106内的原始坐标。读取单元110接收来自执行单元104的扩展坐标(例如坐标(X,Y)),并且首先以算式一计算扩展矩阵504的每一元素坐落在扩展矩阵504的哪一通道中(例如图4的通道数C)。
Cin为扩展矩阵的通道。Kw为卷积核的行数,Kh为卷积核的列数。Cin为将Y/(Kw*Kh)向下取整后所得到的值。在图5B的实施例中,Kw与Kh皆为3。举例来说,若读取单元110要计算图5B扩展矩阵504中的第5列第3行元素21落在哪一通道中,则将Y=5、Kw=3、Kh=3代入算式一中,可得到Cin=0。换句话说,读取单元110可得知第5列第3行元素21落在通道0之中(由于im2col模块114仅以一个3*3的卷积核对矩阵502进行扩展,因此扩展矩阵504具有一个通道)。
接着,读取单元110计算需要从扩展矩阵504读取多个通道才可构成一个自定义大小的矩阵(例如32*32的矩阵或16*16的矩阵)。在图5B的实施例中,由于扩展矩阵只有一个通道,因此读取单元110直接读取来自im2col模块114的扩展矩阵504。
再者,读取单元110以算式二计算扩展矩阵504具有几个批次(batch),或称批次索引(batch index)。在图5B的实施例中,
X为扩展矩阵504的每一元素的X坐标,H等于矩阵502的列数减2,W等于矩阵502的行数减2。批次索引为对X/(H*W)向下取整后所得到的值。举例来说,读取单元110要计算扩展矩阵504中的第5列第3行元素21位在扩展矩阵504中的哪个批次,则将X=3、H=4、W=8代入算式二中,而得知扩展矩阵504中的第5列第3行元素21位在一批次0。在图5B的实施例中,矩阵504只有一个批次,但本发明不限于此。
图5C为本发明实施例的卷积核及特征矩阵示意图。如图5所示,执行单元104将用于将图5A的矩阵502扩展的3*3卷积核转换为一1*9的卷积核506。执行单元104将图5B的扩展矩阵504与图5C的卷积核506做矩阵相乘,而得到一1*32的特征矩阵508。接着,读取单元110将特征矩阵508内第1~8个元素分为第一组、第9~16个元素分为第二组、第17~24个元素分为第三组,并且第25~32个元素分为第四组。执行单元104将上述第一组、第二组、第三组及第四组的元素依据组合,而将1*32的特征矩阵508转换成4*8的特征矩阵510。
在一些实施例中,读取单元110接着依据扩展矩阵504的每一元素的扩展坐标计算4*8的特征矩阵510在由多个4*8区块所组成的张量(tensor)空间中的索引,或称为图块索引(tile index)。读取单元110以算式三求得图块索引的数值。
X为扩展矩阵504的每一元素的X坐标。%表示为取余数。Align8_Width>>3代表在张量空间中向右移3格(例如图2的X方向)的4*8区块后所得到的X坐标。Align4_Hight>>2代表在张量空间中向下移2格(例如图2的Y方向)的4*8区块后所得到的Y坐标。在图5B的实施例中,由于扩展矩阵504内的第0列第0行的元素0、第5列第3行的元素21及第7列第11行的元素56的扩展坐标的X坐标皆小于32,因此第0列第0行的元素0、第5列第3行的元素21、及第7列第11行的元素56所分别对应的图5C4*8的特征矩阵510内的元素(例如元素A(对应扩展矩阵504的元素0)、元素B(对应扩展矩阵504的元素21)、元素C(对应扩展矩阵504的元素56))的图块索引的数值皆为0。
接着,读取单元110以算式四求得图5C的4*8的特征矩阵510在整个张量空间(由多个4*8区块所组成的空间)中的起始坐标(w_,h_)。起始坐标(w_,h_)为特征矩阵510中所有元素的特征坐标中的一个。
w_=(Tile_index<<3)%Align8_Width
h_={[(Tile_index<<3)/Align8_Width]}<<2 算式四
Tile_index<<3表示从图块索引的数值坐标处向左移3格的4*8区块后所得到的X坐标。在图5B、5C的实施例中,由于图块索引为0,则可得到特征矩阵510的在张量空间中的起始坐标为(w_,h_)=(0,0)。
读取单元110依据图5C特征矩阵510的起始坐标(w_,h_),利用算式五,回推图5A矩阵502在存储器106中的起始坐标(w_offset,h_offset)。
w_offset=w_*stride_w-pad_w
h_offset=h_*stride_h-pad_h 算式五
其中,stride_w、stride_h为卷积运算的步伐值(stride)。pad_w、pad_h为卷积运算的填充值(padding)。在图5A、5B、5C的实施例中,stride_w=stride_h=1,pad_w=pad_h=0,因此读取单元110可通过算式五,将特征矩阵510的起始坐标(w_,h_)转换为图5A矩阵502的起始坐标(w_offset,h_offset)=(0,0)。在一些实施例中,本发明所述起始坐标定义为矩阵中最左上角一元素的坐标。在一些实施例中,算式五也可由执行单元104所计算,并且再将其计算结果传输给读取单元110。
在一些实施例中。读取单元110依据矩阵502在存储器106中的起始坐标(w_offset,h_offset),再计算矩阵502的每一元素分布在存储器106中的哪些4*8区块内。接着,读取单元110读取存储有矩阵502的至少一元素的这些4*8区块,用以将这些4*8区块中对应于矩阵502的起始坐标或其他原始坐标的元素内的数据传送给im2col模块114。
回到图1,在卷积运算中,L1快取112从存储器106中读取并存储用于该卷积运算的原始矩阵(例如图5A的矩阵500及矩阵502),用以供该读取模块110的存取(如图1中读取单元110及L1快取112之间的虚线箭头)。在一些实施例中,当读取单元110在L1快取112中找不到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据时,L1快取112会向一L2快取(未图示)发出一请求,使得L2快取得以将到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据传送给L1快取112。其中,L2快取设置在L1快取112及存储器106之间,并且与L1快取112及存储器106电性连接。
在一些实施例中,当读取单元110在L2快取中仍找不到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据时,L2快取会发出一请求给存储器106,使得存储器106得以将到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据传送给L2快取,L2快取再将数据传送给L1快取112。最终,读取单元110可从L1快取112中找到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据。在一些实施例中,当读取单元110在L1快取112中找到对应于矩阵502的起始坐标或矩阵502的其他原始坐标的数据时,则读取单元110会将数据传送给执行单元104内的im2col模块114。
在图1中,寄存器文件116用以在该卷积运算中存储来自im2col模块114的原始矩阵(例如图5A的矩阵500及矩阵502)内的数据、扩展矩阵(例如图5B的扩展矩阵504)内的数据,及特征矩阵(例如图5C的特征矩阵510)内的数据。在一些实施例中,执行模块118依据寄存器文件116中的原始矩阵(矩阵500及矩阵502)内的数据、扩展矩阵(扩展矩阵504)内的数据,及特征矩阵(特征矩阵510)内的数据,执行卷积运算。在一些实施例中,存储单元108将执行单元104所执行卷积运算的一结果存入存储器106中。
图6为本发明实施例的图1的im2col模块114的示意图。如图6所示,im2col模块114包括一返回缓冲器(return buffer)600、一数据扩展器602、一数据多工器604,及一输出合并缓冲器(output merge buffer)606。在一些实施例中,返回缓冲器600接收并存放来自图1纹素单元102的原始矩阵(例如图5A的矩阵500及矩阵502)或至少一该等存储区块中对应于原始矩阵的原始坐标的数据(例如图5A矩阵500中位于坐标(w_offset,h_offset)元素内的数据)。数据扩展器602将原始矩阵以im2col的方式(例如执行一im2col算法)进行扩展,而得到对应于原始矩阵的一扩展矩阵(例如图5B扩展矩阵504)。数据多工器604从扩展矩阵中挑选执行单元104在卷积运算中所需的数据(例如图5B扩展矩阵504中第1列第1行元素0的数据、第5列第3行元素21的数据、第7列第11行元素56的数据)。输出合并缓冲器606将数据多工器604从扩展矩阵中挑选的数据进行合并,并且输出至寄存器文件116。
图7为本发明实施例的图1的图形处理器100加速卷积运算的流程图。本发明所公开加速卷积运算的方法包括:从一存储器中得到一原始矩阵;其中,存储器包括彼此相邻且大小相同的多个存储区块,原始矩阵存储在至少一该等存储区块中(步骤S700);执行一图像块重排为矩阵列(im2col)算法,依据一卷积核(kernal)的大小,将原始矩阵进行扩展,而得到一扩展矩阵;其中,该扩展矩阵内的每一元素分别具有一扩展坐标(步骤S702);将扩展矩阵与该卷积核相乘,而到对应于该原始矩阵的一特征(feature map)矩阵(步骤S704);依据特征坐标、卷积核的大小、步伐值及填充值,得到该原始矩阵的每一元素的一原始坐标(步骤S706);以及读取原始矩阵的每一元素的原始坐标所涵盖的至少一该等存储区块,并且将至少一该等存储区块中对应于原始坐标的数据输出(步骤S708)。
在一些实施例中,图1的纹素单元102内的读取单元110执行步骤S700。图1的执行单元104内的im2col模块114执行步骤S702。图1的执行单元104(或执行单元104内的im2col模块114)执行步骤S704。图1的纹素单元102内的读取单元110执行步骤S706及步骤S708。本发明的图形处理器100及卷积运算的加速方法使用专门的硬件(例如图6)来实现im2col的功能,并且做到了数据的随用随准备,因此减少了数据对带宽的需求,提高了推理的效率。
本发明更调整数据的存储方式(例如图2),以利于以硬件实现im2col的功能,最终达到减少推理层数、节省内存带宽的目的。通过定义新的数据存储方式,本发明的硬件读取模块(图1的读取单元110)及数据展开模块(图1的im2col模块114)可成功将推理时间减少20%以上,并且改善了执行im2col功能时对带宽的浪费。
虽然本发明的实施例如上述所描述,我们应该明白上述所呈现的只是范例,而不是限制。依据本实施例上述示范实施例的许多改变是可以在没有违反发明精神及范围下被执行。因此,本发明的广度及范围不该被上述所描述的实施例所限制。更确切地说,本发明的范围应该要以权利要求书及其相等物来定义。
尽管上述发明已被一或多个相关的执行来图例说明及描绘,等效的变更及修改将被依据上述规格及附图且熟悉这领域的其他人所想到。此外,尽管本发明的一特别特征已被相关的多个执行之一所示范,上述特征可能由一或多个其他特征所结合,以致于可能有需求及有助于任何已知或特别的应用。
本说明书所使用的专业术语只是为了描述特别实施例的目的,并不打算用来作为本发明的限制。除非上下文有明确指出不同,如本处所使用的单数型,一、该及上述的意思也包含复数型。再者,用词“包括”,“包含”,“(具、备)有”,“设有”,或其变化型不是被用来作为详细叙述,就是作为申请专利范围。而上述用词意思是包含,且在某种程度上意思是等同于用词“包括”。
除非有不同的定义,所有本文所使用的用词(包含技术或科学用词)是可以被属于本领域技术人员做一般地了解。我们应该更加了解到上述用词,如被定义在众所使用的字典内的用词,在相关技术的上下文中应该被解释为相同的意思。除非有明确地在本文中定义,上述用词并不会被解释成理想化或过度正式的意思。