欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

中央處理器-圖形處理器異構的標簽傳播實現(xiàn)方法、裝置與流程

文檔序號:12802089閱讀:413來源:國知局
中央處理器-圖形處理器異構的標簽傳播實現(xiàn)方法、裝置與流程

本發(fā)明涉及標簽傳播技術,尤其涉及一種中央處理器(cpu,centralprocessingunit)-圖形處理器(gpu,graphicsprocessingunit)異構的標簽傳播實現(xiàn)方法、裝置。



背景技術:

近年來,基于網(wǎng)絡的數(shù)據(jù)分析,引起了數(shù)據(jù)挖掘和機器學習應用領域的研究興趣。許多基于圖的半監(jiān)督學習算法被提出。在這些算法中,一些頂點(已標記數(shù)據(jù))用標簽或激活值初始化,其他頂點(未標記數(shù)據(jù))初始化為0,學習問題是分配標簽/激活值到未標記數(shù)據(jù)進行分類或排序?;趫D的半監(jiān)督學習算法的共同特征是“聚類(cluster)假設”:一個網(wǎng)絡中相鄰的數(shù)據(jù)點應該有相似的標記,而網(wǎng)絡中相同全局cluster的數(shù)據(jù)點也應該有相似的標記。這些算法通常配置為網(wǎng)絡上標簽傳播:相鄰頂點上的標簽信息是迭代傳播的,在傳播過程中最終收斂于唯一的最小化二次判據(jù)的全局最優(yōu)解?;诖耍瑯撕瀭鞑ニ惴☉\而生。標簽傳播算法是一種有效且高效的技術,利用網(wǎng)絡中局部和全局特征進行半監(jiān)督學習。

基于互作用的網(wǎng)絡傳播(minprop,mutualinteraction-basednetworkpropagation)算法作為標簽傳播算法的一種,是基于異構網(wǎng)絡的標簽傳播算法,通過在單個網(wǎng)絡內(nèi)部和多個網(wǎng)絡之間進行標簽傳播來挖掘網(wǎng)絡中的隱藏信息。該算法將所有網(wǎng)絡結點進行建模,最終轉換成矩陣上的對應頂點,頂點包括已標記頂點和未標記頂點,頂點間邊的權重表示頂點間的相似度。頂點的標簽按照相似度傳播到其他的頂點,相似度越大,則標簽越容易傳播。通過標簽傳播,每個頂點的標簽值收斂于設定的閾值,達到學習未標記頂點的標簽信息的目的。

現(xiàn)有的minprop算法的計算一般都是借助matlab等工具完全利用cpu去完成計算的。通過數(shù)據(jù)建模,將一些社交、生物等網(wǎng)絡信息轉換成矩陣,經(jīng)過矩陣標準化等操作,最終由cpu完成整個矩陣運算過程,產(chǎn)生最終結果。

minprop算法需要在大規(guī)模矩陣上面進行求解,有大量的迭代次數(shù)。cpu的核心數(shù)量有限,完成這些迭代需要每個處理器核心逐個進行計算操作。整個過程需要數(shù)天甚至數(shù)周時間才能完成計算,這對于工程人員和科技工作者是無法忍受的。

綜上所述,基于cpu計算模型的minprop算法實現(xiàn)主要面臨以下幾個問題:

1、算法迭代次數(shù)上億級別,cpu核心數(shù)有限;

2、cpu利用率低,空等系統(tǒng)輸入輸出(io,inputoutput)時間開銷巨大;

3、系統(tǒng)內(nèi)存有限,內(nèi)存數(shù)據(jù)置換頻繁;

4、分布式計算時,需要提前拆分數(shù)據(jù),規(guī)劃計算任務,匯總計算結果;

5、計算時間長、斷電、系統(tǒng)故障等偶然因素一旦發(fā)生,整個過程需重新開始;

6、計算時間往往需要數(shù)周乃至數(shù)月時間,拖慢整個科研進度。



技術實現(xiàn)要素:

為解決上述技術問題,本發(fā)明實施例提供了一種cpu-gpu異構的標簽傳播方法、裝置。

本發(fā)明實施例提供的cpu-gpu異構的標簽傳播方法,包括:

利用gpu標準化所有網(wǎng)絡矩陣;

利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu;

當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu;

當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

本發(fā)明實施例中,所述利用gpu標準化所有網(wǎng)絡矩陣,包括:

