999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

有限元GPU加速計算的實現方法

2014-07-21 08:31:04張健飛沈德飛
計算機輔助工程 2014年2期
關鍵詞:有限元法

張健飛 沈德飛

摘要:研究基于GPU的有限元求解中的總剛矩陣生成和線性方程組求解問題.通過對單元著色和分組完成總剛矩陣的生成,并以行壓縮存儲(Compressed Sparse Row,CSR)格式存儲,用預處理共軛梯度法求解所生成的大規模線性稀疏方程組.在CUDA(Compute Unified Device Architecture)平臺上完成程序設計,并用GT430 GPU對彈性力學的平面問題和空間問題進行試驗.結果表明,總剛矩陣生成和方程組求解分別得到最高11.7和8的計算加速比.

關鍵詞:GPU計算; 有限元法; 剛度矩陣; 預處理共軛梯度法

中圖分類號: TB115.7;TP311

文獻標志碼:B

0 引 言

作為一種求解微分方程或積分方程的微分方法,有限元法[1]以其高度的適應性,成為現代工程設計和結構分析的重要方法之一,并在土木、水利、汽車、機械、航空航天、核工業和大地勘測等眾多領域應用廣泛.隨著科學技術的不斷發展,工程問題的規模和復雜程度相應提高,也對有限元計算提出更大規模、更快速度的要求.有限元法的基本思想是“化整為零,積零為整”,與并行計算技術的“分而治之”的基本原則相協調,因此,對于大規模的有限元結構分析,可將效率低下的串行有限元分析改進為并行有限元分析.

自從2006年NVIDIA正式發布用于通用計算的統一計算架構CUDA(Compute Unified Device Architecture)平臺[2]后,圖形處理器的體系架構得到迅速發展和完善,性能得到大幅提高,使得GPU不僅能高效應用于計算機圖形處理,而且其強大的計算能力也能很好地適用于高性能計算[3],大大推動基于GPU通用計算的研究,并廣泛應用于醫學成像、生物信息學、計算結構力學、計算流體力學、計算金融、地震勘探、地理信息系統以及電影和動畫制作等領域.商業有限元分析軟件ANSYS和Abaqus中也應用GPU技術.[4]

目前,基于GPU的有限元分析在求解由有限元生成的稀疏線性方程組的研究中比較多,主要是由于在求解方程組時數據量大而且計算比較集中,便于并行運算.NATHAN等[5]討論稀疏矩陣的數據結構,并探討幾種有效的基于CUDA的高效的稀疏矩陣與向量相乘的方法;AIL等[6]探討針對多GPU的基于CUDA的快速共軛梯度法,并探討共軛梯度法中最耗時的稀疏矩陣與向量相乘的操作;JOLDES等[7]研究基于GPU的以六面體單元為主的混合網格及在有限元中尋求穩定解的問題,并通過CUDA實現基于非線性力學模型的自動模擬神經外科的過程;PAWEL等[8]探討基于GPU的三維有限元數值積分算法和計算方面的內容;CECKA等[9]探討基于GPU的有限元法剛度矩陣組裝方法,評估每種方法的優缺點;李熙銘[10]驗證基于CUDA的復電阻率問題,并詳細研究復共軛梯度法;胡耀國[11]運用單元分組的方式計算得出有限元法中的總剛矩陣,并研究基于GPU的共軛梯度法,因當時的資源限制,其在總剛矩陣生成部分的加速效果并不明顯.

本文利用GPU強大的并行計算能力和CPU的高效邏輯處理能力,將有限元法中計算量很大的單剛矩陣計算和總剛矩陣生成及線性方程組的求解交給GPU運算,CPU負責相應數據的前處理和后處理及整個分析過程中的邏輯關系.應用CUDA平臺完成基于GPU的有限元分析程序,在本文的計算平臺上運行,并用彈性力學平面問題和空間問題的有限元求解測試其運行效果.在總剛矩陣生成部分,為避免計算時線程沖突,采用文獻[9]和[11-12]中都提到的對結構單元進行著色的方法.在求解大規模線性方程組時充分利用現有資源,在完全調用現有庫函數的情況下實現基于GPU的預條件共軛梯度法.

