二维矩阵卷积的并行计算方法

合集下载

卷积计算详细过程

卷积计算详细过程

卷积计算详细过程卷积计算呀,那可真是个挺有趣的东西呢!咱就好好唠唠这卷积计算的详细过程。

卷积计算呢,其实就是一种数学运算。

咱们就从简单的一维卷积开始说。

想象有两个数列,就好比是两个小队伍。

比如说数列A是[1, 2, 3],数列B是[4, 5]。

那怎么卷积呢?咱们就从数列A的第一个数开始,拿数列B的数来乘。

先拿1乘以4,得到4,再拿1乘以5,得到5。

然后呢,再拿数列A的第二个数2,也是乘以数列B的4和5,得到8和10。

再对数列A的第三个数3做同样的操作,得到12和15。

这时候呢,把得到的这些数按照一定的规则相加。

就像这样,先把前面得到的4和8相加,得到12,再把5和10相加,得到15,最后把12和15相加,得到27。

这27就是这个一维卷积的一个结果啦。

再来说说二维卷积。

这就有点像在一个小方格棋盘上玩游戏。

假设咱们有一个小方格矩阵A,比如说3行3列的,像这样:[1 2 3][4 5 6][7 8 9]还有一个小一点的方格矩阵B,比如说2行2列的:[1 2][3 4]咱们就从矩阵A的左上角开始,把矩阵B放在上面,就像小方块盖在大方块上一样。

然后用矩阵B的每个数去乘以它对应的矩阵A的数,再把这些乘积加起来。

就像这样,1乘以1加上2乘以3,得到7。

这就是在这个位置的卷积结果。

然后呢,咱们把矩阵B往右移一格,再做同样的操作,得到下一个结果。

一直这样移,移到不能再移了,就再往下移一行,又从左边开始移。

这样一直做下去,就能得到整个二维卷积的结果啦。

在做卷积计算的时候呢,有时候会遇到一些小麻烦。

比如说,要是矩阵A的边缘部分呢,矩阵B可能就不能完整地盖上去。

这时候怎么办呢?有好几种办法呢。

一种是不管它,就让边缘部分的卷积结果有点特殊。

还有一种是给矩阵A的边缘补上一些数,让矩阵B能完整地做卷积。

这就像是给小方格棋盘的边缘加了点东西,让游戏能正常玩下去。

卷积计算在好多地方都特别有用。

在图像处理里,就像是给图片做一个特殊的滤镜。

python conv2d计算公式

python conv2d计算公式

python conv2d计算公式
Conv2D是用于二维卷积神经网络中的公式,用于图像处理和计算机视觉任务。

在Python中,我们可以使用一些流行的深度学习库,例如TensorFlow或PyTorch,来执行Conv2D操作。

Conv2D是一种卷积操作,它通过滑动一个小的滤波器或内核在输入图像上的
每一个位置来计算输出。

这个滤波器在每个位置上与输入进行点积操作,然后将结果相加,得到输出的一个像素值。

Conv2D的计算公式可以表示为:
输出[i, j] = sum((滤波器 * 输入[i+m, j+n]))
其中,输出[i,j]表示输出图像的第i行和第j列的像素值,滤波器是一个小的矩阵,输入 [i+m, j+n] 表示输入图像的第i+m行和第j+n列的像素值。

这里的sum操作是对滤波器与输入进行点积后的结果进行求和。

Conv2D操作通常包括设置滤波器的大小、步幅(stride)、填充(padding)等
参数。

滤波器的大小决定了每个操作的感受野,即滤波器能够观察输入图像的区域大小。

步幅定义了滤波器从一个位置滑动到下一个位置的步长,而填充则用于在输入图像的边界周围添加额外的像素值。

通过调整这些参数,我们可以改变Conv2D操作的输出尺寸和特征提取的能力,以适应不同的图像处理任务和模型架构。

Python中Conv2D的计算公式是通过滤波器与输入图像的点积操作,并将结果
相加得到输出图像的像素值。

通过调整滤波器的大小、步幅和填充等参数,我们可以灵活地应用Conv2D操作来实现图像处理和计算机视觉任务。

二维卷积运算公式

二维卷积运算公式

二维卷积运算公式
二维卷积运算公式是指在图像处理和计算机视觉领域中常用的一种卷积操作。

它用于从输入图像中提取特征或进行图像滤波等任务。

设输入图像为I,卷积核(滤波器)为K,输出图像为O。

假设输入图像的尺寸为M×N,卷积核的尺寸为m×n。

二维卷积运算的公式如下:
O(i, j) = ∑∑ I(x, y) * K(i-x, j-y)
其中,O(i, j)表示输出图像O中坐标为(i, j)的像素值,x和y分别为输入图像I中的横纵坐标,i-x和j-y表示卷积核在输入图像上的位置。

这个公式表示输出图像中的每个像素值,是通过对输入图像中对应位置及周围区域的像素值与卷积核进行加权求和得到的。

卷积核对应的权重决定了卷积操作的特性,如边缘检测、模糊、锐化等。

在实际计算中,为了避免边界溢出,通常会在输入图像的边缘进行填充操作,常见的填充方式有零填充和复制填充。

此外,还可以通过调整步长(stride)来控制输出图像的尺寸。

需要注意的是,二维卷积运算公式中的乘法操作是逐元素进行的。

对于彩色图像,通常会使用多个通道的卷积核进行卷积运算,每个通道的结果再求和得到最终输出图像的像
素值。

卷积运算公式使用

卷积运算公式使用

卷积运算公式使用
卷积运算可以被定义为一种基于元素级别的空间类比运算,是一种图像处理技术,它通过在输入信号的不同位置处构建特征以及不同的输出来进行分类或定位。

所构建的特征被称为卷积核,它们在被运用到输入信号中时,与输入信号的一部分邻域进行乘积。

卷积运算在神经网络图像分类中被广泛使用,因其可以进行快速有效的特征抽取。

卷积运算的数学模型如下:给定两个矩阵A和B,B称为卷积核,A称为输入
特征/信号,滑动步长要么是1,要么是整个卷积核的大小,若步长为1,则卷积结果为每个卷积核滑动到A矩阵每个位置时,所做的乘积加和操作,得到的矩阵C,
即C[i,j]=Sum(A[i,j]*B[k,l]),k,l表示卷积核的索引,Sum表示卷积核的所有
元素的和,式中括号内的内容表示矩阵A中每个元素与卷积核中元素一一对应做乘积,最终得到结果矩阵C,其目的是抽取输入矩阵A中具有某种特定特征的部分。

卷积处理技术在计算机视觉任务中有广泛的应用,例如视觉分类和定向,它的
重要性表明其是满足各种任务和用例的有效工具,以及在整个机器学习任务中的重要性,例如语义分割、目标检测、分析等。

此外,它还构成了深层神经网络的基础,使得计算机可以与神经元细胞以相同的算法进行数据处理。

总之,卷积运算是一种受到深度学习社区广泛欢迎的图像处理技术,它可以高
效有效地提取(卷积)复杂模式和特征,广泛应用于视觉任务,构建深度神经网络,使计算机能够以三维方式模仿生物神经系统处理信息,极大地拓展计算机视觉领域的能力。

matlab中conv2函数和c语言fft

matlab中conv2函数和c语言fft

题目:探索matlab中conv2函数和c语言fft随着科技的发展,计算机编程在各个领域的应用越来越广泛。

其中,matlab是一种非常流行的编程语言和环境,用于数学计算、数据分析和算法开发等各种用途。

而在matlab中,conv2函数和c语言fft被广泛应用于信号处理、图像处理和深度学习等领域。

本文将深入探讨这两个函数的原理、用法和优缺点,以帮助读者更全面地理解它们的应用价值。

1. conv2函数conv2函数是matlab中用于二维离散卷积运算的函数,它可以对图像、矩阵等二维数据进行卷积运算。

在使用conv2函数时,我们需要指定一个卷积核(即滤波器),然后对输入数据进行卷积运算,得到输出结果。

这个过程在图像处理和信号处理中经常被用到,可以实现平滑、锐化、边缘检测等各种图像处理效果。

在实际应用中,conv2函数的性能和效率受到很多因素的影响,比如卷积核的大小、输入数据的尺寸、硬件设备的性能等。