將所述第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣,讀入至頁鎖定內(nèi)存中;

利用gpu對所述內(nèi)存中的第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣進行標準化處理;

將所述內(nèi)存中的各個網(wǎng)絡矩陣替換為標準化處理后的結果。

本發(fā)明實施例中,所述利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu,包括:

利用gpu在第一同構網(wǎng)絡矩陣上進行第i次標簽傳播,將所述第i次標簽傳播向量發(fā)送至所述cpu,其中,i≥2;

所述cpu計算所述第i次標簽傳播向量以及第i-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第一預設閾值;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播收斂;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播未收斂;

將所述第一收斂結果發(fā)送至所述gpu。

本發(fā)明實施例中,所述方法還包括:

當所述第一收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第一同構網(wǎng)絡矩陣上進行第i+1次標簽傳播,并將所述第i+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu,包括:

利用gpu在第二同構網(wǎng)絡矩陣上進行第j次標簽傳播,將所述第j次標簽傳播向量發(fā)送至所述cpu,其中,j≥2;

所述cpu計算所述第j次標簽傳播向量以及第j-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第二預設閾值;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播收斂;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播未收斂;

將所述第二收斂結果發(fā)送至所述gpu。

本發(fā)明實施例中,所述方法還包括:

當所述第二收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第二同構網(wǎng)絡矩陣上進行第j+1次標簽傳播,并將所述第j+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果,包括:

利用gpu在異構網(wǎng)絡矩陣上進行第k次標簽傳播,將所述第k次標簽傳播向量發(fā)送至所述cpu,其中,k≥2;

所述cpu計算所述第k次標簽傳播向量以及第k-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第三預設閾值;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播收斂;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播未收斂;

當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

本發(fā)明實施例中,所述方法還包括:

當所述第三收斂結果表明所述標簽傳播未收斂時,所述gpu重新在所述第一同構網(wǎng)絡矩陣上進行標簽傳播。

本發(fā)明實施例提供的cpu-gpu異構的標簽傳播實現(xiàn)裝置,包括:cpu、gpu;

標準化單元,用于利用gpu標準化所有網(wǎng)絡矩陣;

第一標簽傳播單元,用于利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;

第一判斷單元,用于利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu;

第二標簽傳播單元,用于當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;

第二判斷單元,用于利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu;

第三標簽傳播單元,用于當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;

第三判斷單元,用于利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;

結果單元,用于當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

本發(fā)明實施例中,所述標準化單元包括:

讀取子單元,用于將所述第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣,讀入至頁鎖定內(nèi)存中;

處理子單元,用于利用gpu對所述內(nèi)存中的第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣進行標準化處理;

替換子單元,用于將所述內(nèi)存中的各個網(wǎng)絡矩陣替換為標準化處理后的結果。

本發(fā)明實施例中,所述第一標簽傳播單元,還用于利用gpu在第一同構網(wǎng)絡矩陣上進行第i次標簽傳播,將所述第i次標簽傳播向量發(fā)送至所述cpu,其中,i≥2;

所述第一判斷單元,還用于利用所述cpu計算所述第i次標簽傳播向量以 及第i-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第一預設閾值;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播收斂;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播未收斂;將所述第一收斂結果發(fā)送至所述gpu。

本發(fā)明實施例中,所述第一標簽傳播單元,還用于當所述第一收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第一同構網(wǎng)絡矩陣上進行第i+1次標簽傳播,并將所述第i+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,所述第二標簽傳播單元,還用于利用gpu在第二同構網(wǎng)絡矩陣上進行第j次標簽傳播,將所述第j次標簽傳播向量發(fā)送至所述cpu,其中,j≥2;

所述第二判斷單元,還用于利用所述cpu計算所述第j次標簽傳播向量以及第j-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第二預設閾值;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播收斂;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播未收斂;將所述第二收斂結果發(fā)送至所述gpu。

本發(fā)明實施例中,所述第二標簽傳播單元,還用于當所述第二收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第二同構網(wǎng)絡矩陣上進行第j+1次標簽傳播,并將所述第j+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,所述第三標簽傳播單元,還用于利用gpu在異構網(wǎng)絡矩陣上進行第k次標簽傳播,將所述第k次標簽傳播向量發(fā)送至所述cpu,其中,k≥2;

所述第三判斷單元,還用于利用所述cpu計算所述第k次標簽傳播向量以及第k-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第三預設閾值;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播收斂;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播未收斂;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

