專利名稱:基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電磁場仿真分析領(lǐng)域,具體涉及一種基于OpenCUOpen Computing Language,開放計算語言)的GPU (Graphic Processing Unit,圖形處理器)加速三維時域有限差分電磁場仿真的方法。
背景技術(shù):
FDTD (Finite-Difference Time-Domain,時域有限差分)是電磁場仿真計算領(lǐng)域的一種常用方法。FDTD方法是把麥克斯韋(Maxwell)方程組在時間和空間上進行差分離散,通過蛙跳式(Leap frog algorithm)迭代,使空間內(nèi)的電場和磁場進行交替計算;通過時間上更新來模仿電磁場隨時間的變化,實現(xiàn)數(shù)值計算目的。用FDTD方法分析電磁學(xué)問題時,要事先構(gòu)建研究對象的空間幾何參數(shù)、材料參數(shù)模型,并可對計算精度,計算復(fù)雜度,計算穩(wěn)定性進行控制。其優(yōu)點是能夠直接模擬空間電磁場隨時間的變化和分布情況,計算精度高,是目前應(yīng)用較多的電磁學(xué)數(shù)值模擬方法之一。FDTD電磁場仿真分析方法已被成功應(yīng)用在電磁兼容分析、天線設(shè)計、射頻器件設(shè)計、微納光學(xué)等研究領(lǐng)域。然而由于FDTD為時域全波電磁學(xué)算法,因此面臨仿真時間過長的關(guān)鍵性制約。目前解決FDTD仿真時間長的方法主要有利用高性能并行計算機進行仿真計算,然而高性能并行機的成本高昂,因此該方法并沒有得到普及。由于GPU具有CPU所不能比擬的高性能并行計算能力,并且成本低廉,因此利用GPU加速FDTD仿真速度成為一種低成本高性能的仿真方法。利用GPU加速FDTD仿真雖然具有高性能低成本的優(yōu)點,但需要設(shè)計開發(fā)人員具備深厚的圖形編程理論知識儲備。近些年Nvidia公司和AMD公司相繼開發(fā)了 CUDA和Brook+ 等通用計算程序接口用以推廣其GPU應(yīng)用于科學(xué)計算,使設(shè)計開發(fā)人員不必精通圖形編程理論,也可以利用GPU進行科學(xué)計算。目前國外已經(jīng)有學(xué)者成功實現(xiàn)了利用上述接口實現(xiàn) GPU加速二維或三維FDTD仿真的例子。但上述FDTD加速方法只能運行在GPU上,不能運行在CPU上,并且上述的FDTD加速仿真實例不具有吸收邊界條件,而不具備吸收邊界條件的 FDTD方法實用性很有限,只能仿真金屬波導(dǎo)結(jié)構(gòu)。
發(fā)明內(nèi)容
本發(fā)明針對目前FDTD電磁場仿真計算時間過長的弊端,以及目前FDTD仿真加速方法只能運行在GPU上且實用性有限的缺陷,提出了一種基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法。本發(fā)明是一種基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,具體包括以下步驟步驟1 設(shè)置FDTD仿真參數(shù),為所述仿真參數(shù)動態(tài)申請內(nèi)存空間;步驟2 構(gòu)建三維的電磁模型,對該電磁模型進行網(wǎng)格剖分;
步驟3 初始化OpenCL的計算參數(shù),包括獲得FDTD仿真空間的大小、設(shè)置仿真所用處理器類型、創(chuàng)建上下文、獲得工作組的維數(shù)及大小信息、創(chuàng)建指令序列及數(shù)據(jù)緩存區(qū)、 裝載FDTD加速程序文件、聲明磁場仿真計算的內(nèi)核函數(shù)以及電場仿真計算內(nèi)核函數(shù);步驟4 對三維電磁模型基于OpenCL進行FDTD加速仿真;步驟5 利用OpenCL標準庫函數(shù)clReleaseMemObjectO釋放顯存中存儲的數(shù)據(jù);步驟6 仿真完成后,釋放CPU內(nèi)存資源。所述的步驟3中,通過設(shè)置仿真所用處理器類型為GPU或者CPU來設(shè)置本發(fā)明方法是基于GPU的FDTD電磁場仿真或者基于CPU的FDTD電磁場仿真。所述的步驟4具體通過下面過程進行FDTD加速仿真設(shè)置時間迭代步數(shù);為每一個迭代步設(shè)置其對應(yīng)的開始時間;按照步驟1中設(shè)置的FDTD仿真參數(shù)設(shè)置激勵源;執(zhí)行基于OpenCL的磁場仿真計算內(nèi)核函數(shù);執(zhí)行基于OpenCL的電場仿真計算內(nèi)核函數(shù);保存需要的電磁場數(shù)據(jù)。本發(fā)明的優(yōu)點和積極效果在于(1)本發(fā)明的加速方法顯著提升了 FDTD電磁場仿真速度,與利用CPU計算相比速度提升可達5-10倍;(2)本發(fā)明的加速方法具有UPML吸收邊界條件,可以模擬電磁波在自由空間的傳播,使得FDTD電磁場仿真具有更廣泛的實際應(yīng)用;(3)本發(fā)明的加速方法既可以在GPU運行,也可以在CPU運行,并可利用多核CPU的并行性,采用本發(fā)明的方法進行電磁場仿真計算,可使其具有跨硬件平臺的通用性和可移植性, 使得FDTD電磁場仿真得到更大程度的普及。
圖1是本發(fā)明加速三維FDTD電磁場仿真方法的整體步驟流程圖2是本發(fā)明方法中UPML設(shè)置的部分示意圖3是本發(fā)明的GPU工作組示意圖4是基于OpenCL的磁場計算時y軸方向Ex和Ez數(shù)據(jù)設(shè)置的流程圖5是基于OpenCL的磁場計算時ζ軸方向Ex和Ey數(shù)據(jù)設(shè)置的流程圖6是基于OpenCL的磁場計算時χ軸方向Ey和Ez數(shù)據(jù)設(shè)置的流程圖7是基于OpenCL的電場計算時y軸方向Hx和Hz數(shù)據(jù)設(shè)置的流程圖8是基于OpenCL的電場計算時ζ軸方向Hx和Hy數(shù)據(jù)設(shè)置的流程圖9是基于OpenCL的電場計算時χ軸方向Hy和Hz數(shù)據(jù)設(shè)置的流程圖10是平面形式存儲電磁場示意圖11是本發(fā)明實施例中固定迭代時間步數(shù)1000,改變FDTD計算空間條件下GPU
和CPU計算時間對比圖,(a)是GPU和CPU計算時間對比圖,(b)是GPU和CPU計算時間比值的曲線示意圖;圖12是本發(fā)明實施例中固定FDTD仿真空間為120X120X120網(wǎng)格,改變迭代時間步數(shù)條件下GPU和CPU計算時間對比圖,(a)是GPU和CPU計算時間對比圖,(b)是GPU 和CPU計算時間比值的曲線示意圖;圖13是本發(fā)明實施例中固定迭代時間步數(shù)1000,改變FDTD仿真空間條件下基于 OpenCL的雙核并行CPU計算時間與普通CPU計算時間的對比圖;(a)是基于OpenCL的雙核并行CPU計算時間與普通CPU計算時間的對比圖,(b)是普通CPU計算時間與基于OpenCL的雙核并行CPU計算時間比值的曲線示意圖。
具體實施例方式下面將結(jié)合附圖和實施例對本發(fā)明做進一步的詳細說明。OpenCL是一種面向異構(gòu)平臺系統(tǒng)通用目的的并行編程開放式語言標準,利用 OpenCL可以簡化FDTD方法對電磁場仿真的設(shè)計與實現(xiàn),使GPU加速FDTD方法進行仿真這一技術(shù)更加通用。本發(fā)明的一種基于OpenCL的GPU加速三維FDTD電磁場仿真的方法,利用GPU并行處理特性并結(jié)合OpenCL接口功能實現(xiàn)了具有單軸各項異性完全匹配層(UPML) 吸收邊界條件的三維FDTD方法的高性能加速仿真。采用本發(fā)明的方法進行電磁場仿真具有跨硬件平臺的通用性和可移植性,基于OpenCL編譯的語言程序可以運行在CPU或GPU硬件上,并可充分發(fā)揮多核CPU的并行計算能力;另外本發(fā)明方法采用了 UPML吸收邊界條件, 可以很好的吸收傳播到邊界面處的電磁波,使電磁波不會發(fā)生虛擬反射,從而模擬電磁波在自由空間的傳播,在根本上擴展了三維FDTD方法的應(yīng)用范圍。如圖1所示,本發(fā)明基于OpenCL的GPU加速三維FDTD電磁場仿真的方法,包括下列步驟步驟1 參數(shù)設(shè)置及內(nèi)存空間動態(tài)申請。在進行FDTD電磁場仿真之前需要對電磁場仿真的參數(shù)進行設(shè)置及其內(nèi)存空間動態(tài)申請。步驟1-1 =FDTD電磁場仿真參數(shù)設(shè)置,包括設(shè)置空間步長、時間步長、UPML吸收邊界以及激勵源。步驟1-1-1 設(shè)置空間步長Δ α。為了減小FDTD的數(shù)值色散,F(xiàn)DTD仿真的空間步長的設(shè)置應(yīng)滿足的條件如(1)式。
權(quán)利要求
1.一種基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,該方法具體包括以下步驟步驟1 設(shè)置FDTD仿真參數(shù),為所述仿真參數(shù)動態(tài)申請內(nèi)存空間; 步驟2 構(gòu)建三維的電磁模型,對該電磁模型進行網(wǎng)格剖分;步驟3 初始化OpenCL的計算參數(shù),包括獲得FDTD仿真空間的大小、設(shè)置仿真所用處理器類型、創(chuàng)建上下文、獲得工作組的維數(shù)及大小信息、創(chuàng)建指令序列及數(shù)據(jù)緩存區(qū)、裝載 FDTD加速程序文件、聲明磁場仿真計算的內(nèi)核函數(shù)以及電場仿真計算的內(nèi)核函數(shù); 步驟4 基于OpenCL對三維電磁模型進行FDTD加速仿真; 步驟5 釋放顯存中存儲的數(shù)據(jù); 步驟6 仿真完成后,釋放CPU內(nèi)存資源;其中,OpenCL表示開放計算語言,GPU表示圖形處理器,F(xiàn)DTD表示時域有限差分。
2.根據(jù)權(quán)利要求1所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,步驟1具體包括步驟1-1 設(shè)置電磁場仿真參數(shù),包括如下步驟 步驟1-1-1 設(shè)置空間步長Δ α A
3.根據(jù)權(quán)利要求1所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,所述的步驟2具體包括以下兩步步驟2-1 簡單的電磁模型的構(gòu)建及網(wǎng)格剖分直接對該電磁模型建立三維幾何模型, 并進行網(wǎng)格剖分;步驟2-2 復(fù)雜的電磁模型的構(gòu)建及網(wǎng)格自動剖分利用建模軟件Auto CAD構(gòu)建三維幾何模型,或讀入已經(jīng)建立的三維幾何模型,不同電磁材料部件用圖層來區(qū)分,然后利用二次開發(fā)工具Object ARX開發(fā)自動剖分程序輸出有效網(wǎng)格位置及其對應(yīng)電磁材料參數(shù),生成幾何-電磁參數(shù)描述文件,然后調(diào)用該描述文件,將剖分網(wǎng)格和電磁參數(shù)讀入計算內(nèi)存。
4.根據(jù)權(quán)利要求1所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,所述的步驟3具體為步驟3-1 確定基于GPU的FDTD仿真空間的大小NxXNyXNz/4 ; 步驟3-2 設(shè)置仿真所用處理器類型從OpenCL標準庫中選取參數(shù)CL_DEVICE_TYPE_ GPU進行設(shè)置;所述的CL_DEVICE_TYPE_GPU表示仿真所用處理器為GPU ;步驟3-3 利用OpenCL標準庫函數(shù)clCreateContextFromType ()創(chuàng)建上下文,并利用 OpenCL標準庫函數(shù)clGetContex nfo()獲得上下文信息;步驟3-4 利用OpenCL標準庫函數(shù)clGetDevicelnfo ()獲得OpenCL的工作組的維數(shù)及大小信息;步驟3-5 利用OpenCL標準庫函數(shù)clCreateCommandQueue ()創(chuàng)建指令序列,并創(chuàng)建三維電磁場數(shù)據(jù)變量以及由UPML引入的三維臨時電磁參量的數(shù)據(jù)緩沖區(qū);步驟 3-6 利用 OpenCL 標準庫函數(shù) clCreateProgramffithSource ()裝載基于 OpenCL 的 FDTD加速程序文件,并利用OpenCL標準庫函數(shù)cIBuiIdProgramO將加速程序文件轉(zhuǎn)化為 GPU內(nèi)核可執(zhí)行的程序文件;步驟3-7 創(chuàng)建聲明基于OpenCL的磁場仿真計算的內(nèi)核函數(shù); 步驟3-8 創(chuàng)建聲明基于OpenCL的電場仿真計算的內(nèi)核函數(shù)。
5.根據(jù)權(quán)利要求1或2所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,所述的步驟4具體包括以下步驟步驟4-1 設(shè)置時間迭代步數(shù)n,則總的迭代時間為t = nX At ; 步驟4-2 為每一個迭代步設(shè)置其對應(yīng)的開始時間、+Δ Χ (η-1),其中、為仿真起始時刻;步驟4-3 按照步驟1中的激勵源設(shè)置方法設(shè)置激勵源; 步驟4-4 執(zhí)行基于OpenCL的FDTD磁場仿真計算內(nèi)核函數(shù)步驟4-4-1 在時間步η = 1時,利用OpenCL標準庫函數(shù)ClktKernelArgO取得FDTD 磁場仿真計算所用的三維電磁場數(shù)據(jù)變量以及三維臨時電磁參量的存儲地址;步驟4-4-2 當基于GPU進行仿真時,利用OpenCL標準庫函數(shù) ClEnqueueffriteBuffer (),將指令序列數(shù)據(jù)緩沖區(qū)中FDTD磁場仿真計算所用的三維電磁場數(shù)據(jù)變量以及三維臨時電磁參量傳遞到GPU顯存;步驟4-4-3 利用OpenCL標準庫函數(shù)cIEnqueueNDRangeKernel ()激活GPU內(nèi)核,進行FDTD磁場加速仿真;步驟4-4-4:如果需要對仿真后的磁場數(shù)據(jù)進行存儲,則利用OpenCL標準庫函數(shù) ClEnqueueReadBuffer ()將χ方向、y方向、ζ方向的磁場Hx、Hy、Hz由GPU顯存?zhèn)鬟f到CPU 內(nèi)存,以便在內(nèi)存中對磁場數(shù)據(jù)進行后處理;步驟4-5 執(zhí)行基于OpenCL的FDTD電場仿真計算內(nèi)核函數(shù)步驟4-5-1 在時間步η = 1時,利用OpenCL標準庫函數(shù)ClktKernelArgO取得FDTD 電場仿真計算所用的三維電磁場數(shù)據(jù)變量以及三維臨時電磁參量的存儲地址;步驟4-5-2 當基于GPU進行仿真時,利用OpenCL標準庫函數(shù) clEnqueuefeiteBufferO,將指令序列數(shù)據(jù)緩沖區(qū)中FDTD電場計算所用的三維電磁場數(shù)據(jù)變量以及三維臨時電磁參量傳遞到GPU顯存;步驟4-5-3 利用OpenCL標準庫函數(shù)cIEnqueueNDRangeKernel ()激活GPU內(nèi)核進行 FDTD電場加速仿真;步驟4-5-4:如果需要對仿真后的電場數(shù)據(jù)進行存儲,則利用OpenCL標準庫函數(shù) ClEnqueueReadBuffer ()將電場Ex、Ey、Ez由GPU顯存?zhèn)鬟f到CPU內(nèi)存,以便于在內(nèi)存中對電場數(shù)據(jù)進行后處理;步驟4-6 保存所需要的電磁場數(shù)據(jù)保存時間步Iitl下的空間電磁場數(shù)據(jù),以及保存所關(guān)心的位置點的電磁場在時間步Ii1 n2下的電磁場隨時間變化情況的數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,步驟4-4-3所述的磁場仿真加速計算的方法如下 步驟4-4-3-1 設(shè)置工作組大小為nxXnyXnz = 2X2X30 ;步驟4-4-3-2 設(shè)置全局存儲空間為整個FDTD仿真空間的大小,本地存儲空間為每個工作組的大小,每個FDTD立方體網(wǎng)格具體位置坐標(Ix,Iy, Iz)為
7.根據(jù)權(quán)利要求5所述的基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,步驟4-5-3所述的電場加速計算方法如下步驟4-5-3-1 設(shè)置全局存儲空間為整個FDTD仿真空間的大小,本地存儲空間為每個工作組的大小,每個FDTD立方體網(wǎng)格具體位置坐標(Ix,Iy, Iz)為
8.根據(jù)權(quán)利要求1所述的一種基于OpenCL的GPU加速三維時域有限差分電磁場仿真的方法,其特征在于,所述的步驟5具體是利用OpenCL標準庫函數(shù)clReleaseMemOb ject () 來釋放顯卡中存儲的數(shù)據(jù)。
全文摘要
本發(fā)明提出一種基于OpenCL的GPU加速三維時域有限差分(FDTD)電磁場仿真的方法,應(yīng)用于電磁場仿真分析領(lǐng)域,利用OpenCL簡化FDTD方法對電磁場仿真的設(shè)計與實現(xiàn)。首先設(shè)置FDTD仿真參數(shù)并動態(tài)申請內(nèi)存空間,構(gòu)建三維的電磁模型并進行網(wǎng)格剖分,然后初始化OpenCL的計算參數(shù),對三維電磁模型基于OpenCL進行FDTD加速仿真,最后用OpenCL標準庫函數(shù)釋放顯存中存儲的數(shù)據(jù),釋放CPU內(nèi)存資源。本發(fā)明方法顯著提升了FDTD電磁場仿真速度,與利用CPU計算相比速度提升可達5-10倍,且具有UPML吸收邊界條件,可以模擬電磁波在自由空間的傳播,使得FDTD電磁場仿真具有更廣泛的實際應(yīng)用。
文檔編號G06F17/50GK102207987SQ20111014444
公開日2011年10月5日 申請日期2011年5月31日 優(yōu)先權(quán)日2011年5月31日
發(fā)明者代健, 褚天舒 申請人:中國航天標準化研究所