1 CUDA編程模型

NVIDIA的CUDA并行計算模型使用C語言作為開發語言,同時也支持其他編程語言或應用程序接口.一個完整的CUDA程序包含連續運行在CPU端的主程序及用CUDA編寫的運行在并行GPU設備上的內核程序.由圖1可知,在CUDA架構下,應用程序由CPU端的串行程序(host端程序)和GPU端的并行程序(device端程序或Kernel程序)組成.運行流程:在CPU端準備數據,然后傳到GPU端進行并行計算,最后將計算好的數據再傳回CPU端.

CPU端的程序主要負責數據的準備和一些邏輯運算,其中Kernel函數是整個應用程序的關鍵.Kernel函數以線程網格(Grid)的形式組織,每個線程網格由若干個線程塊(Block)組成,而每個線程塊又由若干個線程(Thread)組成.在執行時,Kernel函數以線程塊為單位,各線程塊間并行執行,不同線程塊間只能通過全局顯存進行數據共享,同一線程塊內的線程之間可以通過共享內存通信,即在Kernel函數中存在2個層次的并行:在線程網格中的線程塊間并行和在線程塊中的線程間并行.

在Kernel函數的程序中,每個線程擁有自己的私有寄存器(register)和局部存儲器(local memory);每個線程塊擁有一個共享存儲器(shared memory);線程網格中所有線程都可以訪問全局存儲器(global memory).還有2種程序中所有線程都可以訪問的只讀存儲器:常數存儲器(constant memory)和紋理存儲器(texture memory),它們分別為不同的應用進行優化.其中,全局存儲器、常數存儲器和紋理存儲器中的值在一個內核函數執行完成后被繼續保持,可以被同一程序中的其他內核函數調用.

2 有限元總剛矩陣

2.1 單元著色

為能夠并行計算單元剛度矩陣且不產生線程沖突,通過單元著色方法生成剛度矩陣.單元著色原則是:對于共享同一個節點的所有單元都著色為不同的顏色,即對于任一自由度中的單元沒有2個單元的顏色是相同的.

完成對結構中的所有單元著色后,再進行同一顏色的分組.

2.2 總剛矩陣的壓縮存儲

有限元法生成的總剛矩陣為大型稀疏矩陣,如果使用與稠密矩陣一樣的滿陣存儲法存儲,不僅存儲量和計算量大,而且會浪費很多不必要的內存空間,需采用壓縮存儲的方式存儲該稀疏矩陣,即只存儲稀疏矩陣中的非零元素.在進行單元剛度計算之前,先計算出單元中相互有貢獻的節點,對于相互沒有貢獻的節點,不給予存儲空間.壓縮存儲法中的行壓縮存儲(Compressed Sparse Row,CSR)法對矩陣的結構沒有要求,而且以CSR格式存儲的稀疏矩陣能夠更好地滿足GPU的并行計算.有限元法生成的總剛矩陣通常是無規則的稀疏矩陣,因此采用CSR格式存儲.

摘要:研究基于GPU的有限元求解中的總剛矩陣生成和線性方程組求解問題.通過對單元著色和分組完成總剛矩陣的生成,并以行壓縮存儲(Compressed Sparse Row,CSR)格式存儲,用預處理共軛梯度法求解所生成的大規模線性稀疏方程組.在CUDA(Compute Unified Device Architecture)平臺上完成程序設計,并用GT430 GPU對彈性力學的平面問題和空間問題進行試驗.結果表明,總剛矩陣生成和方程組求解分別得到最高11.7和8的計算加速比.

關鍵詞:GPU計算; 有限元法; 剛度矩陣; 預處理共軛梯度法

中圖分類號: TB115.7;TP311

文獻標志碼:B

0 引 言

