劉鶴年
摘要:在光線跟蹤算法中,傳統上通過像素遞歸深度對場景進行劃分,然后必須每一個任務分配一個GPU服務器節點服務器,但是這種靜態任務分配的算法在虛擬化環境中沒辦法實現對GPU資源的有效利用,而且一旦有服務器節點宕機就會導致場景繪制失敗。對此,提出一種基于hash思想的解決方案,有效的解決該問題。
關鍵詞:實時場景繪制;hash算法;集群
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2018)02-0127-02
在三維場景繪制領域中已有的負載均衡策略有PBT樹的自適應劃分算法[1]和基于像素開銷[2]以及按像素遞歸深度對場景進行劃分[3]的方法。但是這些方式都沒有解決集群中的宕機問題。因此本文采用hash的方式解決在三維場景繪制的過程中出現服務器節點宕機的情況。
1 總體框架
在任務劃分上本算法采用按像素遞歸深度[3]對場景進行劃分,然后通過數據傳輸將劃分好的場景發送給GPU集群。本文主要研究的是GPU集群的資源調度方案。通過本算法的資源調度本文優化了實時場景繪制的速度并解決了GPU集群中有服務器節點出現宕機的問題,如圖1所示。
2 算法原理
為了能夠更有效的分配GPU集群的計算節點,本算法將引入一個足夠大的Hash空間,如果hash空間太小,容易在映射時發生沖突,所以將這個用來映射的hash空間大小定為0~232。為了更好的描述本算法,可以將hash空間想象成一個首位相連的圓環。然后將服務器服務器節點也映射到同一個hash空間中。
使用A,B,C和D四臺服務器服務器節點,將服務器節點映射到hash空間中,以對應的hash值排列。
使用MD5算法作為服務器節點的hash算法,并使用機器名作為機器IP地址作為hash輸入。
將服務器節點和繪制任務都映射到hash空間之后,繪制任務順時針方向尋找最近的服務器節點,這樣就將服務器節點和繪制任務對應起來。
3 服務器節點宕機情況處理
當服務器節點B出項宕機情況導致繪制失敗的時候,受到影響的是沿著B逆時針遍歷到下一個節點之間的繪制任務。
因此這里僅需變動任務1,將任務1重新映射到C就可以,如圖2所示。
此時并沒有進行任務的重新劃分,任務依舊是4個,只不過將其中兩個任務分配給了同一個服務器節點。因此場景繪制不會因其中一個服務器節點的宕機而導致繪制失敗。
4 平衡性處理
因為實時場景的繪制的最終效果依賴繪制最慢的服務器節點。為了使場景的繪制任務能夠均勻的映射到服務器節點上,引入了“虛擬服務器節點”的概念,一個服務器節點對應多個“虛擬服務器節點”。
節點A1,A2代表了A,D1和D2代表了D,如圖3所示。
實際上任務1和任務2被分配到了A上進行計算,任務3和任務4被分配到D上進行了計算;
5 實驗結果
本文使用的集群是通過4臺微機進行每臺配置為:Intel(R)Xeon(R)E3-1255v3CPU,4GB主存,NVQuadroK600GPU。編譯環境為:win1064位操作系統,VS2013、OptiX3.8.0、CUDA7.5。
經過測試該算法可以很好的對任務進行分配,而且在任務分配過程中出現服務器宕機的情況也可以很好的進行處理,而且不影響任務分配的情況。
參考文獻
[1]任崇輝.基于GPU的高真實感集群渲染系統[D].杭州:浙江大學,2011.
[2]梁鮮,曲福恒,楊勇,等.基于加權處罰的K-均值優化算法[J].長春理工大學學報:自然科學版,2015,38(4):132-137.
[3]蔣聰,陳純毅.基于手勢的交互式三維場景并行光線跟蹤繪制研究[J].長春理工大學學報(自然科學版),2016,(2):90-97.
[4]孔令德.計算機圖形學基礎教程[M].北京:清華大學出版社,2008.
[5]Alan Chalmers,Erik Reinhard.Pratical parallel rendering[M].A.K.Peters,Ltd.,2002:20-35.