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

基于Spark的分布式稠密矩陣求逆并行化運(yùn)算方法

文檔序號(hào):9616237閱讀:852來(lái)源:國(guó)知局
基于Spark的分布式稠密矩陣求逆并行化運(yùn)算方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及線性代數(shù)(Linear Algebra)運(yùn)算技術(shù)領(lǐng)域,尤其涉及一種基于一站式大數(shù)據(jù)處理平臺(tái)Spark的分布式稠密矩陣求逆運(yùn)算的分布式并行計(jì)算方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的來(lái)臨,數(shù)據(jù)量得到爆炸性的增長(zhǎng),人們需要計(jì)算與分析的數(shù)據(jù)規(guī)模越來(lái)越大,對(duì)運(yùn)行效率與精度的要求也越來(lái)越高。而在科學(xué)計(jì)算、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等諸多領(lǐng)域,很多問(wèn)題的求解都可以抽象為以矩陣運(yùn)算為核心的一系列操作。然而作為常見(jiàn)的復(fù)雜數(shù)據(jù)計(jì)算與分析任務(wù)的中間計(jì)算步驟,大規(guī)模矩陣的求逆(invers1n)運(yùn)算是一個(gè)非常耗時(shí)的過(guò)程,一個(gè)主要原因是逆矩陣(inverse)中的一個(gè)元素的計(jì)算往往與輸入矩陣中的多個(gè)元素存在相互依賴(lài)關(guān)系。高效的大規(guī)模矩陣求逆運(yùn)算方法可以提高整個(gè)計(jì)算與分析業(yè)務(wù)的效率,節(jié)省經(jīng)濟(jì)成本與時(shí)間成本。
[0003]矩陣運(yùn)算中,求逆運(yùn)算是指求解原方塊矩陣(square matrix)的逆矩陣的運(yùn)算過(guò)程。一個(gè)方陣的逆矩陣指的是和原矩陣做矩陣乘法得到的結(jié)果為單位矩陣(identitymatrix)的矩陣。常見(jiàn)的矩陣求逆方法包括高斯消元法、QR分解法、LU分解法等等。這三種方法中,高斯消元法直接對(duì)輸入矩陣進(jìn)行迭代更新;后兩種方法首先對(duì)輸入矩陣進(jìn)行矩陣分解(factorizat1n),接著利用分解得到的中間結(jié)果繼續(xù)求解最終結(jié)果,這樣可以一定程度上減小計(jì)算的時(shí)間復(fù)雜度,提高運(yùn)算效率。相比其他兩種方法,LU分解法的主要優(yōu)點(diǎn)在于:通過(guò)適當(dāng)?shù)淖冃?,它可以一定程度上消除?jì)算過(guò)程中矩陣各個(gè)元素之間的相互依賴(lài)關(guān)系,通過(guò)“分而治之”的方法將整個(gè)計(jì)算任務(wù)劃分為多個(gè)子計(jì)算任務(wù),再分布到各個(gè)計(jì)算機(jī)上并行計(jì)算,從而極大地提高計(jì)算效率;另一方面受益于能夠多個(gè)節(jié)點(diǎn)并行計(jì)算,這種方法可以處理規(guī)模巨大的矩陣。
[0004]傳統(tǒng)的單個(gè)計(jì)算機(jī)矩陣求逆串行方法由于受到計(jì)算機(jī)有限的內(nèi)存、CPU等計(jì)算資源的制約,存在適用矩陣規(guī)模偏小,擴(kuò)展性差等問(wèn)題,在處理規(guī)模巨大的矩陣時(shí)幾乎無(wú)能為力,無(wú)法滿(mǎn)足人們對(duì)數(shù)據(jù)處理日益增長(zhǎng)的需求。目前處理大規(guī)模矩陣求逆的主流方法有兩類(lèi):一類(lèi)是提高單節(jié)點(diǎn)計(jì)算機(jī)的硬件性能,在“縱向”提高計(jì)算機(jī)處理數(shù)據(jù)的能力,例如基于多核/眾核、GPU計(jì)算等特定架構(gòu)的算法實(shí)現(xiàn);另一類(lèi)通過(guò)分布式計(jì)算平臺(tái)實(shí)現(xiàn)計(jì)算任務(wù)的并行化,通過(guò)增加計(jì)算機(jī)的個(gè)數(shù),在“橫向”上獲得極大的數(shù)據(jù)容量以及強(qiáng)大的計(jì)算能力。前者對(duì)硬件的定制性較強(qiáng);后者可以使用一定數(shù)量的普通計(jì)算機(jī)搭建集群,更具操作性。
[0005]然而,現(xiàn)有的分布式矩陣求逆實(shí)現(xiàn)也存在不足,主要體現(xiàn)在計(jì)算過(guò)程缺少統(tǒng)一的容錯(cuò)機(jī)制,當(dāng)集群上一個(gè)計(jì)算機(jī)發(fā)生錯(cuò)誤后,整個(gè)計(jì)算過(guò)程難以高效地自動(dòng)恢復(fù)繼續(xù)執(zhí)行;運(yùn)算方法的可擴(kuò)展性比較差,即集群的計(jì)算能力與計(jì)算機(jī)的個(gè)數(shù)無(wú)法呈現(xiàn)線性或近似線性的關(guān)系;對(duì)用戶(hù)不友好,無(wú)法作為一個(gè)中間步驟與其他運(yùn)算步驟無(wú)縫整合在一起。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的是:提出一種基于Spark的分布式稠密矩陣求逆操作并行化運(yùn)算方法,能夠處理維數(shù)很大的稠密矩陣,同時(shí)擁有較高的運(yùn)算效率、較好的容錯(cuò)性與可擴(kuò)展性,此外該運(yùn)算能夠與其他運(yùn)算步驟無(wú)縫對(duì)接,對(duì)用戶(hù)充分友好。本發(fā)明針對(duì)的兩個(gè)主要問(wèn)題是:現(xiàn)有的矩陣規(guī)模很大,傳統(tǒng)單個(gè)計(jì)算機(jī)串行運(yùn)算方法不可行;現(xiàn)有的分布式矩陣并行化方案容錯(cuò)性、可擴(kuò)展性較差,并且對(duì)用戶(hù)不友好。
[0007]本發(fā)明的技術(shù)解決方案是:基于Spark分布式處理平臺(tái),利用LU分解法實(shí)現(xiàn)分布式矩陣求逆操作的并行化。采用此方法,用戶(hù)首先把待處理的矩陣放置于分布式文件系統(tǒng)中,以供集群中所有的計(jì)算機(jī)共同訪問(wèn)?;赟park分布式處理平臺(tái)的分布式矩陣求逆的并行化方案包括下面步驟:
(1)對(duì)輸入矩陣進(jìn)行分布式稠密矩陣的LU分解運(yùn)算,得到結(jié)果<L,U,P>,其中L為下三角矩陣,U為上三角矩陣,P為分解過(guò)程中產(chǎn)生的置換矩陣;
(2)利用分布式三角矩陣的求逆算法,分別計(jì)算得到分布式下三角矩陣L以及分布式上三角矩陣U的逆矩陣;
(3)利用(1)中得到的置換矩陣以及(2)中得到的兩個(gè)三角矩陣的逆矩陣,實(shí)施矩陣乘法操作,得到任意輸入分布式矩陣的逆矩陣。
[0008]上述第一步“分布式矩陣LU分解”階段的工作流程是:首先對(duì)于存儲(chǔ)在分布式文件系統(tǒng)上的行矩陣,按照指定的分塊大小,將分布式行矩陣轉(zhuǎn)化為分布式分塊矩陣,各個(gè)分塊均勻地分布在集群中各個(gè)計(jì)算機(jī)上。然后根據(jù)矩陣主對(duì)角線上分塊的個(gè)數(shù),確定并行化LU分解迭代計(jì)算過(guò)程所需要的迭代次數(shù)。接著在每一輪迭代過(guò)程中,在主對(duì)角線上尋找本次迭代過(guò)程中的“主分塊”,對(duì)該分塊進(jìn)行單節(jié)點(diǎn)的串行LU分解算法,并把分解得到的結(jié)果廣播到集群所有其他計(jì)算機(jī)上。每個(gè)計(jì)算機(jī)再利用廣播得到的結(jié)果更新節(jié)點(diǎn)本地?fù)碛械牟糠址謮K。每次迭代完成后,當(dāng)前工作集也就是仍需要繼續(xù)計(jì)算更新的分塊數(shù)目越來(lái)越少,這部分分塊組成的子矩陣作為下一輪迭代的輸入矩陣。最后當(dāng)所有的迭代完全結(jié)束,就完成了對(duì)原輸入矩陣的LU分解,得到分布式下三角矩陣L,分布式上三角矩陣U,以及一個(gè)置換矩陣P。
[0009]第二步“計(jì)算上(下)三角矩陣的逆矩陣”階段的工作流程是:對(duì)于從第一步得到的兩個(gè)分布式上(下)三角稠密矩陣,首先判斷矩陣的維數(shù)是否足夠的小(一般低于1000),如果規(guī)模足夠小可以直接在計(jì)算機(jī)本地進(jìn)行串行求逆運(yùn)算求出其逆矩陣;否則,對(duì)三角矩陣?yán)^續(xù)陣進(jìn)行劃分,得到兩個(gè)子三角矩陣和一個(gè)“矩形”的子矩陣。接著使用“分而治之”的思想,對(duì)這兩個(gè)子三角矩陣分別遞歸求解它們的逆矩陣。然后使用得到的逆矩陣,更新剩下的矩形的子矩陣。最后合并結(jié)果得到原輸入上(下)三角矩陣的逆矩陣。
[0010]第三步“分布式矩陣乘法”階段的工作流程是:首先對(duì)每一個(gè)分塊根據(jù)它的標(biāo)識(shí)號(hào),算出這個(gè)分塊最終會(huì)在乘積矩陣的哪個(gè)分塊中被使用到;然后把集群上所有的分塊全部打亂(shuffl e ),通過(guò)定制的哈希函數(shù)控制每個(gè)分塊在集群節(jié)點(diǎn)上的分布,把結(jié)果矩陣的一個(gè)分塊所依賴(lài)的所有輸入分塊全部發(fā)布到同一個(gè)計(jì)算機(jī)上;接著每個(gè)節(jié)點(diǎn)并行地計(jì)算乘積矩陣中的一個(gè)或多個(gè)分塊,得出最終的乘積矩陣。
[0011 ] 本發(fā)明的有益效果是:(1)針對(duì)分布式分塊矩陣,通過(guò)對(duì)LU公式進(jìn)行變形,消除分塊矩陣各個(gè)分塊之間計(jì)算過(guò)程中的相互依賴(lài)關(guān)系,在每一輪的迭代過(guò)程中計(jì)算可以并行地完成,提高運(yùn)算效率。(2)在迭代計(jì)算過(guò)程中,通過(guò)不斷縮小當(dāng)前工作集的規(guī)模來(lái)不斷減小待處理的數(shù)據(jù)量,減少不必要的中間結(jié)果的數(shù)量,以減少計(jì)算機(jī)內(nèi)存的使用空間。(3)針對(duì)分布式三角矩陣,使用遞歸的思想將原來(lái)規(guī)模過(guò)于巨大的規(guī)模降解為規(guī)模較小的子矩陣,在多個(gè)計(jì)算機(jī)的CPU上并行地處理,從而對(duì)超大規(guī)模的三角矩陣求逆。(4)基于Spark分布式處理平臺(tái),整個(gè)計(jì)算過(guò)程擁有良好的容錯(cuò)性。即使集群中一個(gè)計(jì)算機(jī)發(fā)生錯(cuò)誤,仍可以快速的恢復(fù)錯(cuò)誤繼續(xù)進(jìn)行計(jì)算任務(wù)。
【附圖說(shuō)明】
[0012]圖1是本發(fā)明的整體處理流程示意圖;
圖2是本發(fā)明的分布式矩陣LU分解流程示意圖;
圖3是本發(fā)明的分布式三角矩陣求逆流程示意圖;
圖4 (A)是本發(fā)明的數(shù)據(jù)可擴(kuò)展性示意圖,圖4 (B)是本發(fā)明的節(jié)點(diǎn)可擴(kuò)展性示意圖。
[0013]具體的實(shí)施方式
如圖1所示,本發(fā)明的實(shí)施是通過(guò)將分布式文件系統(tǒng)中的分布式行矩陣轉(zhuǎn)換為分布式分塊矩陣,運(yùn)行分布式分塊矩陣的LU分解并行化算法,接著對(duì)分解結(jié)果中的分布式上三角矩陣和分布式下三角矩陣分別運(yùn)行求逆的并行化算法求出它們的逆矩陣,然后利用原來(lái)LU分解得到的置換矩陣以及求得的兩個(gè)三角矩陣的逆矩陣,運(yùn)行分布式矩陣乘法,得到最終的結(jié)果,即原輸入矩陣的逆矩陣。
[0014]本發(fā)明的完整流程包括分布式稠密矩陣的LU分解、分布式三角矩陣(即為權(quán)利要求所述的上三角矩陣和下三角矩陣)的求逆和分布式矩陣的乘法3個(gè)部分。具體的實(shí)施方式分別說(shuō)明如下:
分布式稠密矩陣的LU分解的【具體實(shí)施方式】為:首先從分布式文件系統(tǒng)中按行讀取出矩陣,每一行的格式為:〈rowNumber: elementl, element2…〉,其中rowNumber指的是當(dāng)前這一行在矩陣中的行數(shù),element指這一行的所有元素。從分布式行矩陣生成分布式分塊矩陣的關(guān)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鄂托克前旗| 许昌市| 阿克陶县| 灵寿县| 阿拉尔市| 崇阳县| 崇左市| 横峰县| 永济市| 连云港市| 临高县| 湘潭县| 建阳市| 泾川县| 新竹县| 镇坪县| 万山特区| 德格县| 山西省| 和田县| 杨浦区| 清河县| 元朗区| 耒阳市| 永兴县| 龙胜| 吉隆县| 手游| 林甸县| 鄯善县| 武平县| 上饶市| 乌拉特后旗| 岳普湖县| 黄大仙区| 太原市| 平塘县| 葵青区| 宁都县| 齐河县| 吉林省|