CN110363699B - 一种基于OpenMP和CUDA的图像特征提取并行算法 - Google Patents
一种基于OpenMP和CUDA的图像特征提取并行算法 Download PDFInfo
- Publication number
- CN110363699B CN110363699B CN201910548763.2A CN201910548763A CN110363699B CN 110363699 B CN110363699 B CN 110363699B CN 201910548763 A CN201910548763 A CN 201910548763A CN 110363699 B CN110363699 B CN 110363699B
- Authority
- CN
- China
- Prior art keywords
- matrix
- calculating
- openmp
- gpu
- video memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本发明公开一种基于OpenMP和CUDA的图像特征提取并行算法,应用于利用内核原型分析算法的图像特征提取,针对图像本身的特点,即在图像处理算法中存在大量矩阵运算,对内核原型分析算法进行了优化。通过在采用FURTHESTSUM算法对内核原型分析算法进行初始化的过程中,使用了OpenMP多线程并行同时结合归约算法对其进行优化,随后在使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算,即通过多线程的计算解决了现有的内核原型分析算法中由于在进行最大值和矩阵运算的计算时使用串行方法计算,导致其计算速度慢,运行效率低等问题。
Description
技术领域
本发明涉及图像特征提取技术领域,尤其涉及一种基于OpenMP和CUDA的图像特征提取并行算法。
背景技术
原型分析算法(简称AA算法)是一种先驱无监督学习技术,该算法直接结合了矩阵分解和聚类的优点的灵活性,同时比常见的矩阵分解和聚类方法有着更好的可解释性,同时在预测任务方面有良好的结果。它被认为是PCA的替代方案,用于从高维数据中发现潜在因子,可应用到各种机器学习问题中。在图像特征提取应用中,与PCA相比,AA提取的特征代表更多不同的图像原型,揭示了可变性和图像的多样性。现有的算法将传统AA程序推广到KERNEL-AA,即内核原型分析算法,以便在潜在的无限希尔伯特空间中提取主凸包,并在原型不能表示为观测数据的凸组合时得到AA的松弛,AA算法采用K-Means的FURTHESTFIRST算法进行初始化,随后使用简单的投影梯度法计算并得到结果。
然而,由于图像本身的特点,图像处理算法中存在大量矩阵运算,内核原型分析算法中在进行最大值和矩阵运算的计算时使用串行方法计算,不能最大限度地将算法并行优化,其计算速度慢,运行效率低。
参考文献:Hansen L K.Archetypal analysis for machine learning and datamining[M].Elsevier Science Publishers B.V.2012.
发明内容
本发明为解决现有的内核原型分析算法中在进行最大值和矩阵运算的计算时使用串行方法计算,其计算速度慢,运行效率低等问题,提供了一种基于OpenMP和CUDA的图像特征提取并行算法。
为实现以上发明目的,而采用的技术手段是:
一种基于OpenMP和CUDA的图像特征提取并行算法,应用于利用内核原型分析算法的图像特征提取,包括以下步骤:
S1.获取待处理的图像,所述图像大小为m×n,则所述图像的矩阵为X(m×n),对待处理矩阵进行计算得到核矩阵K(m×m),K=XTX;并作为内核原型分析算法的输入;
S2.设置内核原型分析算法中的初始参数α、δ和原型个数D;
S3.采用FURTHESTSUM算法对内核原型分析算法进行初始化,使用OpenMP和CUDA在GPU中并行执行所述初始化中的候选点提取过程,根据归约算法求取各计算节点中候选点的最大值后得到最终提取的D个候选点;
S4.根据提取得到D个候选点初始化矩阵C(n×D)以及矩阵S(D×n),其中矩阵S中每个元素的值随机生成;
S5.使用投影梯度法更新矩阵C、矩阵S以及矩阵αC得到计算结果;其中使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算;
S6.根据计算结果计算矩阵A=XC即为对图像进行特征提取得到的特征矩阵。
上述方案中,通过在采用FURTHESTSUM算法对内核原型分析算法进行初始化的过程中,使用了OpenMP多线程并行同时结合归约算法对其进行优化,随后在使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算,即通过多线程的计算提高了算法的运行效率和运行速度。
优选的,步骤S1中所述的内核原型分析算法为:
arg minC,SD(X|XCS)
s.t.|cd|1=1,|sn|1=1
C≥0,S≥0
其中C为原始输入数据的权重系数矩阵,S为原始输入数据变换后的比例系数矩阵,α、δ为针对无纯像元存在的情况引入的尺度变量。
优选的,所述步骤S3具体包括以下步骤:
S31.在所述核矩阵K=XTX中随机选择一个点j作为初始候选点,并放到集合N中;
S32.利用OpenMP开启多个线程:
当n≤2048时,开启2个线程;
当2048<n≤10240时,开启4个线程;
当n>10240时,开启8个线程;
当n达到千万级时,则使用CUDA在GPU开启1024个以上的线程;
S33.将除集合N外的点平均分到步骤S32得到的每个线程中,在每个线程计算线程中的点到集合N中候选点的距离,并选出其中的距离最大值;在所有线程的距离最大值中,再次选出最大值,并将该最大值对应的点加入集合N中作为候选点;
S34.重复步骤S33,直至选出D个候选点;
S35.删除步骤S31随机选出的初始候选点j,并通过步骤S33选出最后一个候选点;得到最终提取的D个候选点。
优选的,步骤S5中所述使用投影梯度法更新矩阵C得到计算结果的具体步骤包括:
S5.1.1计算矩阵C的梯度:
使用OpenMP和CUDA并行执行以下步骤a1~a3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
a4.计算A5=A2A3:在显存中为矩阵A5分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A2A3,得到矩阵A5;
a5.计算A1=A5A4:在显存中为矩阵A1分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A5A4,得到矩阵A1;
b2.计算A6=A7diag(α):在显存中为矩阵A6分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A7diag(α),得到矩阵A6;
S5.1.2.在梯度方向上更新矩阵C:
S5.1.3.通过线性搜索调整μC;
S5.1.4.重复执行步骤S5.1.1~S5.1.3直至收敛。
优选的,步骤S5中所述使用投影梯度法更新矩阵S得到计算结果的具体步骤包括:
S5.2.1计算矩阵S的梯度:
使用OpenMP和CUDA并行执行以下步骤c1~c3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
c2.计算A10=X┬X:在显存中为矩阵X、矩阵X┬分配空间,将矩阵X、矩阵X┬拷贝到分配的显存空间中,使用cuBLAS库中的cublasSgemm函数在GPU中计算X┬X,得到矩阵A10;
使用OpenMP和CUDA并行执行步骤c4~c5,即使用OpenMP和CUDA并行执行矩阵乘法运算;
c4.计算A12=A9A10:在显存中为矩阵A12分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A9A10,得到矩阵A12;
c6.计算A8=A12A13:在显存中为矩阵A8分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A12A13,得到矩阵A8;
d2.计算A14=A15K:在显存中为矩阵A14分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A15K,得到矩阵A14;
S5.2.2.在梯度方向上更新矩阵S:
S5.2.3.通过线性搜索调整μS;
S5.2.4.重复执行步骤S5.2.1~S5.2.3直至收敛。
优选的,步骤S5中所述使用投影梯度法更新矩阵αC得到计算结果的具体步骤包括:
S5.3.1计算矩阵αC的梯度:
使用OpenMP和CUDA并行执行以下步骤f1~f2,即使用OpenMP和CUDA并行执行矩阵乘法运算;
f3.计算A19=A17A18:在显存中为矩阵A19分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A17A18,得到矩阵A19;
f4.计算A16=A19S┬:在显存中为矩阵A16分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A19S┬,得到矩阵A16;
h.计算A21=A16-A20:使用OpenMP开启4个线程,将计算得到的矩阵A16和矩阵A20平均分为4块分别交由4个线程执行矩阵减法运算,得到矩阵A21;
S5.3.2.在梯度方向上更新矩阵αC:
α←α-μαgα
S5.3.3.通过线性搜索调整μα;
S5.3.4.重复执行步骤S5.3.1~S5.3.3直至收敛。
优选的,所述步骤S6具体包括:根据步骤S5得到的计算结果,在显存中为矩阵X、矩阵C、矩阵A分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算XC,得到矩阵A,矩阵A即为对图像进行特征提取得到的特征矩阵。
与现有技术相比,本发明技术方案的有益效果是:
本发明方法针对图像本身的特点,即在图像处理算法中存在大量矩阵运算,对内核原型分析算法进行了优化,通过在采用FURTHESTSUM算法对内核原型分析算法进行初始化的过程中,使用了OpenMP多线程并行同时结合归约算法对其进行优化,随后在使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算,即通过多线程的计算提高了算法的运行效率和运行速度,解决了现有的内核原型分析算法中由于在进行最大值和矩阵运算的计算时使用串行方法计算,导致其计算速度慢,运行效率低等问题。
附图说明
图1为本发明方法的总流程图。
图2为本发明使用OpenMP和CUDA在GPU中并行执行矩阵乘法运算的原理图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例
一种基于OpenMP和CUDA的图像特征提取并行算法,应用于利用内核原型分析算法的图像特征提取,如图1所示,包括以下步骤:
S1.获取待处理的图像,所述图像大小为m×n,则所述图像的矩阵为X(m×n),对待处理矩阵进行计算得到核矩阵K(m×m),K=XTX;并作为内核原型分析算法的输入
S2.设置内核原型分析算法中的初始参数α、δ和原型个数D;
S3.采用FURTHESTSUM算法对内核原型分析算法进行初始化,使用OpenMP和CUDA在GPU中并行执行所述初始化中的候选点提取过程,根据归约算法求取各计算节点中候选点的最大值后得到最终提取的D个候选点;
S4.根据提取得到D个候选点初始化矩阵C(n×D)以及矩阵S(D×n),其中矩阵S中每个元素的值随机生成;
S5.使用投影梯度法更新矩阵C、矩阵S以及矩阵αC得到计算结果;其中使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算;
S6.根据计算结果计算矩阵A=XC即为对图像进行特征提取得到的特征矩阵。
其中本发明中使用OpenMP和CUDA在GPU中并行执行矩阵乘法运算的原理如下:
假设需要计算矩阵Pd=Md×Nd,其中矩阵Md维数为a×b,矩阵Nd维数为b×c,则矩阵Pd维数为a×c;
如图2所示,每个线程块负责计算矩阵Pd中一TILE_WIDTH×TILE_WIDTH大小的区,TILE_WIDTH是瓦片的长和宽,线程块中每个线程负责计算该区域中的一个元素,其中图2中的1为一个线程块的示例,图2中的2为线程块中一个线程的示例。这样,该线程块需要加载的数据局限在矩阵Md中的一块,其大小为TILE_WIDTH×矩阵Md的宽度b,以及矩阵Nd中的一块,其大小为TILE_WIDTH×矩阵Nd的高度b;
加载数据时,每一个线程只从Md、Nd中各加载一个对应于本线程在线程块中的位置的数据,并写入共享内存储存。使用算法,A中每个元素将被加载矩阵Md的宽度b/TILE_WIDTH次,B中每个元素将被加载矩阵Nd的高度b/TILE_WIDTH次,共享内存储存的负担直接减小了TILE_WIDTH倍。
在每个线程块中,即在一个瓦片中的所有线程共享一块共享内存,所以为了提高计算效率,首先把这个瓦片需要的数据从两个输入矩阵中拷过来,即从全局内存拷贝到共享内存里,存入两个临时矩阵之中。在本发明的该算法选择的是大小为16×16的瓦片。
按矩阵相乘的计算方法,将加载进来的小矩阵进行乘加。计算完图2中TILE_WIDTH×TILE_WIDTH大小的第一块后,将矩阵Md中取元素的窗口向右滑动,将矩阵Nd中的窗口向下滑动,重复上述计算过程,将结果累加到上一次计算的结果中。至滑动完毕时,累加器中的数据即为对应位置的结果。如果输入矩阵不是方阵或宽高b不是瓦片尺寸的整倍数,在最后一次拷贝数据,有一部分元素会“越界”,在越界元素的位置填充0,便不影响计算结果。
实施例2
一种基于OpenMP和CUDA的图像特征提取并行算法,应用于利用内核原型分析算法的图像特征提取,包括以下步骤:
S1.获取待处理的图像,所述图像大小为m×n,则所述图像的矩阵为X(m×n),对待处理矩阵进行计算得到核矩阵K(m×m),K=XTX;并作为内核原型分析算法的输入;
内核原型分析算法的公式为:
argminC,SD(X|XCS)
s.t.|cd|1=1,|sn|1=1
C≥0,S≥0
其中C为原始输入数据的权重系数矩阵,S为原始输入数据变换后的比例系数矩阵,α、δ为针对无纯像元存在的情况引入的尺度变量。
S2.设置内核原型分析算法中的初始参数α、δ和原型个数D;
S3.采用FURTHESTSUM算法对内核原型分析算法进行初始化,使用OpenMP和CUDA在GPU中并行执行所述初始化中的候选点提取过程,根据归约算法求取各计算节点中候选点的最大值后得到最终提取的D个候选点;
S31.在所述核矩阵K=XTX中随机选择一个点j作为初始候选点,并放到集合N中;
S32.利用OpenMP开启多个线程:
当n≤2048时,开启2个线程;
当2048<n≤10240时,开启4个线程;
当n>10240时,开启8个线程;
当n达到千万级时,则使用CUDA在GPU开启1024个以上的线程;
S33.将除集合N外的点平均分到步骤S32得到的每个线程中,在每个线程计算线程中的点到集合N中候选点的距离,并选出其中的距离最大值;在所有线程的距离最大值中,再次选出最大值,并将该最大值对应的点加入集合N中作为候选点;
S34.重复步骤S33,直至选出D个候选点;
S35.删除步骤S31随机选出的初始候选点j,并通过步骤S33选出最后一个候选点;得到最终提取的D个候选点。
S4.根据提取得到D个候选点初始化矩阵C(n×D)以及矩阵S(D×n),其中矩阵S中每个元素的值随机生成;
S5.使用投影梯度法更新矩阵C、矩阵S以及矩阵αC得到计算结果;其中使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算;
S5.1.1计算矩阵C的梯度:
使用OpenMP和CUDA并行执行以下步骤a1~a3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
a4.计算A5=A2A3:在显存中为矩阵A5分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A2A3,得到矩阵A5;
a5.计算A1=A5A4:在显存中为矩阵A1分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A5A4,得到矩阵A1;
b2.计算A6=A7diag(α):在显存中为矩阵A6分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A7diag(α),得到矩阵A6;
S5.1.2.在梯度方向上更新矩阵C:
S5.1.3.通过线性搜索调整μC;
S5.1.4.重复执行步骤S5.1.1~S5.1.3直至收敛。
S5.2.1计算矩阵S的梯度:
使用OpenMP和CUDA并行执行以下步骤c1~c3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
c2.计算A10=X┬X:在显存中为矩阵X、矩阵X┬分配空间,将矩阵X、矩阵X┬拷贝到分配的显存空间中,使用cuBLAS库中的cublasSgemm函数在GPU中计算X┬X,得到矩阵A10;
使用OpenMP和CUDA并行执行步骤c4~c5,即使用OpenMP和CUDA并行执行矩阵乘法运算;
c4.计算A12=A9A10:在显存中为矩阵A12分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A9A10,得到矩阵A12;
c6.计算A8=A12A13:在显存中为矩阵A8分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A12A13,得到矩阵A8;
d2.计算A14=A15K:在显存中为矩阵A14分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A15K,得到矩阵A14;
S5.2.2.在梯度方向上更新矩阵S:
S5.2.3.通过线性搜索调整μS;
S5.2.4.重复执行步骤S5.2.1~S5.2.3直至收敛。
S5.3.1计算矩阵αC的梯度:
使用OpenMP和CUDA并行执行以下步骤f1~f2,即使用OpenMP和CUDA并行执行矩阵乘法运算;
f3.计算A19=A17A18:在显存中为矩阵A19分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A17A18,得到矩阵A19;
f4.计算A16=A19S┬:在显存中为矩阵A16分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A19S┬,得到矩阵A16;
h.计算A21=A16-A20:使用OpenMP开启4个线程,将计算得到的矩阵A16和矩阵A20平均分为4块分别交由4个线程执行矩阵减法运算,得到矩阵A21;
S5.3.2.在梯度方向上更新矩阵αC:
α←α-μαgα
S5.3.3.通过线性搜索调整μα;
S5.3.4.重复执行步骤S5.3.1~S5.3.3直至收敛。
S6.根据步骤S5得到的计算结果,在显存中为矩阵X、矩阵C、矩阵A分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算XC,得到矩阵A,矩阵A即为对图像进行特征提取得到的特征矩阵。
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (7)
1.一种基于OpenMP和CUDA的图像特征提取并行算法,应用于利用内核原型分析算法的图像特征提取,其特征在于,包括以下步骤:
S1.获取待处理的图像,所述图像大小为m×n,则所述图像的矩阵为X(m×n),对待处理矩阵进行计算得到核矩阵K(m×m),K=XTX;并作为内核原型分析算法的输入;
S2.设置内核原型分析算法中的初始参数α、δ和原型个数D;
S3.采用FURTHESTSUM算法对内核原型分析算法进行初始化,使用OpenMP和CUDA在GPU中并行执行所述初始化中的候选点提取过程,根据归约算法求取各计算节点中候选点的最大值后得到最终提取的D个候选点;
S4.根据提取得到D个候选点初始化矩阵C(n×D)以及矩阵S(D×n),其中矩阵S中每个元素的值随机生成;
S5.使用投影梯度法更新矩阵C、矩阵S以及矩阵αC得到计算结果;其中使用投影梯度法更新矩阵的过程中,使用OpenMP和CUDA在GPU中并行执行其中的矩阵乘法运算,使用OpenMP并行执行其中的矩阵减法运算;
S6.根据计算结果计算矩阵A=XC即为对图像进行特征提取得到的特征矩阵。
2.根据权利要求1所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,步骤S1中所述的内核原型分析算法为:
arg minC,SD(X|XCS)
s.t.|cd|1=1,|sn|1=1
C≥0,S≥0
其中C为原始输入数据的权重系数矩阵,S为原始输入数据变换后的比例系数矩阵,α、δ为针对无纯像元存在的情况引入的尺度变量。
3.根据权利要求1所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,所述步骤S3具体包括以下步骤:
S31.在所述核矩阵K=XTX中随机选择一个点j作为初始候选点,并放到集合N中;
S32.利用OpenMP开启多个线程:
当n≤2048时,开启2个线程;
当2048<n≤10240时,开启4个线程;
当n>10240时,开启8个线程;
当n达到千万级时,则使用CUDA在GPU开启1024个以上的线程;
S33.将除集合N外的点平均分到步骤S32得到的每个线程中,在每个线程计算线程中的点到集合N中候选点的距离,并选出其中的距离最大值;在所有线程的距离最大值中,再次选出最大值,并将该最大值对应的点加入集合N中作为候选点;
S34.重复步骤S33,直至选出D个候选点;
S35.删除步骤S31随机选出的初始候选点j,并通过步骤S33选出最后一个候选点;得到最终提取的D个候选点。
4.根据权利要求1所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,步骤S5中所述使用投影梯度法更新矩阵C得到计算结果的具体步骤包括:
S5.1.1计算矩阵C的梯度:
使用OpenMP和CUDA并行执行以下步骤a1~a3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
a4.计算A5=A2A3:在显存中为矩阵A5分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A2A3,得到矩阵A5;
a5.计算A1=A5A4:在显存中为矩阵A1分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A5A4,得到矩阵A1;
b2.计算A6=A7diag(α):在显存中为矩阵A6分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A7diag(α),得到矩阵A6;
S5.1.2.在梯度方向上更新矩阵C:
S5.1.3.通过线性搜索调整μC;
S5.1.4.重复执行步骤S5.1.1~S5.1.3直至收敛。
5.根据权利要求4所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,步骤S5中所述使用投影梯度法更新矩阵S得到计算结果的具体步骤包括:
S5.2.1计算矩阵S的梯度:
使用OpenMP和CUDA并行执行以下步骤c1~c3,即使用OpenMP和CUDA并行执行矩阵乘法运算;
使用OpenMP和CUDA并行执行步骤c4~c5,即使用OpenMP和CUDA并行执行矩阵乘法运算;
c4.计算A12=A9A10:在显存中为矩阵A12分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A9A10,得到矩阵A12;
c6.计算A8=A12A13:在显存中为矩阵A8分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A12A13,得到矩阵A8;
d2.计算A14=A15K:在显存中为矩阵A14分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A15K,得到矩阵A14;
S5.2.2.在梯度方向上更新矩阵S:
S5.2.3.通过线性搜索调整μS;
S5.2.4.重复执行步骤S5.2.1~S5.2.3直至收敛。
6.根据权利要求5所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,步骤S5中所述使用投影梯度法更新矩阵αC得到计算结果的具体步骤包括:
S5.3.1计算矩阵αC的梯度:
使用OpenMP和CUDA并行执行以下步骤f1~f2,即使用OpenMP和CUDA并行执行矩阵乘法运算;
f3.计算A19=A17A18:在显存中为矩阵A19分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算A17A18,得到矩阵A19;
h.计算A21=A16-A20:使用OpenMP开启4个线程,将计算得到的矩阵A16和矩阵A20平均分为4块分别交由4个线程执行矩阵减法运算,得到矩阵A21;
S5.3.2.在梯度方向上更新矩阵αC:
α←α-μαgα
S5.3.3.通过线性搜索调整μα;
S5.3.4.重复执行步骤S5.3.1~S5.3.3直至收敛。
7.根据权利要求1所述的基于OpenMP和CUDA的图像特征提取并行算法,其特征在于,所述步骤S6具体包括:根据步骤S5得到的计算结果,在显存中为矩阵X、矩阵C、矩阵A分配空间,使用cuBLAS库中的cublasSgemm函数在GPU中计算XC得到矩阵A,矩阵A即为对图像进行特征提取得到的特征矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910548763.2A CN110363699B (zh) | 2019-06-24 | 2019-06-24 | 一种基于OpenMP和CUDA的图像特征提取并行算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910548763.2A CN110363699B (zh) | 2019-06-24 | 2019-06-24 | 一种基于OpenMP和CUDA的图像特征提取并行算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110363699A CN110363699A (zh) | 2019-10-22 |
CN110363699B true CN110363699B (zh) | 2022-11-04 |
Family
ID=68215774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910548763.2A Active CN110363699B (zh) | 2019-06-24 | 2019-06-24 | 一种基于OpenMP和CUDA的图像特征提取并行算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110363699B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714337A (zh) * | 2012-10-09 | 2014-04-09 | 鸿富锦精密工业(深圳)有限公司 | 物体特征识别系统及方法 |
CN108897616A (zh) * | 2018-06-04 | 2018-11-27 | 四川大学 | 基于并行运算的非下采样轮廓波变换优化方法 |
-
2019
- 2019-06-24 CN CN201910548763.2A patent/CN110363699B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714337A (zh) * | 2012-10-09 | 2014-04-09 | 鸿富锦精密工业(深圳)有限公司 | 物体特征识别系统及方法 |
CN108897616A (zh) * | 2018-06-04 | 2018-11-27 | 四川大学 | 基于并行运算的非下采样轮廓波变换优化方法 |
Non-Patent Citations (3)
Title |
---|
CPU-OpenMP 和GPU-CUDA 并行计算技术对矩阵乘法运算的加速效果分析;张岩;《科技视界》;20170915(第26期);第45-47页 * |
Morten Mørup等.Archetypal analysis for machine learning and data mining.《Neurocomputing》.2011,第80卷第54-63页. * |
运用OpenMP和CUDA优化蒙特卡洛算法;张钦等;《安阳师范学院学报》;20120229(第2期);第41-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110363699A (zh) | 2019-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Linderman et al. | Clustering with t-SNE, provably | |
CN110288030B (zh) | 基于轻量化网络模型的图像识别方法、装置及设备 | |
US10037457B2 (en) | Methods and systems for verifying face images based on canonical images | |
Le et al. | Inertial block proximal methods for non-convex non-smooth optimization | |
JP5144123B2 (ja) | 情報処理方法、情報処理装置 | |
JP2020135011A (ja) | 情報処理装置及び方法 | |
Al Bahrani et al. | Orthogonal PSO algorithm for economic dispatch of thermal generating units under various power constraints in smart power grid | |
WO2019102984A1 (ja) | 学習装置及び学習方法、識別装置及び識別方法、プログラム並びに記録媒体 | |
Kanada | Optimizing neural-network learning rate by using a genetic algorithm with per-epoch mutations | |
US8583719B2 (en) | Method and apparatus for arithmetic operation by simultaneous linear equations of sparse symmetric positive definite matrix | |
US20100299379A1 (en) | Non-Negative Matrix Factorization as a Feature Selection Tool for Maximum Margin Classifiers | |
CN113257364A (zh) | 基于多目标进化的单细胞转录组测序数据聚类方法及系统 | |
CN110472588B (zh) | 锚点框确定方法、装置、计算机设备和存储介质 | |
CN110363699B (zh) | 一种基于OpenMP和CUDA的图像特征提取并行算法 | |
Dzwinel et al. | Very fast interactive visualization of large sets of high-dimensional data | |
US20220137930A1 (en) | Time series alignment using multiscale manifold learning | |
Kupwiwat et al. | Multi-objective optimization of truss structure using multi-agent reinforcement learning and graph representation | |
EP3786816A1 (en) | Local search with global view for large scale combinatorial optimization | |
US11631002B2 (en) | Information processing device and information processing method | |
Papamakarios | Comparison of modern stochastic optimization algorithms | |
WO2021059527A1 (ja) | 学習装置、学習方法、及び、記録媒体 | |
US9600446B2 (en) | Parallel multicolor incomplete LU factorization preconditioning processor and method of use thereof | |
US7792060B2 (en) | Information analysis apparatus and computer readable medium | |
Bobrowski | Large matrices inversion using the basis exchange algorithm | |
Khan et al. | Design and implementation of parallel SOM model on GPGPU |
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 |