本發(fā)明實施例中,所述第一標簽傳播單元,還用于當所述第三收斂結果表明所述標簽傳播未收斂時,所述gpu重新在所述第一同構網(wǎng)絡矩陣上進行標簽傳播。

本發(fā)明實施例的技術方案中,利用gpu標準化所有網(wǎng)絡矩陣;利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu;當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu;當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果??梢?,本發(fā)明實施例的標簽傳播方法是基于cpu和gpu協(xié)同計算,在整個標簽傳播實現(xiàn)過程中,cpu負責整個計算流程的控制,gpu負責完成矩陣的計算。解決了計算時間開銷大、cpu利用率低、內(nèi)存瓶頸、受偶然因素影響較大等缺點。

附圖說明

圖1為本發(fā)明實施例的cpu-gpu異構的標簽傳播實現(xiàn)方法的流程示意圖;

圖2為本發(fā)明實施例的cpu與gpu交互實現(xiàn)標簽傳播的示意圖;

圖3為本發(fā)明實施例的cpu-gpu異構的標簽傳播實現(xiàn)裝置的結構組成示意圖。

具體實施方式

為了能夠更加詳盡地了解本發(fā)明實施例的特點與技術內(nèi)容,下面結合附圖對本發(fā)明實施例的實現(xiàn)進行詳細闡述,所附附圖僅供參考說明之用,并非用來限定本發(fā)明實施例。

本發(fā)明實施例以標簽傳播算法為minprop算法為例進行解釋說明,下面對minprop算法進行詳細描述。

為了處理復雜異構網(wǎng)絡的標簽傳播,根據(jù)其他同構子網(wǎng)(屬于同構網(wǎng)絡)得到的當前標簽信息,minprop算法在每個獨立的同構子網(wǎng)上執(zhí)行標簽傳播,重復執(zhí)行標簽傳播直到標簽傳播收斂。minprop算法在第i個同構子網(wǎng)上g(i)=(v(i),e(i))執(zhí)行標簽傳播,i=1…k。每個同構子網(wǎng)的標簽傳播與在單個網(wǎng)絡上的標簽傳播算法相同,為:

ft=(1-α)y+αsft-1(1)

此外,g(i)的頂點初始化是頂點初始化標簽和其他同構子網(wǎng)頂點的當前標簽的組合。通過g(i,j)=(v(i)uv(j),e(i,j))(1≤j≤k,i≠j)表示第i個同構子網(wǎng)和其他同構子網(wǎng)之間的異構子網(wǎng),其他同構子網(wǎng)的標簽信息被收集作為相互交互。g(i)和其他同構子網(wǎng)間的相互交互信息被收集為:其中,fj是v(j)的當前標簽。異構子網(wǎng)標簽信息的引入可以捕捉在每對子網(wǎng)頂點間的bicluster結構。具體地minprop算法如下所示:

這里,所有同構子網(wǎng)s(i)和異構子網(wǎng)s(i,j)的標準化權圖是預先計算作為輸入的。minprop算法主體由三重循環(huán)構成。外層的2至13行do-while循環(huán),用于檢查是否k個同構子網(wǎng)的標簽值已經(jīng)收斂。收斂被定義為,在一次迭代后變化值第二范式不大于閾值σ。第二外層4至12行for循環(huán)依次經(jīng)歷每個同構子網(wǎng)。內(nèi)層7至10行是do-while循環(huán)。第6行,在g(i)的頂點中,初始標簽y,初始為,初始標簽值以及其他同構子網(wǎng)的直接鄰居標簽的和。第9行的傳播迭代步驟可以寫為

時,公式(2)相當于公式(1)。因此可以認為,從異構子網(wǎng)增強初始化的單一網(wǎng)絡的標簽傳播。最終,序列fit收斂到其極限fi*,以及fi*給出的所有子網(wǎng)頂點的類標簽/激活值。

計算同構子網(wǎng)g(i)=(v(i),e(i))傳播的初始標簽(第6行)的時間復雜度為o(|v(i)|∑j≠i|v(j)|)。運行7至10行do-while內(nèi)循環(huán)間復雜度為o(ti|v(i)|2),其中ti是到達收斂的循環(huán)次數(shù)。這兩步將在每個同構子網(wǎng)上重復執(zhí)行(4至12行),完 成每個同構子網(wǎng)每一輪傳播的任務時間復雜度為o(|v(i)|∑j≠i|v(j)|+ti|v(i)|2)。一個更有效的但是不夠直觀的minprop算法實現(xiàn)可以預計算(i-αis(i))-1,這樣第7至10行只需要計算(1-αi)(i-αis(i))-1y,。設t為minprop算法到達收斂的總迭代次數(shù)。高效的實現(xiàn)minprop算法的時間復雜度為:

