0051] (7)檢測(cè)停止準(zhǔn)則是否更新了全部的因子A,否是,則結(jié)束流程;如
[0052] 否,否則回到第4步。
[0053] 作為優(yōu)選,步驟4中所述的張量分割方法,其具體實(shí)現(xiàn)過(guò)程是:
[0054] 層次化平行因子分析模型H-PARAFAC通過(guò)給塊設(shè)備平均分配塊以平衡計(jì)算資源, 每臺(tái)設(shè)備只需獲得當(dāng)前迭代所需的數(shù)據(jù),節(jié)點(diǎn)按序列將塊傳給設(shè)備;在第k個(gè)設(shè)備中塊數(shù) 量的計(jì)算如下:
[0056] 其中,k表示第k個(gè)設(shè)備,k = 1、S表示總塊數(shù),&表示在第k個(gè)設(shè)備中 的塊數(shù),每個(gè)GPU的塊數(shù)一致或相差1 ;
[0057] 每個(gè)節(jié)點(diǎn)含中間數(shù)據(jù),每個(gè)節(jié)點(diǎn)只需:更新部分?jǐn)?shù)據(jù),余下部分是上次迭代所更新 的數(shù)據(jù)。
[0058] 作為優(yōu)選,步驟5中所述的張量子集因子的評(píng)估和因子子集的初始化,其具體實(shí) 現(xiàn)過(guò)程為:通過(guò)DTLD獲得張量子集因子的初值,通過(guò)ALS驅(qū)動(dòng)傳統(tǒng)PARAFAC獲得張量子集 因子,DTLD在因子初始化中避免了局部最優(yōu),DTLD由Tucker模型和GRAM方法構(gòu)成;并行 的DTLD方法中張量子集和分解步驟統(tǒng)一于CUDA流處理中,多個(gè)張量子集能統(tǒng)一于多個(gè)依 賴于多個(gè)GPU的共發(fā)CUDA計(jì)算框架之下;這些任務(wù)一經(jīng)完成,所有節(jié)點(diǎn)間的設(shè)備或主機(jī)同 步交換張量子集因子的結(jié)果。
[0059] 作為優(yōu)選,步驟5中所述的對(duì)稱數(shù)據(jù)傳輸,其具體實(shí)現(xiàn)過(guò)程為:
[0060] m-ALS每次迭代獲取最終全因子過(guò)程中,需要每個(gè)維度上的P,Q,U數(shù)據(jù),P,Q以 張量的形式存在,其維度和原始張量維度一致,P,Q兩個(gè)張量都被分成張量子集,標(biāo)號(hào)方 式也一致;因子子集對(duì)應(yīng)特定的維度,P,Q不斷更新,第η維的計(jì)算中,中間張量根據(jù) Tj =兔進(jìn)行分塊,當(dāng)計(jì)算進(jìn)行到第η+1維時(shí),連續(xù)存儲(chǔ)的數(shù)據(jù)將被分到不同的塊內(nèi);
[0061] 每次迭代中,節(jié)點(diǎn)傳遞被其它設(shè)備更新的中間數(shù)據(jù)(P,Q,U)到本臺(tái)設(shè)備(一個(gè)節(jié) 點(diǎn)包含多臺(tái)設(shè)備,設(shè)備是指計(jì)算機(jī)處理平臺(tái)。節(jié)點(diǎn)是綜合處理平臺(tái))中,因本臺(tái)設(shè)備只處理 一些特定的因子子集,節(jié)點(diǎn)需要從可能的多維數(shù)據(jù)中定位其相應(yīng)的塊,同時(shí)將它們發(fā)送到 設(shè)備端;
[0062] 在層次化平行因子分析模型H-PARAFAC中,設(shè)備計(jì)算張量子集的標(biāo)號(hào)以擴(kuò)展到第 n+1維,設(shè)備在第η維數(shù)據(jù)完成時(shí),將這些數(shù)據(jù)直接拷貝到節(jié)點(diǎn)的特定位置;該步驟能用公 式13和公式14中的排列組合理論描述,式中的元素意味著張量P和Q的一個(gè)數(shù)據(jù) 單元,(i,j,k)是數(shù)據(jù)單元的坐標(biāo),公式13中Pl是一次傳輸,在一次一對(duì)一的映射后標(biāo)號(hào) 變成(j,k,i),公式14表示索引號(hào)經(jīng)過(guò)了三次傳輸:
[0065] 根據(jù)坐標(biāo)的傳輸,數(shù)據(jù)單元的偏移量是線性存儲(chǔ),并能由設(shè)備計(jì)算的,在單維度的 一個(gè)來(lái)回中,所有^^和只?;在CUDA流中同時(shí)計(jì)算,更新的中間數(shù)據(jù)能根據(jù)偏移直接拷貝到 主機(jī)端存儲(chǔ)空間的指定位置,新的塊能自動(dòng)存儲(chǔ)到連續(xù)的存儲(chǔ)空間以方便轉(zhuǎn)到另一維數(shù)據(jù) 上。
[0066] 與現(xiàn)有的傳統(tǒng)的基于平行因子的多維數(shù)據(jù)分析方法相比,本發(fā)明具有以下優(yōu)點(diǎn)和 有益效果:
[0067] (1)本發(fā)明提出一種并行計(jì)算框架H-PARAFAC,使得算法能夠快速的處理大規(guī)模 高維數(shù)據(jù)分析問(wèn)題;
[0068] (2)本發(fā)明提出的層次化并行計(jì)算框架包含整合張量子集的粗粒度模型和計(jì)算及 整合張量子集的細(xì)粒度計(jì)算模型;
[0069] (3)本發(fā)明提出的H-PARAFAC利用多個(gè)GPU設(shè)備以并行的方式在混合集群計(jì)算平 臺(tái)分解張量子集。
【附圖說(shuō)明】
[0070] 附圖1 :本發(fā)明實(shí)施例的Grid PARAFAC模型示意圖;
[0071] 附圖2 :本發(fā)明實(shí)施例的層次化平行因子分析模型H-PARAFAC示意圖;
[0072] 附圖3 :本發(fā)明實(shí)施例的H-PARAFAC下的張量分解流程圖;
[0073] 附圖4 :本發(fā)明實(shí)施例的對(duì)稱數(shù)據(jù)傳輸模型圖;
[0074] 附圖5 :本發(fā)明實(shí)施例的在不同分割方案下獲得這些張量全部因子的執(zhí)行時(shí)間圖 變化圖;圖(a)執(zhí)行時(shí)間隨數(shù)據(jù)大小的變化圖;圖(b)執(zhí)行時(shí)間隨塊大小的變化圖。
【具體實(shí)施方式】
[0075] 為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖及實(shí)施例對(duì)本發(fā) 明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說(shuō)明和解釋本發(fā)明,并不 用于限定本發(fā)明。
[0076] 請(qǐng)見(jiàn)圖1,本發(fā)明針對(duì)傳統(tǒng)網(wǎng)格平行因子分析模型(gridPARAFAC)無(wú)法處理大 規(guī)模、高維度的多維數(shù)據(jù)分析的問(wèn)題,提出了一種有效的基于(圖形處理單元)GPU集群 的多維大數(shù)據(jù)多方式分解方法,即層次化平行因子分析(H-PARAFAC)框架,該框架基于 gridPARAFAC(網(wǎng)格化平行因子分析),包含由一個(gè)粗粒度模型下整合張量子集的過(guò)程以及 細(xì)粒度模型下計(jì)算每個(gè)張量子集和并行融合因子子集的過(guò)程。該框架在由多個(gè)節(jié)點(diǎn)組成的 集群上運(yùn)行,每個(gè)節(jié)點(diǎn)包含多臺(tái)GPU。基于GPU設(shè)備上的張量分解充分應(yīng)用其強(qiáng)大的并行計(jì) 算能力和并行化資源,可以大大減少獲得張量因子的執(zhí)行時(shí)間,提高大規(guī)模數(shù)據(jù)處理能力, 很好的解決計(jì)算資源不足等問(wèn)題。
[0077] 本實(shí)驗(yàn)效果在混合計(jì)算集群上進(jìn)行評(píng)測(cè),該集群由配置了 4個(gè)NVIDIA TeslaC2050顯卡的的兩個(gè)工作臺(tái)組成,執(zhí)行環(huán)境配置如下:
[0078] 操作系統(tǒng)為64位windows2008企業(yè)版,含兩個(gè)Intel Xeon E562002. 40GHZ 的CPU, RAM為24G,在MS STUDIO 2010全優(yōu)環(huán)境下編譯,總線為PCI-E 5. OGbps,網(wǎng)絡(luò)為32Gbps帶 寬傳輸,NVIDIA 含 8 個(gè) Tesla C2050. 448 個(gè) CUDU cores,基頻為 1.5GHZ,標(biāo)準(zhǔn)內(nèi)存 2. 5GB, 內(nèi)存條144GB/S。
[0079] 實(shí)驗(yàn)數(shù)據(jù)采用三維張量,這些張量從基本的稀疏平滑信號(hào)中選出,如整流半波正 余弦信號(hào)。數(shù)據(jù)在三個(gè)維度上的大小一致。大小有300,600,900,1200,1500,1800, 2100,到 2400,一個(gè)張量被分成若干個(gè)K*K*K的網(wǎng)格,K = 2,3,4,5,6,8。
[0080] 本發(fā)明提供的一種基于GPU集群的多維大數(shù)據(jù)因子化方法,包括以下步驟:
[0081] 步驟1 :搭建PARAFAC模型;
[0082] PARAFAC模型基于初始化模型由矩陣A,B,C給出,張量由λ表示,公式如下:
[0084] 步驟2 :搭建網(wǎng)格PARAFAC模型和m-ALS ;
[0085] 網(wǎng)格PARAFAC模型把張量Y看做張量子集的組合:
是張量的η模式內(nèi)積,A ^和 Uw是第N號(hào)張量的第η個(gè)因子,的第i個(gè)數(shù);
[0089] 張量Y的全因子A(1)能用m-ALS從因子子集得到:
[0091] 所有的張量子集首先被傳統(tǒng)ALS方法分解并獲得其因子:
[0093] 中間變量P和Q由張量子集的因子初始化:
[0096] 其中:?表不 Hadmard 積;
[0097] m-ALS具體計(jì)算見(jiàn)公式8-公式11,它通過(guò)梯度代價(jià)函數(shù)最小標(biāo)準(zhǔn)歐式距離從而 連接水平方向的如圖1所示第維度上具有相同坐標(biāo)的矩陣被分到同一塊。在m-ALS 迭代過(guò)程中,就三維數(shù)據(jù)舉例,張量被分成三個(gè)方向,在算第i維度時(shí),張量子集的因子 都能算到,同一塊的張量子集因子組合成At,當(dāng)所有維度都迭代過(guò)一次,因子子集由公式 8-公式11連接:
[0100] 式8中=丸,0代表選擇,式9的矩陣T,S用于式10中最終因子子集的計(jì)算。 L _lw
[0102] 所有因子子集更新后(1從1到Kn),中間張量P和Q也將更新,如式(11),以備下 次迭代;
[0104] 步驟3 :搭建層次化平行因子分析模型H-PARAFAC ;
[0105] 請(qǐng)見(jiàn)圖2,層次化平行因子分析模型H-PARAFAC在由多個(gè)節(jié)點(diǎn)組成的集群上運(yùn)行, 每個(gè)節(jié)點(diǎn)包含多核CPU和多個(gè)GPU;集群為分布式共享系統(tǒng)DSM,節(jié)點(diǎn)間通過(guò)無(wú)線寬帶連接, 通過(guò)MPI彼此反饋,在該集群上運(yùn)行的粗粒度模型管理該計(jì)算進(jìn)程;
[0106] 層次化平行因子分析模型H-PARAFAC含多POSIX線程處理,每個(gè)線程分配一臺(tái) GHJ設(shè)備,并以多共發(fā)CUDA模式給GPU分配數(shù)據(jù)和計(jì)算任務(wù),層次化平行因子分析模型 H-PARAFAC在節(jié)點(diǎn)、設(shè)備和節(jié)點(diǎn)間同步更新數(shù)據(jù);所有的計(jì)算任務(wù)由細(xì)粒度模型在