一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法
【專利摘要】本發(fā)明公開了一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,該方法在CUDA環(huán)境下把對大數(shù)據(jù)的數(shù)據(jù)頻度統(tǒng)計以并行方式處理,從而降低處理時間。用戶提供目標數(shù)據(jù)流,在接收到數(shù)據(jù)后,對數(shù)據(jù)進行讀取,提取有效數(shù)據(jù)并做一些預處理,使其易于在GPU上以并行化方式處理;對處理后的數(shù)據(jù)進行任務塊劃分,并行化處理任務塊。該處理方法中利用GPU并行特點,合理的任務劃分,CPU與GPU協(xié)作處理,根據(jù)數(shù)據(jù)流的接收速度動態(tài)設置并發(fā)速度,保持接收與處理的一致性,具有很好的透明性、體驗性和自適應性,高效可靠,特別適用于數(shù)據(jù)規(guī)模較大的數(shù)據(jù)頻度統(tǒng)計處理中。
【專利說明】一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法
【技術領域】:
[0001]本發(fā)明屬于大數(shù)據(jù)并行處理【技術領域】,涉及一種數(shù)據(jù)頻度處理的方法,具體涉及一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法。
【背景技術】:
[0002]隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)處理的復雜度也越來越高。針對大數(shù)據(jù)規(guī)模大、結構復雜、類型眾多等特點,現(xiàn)有的數(shù)據(jù)處理技術已不能滿足用戶對實時性、高效率的要求。
[0003]現(xiàn)有的大數(shù)據(jù)頻度處理主要技術及其弊端為:
[0004]1.Hadoop集群技術:在當前的Hadoop的設計中,單一 NameNode、單一 Jobracker的設計嚴重制約了整個Hadoop的可擴展性和可靠性。設備復雜,規(guī)模較大。
[0005]2.基于云計算技術的數(shù)據(jù)處理:要求必須采用一些支撐云環(huán)境的相關技術,比如需要為所有數(shù)據(jù)提供多個副本的故障檢測與轉移機制和容錯機制,要有持久穩(wěn)定和快速的因特網(wǎng)連接的保障。安全性較低,并且會產(chǎn)生網(wǎng)絡延遲。
[0006]3.基于CPU的串行處理技術:串行處理數(shù)據(jù)具有速度慢、效率低、等待時間長等缺點,已不再適用大數(shù)據(jù)的處理。
[0007]4.CPU多核處理:雖然CPU多核處理在一定意義上實現(xiàn)了并行處理方法,比串行處理的速度有所提高,但是對于大數(shù)據(jù)規(guī)模大的特點,其核數(shù)遠遠不能滿足要求。
[0008]本專利利用GPU架構特點在CUDA環(huán)境下實現(xiàn)大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,具有自適應性,較高的實時性和可靠性。
【發(fā)明內(nèi)容】
:
[0009]本發(fā)明所要解決的技術問題是:針對以上傳統(tǒng)的數(shù)據(jù)頻度處理方法在處理大數(shù)據(jù)時存在的處理速度慢、效率低的問題,提出了一種新的高效處理方法,使頻度統(tǒng)計處理方式具有更快的處理速度,更好的自適應性。
[0010]為了實現(xiàn)上述目的,本發(fā)明解決上述問題的技術方案是利用GPU的并行處理技術,在數(shù)據(jù)讀取階段對數(shù)據(jù)進行預處理,在數(shù)據(jù)統(tǒng)計處理階段動態(tài)設置并發(fā)數(shù),將數(shù)據(jù)由CPU傳輸?shù)紾PU進行并行化計算,在最后的得出結果階段再將并行結果由GPU回傳到CPU,處理得到最終結果。
[0011]數(shù)據(jù)預處理階段:
[0012]讀取有效數(shù)據(jù)到數(shù)組生成目標數(shù)據(jù)(數(shù)據(jù)存儲類型為字符形式),每個子數(shù)據(jù)存儲長度固定為L (L可根據(jù)接收數(shù)據(jù)的子數(shù)據(jù)長度特征決定)個字節(jié),對于需要統(tǒng)計處理的特征數(shù)據(jù)存儲形式與目標數(shù)據(jù)相同,即特征數(shù)據(jù)占L個字節(jié)。
[0013]數(shù)據(jù)統(tǒng)計處理階段包括以下步驟:
[0014]步驟1:設置一些用于記錄各種狀態(tài)的變量,分為host端變量和device端變量。host端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,存儲塊統(tǒng)計狀態(tài)的數(shù)組。device端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,塊統(tǒng)計狀態(tài)數(shù)組;[0015]步驟2:數(shù)據(jù)傳輸。目標數(shù)據(jù)采用零拷貝內(nèi)存形式實現(xiàn)從host端到device端的傳輸,將步驟I中的host端其他數(shù)據(jù)傳輸?shù)絛evice端,對device端數(shù)據(jù)初始化;
[0016]步驟3:對數(shù)據(jù)進行任務塊劃分,動態(tài)設置并發(fā)速度。對數(shù)據(jù)進行任務塊劃分指具體分配每個thread的任務,每個thread完成單個字符的目標數(shù)據(jù)與特征數(shù)據(jù)之間的運算。根據(jù)目標數(shù)據(jù)流的接收速度動態(tài)設置并發(fā)處理速度,使得處理速度大于或等于接收速度,具體指設置block和grid數(shù)目,并且block數(shù)除了要適應處理速度大于接收速度外還要滿足是L的倍數(shù)的要求;
[0017]步驟4:設置shared數(shù)組,用來記錄每個thread比較計算的結果,數(shù)組長度為block的大??;
[0018]步驟5:根據(jù)thread運算結果設置步驟4中shared數(shù)組對應位置處的值;
[0019]步驟6:塊同步處理,保證每個block中的thread都完成任務,然后再繼續(xù)以下的任務,保持同步性;
[0020]如附圖2所示為shared數(shù)組生成過程。
[0021]步驟7:對每L個thread中的第一個thread執(zhí)行以下任務:統(tǒng)計shared數(shù)組中的值,當對應數(shù)組L個長度中的值有O出現(xiàn)時就停止對這L個長度的值的統(tǒng)計,繼續(xù)下一個L長度數(shù)據(jù)的統(tǒng)計,統(tǒng)計的結果以原子加操作形式存到對應的塊統(tǒng)計狀態(tài)數(shù)組中,得到每個block的計算結果,如附圖3所示。
[0022]結果處理階段包括:
[0023]device端得到的塊統(tǒng)計狀態(tài)數(shù)組傳輸?shù)絟ost端,在host端做最后的循環(huán)統(tǒng)計處理,得出最終結果并輸出。
[0024]本發(fā)明的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,具有的特點和有益效果:
[0025]1.本發(fā)明中數(shù)據(jù)處理階段利用GPU并行的特點處理大數(shù)據(jù),同時進行多個thread的處理,大大縮短了處理時間,提高了數(shù)據(jù)處理效率;
[0026]2.本發(fā)明在數(shù)據(jù)處理階段充分利用了 GPU硬件架構,同時啟動多個內(nèi)核,設備利
用率高;
[0027]3.本發(fā)明在對于大數(shù)據(jù)的數(shù)據(jù)頻度處理方面,根據(jù)接收數(shù)據(jù)流速度自適應的設置并發(fā)處理速度,具有動態(tài)可控制性,利用此處理方法與傳統(tǒng)處理方法相比的優(yōu)勢就越加明顯;
[0028]4.本發(fā)明在數(shù)據(jù)處理階段,各block利用了塊同步處理,保證了數(shù)據(jù)處理的完整性。
【專利附圖】
【附圖說明】:
[0029]圖1為本發(fā)明的系統(tǒng)流程圖;
[0030]圖2為本發(fā)明中thread處理目標數(shù)據(jù)與特征數(shù)據(jù),生成shared數(shù)組的過程;
[0031]圖3為本發(fā)明中以L為單位對shared數(shù)組處理生成塊統(tǒng)計狀態(tài)數(shù)組的過程。
【具體實施方式】:
[0032]下面結合附圖對本發(fā)明進行進一步的詳細介紹。
[0033]1.本發(fā)明的總體流程圖見附圖1所示:[0034]( I)接收數(shù)據(jù)流及用戶需查詢統(tǒng)計的數(shù)據(jù),并對其進行預處理,分別生成目標數(shù)據(jù)和特征數(shù)據(jù);
[0035](2)定義各狀態(tài)變量。分為host端變量和device端變量。host端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,存儲塊統(tǒng)計狀態(tài)的數(shù)組。device端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,塊統(tǒng)計狀態(tài)數(shù)組,目標數(shù)據(jù)數(shù)組用于存儲接收到的有效數(shù)據(jù),特征數(shù)據(jù)數(shù)組用于存放要統(tǒng)計的數(shù)據(jù),塊統(tǒng)計狀態(tài)數(shù)組存放每個block的最終處理結果;
[0036](3)數(shù)據(jù)傳輸。目標數(shù)據(jù)采用零拷貝內(nèi)存形式實現(xiàn)從host端到device端的傳輸,將host端其他數(shù)據(jù)傳輸?shù)絛evice端,對device端數(shù)據(jù)初始化。其中零拷貝內(nèi)存形式不占用額外內(nèi)存大小,提高了傳輸效率;
[0037](4)任務分配。每個thread完成單個字符的目標數(shù)據(jù)與特征數(shù)據(jù)之間的運算;
[0038](5)設置并發(fā)速度。根據(jù)目標數(shù)據(jù)流的接收速度動態(tài)設置并發(fā)處理速度,使得處理速度大于或等于接收速度,具體指設置block和grid數(shù)目,并且block數(shù)除了要適應處理速度大于或等于接收速度外還要滿足是L的倍數(shù)的要求。
[0039](6)啟動GPU并行處理,計算結果返回CPU端處理,得出最終統(tǒng)計結果。
[0040]2.數(shù)據(jù)預處理的方法是:
[0041]讀取有效數(shù)據(jù)到數(shù)組,生成目標數(shù)據(jù)(數(shù)據(jù)存儲類型可以是字符形式),每個子數(shù)據(jù)存儲長度固定為L (L可根據(jù)文本數(shù)據(jù)的子數(shù)據(jù)長度特征決定)個字節(jié),對于需要統(tǒng)計處理的特征數(shù)據(jù)存儲形式與目標數(shù)據(jù)相同。數(shù)據(jù)存儲長度L要大于或等于接收數(shù)據(jù)中子數(shù)據(jù)的最長字節(jié),讀取的子數(shù)據(jù)實際存儲長度小于L時,系統(tǒng)自動補全,這樣使得子數(shù)據(jù)存儲長度都為L。
[0042]3.GPU并行處理的方法是:
[0043](I) shared數(shù)組生成(參見附圖2 ):
[0044]a)在device端,讀取由host端傳輸過來的目標數(shù)據(jù)與特征數(shù)據(jù),并以字符為單位對二者進行比較,相等則對應shared數(shù)組位置賦1,否則賦0,轉向b);
[0045]b)塊同步處理。用于保證每個block中的thread都完成a)中的任務,保持同步性,轉向c);
[0046]c)得出每個block的shared數(shù)組,對其進行處理,轉向d);
[0047]d)檢查目標數(shù)據(jù)是否統(tǒng)計結束,是則得出最終的塊統(tǒng)計狀態(tài)數(shù)組;否則繼續(xù)下一個任務塊的處理,轉向a),直至目標數(shù)據(jù)統(tǒng)計結束。
[0048](2)處理shared數(shù)組,生成塊統(tǒng)計狀態(tài)數(shù)組:
[0049]對shared數(shù)組以長度L為單位做如下處理,如附圖3所示:
[0050]a)將thread id對L取模,并判斷結果是否為0,是則轉向b),否則該線程空閑;
[0051]b)判斷與thread對應的shared數(shù)組中的值是否為O,是則轉向c),否則轉向f);
[0052]c)將O賦給中間變量并停止這L個長度的shared數(shù)組的統(tǒng)計,轉向d);
[0053]d)對塊統(tǒng)計狀態(tài)數(shù)組執(zhí)行原子加操作,加上中間變量(中間變量初值為0),轉向e);
[0054]e)判斷目標數(shù)據(jù)是否統(tǒng)計結束,是則得出最后的塊統(tǒng)計狀態(tài)數(shù)組,否則繼續(xù)下一個任務塊的處理,轉向a);
[0055]f)將shared數(shù)組的偏移量加1,當偏移量增值小于L時,轉向b),否則g);[0056]g)將I賦給中間變量并停止統(tǒng)計,轉向d)。
[0057](3)將(2)中得到的塊統(tǒng)計狀態(tài)數(shù)組傳輸回host端,對數(shù)組循環(huán)求和,得到最后的結果。
【權利要求】
1.一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,在CUDA環(huán)境下把要處理的數(shù)據(jù)進行任務塊劃分實現(xiàn)并行化,其特征在于包括以下步驟: 步驟1:接收數(shù)據(jù),對數(shù)據(jù)預處理; 步驟2:定義各狀態(tài)變量; 步驟3:將數(shù)據(jù)由CPU傳輸?shù)紾PU端; 步驟4:在GPU上劃分任務,并根據(jù)任務分配情況動態(tài)設置并發(fā)速度; 步驟5:在CUDA環(huán)境下并行發(fā)射任務,在device端利用GPU的并行性特點處理數(shù)據(jù),統(tǒng)計特征數(shù)據(jù)頻度。
2.根據(jù)權利要求1所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述的步驟I中的數(shù)據(jù)預處理是指讀取接收數(shù)據(jù)流中的有效數(shù)據(jù)到數(shù)組,生成目標數(shù)據(jù),數(shù)據(jù)存儲類型可以是字符形式,每個子數(shù)據(jù)存儲長度固定為L (L可根據(jù)接收數(shù)據(jù)的子數(shù)據(jù)長度特征決定)個字節(jié),對于需要統(tǒng)計處理的特征數(shù)據(jù)存儲形式與目標數(shù)據(jù)相同,即特征數(shù)據(jù)占L個字節(jié)。
3.根據(jù)權利要求1所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述步驟2中的狀態(tài)變量分為host端變量和device端變量;host端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,存儲塊統(tǒng)計狀態(tài)的數(shù)組;對應的device端變量包括:目標數(shù)據(jù)數(shù)組,特征數(shù)據(jù)數(shù)組,塊統(tǒng)計狀態(tài)數(shù)組。
4.根據(jù)權利要求1所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述步驟3的數(shù)據(jù)由CPU傳輸?shù)紾PU端時,目標數(shù)據(jù)采用零拷貝內(nèi)存形式實現(xiàn)從host端到device端的傳輸,host端其他數(shù)據(jù)傳輸?shù)絛evice端,對device端數(shù)據(jù)初始化,并行處理后得到的塊統(tǒng)計狀態(tài)結果傳輸回host端做最后的統(tǒng)計得出結果。
5.根據(jù)權利要求1所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述的步驟4中的任務分配指具體分配每個thread的任務,動態(tài)設置并發(fā)速度;每個thread完成單個字符的目標數(shù)據(jù)與特征數(shù)據(jù)之間的運算。
6.根據(jù)權利要求5所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述的每個thread執(zhí)行的運算指的是比較運算,目標數(shù)據(jù)與特征數(shù)據(jù)比較,相等則為1,否則為0,以及對比較之后的結果進行處理。
7.根據(jù)權利要求5所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述的動態(tài)設置并發(fā)速度是指根據(jù)目標數(shù)據(jù)流的接收速度動態(tài)設置并發(fā)處理速度,使得處理速度大于接收速度,具體指設置block和grid數(shù)目,并且block數(shù)除了要適應處理速度大于或者等于接收速度,保持一致性外還要滿足是L的倍數(shù)的要求。
8.根據(jù)權利要求1所述的一種面向大數(shù)據(jù)的數(shù)據(jù)頻度并行處理方法,其特征在于:所述的步驟5中的在device端利用GPU的并行性特點處理數(shù)據(jù),其具體步驟如下: 步驟1:定義shared數(shù)組,用來記錄每個thread計算結果; 步驟2:根據(jù)權利要求4所述執(zhí)行任務,并根據(jù)運算結果設置步驟I中shared數(shù)組中的值; 步驟3:塊同步處理,保證每個block中的thread都完成任務,然后再繼續(xù)以下的任務,保持同步性; 步驟4:對每L個thread中的第一個thread執(zhí)行以下任務:統(tǒng)計shared數(shù)組中的值,當對應數(shù)組L個長度中的值有O出現(xiàn)時就停止對這L個長度值的統(tǒng)計,繼續(xù)下一個L長度數(shù)據(jù)的統(tǒng)計,統(tǒng)計的結果以原子加操作形式存到對應的塊統(tǒng)計狀態(tài)數(shù)組中,得到每個block的計算結果 。
【文檔編號】G06F9/38GK103577161SQ201310488199
【公開日】2014年2月12日 申請日期:2013年10月17日 優(yōu)先權日:2013年10月17日
【發(fā)明者】劉鎮(zhèn), 尚艷羽, 范桂林, 蔣玉宇 申請人:江蘇科技大學