minprop算法的時間復雜度很大程度上與ti和t有關,前者為每個同構子網(wǎng)上傳播的收斂速度,后者為經(jīng)歷所有同構子網(wǎng)需要的迭代次數(shù)。每個同構子網(wǎng)上標簽傳播的收斂速度與圖譜特性密切相關。實踐中,甚至大型網(wǎng)絡也可以在數(shù)十次迭代中收斂。同構子網(wǎng)達到收斂的迭代次數(shù)可以用交替優(yōu)化理論估計。

下面再對本發(fā)明實施例的gpu進行詳細描述。

gpu最初是用于在顯示器上渲染計算機圖形,其內(nèi)部具有大量的并行計算單元、更高的存儲帶寬,而且線程切換開銷小,采用了只讀式緩存,這些優(yōu)勢使gpu具有天然的計算優(yōu)勢,其計算能力以超越摩爾定律的速度增長,使其不再拘泥于傳統(tǒng)的圖形處理,開始輔助cpu完成圖形計算以外的運算。人們開始在科學計算、工程、金融以及其他領域中越來越多地使用gpu。gpu由眾多晶體管組成,這些晶體管主要用于數(shù)據(jù)處理,并沒有用到數(shù)據(jù)緩存和流控制。因為這種結構設計是專門為了高度并行化、計算密集型的操作。

gpu作為cpu的協(xié)處理器,每次執(zhí)行程序的時候可以開啟大量線程,并通過開啟大量線程來進行并行計算,進而可以隱藏訪問存儲器帶來的時間上的延遲。按照線程的訪問權限,gpu上的內(nèi)存可以分為3層。第一層是單個線程所擁有的內(nèi)存,包括寄存器和本地內(nèi)存。第二層是中間內(nèi)存,由出在相同線程塊的所有線程所共享,其中只包括共享內(nèi)存(sharedmemory)。第三層是任意網(wǎng)格中的所有線程都可以訪問的最外層內(nèi)存,包括全局內(nèi)存(globalmemory)、固定內(nèi)存(constantmemory和紋理內(nèi)存(texturememory)。

此外,統(tǒng)一計算設備架構(cuda,computeunifieddevicearchitecture)是一種將gpu作為數(shù)據(jù)并行計算設備的軟硬件體系,包括硬件支持、程序語言擴展、編譯器、調(diào)試器等整套開發(fā)工具鏈,它對矩陣數(shù)值計算、圖像視頻處理、機器學習、計算機可視化等問題都有良好的加速效果。cuda語言是基于c語言的擴展,主要使用應用程序編程接口(api,applicationprogramminginterface)調(diào)用底層功能進行相關處理,因而可以使熟悉c、c++語言的編程人員能夠快速的運用cuda開發(fā)計算程序。

綜上所述,minprop算法的主要計算密集點分為:矩陣向量乘,向量加和兩個向量最大差值等操作。具體包括如下步驟:

1)將同構網(wǎng)絡矩陣p(m×m)、同構網(wǎng)絡矩陣g(n×n)和異構網(wǎng)絡矩陣a(m×n)讀入到頁鎖定內(nèi)存中,并計算出異構網(wǎng)絡矩陣的轉置矩陣a(m×n)t

2)對所有的同構網(wǎng)絡矩陣和異構網(wǎng)絡矩陣進行標準化操作。

3)初始化標簽傳播向量p和f,指定初始化標簽傳播開始節(jié)點并指定最大傳播次數(shù)。

4)在同構網(wǎng)絡矩陣p(m×m)上進行標簽傳播,直至相鄰兩次的標簽傳播向量的差值達到預先設定的閾值,即標簽傳播收斂。在同構網(wǎng)絡矩陣g(n×n)上進行標簽傳播,直至相鄰兩次的標簽傳播向量之間的差值達到預先設定的閾值,即標簽傳播收斂。

5)在異構網(wǎng)絡矩陣a(m×n)上進行標簽傳播,直至相鄰兩次的標簽傳播向量的差值達到預先設定的閾值,即標簽傳播收斂。

