亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于gpu加速的網絡社區(qū)檢測方法

文檔序號:6540396閱讀:330來源:國知局
基于gpu加速的網絡社區(qū)檢測方法
【專利摘要】本發(fā)明公開了一種基于GPU加速的網絡社區(qū)檢測方法,主要解決傳統(tǒng)NMF網絡社區(qū)檢測方法的運行時間過長,占用空間過多的問題。其實現(xiàn)過程為:(1)構造網絡的鄰接矩陣;(2)檢查網絡類型是否滿足要求并對鄰接矩陣進行預處理;(3)對預處理之后的鄰接矩陣進行稀疏表示;(4)對GPU設備進行初始化;(5)將稀疏表示的鄰接矩陣傳入到GPU設備中;(6)在GPU中進行網絡社區(qū)檢測;(7)將得到的檢測結果從GPU設備傳到內存中進行歸一化處理,得到網絡的重疊劃分;(8)由重疊劃分得到網絡的硬化分。本發(fā)明利用GPU對NMF社區(qū)檢測方法進行并行加速,大幅降低了社區(qū)檢測的運行時間及存儲空間,并可處理更大規(guī)模的網絡數據。
【專利說明】基于GPU加速的網絡社區(qū)檢測方法
【技術領域】
[0001]本發(fā)明屬于網絡【技術領域】,特別涉及一種網絡社區(qū)的檢測方法,用于復雜網絡數據的結構分析。
【背景技術】
[0002]當今社會中,人們的生活總是被各種各樣的網絡所包圍,如社交網、生物網、Web網絡等。復雜網絡可以用圖的形式表示,其中圖中的節(jié)點表示網絡中的數據對象,而圖中的邊則表示網絡對象間的連接情況。一個網絡可以用G= (V, E, A)來表示,其中V是一個包含著η個節(jié)點的集合,E是一個包含m條邊的集合,A是一個nXn維的鄰接矩陣,Au代表節(jié)點i和節(jié)點j之間的邊的權重。網絡社區(qū)檢測就是將節(jié)點集合V劃分到不同的社區(qū)中,以得到網絡的劃分C = (C1, C2,....ck),其中k為社區(qū)的個數。在重疊網絡社區(qū)檢測中,一個節(jié)點可以屬于不同的社區(qū),由規(guī)模為nXk的隸屬度矩陣M來保存其劃分的結果,其中代表了第i個節(jié)點屬于第j個社區(qū)的概率。
[0003]網絡社區(qū)檢測對分析網絡的拓撲結構、理解復雜網絡的功能、發(fā)現(xiàn)復雜網絡中的隱藏規(guī)律和預測復雜網絡行為有著重要的理論意義和廣泛的應用前景。在社交網站中,可以通過對網絡中的用戶好友信息對用戶進行聚類,可以向用戶推薦好友;在電子商務領域,將消費者看作節(jié)點,在購買過相同產品的消費者之間建立連邊,這樣處于同一個社區(qū)的消費者可能就具有相同的購物興趣,進而可以有針對性的向其推薦商品。
[0004]非負矩陣分解NMF算法是解決網絡社區(qū)檢測問題的一個經典方法。該算法的思想是把網絡社區(qū)檢測的問題看作一個維數約減的問題。對網絡的鄰接矩陣A進行分解,分解得到兩個矩陣W和H相乘,得到的分解之后的矩陣W即為節(jié)點屬于不同社區(qū)的隸屬度矩陣。NMF不僅能夠得到網絡中比較好的劃分結果,同時可以得到每個節(jié)點屬于每個社區(qū)的概率,從而可以同時得到網絡的重疊以及硬劃分結果。因此NMF算法成為了解決網絡社區(qū)檢測問題的一個經典算法并被廣泛使用。
[0005]NMF算法存在一個嚴重的缺點即時間復雜度比較高。經過分析發(fā)現(xiàn)其時間復雜度為O (η2 X k),空間復雜度為O (η2),其中η代表網絡中的節(jié)點個數,k代表網絡的社區(qū)數目。當網絡規(guī)模擴大時,算法運行時間將非常長。因此非常有必要設計并行NMF算法來縮短算法的運行時間。
[0006]圖形處理器GPU原本是處理計算機圖形的專用設備。近十年來,由于高清晰度復雜圖形實時處理的要求,GPU發(fā)展成為高并行性、多線程、多核的處理器。相比于CPU計算,GPU在進行計算密集型和高度并行性的計算任務上顯示了強大的優(yōu)勢。目前,提高CPU性能的主要手段是集成更大的緩存和在同一芯片上集成更多的核,而GPU卻可以有效利用晶體管資源,目前主流GPU的運算能力已超過主流通用CPU。傳統(tǒng)的基于GPU通用計算的開發(fā)方式是將數據打包成紋理,將并行計算任務映射成圖形學中的圖像著色,使用圖形學API進行開發(fā),并利用GPU中的可編程頂點著色單元和像素著色單元作為處理器完成通用計算任務,這個處理過程與圖形硬件緊密相關,程序實現(xiàn)非常艱澀并需要大量的底層硬件知識。近年來,利用GPU進行通用計算越來越易于實現(xiàn),一些標準被相繼提出來。
[0007]目前的并行程序設計有3種主流框架,分別是CUDA、0penCL和Direct Compute。本發(fā)明采用的是在AMD顯卡下的OpenCL平臺。OpenCL是由Apple公司提出,并交由Khronos組織進行標準化的開放GPU計算標準語言。OpenCL不僅僅是一種編程語言,更是一個完整的并行編程框架,包括編程語言,API,函數庫以及運行時系統(tǒng)來支持軟件在整個平臺上的開發(fā)。在OpenCL編程中,通過核函數來對GPU設備進行編程。核函數運行在GPU上,并完成一個相對獨立的功能。由CPU通過運行時函數來調用GPU端的核函數來完成計算。
[0008]有學者提出利用GPU設備來對NMF算法進行加速。但是所提出的算法只是對經典NMF模型進行并行。由于網絡社區(qū)檢測問題具有其特殊性:網絡鄰接矩陣普遍規(guī)模比較大而且均為稀疏矩陣而且需要自適應找出劃分數目k,套用經典NMF算法往往導致劃分結果不佳,加速效果有限,并且不能用于對網絡社區(qū)的檢測。

