性能測試|告別卡頓!云端解鎖ParaView并行渲染,千萬級網格模型可視化
ParaView是一款開源的通用數據分析和可視化工具,用于處理各種類型的科學和工程數據集。它可讀取多種數據格式,常見的如VTK、CSV、XDMF等。同時,ParaView也是一個跨平臺的工具,不僅支持Windows、Linux和Mac OS等操作系統,還可以在多種計算機架構上運行,如x86、POWER、ARM等。支持這些并行架構意味著ParaView可以并行處理龐大的數據集,收集各進程上的結果,并將其可視化。在可視化方面,ParaView提供了許多通用的可視化技術用于顯示和分析工程數據集,如切片、等值面、流線、輪廓、高級渲染等。
本文主要介紹 ParaView在SimForge?高性能仿真云平臺上的使用,通過對算例熱點函數的性能加速分析,發現增加GPU數量對數據I/O、數據生成和數據提取操作的并行加速效果非常可觀 。
01 什么是可視化
可視化過程是指將原始數據轉為一種可以直接顯示并且易于理解的形式。這個過程可以幫助用戶更好地理解數據,從而揭示數據背后的隱藏關系。在ParaView中,可視化過程通常包括三個步驟,分別是讀取數據,過濾數據和渲染數據。
讀取數據即是從數據源文件中獲取數據,存儲在ParaView支持的數據類型中。
過濾數據即是根據不同需求對數據進行預處理,常見有以下操作:
1、切片(Slice)
是通過在數據集上切割平面,選擇切割平面的位置和方向,并調整可見的切片厚度來顯示沿著該平面的數據分布。如下圖所示,圖中為某平面上速度的數據分布。
2、等值面(Isosurface)
是將數據集中特定數值的表面提取出來,以顯示數據的連續性或離散性。根據需求,設置不同的等值面數值。如下圖所示。
3、流線(Streamlines)
是根據數據集中的矢量場信息,繪制流線以顯示流體或氣體的流動路徑和速度。可以根據需要調整流線的密度和長度。如下圖所示。
4、高級渲染(Advanced Rendering)
即是提供各種高級的渲染技術,如體繪制、體積渲染、陰影、反射等,以增強可視化效果和表達能力。
02 如何在神工坊平臺上使用ParaView進行并行渲染?
首先,用戶需要在神工坊平臺上運行ParaView實例,具體操作如下圖(點擊登錄SimForge?高性能仿真云)。神工坊目前已經為用戶完成并行運行模式的配置,用戶只需要選擇適合的CPU和GPU數量即可開始體驗。
在渲染上,ParaView實際是 調用了IceT庫實現其并行渲染算法。IceT是一個開源的并行圖像合成庫,主要用于 在大規模并行計算環境中可視化和渲染應用程序。IceT庫提供了高效的并行渲染方法,適用于需要處理大規模數據集的可視化應用程序。ParaView通過庫中sort-last算法進行并行渲染,算法將圖像分割成多個小塊,每個處理器都獨立地渲染它所負責的塊,并生成局部圖像。然后,利用通信庫(MPI)將這些局部圖像組合起來,形成最終的合成圖像。
03 GPU性能加速對比分析
本文通過展示水下機器人算例流場的可視化過程,對GPU性能加速效果進行對比。該算例描繪的是水下機器人在靜水域中,上方四個螺旋槳旋轉引起的流場演化過程。源數據為某時間步,整個流場的速度場。我們對速度場在某一平面進行切片并且疊加上四個螺旋槳的渦量等值面。可視化結果如下圖所示。
上述可視化過程可被抽象為四個部分: 數據I/O、數據生成、數據提取和數據渲染。
圖注: 以1個GPU為例,展示切片過程中每個步驟的耗時。
其中, Execute Slice為數據生成過程,用于計算并存儲在某平面上的數據。 RenderView::Update為數據提取過程,負責提取在這個平面上的數據,提供用于渲染。 Still Render為全分辨率渲染過程。
圖注:在每個處理器上,等值面繪制過程中每個步驟的耗時。
下面將展示不同資源配置下,切片和等值面繪制在數據I/O、生成、提取、渲染上的耗時,從而說明增加GPU對上述四個部分的加速效果。
1、 數據I/O
源數據數據大致為 6000萬網格,大小約2.75G。
下表記錄了 ParaView讀取數據操作耗時,括號內為增加GPU數量的加速比。
GPU數量操作 |
1 |
2 |
4 |
8 |
X3R::RD |
69.23s |
31.60s (119%) |
22.64s(205%) |
12.44s (456%) |
2、數據生成
下表記錄了 切片和等值面繪制的數據生成操作耗時,括號內為隨著GPU數量增多,效率的加速比。
GPU數量操作 |
1 |
2 |
4 |
8 |
Execute Slice |
17.39s |
8.66s(101%) |
4.42s(293%) |
2.17s(701%) |
Execute Contour |
38.42s |
20.23s(89.9%) |
10.15s(377%) |
6.5s(491%) |
3、 數據提取
下表記錄了 切片和等值面繪制的數據生成操作耗時,括號內為隨著GPU數量增多,效率的加速比。
GPU數量操作 |
1 |
2 |
4 |
8 |
Slice Update |
0.661s |
0.363s(82%) |
0.332s(99%) |
0.147s(350%) |
Contour Update |
2.935s |
1.619s(81%) |
1.221s(140%) |
0.843s(248%) |
4、 數據渲染
下表記錄了 數據提取完成后,切片和等值面繪制過程中數據渲染操作耗時。
GPU數量操作 |
1 |
2 |
4 |
8 |
Slice Still Render |
0.22s |
0.28s |
0.25s |
0.34s |
Contour Still Render |
1.05s |
0.88s |
0.9s |
0.98s |
04 結論
綜上所述,通過對這些熱點函數的性能分析,可以看到增加GPU數量對數據I/O、數據生成和數據提取操作的并行加速效果非常可觀。考慮到本次展示的數據集較小,僅為6000萬網格,可以推斷,選用更為精細的數據集則加速效果更為明顯。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















