一种面向大数据的针对可变长度特征提取的自适应并行处理方法
【专利摘要】本发明公开了一种面向大数据的针对可变长度特征提取的自适应并行处理方法,该方法是针对可变长度的特征数据,采用基于CUDA的架构,利用GPU并行计算能力对大数据进行处理。在处理大数据时,根据自身硬件特性和特征数据的长度,自适应的采用可并行化的矩阵数组处理方式,对数据进行多线程并发执行处理,从而加快特征提取的速度。本发明所采用的自适应调整是根据硬件自身的处理能力和特征数据的长度,分批对数据进行处理,每次进行一定长度的特征提取,并记录匹配结果;等待整个特征提取完成后,根据数据采样所允许的容错率,再处理所有匹配结果,最后得出符合要求的特征提取结果。该方法利用矩阵数组具有的良好可并行性,针对可变长度的特征提取,能够有效、充分地将数据处理并行化,特别适用于具有一定容错性的大数据快速特征提取。
【专利说明】一种面向大数据的针对可变长度特征提取的自适应并行处理方法
【技术领域】
[0001]本发明属于大数据处理【技术领域】,涉及一种特征提取的方法,更具体是涉及一种面向大数据的针对可变长度特征提取的自适应并行处理方法。
技术背景 [0002]随着大数据时代的来临,如何快速处理大数据,并提取出有效信息已经成为IT行业前沿性的研究热点。当前,特征提取技术在图像处理、模式识别和网络入侵检测等方面的运用越来越广泛,尤其在大数据环境下,对可变长度特征提取的灵活性及效率已经成为制约快速处理数据能力的瓶颈。
[0003]根据对现有专利资料的检索,目前对大数据进行特征提取的方法主要有两个方面:一方面是提高CPU核数量或建立分布式集群系统等;另一方面是利用GPU来处理固定长度的特征数据且没有容错性。但由于CPU核的数量有限、建立分布式集群系统成本较高、而利用GPU的处理还受到硬件能力的制约,局限于只能处理固定长度的特征数据,所以对大数据环境下特征提取的处理方法和能力仍有待于进一步创新和提高。
[0004]
【发明内容】
[0005]本发明的目的是针对大数据环境下,计算机对数据的特征提取主要依靠CPU来串行完成、利用GPU对数据的特征提取局限于只能处理固定长度的两方面现状,提出一种面向大数据的针对可变长度特征提取的自适应并行处理方法,使得计算机对特征提取的处理能力更强、灵活性更好且具有一定的容错性。
[0006]为了实现上述目的,本发明解决上述问题的技术方案是一种面向大数据的针对可变长度特征提取的自适应并行处理方法,该方法根据自身硬件特性和特征数据的长度,自适应的采用可并行化的矩阵数组处理方式,分批对特征数据进行处理,每次进行一定长度的特征提取,并行构建一个具有良好并行性的矩阵数组,对数据进行多线程并发执行处理,并记录匹配结果;等待整个特征提取完成后,根据数据采样所允许的容错率,再处理所有匹配结果,最后得出符合要求的特征提取结果。
[0007]根据上述的技术方案,本发明采用并行处理的方法是基于CPU+GPU异步体系结构,即由CPU完成串行工作,控制主程序的流程;GPU使用CUDA编程架构,实现数据特征提取的并行计算。
[0008]上述的针对可变长度特征提取的自适应并行处理方法,在处理大数据时,根据硬件自身处理能力和特征数据的长度,主机将特征提取任务分为N (N^ I)个子任务执行,根据每部分特征数据和所要处理的来自大数据的任务数据,并行构建一个具有良好并行性的矩阵数组,该矩阵数组大小必须在GPU处理能力范围内,每个子任务并行执行一定长度的特征提取。[0009]上述的并行处理方法是基于CPU+GPU异步体系结构的,即在GPU上为任务数据分配存储空间,并将任务数据从主机CPU存储器中传递至设备GPU的全局存储器中。然后将本次子任务所需的特征数据传递至GPU的常量存储器中,常量存储器的访问限制为只读,在第一次从常量存储器的某个地址上读取特征数据后,当其他线程请求同一个地址时,将直接从缓存中读取特征数据。使用GPU的常量内存参与并行运算,可以减少程序运行时不断读取特征数据的次数,从而节省时间,进一步提高计算速度。
[0010]上述的并行构建一个具有良好并行性的矩阵数组,即把任务数据和子任务中特征数据的每个字符依次进行并行匹配,形成一个有效的“01”矩阵数组。即根据任务数据长度STRLEN和第i个子任务中特征数据的长度KEY[i] (I ≤ i ≤ N),将任务数据和特征数据的每个字符依次进行并行匹配,相同则记为“1”,不同则记为“0”,形成一个KEY[i]*STRLEN的“01”矩阵数组。
[0011]上述的并行处理矩阵数组,对数据进行多线程并发执行特征匹配,即对上述并行匹配得到的KEY[i]*STRLEN的“01”矩阵数组,依次并行处理(STRLEN_KEY[i]+l)个KEY[i]*KEY[i]的小数组矩阵,将每个小数组矩阵对角线上的数值相加,并将其和值依次写入一个长度为STRLEN的一维数组中。
[0012]上述的将匹配结果返回给主机,即把保存并行处理矩阵数组结果的长度为STRLEN的一维数组,从设备GPU存储器传递回主机CPU存储器中。此一维数组将被存储在一个二维数组sum[N] [STRLEN]的第i行,该二维数组将记录所有子任务的返回结果。然后,将GPU设备中用于并行计算的内存空间释放,以便进行下一个子任务特征数据的提取。
[0013]根据主机对特征数据的划分,重复以上GPU的并行计算和数据传送部分,直到完成第N个子任务中部分特征数据的匹配。
[0014]上述的处理所有部分的匹配结果,即等待N个子任务的特征数据处理全部完成并返回结果后,将二维数组sum每行对应的数据相加,得出(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN (KEYLEN为特征数据的总长度)矩阵数组对角线的累加结果total。
[0015]上述的将二维数组sum每行对应的数据相加,得出(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN矩阵数组对角线的累加结果total,需要考虑各行偏移量的大小。若特征数据分为N个子任务处理,前N-1个子任务均处理m位特征数据,第N个子任务处理s位数据特征(I ≤ s ≤ m),则第k个KEYLEN*KEYLEN矩阵数组的对角线累加结果total的求和公式为:sum[l][k]+sum[2][l*m+k]+sum[3][2*m+k]+......+ sum[N][(N_l)*m+k]。
[0016]上述的数据采样所允许的一定的容错率,即指根据系统容错性能的设置,若其容错率为X%,当total≥(1-X%)*KEYLEN时,贝U认定此次特征提取成功,记录成功匹配一次。以此为标准,最终得出所有符合要求的特征提取结果。
[0017]
【专利附图】
【附图说明】
[0018]附图1为本发明中针对可变长度的特征数据进行任务划分的结构示意图。
[0019]附图2为本发明中基于CPU+GPU异步体系结构的总体程序流程图。
[0020]附图3为本发明中每个子任务在GPU中进行并行计算的流程图。
[0021]附图4为本发明中任务数据匹配每一部分特征数据中字符的结构示意图。[0022]附图5为本发明中利用划分数组的方法,并行处理每个子任务中“01”矩阵数组的结构示意图。
[0023]附图6为本发明中汇总处理所有子任务的运算结果并得出最终特征提取结果的流程图。
[0024]
【具体实施方式】
[0025]下面结合附图对本发明的内容作进一步的详细介绍。
[0026]1.本发明中涉及的一种面向大数据的针对可变长度特征提取的自适应并行处理方法的总体流程是:根据自身硬件特性和特征数据的长度,自适应的采用可并行化的矩阵数组处理方式,把待提取的特征数据分为N个部分(参见附图1 ),分批对数据进行处理,每次进行一定长度的特征提取,根据每部分特征数据和所要处理的来自大数据的任务数据,并行构建一个具有良好并行性的矩阵数组,对数据进行多线程并发执行处理,并记录匹配结果;等待整个特征提取完成后,根据数据采样所允许的容错率,再处理所有匹配结果,最后得出符合要求的特征提取结果。(参见附图2)。
[0027]2.设置系统的容错率为x%。
[0028]3.根据自身硬件特性和特征数据的长度,把待提取的特征数据分为N个部分,分批对数据进行处理,将特征提取流程划分成N个子任务。其中前N-1个部分中,每部分均有m位特征数据,最后第N部分中有s位特征数据(参见附图1 )。
[0029]4.在GPU上分配存储空间,并将任务数据传递至GPU的全局存储器(GlobalMemory)中(参见附图2)。
[0030]5.从第I部分的特征数据开始处理,在GPU中执行每个子任务的流程如下(参见附图3):
(1)将本次子任务所需的特征数据传递至GPU的常量存储器(ConstantMemory)中(参见附图2);
(2)根据任务数据长度STRLEN和第i个子任务中特征数据的长度KEY[i](l< i ^ N),将任务数据和特征数据的每个字符依次进行并行匹配,相同则记为“ 1”,不同则记为“0”,形成一个KEY[i]*STRLEN的“01”矩阵数组(参见附图4);
(3)对(2)中并行匹配得到的KEY[i]*STRLEN的“01”矩阵数组,依次并行处理(STRLEN-KEY[i]+1)个KEY[i]*KEY[i]的小数组矩阵,将每个小数组矩阵对角线上的数值相加,并将其和值依次写入一个长度为STRLEN的一维数组temp [STRLEN]中(参见附图5);
(4)同步kernel中的线程,确保本次GPU的并行运算已全部完成;
(5)将(3)中得到的一维数组temp[STRLEN],从设备GPU存储器传递回主机CPU存储器中。此一维数组temp [STRLEN]的元素被存储在一个二维数组sum[N] [STRLEN]的第i行,该二维数组将记录所有子任务的返回结果;
(6)将GPU设备中用于并行计算的内存空间释放,以便处理下一个子任务;
(7)判断N个子任务是否全部处理完毕,若“是”则退出此循环,转向步骤6,否则提取下一个部分的特征数据(i — i+1),重复步骤5。
[0031]6.将二维数组sum每行对应的数据相加,得出(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN (KEYLEN为特征数据的总长度)矩阵数组对角线的累加结果total,并根据系统容错率的设置,判断本次特征提取是否匹配成功。具体判断流程如下(参见附图6):
(I)从第I个KEYLEN*KEYLEN矩阵数组开始判断,令k=l ;
(2 )考虑各行偏移量的大小,第k个KEYLEN*KEYLEN矩阵数组的对角线累加结果total[k]=sum[l][k]+sum[2][l*m+k]+sum[3][2*m+k]+......+ sum[N][(N_l)*m+k];
(3)根据系统容错率x%的设置,若total[k]≥(l-x%) *KEYLEN,则特征提取匹配成功一次;
(4)判断(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN矩阵数组是否全部处理完毕,若“是”则转向步骤7,否则k — k+Ι,重复步骤6。
[0032]7.所有数据匹配完成,显示所有符合要求的特征提取结果。
[0033]8.释放GPU中分配的所有内存空间。
【权利要求】
1.一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:该处理方法包含以下步骤: 步骤1:在处理大数据时,根据硬件自身处理能力和特征数据的长度,主机将特征提取任务分为N (N ^ I)个子任务执行,每个子任务对来自大数据中的任务数据并行执行一定长度的特征提取; 步骤2:在GPU上为任务数据分配存储空间,并将其传递至GPU中; 步骤3:将子任务所需的部分特征数据传递至GPU中,根据所要处理的任务数据和该部分特征数据,并行构建一个具有良好并行性的矩阵数组; 步骤4:通过采用并行处理矩阵数组的方式,对矩阵数组进行多线程并发执行特征匹配,并将此结果返回给主机,释放GPU中无用的内存空间; 步骤5:重复步骤3、4,直到完成该任务数据对第N个子任务中部分特征数据的匹配; 步骤6:主机将根据特征数据采样所允许的一定的容错率,处理上述N部分返回结果,得出符合要求的特征提取结果。
2.根据权利要求1所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:该处理方法是基于CPU+GPU异步体系结构,即由CPU完成串行工作,控制主程序的流程;GPU使用CUDA编程架构,实现数据特征提取的并行计算。
3.根据权利要求1所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤I所 述的GPU硬件自身处理能力,是指每个子任务进行一定长度的特征提取时,此部分特征数据和任务数据形成的矩阵数组大小必须在GPU的硬件处理能力范围内。
4.根据权利要求1所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤2所述的在GPU上为任务数据分配存储空间,是指在GPU的全局存储器中为任务数据分配空间,并将任务数据从主机CPU存储器中传递至设备GPU的全局存储器中;步骤3所述的将本次子任务所需的部分特征数据传递至GPU中是指将此特征数据传递至GPU的常量存储器中,使用GPU的常量内存参与并行运算,可以减少程序运行时不断读取特征数据的次数,进一步提高计算速度。
5.根据权利要求1所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤3所述的并行构建一个具有良好并行性的矩阵数组,是把任务数据和子任务特征数据的每个字符依次进行并行匹配,形成一个有效的“01”矩阵数组,该有效“01”矩阵数组,是根据任务数据长度STRLEN和第i个子任务中特征数据的长度KEY[i](l^i^ N),将任务数据和特征数据的每个字符依次进行并行匹配,相同则记为“1”,不同则记为“0”,形成一个KEY [i] *STRLEN的“01”矩阵数组。
6.根据权利要求1和5所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤4所述的并行处理矩阵数组,是对步骤3中得到的KEY[i]*STRLEN 的 “01” 矩阵数组,依次并行处理(STRLEN_KEY[i]+l)个 KEY[i]*KEY[i]的小数组矩阵,将每个小数组矩阵对角线上的数值相加,并将其和值依次写入一个长度为STRLEN的一维数组中。
7.根据权利要求1和6所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤4所述的将匹配结果返回给主机,是指将保存并行处理矩阵数组结果的长度为STRLEN的一维数组,从设备GPU存储器传递回主机CPU存储器中,此一维数组将被存储在一个二维数组sum[N] [STRLEN]的第i行,该二维数组将记录所有子任务的返回结果,然后,将GPU设备中用于并行计算的内存空间释放,以便进行下一个子任务特征数据的提取。
8.根据权利要求1和7所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:步骤6所述的主机将根据数据采样所允许的一定的容错率,处理N部分返回结果,得出符合要求的特征提取结果,是待N个子任务的特征数据处理全部完成并返回结果后,将二维数组sum每行对应的数据相加,得出(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN (KEYLEN为特征数据的总长度)矩阵数组对角线的累加结果total,根据系统容错性能的设置,若其容错率为x%,当total≥(l-x%)*KEYLEN时,则认定此次特征提取成功,记录成功匹配一次。
9.根据权利要求8所述的一种面向大数据的针对可变长度特征提取的自适应并行处理方法,其特征在于:所述的将二维数组sum每行对应的数据相加,得出(STRLEN-KEYLEN+1)个KEYLEN*KEYLEN矩阵数组对角线的累加结果total,需要考虑各行偏移量的大小,若特征数据分为N个子任务处理,前N-1个子任务均处理m位特征数据,第N个子任务处理s位数据特征(1≤s ≤ m),则第k个KEYLEN*KEYLEN矩阵数组的对角线累加结果 total 的求和公式为:sum[l] [k] +sum[2] [l*m+k] +sum[3] [2*m+k]+......+ sum[N][(N-1)*m+k]。
【文档编号】G06T1/20GK103543989SQ201310555838
【公开日】2014年1月29日 申请日期:2013年11月11日 优先权日:2013年11月11日
【发明者】刘镇, 焦弘杰, 吕超, 邢红兵 申请人:镇江中安通信科技有限公司