【發(fā)明內容】

[0009]本發(fā)明的目的在于針對上述現(xiàn)有方法的不足,提出一種基于GPU加速的網絡社區(qū)檢測方法,以節(jié)省計算所需的存儲空間,提高社區(qū)檢測速度。
[0010]為實現(xiàn)上述目的,本發(fā)明的技術方案包括如下步驟:
[0011](I)構造大小為nXn的網絡鄰接矩陣A,n為網絡中節(jié)點的數目;
[0012](2)檢查網絡是否滿足無方向無權重的條件特征,若滿足該條件,則去除網絡中的孤立節(jié)點,即網絡中與其他任何節(jié)點都沒有聯(lián)系的節(jié)點,否則該網絡無法處理,退出程序;
[0013](3)對鄰接矩陣A采用行格式存儲法CSR進行稀疏表示,得到列坐標向量Aj和行首位置向量Ap,同時采用列格式存儲法CSC進行稀疏表示,得到行坐標向量Bj和列首位置向量Bp ;
[0014](4)利用OpenCL編程框架對GPU設備進行初始化:
[0015]選擇OpenCL平臺,得到OpenCL設備,創(chuàng)建命令隊列,倉Il建內存對象,創(chuàng)建OpenCL程序對象,創(chuàng)建核函數對象;
[0016](5)利用0-1之間的隨機數分別構造大小為nXk的左分解矩陣W、大小為kXn的右分解矩陣H、大小為IXk的中間向量β,其中k為預設的社區(qū)數目,將所述W、H、β、Αρ、Aj、Bp和Bj傳輸到GPU全局內存中,其中,k為初始的網絡社區(qū)數目;
[0017](6)在GPU中進行網絡社區(qū)結構檢測:
[0018]6a)根據上面得到的W、H矩陣以及β向量,計算第一臨時變量:T1 =W/(lnXnHT+Wdiag(i3)),其中Inxn代表大小為nXn的單位矩陣,Ht代表H矩陣的轉置,diag(^)代表β向量的對角矩陣,/代表矩陣間的點除操作;
[0019]6b)根據步驟(2)得到的AjP Aj,計算第二臨時變量:T2 = A/(WH),其中A為網絡的鄰接矩陣;
[0020]6c)根據第二臨時變量T2,計算第三臨時變量:Τ3 = Τ2*Ητ ;
[0021]6d)根據第一臨時變量Tl和第三臨時變量T3對左分解矩陣W進行更新,即
【權利要求】
1.一種基于GPU加速的網絡社區(qū)檢測方法,包括如下步驟: (1)構造大小為nXn的網絡鄰接矩陣Α,η為網絡中節(jié)點的數目; (2)檢查網絡是否滿足無方向無權重的條件特征,若滿足該條件,則去除網絡中的孤立節(jié)點,即網絡中與其他任何節(jié)點都沒有聯(lián)系的節(jié)點,否則該網絡無法處理,退出程序; (3)對鄰接矩陣A采用行格式存儲法CSR進行稀疏表示,得到列坐標向量Aj和行首位置向量Αρ,同時采用列格式存儲法CSC進行稀疏表示,得到行坐標向量Bj和列首位置向量Bp ; (4)利用OpenCL編程框架對GPU設備進行初始化: 選擇OpenCL平臺,得到OpenCL設備,倉Il建命令隊列,倉Il建內存對象,倉Il建OpenCL程序對象,創(chuàng)建核函數對象; (5)利用0-1之間的隨機數分別構造大小為nXk的左分解矩陣W、大小為kXn的右分解矩陣H、大小為IXk的中間向量β,其中k為預設的社區(qū)數目,將所述W、H、i3、Ap、Aj、Bp和Bj傳輸到GPU全局內存中; (6)在GPU中進行網絡社區(qū)結構檢測: 6a)根據上面得到的W、H矩陣以及β向量,計算第一臨時變量:T1 = ff/(lnXnHT+Wdiag(i3)),其中Inxn代表大小為nXn的單位矩陣,Ht代表H矩陣的轉置,diag(^)代表β向量的對角矩陣,/代表矩陣間的點除操作; 6b)根據步驟(2)得到的A1^P~,計算第二臨時變量:T2 = A/(WH),其中A為網絡的鄰接矩陣; 6c)根據第二臨時變量T2,計算第三臨時變量:Τ3 = Τ2*Ητ ; 6d)根據第一臨時變量Tl和第三臨時變量T3對左分解矩陣W進行更新,
2.根據權利要求書I所述的基于GPU加速的網絡社區(qū)檢測方法,其特征在于,步驟6a)所述的計算第一臨時變量Tl操作,按如下步驟進行: 6al)在GPU中開辟ηX k個線程,其中η為網絡節(jié)點的數目,k為初始的社區(qū)數目,每個線程負責計算Tl中的一個元素; 6a2)在上面開辟的線程中,任意選取其中第X行第y列的線程來計算Tl中第x行第y列的元素:
3.根據權利要求書I所述的基于GPU加速的網絡社區(qū)檢測方法,其特征在于,步驟6b)所述的計算T2操作,按如下步驟進行: 6bl)在GPU中開辟nXn個線程; 6b2)在上面開辟的線程中,對于位置為第X行第I列的線程,計算其負責處理的元素在列坐標向量Aj中的位置:index = Apx+y,及該元素在結果矩陣中的行坐標row=x、列坐標col = Ajindex,其中Apx代表行首位置向量Ap的第X個元素,Ajindex代表列坐標向量Aj的第index個元素; 6b3)讀取左分解矩陣W第row行的元素,并放到局部內存As中,讀取右分解矩陣H中第col列的元素,并放到局部內存Bs中,對As與Bs中保存的向量求內積,對所求內積結果取倒數,將最終結果寫到第二臨時變量T2的第index個位置上。
4.根據權利要求書I所述的基于GPU加速的網絡社區(qū)檢測方法,其特征在于,步驟6c)所述的計算第三臨時變量T3,按如下步驟進行: 6cl)在GPU中開辟nXk個線程; 6c2)在上面開辟的線程中,對于位于第X行第I列的線程,計算鄰接矩陣A的第X行中非零元素的個數zn = Apx+1-Apx,讀取第二臨時變量T2中相應的元素并放入局部內存As中,即
【文檔編號】G06F17/30GK103853835SQ201410093389
【公開日】2014年6月11日 申請日期:2014年3月14日 優(yōu)先權日:2014年3月14日
【發(fā)明者】公茂果, 馬文萍, 黃寶林, 馬晶晶, 陳曉偉, 馬里佳, 侯彪 申請人:西安電子科技大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1