作為一種求解微分方程或積分方程的微分方法,有限元法[1]以其高度的適應性,成為現代工程設計和結構分析的重要方法之一,并在土木、水利、汽車、機械、航空航天、核工業和大地勘測等眾多領域應用廣泛.隨著科學技術的不斷發展,工程問題的規模和復雜程度相應提高,也對有限元計算提出更大規模、更快速度的要求.有限元法的基本思想是“化整為零,積零為整”,與并行計算技術的“分而治之”的基本原則相協調,因此,對于大規模的有限元結構分析,可將效率低下的串行有限元分析改進為并行有限元分析.

自從2006年NVIDIA正式發布用于通用計算的統一計算架構CUDA(Compute Unified Device Architecture)平臺[2]后,圖形處理器的體系架構得到迅速發展和完善,性能得到大幅提高,使得GPU不僅能高效應用于計算機圖形處理,而且其強大的計算能力也能很好地適用于高性能計算[3],大大推動基于GPU通用計算的研究,并廣泛應用于醫學成像、生物信息學、計算結構力學、計算流體力學、計算金融、地震勘探、地理信息系統以及電影和動畫制作等領域.商業有限元分析軟件ANSYS和Abaqus中也應用GPU技術.[4]

目前,基于GPU的有限元分析在求解由有限元生成的稀疏線性方程組的研究中比較多,主要是由于在求解方程組時數據量大而且計算比較集中,便于并行運算.NATHAN等[5]討論稀疏矩陣的數據結構,并探討幾種有效的基于CUDA的高效的稀疏矩陣與向量相乘的方法;AIL等[6]探討針對多GPU的基于CUDA的快速共軛梯度法,并探討共軛梯度法中最耗時的稀疏矩陣與向量相乘的操作;JOLDES等[7]研究基于GPU的以六面體單元為主的混合網格及在有限元中尋求穩定解的問題,并通過CUDA實現基于非線性力學模型的自動模擬神經外科的過程;PAWEL等[8]探討基于GPU的三維有限元數值積分算法和計算方面的內容;CECKA等[9]探討基于GPU的有限元法剛度矩陣組裝方法,評估每種方法的優缺點;李熙銘[10]驗證基于CUDA的復電阻率問題,并詳細研究復共軛梯度法;胡耀國[11]運用單元分組的方式計算得出有限元法中的總剛矩陣,并研究基于GPU的共軛梯度法,因當時的資源限制,其在總剛矩陣生成部分的加速效果并不明顯.

本文利用GPU強大的并行計算能力和CPU的高效邏輯處理能力,將有限元法中計算量很大的單剛矩陣計算和總剛矩陣生成及線性方程組的求解交給GPU運算,CPU負責相應數據的前處理和后處理及整個分析過程中的邏輯關系.應用CUDA平臺完成基于GPU的有限元分析程序,在本文的計算平臺上運行,并用彈性力學平面問題和空間問題的有限元求解測試其運行效果.在總剛矩陣生成部分,為避免計算時線程沖突,采用文獻[9]和[11-12]中都提到的對結構單元進行著色的方法.在求解大規模線性方程組時充分利用現有資源,在完全調用現有庫函數的情況下實現基于GPU的預條件共軛梯度法.

1 CUDA編程模型

NVIDIA的CUDA并行計算模型使用C語言作為開發語言,同時也支持其他編程語言或應用程序接口.一個完整的CUDA程序包含連續運行在CPU端的主程序及用CUDA編寫的運行在并行GPU設備上的內核程序.由圖1可知,在CUDA架構下,應用程序由CPU端的串行程序(host端程序)和GPU端的并行程序(device端程序或Kernel程序)組成.運行流程:在CPU端準備數據,然后傳到GPU端進行并行計算,最后將計算好的數據再傳回CPU端.

CPU端的程序主要負責數據的準備和一些邏輯運算,其中Kernel函數是整個應用程序的關鍵.Kernel函數以線程網格(Grid)的形式組織,每個線程網格由若干個線程塊(Block)組成,而每個線程塊又由若干個線程(Thread)組成.在執行時,Kernel函數以線程塊為單位,各線程塊間并行執行,不同線程塊間只能通過全局顯存進行數據共享,同一線程塊內的線程之間可以通過共享內存通信,即在Kernel函數中存在2個層次的并行:在線程網格中的線程塊間并行和在線程塊中的線程間并行.