6)保存此時的標簽傳播向量f,即為最終的標簽傳播結果。

使用gnu的gcov、gprof和intel公司的vtune等分析工具對minprop算法的串行實現(xiàn)進行深入剖析之后發(fā)現(xiàn),矩陣向量乘占用了整個程序執(zhí)行時間的99.9%。

本發(fā)明實施例把矩陣向量乘交給gpu去計算,cpu負責程序執(zhí)行流程的 控制。

圖1為本發(fā)明實施例的cpu-gpu異構的標簽傳播實現(xiàn)方法的流程示意圖,如圖1所示,所述cpu-gpu異構的標簽傳播實現(xiàn)方法包括以下步驟:

步驟101:利用gpu標準化所有網(wǎng)絡矩陣。

本發(fā)明實施例中,將所述第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣,讀入至頁鎖定內(nèi)存中;利用gpu對所述內(nèi)存中的第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣進行標準化處理;將所述內(nèi)存中的各個網(wǎng)絡矩陣替換為標準化處理后的結果。

步驟102:利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu。

本發(fā)明實施例中,利用gpu在第一同構網(wǎng)絡矩陣上進行第i次標簽傳播,將所述第i次標簽傳播向量發(fā)送至所述cpu,其中,i≥2;所述cpu計算所述第i次標簽傳播向量以及第i-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第一預設閾值;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播收斂;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播未收斂;將所述第一收斂結果發(fā)送至所述gpu。

步驟103:當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu。

承接上述步驟102,當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu。當所述第一收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第一同構網(wǎng)絡矩陣上進行第i+1次標簽傳播,并將所述第i+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,利用gpu在第二同構網(wǎng)絡矩陣上進行第j次標簽傳播,將所述第j次標簽傳播向量發(fā)送至所述cpu,其中,j≥2;所述cpu計算所述 第j次標簽傳播向量以及第j-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第二預設閾值;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播收斂;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播未收斂;將所述第二收斂結果發(fā)送至所述gpu。

步驟104:當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

承接上述步驟103,當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。當所述第二收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第二同構網(wǎng)絡矩陣上進行第j+1次標簽傳播,并將所述第j+1次標簽傳播向量發(fā)送至所述cpu。

本發(fā)明實施例中,利用gpu在異構網(wǎng)絡矩陣上進行第k次標簽傳播,將所述第k次標簽傳播向量發(fā)送至所述cpu,其中,k≥2;所述cpu計算所述第k次標簽傳播向量以及第k-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第三預設閾值;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播收斂;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播未收斂;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。當所述第三收斂結果表明所述標簽傳播未收斂時,所述gpu重新在所述第一同構網(wǎng)絡矩陣上進行標簽傳播。

本發(fā)明實施例的標簽傳播方法是基于cpu和gpu協(xié)同計算,在整個標簽傳播實現(xiàn)過程中,cpu負責整個計算流程的控制,gpu負責完成矩陣的計算。解決了計算時間開銷大、cpu利用率低、內(nèi)存瓶頸、受偶然因素影響較大等缺 點。

參照圖2,圖2為本發(fā)明實施例的cpu與gpu交互實現(xiàn)標簽傳播的示意圖,如圖2所示:

首先,將矩陣p(m×m),矩陣g(n×n)和p-g聯(lián)合矩陣a(m×n)拷貝到頁鎖定內(nèi)存中。在對矩陣進行標準化操作的時候,本發(fā)明實施例直接把操作交給gpu去計算,在標準化矩陣操作的時候,開啟與需要標準化的矩陣行數(shù)相同個數(shù)的資源塊(block),以及256個線程進行計算。每一個block都有一個唯一標識的id號,通過這個id號可以控制不同的block和線程進行計算。每一個block計算矩陣其中一行的所有元素標準化之后的結果,并替換掉原先矩陣里面對應位置的元素。

