無需購買英偉達高階GPU也能提升計算速度,科學家開發快速近場動力學演算法,比現有演算法加速800倍

隨著 DeepSeek 的大火,也讓人們對於英偉達 GPU 及其配套的統一計算裝置架構 CUDA(Compute Unified Device Architecture)有了更多瞭解。
而在近日,深圳北理莫斯科大學楊楊副教授和合作者,圍繞英偉達 GPU 研發出一款新演算法。具體來說,該團隊研發出一種使用 GPU 並行 CUDA 程式設計技術的鍵型近場動力學並行演算法——PD-General。
在 AI 領域有“得演算法者得天下的說法”,本次演算法的最大價值在於不必更換 GPU,就能讓計算效能實現最大化。
PD-General 能夠充分利用英偉達 GPU 中的內部結構,透過讀取 GPU 內部暫存器顯示卡,在無需更換更高階顯示卡的同時,就能提升計算效率,從而能夠減少對於更高水平硬體的依賴。哪怕使用普通的家用 GPU,也能將原本需要幾天才能完成的計算任務縮短到幾小時甚至幾分鐘。
(來源:Engineering Analysis with Boundary Elements
與序列程式(Serial)和 OpenMP 並行程式相比,本次演算法可以分別實現高達 800 倍和 100 倍的加速。(注:序列程式,指的是按照指令順序一個一個地執行的程式,前一個任務完成後下一個任務才會開始;OpenMP(Open Multi-Processing)並行程式‌,是一個用於共享記憶體並行程式設計的 API,主要用於 C、C++和 Fortran 語言。‌‌)
在典型的一百萬粒子模擬中,當在低端 GPU PC 上執行 4000 次迭代時,本次演算法在單精度條件下需要 5 分鐘,在雙精度條件下需要 20 分鐘,這一速度能讓科研人員進行復雜材料設計和損傷模擬時,可以更快地獲得結果。
此外,研究人員還提出一種通用暫存器技術,其能用於高速訪問暫存器,從而減少全域性儲存器訪問。
該演算法還能實現粒子並行的模式,並能透過使用暫存器針對頻寬實現更有效的訪問。(注:粒子並行是一種利用平行計算技術加速粒子系統模擬的方法,其基本思想是將粒子系統的計算任務分配到多個處理器或計算節點上,透過同時執行這些任務來提高計算效率。)
相比序列程式和其他並行演算法,本次演算法能夠實現顯著的加速,從而能夠針對鍵型近場動力學(BBPD,bond based peridynamic)中的變形和裂紋擴充套件進行快速分析,同時這一演算法也適用於其他近場動力學理論。
日前,相關論文以《基於 GPU 平行計算的快速鍵型近場動力學程式》(A fast bond-based peridynamic program based on GPU parallel computing)為題發在 Engineering Analysis with Boundary Elements[1]。
深圳北理莫斯科大學楊楊副教授是第一作者兼通訊作者,南方科技大學劉軼軍講席教授和碩士生蘇梓鑫是共同作者。
圖 | 相關論文(來源:Engineering Analysis with Boundary Elements
據瞭解,楊楊是研究力學演算法出身,但是參與本次研究的碩士生則是計算機出身,後者非常熟悉計算機架構,正是這樣跨學科的交叉融合,使得他們不走尋常路地打造了本次演算法。

GPU 平行計算亟需破除“窘境”
據瞭解,近場動力學(PD,Peridynamic)是一個非區域性理論框架。該理論透過引入基於積分的控制方程,來解決不連續空間建模的問題。(注:不連續空間建模,是一種用於模擬和分析不連續介質或結構的數值方法。)
這種方法在不改變網格的情況下,能夠對裂紋擴充套件進行更好的建模。(注:裂紋擴充套件,是指材料在外界因素作用之下,裂紋從初始位置逐漸延伸的過程。)
在上述過程中,需要將求解域離散為一系列物質點,每個物質點包含了位置、體積和密度的相關資訊。
為了保證數值計算的穩定性和準確性,必須設定較小的增量步長,而這會帶來大量的迭代次數和計算資源。(注:增量步長,是指在數值計算和計算機模擬中,將整個計算過程劃分為一系列小步驟的時間間隔。)
與基於經典連續體力學的方法相比,近場動力學不僅需要更多的計算,同時也需要更大的儲存空間,因此會導致計算效率較低。
為了提高近場動力學的計算效率,此前曾有多個研究團隊提出過一系列方法。
對於 CPU 並行加速中的大多數加速最佳化來說,都是面向小於 100 萬點的示例。而對於大規模模擬來說,通常需要依賴超級計算機或多 CPU 結構,這往往需要更高的裝置規格,而且也不方便使用者使用。
此前,基於 GPU 的並行動力學研究大多侷限於將序列程式轉換為並行程式。大多數已有最佳化策略所帶來的加速效果,也主要依賴於 GPU 自身效能的提升。與此同時,也很少有人基於 GPU 硬體結構來設計最佳化策略。
另外,GPU 平行計算還存在一些問題:
其一,用於儲存鄰域點的記憶體空間沒有被預先確定大小,這導致執行緒和記憶體資源的利用效率十分低下,進而導致記憶體和計算資源的浪費,以至於讓 GPU 難以處理大規模計算。(注:鄰域點是指在數學和計算機科學中,以某個點為中心,滿足一定距離或條件的一組點。)
其二,大多數 GPU 平行計算仍然嚴重依賴全域性記憶體,CUDA 的記憶體結構並未得到沒有充分利用,導致記憶體頻寬被浪費。
其三,大多數近場動力學並行演算法缺乏通用性。有的演算法可能會限制鄰域的大小,以至於只能處理均勻分佈且未損壞的離散結構;而有的演算法則可能會限制近場動力學理論。(注:離散結構,是將連續函式或變數轉換為離散點的結構。)
基於上述侷限性,本次研究人員開發了 PD-General 演算法,藉此成功提高了記憶體使用率和計算效率。

大大提高計算效率,擴充套件 PC 計算能力
Warp,是 GPU 中執行並行操作的基本單位,它由 32 個執行緒組成。因此,研究人員將執行緒塊組織設為 32k(k 是正整數)。
研究人員以內力計算為基準,在‌英偉達的 Nsight Systems 上,測試和比較了三種模型中不同執行緒塊組織的效能。(注:Nsight Systems‌ 是一款系統級效能分析工具,專用於實現應用演算法的視覺化,旨在幫助開發者發現最佳化機會並進行調優,從而實現跨 CPU 和 GPU 的高效擴充套件。)
期間,研究人員分析了單個時間步驟的執行情況,並分別測試了 64、128、256、512、768 和 1024 個執行緒的執行緒塊組織。
測試結果如下圖所示,條形圖表示佔用率,折線圖表示執行效率。該圖顯示:當每個塊的執行緒數為 1024 時,效能最低。另外,執行緒塊組織的佔用率越高,計算效率就越高。
一般來說,擁有 128 到 256 個執行緒的組織可以實現最佳效能。考慮到增加鄰域半徑的潛在影響,研究人員選擇了具有 256 個執行緒的組織來開展測試。(注:鄰域半徑,‌是指以某點為中心,覆蓋一定範圍的距離。在這個範圍內的點被認為是該點的“鄰居”,其在許多演算法和應用中都有重要作用。)
(來源:Engineering Analysis with Boundary Elements
研究人員還測試了程式的總計算時間。總計算時間指的是,從程式開始到結束的完整執行時間,它包括除了資料輸出之外的所有操作的時間。
實驗中,研究人員運行了三個不同的模型:線性程式、OpenMP 並行程式、CUDA 並行程式,同時這一實驗涵蓋了 7 組不同尺度的離散結構,這些離散結構擁有從 2 萬到 200 萬不等的點數。
與此同時,研究人員還分析了鄰域點數量大於 32 和小於 32 的情況。下圖表明,基於 CUDA 的並行程式比 OpenMP 和序列程式效率高得多。
(來源:Engineering Analysis with Boundary Elements
另外,隨著物質點數量的增加,基於 CUDA 的並行程式的效率更加明顯。如下圖所示,並行程式的初始加速比相對較低,與 OpenMP 程式相比沒有顯著差異。
然而,隨著物質點的增加,加速比開始上升。帶裂紋的鍵型近場動力學加速比是 OpenMP 的 200 倍。
(來源:Engineering Analysis with Boundary Elements
在最大規模案例研究中,研究人員將近場動力學的時間複雜度設為 O(PN,P 為物質點的總數,N 為每個物質點的視界點數。此外,研究人員使用 ADP、AP、PN 表示記憶體大小(單位為位元組)。
實驗中,研究人員所使用的 GPU 理論記憶體大小為 12GB。然而,由於作業系統的要求和 CUDA 啟動佔用的記憶體,只有大約 11GB 的記憶體可被用於程式設計。
因此,研究人員使用 11GB 作為基線,以確定近場動力學的最大比例。透過代入四個條件:1. 雙精度,N=28;2. 雙精度,N=36;3. 單精度,N=28;4. 單精度,N=36 來代入相應記憶體計算公式。藉此得出了相應條件下的理論記憶體佔用情況(如下表所示)。
(來源:Engineering Analysis with Boundary Elements
實驗結果顯示,單精度的吞吐量是雙精度的 64 倍。因此,在更高的精度水平之下,當處理相同規模的問題時,雙精度的處理速度和執行速度較慢。而且,鄰域半徑的大小也會影響程式效能。
與此同時,這也表明鄰域點數量越多,執行規模越小,執行效率越低。
研究人員在論文中表示,其所使用的近場動力學通用模型能夠模擬數千萬個粒子。透過最佳化引數設定,可以模擬的最大粒子數為 75645000。
具體來說,在單精度下模擬 1000 步只需 100 秒到 600 秒執行時間,而在雙精度下模擬 1000 步需要 900 秒到 2500 秒執行時間。
總的來說,研究人員透過分析近場動力學模型和探索平行計算理論,利用 CUDA 打造了高效能、低成本的近場動力學分析框架 PD-General。在並行框架中,其所開發的鄰域生成模組有效地減少了記憶體佔用浪費。此外,研究人員還透過記憶體訪問模組,大大提高了計算效率,從而可以擴充套件個人計算機的計算能力。
參考資料:
1.Yang,Y. et al. A fast bond-based peridynamic program based on GPU parallel computing. Engineering Analysis with Boundary Elements 172,106133(2025). https://doi.org/10.1016/j.enganabound.2025.106133
https://baijiahao.baidu.com/s?id=1822824852862951748&wfr=spider&for=pc
排版:劉雅坤


相關文章