在Kernel函數的程序中,每個線程擁有自己的私有寄存器(register)和局部存儲器(local memory);每個線程塊擁有一個共享存儲器(shared memory);線程網格中所有線程都可以訪問全局存儲器(global memory).還有2種程序中所有線程都可以訪問的只讀存儲器:常數存儲器(constant memory)和紋理存儲器(texture memory),它們分別為不同的應用進行優化.其中,全局存儲器、常數存儲器和紋理存儲器中的值在一個內核函數執行完成后被繼續保持,可以被同一程序中的其他內核函數調用.

2 有限元總剛矩陣

2.1 單元著色

為能夠并行計算單元剛度矩陣且不產生線程沖突,通過單元著色方法生成剛度矩陣.單元著色原則是:對于共享同一個節點的所有單元都著色為不同的顏色,即對于任一自由度中的單元沒有2個單元的顏色是相同的.

完成對結構中的所有單元著色后,再進行同一顏色的分組.

2.2 總剛矩陣的壓縮存儲

有限元法生成的總剛矩陣為大型稀疏矩陣,如果使用與稠密矩陣一樣的滿陣存儲法存儲,不僅存儲量和計算量大,而且會浪費很多不必要的內存空間,需采用壓縮存儲的方式存儲該稀疏矩陣,即只存儲稀疏矩陣中的非零元素.在進行單元剛度計算之前,先計算出單元中相互有貢獻的節點,對于相互沒有貢獻的節點,不給予存儲空間.壓縮存儲法中的行壓縮存儲(Compressed Sparse Row,CSR)法對矩陣的結構沒有要求,而且以CSR格式存儲的稀疏矩陣能夠更好地滿足GPU的并行計算.有限元法生成的總剛矩陣通常是無規則的稀疏矩陣,因此采用CSR格式存儲.

摘要:研究基于GPU的有限元求解中的總剛矩陣生成和線性方程組求解問題.通過對單元著色和分組完成總剛矩陣的生成,并以行壓縮存儲(Compressed Sparse Row,CSR)格式存儲,用預處理共軛梯度法求解所生成的大規模線性稀疏方程組.在CUDA(Compute Unified Device Architecture)平臺上完成程序設計,并用GT430 GPU對彈性力學的平面問題和空間問題進行試驗.結果表明,總剛矩陣生成和方程組求解分別得到最高11.7和8的計算加速比.

關鍵詞:GPU計算; 有限元法; 剛度矩陣; 預處理共軛梯度法

中圖分類號: TB115.7;TP311

文獻標志碼:B

0 引 言

作為一種求解微分方程或積分方程的微分方法,有限元法[1]以其高度的適應性,成為現代工程設計和結構分析的重要方法之一,并在土木、水利、汽車、機械、航空航天、核工業和大地勘測等眾多領域應用廣泛.隨著科學技術的不斷發展,工程問題的規模和復雜程度相應提高,也對有限元計算提出更大規模、更快速度的要求.有限元法的基本思想是“化整為零,積零為整”,與并行計算技術的“分而治之”的基本原則相協調,因此,對于大規模的有限元結構分析,可將效率低下的串行有限元分析改進為并行有限元分析.

自從2006年NVIDIA正式發布用于通用計算的統一計算架構CUDA(Compute Unified Device Architecture)平臺[2]后,圖形處理器的體系架構得到迅速發展和完善,性能得到大幅提高,使得GPU不僅能高效應用于計算機圖形處理,而且其強大的計算能力也能很好地適用于高性能計算[3],大大推動基于GPU通用計算的研究,并廣泛應用于醫學成像、生物信息學、計算結構力學、計算流體力學、計算金融、地震勘探、地理信息系統以及電影和動畫制作等領域.商業有限元分析軟件ANSYS和Abaqus中也應用GPU技術.[4]

