專利名稱:一種Delaunay三角網(wǎng)并行構建方法
技術領域:
本發(fā)明屬于計算 機網(wǎng)絡技術領域,涉及一種Delaunay三角網(wǎng)并行構建方法。該方 法可以充分利用計算節(jié)點資源,將Delaunay三角網(wǎng)構建過程最大并行化,取得了比較好的 效果。
背景技術:
在過去十幾年的時間內(nèi),國內(nèi)外的眾多學者和專家在Delaunay三角網(wǎng)構建方法 上已提出許多有效的算法。一般可以將各種三角網(wǎng)算法分為逐點插入算法、三角網(wǎng)生長法 和分治算法。逐點插入算法最壞情況下的時間復雜度是0 (N2)。但是,若點是隨機插入的話, 其性能將能達到O(NlogN)。但由于算法過程需要排序,其時間復雜度不能進一步改進。分 治算法的效率很高,最壞情況下的時間復雜度都能達到0 (NlogN),最好情況下其性能甚至 能達到O(NloglogN)。生長算法的效率最差,性能最高也只能達到O (Nv2)。隨著國內(nèi)外研究的不斷深入和需求的不斷提升,特別是在大規(guī)模場景渲染和地形 可視化等領域中,為了進一步提高Delaunay三角網(wǎng)的構網(wǎng)速度,很多人采取混合Delaunay 三角網(wǎng)構建方法。目前研究較多的合成算法是把逐點插入法植入到分治方法中。但是由于 三角網(wǎng)生長方法在點集較小時也具有比較好的性能,所以當前在子三角網(wǎng)構建時采用三角 網(wǎng)生長方法的研究也開始出現(xiàn)。盡管經(jīng)過多年的研究,Delaunay三角網(wǎng)的構建速度已經(jīng)有了很大的提高。但是對 于大數(shù)量的建模,單機構網(wǎng)速率仍然非常有限,部分研究開始考慮在分治方法的基礎上對 構網(wǎng)過程進行并行處理,將大量的計算分給多個處理器來處理,從而達到提高算法運算速 度的目的。傳統(tǒng)的Delaunay三角網(wǎng)并行構建系統(tǒng)結構有兩種對等式結構和主從式結構,如
圖1所示。對等式結構(如圖1(a)所示)存在一定的缺陷,主要體現(xiàn)在系統(tǒng)中的每一個 計算節(jié)點都要同時具有動態(tài)管理和計算的功能,并且各個節(jié)點都會與其他節(jié)點持續(xù)保持數(shù) 據(jù)交換,通信開銷較大,管理相對分散,軟件開發(fā)實現(xiàn)難度大。主從結構模式(圖1(b))雖 然解決了對等式結構的缺陷,但是又引入了新的問題,主要體現(xiàn)在以下幾點(1)主機主要 工作任務是資源的管理、并行計算任務的發(fā)起和節(jié)點計算結果的匯總,并沒有充分利用其 資源;(2)所有任務劃分、分配、匯總都由主機來完成,沒有將這些過程充分并行化;(3)葉 子節(jié)點除了與主機進行通信外,還需要與其他葉子節(jié)點進行通信,通信開銷沒有降到最小。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種Delaunay三角網(wǎng)并行構建方法。本發(fā)明經(jīng)過對 Delaunay三角網(wǎng)構建算法、并行計算理論以及網(wǎng)絡通信方式等知識的研究,借鑒各種結構 和思想的優(yōu)點,提出了本發(fā)明的方法;該方法將任務的劃分、分配和合并過程在每個非葉子 計算節(jié)點上進行,既減輕了主機的瓶頸效應,又能夠將分割和合并操作并行化,大大地提高 了 Delaunay三角網(wǎng)并行構建速度。并且每層計算節(jié)點之間無需通信,在一定程度上減少了通信開銷。
本發(fā)明方法涉及的主要內(nèi)容包括
1.多叉樹式并行計算結構
多叉樹式并行結構是以主從結構為基礎,動態(tài)添加計算節(jié)點的網(wǎng)絡計算結構。其 三層計算結構如圖2所示,該結構與傳統(tǒng)的主從結構模式的不同點在于
1)傳統(tǒng)的主從模式結構下,主機主要工作任務是資源的管理、并行計算任務的發(fā) 起和節(jié)點計算結果的匯總。但多叉樹式并行計算結構中的主機還將負責部分子任務的計算 工作,充分地利用了主機的資源。
2)傳統(tǒng)的主從模式結構下,除了主機之外,所有的計算節(jié)點都是葉子節(jié)點,不存在 非葉子節(jié)點。但多叉樹式并行計算結構中有非葉子節(jié)點,每個非葉子節(jié)點的工作內(nèi)容是任 務劃分和分配,逐點插入法構建三角網(wǎng)、子節(jié)點的三角網(wǎng)和自身節(jié)點三角網(wǎng)的合并以及將 合并結果返回給父親節(jié)點。
3)傳統(tǒng)的主從模式結構下,葉子節(jié)點除了與主機進行通信外,還需要與其他葉子 節(jié)點進行通信。但多叉樹式并行計算結構中,葉子節(jié)點之間不需要進行通信,只需要與其父 節(jié)點進行通信即可。同時非葉子節(jié)點也不需要與其同層次的非葉子節(jié)點之間通信,它也只 需要與其子節(jié)點和父親節(jié)點進行通信。
4)傳統(tǒng)的主從模式結構是靜態(tài)的,而多叉樹式并行計算結構是動態(tài)構成的,節(jié)點 之間的父子關系是可變的。
2.主機及計算節(jié)點工作流程
主機節(jié)點的功能主要有4個方面
1)維護計算節(jié)點狀態(tài)信息;狀態(tài)信息的數(shù)據(jù)結構如圖6所示;
2)構建一部分數(shù)據(jù)的三角網(wǎng);
3)發(fā)送點集數(shù)據(jù)(用于構建三角網(wǎng)的采樣點數(shù)據(jù)信息,即輸入數(shù)據(jù))給空閑的計 算節(jié)點,并收集合并計算節(jié)點的構建結果。
4)根據(jù)合并的構建結果繪制三角網(wǎng);
其工作流程如圖3所示。具體步驟闡述如下
步驟1 主機在接受輸入的點集數(shù)據(jù)以后,首先判斷該點集的數(shù)據(jù)點數(shù)目是否超 過閾值,如果不超過給定閾值,則直接進行三角網(wǎng)構建并進行步驟6 ;
步驟2 如果輸入的點集中數(shù)據(jù)點的數(shù)目超過了給定的閾值,則需要獲取當前網(wǎng) 絡中可用的節(jié)點數(shù)目n,并判斷輸入的點集中數(shù)據(jù)點的數(shù)目是否超過了 η*給定閾值,如果 不超過η*給定閾值,直接進行步驟3 ;如果超過η*給定閾值,即輸入點集規(guī)模超過了當前 網(wǎng)絡的處理能力,則需要將輸入點集進行分割,保留η*給定閾值數(shù)量的數(shù)據(jù)點,進行步驟 3 ;
步驟3 將輸入點集分割成兩份,當前節(jié)點保留一份,將另一份分配給其子節(jié)點; 重復該步驟直到網(wǎng)絡中每個節(jié)點所處理的點集中數(shù)據(jù)點數(shù)量都小于給定閾值;
步驟4 每個節(jié)點中進行三角網(wǎng)構建;該過程并行執(zhí)行;
步驟5 每個父節(jié)點接受其子節(jié)點所構建的三角網(wǎng)并對其進行正確合并;
步驟6 繪制所構建的三角網(wǎng),程序結束。
非葉子節(jié)點的功能主要有5個方面5
1)接收父節(jié)點分配的點集數(shù)據(jù);
2)將點集數(shù)據(jù)分割后,將其中一部分分配給空閑的計算節(jié)點;
3)構建一部分數(shù)據(jù)的三角網(wǎng);
4)收集合并各子計算節(jié)點的構建結果;
5)將合并后的結果數(shù)據(jù)發(fā)送給父節(jié)點。
葉子計算節(jié)點的功能主要有3個方面
1)接收父節(jié)點分配的點集數(shù)據(jù);
2)逐點插入串行構建三角網(wǎng);
3)將三角網(wǎng)構建結果數(shù)據(jù)發(fā)送給父節(jié)點。
盡管運行在非葉子節(jié)點和葉子節(jié)點上的程序功能有所差異,但是其程序是一樣 的,只因為點集數(shù)量與閾值之間的不同大小關系形成了不同分支而已。并且本文的節(jié)點網(wǎng) 絡結構是動態(tài)的,所有的計算節(jié)點有可能成為葉子節(jié)點,也有可能成為非葉子節(jié)點。其工作 流程如圖4所示。具體步驟如下
步驟1 接受父節(jié)點所分配的點集數(shù)據(jù);
步驟2 當前節(jié)點判斷所處理的點集中的數(shù)據(jù)點是否超過給定閾值,若超過給定 閾值,則對點集進行分割,當前節(jié)點保留一份,將另一份分配給其子節(jié)點;該步驟重復進行, 直到當前節(jié)點所處理的點集中數(shù)據(jù)點的數(shù)量不超過給定閾值;若不超過給定閾值,則直接 進行步驟3 ;
步驟3:構建三角網(wǎng);
步驟4 判斷當前節(jié)點是否為葉子節(jié)點,若為葉子節(jié)點,直接進行步驟5 ;否則,接 受并合并當前節(jié)點的所有子節(jié)點所構建的三角網(wǎng);
步驟5 將所構建的三角網(wǎng)返回給當前節(jié)點的父節(jié)點,程序結束。
3.任務劃分策略
并行計算方法應當保證點集分割后的每個區(qū)域的點數(shù)量大致相當,否則很難做到 負載均衡。傳統(tǒng)的分治算法進行分割時,是采取按照X坐標值或者y坐標值等分區(qū)域的做 法,當點分布不均勻時,這種方法很難保證分割后每個子區(qū)域點數(shù)量大致相當。本文采取的 方法則是按照點的數(shù)量嚴格進行分割。具體的分割方法首先是根據(jù)并行系統(tǒng)中計算節(jié)點的 數(shù)量來確定一次并行算法能夠處理的點數(shù)據(jù)總量。也就是說若系統(tǒng)中有N個節(jié)點,且分割 閾值是P的話(分割閾值P是指系統(tǒng)中每個節(jié)點能夠處理的最大數(shù)據(jù)量),那么一次并行構 網(wǎng)所能處理的最多點數(shù)據(jù)量為N*P個。由于點數(shù)據(jù)集在進行分割之前已經(jīng)進行了排序預處 理,且排序之后的點存儲在向量數(shù)組vector中,而vector是可以通過下標進行訪問的。所 以每次分割的時候,就可以通過當前點數(shù)據(jù)集范圍的最小下標和最大下標的中間值來確定 分割點,將會非常精確。另外每次分割的初始值都是N*P,所以經(jīng)過精確分割后,最終每個計 算節(jié)點所得到的計算量都會在P左右,這就很好的控制了負載均衡。
4.閾值選擇策略
分治算法的時間復雜度模型如下
T (η) = 2Τ (η/2) +η
逐點插入算法的時間復雜度為0(η2),設分割閾值為Φ,那么可以計算出分割次數(shù) λ = 10 (n/Φ),即分治算法的時間復雜度模型最多只能迭代λ次,最后可得分治逐點插入算法的時間復雜度如下。T(η, Φ) = ηλ +2λΤ(Φ)(1)進一步求解得Τ(η, Φ) = η1οδ2(η/Φ) + (η/Φ)0(Φ2) (2)對⑵式進行一定的變換,可以得式子Τ(η,Φ) = η1ο&η+η(0(Φ)-1ο&Φ)(3)設0( Φ) = kcK對(3)式在Φ方向求偏導后得式子
權利要求
1.一種Delaimay三角網(wǎng)并行構建方法,其步驟為1)主機節(jié)點接收到輸入的點集數(shù)據(jù)后,判斷該點集數(shù)據(jù)是否超過設定閾值P,如果超 過閾值P,則進行步驟2),否則直接進行三角網(wǎng)構建并繪制所構建的三角網(wǎng);2)主機節(jié)點獲取當前網(wǎng)絡中可用的節(jié)點數(shù)目n,并判斷該點集數(shù)據(jù)是否超過nXP,如 果未超過則進行步驟3);否則保留該點集數(shù)據(jù)中nXP個數(shù)據(jù)點,進行步驟3);3)主機將該點集數(shù)據(jù)分成兩份,主機節(jié)點保留一份,將另一份分配給其子節(jié)點;4)主機節(jié)點及其子節(jié)點分別判斷分配給自己的數(shù)據(jù)是否超過設定閾值P,如果未超過 則進行步驟5);如果超過則將分配給自己的數(shù)據(jù)分為兩份,自己保留一份,將另一份分配 給其子節(jié)點,直到網(wǎng)絡中每個節(jié)點所處理的數(shù)據(jù)點數(shù)量都未超過閾值P ;5)每個節(jié)點分別對其最終所留數(shù)據(jù)進行三角網(wǎng)構建;6)葉子節(jié)點將所構建的三角網(wǎng)發(fā)送給其父節(jié)點,父節(jié)點對其子節(jié)點的三角網(wǎng)進行合并 后的三角網(wǎng)發(fā)送給其父節(jié)點,直到主機節(jié)點;7)主機節(jié)點對自己所建三角網(wǎng)以及收到的三角網(wǎng)進行合并。
2.如權利要求1所述的方法,其特征在于每一父節(jié)點分別維護一個棧來管理其子節(jié) 點,該棧內(nèi)信息包括節(jié)點標識號。
3.如權利要求2所述的方法,其特征在于父節(jié)點進行三角網(wǎng)合并的方法為1)父節(jié)點接收其子節(jié)點所生成的三角網(wǎng)數(shù)據(jù),如果父節(jié)點正在進行合并操作,則將該 子節(jié)點的合并任務放入父節(jié)點的等待列表中;否則進行步驟2);2)父節(jié)點判斷該子節(jié)點的標識號是否與棧頂元素相同,若不同,則將該子節(jié)點的合并 任務放入等待列表中;否則,進行步驟3);3)將子節(jié)點返回的三角網(wǎng)與父節(jié)點所生成的三角網(wǎng)進行合并,同時彈出棧頂元素;4)父節(jié)點檢查棧是否為空,若為空則合并結束;否則進行步驟5);5)父節(jié)點檢查合并任務等待列表是否為空,若為空則合并結束;否則進行步驟6);6)父節(jié)點取出等待隊列中的合并子任務,按照步驟2) 5)進行合并直到任務等待列 表為空。
4.如權利要求2或3所述的方法,其特征在于所述標識號為節(jié)點的IP地址。
5.如權利要求1所述的方法,其特征在于父節(jié)點分配點集數(shù)據(jù)時,對分給其子節(jié)點的 數(shù)據(jù)保留一數(shù)據(jù)副本,并記錄該子節(jié)點的標識號;然后將其子節(jié)點的標識號與分給該子節(jié) 點的數(shù)據(jù)區(qū)域號進行綁定。
6.如權利要求5所述的方法,其特征在于每個計算節(jié)點分別在設定時間間隔t內(nèi)向主 機及其父節(jié)點發(fā)送心跳信息;當父節(jié)點在設定時間T內(nèi)沒有收到某子節(jié)點的心跳消息,則 父節(jié)點將其確定為故障節(jié)點,父節(jié)點查詢本地保存的區(qū)域分配信息,根據(jù)故障節(jié)點標識號 找出需要重新構建的數(shù)據(jù)點集;然后向主機申請空閑計算節(jié)點,若申請到空閑節(jié)點,則父節(jié) 點分割此塊數(shù)據(jù),并將其中一部分發(fā)送給新申請到的節(jié)點,否則另啟一線程在本地對需要 重新構建的數(shù)據(jù)點集三角網(wǎng)構建。
7.如權利要求6所述的方法,其特征在于當故障節(jié)點為非葉子節(jié)點時,主機停掉故障 節(jié)點及其所有子節(jié)點的工作,并將它們都設置成“閑”和“未分配”狀態(tài)。
8.如權利要求1或2或3或5或6或7所述的方法,其特征在于所述點集數(shù)據(jù)存儲于 已向量數(shù)組中,父節(jié)點根據(jù)點集數(shù)據(jù)的最小下標和最大下標的中間值對所述點集數(shù)據(jù)進行劃分。
9.如權利要求1或2或3或5或6或7所述的方法,其特征在于計算所述閾值P的方 法為Ρ = ;,其中,k為環(huán)境因素參量。 km2
10.如權利要求1或2或3或5或6或7所述的方法,其特征在于所述三角網(wǎng)的構建方 法為逐點插入三角網(wǎng)構建方法。
全文摘要
本發(fā)明公開了一種Delaunay三角網(wǎng)并行構建方法,屬于計算機網(wǎng)絡技術領域。本方法為主機節(jié)點判斷輸入點集數(shù)據(jù)是否超過設定閾值P,如果超過則獲取可用的節(jié)點數(shù)目n;如果該點集數(shù)據(jù)超過n×P,則保留該點集數(shù)據(jù)中n×P個數(shù)據(jù)點;將該點集數(shù)據(jù)分成兩份,自己保留一份,另一份分給其子節(jié)點;主機節(jié)點及其子節(jié)點分別判斷分給自己的數(shù)據(jù)是否超過設定閾值P,如超過則繼續(xù)進行分配,直到每個節(jié)點的數(shù)據(jù)點都未超過閾值P,如未超過則每個節(jié)點對其最終所留數(shù)據(jù)進行三角網(wǎng)構建;葉子節(jié)點將所構建的三角網(wǎng)發(fā)送給其父節(jié)點進行合,直到主機節(jié)點;主機節(jié)點對自己所建三角網(wǎng)以及收到的三角網(wǎng)進行合并。本發(fā)明充分利用計算節(jié)點資源,將三角網(wǎng)構建過程最大并行化。
文檔編號H04L29/08GK102045196SQ201010578848
公開日2011年5月4日 申請日期2010年12月8日 優(yōu)先權日2010年12月8日
發(fā)明者余杰, 呂品, 張潔, 鄭昌文 申請人:中國科學院軟件研究所