一种面向大数据的数据频度并行处理方法

文档序号:6515733阅读:188来源:国知局
一种面向大数据的数据频度并行处理方法
【专利摘要】本发明公开了一种面向大数据的数据频度并行处理方法,该方法在CUDA环境下把对大数据的数据频度统计以并行方式处理,从而降低处理时间。用户提供目标数据流,在接收到数据后,对数据进行读取,提取有效数据并做一些预处理,使其易于在GPU上以并行化方式处理;对处理后的数据进行任务块划分,并行化处理任务块。该处理方法中利用GPU并行特点,合理的任务划分,CPU与GPU协作处理,根据数据流的接收速度动态设置并发速度,保持接收与处理的一致性,具有很好的透明性、体验性和自适应性,高效可靠,特别适用于数据规模较大的数据频度统计处理中。
【专利说明】一种面向大数据的数据频度并行处理方法
【技术领域】:
[0001]本发明属于大数据并行处理【技术领域】,涉及一种数据频度处理的方法,具体涉及一种面向大数据的数据频度并行处理方法。
【背景技术】:
[0002]随着大数据时代的来临,数据处理的复杂度也越来越高。针对大数据规模大、结构复杂、类型众多等特点,现有的数据处理技术已不能满足用户对实时性、高效率的要求。
[0003]现有的大数据频度处理主要技术及其弊端为:
[0004]1.Hadoop集群技术:在当前的Hadoop的设计中,单一 NameNode、单一 Jobracker的设计严重制约了整个Hadoop的可扩展性和可靠性。设备复杂,规模较大。
[0005]2.基于云计算技术的数据处理:要求必须采用一些支撑云环境的相关技术,比如需要为所有数据提供多个副本的故障检测与转移机制和容错机制,要有持久稳定和快速的因特网连接的保障。安全性较低,并且会产生网络延迟。
[0006]3.基于CPU的串行处理技术:串行处理数据具有速度慢、效率低、等待时间长等缺点,已不再适用大数据的处理。
[0007]4.CPU多核处理:虽然CPU多核处理在一定意义上实现了并行处理方法,比串行处理的速度有所提高,但是对于大数据规模大的特点,其核数远远不能满足要求。
[0008]本专利利用GPU架构特点在CUDA环境下实现大数据的数据频度并行处理方法,具有自适应性,较高的实时性和可靠性。

【发明内容】
:
[0009]本发明所要解决的技术问题是:针对以上传统的数据频度处理方法在处理大数据时存在的处理速度慢、效率低的问题,提出了一种新的高效处理方法,使频度统计处理方式具有更快的处理速度,更好的自适应性。
[0010]为了实现上述目的,本发明解决上述问题的技术方案是利用GPU的并行处理技术,在数据读取阶段对数据进行预处理,在数据统计处理阶段动态设置并发数,将数据由CPU传输到GPU进行并行化计算,在最后的得出结果阶段再将并行结果由GPU回传到CPU,处理得到最终结果。
[0011]数据预处理阶段:
[0012]读取有效数据到数组生成目标数据(数据存储类型为字符形式),每个子数据存储长度固定为L (L可根据接收数据的子数据长度特征决定)个字节,对于需要统计处理的特征数据存储形式与目标数据相同,即特征数据占L个字节。
[0013]数据统计处理阶段包括以下步骤:
[0014]步骤1:设置一些用于记录各种状态的变量,分为host端变量和device端变量。host端变量包括:目标数据数组,特征数据数组,存储块统计状态的数组。device端变量包括:目标数据数组,特征数据数组,块统计状态数组;[0015]步骤2:数据传输。目标数据采用零拷贝内存形式实现从host端到device端的传输,将步骤I中的host端其他数据传输到device端,对device端数据初始化;
[0016]步骤3:对数据进行任务块划分,动态设置并发速度。对数据进行任务块划分指具体分配每个thread的任务,每个thread完成单个字符的目标数据与特征数据之间的运算。根据目标数据流的接收速度动态设置并发处理速度,使得处理速度大于或等于接收速度,具体指设置block和grid数目,并且block数除了要适应处理速度大于接收速度外还要满足是L的倍数的要求;
[0017]步骤4:设置shared数组,用来记录每个thread比较计算的结果,数组长度为block的大小;
[0018]步骤5:根据thread运算结果设置步骤4中shared数组对应位置处的值;
[0019]步骤6:块同步处理,保证每个block中的thread都完成任务,然后再继续以下的任务,保持同步性;
[0020]如附图2所示为shared数组生成过程。
[0021]步骤7:对每L个thread中的第一个thread执行以下任务:统计shared数组中的值,当对应数组L个长度中的值有O出现时就停止对这L个长度的值的统计,继续下一个L长度数据的统计,统计的结果以原子加操作形式存到对应的块统计状态数组中,得到每个block的计算结果,如附图3所示。
[0022]结果处理阶段包括:
[0023]device端得到的块统计状态数组传输到host端,在host端做最后的循环统计处理,得出最终结果并输出。
[0024]本发明的一种面向大数据的数据频度并行处理方法,具有的特点和有益效果:
[0025]1.本发明中数据处理阶段利用GPU并行的特点处理大数据,同时进行多个thread的处理,大大缩短了处理时间,提高了数据处理效率;
[0026]2.本发明在数据处理阶段充分利用了 GPU硬件架构,同时启动多个内核,设备利
用率高;
[0027]3.本发明在对于大数据的数据频度处理方面,根据接收数据流速度自适应的设置并发处理速度,具有动态可控制性,利用此处理方法与传统处理方法相比的优势就越加明显;
[0028]4.本发明在数据处理阶段,各block利用了块同步处理,保证了数据处理的完整性。
【专利附图】

