高性能計算機在模擬上的應用

高性能計算機在模擬上的應用

當前,模擬軟體在建模及各類相關功能上已日趨成熟,爲用戶提供了諸多便利。用戶可通過自行繪製場景模型或導入CAD文件的方式進行建模,設定材料參數與計算條件後即可運行模擬。在用戶界面日益完善及操作系統更加人性化的輔助下,這些操作正變得越來越簡單。

然而,模擬仍然高度依賴硬體資源與算力支持。建模完成後,模擬軟體需對場景模型進行處理,並將全部或部分數據存放于主板記憶體,隨後調用CPU或GPU執行算法模型。建模場景、幾何結構、材料參數及計算條件等均作爲模型輸入參數導入,並交由CPU或GPU計算。計算過程中,輸出數據暫存于顯卡記憶體或記憶體,待計算結束後再寫入硬碟,固定爲最終模擬結果。

在這一過程中,所調用的算力資源包括主板記憶體、CPU、GPU、顯卡記憶體及硬碟。影響效能的因素則涵蓋CPU或GPU的性能、CPU核心數或綫程數、顯卡記憶體與記憶體容量、記憶體與顯卡記憶體的主頻及帶寬,以及數據寫入硬碟時的讀寫速度等,所有這些因素共同累積,最終影響整體模擬效率。

因此,當前用戶在爲模擬軟體配置高性能硬體時,通常會依據軟體特性及自身需求進行選擇。例如,支持GPU加速的模擬軟體,用戶需考慮購置GPU;支持多核心多綫程並行處理的軟體,則需考量增加CPU綫程數與核心數。同時,還需評估軟體運行是否會額外占用記憶體或顯卡記憶體等問題,只有在綜合考慮這些條件後,才能搭配出既滿足需求又具經濟效益的計算平臺。

 

模擬規模與精度要求同步提升

在二十世紀九十年代模擬軟體發展初期,由于計算機軟硬體尚不成熟,建模難度遠高于今日,模擬所能考量的物理量及輸出類型均十分有限,硬體性能也遠不及當前水平。因此,當時的模擬軟體多用于處理較爲簡單的問題,通常僅提供指示性輸出,且缺乏完善的指南或教材。用戶往往僅能獲取極爲簡略的學習材料,需耗費大量時間自行摸索。因而,模擬軟體普遍存在“不好用、不精確、不够快”的問題,甚至有用戶完全放棄商用軟體,轉而使用C語言或MATLAB等工具自行編寫代碼進行模擬。這種方式雖對熟悉編程的用戶較爲便利,但軟體功能極爲受限,應用範圍狹窄,輸出類型少,建模尤爲困難,且結果無法可視化呈現,僅能以數據形式輸出。時至今日,這種工作方式仍難以克服上述問題。好比一位做包子的師傅,若要自行種麥、養猪、種菜,再以此製作包子,而不去采購現成的麵粉、蔬菜和肉類,雖在學術研究中因教育考量尚具一定合理性,但在産業應用中,要求在有限時間內提供有意義成果並控制合理成本,這種“爲做包子而種小麥”的模式顯然行不通。

 

 

更爲重要的是,在嚴肅的工業應用中,必須充分考慮驗證與確認(Verification and Validation)的問題,即所産出數據、使用方法和代碼均需經過嚴格驗證,不僅需對比輸出結果,還需確保代碼與軟體本身無缺陷,能够穩定提供正確的輸出。而上述“自給自足”的方式,難以通過此類驗證,從而爲商業産品帶來潜在風險,因爲企業需要的是一個可靠工具,而非自行開發工具,而這類自建工具往往也不具重複使用價值。因此,在商業領域,此類做法並不划算。

 

如今,商用模擬軟體已較過去成熟許多,用戶獲取參考資料、文檔或視頻培訓材料的途徑也更加豐富,因而對模擬軟體的使用要求也隨之提高。這通常表現爲兩個方向:一方面,用戶對模擬精度的要求不斷提升,但對建模的便利性要求同樣增强——即用戶希望以更簡便的方式構建高精度輸出模型。這不僅對用戶界面及軟體功能提出更高要求,高精度計算本身亦受限于幾何結構細節、網格尺寸縮小以及電磁模擬頻率提高等因素,對CPU或GPU的算力需求也隨之增加,甚至單顆處理器難以在合理時間內輸出滿足精度要求的結果。另一方面,計算規模持續擴大,部分模擬並非僅針對單一元器件(如天綫)的設計,而是探討某一環境內在特定條件下電磁或力學物理現象的變化。元器件或終端産品的空間尺度通常在二三十公分左右,而環境尺度則可能達數公里至數十公里。環境內的地形、建築物等需儘量保留對物理量變化影響較大的特徵,進行較精確的建模,甚至需考慮河流、海面等特殊地形。此類大型場景亦可能需進行網格剖分等前處理,這將占用大量顯卡記憶體或記憶體;同時,隨著模擬推進,射綫追踪算法的路徑數量亦不斷增加,對記憶體和顯卡記憶體的占用會進一步上升。因此,用戶必須考慮配備充足的顯卡記憶體或記憶體,否則模擬可能無法進行,虛擬實驗設計也需重新調整。