目前,基于GPU的有限元分析在求解由有限元生成的稀疏線性方程組的研究中比較多,主要是由于在求解方程組時數據量大而且計算比較集中,便于并行運算.NATHAN等[5]討論稀疏矩陣的數據結構,并探討幾種有效的基于CUDA的高效的稀疏矩陣與向量相乘的方法;AIL等[6]探討針對多GPU的基于CUDA的快速共軛梯度法,并探討共軛梯度法中最耗時的稀疏矩陣與向量相乘的操作;JOLDES等[7]研究基于GPU的以六面體單元為主的混合網格及在有限元中尋求穩定解的問題,并通過CUDA實現基于非線性力學模型的自動模擬神經外科的過程;PAWEL等[8]探討基于GPU的三維有限元數值積分算法和計算方面的內容;CECKA等[9]探討基于GPU的有限元法剛度矩陣組裝方法,評估每種方法的優缺點;李熙銘[10]驗證基于CUDA的復電阻率問題,并詳細研究復共軛梯度法;胡耀國[11]運用單元分組的方式計算得出有限元法中的總剛矩陣,并研究基于GPU的共軛梯度法,因當時的資源限制,其在總剛矩陣生成部分的加速效果并不明顯.

本文利用GPU強大的并行計算能力和CPU的高效邏輯處理能力,將有限元法中計算量很大的單剛矩陣計算和總剛矩陣生成及線性方程組的求解交給GPU運算,CPU負責相應數據的前處理和后處理及整個分析過程中的邏輯關系.應用CUDA平臺完成基于GPU的有限元分析程序,在本文的計算平臺上運行,并用彈性力學平面問題和空間問題的有限元求解測試其運行效果.在總剛矩陣生成部分,為避免計算時線程沖突,采用文獻[9]和[11-12]中都提到的對結構單元進行著色的方法.在求解大規模線性方程組時充分利用現有資源,在完全調用現有庫函數的情況下實現基于GPU的預條件共軛梯度法.

1 CUDA編程模型

NVIDIA的CUDA并行計算模型使用C語言作為開發語言,同時也支持其他編程語言或應用程序接口.一個完整的CUDA程序包含連續運行在CPU端的主程序及用CUDA編寫的運行在并行GPU設備上的內核程序.由圖1可知,在CUDA架構下,應用程序由CPU端的串行程序(host端程序)和GPU端的并行程序(device端程序或Kernel程序)組成.運行流程:在CPU端準備數據,然后傳到GPU端進行并行計算,最后將計算好的數據再傳回CPU端.

CPU端的程序主要負責數據的準備和一些邏輯運算,其中Kernel函數是整個應用程序的關鍵.Kernel函數以線程網格(Grid)的形式組織,每個線程網格由若干個線程塊(Block)組成,而每個線程塊又由若干個線程(Thread)組成.在執行時,Kernel函數以線程塊為單位,各線程塊間并行執行,不同線程塊間只能通過全局顯存進行數據共享,同一線程塊內的線程之間可以通過共享內存通信,即在Kernel函數中存在2個層次的并行:在線程網格中的線程塊間并行和在線程塊中的線程間并行.

在Kernel函數的程序中,每個線程擁有自己的私有寄存器(register)和局部存儲器(local memory);每個線程塊擁有一個共享存儲器(shared memory);線程網格中所有線程都可以訪問全局存儲器(global memory).還有2種程序中所有線程都可以訪問的只讀存儲器:常數存儲器(constant memory)和紋理存儲器(texture memory),它們分別為不同的應用進行優化.其中,全局存儲器、常數存儲器和紋理存儲器中的值在一個內核函數執行完成后被繼續保持,可以被同一程序中的其他內核函數調用.

2 有限元總剛矩陣

2.1 單元著色

為能夠并行計算單元剛度矩陣且不產生線程沖突,通過單元著色方法生成剛度矩陣.單元著色原則是:對于共享同一個節點的所有單元都著色為不同的顏色,即對于任一自由度中的單元沒有2個單元的顏色是相同的.

完成對結構中的所有單元著色后,再進行同一顏色的分組.

2.2 總剛矩陣的壓縮存儲