【附图说明】:
[0029]图1为本发明的系统流程图;
[0030]图2为本发明中thread处理目标数据与特征数据,生成shared数组的过程;
[0031]图3为本发明中以L为单位对shared数组处理生成块统计状态数组的过程。
【具体实施方式】:
[0032]下面结合附图对本发明进行进一步的详细介绍。
[0033]1.本发明的总体流程图见附图1所示:[0034]( I)接收数据流及用户需查询统计的数据,并对其进行预处理,分别生成目标数据和特征数据;
[0035](2)定义各状态变量。分为host端变量和device端变量。host端变量包括:目标数据数组,特征数据数组,存储块统计状态的数组。device端变量包括:目标数据数组,特征数据数组,块统计状态数组,目标数据数组用于存储接收到的有效数据,特征数据数组用于存放要统计的数据,块统计状态数组存放每个block的最终处理结果;
[0036](3)数据传输。目标数据采用零拷贝内存形式实现从host端到device端的传输,将host端其他数据传输到device端,对device端数据初始化。其中零拷贝内存形式不占用额外内存大小,提高了传输效率;
[0037](4)任务分配。每个thread完成单个字符的目标数据与特征数据之间的运算;
[0038](5)设置并发速度。根据目标数据流的接收速度动态设置并发处理速度,使得处理速度大于或等于接收速度,具体指设置block和grid数目,并且block数除了要适应处理速度大于或等于接收速度外还要满足是L的倍数的要求。
[0039](6)启动GPU并行处理,计算结果返回CPU端处理,得出最终统计结果。
[0040]2.数据预处理的方法是:
[0041]读取有效数据到数组,生成目标数据(数据存储类型可以是字符形式),每个子数据存储长度固定为L (L可根据文本数据的子数据长度特征决定)个字节,对于需要统计处理的特征数据存储形式与目标数据相同。数据存储长度L要大于或等于接收数据中子数据的最长字节,读取的子数据实际存储长度小于L时,系统自动补全,这样使得子数据存储长度都为L。
[0042]3.GPU并行处理的方法是:
[0043](I) shared数组生成(参见附图2 ):
[0044]a)在device端,读取由host端传输过来的目标数据与特征数据,并以字符为单位对二者进行比较,相等则对应shared数组位置赋1,否则赋0,转向b);
[0045]b)块同步处理。用于保证每个block中的thread都完成a)中的任务,保持同步性,转向c);
[0046]c)得出每个block的shared数组,对其进行处理,转向d);
[0047]d)检查目标数据是否统计结束,是则得出最终的块统计状态数组;否则继续下一个任务块的处理,转向a),直至目标数据统计结束。
[0048](2)处理shared数组,生成块统计状态数组:
[0049]对shared数组以长度L为单位做如下处理,如附图3所示:
[0050]a)将thread id对L取模,并判断结果是否为0,是则转向b),否则该线程空闲;
[0051]b)判断与thread对应的shared数组中的值是否为O,是则转向c),否则转向f);
[0052]c)将O赋给中间变量并停止这L个长度的shared数组的统计,转向d);
[0053]d)对块统计状态数组执行原子加操作,加上中间变量(中间变量初值为0),转向e);
[0054]e)判断目标数据是否统计结束,是则得出最后的块统计状态数组,否则继续下一个任务块的处理,转向a);
[0055]f)将shared数组的偏移量加1,当偏移量增值小于L时,转向b),否则g);[0056]g)将I赋给中间变量并停止统计,转向d)。
[0057](3)将(2)中得到的块统计状态数组传输回host端,对数组循环求和,得到最后的结果。
【权利要求】
1.一种面向大数据的数据频度并行处理方法,在CUDA环境下把要处理的数据进行任务块划分实现并行化,其特征在于包括以下步骤: 步骤1:接收数据,对数据预处理; 步骤2:定义各状态变量; 步骤3:将数据由CPU传输到GPU端; 步骤4:在GPU上划分任务,并根据任务分配情况动态设置并发速度; 步骤5:在CUDA环境下并行发射任务,在device端利用GPU的并行性特点处理数据,统计特征数据频度。
2.根据权利要求1所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述的步骤I中的数据预处理是指读取接收数据流中的有效数据到数组,生成目标数据,数据存储类型可以是字符形式,每个子数据存储长度固定为L (L可根据接收数据的子数据长度特征决定)个字节,对于需要统计处理的特征数据存储形式与目标数据相同,即特征数据占L个字节。
3.根据权利要求1所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述步骤2中的状态变量分为host端变量和device端变量;host端变量包括:目标数据数组,特征数据数组,存储块统计状态的数组;对应的device端变量包括:目标数据数组,特征数据数组,块统计状态数组。
4.根据权利要求1所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述步骤3的数据由CPU传输到GPU端时,目标数据采用零拷贝内存形式实现从host端到device端的传输,host端其他数据传输到device端,对device端数据初始化,并行处理后得到的块统计状态结果传输回host端做最后的统计得出结果。
5.根据权利要求1所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述的步骤4中的任务分配指具体分配每个thread的任务,动态设置并发速度;每个thread完成单个字符的目标数据与特征数据之间的运算。
6.根据权利要求5所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述的每个thread执行的运算指的是比较运算,目标数据与特征数据比较,相等则为1,否则为0,以及对比较之后的结果进行处理。
7.根据权利要求5所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述的动态设置并发速度是指根据目标数据流的接收速度动态设置并发处理速度,使得处理速度大于接收速度,具体指设置block和grid数目,并且block数除了要适应处理速度大于或者等于接收速度,保持一致性外还要满足是L的倍数的要求。
8.根据权利要求1所述的一种面向大数据的数据频度并行处理方法,其特征在于:所述的步骤5中的在device端利用GPU的并行性特点处理数据,其具体步骤如下: 步骤1:定义shared数组,用来记录每个thread计算结果; 步骤2:根据权利要求4所述执行任务,并根据运算结果设置步骤I中shared数组中的值; 步骤3:块同步处理,保证每个block中的thread都完成任务,然后再继续以下的任务,保持同步性; 步骤4:对每L个thread中的第一个thread执行以下任务:统计shared数组中的值,当对应数组L个长度中的值有O出现时就停止对这L个长度值的统计,继续下一个L长度数据的统计,统计的结果以原子加操作形式存到对应的块统计状态数组中,得到每个block的计算结果 。
【文档编号】G06F9/38GK103577161SQ201310488199
【公开日】2014年2月12日 申请日期:2013年10月17日 优先权日:2013年10月17日
【发明者】刘镇, 尚艳羽, 范桂林, 蒋玉宇 申请人:江苏科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1