在矩陣標準化和初始化查詢條件完成之后,首先在矩陣p(m×m)上進行標簽傳播,在傳播的同時進行收斂判斷。這一過程主要的操作是矩陣向量乘、向量加法和計算兩個向量對應元素最大差值。其中矩陣向量乘和向量加法分別通過cublas庫中提供的cublasdgemv()和cublasdaxpy()接口去實現(xiàn)。這兩個接口分別實現(xiàn)矩陣向量乘和矩陣加法。在求解兩個向量對應元素的最大差值的時候,定義kernel函數(shù)max_of_two_vectors。開啟1個線程塊,256個線程。為每個線程分配一個共享內(nèi)存(sharedmemory),用來存儲兩個向量對應元素的差值的絕對值,步長為256,這樣就得到了一個長度為256的雙精度浮點數(shù)組。每個線程計算完當前對應位置的兩個元素之后就會去計算從當前位置算起往后256個步長的兩個向量的對應元素的差值,如果比當前共享內(nèi)存中的值大,則替換共享內(nèi)存中的差值。所有線程執(zhí)行完差值以后,線程數(shù)量折半,只使用128個線程去求解256個雙浮點類型數(shù)據(jù)長度的最大值。可以以1號線程為例,負責共享內(nèi)存上的數(shù)組的第1個元素和第129個元素的大小的比較,如果129位置上的元素的值大于1位置上的元素,則替換1位置的元素。其他線程也是同樣的原理,kernel函數(shù)結束的時候把最大差值賦值給事先已經(jīng)在頁鎖定內(nèi)存上的變量。在一次標簽傳播結束的時候,cpu去判斷這個最大差值是否達到事先設 定好的閾值,如果達到閾值,下一步到矩陣g(n×n)進行標簽傳播。如果沒有達到閾值,則在矩陣p(m×m)上繼續(xù)傳播,直至收斂。此時保存標簽傳播向量。

緊接著在矩陣g(n×n)進行標簽傳播,其中的主要的操作是矩陣向量乘、向量加法和計算兩個向量對應元素最大差值。各操作的實現(xiàn)原理跟在矩陣p(m×m)上的傳播原理是一樣的。

最后一步需要在p-g聯(lián)合矩陣a(m×n)上進行傳播,其中的主要的操作是矩陣向量乘、向量加法和計算兩個向量對應元素最大差值。各操作的實現(xiàn)原理跟在矩陣p(m×m)上的傳播原理是一樣的,在這里不再贅述。

當所有網(wǎng)絡上的標簽傳播向量都達到收斂時,視為傳播結束,此時保存對應的標簽傳播向量,用作后續(xù)的分析。

本發(fā)明實施例的技術方案,充分分析了算法的計算密集型操作以及算法瓶頸,針對算法瓶頸,充分利用近年來并行計算能力日益強大的基于cuda編程模型的gpu,將算法中迭代次數(shù)較多、計算密集型操作重新設計,一部分流程控制交給cpu去處理,計算密集型操作交給gpu去處理。其中,基于cpu-gpu異構計算模型,相比傳統(tǒng)的基于cpu計算平臺的時間開銷急劇縮短。充分利用cpu核心數(shù)較少,但是邏輯判斷能力較強的特性,gpu邏輯判斷能力較弱,但是核心數(shù)較多,具有強大的并行計算能力的特性。方便無編程經(jīng)驗的工程人員或者科研人員快速上手,只需搭建必要的較少的運行環(huán)境,如cuda編譯環(huán)境,gcc編譯環(huán)境。易于擴展。基于本申請?zhí)岢龅腸pu-gpu異構編程模型,可以很方便的擴展到多gpu模式。

圖3為本發(fā)明實施例的cpu-gpu異構的標簽傳播實現(xiàn)裝置的結構組成示意圖,如圖3所示,所述裝置包括:cpu、gpu

標準化單元31,用于利用gpu標準化所有網(wǎng)絡矩陣;

第一標簽傳播單元32,用于利用gpu在第一同構網(wǎng)絡矩陣上進行標簽傳播;

第一判斷單元33,用于利用所述cpu判斷所述標簽傳播是否收斂,將第一收斂結果發(fā)送至所述gpu;

第二標簽傳播單元34,用于當所述第一收斂結果表明所述標簽傳播收斂時,所述gpu在第二同構網(wǎng)絡矩陣上進行標簽傳播;

第二判斷單元35,用于利用所述cpu判斷所述標簽傳播是否收斂,將第二收斂結果發(fā)送至所述gpu;

第三標簽傳播單元36,用于當所述第二收斂結果表明所述標簽傳播收斂時,所述gpu在異構網(wǎng)絡矩陣上進行標簽傳播;

第三判斷單元37,用于利用所述cpu判斷所述標簽傳播是否收斂,得到第三收斂結果;

結果單元38,用于當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

所述標準化單元31包括:

