江時俊 王 浩 董增川 王 敏
(1.河海大學水文水資源學院 南京 210098 2.黃河水利科學研究院 鄭州 450003)
水是地球上最常見的流體,是水動力學數值模擬領域的研究重點,隨著數值模擬技術維度與精度的不斷提高,計算過程中將產生海量時空分布數據。作為科學計算可視化的一個特定領域,流場可視化在河流、湖泊、海洋等工程實踐中具有十分重要的作用。流場可視化通過對海量數據中特征數據如水位、流量及流速(含大小及方向)等提取,以靜態如水面線或動態如淹沒范圍圖像的形式顯示變量的時空分布信息,以最直觀的方式幫助科研工作者理解、分析并發現隱藏在這些數據中的水流運動規律。
隨著水流數值模擬技術的發展和工程應用的不斷深入,現階段水流數值模擬大致可劃分為宏觀大范圍河流模擬,以及微觀高維度水流結構模擬兩個方面。一方面,為研究大型河流與湖泊水沙交換機制,或分析評價大型水利工程興建對河勢的影響,需開展大范圍數學模型計算,例如我國長江水沙調控和黃河調水調沙試驗,其河道計算長度通常在700~800km;我國黃土高原地區的流域水文模型,也需要開展大尺度河網模擬工作。另一方面,科研工作者對微觀尺度的水沙輸移基本理論的關注度也越來越高,例如通過大渦模擬(LES)或直接數值模擬(DNS)研究水流紊動對不平衡輸沙的影響;泥沙輸移與污染物粒子吸附、分解、絮凝的關系。
宏觀與微觀數值模擬都必將產生大規模的流場數據,而且隨著水流動力學模型應用的不斷深化,此類計算數據的規模還將繼續增大。海量數據可視化的一個有效解決方法是對數據進行分布式并行處理。主要分為后處理和實時處理模式,目前在流場可視化的應用中,基于GPU 或者是基于CPU+GPU的后處理并行較為成熟,原位并行可視化在天氣預報、地震、燃燒等領域有部分應用,但在流場可視化的應用上較少。根據并行可視化實現層次的不同,并行可視化可分為多核并行、多處理器并行、大規模集群或分布式并行。其中大規模集群或分布式并行能處理的數據量最大,本文只討論該層次的并行可視化。
傳統的流場可視化普遍采用后處理模式,后處理模式流程如圖1 所示,圖中數據集是流場數值模擬計算結果的數據集,因數據規模較大,通常存放在磁盤中,后處理模式的可視化過程與數值模擬計算過程相互獨立運行,后處理模式需等待數值模擬計算完成后,再從磁盤讀取數據進行可視化處理。

圖1 后處理模式流程圖
由于后處理可視化模式下數值模擬與可視化的邏輯關系,該模式存在兩個突出問題:(1)模擬獲得的大規模數據必須在時間及空間上進行抽析后才能匹配有限的存儲能力,過程中大量有效數據被過濾,極大影響了可視化的數據完整性;(2)磁盤讀寫性能有限,大規模數據在調度及傳輸等操作過程中會耗費大量的系統資源和處理時間,可視化效率大打折扣。
針對上述的兩個突出問題,后處理并行可視化隨著CPU 和GPU 分布式并行技術的發展得以出現。其中,基于CPU 并行的可視化充分利用集群計算機的處理能力,將大規模數據的并行處理分配到不同的計算節點上。后處理并行可視化流程,需要經歷數據組織與劃分,并行可視特征計算,以及并行繪制與圖像合成三個階段。各節點同時對不同數據塊執行相同的任務,任務執行完成后,再將所有節點所產生的子結果整合,形成最終結果。
傳統的GPU 只完成圖像的繪制和渲染,隨著圖形處理器的不斷更新換代,由CPU 完成的部分計算工作也可移植到GPU 完成。基于GPU 的并行可視化在計算結構、地形仿真等方面都有廣泛的應用。自NVIDIA 推出統一計算設備架構,即CUDA(Comp uteUnifiedDeviceArchitecture)架構以來,以CUDA 為基礎的并行可視化在大規模數據渲染方面應用更加廣泛。
隨著GPU 在通用計算領域的日趨成熟,CPU 與GPU 在線程設計、處理器、帶寬和緩存等方面有各自的優勢和特點,為了充分利用CPU 和GPU 各自的優勢,出現了CPU 和GPU 混合并行可視化的方式。其中CPU 負責數值計算和可視計算,將計算結果傳遞給GPU,由GPU 負責可視化繪制工作。
對于大規模數據流場后處理的并行可視化,針對不同網格類型和精細程度,存在不同的的可視化算法。其次對于流場數據而言,可視化細分為標量場和矢量場,不同的變量存在不同的渲染和繪制方法。
為了突破大規模數據可視化過程中的數據I/O瓶頸,同時在流場計算過程中對數值計算進行實時跟蹤可視化,原位可視化逐漸得以發展。
圖2 顯示了后處理可視化與原位可視化的區別。原位可視化通過對可視化數據壓縮、特征提取之后,存儲所有時間步長的計算結果,突破了后處理可視化“先計算、后處理”的強制模式,將計算與可視化處理緊密結合,計算結果可以直接在模擬所在的計算節點原位可視化處理成圖片或提取特征數據,從而大幅減少存儲與傳輸的數據量。