以我們的模擬軟體爲例,如Xfdtd,大量計算工作交由GPU執行,網格數據直接存放于顯卡記憶體中,CPU與主板記憶體主要負責後處理、軟體界面操作及基本運行,同時充當數據寫入硬碟時的中轉。因此,硬體需求主要集中于GPU。若單張GPU顯卡記憶體不足,需插接兩張同型號GPU,合併其顯卡記憶體,方能滿足用戶模擬需求。當信號頻率提高、幾何細節尺寸縮小,網格尺寸需相應减小,網格數量增多,顯卡記憶體占用也隨之增加。因此,用戶可開展的模擬規模及輸出精度,直接受限于可用顯卡記憶體容量。

而另一款模擬軟體Wireless Insite則剛好相反。該軟體同樣使用GPU,但GPU的性能差异在模擬中的體現相對有限——高端GPU與普通游戲卡之間的計算差距並不顯著。用戶額外投入十幾萬元購置的高端算卡,可能僅比一張萬元級游戲卡快十幾秒;若模擬任務較爲簡單,兩者耗時甚至只差幾秒。反之,傳播路徑的主要計算由CPU與主板記憶體承擔,因此CPU綫程數决定模擬效能,而主板記憶體容量則决定用戶可模擬規模及結果分辨率與精細程度。

 

分布式計算

隨著技術進步,當前硬體性能已遠超九十年代,操作系統亦更加便利。用戶對模擬軟體的工作要求也愈加繁重複雜,精度與模型尺度要求同步提高。最終,不僅需增加CPU綫程數、大量主板記憶體,可能還需在單台伺服器上插接多張顯卡,方可滿足用戶模擬需求。

 

然而,單塊主板的承載能力有限,其提供的CPU、記憶體及GPU插槽數量均有上限。即便插滿記憶體,亦不一定滿足用戶需求;同樣,插滿GPU也不一定能提供足够的算力或顯卡記憶體。同時,機箱或機櫃內電源供應器空間有限,未必能提供充足電力驅動這些硬體,尤其是CPU與GPU功耗較大。即便電源滿足需求,穩定性與散熱亦會構成嚴重問題。因此,將所有算力集中于單台伺服器,不僅受限于主板支持能力,穩定運行與安全性亦難以保障。

 

在此情况下,需將系統化整爲零,構建分布式系統,即集群。通過部署兩台或更多配置完全相同的伺服器,並將其整合至小型或中型局域網中,可將各伺服器資源彙聚爲資源池。例如,若每台伺服器配備四張GPU,四台伺服器即可提供十六張GPU;若每台提供128個CPU綫程,四台即可提供512個綫程;若每台記憶體爲2TB,四台合計8TB。用戶可根據預算靈活擴展集群,並通過軟體將模擬任務進行拆分,分配至各節點調用資源並行計算。以Xfdtd爲例,若需進行太赫茲頻率模擬,需80GB以上顯卡記憶體,而單台伺服器顯卡記憶體總量不足,用戶只能新增GPU或更換更高配置伺服器。若擁有集群,則可將計算任務拆分爲兩塊,分別指派至兩台伺服器同步計算,同時調用兩者的GPU與顯卡記憶體,從而完成單機無法實現的任務。

 

另一方面,若某模擬工作需40GB顯卡記憶體,雖可在一台伺服器上完成,但若拆分爲兩塊,在兩個集群節點上同步執行,則單個節點負載顯著降低,效能提高;同時,兩個節點可提供更多CPU綫程,便于處理非GPU部分,主板亦提供雙倍記憶體,使數據讀寫更高效。這如同“兩個和尚抬水喝”,有助于提升模擬效能。具體提升幅度因軟體優化程度而异,但總體而言,模擬計算越繁重,分布式計算所帶來的效能提升通常越顯著。

 

因此,具備分布式計算能力的集群可在兩方面發揮作用:其一,使單機無法實現的工作成爲可能;其二,將大規模計算任務拆解爲更易處理的小塊,提高模擬效能

此外,從維護角度看,GPU及記憶體經長時間高强度使用後可能損壞,需及時更換。集群的優勢在于,用戶可使用性價比較高的GPU或CPU構建龐大資源池,即便其中某一節點硬體故障,也僅需更換對應部件,節點下綫亦不影響集群整體運行。因此,維護成本更易控制,使用更加靈活,不會像單機伺服器那樣,一旦故障整機停擺,工作被迫中斷。

 

我公司與雲軒品牌在專業項目上擁有愉快的合作經驗。我們的合作夥伴以合理實惠的價格提供基于用戶需求定制的伺服器與集群,並提供充分的技術支持。我們將携手合作夥伴,在本地面向專業用戶提供優質高端計算設備,同時面向海外市場推廣合作夥伴的優質産品。