有限元法生成的總剛矩陣為大型稀疏矩陣,如果使用與稠密矩陣一樣的滿陣存儲法存儲,不僅存儲量和計算量大,而且會浪費很多不必要的內存空間,需采用壓縮存儲的方式存儲該稀疏矩陣,即只存儲稀疏矩陣中的非零元素.在進行單元剛度計算之前,先計算出單元中相互有貢獻的節點,對于相互沒有貢獻的節點,不給予存儲空間.壓縮存儲法中的行壓縮存儲(Compressed Sparse Row,CSR)法對矩陣的結構沒有要求,而且以CSR格式存儲的稀疏矩陣能夠更好地滿足GPU的并行計算.有限元法生成的總剛矩陣通常是無規則的稀疏矩陣,因此采用CSR格式存儲.

猜你喜歡
有限元法
正交各向異性材料裂紋疲勞擴展的擴展有限元法研究
基于有限元法的高頻變壓器繞組損耗研究
基于有限元法副發動機托架輕量化設計
專用汽車(2016年8期)2016-03-01 04:16:43
傳遞矩陣法與有限元法計算電機轉子臨界轉速的對比分析
Sine-Gordon方程H1-Galerkin非協調混合有限元法的誤差分析
三維有限元法在口腔正畸生物力學研究中發揮的作用
RKDG有限元法求解一維拉格朗日形式的Euler方程
計算物理(2014年1期)2014-03-11 17:00:14
集成對稱模糊數及有限元法的切削力預測
有限元法在機械設計方向中的教學實踐
基于HCSR和CSR-OT的油船疲勞有限元法對比分析
船海工程(2013年6期)2013-03-11 18:57:25
主站蜘蛛池模板: 日本尹人综合香蕉在线观看| 亚洲日本中文字幕天堂网| 99久久精品国产综合婷婷| 亚洲欧美不卡中文字幕| 在线观看无码av五月花| 国产网站免费| 国产精品久久久久久久伊一| 亚洲精品无码人妻无码| 国产精品免费电影| 乱人伦视频中文字幕在线| 97国产在线视频| 久草热视频在线| 真实国产乱子伦视频| 亚洲动漫h| 老司机久久精品视频| 在线看AV天堂| 国产婬乱a一级毛片多女| 一级香蕉人体视频| 国产精品性| aa级毛片毛片免费观看久| 婷婷六月综合网| 欧美亚洲国产精品第一页| 国产一区二区免费播放| 欧美一级在线看| 福利视频99| 国产一级视频久久| 国产黄视频网站| 看你懂的巨臀中文字幕一区二区| 亚洲成人精品久久| 日本道综合一本久久久88| 特级毛片8级毛片免费观看| 国产丰满成熟女性性满足视频| 日韩在线欧美在线| 高清码无在线看| 亚洲综合亚洲国产尤物| 爽爽影院十八禁在线观看| 日韩欧美中文字幕在线韩免费| 永久毛片在线播| 国产SUV精品一区二区6| 日韩一区二区三免费高清| 久久精品免费国产大片| 久久精品丝袜高跟鞋| 亚洲国产成人精品一二区| 中国毛片网| 国产日韩精品欧美一区灰| 国语少妇高潮| 精品成人一区二区三区电影| 国产香蕉在线| 欧美成人综合在线| 国产浮力第一页永久地址| 先锋资源久久| 欧美狠狠干| 亚洲人成影院午夜网站| 亚洲AV无码一区二区三区牲色| 国产专区综合另类日韩一区| 欧洲极品无码一区二区三区| 97人妻精品专区久久久久| 午夜激情婷婷| 亚洲国产91人成在线| 国产主播在线一区| 91成人在线观看视频| 97se亚洲综合| 5555国产在线观看| 国产区精品高清在线观看| 一本色道久久88| 色视频国产| 亚洲欧美一区二区三区蜜芽| 日韩精品无码免费一区二区三区| 手机在线免费毛片| 国产精品思思热在线| 久久人人妻人人爽人人卡片av| 亚洲乱伦视频| 无码乱人伦一区二区亚洲一| 九九热精品免费视频| 日韩欧美国产三级| 人妻21p大胆| 女人18毛片一级毛片在线 | 久久成人免费| 国产精品不卡片视频免费观看| 国产特一级毛片| 国产jizzjizz视频| 天天色天天综合|