圖2 可視化模式圖
隨著磁盤讀寫性能與計算能力之間的差異進一步擴大,后處理并行可視化挖掘動力不足,原位可視化在解決數據生產速度、復雜度和精度的優勢受到了國內外學者的高度重視。
原位可視化按照數值模擬與可視化發生節點位置可劃分為緊耦合、松耦合和混合三種模式。緊耦合模式下,數值模擬和可視化在相同的計算節點上運行,通過內存共享數據;緊耦合模式雖靈活性較好,但內存開銷較大。ParaView 通過使用Catalyst 插件實現了緊耦合原位可視化;松耦合模式下,數值模擬和可視化處理在不同的節點上運行,通過推送或抽取方式進行數據通信;混合模式在松耦合模式的基礎上,將部分計算量不大的數據處理操作放在計算節點上,處理后的數據傳至可視化節點,進而實現數據可視化。
原位可視化主要包括數據組織與壓縮、特征數據提取與跟蹤以及數據可視化繪制三個步驟:
大規模水流數據中需要可視化的變量有水位、流量和流速等,其中水位、流量為標量數據,流速為矢量數據。標量、矢量數據的可視化算法不同,對應的數據存儲結構也不相同。
根據水流數據的時空分布特點,研究原位待處理數據的壓縮方法,有效減少待處理的數據量,可克服數據生成、存儲及網絡傳輸過程中的瓶頸問題,Tu 等在分布式并行環境下實現了PDE 數值計算的網格生成、解算、結果數據體繪制和圖像合成,所有類型的計算均建立在同一套并行八叉樹數據結構上,不需在內存中拷貝與轉換數據。
原位特征提取是更為顯著的數據精簡方法,特征通常是借助領域知識從原始數據中分離得到的子集,它代表一個特定的物理結構、模式或感興趣的事件,如漩渦、激波、渦流和臨界點等,可以用特征刻畫物理現象,并通過特征分類將總的物理現象進行分解。
原位可視化繪制是將可視化過程與數值計算有機結合的過程。在原位可視化模型中,數值模擬計算與可視化渲染邏輯上獨立并協調運行。
原位并行可視化是在原位可視化的基礎上,對其進行并行結構設計與改組。現主要有三種模式,分別是任務并行、流水線并行以及數據并行。任務并行中,每一個進程獨立執行一個任務,優點是相互獨立的任務能夠并行執行,缺點是當任務之間存在相關性時,并行性受到限制,負載均衡很難做好。流水線并行是將任務處理過程按照邏輯關系劃分為多個階段,通過使用多個線程并行執行不同階段來加速處理過程。流水線并行方式能充分利用計算系統硬件資源,缺點是流水段之間的負載難于均衡。數據并行是將數據劃分為數據子塊并指派給多個線程,并整合各個線程任務將所產生的子結果。Duque 等在實現與CFD 數值模擬緊耦合的原位可視化時,使用不同線程實現CFD 解算、數據采樣和可視化,不同的線程共享同一線程塊的內存。數據并行在數據相關性較弱情況下能達到很高并行度,但可擴展性受限于整合過程中的進程間通信復雜度。Yu 等基于開源CFD 直接數值模擬軟件S3D,建立了原位可視化系統;Biddiscombe 等使用ParaView 和ICARUS,在CrayXE6 的1536 個計算核心上實現了與CFDSPH(SmoothedParticleHydrodynamics)數值模擬應用的整合和原位可視化。
對于大規模數據流場的可視化,體與幾何面的原位并行可視化的繪制算法,與后處理并行可視化存在不同聯系。在原位體繪制方面,后處理模式的并行體繪制算法可用于原位可視化,原因在于這些算法可以很好地適應數值模擬的數據區域劃分方式,計算主要在數據塊內執行,不同節點之間的通信量能夠預測和控制。可視化數據分區與數值模擬一致,故算法不需太多改動。Bethel 等對直接體繪制、流/跡線的MPI 和MPI/OpenMP 混合算法的強擴展性和弱擴展性進行了對比。
在原位幾何(流線/面、跡線/面等)可視化方面,后處理中常用的數據分區預處理、核外方式,難以移植借鑒到原位可視化中,而分布式多核、眾核計算平臺上的并行幾何可視化則具備改造為原位可視化算法的潛力。Camp 等提出了基于CPU 與GPU 集群的并行流線計算方法。
可視化計算與數值模擬緊密結合的原位并行可視化是數據分析的必然趨勢,是解決大規模流場實時可視化的有效途徑,原位可視化技術在可視化效率、實時數據分析及可視化交互等方面有巨大的應用前景。隨著計算機技術的不斷發展和水動力學模型的精度不斷提高,對可視化也提出了新的需求,主要包括以下內容:
(1)精確性。高精度的數值計算需要高精度的可視化方法與之匹配才能更好的分析流場特性,評估計算方法的正確性與合理性。傳統的可視化方法采用后處理模式,對數值計算結果進行采樣后再進行可視化分析,對水流過程的描述不夠完備,可能會丟失某些特征。
(2)時效性和交互性。隨著計算機性能和數值計算精度的提高,用戶要求可視化算法具有對大規模復雜流場進行實時交互繪制的能力■