讀取子單元311,用于將所述第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣,讀入至頁鎖定內(nèi)存中;

處理子單元312,用于利用gpu對所述內(nèi)存中的第一同構網(wǎng)絡矩陣、所述第二同構網(wǎng)絡矩陣以及所述異構網(wǎng)絡矩陣進行標準化處理;

替換子單元313,用于將所述內(nèi)存中的各個網(wǎng)絡矩陣替換為標準化處理后的結果。

所述第一標簽傳播單元32,還用于利用gpu在第一同構網(wǎng)絡矩陣上進行第i次標簽傳播,將所述第i次標簽傳播向量發(fā)送至所述cpu,其中,i≥2;

所述第一判斷單元33,還用于利用所述cpu計算所述第i次標簽傳播向量以及第i-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第一預設閾值;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播收斂;當所述差值小于等于第一預設閾值時,所述cpu確定出所述第一收斂結果為所述標簽傳播未收斂;將所述第一收斂結果發(fā)送至所述gpu。

所述第一標簽傳播單元32,還用于當所述第一收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第一同構網(wǎng)絡矩陣上進行第i+1次標簽傳播,并將所述第i+1次標簽傳播向量發(fā)送至所述cpu。

所述第二標簽傳播單元34,還用于利用gpu在第二同構網(wǎng)絡矩陣上進行第j次標簽傳播,將所述第j次標簽傳播向量發(fā)送至所述cpu,其中,j≥2;

所述第二判斷單元35,還用于利用所述cpu計算所述第j次標簽傳播向量以及第j-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第二預設閾值;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播收斂;當所述差值小于等于第二預設閾值時,所述cpu確定出所述第二收斂結果為所述標簽傳播未收斂;將所述第二收斂結果發(fā)送至所述gpu。

所述第二標簽傳播單元34,還用于當所述第二收斂結果表明所述標簽傳播未收斂時,所述gpu在所述第二同構網(wǎng)絡矩陣上進行第j+1次標簽傳播,并將所述第j+1次標簽傳播向量發(fā)送至所述cpu。

所述第三標簽傳播單元36,還用于利用gpu在異構網(wǎng)絡矩陣上進行第k次標簽傳播,將所述第k次標簽傳播向量發(fā)送至所述cpu,其中,k≥2;

所述第三判斷單元37,還用于利用所述cpu計算所述第k次標簽傳播向量以及第k-1次標簽傳播向量的差值,并判斷所述差值是否小于等于第三預設閾值;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播收斂;當所述差值小于等于第三預設閾值時,所述cpu確定出所述第三收斂結果為所述標簽傳播未收斂;當所述第三收斂結果表明所述標簽傳播收斂時,將當前的標簽傳播向量作為標簽傳播結果。

所述第一標簽傳播單元32,還用于當所述第三收斂結果表明所述標簽傳播未收斂時,所述gpu重新在所述第一同構網(wǎng)絡矩陣上進行標簽傳播。

本領域技術人員應當理解,圖3所示的cpu-gpu異構的標簽傳播實現(xiàn)裝置中的各單元及其子單元的實現(xiàn)功能可參照前述cpu-gpu異構的標簽傳播實現(xiàn)方法的相關描述而理解。圖3所示的cpu-gpu異構的標簽傳播實現(xiàn)裝置中 的各單元的功能可通過運行于處理器上的程序而實現(xiàn),也可通過具體的邏輯電路而實現(xiàn)。

本發(fā)明實施例所記載的技術方案之間,在不沖突的情況下,可以任意組合。

在本發(fā)明所提供的幾個實施例中,應該理解到,所揭露的方法和智能設備,可以通過其它的方式實現(xiàn)。以上所描述的設備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。

上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個地方,也可以分布到多個網(wǎng)絡單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個第二處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
房山区| 桃源县| 夏邑县| 陆良县| 阜新市| 龙江县| 峨边| 忻城县| 盘锦市| 万盛区| 康乐县| 仁化县| 大埔区| 云霄县| 竹溪县| 泗水县| 张家界市| 延安市| 南和县| 遵化市| 长治县| 阿鲁科尔沁旗| 长垣县| 调兵山市| 霍城县| 广水市| 成安县| 衢州市| 郁南县| 修水县| 东阿县| 广东省| 衢州市| 库伦旗| 晋中市| 偃师市| 开江县| 洪泽县| 类乌齐县| 色达县| 长宁县|