亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于指令集生成的大數(shù)據(jù)處理方法及裝置的制造方法_2

文檔序號:9249087閱讀:來源:國知局
此得到的函數(shù)執(zhí)行流程為:首先計算索引為O的列與索引為I列的Int相加運(yùn)算,然后將Int相加結(jié)果與索引為2的列進(jìn)行Int大于比較。
[0081]進(jìn)一步地,采用底層虛擬機(jī)即時編譯技術(shù)將所述中間表示指令集生成所述即時編譯函數(shù)。
[0082]其中,所謂的底層虛擬機(jī)即時編譯技術(shù)即Low Level Virtual MachineJust-1n-time compilat1n,簡稱LLVM-JIT。其中的即時編譯也稱及時編譯、實時編譯或動態(tài)編譯。
[0083]進(jìn)一步地,在所述利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理之前,還包括自動向量化處理,具體包括:
[0084]分析所述用戶需求的并行性;
[0085]根據(jù)所述并行性的分析結(jié)果在所述即時編譯函數(shù)中添加相應(yīng)的自動向量化處理指令。
[0086]其中,所謂的自動向量化處理,英文為Automatic Vectorizat1n。本發(fā)明可以利用CPU SMD編譯器進(jìn)行自動向量化處理。該編譯器根據(jù)即時編譯程序的特點,通過循環(huán)展開、數(shù)據(jù)依賴分析和指令重排等方式挖掘即時編譯函數(shù)中的并行性,并將具有并行性的指令合并為CPU支持的向量指令。
[0087]為了方便理解,下面舉例說明自動向量化處理的好處或方便之處,應(yīng)當(dāng)可以理解,以下實例并不是對上述技術(shù)方案的限定。
[0088]例如,用戶要進(jìn)行一個簡單的計算,計算式為:(C1+C2)*(C3_C4),通過本發(fā)明的上述技術(shù)方案得到與該用戶需求對應(yīng)的即時編譯函數(shù),通過對上述用戶需求進(jìn)行并行性分析,并在即時編譯函數(shù)中添加相應(yīng)的自動向量化處理指令,則利用自動向量化的即時編譯函數(shù)進(jìn)行大數(shù)據(jù)處理的過程為:
[0089](I)批量處理C1+C1,并將結(jié)果緩存到Tmpl中;
[0090](2)批量處理C3-C4,并將結(jié)果緩存到Tmp2中;
[0091](3)批量處理 Tmpl*Tmp2。
[0092]假如該即時編譯函數(shù)沒有添加自動向量化處理指令,在進(jìn)行處理時,會對數(shù)據(jù)一行一行的掃描,而不是將多行進(jìn)行批量處理,所以自動向量化處理步驟使得數(shù)據(jù)處理的速率得到進(jìn)一步提尚。
[0093]當(dāng)然,也有可能只是用戶需求的一部分具有并行性,相應(yīng)的,在即時編譯函數(shù)中添加相應(yīng)部分的自動向量化處理指令,例如用戶需求表達(dá)式中有一部分運(yùn)算過程比較簡單,而另一部分比較復(fù)雜,比較簡單的部分可以向量化。將該比較簡單部分的處理過程采用C++編寫,形成靜態(tài)庫,供IR調(diào)用。在執(zhí)行該部分對應(yīng)的指令時,觸發(fā)自動向量化,進(jìn)而進(jìn)行批量處理,而執(zhí)行到復(fù)雜部分對應(yīng)的指令時,不能進(jìn)行批量處理,只能逐行運(yùn)算。還有,當(dāng)遇到類似Casewhen這種需要逐行處理的情況時,也不能通過自動向量化進(jìn)行批量處理,可見自動向量化處理是有一定局限性的。
[0094]在利用CPU SIMD編譯器對即時編譯函數(shù)進(jìn)行向量自動化時,應(yīng)當(dāng)注意:
[0095](I)循環(huán)次數(shù),告之編譯器循環(huán)次數(shù)信息,如是4、8的整數(shù)倍;
[0096](2)數(shù)據(jù)對齊,告之編譯器數(shù)據(jù)對齊方式以提高數(shù)據(jù)吞吐量;
[0097](3)邏輯簡單,減少不必要的條件判斷代碼,避免循環(huán)內(nèi)的條件跳轉(zhuǎn)、條件判斷、函數(shù)調(diào)用等;
[0098](4)消除數(shù)據(jù)相關(guān)性,告之編譯器數(shù)據(jù)依賴關(guān)系不存在;
[0099](5)使用restrict關(guān)鍵字消除數(shù)據(jù)訪問的二義性;
[0100](6)選擇合適的數(shù)據(jù)操作類型,如NEON針對64bit雙精度浮點使用SMD指令是沒有增益的;
[0101](7)對數(shù)據(jù)的訪問方式進(jìn)行合理規(guī)劃,盡可能的采用順序訪問方式,這也是數(shù)據(jù)結(jié)構(gòu)設(shè)計需要考慮的問題。
[0102]利用CPU SMD編譯器實現(xiàn)自動向量化能把程序員從底層編譯中解放出來專心做好代碼開發(fā),而把繁瑣的、重復(fù)性的編譯工作交給CPU SMD編譯器處理,提高了工作效率。
[0103]相應(yīng)于上述方法,本發(fā)明還提供了對方法對應(yīng)的功能模塊架構(gòu),即還提供一種基于指令集生成的大數(shù)據(jù)處理裝置,如圖2所示,該裝置包括:
[0104]函數(shù)生成模塊,用于生成即時編譯函數(shù);
[0105]處理模塊,用于利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理;
[0106]其中,所述即時編譯函數(shù)生成模塊包括:
[0107]指令庫建立子模塊,用于建立指令庫,所述指令庫內(nèi)存儲有多種中間表示指令;
[0108]流程確定子模塊,用于根據(jù)用戶需求確定相應(yīng)的函數(shù)執(zhí)行流程;
[0109]指令集生成子模塊,用于根據(jù)所述函數(shù)執(zhí)行流程選取所述指令庫中與所述函數(shù)執(zhí)行流程匹配的中間表示指令,生成中間表示指令集;
[0110]函數(shù)生成子模塊,用于將所述中間表示指令集生成所述即時編譯函數(shù)。
[0111]進(jìn)一步地,所述指令庫建立子模塊包括:
[0112]指令生成單元,用于生成所有的中間表示指令;
[0113]封裝單元,用于對所述中間表示指令進(jìn)行封裝。
[0114]進(jìn)一步地,所述中間表示指令是封裝后存儲在所述指令庫中的。
[0115]進(jìn)一步地,所述函數(shù)生成子模塊采用底層虛擬機(jī)即時編譯方法將所述中間表示指令集生成所述即時編譯函數(shù)。
[0116]進(jìn)一步地,還包括向量化處理模塊,用于在所述利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理之前,對所述即時編譯函數(shù)進(jìn)行自動向量化處理;
[0117]所述向量化處理模塊包括:
[0118]向量化可行性分析模塊,用于分析用戶需求是否可以進(jìn)行向量化處理;
[0119]指令合成子模塊,在生成所述即時編譯函數(shù)過程中增加自動向量化指令;
[0120]為了說明書的簡潔,這里不再對上述裝置進(jìn)行如同上述方法的具體解釋、描述和有益效果,相關(guān)內(nèi)容請參見上述方法技術(shù)方案的對應(yīng)內(nèi)容,不在此贅述。
[0121]綜上所述,本發(fā)明具有以下優(yōu)點:
[0122](I)本發(fā)明根據(jù)用戶需求進(jìn)行定制即時編譯函數(shù),利用該定制的即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理,由于即時編譯函數(shù)的指令條數(shù)相對于通用函數(shù)大大減少,所以提高了數(shù)據(jù)處理的速度,減少了時間的開銷;
[0123](2)對指令庫中的中間表示指令進(jìn)行封裝,提高了指令的可維護(hù)性;
[0124](3)利用自動向量化處理實現(xiàn)對數(shù)據(jù)的批量處理,進(jìn)一步提高了數(shù)據(jù)處理的速度。
[0125]應(yīng)當(dāng)可以理解,上述方法或裝置中的技術(shù)方案以及技術(shù)方案中的技術(shù)特征在不沖突的前提下,可以任意組合,組合后的技術(shù)方案仍在本發(fā)明的保護(hù)范圍之內(nèi)。
[0126]雖然結(jié)合附圖描述了本發(fā)明的實施方式,但是本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的精神和范圍的情況下做出各種修改和變型,這樣的修改和變型均落入由所附權(quán)利要求所限定的范圍之內(nèi)。
【主權(quán)項】
1.一種基于指令集生成的大數(shù)據(jù)處理方法,其特征在于,包括: 生成即時編譯函數(shù); 利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理; 其中,所述生成即時編譯函數(shù)包括: 建立指令庫,所述指令庫內(nèi)存儲有多種中間表示指令; 根據(jù)用戶需求確定相應(yīng)的函數(shù)執(zhí)行流程; 根據(jù)所述函數(shù)執(zhí)行流程選取所述指令庫中與所述函數(shù)執(zhí)行流程匹配的中間表示指令,生成中間表示指令集; 將所述中間表示指令集生成所述即時編譯函數(shù)。2.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)處理方法,其特征在于,所述中間表示指令是封裝后存儲在所述指令庫中的。3.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)處理方法,其特征在于,所述確定相應(yīng)的函數(shù)執(zhí)行流程,包括: 根據(jù)用戶需求生成表達(dá)式樹; 遍歷所述表達(dá)式樹,獲取該表達(dá)式樹的屬性信息; 根據(jù)所述表達(dá)式樹及其所述屬性信息,確定所述函數(shù)執(zhí)行流程。4.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)處理方法,其特征在于,所述即時編譯函數(shù)是采用底層虛擬機(jī)即時編譯方法生成的。5.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)處理方法,其特征在于,在所述利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理之前,還包括自動向量化處理,具體包括: 分析所述用戶需求的并行性; 根據(jù)所述并行性的分析結(jié)果在所述即時編譯函數(shù)中添加相應(yīng)的自動向量化處理指令。6.一種基于指令集生成的大數(shù)據(jù)處理裝置,其特征在于,包括: 函數(shù)生成模塊,用于生成即時編譯函數(shù); 處理模塊,用于利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理; 其中,所述即時編譯函數(shù)生成模塊包括: 指令庫建立子模塊,用于建立指令庫,所述指令庫內(nèi)存儲有多種中間表示指令; 流程確定子模塊,用于根據(jù)用戶需求確定相應(yīng)的函數(shù)執(zhí)行流程; 指令集生成子模塊,用于根據(jù)所述函數(shù)執(zhí)行流程選取所述指令庫中與所述函數(shù)執(zhí)行流程匹配的中間表示指令,生成中間表示指令集; 函數(shù)生成子模塊,用于將所述中間表示指令集生成所述即時編譯函數(shù)。7.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)處理裝置,其特征在于,所述中間表示指令是封裝后存儲在所述指令庫中的。8.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)處理裝置,其特征在于,所述流程確定子模塊包括: 樹生成單元,用于根據(jù)用戶需求生成表達(dá)式樹; 屬性信息獲取單元,用于遍歷所述表達(dá)式樹,獲取該表達(dá)式樹的屬性信息; 函數(shù)執(zhí)行流程確定單元,用于根據(jù)所述表達(dá)式樹及其所述屬性信息,確定函數(shù)執(zhí)行流程。9.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)處理裝置,其特征在于,所述即時編譯函數(shù)是采用底層虛擬機(jī)即時編譯方法生成的。10.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)處理裝置,其特征在于,還包括向量化處理模塊,用于在所述利用所述即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理之前,進(jìn)行自動向量化處理; 所述向量化處理模塊包括: 并行性分析子模塊,用于分析所述用戶需求的并行性; 指令增加子模塊,用于根據(jù)所述并行性的分析結(jié)果在所述即時編譯函數(shù)中添加相應(yīng)的自動向量化處理指令。
【專利摘要】本發(fā)明涉及一種基于指令集生成的大數(shù)據(jù)處理方法及裝置,以解決如何提高大數(shù)據(jù)處理速度的問題。該方法包括生成即時編譯函數(shù);利用即時編譯函數(shù)對大數(shù)據(jù)進(jìn)行處理;生成即時編譯函數(shù)包括:建立指令庫;根據(jù)用戶需求確定函數(shù)執(zhí)行流程;根據(jù)函數(shù)執(zhí)行流程選取指令庫中的中間表示指令,生成中間表示指令集;將中間表示指令集生成即時編譯函數(shù)。即時編譯函數(shù)是根據(jù)用戶需求進(jìn)行設(shè)計的,在指令庫中只選取了部分中間表示指令,用于生成中間表示指令集,進(jìn)而得到即時編譯函數(shù)。由于本發(fā)明的即時編譯函數(shù)中只包含了和本次處理工作有關(guān)的指令,相對于通用程序,大大減少了指令的數(shù)量,因而在利用該即時編譯函數(shù)進(jìn)行大數(shù)據(jù)處理時,處理速度得到大大提高。
【IPC分類】G06F9/30, G06F9/45
【公開號】CN104965687
【申請?zhí)枴緾N201510303600
【發(fā)明人】季桃桃, 余佳陽, 霍衛(wèi)平, 金正皓, 郭志弘
【申請人】北京東方國信科技股份有限公司
【公開日】2015年10月7日
【申請日】2015年6月4日
當(dāng)前第2頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1