一種gpu上數(shù)據(jù)流處理系統(tǒng)及其數(shù)據(jù)流處理方法
【專利摘要】本發(fā)明公開了一種GPU上數(shù)據(jù)流處理系統(tǒng)及其數(shù)據(jù)流處理方法,屬于GPU上數(shù)據(jù)流處理的【技術(shù)領(lǐng)域】,一種GPU上數(shù)據(jù)流處理系統(tǒng),數(shù)據(jù)源的數(shù)據(jù)流通過數(shù)據(jù)流處理系統(tǒng)至客戶端,數(shù)據(jù)流處理系統(tǒng)包括CPU主機和GPU設(shè)備;CPU主機包括CPU端加載引擎模塊、CPU端緩沖模塊、數(shù)據(jù)流預(yù)處理模塊、數(shù)據(jù)流減負模塊和可視化模塊;GPU設(shè)備包括GPU端加載引擎模塊、GPU端緩沖模塊、數(shù)據(jù)流概要抽取模塊、數(shù)據(jù)流處理模型庫和數(shù)據(jù)流處理模塊;CPU端加載引擎模塊的裝載或存儲單元通過互聯(lián)網(wǎng)絡(luò)與數(shù)據(jù)源、GPU端加載引擎模塊的裝載或存儲單元以及客戶端的交互。本發(fā)明具有顯著的速度優(yōu)勢,很好地滿足了高維數(shù)據(jù)流的實時性需求,可以作為通用的分析方法廣泛應(yīng)用于高維數(shù)據(jù)流挖掘領(lǐng)域。
【專利說明】一種GPU上數(shù)據(jù)流處理系統(tǒng)及其數(shù)據(jù)流處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種GPU上數(shù)據(jù)流處理的【技術(shù)領(lǐng)域】,具體地說是一種GPU上數(shù)據(jù)流處 理系統(tǒng)及其數(shù)據(jù)流處理方法。
【背景技術(shù)】
[0002]GPU(Graphic Processing Unit),中文翻譯為"圖形處理器"。GPU是顯卡的"心 臟",也就相當(dāng)于CPU在電腦中的作用。GPU具有相當(dāng)高的內(nèi)存帶寬,以及大量的執(zhí)行單元, 它可幫助CPU進行一些復(fù)雜的計算工作,使顯卡減少了對CPU的依賴。
[0003] 傳統(tǒng)上,GPU的應(yīng)用被局限于處理圖形渲染計算任務(wù),無疑是對計算資源的極大 浪費。隨著GPU可編程性的不斷提高,利用GPU完成通用計算的研究漸漸活躍起來。將 GPU用于圖形這染以外領(lǐng)域的計算成為GPGPU (General-purpose computing on graphics processing units,基于GPU的通用計算)。GPGPU計算通常采用CPU+GPU異構(gòu)模式,由CPU 負責(zé)執(zhí)行復(fù)雜邏輯處理和事務(wù)管理等不適合數(shù)據(jù)并行的計算,由GPU負責(zé)計算密集型的大 規(guī)模數(shù)據(jù)并行計算。這種利用GPU強大處理能力和高帶寬彌補CPU性能不足的計算方式在 發(fā)掘計算機潛在的性能,在成本和性價比方面有顯著優(yōu)勢。但是傳統(tǒng)的GPGPU受硬件可編 程和開發(fā)方式的制約,應(yīng)用領(lǐng)域受到了限制,開發(fā)難度也很大。
[0004] 2007 年,由 NVIDIA 推出的 CUDA (Compute Unified Device Architecture,統(tǒng)一計 算設(shè)備架構(gòu)),這一編程接口彌補了傳統(tǒng)GPGPU的不足。利用CUDA編程接口,可以用C語 言直接調(diào)用GPU資源,而無需將其映射到圖形API,為GPU的非圖形編程普及消除了障礙。
[0005] CUDA模型將CPU作為主機(Host ),GPU作為協(xié)處理器(co-processor )或設(shè)備 (device),兩者協(xié)同工作。CPU負責(zé)進行邏輯性強的事物處理和串行計算,GPU則專注于執(zhí) 行高度線程化的并行處理任務(wù)。CPU、GPU各自擁有相互獨立的存儲器地址空間:主機端內(nèi) 存和設(shè)備端顯存。一旦確定了程序中的并行計算函數(shù)(kernel),就考慮把這部分計算交給 GPU。
[0006] (數(shù)據(jù)流的定義)數(shù)據(jù)流實際上就是連續(xù)移動的元素隊伍,其中的元素是由相關(guān)數(shù) 據(jù)的集合組成。令t表示任一時間戳,at表示在該時間戳到達的數(shù)據(jù),流數(shù)據(jù)可以表示成 {--?,atl,at,at+l,…區(qū)別于傳統(tǒng)應(yīng)用模型,流數(shù)據(jù)模型具有以下4點共性:(1)數(shù)據(jù) 實時到達;(2)數(shù)據(jù)到達次序獨立,不受應(yīng)用系統(tǒng)所控制;(3)數(shù)據(jù)規(guī)模宏大且不能預(yù)知 其最大值;(4)數(shù)據(jù)一經(jīng)處理,除非特意保存,否則不能被再次取出處理,或者再次提取數(shù) 據(jù)代價昂貴。
[0007] 同時,流是以雙重身份出現(xiàn)的:(1)作為一個軟件可見的程序變量存在。(2)作為 一個硬件可見的管理單位存在。實際應(yīng)用中流往往具有很多屬性,當(dāng)流被映射到硬件中時, 這些屬性仍然被保持或者變個形式被硬件所見。
[0008] 現(xiàn)有技術(shù)的數(shù)據(jù)挖掘中,為了消除數(shù)據(jù)中的噪音、空值和異常值等錯誤數(shù)據(jù),以保 證結(jié)果的準確性,通常會在挖掘數(shù)據(jù)庫中的靜態(tài)數(shù)據(jù)集之前進行預(yù)處理操作;當(dāng)然,數(shù)據(jù)流 中也避免不了各種錯誤數(shù)據(jù),為了提高挖掘結(jié)果的精確度,對其進行預(yù)處理也是十分必要 的。然而數(shù)據(jù)流挖掘一般都是在線進行的,無法在挖掘前預(yù)處理數(shù)據(jù)。
[0009] GPU并行計算如何在數(shù)據(jù)流挖掘領(lǐng)域應(yīng)用?在計算資源受限的環(huán)境下,如何保證 數(shù)據(jù)流處理的實時性和通用性。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的技術(shù)任務(wù)是提供一種具有顯著的速度優(yōu)勢,很好地滿足了高維數(shù)據(jù)流的 實時性需求,可以作為通用的分析方法廣泛應(yīng)用于高維數(shù)據(jù)流挖掘領(lǐng)域的一種GPU上數(shù)據(jù) 流處理系統(tǒng)及其數(shù)據(jù)流處理方法。
[0011] 本發(fā)明的技術(shù)任務(wù)是按以下方式實現(xiàn)的, 數(shù)據(jù)源輸出的是高維的時間序列數(shù)據(jù)流,經(jīng)數(shù)據(jù)流處理系統(tǒng)處理后,再輸出給客戶端 的是數(shù)據(jù)流的頻繁模式或查詢結(jié)果。
[0012]一種GPU上數(shù)據(jù)流處理系統(tǒng),數(shù)據(jù)源(data sources)的數(shù)據(jù)流通過數(shù)據(jù)流 處理系統(tǒng)至客戶端(client),數(shù)據(jù)流處理系統(tǒng)包括CPU主機(CPU-Host)和GPU設(shè)備 (GPU-Device); CPU主機包括CPU端加載引擎模塊(CPU-Side Load Engine Area)、CPU端緩沖模塊(CPU-Side Buffer Area)、數(shù)據(jù)流預(yù)處理模塊(Data Stream Preprocessing Area)、數(shù)據(jù) 流減負模塊(Data Stream Load Shedding Area)和可視化模塊(Visual Area),CPU端加 載引擎模塊設(shè)置有裝載或存儲單元(Load/Store Unit),CPU端緩沖模塊設(shè)置有內(nèi)存(Main Memory,MM),CPU端加載引擎模塊的裝載或存儲單元、數(shù)據(jù)流預(yù)處理模塊、數(shù)據(jù)流減負模塊 和可視化模塊均與CPU端緩沖模塊的內(nèi)存連接交互,CPU端加載引擎模塊的裝載或存儲單 元與可視化模塊連接交互; GI3U設(shè)備包括GPU端加載引擎模塊(GPU-Side Load Engine Area)、GPU端緩沖模 塊(GPU-Side Buffer Area)、數(shù)據(jù)流概要抽取模塊(Data Stream Synopsis Extraction Area)、數(shù)據(jù)流處理模型庫(Data Stream Processing Model Library)和數(shù)據(jù)流處理模 塊(Data Stream Processing Area), GPU端加載引擎模塊設(shè)置有裝載或存儲單兀(Load/ Store Unit),GPU端緩沖模塊設(shè)置有顯存(Device Memory,DM),數(shù)據(jù)流概要抽取模塊用于 集成概要抽取方法供數(shù)據(jù)流處理模塊調(diào)用,數(shù)據(jù)流處理模型庫用于集成數(shù)據(jù)流處理算法供 數(shù)據(jù)流處理模塊調(diào)用,GPU端加載引擎模塊的裝載或存儲單元、數(shù)據(jù)流處理模塊均與GPU端 緩沖模塊的顯存連接交互,數(shù)據(jù)流概要抽取模塊、數(shù)據(jù)流處理模型庫均與GPU端加載引擎 模塊的裝載或存儲單元連接,GPU端緩沖模塊的顯存中開辟有存儲空間為滑動窗口; CPU端加載引擎模塊的裝載或存儲單元通過互聯(lián)網(wǎng)絡(luò)(Interconnection Network)與 數(shù)據(jù)源、GPU端加載引擎模塊的裝載或存儲單元以及客戶端的交互。
[0013] CPU端緩沖模塊還設(shè)置有用于管理內(nèi)存的內(nèi)存管理器,內(nèi)存管理器內(nèi)設(shè)置有輸 入監(jiān)測器,輸入監(jiān)測器用于監(jiān)視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流;CPU端加載引擎模塊包 括速度調(diào)節(jié)器(Speed Regulator)、裝載或存儲單元(Load/Store Unit)和初始化集成器 (Initialization Integrator);速度調(diào)節(jié)器用于根據(jù)內(nèi)存的緩存狀態(tài)調(diào)整數(shù)據(jù)源的數(shù) 據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元內(nèi)的流速,速度調(diào)節(jié)器內(nèi)設(shè)有反饋機制 (Feedback Mechanism);初始化集成器用于集成CPU主機和GPU設(shè)備的初始化操作。
[0014] 一種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)源輸出的數(shù)據(jù)流通過數(shù)據(jù)流處理系統(tǒng)處理后將 數(shù)據(jù)結(jié)果傳輸至客戶端;數(shù)據(jù)流的處理流程如下: (1) 、加載數(shù)據(jù)流:數(shù)據(jù)源中的數(shù)據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元,由 (PU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)流存儲到CPU端緩沖模塊的內(nèi)存中; (2) 、數(shù)據(jù)流預(yù)處理:數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流進行預(yù)處理,并把預(yù)處 理過的數(shù)據(jù)流存入內(nèi)存; (3) 、傳輸數(shù)據(jù)流:預(yù)處理過的數(shù)據(jù)流由內(nèi)存至CPU端加載引擎模塊的裝載或存儲單 元,由CPU端加載引擎模塊的裝載或存儲單元至互聯(lián)網(wǎng)絡(luò),經(jīng)互聯(lián)網(wǎng)絡(luò)到達GPU端加載引擎 模塊的裝載或存儲單元,再由GPU端加載引擎模塊的裝載或存儲單元將其加載到顯存的滑 動窗口中; (4) 、數(shù)據(jù)流概要抽?。河蓴?shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流概要抽取模塊中的概要抽取方 法,對滑動窗口中的數(shù)據(jù)流進行概要抽取,并將最終形成的概要數(shù)據(jù)結(jié)構(gòu)存儲到顯存中; (5) 、數(shù)據(jù)流處理:由數(shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概 要數(shù)據(jù)進行處理,并把處理的數(shù)據(jù)結(jié)果存儲到顯存中; (6) 、傳輸數(shù)據(jù)結(jié)果:數(shù)據(jù)結(jié)果由GPU端緩沖模塊的顯存至GPU端加載引擎模塊的裝載 或存儲單元,由GPU端加載引擎模塊的裝載或存儲單元發(fā)送至互聯(lián)網(wǎng)絡(luò),經(jīng)互聯(lián)網(wǎng)絡(luò)到達 (PU端加載引擎模塊的裝載或存儲單元,再由CPU端加載引擎模塊的裝載或存儲單元將數(shù) 據(jù)結(jié)果加載到內(nèi)存,或者是由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果發(fā)送給可 視化模塊; (7) 、結(jié)果可視化:可視化模塊將數(shù)據(jù)結(jié)果規(guī)范化之后發(fā)送給CPU端加載引擎模塊的裝 載或存儲單元,由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果展示給客戶端。
[0015] 一種GPU上數(shù)據(jù)流處理方法,步驟(2)中,數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù) 流使用預(yù)處理方法進行預(yù)處理,預(yù)處理方法包括數(shù)據(jù)清洗方法、數(shù)據(jù)集成方法、數(shù)據(jù)變換方 法和數(shù)據(jù)規(guī)約方法,使用的預(yù)處理方法可以為上述的一種方法,或者選擇多種方法結(jié)合使 用。
[0016] (-)、數(shù)據(jù)清洗方法:填補缺失值、平滑噪聲數(shù)據(jù)、去除異常值和解決數(shù)據(jù)不一致問 題;數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理中非常重要的過程,但也是最耗時間的過程;缺失值、噪聲和不 一致性都將導(dǎo)致數(shù)據(jù)不準確,而數(shù)據(jù)清洗可以有效地避免這種情況; (二)、數(shù)據(jù)集成方法:模式集成和對象匹配、去除冗余數(shù)據(jù)、數(shù)據(jù)值沖突的檢測與處理; 數(shù)據(jù)集成是指把原本存儲在多個數(shù)據(jù)源中的數(shù)據(jù)集成起來,形成一個數(shù)據(jù)源,并以某種統(tǒng) 一的格式進行集中存儲,以方便后續(xù)的數(shù)據(jù)處理工作; 曰、數(shù)據(jù)變換方法:數(shù)據(jù)平滑、數(shù)據(jù)聚集、數(shù)據(jù)泛化、數(shù)據(jù)規(guī)范化和屬性構(gòu)造;數(shù)據(jù)變換 是將數(shù)據(jù)轉(zhuǎn)換成一種適合于數(shù)據(jù)挖掘的形式;比如數(shù)據(jù)項間的維度可能不一致,這時就需 要消減高維數(shù)據(jù)項的維度,以減少它們之間的差異,方便處理; _、數(shù)據(jù)規(guī)約方法:數(shù)據(jù)立方體聚集、屬性子集選擇、維度歸約、數(shù)值歸約、離散化和概 念分層;數(shù)據(jù)規(guī)約又稱為數(shù)據(jù)消減技術(shù)。
[0017] 一種GPU上數(shù)據(jù)流處理方法,步驟(2)后,當(dāng)數(shù)據(jù)流超負荷時,經(jīng)過數(shù)據(jù)流減負模 塊對數(shù)據(jù)流進行減負處理,具體步驟為: I、CPU端緩沖模塊的內(nèi)存管理器的輸入監(jiān)測器監(jiān)視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流, 并決定在一個時間單位內(nèi),新來數(shù)據(jù)流的體積是否超過了 GPU設(shè)備的數(shù)據(jù)流處理模塊的處 理能力; II、若GPU設(shè)備的數(shù)據(jù)流處理模塊能夠處理所有的數(shù)據(jù)流,則進行傳輸數(shù)據(jù)流;若新來 數(shù)據(jù)流的體積超過了 GPU設(shè)備的數(shù)據(jù)流處理模塊的處理能力,即數(shù)據(jù)流超負荷,則將數(shù)據(jù) 流轉(zhuǎn)入數(shù)據(jù)流減負模塊; III、 數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理; IV、 數(shù)據(jù)流減負模塊將剩余數(shù)據(jù)流轉(zhuǎn)入內(nèi)存中,進行下一個步驟的傳輸數(shù)據(jù)流。
[0018] 一種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理采用如下策 略的一種或多種結(jié)合: i、 基于數(shù)據(jù)的丟棄:在接收到的和未處理的時間序列數(shù)據(jù)流中的數(shù)據(jù),找到長度最長 的數(shù)據(jù),并把它們丟棄; ii、 基于屬性的修整:數(shù)據(jù)流中每個數(shù)據(jù)都有個屬性,在數(shù)據(jù)中,將擁有最低頻數(shù)的屬 性除去,以此對數(shù)據(jù)的屬性修整; iii、 基于優(yōu)先級的丟棄:每個新到的數(shù)據(jù)流被分配一個優(yōu)先級,在接收到的和未處理的 數(shù)據(jù)流中的數(shù)據(jù),選擇那些擁有最低優(yōu)先級的數(shù)據(jù)并丟棄它們。三種策略各有各的目的;基 于數(shù)據(jù)的丟棄策略,丟棄了那些系統(tǒng)需要花費很多時間去處理的長數(shù)據(jù),試圖盡可能快的 減少系統(tǒng)負載,它是面向效率的;基于屬性的修整的策略,從數(shù)據(jù)中刪除了那些對處理結(jié)果 影響不顯著的、最不頻發(fā)的屬性;基于優(yōu)先級的丟棄的策略,從數(shù)據(jù)中刪除了那些擁有最低 優(yōu)先級的數(shù)據(jù);相比而言,后面這兩個策略是面向精度的,因為它們試圖保留高精度的挖掘 結(jié)果。
[0019] 一種GPU上數(shù)據(jù)流處理方法,顯存使用全局存儲器(Global Memory)去存儲各種 數(shù)據(jù)(如概要數(shù)據(jù)、中間數(shù)據(jù)、結(jié)果數(shù)據(jù)等),顯存中開辟的滑動窗口(Sliding Window,SW) 用于把從CPU主機到達GPU設(shè)備的數(shù)據(jù)流保存起來(由于數(shù)據(jù)流無限性和存儲空間的有限 性,為了減少內(nèi)存和顯存間的數(shù)據(jù)拷貝,獲得更有效的挖掘結(jié)果,所以在顯存中劃分出一部 分空間作為滑動窗口暫存數(shù)據(jù)),滑動窗口使用基于元組個數(shù)定義的滑動窗口,即是窗口大 小固定的滑動窗口,用于保存最近到達的K個數(shù)據(jù)流; 滑動窗口的數(shù)據(jù)流的處理方法使用可重寫循環(huán)的滑動窗口方法,更新時將新數(shù)據(jù)直接 覆蓋了要過期的數(shù)據(jù),并提供了格局變換函數(shù)來維護滑動窗口中數(shù)據(jù)的邏輯格局狀態(tài)。
[0020] 一種GPU上數(shù)據(jù)流處理方法,步驟(4)的數(shù)據(jù)流概要抽取,將數(shù)據(jù)流通過概要抽取 方法獲得概要數(shù)據(jù)結(jié)構(gòu),概要抽取方法包括抽樣(Sampling)方法,小波(Wavelet)方法,略 圖(Sketch)方法和直方圖(Histogram)方法。對數(shù)據(jù)流進行壓縮,構(gòu)造一個比整個數(shù)據(jù)流 的數(shù)據(jù)規(guī)模小得多的數(shù)據(jù)結(jié)構(gòu)來保存數(shù)據(jù)流的主要特征,稱之為概要數(shù)據(jù)結(jié)構(gòu),通過概要 數(shù)據(jù)結(jié)構(gòu)所獲得的近似值是在用戶可接受范圍之內(nèi)的。
[0021] 一種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)流處理模型庫集成了數(shù)據(jù)流處理時的各種數(shù)據(jù) 流處理算法,包括查詢處理算法(query processing algorithma)、聚類算法(clustering algorithma)、分類算法(classification algorithma)、頻繁項集挖掘算法(frequent itemsets mining algorithma)和多條數(shù)據(jù)流間的相關(guān)性分析算法(correlation analysis algorithma)〇
[0022] -種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)流處理模塊的任務(wù)是調(diào)用數(shù)據(jù)流概要抽取模塊 的概要抽取方法對數(shù)據(jù)流進行概要抽取,以及調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法 對概要數(shù)據(jù)進行并行計算;數(shù)據(jù)流處理模塊包括數(shù)據(jù)流輸入裝配器(Data Stream Input Assembler)、全局線程塊調(diào)度器(Global Block Scheduler)和計算陣列(Compute Array), 計算陣列內(nèi)設(shè)置有共享存儲器、裝載或存儲單元;數(shù)據(jù)流輸入裝配器負責(zé)把顯存中的數(shù)據(jù) 讀入到數(shù)據(jù)流處理模塊的共享存儲器中,全局線程塊調(diào)度器負責(zé)對共享存儲器中的線程 塊、線程和指令進行調(diào)度分配管理,計算陣列用于線程的計算;計算陣列中的裝載或存儲單 元在計算時,從顯存中加載數(shù)據(jù)到共享存儲器。
[0023]本發(fā)明的一種GPU上數(shù)據(jù)流處理系統(tǒng)及其數(shù)據(jù)流處理方法具有以下優(yōu)點: 1、 通用性:以往的使用GPU加速的數(shù)據(jù)流處理系統(tǒng)僅僅局限于數(shù)據(jù)流處理時的某一種 任務(wù),要么是聚類,要么是分類或者其它;然而,本發(fā)明的數(shù)據(jù)流處理系統(tǒng),適合于各個應(yīng)用 領(lǐng)域的多條高維時間序列數(shù)據(jù)流,它涵蓋了數(shù)據(jù)流的預(yù)處理、減負、概要抽取和挖掘處理等 多項功能,GPU設(shè)備部分包含的數(shù)據(jù)流處理模型庫集成了各種數(shù)據(jù)流處理算法,如查詢處理 算法、聚類算法、分類算法、頻繁項集挖掘算法、相關(guān)性分析算法,能完成數(shù)據(jù)流處理時的多 項任務(wù),從而為本發(fā)明賦予了通用性; 2、 高效性:本發(fā)明的概要抽取方法以及所有數(shù)據(jù)流處理算法的并行部分都使用GPU進 行加速,充分利用了 GPU強大的處理能力和流水線特性,進一步提高了執(zhí)行效率; 3、 額外I/O開銷的控制:數(shù)據(jù)流處理系統(tǒng)中把滑動窗口開辟在了顯存中,這樣在進行 數(shù)據(jù)流概要抽取時就避免了數(shù)據(jù)在內(nèi)存和顯存間的頻繁拷貝;另外,在進行概要抽取和數(shù) 據(jù)流處理時,使用了顯存,大大減少了從內(nèi)存中讀寫數(shù)據(jù)的次數(shù); 4、 因為初始的數(shù)據(jù)流量過大,如果直接將數(shù)據(jù)流傳送到GPU設(shè)備中進行數(shù)據(jù)流預(yù)處 理,會大大增加I/O開銷,所以本發(fā)明把數(shù)據(jù)流預(yù)處理過程設(shè)計在了 CPU主機的數(shù)據(jù)流預(yù)處 理模塊中,即進行了數(shù)據(jù)流預(yù)處理消除數(shù)據(jù)中的噪音、空值和異常值等錯誤數(shù)據(jù),又減少了 I/O開銷; 5、 現(xiàn)有技術(shù)中,在滑動窗口未滿階段,新數(shù)據(jù)直接填充窗口,在窗口已滿階段,隨著窗 口的滑動,新數(shù)據(jù)進入窗口內(nèi)將導(dǎo)致其它已在窗口內(nèi)的數(shù)據(jù)前移,覆蓋前面的數(shù)據(jù);然而, 本發(fā)明采用的可重寫循環(huán)的滑動窗口方法,在滑動窗口已滿階段并不需要移動數(shù)據(jù),它是 將新數(shù)據(jù)直接覆蓋(重寫)了要過期的數(shù)據(jù),并提供了格局變換函數(shù)來維護滑動窗口中數(shù)據(jù) 的邏輯格局狀態(tài),節(jié)省了大量時間。
【專利附圖】
【附圖說明】
[0024] 下面結(jié)合附圖對本發(fā)明進一步說明。
[0025] 附圖1為一種GPU上數(shù)據(jù)流處理系統(tǒng)的框架圖。
【具體實施方式】
[0026] 參照說明書附圖和具體實施例對本發(fā)明的一種GPU上數(shù)據(jù)流處理系統(tǒng)及其數(shù)據(jù) 流處理方法作以下詳細地說明。
[0027] 實施例1: 本發(fā)明的一種GPU上數(shù)據(jù)流處理系統(tǒng),數(shù)據(jù)源(data sources)的數(shù)據(jù)流通過數(shù)據(jù) 流處理系統(tǒng)至客戶端(client),數(shù)據(jù)流處理系統(tǒng)包括CPU主機(CPU-Host)和GPU設(shè)備 (GPU-Device); CPU主機包括CPU端加載引擎模塊(CPU-Side Load Engine Area)、CPU端緩沖模塊(CPU-Side Buffer Area)、數(shù)據(jù)流預(yù)處理模塊(Data Stream Preprocessing Area)、數(shù)據(jù) 流減負模塊(Data Stream Load Shedding Area)和可視化模塊(Visual Area),CPU端加 載引擎模塊設(shè)置有裝載或存儲單元(Load/Store Unit),CPU端緩沖模塊設(shè)置有內(nèi)存(Main Memory,MM),CPU端加載引擎模塊的裝載或存儲單元、數(shù)據(jù)流預(yù)處理模塊、數(shù)據(jù)流減負模塊 和可視化模塊均與CPU端緩沖模塊的內(nèi)存連接交互,CPU端加載引擎模塊的裝載或存儲單 元與可視化模塊連接交互; GI3U設(shè)備包括GPU端加載引擎模塊(GPU-Side Load Engine Area)、GPU端緩沖模 塊(GPU-Side Buffer Area)、數(shù)據(jù)流概要抽取模塊(Data Stream Synopsis Extraction Area)、數(shù)據(jù)流處理模型庫(Data Stream Processing Model Library)和數(shù)據(jù)流處理模 塊(Data Stream Processing Area), GPU端加載引擎模塊設(shè)置有裝載或存儲單兀(Load/ Store Unit),GPU端緩沖模塊設(shè)置有顯存(Device Memory,DM),數(shù)據(jù)流概要抽取模塊用于 集成概要抽取方法供數(shù)據(jù)流處理模塊調(diào)用,數(shù)據(jù)流處理模型庫用于集成數(shù)據(jù)流處理算法供 數(shù)據(jù)流處理模塊調(diào)用,GPU端加載引擎模塊的裝載或存儲單元、數(shù)據(jù)流處理模塊均與GPU端 緩沖模塊的顯存連接交互,數(shù)據(jù)流概要抽取模塊、數(shù)據(jù)流處理模型庫均與GPU端加載引擎 模塊的裝載或存儲單元連接,GPU端緩沖模塊的顯存中開辟有存儲空間為滑動窗口; CPU端加載引擎模塊的裝載或存儲單元通過互聯(lián)網(wǎng)絡(luò)(Interconnection Network)與 數(shù)據(jù)源、GPU端加載引擎模塊的裝載或存儲單元以及客戶端的交互。
[0028] CPU端緩沖模塊還設(shè)置有用于管理內(nèi)存的內(nèi)存管理器,內(nèi)存管理器內(nèi)設(shè)置有輸 入監(jiān)測器,輸入監(jiān)測器用于監(jiān)視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流;CPU端加載引擎模塊包 括速度調(diào)節(jié)器(Speed Regulator)、裝載或存儲單元(Load/Store Unit)和初始化集成器 (Initialization Integrator);速度調(diào)節(jié)器用于根據(jù)內(nèi)存的緩存狀態(tài)調(diào)整數(shù)據(jù)源的數(shù) 據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元內(nèi)的流速,速度調(diào)節(jié)器內(nèi)設(shè)有反饋機制 (Feedback Mechanism);初始化集成器用于集成CPU主機和GPU設(shè)備的初始化操作。
[0029] 實施例2 : 本發(fā)明的一種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)源輸出的數(shù)據(jù)流通過數(shù)據(jù)流處理系統(tǒng)處理 后將數(shù)據(jù)結(jié)果傳輸至客戶端;數(shù)據(jù)流的處理流程如下: (1)、加載數(shù)據(jù)流:數(shù)據(jù)源中的數(shù)據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元(數(shù) 據(jù)流流向如圖1中①所示),由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)流存儲到CPU 端緩沖模塊的內(nèi)存中(數(shù)據(jù)流流向如圖1中②所示); (2) 、數(shù)據(jù)流預(yù)處理:數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流進行預(yù)處理(數(shù)據(jù)流流 向如圖1中③所示),并把預(yù)處理過的數(shù)據(jù)流存入內(nèi)存(數(shù)據(jù)流流向如圖1中④所示); (3) 、傳輸數(shù)據(jù)流:預(yù)處理過的數(shù)據(jù)流由內(nèi)存至CPU端加載引擎模塊的裝載或存儲單元 (數(shù)據(jù)流流向如圖1中⑦所示),由CPU端加載引擎模塊的裝載或存儲單元至互聯(lián)網(wǎng)絡(luò)(數(shù)據(jù) 流流向如圖1中⑧所示),經(jīng)互聯(lián)網(wǎng)絡(luò)到達GPU端加載引擎模塊的裝載或存儲單元(數(shù)據(jù)流 流向如圖1中⑨所示),再由GPU端加載引擎模塊的裝載或存儲單元將其加載到顯存的滑動 窗口中(數(shù)據(jù)流流向如圖1中⑩所示); (4) 、數(shù)據(jù)流概要抽?。河蓴?shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流概要抽取模塊中的概要抽取方 法,對滑動窗口中的數(shù)據(jù)流進行概要抽取(數(shù)據(jù)流流向如圖1中所示),并將最終形成的概要 數(shù)據(jù)結(jié)構(gòu)存儲到顯存中(數(shù)據(jù)流流向如圖1中所示); (5) 、數(shù)據(jù)流處理:由數(shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概 要數(shù)據(jù)進行處理(數(shù)據(jù)流流向如圖1中所示),并把處理的數(shù)據(jù)結(jié)果存儲到顯存中(數(shù)據(jù)流流 向如圖1中所示); (6) 、傳輸數(shù)據(jù)結(jié)果:數(shù)據(jù)結(jié)果由GPU端緩沖模塊的顯存至GPU端加載引擎模塊的裝載 或存儲單元(數(shù)據(jù)流流向如圖1中所示),由GPU端加載引擎模塊的裝載或存儲單元發(fā)送至 互聯(lián)網(wǎng)絡(luò)(數(shù)據(jù)流流向如圖1中所示),經(jīng)互聯(lián)網(wǎng)絡(luò)到達CPU端加載引擎模塊的裝載或存儲 單元(數(shù)據(jù)流流向如圖1中所示),再由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果 加載到內(nèi)存(數(shù)據(jù)流流向如圖1中所示),或者是由CPU端加載引擎模塊的裝載或存儲單元 將數(shù)據(jù)結(jié)果發(fā)送給可視化模塊(數(shù)據(jù)流流向如圖1中所示); (7) 、結(jié)果可視化:可視化模塊將數(shù)據(jù)結(jié)果規(guī)范化之后發(fā)送給CPU端加載引擎模塊的裝 載或存儲單元(數(shù)據(jù)流流向如圖1中所示),由CPU端加載引擎模塊的裝載或存儲單元將數(shù) 據(jù)結(jié)果展示給客戶端(數(shù)據(jù)流流向如圖1中@所示)。
[0030] 實施例3 : 本發(fā)明的一種GPU上數(shù)據(jù)流處理方法,數(shù)據(jù)源輸出的數(shù)據(jù)流通過數(shù)據(jù)流處理系統(tǒng)處理 后將數(shù)據(jù)結(jié)果傳輸至客戶端;數(shù)據(jù)流的處理流程如下: (1) 、加載數(shù)據(jù)流:數(shù)據(jù)源中的數(shù)據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元(數(shù) 據(jù)流流向如圖1中①所示),由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)流存儲到CPU 端緩沖模塊的內(nèi)存中(數(shù)據(jù)流流向如圖1中②所示); (2) 、數(shù)據(jù)流預(yù)處理:數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流進行預(yù)處理(數(shù)據(jù)流流 向如圖1中③所示),并把預(yù)處理過的數(shù)據(jù)流存入內(nèi)存(數(shù)據(jù)流流向如圖1中④所示); (3) 、傳輸數(shù)據(jù)流:預(yù)處理過的數(shù)據(jù)流由內(nèi)存至CPU端加載引擎模塊的裝載或存儲單元 (數(shù)據(jù)流流向如圖1中⑦所示),由CPU端加載引擎模塊的裝載或存儲單元至互聯(lián)網(wǎng)絡(luò)(數(shù)據(jù) 流流向如圖1中⑧所示),經(jīng)互聯(lián)網(wǎng)絡(luò)到達GPU端加載引擎模塊的裝載或存儲單元(數(shù)據(jù)流 流向如圖1中⑨所示),再由GPU端加載引擎模塊的裝載或存儲單元將其加載到顯存的滑動 窗口中(數(shù)據(jù)流流向如圖1中⑩所示); (4) 、數(shù)據(jù)流概要抽?。河蓴?shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流概要抽取模塊中的概要抽取方 法,對滑動窗口中的數(shù)據(jù)流進行概要抽取(數(shù)據(jù)流流向如圖1中所示),并將最終形成的概要 數(shù)據(jù)結(jié)構(gòu)存儲到顯存中(數(shù)據(jù)流流向如圖1中所示); (5) 、數(shù)據(jù)流處理:由數(shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概 要數(shù)據(jù)進行處理(數(shù)據(jù)流流向如圖1中所示),并把處理的數(shù)據(jù)結(jié)果存儲到顯存中(數(shù)據(jù)流流 向如圖1中所示); (6) 、傳輸數(shù)據(jù)結(jié)果:數(shù)據(jù)結(jié)果由GPU端緩沖模塊的顯存至GPU端加載引擎模塊的裝載 或存儲單元(數(shù)據(jù)流流向如圖1中所示),由GPU端加載引擎模塊的裝載或存儲單元發(fā)送至 互聯(lián)網(wǎng)絡(luò)(數(shù)據(jù)流流向如圖1中所示),經(jīng)互聯(lián)網(wǎng)絡(luò)到達CPU端加載引擎模塊的裝載或存儲 單元(數(shù)據(jù)流流向如圖1中所示),再由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果 加載到內(nèi)存(數(shù)據(jù)流流向如圖1中所示),或者是由CPU端加載引擎模塊的裝載或存儲單元 將數(shù)據(jù)結(jié)果發(fā)送給可視化模塊(數(shù)據(jù)流流向如圖1中所示); (7)、結(jié)果可視化:可視化模塊將數(shù)據(jù)結(jié)果規(guī)范化之后發(fā)送給CPU端加載引擎模塊的裝 載或存儲單元(數(shù)據(jù)流流向如圖1中所示),由CPU端加載引擎模塊的裝載或存儲單元將數(shù) 據(jù)結(jié)果展示給客戶端(數(shù)據(jù)流流向如圖1中@所示)。
[0031] 步驟(2)中,數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流使用預(yù)處理方法進行預(yù)處 理,預(yù)處理方法包括數(shù)據(jù)清洗方法、數(shù)據(jù)集成方法、數(shù)據(jù)變換方法和數(shù)據(jù)規(guī)約方法,使用的 預(yù)處理方法可以為上述的一種方法,或者選擇多種方法結(jié)合使用。
[0032](-)、數(shù)據(jù)清洗方法:填補缺失值、平滑噪聲數(shù)據(jù)、去除異常值和解決數(shù)據(jù)不一致問 題;數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理中非常重要的過程,但也是最耗時間的過程;缺失值、噪聲和不 一致性都將導(dǎo)致數(shù)據(jù)不準確,而數(shù)據(jù)清洗可以有效地避免這種情況; (二)、數(shù)據(jù)集成方法:模式集成和對象匹配、去除冗余數(shù)據(jù)、數(shù)據(jù)值沖突的檢測與處理; 數(shù)據(jù)集成是指把原本存儲在多個數(shù)據(jù)源中的數(shù)據(jù)集成起來,形成一個數(shù)據(jù)源,并以某種統(tǒng) 一的格式進行集中存儲,以方便后續(xù)的數(shù)據(jù)處理工作; 曰、數(shù)據(jù)變換方法:數(shù)據(jù)平滑、數(shù)據(jù)聚集、數(shù)據(jù)泛化、數(shù)據(jù)規(guī)范化和屬性構(gòu)造;數(shù)據(jù)變換 是將數(shù)據(jù)轉(zhuǎn)換成一種適合于數(shù)據(jù)挖掘的形式;比如數(shù)據(jù)項間的維度可能不一致,這時就需 要消減高維數(shù)據(jù)項的維度,以減少它們之間的差異,方便處理; _、數(shù)據(jù)規(guī)約方法:數(shù)據(jù)立方體聚集、屬性子集選擇、維度歸約、數(shù)值歸約、離散化和概 念分層;數(shù)據(jù)規(guī)約又稱為數(shù)據(jù)消減技術(shù)。
[0033] 步驟(2)后,當(dāng)數(shù)據(jù)流超負荷時,經(jīng)過數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理,具 體步驟為: I、CPU端緩沖模塊的內(nèi)存管理器的輸入監(jiān)測器監(jiān)視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流, 并決定在一個時間單位內(nèi),新來數(shù)據(jù)流的體積是否超過了GPU設(shè)備的數(shù)據(jù)流處理模塊的處 理能力; II、 若GPU設(shè)備的數(shù)據(jù)流處理模塊能夠處理所有的數(shù)據(jù)流,則進行傳輸數(shù)據(jù)流;若新來 數(shù)據(jù)流的體積超過了GPU設(shè)備的數(shù)據(jù)流處理模塊的處理能力,即數(shù)據(jù)流超負荷,則將數(shù)據(jù) 流轉(zhuǎn)入數(shù)據(jù)流減負模塊(數(shù)據(jù)流流向如圖1中⑤所示); III、 數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理; IV、 數(shù)據(jù)流減負模塊將剩余數(shù)據(jù)流轉(zhuǎn)入內(nèi)存中(數(shù)據(jù)流流向如圖1中⑥所示),進行下一 個步驟的傳輸數(shù)據(jù)流。
[0034]數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理采用如下策略的一種或多種結(jié)合: i、 基于數(shù)據(jù)的丟棄:在接收到的和未處理的時間序列數(shù)據(jù)流中的數(shù)據(jù),找到長度最長 的數(shù)據(jù),并把它們丟棄; ii、 基于屬性的修整:數(shù)據(jù)流中每個數(shù)據(jù)都有個屬性,在數(shù)據(jù)中,將擁有最低頻數(shù)的屬 性除去,以此對數(shù)據(jù)的屬性修整; iii、 基于優(yōu)先級的丟棄:每個新到的數(shù)據(jù)流被分配一個優(yōu)先級,在接收到的和未處理的 數(shù)據(jù)流中的數(shù)據(jù),選擇那些擁有最低優(yōu)先級的數(shù)據(jù)并丟棄它們。三種策略各有各的目的;基 于數(shù)據(jù)的丟棄策略,丟棄了那些系統(tǒng)需要花費很多時間去處理的長數(shù)據(jù),試圖盡可能快的 減少系統(tǒng)負載,它是面向效率的;基于屬性的修整的策略,從數(shù)據(jù)中刪除了那些對處理結(jié)果 影響不顯著的、最不頻發(fā)的屬性;基于優(yōu)先級的丟棄的策略,從數(shù)據(jù)中刪除了那些擁有最低 優(yōu)先級的數(shù)據(jù);相比而言,后面這兩個策略是面向精度的,因為它們試圖保留高精度的挖掘 結(jié)果。
[0035] 顯存使用全局存儲器(Global Memory)去存儲各種數(shù)據(jù)(如概要數(shù)據(jù)、中間數(shù)據(jù)、 結(jié)果數(shù)據(jù)等),顯存中開辟的滑動窗口(Sliding Window,SW)用于把從CPU主機到達GPU設(shè) 備的數(shù)據(jù)流保存起來(由于數(shù)據(jù)流無限性和存儲空間的有限性,為了減少內(nèi)存和顯存間的 數(shù)據(jù)拷貝,獲得更有效的挖掘結(jié)果,所以在顯存中劃分出一部分空間作為滑動窗口暫存數(shù) 據(jù)),滑動窗口使用基于元組個數(shù)定義的滑動窗口,即是窗口大小固定的滑動窗口,用于保 存最近到達的K個數(shù)據(jù)流; 滑動窗口的數(shù)據(jù)流的處理方法使用可重寫循環(huán)的滑動窗口方法,更新時將新數(shù)據(jù)直接 覆蓋了要過期的數(shù)據(jù),并提供了格局變換函數(shù)來維護滑動窗口中數(shù)據(jù)的邏輯格局狀態(tài)。
[0036] 步驟(4)的數(shù)據(jù)流概要抽取,將數(shù)據(jù)流通過概要抽取方法獲得概要數(shù)據(jù)結(jié)構(gòu),概 要抽取方法包括抽樣(Sampling)方法,小波(Wavelet)方法,略圖(Sketch)方法和直方圖 (Histogram)方法。對數(shù)據(jù)流進行壓縮,構(gòu)造一個比整個數(shù)據(jù)流的數(shù)據(jù)規(guī)模小得多的數(shù)據(jù)結(jié) 構(gòu)來保存數(shù)據(jù)流的主要特征,稱之為概要數(shù)據(jù)結(jié)構(gòu),通過概要數(shù)據(jù)結(jié)構(gòu)所獲得的近似值是 在用戶可接受范圍之內(nèi)的。
[0037] 數(shù)據(jù)流處理模型庫集成了數(shù)據(jù)流處理時的各種數(shù)據(jù)流處理算法,包括查詢處 理算法(query processing algorithma)、聚類算法(clustering algorithma)、分類 算法(classification algorithma)、頻繁項集挖掘算法(frequent itemsets mining algorithma)和多條數(shù)據(jù)流間的相關(guān)性分析算法(correlation analysis algorithma)。
[0038] 數(shù)據(jù)流處理模塊的任務(wù)是調(diào)用數(shù)據(jù)流概要抽取模塊的概要抽取方法對數(shù)據(jù)流進 行概要抽取,以及調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概要數(shù)據(jù)進行并行計算; 數(shù)據(jù)流處理模塊包括數(shù)據(jù)流輸入裝配器(Data Stream Input Assembler)、全局線程塊調(diào) 度器(Global Block Scheduler)和計算陣列(Compute Array),計算陣列內(nèi)設(shè)置有共享存 儲器、裝載或存儲單元;數(shù)據(jù)流輸入裝配器負責(zé)把顯存中的數(shù)據(jù)讀入到數(shù)據(jù)流處理模塊的 共享存儲器中,全局線程塊調(diào)度器負責(zé)對共享存儲器中的線程塊、線程和指令進行調(diào)度分 配管理,計算陣列用于線程的計算;計算陣列中的裝載或存儲單元在計算時,從顯存中加載 數(shù)據(jù)到共享存儲器。
[0039] 在數(shù)據(jù)流處理系統(tǒng)中,對數(shù)據(jù)流進行處理,其中CPU主機端的處理步驟如下: 1. 啟動CUDA (數(shù)據(jù)流處理系統(tǒng)的簡稱); 2. 為輸入數(shù)據(jù)分配MM (內(nèi)存); 3. CPU端加載引擎模塊從數(shù)據(jù)源獲取輸入數(shù)據(jù)并進行初始化; 4. 數(shù)據(jù)流預(yù)處理模塊對輸入數(shù)據(jù)流進行數(shù)據(jù)清洗、集成等的預(yù)處理; 5. 當(dāng)系統(tǒng)超負荷時,數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理; 6. 為GPU設(shè)備分配顯存的滑動窗口,用于存放輸入數(shù)據(jù); 7. 初始化集成器對概要抽取方法及數(shù)據(jù)流處理算法初始化; 8. 將內(nèi)存中的數(shù)據(jù)拷貝到顯存的滑動窗口中; 9. 為GPU設(shè)備分配顯存,用于存放數(shù)據(jù)流處理模塊抽取出來的概要數(shù)據(jù); 10. 調(diào)用GPU設(shè)備端的數(shù)據(jù)流處理算法的并行計算函數(shù)(kernel)進行并行計算,獲得 概要數(shù)據(jù),并將其寫到顯存中的對應(yīng)區(qū)域; 11. 為GPU設(shè)備分配顯存,用于存放傳回來的輸出數(shù)據(jù); 12. 將顯存中的結(jié)果回讀到內(nèi)存中; 13. 使用可視化模塊對數(shù)據(jù)進行后續(xù)處理,如規(guī)范化、可視化等; 14. 釋放內(nèi)存和顯存空間; 15. 退出 CUDA。
[0040] GPU設(shè)備端的處理步驟如下: 1?分配共享存儲器(Shared Memory); 2. 將顯存的全局存儲器中的數(shù)據(jù)讀入共享存儲器; 3. 進行計算,將結(jié)果寫到共享存儲器; 4. 將共享存儲器中的結(jié)果寫到全局存儲器。
[0041] 以下介紹數(shù)據(jù)流處理系統(tǒng)中各模塊的代碼: 一、初始化集成器的各個功能代碼:
【權(quán)利要求】
1. 一種GPU上數(shù)據(jù)流處理系統(tǒng),其特征在于數(shù)據(jù)源的數(shù)據(jù)流通過數(shù)據(jù)流處理系統(tǒng)至客 戶端,數(shù)據(jù)流處理系統(tǒng)包括CPU主機和GPU設(shè)備; CPU主機包括CPU端加載引擎模塊、CPU端緩沖模塊、數(shù)據(jù)流預(yù)處理模塊、數(shù)據(jù)流減負 模塊和可視化模塊,CPU端加載引擎模塊設(shè)置有裝載或存儲單元,CPU端緩沖模塊設(shè)置有內(nèi) 存,CPU端加載引擎模塊的裝載或存儲單元、數(shù)據(jù)流預(yù)處理模塊、數(shù)據(jù)流減負模塊和可視化 模塊均與CPU端緩沖模塊的內(nèi)存連接交互,CPU端加載引擎模塊的裝載或存儲單元與可視 化模塊連接交互; GTO設(shè)備包括GPU端加載引擎模塊、GPU端緩沖模塊、數(shù)據(jù)流概要抽取模塊、數(shù)據(jù)流處理 模型庫和數(shù)據(jù)流處理模塊,GPU端加載引擎模塊設(shè)置有裝載或存儲單元,GPU端緩沖模塊設(shè) 置有顯存,數(shù)據(jù)流概要抽取模塊用于集成概要抽取方法供數(shù)據(jù)流處理模塊調(diào)用,數(shù)據(jù)流處 理模型庫用于集成數(shù)據(jù)流處理算法供數(shù)據(jù)流處理模塊調(diào)用,GPU端加載引擎模塊的裝載或 存儲單元、數(shù)據(jù)流處理模塊均與GPU端緩沖模塊的顯存連接交互,數(shù)據(jù)流概要抽取模塊、數(shù) 據(jù)流處理模型庫均與GPU端加載引擎模塊的裝載或存儲單元連接,GPU端緩沖模塊的顯存 中開辟有存儲空間為滑動窗口; (PU端加載引擎模塊的裝載或存儲單元通過互聯(lián)網(wǎng)絡(luò)與數(shù)據(jù)源、GPU端加載引擎模塊 的裝載或存儲單元以及客戶端的交互。
2. 根據(jù)權(quán)利要求1所述的一種GPU上數(shù)據(jù)流處理系統(tǒng),其特征在于CPU端緩沖模塊還 設(shè)置有用于管理內(nèi)存的內(nèi)存管理器,內(nèi)存管理器內(nèi)設(shè)置有輸入監(jiān)測器,輸入監(jiān)測器用于監(jiān) 視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流;CPU端加載引擎模塊包括速度調(diào)節(jié)器、裝載或存儲單 元和初始化集成器;速度調(diào)節(jié)器用于根據(jù)內(nèi)存的緩存狀態(tài)調(diào)整數(shù)據(jù)源的數(shù)據(jù)流流入CPU端 加載引擎模塊的裝載或存儲單元內(nèi)的流速,速度調(diào)節(jié)器內(nèi)設(shè)有反饋機制;初始化集成器用 于集成CPU主機和GPU設(shè)備的初始化操作。
3. -種GPU上數(shù)據(jù)流處理方法,其特征在于數(shù)據(jù)源輸出的數(shù)據(jù)流通過權(quán)利要求1或2 中任意一種數(shù)據(jù)流處理系統(tǒng)處理后將數(shù)據(jù)結(jié)果傳輸至客戶端;數(shù)據(jù)流的處理流程如下: (1) 、加載數(shù)據(jù)流:數(shù)據(jù)源中的數(shù)據(jù)流流入CPU端加載引擎模塊的裝載或存儲單元,由 (PU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)流存儲到CPU端緩沖模塊的內(nèi)存中; (2) 、數(shù)據(jù)流預(yù)處理:數(shù)據(jù)流預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流進行預(yù)處理,并把預(yù)處 理過的數(shù)據(jù)流存入內(nèi)存; (3) 、傳輸數(shù)據(jù)流:預(yù)處理過的數(shù)據(jù)流由內(nèi)存至CPU端加載引擎模塊的裝載或存儲單 元,由CPU端加載引擎模塊的裝載或存儲單元至互聯(lián)網(wǎng)絡(luò),經(jīng)互聯(lián)網(wǎng)絡(luò)到達GPU端加載引擎 模塊的裝載或存儲單元,再由GPU端加載引擎模塊的裝載或存儲單元將其加載到顯存的滑 動窗口中; (4) 、數(shù)據(jù)流概要抽?。河蓴?shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流概要抽取模塊中的概要抽取方 法,對滑動窗口中的數(shù)據(jù)流進行概要抽取,并將最終形成的概要數(shù)據(jù)結(jié)構(gòu)存儲到顯存中; (5) 、數(shù)據(jù)流處理:由數(shù)據(jù)流處理模塊調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概 要數(shù)據(jù)進行處理,并把處理的數(shù)據(jù)結(jié)果存儲到顯存中; (6) 、傳輸數(shù)據(jù)結(jié)果:數(shù)據(jù)結(jié)果由GPU端緩沖模塊的顯存至GPU端加載引擎模塊的裝載 或存儲單元,由GPU端加載引擎模塊的裝載或存儲單元發(fā)送至互聯(lián)網(wǎng)絡(luò),經(jīng)互聯(lián)網(wǎng)絡(luò)到達 (PU端加載引擎模塊的裝載或存儲單元,再由CPU端加載引擎模塊的裝載或存儲單元將數(shù) 據(jù)結(jié)果加載到內(nèi)存,或者是由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果發(fā)送給可 視化模塊; (7)、結(jié)果可視化:可視化模塊將數(shù)據(jù)結(jié)果規(guī)范化之后發(fā)送給CPU端加載引擎模塊的裝 載或存儲單元,由CPU端加載引擎模塊的裝載或存儲單元將數(shù)據(jù)結(jié)果展示給客戶端。
4. 根據(jù)權(quán)利要求3所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于步驟(2)中,數(shù)據(jù)流 預(yù)處理模塊將內(nèi)存中的原始數(shù)據(jù)流使用預(yù)處理方法進行預(yù)處理,預(yù)處理方法包括數(shù)據(jù)清洗 方法、數(shù)據(jù)集成方法、數(shù)據(jù)變換方法和數(shù)據(jù)規(guī)約方法,使用的預(yù)處理方法可以為上述的一種 方法,或者選擇多種方法結(jié)合使用。
5. 根據(jù)權(quán)利要求3所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于步驟(2)后,當(dāng)數(shù)據(jù) 流超負荷時,經(jīng)過數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理,具體步驟為: I、 CPU端緩沖模塊的內(nèi)存管理器的輸入監(jiān)測器監(jiān)視內(nèi)存中臨時存儲未處理的數(shù)據(jù)流, 并決定在一個時間單位內(nèi),新來數(shù)據(jù)流的體積是否超過了 GPU設(shè)備的數(shù)據(jù)流處理模塊的處 理能力; II、 若GPU設(shè)備的數(shù)據(jù)流處理模塊能夠處理所有的數(shù)據(jù)流,則進行傳輸數(shù)據(jù)流;若新來 數(shù)據(jù)流的體積超過了 GPU設(shè)備的數(shù)據(jù)流處理模塊的處理能力,即數(shù)據(jù)流超負荷,則將數(shù)據(jù) 流轉(zhuǎn)入數(shù)據(jù)流減負模塊; III、 數(shù)據(jù)流減負模塊對數(shù)據(jù)流進行減負處理; IV、 數(shù)據(jù)流減負模塊將剩余數(shù)據(jù)流轉(zhuǎn)入內(nèi)存中,進行下一個步驟的傳輸數(shù)據(jù)流。
6. 根據(jù)權(quán)利要求5所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于數(shù)據(jù)流減負模塊對 數(shù)據(jù)流進行減負處理采用如下策略的一種或多種結(jié)合: i、 基于數(shù)據(jù)的丟棄:在接收到的和未處理的時間序列數(shù)據(jù)流中的數(shù)據(jù),找到長度最長 的數(shù)據(jù),并把它們丟棄; ii、 基于屬性的修整:數(shù)據(jù)流中每個數(shù)據(jù)都有個屬性,在數(shù)據(jù)中,將擁有最低頻數(shù)的屬 性除去,以此對數(shù)據(jù)的屬性修整; iii、 基于優(yōu)先級的丟棄:每個新到的數(shù)據(jù)流被分配一個優(yōu)先級,在接收到的和未處理的 數(shù)據(jù)流中的數(shù)據(jù),選擇那些擁有最低優(yōu)先級的數(shù)據(jù)并丟棄它們。
7. 根據(jù)權(quán)利要求3所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于顯存使用全局存儲 器去存儲各種數(shù)據(jù),顯存中開辟的滑動窗口用于把從CPU主機到達GPU設(shè)備的數(shù)據(jù)流保存 起來,滑動窗口使用基于元組個數(shù)定義的滑動窗口,即是窗口大小固定的滑動窗口,用于保 存最近到達的數(shù)據(jù)流; 滑動窗口的數(shù)據(jù)流的處理方法使用可重寫循環(huán)的滑動窗口方法,更新時將新數(shù)據(jù)直接 覆蓋了要過期的數(shù)據(jù),并提供了格局變換函數(shù)來維護滑動窗口中數(shù)據(jù)的邏輯格局狀態(tài)。
8. 根據(jù)權(quán)利要求3所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于步驟(4)的數(shù)據(jù)流 概要抽取,將數(shù)據(jù)流通過概要抽取方法獲得概要數(shù)據(jù)結(jié)構(gòu),概要抽取方法包括抽樣方法,小 波方法,略圖方法和直方圖方法。
9. 根據(jù)權(quán)利要求3所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于數(shù)據(jù)流處理模型庫 集成了數(shù)據(jù)流處理時的各種數(shù)據(jù)流處理算法,包括查詢處理算法、聚類算法、分類算法、頻 繁項集挖掘算法和多條數(shù)據(jù)流間的相關(guān)性分析算法。
10. 根據(jù)權(quán)利要求3、7、8或9所述的一種GPU上數(shù)據(jù)流處理方法,其特征在于數(shù)據(jù)流 處理模塊的任務(wù)是調(diào)用數(shù)據(jù)流概要抽取模塊的概要抽取方法對數(shù)據(jù)流進行概要抽取,以及 調(diào)用數(shù)據(jù)流處理模型庫中的數(shù)據(jù)流處理算法對概要數(shù)據(jù)進行并行計算;數(shù)據(jù)流處理模塊包 括數(shù)據(jù)流輸入裝配器、全局線程塊調(diào)度器和計算陣列,計算陣列內(nèi)設(shè)置有共享存儲器、裝載 或存儲單元;數(shù)據(jù)流輸入裝配器負責(zé)把顯存中的數(shù)據(jù)讀入到數(shù)據(jù)流處理模塊的共享存儲器 中,全局線程塊調(diào)度器負責(zé)對共享存儲器中的線程塊、線程和指令進行調(diào)度分配管理,計算 陣列用于線程的計算;計算陣列中的裝載或存儲單元在計算時,從顯存中加載數(shù)據(jù)到共享 存儲器。
【文檔編號】G06F13/20GK104317751SQ201410657243
【公開日】2015年1月28日 申請日期:2014年11月18日 優(yōu)先權(quán)日:2014年11月18日
【發(fā)明者】盧曉偉, 沈鉑, 周勇 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司