在使用conv2函数时,需要根据具体情况对参数进行调整,以获取更好的效果和性能。

2. c语言fftc语言fft是一种用于计算快速傅里叶变换(FFT)的算法,它可以高效地将时域信号转换为频域信号。

在信号处理、通信系统、音频处理等领域中,fft算法被广泛应用,可以实现信号的频谱分析、滤波、频域变换等操作。

与传统的傅里叶变换算法相比,c语言fft算法具有计算速度快、内存占用少等优点。

这使得它在处理大规模数据时有着明显的性能优势,可以更高效地完成复杂的信号处理任务。

3. 对比与结合在实际应用中,conv2函数和c语言fft算法通常会结合使用,以实现更复杂和高级的图像处理和信号处理功能。

在图像识别、目标检测、语音识别等领域中,我们常常需要对图像和音频数据进行多步处理,使用conv2函数和c语言fft算法可以极大地简化处理流程,提高处理效率。

4. 个人观点在我看来,conv2函数和c语言fft算法在matlab中的应用是非常有价值的。

卷积运算的四个步骤

卷积运算的四个步骤

卷积运算的四个步骤
卷积运算是一种常用的数学运算,它在信号处理、图像处理、机器学习等领域有着广泛的应用。

卷积运算的基本流程通常包括以下四个步骤:
1.定义卷积核:卷积核是一个小的矩阵,它用于对数据
进行卷积运算。

通常,卷积核的大小为 $m \times
n$,其中 $m$ 和 $n$ 是整数。

2.初始化输出矩阵:输出矩阵是卷积运算的结果。


常,输出矩阵的大小为 $M \times N$,其中 $M$ 和
$N$ 是整数。

在计算卷积运算的结果之前,需要将输
出矩阵初始化为全零矩阵。

3.对输入矩阵进行卷积:卷积运算的核心步骤是对输入
矩阵进行卷积。

卷积运算的过程是,将卷积核与输入
矩阵的对应位置的元素进行乘积运算,然后将结果累
加到输出矩阵的对应位。

卷积运算过程

卷积运算过程

卷积运算过程卷积运算过程卷积运算是数字信号处理中常用的一种运算方法。

它通过将输入信号与卷积核进行逐元素相乘并求和的方式,实现信号的滤波、特征提取等功能。

1. 信号与卷积核的尺寸在进行卷积运算前,首先需要确定输入信号和卷积核的尺寸。

输入信号一般为二维矩阵,可以表示为一个M行N列的矩阵。

卷积核也是一个二维矩阵,其大小一般为m行n列。

其中,M、N、m、n分别表示矩阵的行数和列数。

2. 卷积运算的过程卷积运算的过程可以分为以下几个步骤:(1)将卷积核与输入信号的某一部分进行逐元素相乘。

在进行卷积运算时,卷积核会在输入信号的每个位置上进行滑动,将卷积核所覆盖的区域与输入信号的对应部分进行逐元素相乘。

(2)求和。

将相乘后的结果进行求和运算,得到一个标量值。

(3)移动卷积核。

在上一步求和之后,将卷积核向下或向右移动一个像素,继续进行相乘和求和的操作。

(4)重复步骤(1)~步骤(3)。

根据输入信号和卷积核的尺寸,在整个输入信号的范围内进行步骤(1)~步骤(3)的重复操作,直到完成整个卷积运算。

3. 卷积运算的特点卷积运算具有一些特点,包括:(1)局部连接性:卷积核在进行相乘运算时只考虑输入信号的局部区域,而不关注其他位置的内容,这样可以减少计算量。

(2)权值共享:卷积核在进行滑动时使用的权值是相同的,这样可以减少参数个数,提高模型的泛化能力。

(3)特征提取:卷积运算通过滑动卷积核,对输入信号进行逐元素相乘并求和的操作,可以提取输入信号的特征,包括边缘、纹理、形状等。

4. 应用领域卷积运算在计算机视觉、自然语言处理等领域有着广泛的应用。

在计算机视觉中,卷积神经网络(CNN)利用卷积运算进行特征提取,可以用于图像分类、目标检测等任务。

而在自然语言处理中,卷积神经网络可以用于文本分类、情感分析等任务。

综上所述,卷积运算是一种重要的信号处理方法,通过对输入信号与卷积核的逐元素相乘和求和操作,实现了信号的滤波和特征提取。

二维卷积定理

二维卷积定理

二维卷积定理在深度学习中,卷积神经网络是一个被广泛运用的网络结构,而其中的卷积操作和二维卷积定理是其中的两个重要概念。

本文将围绕二维卷积定理展开讲述,包括其含义、意义以及应用等方面,以期对读者有所启发。

一、二维卷积的含义在了解二维卷积定理之前,我们需要先明确二维卷积的含义。

二维卷积是指将两个函数矩阵相乘后再进行积分,其具体计算公式如下:$(f * g)(x,y)=\int^\infty_{-\infty}\int^\infty_{-\infty}f(u,v) g(x-u,y-v) dudv$其中,$f$和$g$为两个函数矩阵,$(x,y)$为当前的位置坐标,$u,v$为定义域内的单位坐标。

可以看出,二维卷积的过程实际上是将一个函数矩阵上的像素值分别与另一个函数矩阵进行加权平均,从而得到一个新的矩阵。

二、二维卷积定理的意义二维卷积定理指的是经过傅里叶变换处理后的两个函数矩阵进行卷积操作所得到的结果也可以通过对两个函数矩阵进行傅里叶变换后,在频域内相乘后再进行傅里叶反变换得到,即$f*g=F^{-1}(F(f) \cdot F(g))$其中,$F()$表示函数进行傅里叶变换后的结果,$F^{-1}()$表示函数进行傅里叶反变换后的结果。

这个定理的成立是因为傅里叶变换具有线性性,即对于两个函数的和函数和差函数分别在频域内等于它们分别在频域内的和函数和差函数。

二维卷积定理的意义在于可以将原本需要复杂的卷积运算转化为一个更简单的频域内的乘法运算,这一过程可以显著提升运算速度,进而加快神经网络模型的训练速度。

三、二维卷积定理的应用二维卷积定理被广泛地运用于卷积神经网络的训练过程中,此外还被应用于图像处理、频谱分析等领域。

在卷积神经网络中,卷积层的构建就是基于二维卷积操作,并且在进行求导计算时也会使用二维卷积定理。

在图像处理中,二维卷积定理可以用于模糊滤波器的设计和锐化滤波器的设计,具体实现方法是在频域对滤波器进行相应的处理,从而得到所需的滤波器。

二维卷积计算举例

二维卷积计算举例

二维卷积计算:解析其原理和应用领域卷积计算是深度学习中常见的一种操作,它广泛应用于图像处理、语音识别、自然语言处理等领域。

其中,二维卷积计算是卷积计算的一种形式,专门针对二维数据,如图像、矩阵等。

本文将通过举例和案例分析的形式,介绍二维卷积计算的基本原理、应用领域以及如何实现。

一、二维卷积计算基本原理二维卷积计算是指对两个二维矩阵进行运算,得到一个新的矩阵。

具体来说,给定两个矩阵A和B,其中A为输入矩阵,B为卷积核,通过在A上滑动B并执行相应的乘法操作,得到输出矩阵C。

卷积计算的公式如下:C[i][j]=Σ[(A[i+x][j+y]*B[x][y])forallx,y]其中,i和j表示输出矩阵C的坐标,x和y表示卷积核B的坐标。

这个公式表明,对于输出矩阵C中的每一个位置(i,j),将卷积核B在输入矩阵A上滑动,并计算乘积之和。

二、应用领域二维卷积计算在图像处理、自然语言处理等领域有着广泛的应用。

下面我们以图像处理为例,介绍二维卷积计算在实际问题中的应用。

在图像处理中,我们可以将图像看作一个二维矩阵,而卷积核可以看作是一个小的滤波器。

通过将卷积核在图像上滑动并执行乘法操作,可以得到新的特征图,这些特征图能够描述图像的不同特征,如边缘、纹理等。

例如,我们可以使用不同的卷积核来提取图像的不同特征。

一个卷积核对图像中的边缘特征比较敏感,而另一个卷积核对图像中的纹理特征比较敏感。

通过将不同的卷积核应用于同一图像,我们可以得到不同的特征图,这些特征图可以用于后续的分类或识别任务。

三、实现方式在实际应用中,我们通常使用深度学习框架来实现二维卷积计算。

目前流行的深度学习框架包括TensorFlow、PyTorch等。

这些框架提供了高效的计算引擎和丰富的API,使得我们可以轻松地实现二维卷积计算。

例如,在TensorFlow中,我们可以使用tf.nn.conv2d函数来实现二维卷积计算。

这个函数接受输入矩阵和卷积核作为参数,并返回输出矩阵。

卷积并行算法设计与分析

卷积并行算法设计与分析

C)Others: ([(K+1)M-1]2/(K2M2)+1)N2+PM2+N2/(K2M2);
(2)从任务调度的角度来考虑;
P q + r - 1 + M -1
进 程
需 要 原 始 矩 阵
计 算 结 果 矩 阵
0
#
I Y ' [ 0 .. q M 1 ]
I Y ' [ q 1 .. 2 q M
… …

q
M


C
C
Y
[ 0 .. q ]
共 q+1 行
1
#
]

q
M


Y
[ q 1 .. 2 q 1

C
Y
[ rq r .. r 1 q r 1 ]
共 q 行
q
M 1

(r+ 1 )
#
I Y ' [ r 1 q r .. r 2 q M r 2 ]

C
Y
[ r 1 q r .. r 2 q r 1 ]
第七章 卷积并行算法设计与分析
• 卷积运算的重要意义:
• 一 串行卷积: • 1 公式:
M 1
C 1D [i ]

u0
I [( i u ) mod N ] * T [ u ],
0 i N
M 1 M 1
C 2 D [i, j ]

u0 v0
I [( i u ) mod N , ( j v ) mod N ] * T [ u , v ],

矩阵卷积计算公式

矩阵卷积计算公式

矩阵卷积计算公式矩阵卷积是一种广泛应用于信号处理、图像处理以及机器学习领域的数学运算。

它可以通过对输入矩阵和卷积核进行运算,得到输出矩阵,从而实现对输入数据的特征提取和变换。

在本文中,我们将介绍矩阵卷积的计算公式,并探讨一些实际应用案例。

一、矩阵卷积定义与计算公式矩阵卷积可以看作是一种滑动窗口的操作,通过定义一个卷积核,将其在输入矩阵上进行平移和运算,得到输出矩阵。

假设输入矩阵为A,卷积核为B,输出矩阵为C,那么矩阵卷积的计算公式如下:C(i,j) = ∑(m,n) A(i+m,j+n) * B(m,n)其中,C(i,j)表示输出矩阵C的第i行第j列的元素值,∑(m,n)表示对卷积核矩阵B的所有元素进行求和运算。

A(i+m,j+n)表示输入矩阵A 在第(i+m)行第(j+n)列的元素值,B(m,n)表示卷积核矩阵B的第m行第n列的元素值。

矩阵卷积的计算过程中,可以通过改变卷积核的大小、形状和元素值,来实现不同的特征提取和变换效果。

例如,当卷积核的元素值为[1,1,1;1,1,1;1,1,1]时,可以实现均值滤波操作;当卷积核的元素值为[-1,-1,-1;-1,8,-1;-1,-1,-1]时,可以实现边缘检测操作。

二、矩阵卷积的实际应用1. 图像处理矩阵卷积在图像处理中被广泛应用。

例如,可以利用矩阵卷积来实现图像的平滑、锐化、边缘检测等操作。

通过选择不同的卷积核,可以实现对图像不同特征的提取和增强。

另外,矩阵卷积还可以应用于图像的压缩和恢复等领域。

2. 信号处理在信号处理中,矩阵卷积被广泛应用于信号的滤波和降噪。

通过定义适当的卷积核,可以实现对信号中不同频率成分的提取和抑制。

例如,在音频信号处理中,可以利用矩阵卷积来实现不同音效的添加和去除。

3. 机器学习在机器学习领域,矩阵卷积被应用于卷积神经网络(Convolutional Neural Networks, CNNs)。

CNNs是一种特殊的神经网络结构,通过多层卷积操作来提取输入数据的特征,并进行分类和识别。

一维卷积和二维卷积混合运算法则

一维卷积和二维卷积混合运算法则

一维卷积和二维卷积混合运算法则在深度学习领域,卷积神经网络(CNN)是一种非常强大的模型,它在图像识别、语音识别等领域取得了巨大成功。

在CNN中,卷积操作是其中的核心部分,而一维卷积和二维卷积是两种常见的卷积操作。

本文将探讨一维卷积和二维卷积混合运算法则,以及它们在实际应用中的意义。

一维卷积是指对一维数组进行卷积操作,常用于处理时间序列数据或文本数据。

例如,对于一个长度为n的一维数组A和一个长度为m的卷积核B,一维卷积操作可以通过以下公式进行计算:C[i] = Σ(A[i:i+m] B)。

其中,C是卷积操作的结果数组,A[i:i+m]表示数组A中从第i个元素到第i+m个元素的子数组,表示逐元素相乘,Σ表示求和运算。

一维卷积可以很好地捕捉到数据中的局部模式和特征。

而二维卷积则是对二维矩阵(如图像)进行卷积操作,常用于图像处理和计算机视觉任务。

对于一个高度为h、宽度为w的二维矩阵A和一个高度为p、宽度为q的卷积核B,二维卷积操作可以通过以下公式进行计算:C[i,j] = Σ(Σ(A[i:i+p, j:j+q] B))。

其中,C是卷积操作的结果矩阵,A[i:i+p, j:j+q]表示矩阵A中从第i行第j列到第i+p行第j+q列的子矩阵,表示逐元素相乘,Σ表示求和运算。

二维卷积可以有效地提取图像中的空间特征和纹理信息。

在实际应用中,有时候我们需要对不同维度的数据进行联合处理,这时就需要使用一维卷积和二维卷积的混合运算。

例如,在处理视频数据时,可以先对每一帧图像进行二维卷积操作,然后再对不同帧之间的特征序列进行一维卷积操作,从而同时捕捉到图像的空间特征和时间序列特征。

这种混合运算法则可以更好地挖掘数据中的多维特征,提高模型的表达能力和泛化能力。

总之,一维卷积和二维卷积混合运算法则在深度学习领域具有重要意义,它们可以帮助我们更好地处理不同维度的数据,提取更丰富的特征信息,从而提高模型的性能和效果。

在未来的研究和应用中,混合运算法则将继续发挥重要作用,推动深度学习技术的发展和应用。

conv2d计算公式

conv2d计算公式

conv2d计算公式
iConv2d是二维卷积运算,通常用于卷积神经网络(CNN)中的卷积层。

对于输入的二维数据(如图像),卷积层通过一组可学习的卷积核对其进行卷积操作,从而提取特征。

Conv2d计算公式如下:$$\begin{aligned}O_{i,j}&=\sum_{m=0}^{k}\sum_{n=0}^{k}I_{im ,jn}\cdotK_{m,n}b\&=\sum_{m=0}^{k}\sum_{n=0}^{k}I_{im,jn}\c dotK_{k-m,k-n}b\end{aligned}$$其中,$I$表示输入的二维数据,$K$表示卷积核,$b$表示偏置,$k$表示卷积核的大小(通常为奇数)。

$O_{i,j}$表示输出的二维数据中的第$i$行第$j$列的值。

卷积操作实际上是对于输入数据中的每个点,将其与卷积核中对应的元素相乘,再对所有元素求和,得到对应的输出值。

对于每个卷积核,会得到一个输出通道的特征图,多组卷积核可以得到多个特征图,通常称为输出通道数。

在卷积操作中,为了避免输出特征图的大小变小,可以通过填充输入数据来实现。

同时,为了进一步加强特征提取能力,通常在卷积操作之后会添加激活函数进行非线性变换。

卷积层计算方法

卷积层计算方法

卷积层计算方法
卷积层是深度学习模型中的重要组成部分,用于处理图像、语音、自然语言等数据。

卷积层的计算方法包括以下几个步骤:
1. 输入数据:卷积层接收输入数据,这些数据通常是一维或二维的张量。

2. 卷积核:卷积层使用卷积核进行卷积操作。

卷积核是一个小的矩阵,通常由权重和偏置组成。

3. 卷积操作:卷积层将卷积核与输入数据进行卷积操作,生成输出数据。

卷积操作可以理解为将卷积核在输入数据上滑动,并对每个位置进行乘积和加法运算。

4. 激活函数:卷积层通常使用激活函数对输出数据进行非线性变换,以增加模型的表达能力。

5. 池化层:卷积层后通常会接一个池化层,用于减小数据的维度和计算复杂度,同时保留重要的特征信息。

通过以上步骤,卷积层能够从输入数据中提取有用的特征,为后续的分类、回归等任务提供支持。

二维卷积的计算原理

二维卷积的计算原理

二维卷积的计算原理
二维卷积的计算原理
图像处理的过程中经常要用到,至于一维卷积我就不罗嗦了,大家都应该知道
设矩阵A和矩阵B,A的行数和列数分别为Mr, Mc, B的行数和列数分别为Nr, Nc,
则有:
且s,t满足条件0≤ s < Mr+Nr-1, 0 ≤ t < Mc+Nc-1;
下面看示例:
仔细看一下就知道,M1刚好是M2的180度翻转,如果按照一维形式展开的话也是一样的,通常我们对图像进行处理时也要边缘进行对齐的,以取得我们所要的图片。

假设小图框为变换矩阵M1,大图框为位图,我们可以对C(2,2)进行计算:
C(2,2) = 1*6 + 2*7+3*8 + 4*7 + 5*8 + 6*9 + 7*8+8*9+9*10 = 384
如果元素的边界部分为空,就用0补足,例如C(1,1), C(0,0)等。

卷积计算的数据并行实现方法

卷积计算的数据并行实现方法

卷积计算的数据并行实现方法
赵晓红;张发存;王忠;沈绪榜
【期刊名称】《微电子学与计算机》
【年(卷),期】2003(20)B12
【摘要】基于局部线性滤波函数的大多数图像处理操作,都可以表示成图像数据与一个权值样板的卷积。

对于N×N的图像M×M(M<N)的模板,卷积算法在单处理机上用传统的方法实现需要O(N^2M^2)时间。

显然它应当采用数据并行的处理方法来实现。

本文较详细地讨论了卷积算法在局部寄存器个数受限与不受限情况下的两维处理元阵列的数据并行实现方法,提出了一种适用于具有有限局部寄存器的-维处理元阵列的卷积并行算法,并对算法的复杂度进行了分析。

【总页数】4页(P4-7)
【关键词】卷积计算;数据并行;二维处理元阵列;一维处理元阵列;局部线性滤波函数;图像处理;算法;复杂度
【作者】赵晓红;张发存;王忠;沈绪榜
【作者单位】西安微电子技术研究所,西安710054
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.直方图计算的数据并行实现方法 [J], 赵晓红;沈绪榜;张艳宁;王忠;张发存
2.MCC-SIMD数据并行卷积计算方法的研究 [J], 张发存;赵晓红;王虑;沈绪榜
3.基于MPI的卷积计算并行实现 [J], 鲁金;马可;高剑
4.一种通用的卷积码并行硬件实现方法 [J], 刘合武
5.一种实现拓扑关系高效并行计算的矢量数据划分方法 [J], 杨宜舟;吴立新;郭甲腾;李志锋;刘善军
因版权原因,仅展示原文概要,查看原文内容请购买。

二维卷积定理

二维卷积定理

二维卷积定理
二维卷积定理是指,在二维图像和滤波器的卷积运算中,可以通过傅里叶变换将卷积运算转化为点乘运算,从而大大降低计算复杂度。

具体而言,对于二维图像f(x,y)和二维滤波器h(x,y),它们的卷积
运算可以表示为f(x,y)*h(x,y),在频域中则可以表示为
F(u,v)H(u,v),其中F(u,v)和H(u,v)分别为f(x,y)和h(x,y)的傅里叶变换。

因此,可以通过傅里叶变换将二维卷积运算转化为
F(u,v)H(u,v)的点乘运算,然后再通过傅里叶逆变换将结果转回到空域。

这样做的好处是,傅里叶变换的计算复杂度只有图像大小的对数级别,因此可以大大加速卷积运算的速度。

- 1 -。

二维离散valid卷积计算

二维离散valid卷积计算

二维离散valid卷积计算
首先,我们需要明确卷积核的大小和输入数据的大小。

假设卷
积核的大小为m×n,输入数据的大小为p×q。

在valid卷积计算中,输出数据的大小为(p-m+1)×(q-n+1)。

接下来,我们将卷积核以步长为1在输入数据上滑动,并在每
个位置上进行卷积计算。

具体来说,对于输入数据的每个位置,将
卷积核与输入数据对应位置上的元素相乘,然后将所有乘积的结果
相加,得到输出数据中对应位置的元素值。

在计算valid卷积时,需要注意边界处理。

由于valid卷积不
对输入数据进行填充,因此在卷积核滑动到输入数据边缘时,可能
会导致部分卷积核超出输入数据的范围。

通常的做法是忽略超出范
围的部分,只计算卷积核与输入数据重叠部分的乘积和。

需要注意的是,valid卷积计算是一种局部操作,它在每个位
置上独立地对输入数据进行卷积运算,不考虑全局信息。

这种卷积
计算适用于许多图像处理任务,如边缘检测、特征提取等。

总之,二维离散valid卷积计算是一种常见的图像处理操作,
通过卷积核在输入数据上的滑动和乘积相加运算,得到输出数据的方法。

它在图像处理和计算机视觉领域有着广泛的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第52卷第3期2018年3月浙 江 大 学 学 报(工学版)J o u r n a l o f Z h e j i a n g U n i v e r s i t y (E n g i n e e r i n g Sc i e n c e )V o l .52N o .3M a r .2018收稿日期:20170304.网址:w w w.z j u j o u r n a l s .c o m /e n g /f i l e u p/H T M L /201803013.h t m 基金项目:国家自然科学基金资助项目(60133007,61572025);国家重点研发计划资助项目(2016Y F B 0200401).作者简介:张军阳(1987 ),男,博士生,从事体系结构㊁机器学习㊁嵌入式系统研究.o r c i d .o r g/0000-0002-2993-4494.E -m a i l :z h a n g j u n y a n g11@n u d t .e d u .c n 通信联系人:郭阳,男,教授.o r c i .o r g /0000-0003-1600-4666.E -m a i l :g u o y a n g@n u d t .e d u .c n D O I :10.3785/j.i s s n .1008-973X.2018.03.013二维矩阵卷积的并行计算方法张军阳,郭阳,扈啸(国防科技大学计算机学院,湖南长沙410073)摘 要:为了提高卷积神经网络模型中二维矩阵卷积的计算效率,基于F T 2000多核向量处理器研究二维矩阵卷积的并行实现方法.通过使用广播指令将卷积核元素广播至向量寄存器,使用向量L O A D 指令加载卷积矩阵行元素,并通过混洗操作将不易并行化的矩阵卷积操作变成可以向量化的乘加操作,实现了通过减少访存㊁充分复用已取数据的方式来提高算法的执行效率.设计卷积矩阵规模变化㊁卷积核规模不变和卷积矩阵规模不变㊁卷积核规模变化2种常用矩阵卷积计算方式,并对比分析不同计算方式对算法执行效率的影响.基于服务器级多核C P U 和T I 6678进行实验对比,实验结果显示,F T 2000比多核C P U 及T I 6678具有更好的计算优势,相比多核C P U 最高可加速11974倍,相比T I 6678可加速21倍.关键词:矩阵卷积;向量处理器;并行算法;性能优化;卷积神经网络中图分类号:T P391 文献标志码:A 文章编号:1008973X (2018)03051509P a r a l l e l c o m p u t i n g me t h o df o r t w o -d i m e n s i o n a lm a t r i x c o n v o l u t i o n Z H A N GJ u n -y a ng ,G U O Y a n g,HU X i a o (C o l l e g e o f C o m p u t e r ,N a t i o n a l U n i v e r s i t y o f D e f e n s eT e c h n o l o g y ,C h a n gs h a 410073,C h i n a )A b s t r a c t :A p a r a l l e l i m p l e m e n t a t i o nm e t h o db a s e do nm u l t i -c o r e v e c t o r p r o c e s s o rF T 2000w a s p r o po s e d t o i m p r o v e t h e c o m p u t a t i o n a l e f f i c i e n c y of t w o -d i m e n s i o n a lm a t r i x c o n v o l u t i o n i n c o n v o l u t i o nn e u r a l n e t w o r k m o d e l .T h e c o n v o l u t i o nk e r n e l e l e m e n tw a s b r o a d c a s t t o v e c t o r r eg i s t e r b y u s i n g b r o a d c a s t i n s t r u c t i o n ;th e r o we l e m e n t s o f t h e c o n v o l u ti o nm a t r i xw e r e v e c t o r l o a d e d .W i t h s h u f f l e o p e r a t i o n ,t h e o pe r a t i o n o fm a t r i x c o n v o l u t i o n ,w h i c h i sh a r dt ob e p a r a l l e l l e d ,c a nb ev e c t o r i z e db y u s i n g m u l t i p l y -a d do pe r a t i o n ,a n dt h e i m p l e m e n t a t i o nef f i c i e n c y w a s a c h i e v e d t h r o u gh r e d u c t i o n o f a c c e s s ,f u l l r e u s e o f o b t a i n e d d a t a .T w o k i n d s o f c o m m o nm a t r i xc o n v o l u t i o n m e t h o d sw e r ed e s i g n e d :c h a n g i n g c o n v o l u t i o n m a t r i xs c a l ew i t hc o n s t a n t c o n v o l u t i o nk e r n e l s i z e ,a n d c o n s t a n t c o n v o l u t i o nm a t r i x s i z ew i t h c h a n g i n g c o n v o l u t i o nk e r n e l s c a l e .T h e i n f l u e n c e o f d i f f e r e n t c a l c u l a t i o n m e t h o d s o n t h e a l g o r i t h m e x e c u t i o n e f f i c i e n c y w a s a n a l yz e d a n d c o m p a r e d .F i n a l l y ,t h e c o m p a r i s o ne x p e r i m e n t sw e r e t a k e nb a s e do n t h e s e r v e r -l e v e lm u l t i -c o r eC P Ua n d T I 6678.R e s u l t s s h o wt h a tF T 2000h a sab e t t e r c o m p u t i n g a d v a n t a geo v e rm u l t i -c o r eC P Ua n dT I 6678,w h i c hc a na c c e l e r a t eu p t o 11974t i m e s c o m pa r e d t om u l t i -c o r eC P U ,w h i l e t oT I 6678i t i s 21t i m e s .K e y w o r d s :m a t r i x c o n v o l u t i o n ;v e c t o r p r o c e s s o r ;p a r a l l e l a l g o r i t h m ;p e r f o r m a n c e o p t i m i z a t i o n ;c o n v o l u t i o n n e u r a l n e t w o r k以移动通信㊁互联网和智能终端等为代表的计算机和信息技术已在短短的几年间彻底改变了人类社会的生产和生活方式,人类已经进入到了大数据和智能科技时代.当下,从城市安防到社区监控,图像传感器已遍布城市的每个角落.数据时代不仅需要好的传感设备㊁海量存储和快速传播技术,还迫切需要对这些信息进行智能分类㊁识别和检索.让计算机能够像人类一样分析和理解真实世界中的图像一直是人类的梦想,然而现有的计算机图像理解技术无法满足这样的需求.从2006年开始,深度学习(d e e p l e a r n i n g, D L)[1]技术开始受到学术界的广泛关注,在2012年举行的大规模图像识别挑战赛上,基于神经网络模型的A l e x N e t将传统图像识别错误率降低了41%,进而引发深度学习技术在工业界的研究热潮.当前基于深度学习的目标识别技术在图像识别[2]㊁语音识别[3]㊁自然语言处理等领域都取得了重大突破.深度学习由一系列神经网络模型组成,包括卷积神经网络(c o n v o l u t i o n a l n e u r a l n e t w o r k, C N N)[4]㊁受限玻尔兹曼机(r e s t r i c t e d B o l t z m a n n m a c h i n e,R B M)[5]㊁自动编码机[6]㊁循环神经网络(r e c u r r e n t n e u r a l n e t w o r k,R N N)[7]等常用模型.其中基于卷积神经网络的深度学习模型是当前图像识别领域中的主力,在2012 2017年的大规模图像识别挑战赛(l a r g es c a l ev i s u a l r e c o g n i t i o nc h a l l e n g e, I L S V R C)中都取得了最佳识别率.高识别率同时带来了巨大的计算量,卷积神经网路模型中卷积层的计算量约占整个模型计算量的85%以上[8],因此,目前的许多研究大多是针对卷积神经网络的加速器,如G P U(g r a p h i c p r o c e s s i n g u n i t)[9-10]㊁F P G A (f i e l d p r o g r a m m a b l e g a t e d a r r a y)[11-12]㊁A S I C (a p p l i c a t i o ns p e c i f i c i n t e g r a t e dc i r c u i t)[13-15]㊁向量D S P(d i g i t a l s i g n a l p r o c e s s o r)等.向量处理器是一种具有多功能单元㊁多处理部件的新颖体系结构[16],其处理器内部包括面向流控处理和逻辑计算的标量处理部件和针对密集型大规模数据处理的向量处理部件,该向量处理部件内部集成了丰富的能够执行向量计算的向量处理单元,每个处理单元又具有若干个浮点乘加器和定点乘加器,支持单条指令完成浮点或定点的乘累加操作,能够提供强大的计算能力.然而针对新颖的微处理器结构,配套的软件开发工具也是一个重要的研究内容,如何通过软件编程的方式将多核向量处理器内部的所有硬件资源利用起来,发挥其多功能部件㊁多处理单元㊁充分利用各个层级的并行性,将不同的应用高效的映射是当前向量化程序面临的一大难题[17].本文以二维矩阵卷积的计算为研究对象,面向多核向量处理器F T2000展开并行算法与性能优化研究.1)分析算法加速瓶颈并设计相应的并行方案;2)针对向量处理器的体系结构特点提出一种提高数据复用率的向量化实现方法;3)提出一种针对多核向量处理器的矩阵卷积并行实现方案;4)对比分析2种矩阵卷积计算模式对卷积实现性能的影响.图1F T2000处理器体系结构F i g.1 A r c h i t e c t u r e o f p r o c e s s o rF T20001向量处理器体系结构与优化策略1.1微处理器体系结构F T2000是一种面向密集型浮点计算的12核向量处理器,单核结构如图1所示,12核的单精度浮点性能达2.4T F L O P S,12个核是一个同构的微处理器核通过环形互联网络连接起来,单核内部集成向量处理单元和标量处理器单元,标量单元负责控制和逻辑计算,向量单元主要面向密集型计算,其615浙江大学学报(工学版)第52卷包含16个向量处理单元,每个处理单元由若干浮点乘加单元和寄存器文件构成,所有的向量处理单元可以统一编址.此外,向量处理单元和标量处理单元可以通过共享寄存器进行数据交互,并且通过广播操作支持标量寄存器到向量寄存器的广播操作.向量处理单元可以同时发射11条指令,该执行包可以由若干条向量指令和若干条标量指令组成,指令派发部件可以对该执行包中的指令进行译码并指派到相应的功能单元去执行,标量处理单元具有本地标量存储体,主要存放需要标量来处理的数据,比如逻辑操作㊁地址计算等,因此,标量存储体空间较小,而向量处理单元主要存放需要进行大规模密集型计算的数据,因此,其存储体规模较大,标量存储体约96K B,向量存储体约768K B.环形互联网络上面的12个处理器核可以通过共享D D R的方式通过D MA操作进行D D R 与核内数据的相互传输,同时D D R也支持全局缓存,方便多核间的数据共享与交互.1.2优化策略(1)循环展开.循环展开是一种常用的程序优化方法,可以通过减少循环体的循环次数,减少分支执行时间来为流水线提供更多的并行机会,是手工汇编优化程序的主要方法.目前的编译器一般只对循环体很小的内循环进行展开,因此可能损失一些计算性能,尤其是对循环嵌套较多的循环体,编译器的优化效果不明显,因此可以通过手工汇编展开的方法来进行优化,由于C N N中的卷积计算具有多重循环体,对其核心代码采用手工汇编优化将大大提高程序执行效率.(2)指令级并行.向量处理器有许多不同的功能单元,若能够利用其可以同时执行的特点,就可以大幅提高执行速度.现代处理器将指令操作划分为不同的阶段,每个阶段由不同的单元执行,这样多个操作就可以在处理器的多个单元上流水执行,流水线技术也是向量处理器优化的一个重点.此外,指令级并行还包括乱序执行㊁多发射㊁V L I W和分支预测等.(3)向量化并行.向量化[18]是指一条向量指令可以同时操作向量寄存器中的多个元素,是一种数据并行模式,也是向量处理器提升性能的重要方法,如X86的S S E/ A V X㊁A R M的N E O N,都是基于S I M D模式.另一种数据并行的方式是S I MT,是G P U采用的向量化方法.本文优化主要采用S I M D.(4)缓存优化.处理器的时钟频率和计算性能以超乎想象的速度增长,但是主存(D R AM)的访问速度的增长却缓慢的多,虽然C a c h e和预取能够减少平均访存时间,但仍不能从根本上解决问题,因此,在缓存优化过程中采用双B u f f e r机制,通过将计算时间和传输时间重叠,也可以大大提高程序的执行效率.2矩阵卷积算法介绍与分析2.1卷积神经网络的基本结构如图2所示为一个典型C N N的基本结构,主要包括卷积层㊁池化层和全连接层,而其中卷积层的计算时间约占整个模型计算量的85%,因此加速C N N模型中的卷积计算成为当前神经网络加速的一个研究热点.2.2二维矩阵卷积二维卷积常用于图像处理中,给定一个图像X i j(1ɤiɤM,1ɤjɤN)和滤波器f i j(1ɤiɤm,1ɤjɤn),一般m<M,n<N,卷积的输出为y i j=ðm u=1ðn v=1(f u v x i-u+1,j-v+1).(1) 2.3二维矩阵卷积的实现方法分析当前基于G P U的矩阵卷积实现主要有以下几种.1)将矩阵的卷积操作转化为矩阵乘法,然后通过使用已有的G P U矩阵乘法的优化算法进行计算,该方法需要将输入卷积矩阵D和卷积核F进行转化,由于该方法将D从四维数组转化为二维矩阵时数据规模变大,会占用较多的显存,且当卷积核越大,移动步长越小,显存的消耗就会越大.2)将输入特征图D和卷积核F首先进行F F T 变换[19],将数据变换到频域空间,然后将变换之后的结果在频域进行点乘运算,最后将点乘的结果进行F F T逆变换回时域空间,该方法的优点是计算量与卷积核的大小无关,因此针对卷积核尺寸较大的卷积网络,F F T方法相比直接卷积方法在降低计算图2典型卷积神经网络结构F i g.2 T y p i c a l c o n v o l u t i o n a l n e u r a l n e t w o r k(C N N)s t r u c t u r e715第3期张军阳,等.二维矩阵卷积的并行计算方法[J].浙江大学学报:工学版,2018,52(3):515523.量方面具有明显的优势,其不足之处就是要付出增加存储开销的代价,因此当前基于F F T的方法并没有得到广泛的应用,主要是因为当前的卷积神经网络模型中采用的卷积核尺寸都比较小,因此F F T方法在降低计算量方面的优势没能得到很好的展现.3)基于c u D N N的矩阵卷积算法实现[20-21],c u D N N是N V I D I A公司针对G P U的众核架构高度优化的卷积神经网络加速库,主要针对矩阵卷积进行优化实现,其也是通过将卷积运算转化为矩阵乘法,不同的是转化后的二维输入特征图没有直接存储到显存里面,而是当需要这部分数据的时候,直接到D中索引对应的数据,并加载到G P U的显存里面进行计算,避免了占用额外显存的弊端.传统的二维矩阵卷积计算过程如图3(a)所示,文献[19]中用到了另一种计算方法,即将卷积矩阵和卷积核矩阵展开成矩阵块的方式进而通过普通矩阵相乘的方式进行卷积计算,如图3(b)所示,其计算过程如下.1)根据卷积核规模和移动步长,将对应的卷积矩阵相应的卷积块展开成列向量的形式,所有展开的列向量组成一个新的矩阵.2)将单个卷积核矩阵按行展开成一个行向量,所有展开的卷积核组成一个新的卷积核矩阵. 3)将新的卷积矩阵和新的卷积核矩阵做普通矩阵与矩阵乘法,进而可以通过调用普通的B L A S (b a s i c l i n e a ra l g e b r as u b p r o g r a m s)[23]函数库中的G E MM(g e n e r a lm a t r i x m u l t i p l i c a t i o n)完成二维矩阵卷积的计算.图3二维矩阵卷积计算的2种方式F i g.3 T w oc a l c u l a t i o n m e t h o d s f o r t w o-d i m e n s i o n a lm a t r i xc o n v o l u t i o n可以看出,图3(b)所示的计算方法的优点是将小的卷积计算模块组成大规模的计算单元,可以充分利用大规模矩阵乘法带来的高计算效率.同样,该方法的缺点也非常明显,主要包括:1)在卷积计算前,需要将小规模卷积模块排列成大规模矩阵单元,而这些操作若不能并行执行,将带来不少计算开销.2)对卷积矩阵进行有重复的展开增加了矩阵的规模,随着卷积矩阵规模的增加,采用这种有重复展开的方式会造成数据规模越来越大,而对嵌入式处理器来说,核内存储最为重要,因此该方法不易于对核内存储敏感的向量处理器来执行.此外,针对大规模二维矩阵卷积,文献[19]提出了一种分块计算的方法,即将大规模的矩阵根据卷积核的尺寸划分成合理的规模,然后对每个划分好的卷积模块采用与图3(b)类似的方法进行展开,进而可以通过多个卷积模块的并行执行,完成大规模二维卷积矩阵的计算.但该大规模二维矩阵卷积的分块方法,除了大大增加了卷积矩阵的数据存储量,还使得卷积计算的结果顺序上不连续,如图4(b)所示,由于大部分二维卷积计算的结果需要作为后续操作的初始数据,比如C N N,因此该方法也不利于后续数据的处理.如图4所示为文献[19]提出的一种针对大规模二维矩阵卷积进行分块计算的方法.图4大规模矩阵卷积的子块并行方案F i g.4 S u b b l o c k p a r a l l e ls c h e m ef o rl a r g e s c a l e m a t r i xc o n v o l u t i o n815浙江大学学报(工学版)第52卷3 二维矩阵卷积的向量化设计与实现F T 2000是一款向量处理器,包含768K B 的向量存储体AM 和96K B 的标量存储体S M ,AM 主要完成向量运算,S M 主要完成相应的标量操作,一般来说卷积核矩阵的规模都比较小,当下主流C N N 中的卷积核规模一般为3ˑ3㊁5ˑ5㊁7ˑ7㊁11ˑ11.且根据算法的需要,卷积核数据需要标量取,因此将卷积核数据置于S M ,卷积矩阵置于AM ,其向量化实现过程如下.3.1 单核程序设计分析(1)当卷积矩阵规模较小时,即卷积矩阵可以全部置于AM 中,以单精度浮点数据为例,单个浮点数据为4b y t e ,设卷积矩阵为N ˑN 的方阵,则N ˑN ˑ4=768ˑ1024,AM 中可以放置的最大卷积矩阵的规模为443ˑ443,因此当需要计算的卷积矩阵规模大于443ˑ443时,需要从片外加载数据.下面以图5为例说明基于向量处理器的矩阵卷积的实现方法.设卷积矩阵A 为5ˑ5,卷积核矩阵为2ˑ2,滑动步长为1,边界扩充操作为0,其卷积结果第一行元素的计算过程如C y c l e#0至C yc l e#3所示.C yc l e#0:所有P E s 加载卷积矩阵A 的第一行元素(a 0,0,a 0,1,a 0,2,a 0,3和a 0,4),标量处理单元加载卷积核矩阵的第1行第1个元素(k 0,0),通过标向量广播将k 0,0广播至向量寄存器中,即对应的向量寄存器中的元素为k 0,0,k 0,0,k 0,0,k 0,0,k 0,0,通过向量处理器的乘加指令,每一个P E 完成对应元素与卷积核k 0,0的乘法,并将乘法结果累加至对应的向量寄存器中.(A :5ˑ5;步长:1ˑ1;k e r n e l :2ˑ2;pa d :0)图5 F T 2000矩阵卷积的算法映射F i g .5 A l g o r i t h m m a p p i n g ofF T 2000m a t r i x c o n v o l u t i on 图6 F T 2000移位的混洗模式F i g.6 S h i f t s h u f f l em o d e o fF T 2000C yc l e#1:通过配置特殊的混洗模式(如图6所示)将C yc l e#0中加载的行元素进行移位,完成移位后当前P E s 所对应的元素为a 0,1,a 0,2,a 0,3,a 0,4,0,同时标量加载卷积核的第1行第2个素k 0,1,同样通过标向量广播至向量寄存器中,即为k 0,1,k 0,1,k 0,1,k 0,1,k 0,1,通过向量乘加指令,每一个P E 完成对应元素与卷积核k 0,1的乘法,并将乘法结果累加至C y c l e#0中的累加寄存器中.C yc l e#2:所有P E s 加载卷积矩阵A 的第二行元素(a 1,0,a 1,1,a 1,2,a 1,3和a 1,4),标量处理单元加载卷积核矩阵的第2行第1个元素(k 1,0),通过标向量广播将k 1,0广播至向量寄存器中,即对应向量寄存器中的元素为k 1,0,k 1,0,k 1,0,k 1,0,k 1,0,通过向量处理器的乘加指令,每一个P E 完成对应元素与卷积核k 1,0的乘法操作,并将乘法结果累加至C y c l e#1中的累加寄存器中.C y c l e#3:采用C yc l e #1中的混洗模式,将C yc l e#2中取到的元素进行移位,完成移位后当前P E s 所对应的元素为a 1,1,a 1,2,a 1,3,a 1,4,0,同时标量加载卷积核矩阵第2行第2个元素并广播至向量寄存器中,即为k 1,1,k 1,1,k 1,1,k 1,1,k 1,1,通过向量处理器的乘加指令,每一个P E 完成对应元素与对应卷积核k 1,1的乘法操作,并将乘法结果累加至C y c l e#2中的累加寄存器中.C yc l e #3累加寄存器中的值即为卷积结果矩阵第一行的结果元素.通过以上计算过程可以发现,采用本文提出的方法有以下几个优点:1)在进行卷积计算前不需要额外的开销将卷积矩阵进行展开;2)大幅减少了矩阵展开所带来的存储开销;3)可以充分复用已取到的数据,减少数据的访存量,进而节约计算时间,因为取数据比数据的计算要花费更多的节拍;4)通过流水线技术,理想情况下每拍可以同时计算结果矩阵的一行元素;5)不仅不需要将卷积矩阵进行展开,也避免了中科院计算所陈云霁等[15]提出的P E s 阵列间数据的水平方向或垂直方向频繁的数据移动.915第3期张军阳,等.二维矩阵卷积的并行计算方法[J ].浙江大学学报:工学版,2018,52(3):515523.(2)当卷积矩阵规模较大时,即N ˑN ˑ4>768ˑ1024时,卷积矩阵A 的规模大于443ˑ443时,由于AM 一次不能加载整个卷积矩阵,为了提高卷积计算的速度,采用双B u f f e r 机制,用 p i n g-p o n g的方式进行数据传输,此时AM 空间按地址划分为相等的两部分,分别为B u f f e r 0和B u f f e r 1,数据从D D R 中通过D MA 传输到核内AM 中,假设从B u f f e r 0开始计算,B u f f e r 0计算的同时,B u f f e r 1进行数据传输,当B u f f e r 1开始计算时,B u f f e r 0输出上一次的计算结果并启动新数据传输,采用双B u f f e r 的机制可以将计算时间和传输时间重叠起来,提高算法的执行效率.如图7所示为本文采用的双B u f f e r 机制示意图.当处理大规模矩阵卷积时在采用双B u f f e r 机制的同时,内核还是采用(1)中的向量化实现方法来处理.图7 F T 2000双B u f f e r 机制示意F i g.7 D o u b l eB u f f e rm e c h a n i s mo fF T 20003.2 多核程序设计分析由于F T 2000是一款12核高性能向量处理器,采用多核并行的技术实现高效的算法加速也是一个重要的研究内容.但是多核程序的设计与单核程序不同,需要考虑多方面的因素,比如如何进行多核的任务划分㊁算法是否有很强的相关性㊁多核的通信开销如何等等.考虑到二维矩阵卷积主要用于图像处理尤其是卷积神经网络中卷积层的计算,且卷积层的计算规模从5ˑ5到1000ˑ1000都存在,大部分都是卷积核规模较小的矩阵卷积计算,因此针对矩阵卷积的多核并行一般不会将单个卷积的计算分配给多核来完成,而是N 个独立的卷积计算过程由N 个核并行执行来完成卷积计算的多核并行.如图8所示为F T 2000的多核实现方案,从D D R 中获得一幅输入特征图像,并广播至所有N c 个核共有,同时每个核单独加载自己的卷积核矩阵至标量存储体S M 中,则多核程序中每个核的计算过程同3.1单核程序的计算一样.图8 矩阵卷积多核实现方案F i g .8 M u l t i -c o r e i m pl e m e n t a t i o no fm a t r i x c o n v o l u t i o n 4 实验结果与分析4.1 实验平台本实验的对比平台有服务器级C P U -I n t e l (R )X e o n (R )C P U E 5-2650,32核,64G B 内存,主频为2.6G H Z ,软件平台使用L i n u xC e n t O S 6.2操作系统㊁使用C 语言实现不同规模的矩阵卷积,基于G C C 4.8.2编译器并使用最高级别优化(-O 3)优化所有代码程序,测试时间由c l o c k ()函数进行统计;使用T I 的高性能多核数字信号处理器TM S 320C 6678,8核,1.25G H Z 主频,每个核拥有32K B 的L 1P 和32K B 的L 1D ,并基于C C S 5.5软件编程平台完成所有程序代码的测试与性能统计;飞腾平台使用类C C S 的F T 2000软件编程平台并完成F T 2000向量程序代码的编写与性能统计.4.2 算法加速比通过2.2节的分析可知,二维矩阵卷积是典型的计算密集型和访存密集型算法,而当前的C N N网络模型中矩阵卷积的计算又占据着整个模型计算量的85%以上,因此本实验选取2种计算模型进行分析.第一种,卷积矩阵不变,卷积核矩阵规模相应增加,记为模式1;第二种,卷积核矩阵不变,卷积矩阵规模相应增加,记为模式2.(本实验中所有数据采用双精度浮点,且都为方阵,即48ˑ3表示48ˑ48与3ˑ3的卷积操作).如图9所示为基于卷积核规模变化的F T 2000优化前与优化后的加速比折线图,S P 为加速比.从图中可以看出,当卷积矩阵规模一定时,矩阵卷积计算的优化加速比随着卷积核规模的增加基本呈线性增加趋势.如图10所示为基于卷积矩阵规模变化的F T 2000优化前与优化后的加速比折线图.可以看出,当卷积核规模一定时,算法加速比随着卷积矩阵规模的增加先降低,后趋于稳定.25浙 江 大 学 学 报(工学版) 第52卷图9 基于卷积核规模变化的F T 2000优化加速比F i g .9 O p t i m i z e d s p e e d -u p r a t i oo fF T 2000w i t hc h a n geo f c o n v o l u t i o nk e r n e l s c a le图10 基于卷积矩阵变化的F T 2000优化加速比F i g .10 O p t i m i z e d s p e e d -u p r a t i oo fF T 2000w i t hc h a n geo f m a t r i x s c a l e图11统计了随着卷积核规模的变化,F T 2000基于C P U 的加速比,可以看出F T 2000向量处理器相对于服务器级多核C P U 取得了2132~11974倍不等的加速比.图12为卷积核规模不变,随着卷积矩阵规模变化的F T 2000基于C P U 的加速比,同样取得了456~7925倍不等的加速比.这说明对于计算密集型的二维矩阵卷积F T 2000向量处理器比多核C P U 并行系统能够获得更好的性能.图11 基于卷积核规模变化的F T 2000/C P U 的加速比F i g .11 S p e e d -u p r a t i oo fF T 2000/C P U w i t h c h a n ge of c o n v o l u t i o nk e r n e l s c a le图12 基于卷积矩阵变化的F T 2000/C P U 的加速比F i g .12 S p e e d -u p r a t i oo fF T 2000/C P U w i t hc h a n ge o fm a t r i x s c a l e图13㊁图14针对2种计算模式,分别对比分析了F T 2000平台基于T I 6678取得的性能加速比情况.在图13中,F T 2000基于T I 6678的加速比随着模式1计算规模的增加所取得的优势愈发明显,而图14中,当模式2的计算规模增加到一定程度,其相对T I 6678的加速比基本维持在20倍左右.可见,此2种计算模式,对程序的性能优化影响十分明显.图13 基于卷积核规模变化的F T 2000/T I 6678的加速比F i g .13 O p t i m i z e ds p e e d -u p ra t i o o fF T 2000/T I 6678w i t h c h a n ge of c o n v o l u t i o n a l k e r n e l s c a le 图14 基于卷积矩阵变化的F T 2000/T I 6678的加速比F i g .14 O p t i m i z e ds p e e d -u p ra t i oo fF T 2000/T I 6678w i t h c h a n ge o fm a t r i x s c a l e 125第3期张军阳,等.二维矩阵卷积的并行计算方法[J ].浙江大学学报:工学版,2018,52(3):515523.4.3算法性能瓶颈分析图9㊁图10显示了2种不同的计算模式对算法优化加速比的影响,当卷积核规模增加时,加速比基本成线性增加,而当卷积矩阵规模增加时,加速比有所下降,并最终保持稳定,且加速比并不高,这主要是因为在该算法实现过程中,内核程序主要是通过卷积核的规模来控制循环大小,即当卷积核规模较小时,程序的最内层循环较小,无法通过软件流水的方式高度优化矩阵卷积计算,进而难以发挥向量处理器的计算优势,而图9中之所以取得线性加速比,主要是因为卷积核的规模增加,进而核心循环可以通过软件流水等方式对实现代码进行高度优化,因此,卷积核的规模是影响本文算法实现性能的一个主要影响因素.图11中,随着卷积核计算规模的增加F T2000并没有取得线性的加速比,且有所下降,可能原因是随着矩阵计算规模的增加,C P U的多核及多线程发挥了作用,提高了卷积的计算效率.图12中的加速比相对稳定,主要原因是卷积核规模较小,只有卷积矩阵规模的增加并不能充分发挥F T2000向量处理器的作用.而图13中的计算模式1之所以能够取得较好的加速比,主要是因为F T2000算法优化中卷积核规模决定着内层循环的大小,内层循环越大,通过循环展开所取得的性能优势就愈发明显.图14中之所以没有取得较好的加速比,其瓶颈仍在于卷积核规模过小,使得F T2000向量处理器没有完全发挥其性能优势.针对该计算瓶颈,下一步可考虑能否在不增加卷积矩阵规模的前提下,通过融合多个卷积核矩阵来提高F T2000向量处理器计算矩阵卷积的计算效率.5结语本文在对矩阵卷积计算深入分析的基础上,结合F T2000多核向量处理器的体系结构特点提出了一种减少访存㊁充分复用已取数据的二维矩阵卷积并行计算方法,并基于多核C P U和T I6678进行了性能对比和分析,取得了良好的加速比,实验结果显示:F T2000比C P U及T I6678具有更好的计算优势,相比C P U最高可加速11974倍,相比T I6678可加速21倍.本文研究显示,二维矩阵卷积可在F T2000向量处理器上取得良好的性能,切实加速了矩阵卷积的计算过程,为今后国产F T2000高性能多核向量处理器用于卷积神经网络模型的移植作准备.参考文献(R e f e r e n c e s):[1]D E N G L,Y U D.D e e p l e a r n i n g:m e t h o d s a n da p p l i c a t i o n s[J].F o u n d a t i o n s&T r e n d s i n S i g n a l P r o c e s s i n g,2014,7(3):197387.[2]WU M,C H E N L.I m a g er e c o g n i t i o n b a s e d o n d e e p l e a r n i n g[C]//C h i n e s eA u t o m a t i o n C o n g r e s s.W u h a n:I E E E,2015.[3]L ID,L I JY,HU A N GJT,e t a l.R e c e n t a d v a n c e s i nd e e p l e a r n i n g f o rs p e e c hr e s e a r c ha t M i c r o s o f t[C]//I nt h e P r o c e e d i n g s o f t h e2013I E E E I n t e r n a t i o n a lC o n f e r e n c eo n A c o u s t i c s,S p e e c ha n dS i g n a lP r o c e s s i n g. V a n c o u v e r:I E E E,2013:86048608.[4]K A V U K C U O G L U K,B O U R E A U YL,B O U R E A U Y L,e ta l.L e a r n i n g c o n v o l u t i o n a l f e a t u r eh i e r a r c h i e s f o r v i s u a l r e c o g n i t i o n[C]//I n t e r n a t i o n a lC o n f e r e n c eo n N e u r a l I n f o r m a t i o n P r o c e s s i n g S y s t e m s.V a n c o u v e r:C u r r a nA s s o c i a t e s I n c.2010:10901098.[5]C H E NZ,WA N GJ,H E H,e t a l.Af a s td e e p l e a r n i n g s y s t e mu s i n g G P U[C]//P r o c e e d i n g so fI n t e r n a t i o n a l S y m p o s i u mo nC i r c u i t s a n dS y s t e m s.M e l b o u r n e:I E E E, 2014:15521555.[6]B O U R L A R D H,K AM P Y.A u t o-a s s o c i a t i o n b y m u l t i l a y e r-p e r c e p t r o n s a n ds i n g u l a rv a l u ed e c o m p o s i t i o n [J].B i o l o g i c a l C y b e r n e t i c s,1988,59(4/5):291294.[7]Y A J I E M I A O,MO HAMMA D G OWA Y Y E D,A N DF L O R I-A N M E T Z E.E E S E N:E n d-t o-e n d s p e e c h r e c o g n i t i o nu s i n g d e e p R N N m o d e l sa n d W F S T-b a s e d d e c o d i n g[C]//A u t o m a t i c S p e e c h R e c o g n i t i o n a n d U n d e r s t a n d i n g.S c o t t s d a l e:I E E E,2015:167174.[8]L I US,D U Z,T A OJ,e t a l.C a m b r i c o n:a n i n s t r u c t i o n-s e t a r c h i t e c t u r e f o rn e u r a ln e t w o r k s[J].A C M S i g a r c hC o-m p u t e rA r c h i t e c t u r eN e w s,2016,44(3):393405.[9]N A S S EF,T H U R A UC,F I N KGA.F a c e d e t e c t i o n u s i n gG P U-b a s e d c o n v o l u t i o n a l n e u r a l n e t w o r k s[C]//I n t e r n a t i o n a l C o n f e r e n c e o nC o m p u t e rA n a l y s i s o f I m a g e s a n d P a t t e r n s.B e r l i nH e i d e l b e r g:S p r i n g e r,2009:8390.[10]P O T L U R IS,F A S I H A,V U T U K U R U L K,e ta l.C N N-b a s e dh i g h p e r f o r m a n c ec o m p u t i n g f o rr e a l t i m e i m a g e-p r o c e s s i n g o n G P U[C]//T h e W o r k s h o p o nN o n l i n e a r D y n a m i c s&S y n c h r o n i z a t i o n&I n t l S y m p o s i u m o n T h e o r e t i c a l E l e c t r i c a l E n g i n e e r i n g.K l a g e n f u r t:I E E E,2011:17.[11]Y U Q,WA N GC,MA X,e t a l.Ad e e p l e a r n i n gp r e d i c-t i o n p r o c e s sa c c e l e r a t o rb a s e dF P G A[J].P r o c e e d i n g s o f t h e A n n u a l A C M S y m p o s i u m o n T h e o r y o fC o m p u t i n g,2015:585594.[12]H E G D E G,S I D D HA R T HA,R AMA S AMY N,e ta l.E v a l u a t i n g e m b e d d e dF PG A a c c e l e r a t o r s f o r d e e p225浙江大学学报(工学版)第52卷。

相关文档
最新文档