• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Systenl Generator的流體力學(xué)算法建模及仿真

      2017-07-14 17:18:19韓偉謝建春
      電腦知識(shí)與技術(shù) 2017年16期
      關(guān)鍵詞:性能優(yōu)化流體力學(xué)

      韓偉+謝建春

      摘要:為了提高流體力學(xué)算法EULER3D程序的性能,提出了一種基于System Generator的軟硬件結(jié)合的優(yōu)化方法。在分析算法流程和耗時(shí)函數(shù)的基礎(chǔ)上,用System Generator模塊搭建系統(tǒng)模型,實(shí)現(xiàn)EULER3D的核心計(jì)算功能,并進(jìn)行仿真。利用高速以太網(wǎng)接口實(shí)現(xiàn)PC和FPGA之間的數(shù)據(jù)交互,最終實(shí)現(xiàn)了EULER3D程序的整體性能優(yōu)化。將實(shí)驗(yàn)結(jié)果與直接編寫VHDL代碼開發(fā)方法比較,結(jié)果表明,使用System Generator能夠降低FPGA編程要求,提高開發(fā)效率。

      關(guān)鍵詞:System Generator;FPGA;模型化設(shè)計(jì);流體力學(xué);性能優(yōu)化

      隨著FPGA的高速發(fā)展,F(xiàn)PGA中的可用資源不斷增加,集成了多種用于數(shù)字信號(hào)處理的IP核。為了適應(yīng)這種發(fā)展趨勢(shì),各FPGA廠商都推出了基于Matlab接口的代碼自動(dòng)生成工具,Xilinx公司的System Generator就是其中的一個(gè)代表。它是一種系統(tǒng)級(jí)(或算法級(jí))的設(shè)計(jì)工具,在Matlab/Simulink提供的高層運(yùn)行環(huán)境中對(duì)所需的硬件進(jìn)行圖形化建模,利用可以自動(dòng)轉(zhuǎn)化成所需的VHDL或Verilog語(yǔ)言的基本模塊組件大型系統(tǒng),提高開發(fā)效率。由System Generator構(gòu)建的模型可用Simulink進(jìn)行仿真和調(diào)試,算法模型的修改方便,時(shí)序設(shè)計(jì)簡(jiǎn)單。在不降低執(zhí)行效率和可靠性的情況下,使得FPGA不僅具有硬件級(jí)的運(yùn)行速度,又表現(xiàn)出軟件的易重構(gòu)性。FPGA上的一定規(guī)模的系統(tǒng)設(shè)計(jì)可以借助System Generator等工具提高開發(fā)效率,在模糊控制器、直接數(shù)字頻率合成器和信號(hào)濾波器等諸多設(shè)計(jì)中得到應(yīng)用,取得了良好的效果。

      對(duì)于某些并行計(jì)算軟件而言,CPU、GPU的并行計(jì)算能力有限,而FPGA則能夠提供更好的并行計(jì)算支持。通過運(yùn)用軟硬件結(jié)合的方法,將軟件中計(jì)算量集中的核心代碼移植到FP-GA上由硬件實(shí)現(xiàn),以期獲得更快的程序執(zhí)行速度。

      本文分析了流體力學(xué)算法EULER3D的算法流程和核心運(yùn)算,在不同層次上建立算法模型,利用System Generator工具進(jìn)行仿真并在FPGA上實(shí)現(xiàn),算法其他部分在PC機(jī)上進(jìn)行計(jì)算,這樣以軟硬件結(jié)合的方式提高了程序的執(zhí)行效率。通過與手工編寫VHDL代碼的開發(fā)方法進(jìn)行對(duì)比,可以反映出SystemGenerator工具在開發(fā)周期、資源利用等方面的優(yōu)勢(shì)。

      1EULER3D算法簡(jiǎn)介

      1.1算法原理

      EULER3D算法是流體力學(xué)計(jì)算的一個(gè)重要的步驟,計(jì)算非均勻流場(chǎng)中質(zhì)元的密度、速度和能量的變化情況。相關(guān)的數(shù)值算法公式為

      其中,u=(u,v,w)是流體速度,T是溫度,p是壓強(qiáng),是熱膨脹因子,g是重力場(chǎng),是熱擴(kuò)散性。

      每隔時(shí)間計(jì)算每個(gè)質(zhì)元在4個(gè)“相鄰質(zhì)元”的作用下發(fā)生狀態(tài)變化,“相鄰質(zhì)元”可以是真實(shí)的質(zhì)元,也可以是機(jī)翼邊界或者遠(yuǎn)場(chǎng)邊界。該算法分為以下幾個(gè)計(jì)算步驟:初始化;讀入數(shù)據(jù),填充空位;備份數(shù)據(jù);計(jì)算時(shí)間步長(zhǎng);計(jì)算流場(chǎng)變化;更新流場(chǎng)數(shù)據(jù);輸出計(jì)算結(jié)果。算法流程如圖1所示。

      1.2程序熱點(diǎn)分析

      本文針對(duì)EULER3D的多核CPU C語(yǔ)言版本(https://github.com/pathseale/rodinia/blob/master/cuda/cfd/euler3d.cu)進(jìn)行優(yōu)化。利用gprof工具分析程序中各函數(shù)的調(diào)用次數(shù)和耗時(shí)比例,對(duì)40萬(wàn)質(zhì)元運(yùn)算量的一次分析結(jié)果如圖2所示。由圖2可見,程序運(yùn)行時(shí)調(diào)用次數(shù)較多的函數(shù)有compute_flux函數(shù)、time_step函數(shù)、compute_velocity函數(shù)、compute_speed_sqd函數(shù)等。compute_velocity及其子函數(shù)包含了大量的浮點(diǎn)數(shù)乘法、除法和開方運(yùn)算,耗時(shí)比重達(dá)到了總運(yùn)行時(shí)間的八成以上,因此compute_velocity函數(shù)可以考慮作為利用硬件加速和優(yōu)化的對(duì)象。

      2基于System Generator的EULER3D算法的建模

      System Generator是Xilinx公司和MathWorks公司聯(lián)合開發(fā)的基于FPGA的建模和設(shè)計(jì)工具。它可以將算法表示成為一個(gè)高度抽象的模塊,自動(dòng)將算法模型映射為一個(gè)基于FPGA的硬件設(shè)計(jì)方案。設(shè)計(jì)者不必清楚硬件描述語(yǔ)言,而關(guān)注于算法模型就可以完成硬件設(shè)計(jì),另一方面,System Generator根據(jù)算法模型自動(dòng)生成測(cè)試文件,這使得仿真更加方便。這樣就將開發(fā)時(shí)間主要用于算法模型的設(shè)計(jì)上,節(jié)約了編碼和調(diào)試時(shí)間。

      根據(jù)程序熱點(diǎn)分析結(jié)果,將compute_flux函數(shù)用硬件實(shí)現(xiàn)有望很好地提高算法的整體效率。compute_flux調(diào)用的子函數(shù)有compute_velocity、compute_speed_sqd、compute_pressure、corn-pute_speed_of_sound和compute_flux_contribution。采用自底向上的建模過程,先構(gòu)建compute_velocity等的模型,生成子系統(tǒng),再利用這些子系統(tǒng)構(gòu)建出compute_flux模型。

      2.1底層模型

      對(duì)compute_velocity等底層函數(shù)建模,涉及的基本運(yùn)算有加、減、乘、除和開方運(yùn)算,它們都可以直接對(duì)應(yīng)到svstem Gen-erator的Xilinx Blockset工具箱中的5種基本運(yùn)算模塊。構(gòu)建底層模型之后,可以生成對(duì)應(yīng)的子系統(tǒng)(如compute_velocity.mdl),便于上層引用。構(gòu)建compute_velocity函數(shù)的模型及其對(duì)應(yīng)的子系統(tǒng),如圖3所示。注意這里使用的基本模塊均來自Xilinx Blockset工具箱。在compute_velocity函數(shù)內(nèi)作了3次除法,外部表現(xiàn)為4個(gè)輸入和3個(gè)輸出。其他底層模型有com-pute_flux_contribution、compute_pressure、compute_speed_of_sound、compute_speed_sqd,建立方式與compute_velocity類似。

      2.2頂層模型

      在底層函數(shù)模型的基礎(chǔ)上,建立con-pute_flux函數(shù)的模型,即頂層模型。con-pute_flux含有循環(huán)體和內(nèi)存索引結(jié)構(gòu)(大型數(shù)組),為在FPGA上實(shí)現(xiàn),需要將遍歷質(zhì)元鄰居的循環(huán)體展開,并去除索引結(jié)構(gòu),這里假定索引結(jié)果是可以直接獲得的。除此之外,判斷相鄰質(zhì)元類型的分支語(yǔ)句需要對(duì)應(yīng)到system Generator的Switch模塊上。構(gòu)建的頂層模型如圖4所示。其中Neighbor1~4是對(duì)4重循環(huán)的展開,計(jì)算一個(gè)質(zhì)元受鄰居質(zhì)元的作用,Add模塊再將速度和質(zhì)量的變化合成起來。兩個(gè)Delay模塊實(shí)現(xiàn)了串行數(shù)據(jù)和并行數(shù)據(jù)之間的轉(zhuǎn)換。

      圖4中的Neighbor算子調(diào)用了底層模型,其數(shù)據(jù)流示意圖如圖5所示。這里利用兩個(gè)質(zhì)元的狀態(tài)及粘度經(jīng)驗(yàn)值(nor-mals)計(jì)算出流量的變化。Neighbor算子之間的并行計(jì)算可以提高算法效率。

      3實(shí)驗(yàn)仿真與效率分析

      3.1實(shí)驗(yàn)平臺(tái)

      本文實(shí)驗(yàn)采用FPGA軟件/硬件協(xié)同設(shè)計(jì)的方式,實(shí)驗(yàn)平臺(tái)由PC和FPGA組成,F(xiàn)PGA為Kintex7 xc7k160t。PC運(yùn)行EULER3D程序直到compute_flux函數(shù),將相關(guān)數(shù)據(jù)發(fā)送到FP-GA片上系統(tǒng)。片上系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行相關(guān)計(jì)算后,再把計(jì)算結(jié)果傳送回PC,以進(jìn)行后續(xù)計(jì)算。PC機(jī)和FPGA之間通過千兆以太網(wǎng)口進(jìn)行數(shù)據(jù)傳輸。

      3.2仿真結(jié)果

      在System Generator中設(shè)定目標(biāo)板及時(shí)鐘等選項(xiàng),應(yīng)用自動(dòng)生成的testbench測(cè)試文件,system Generator系統(tǒng)模型能夠在Simulink環(huán)境下完成系統(tǒng)仿真驗(yàn)證。對(duì)開發(fā)的底層模型和頂層模型先后進(jìn)行仿真,驗(yàn)證算法模型的正確性。其中,com-pute_velocity的仿真結(jié)果如圖6所示。該模塊內(nèi)有3個(gè)浮點(diǎn)除法運(yùn)算,由仿真輸出可知計(jì)算的結(jié)果是正確的。

      為了驗(yàn)證應(yīng)用System Generator設(shè)計(jì)出來的算法模型輸出結(jié)果的正確性和精確性,使用Simulink與System Generator并行地搭建了上述討論的EULER3D算法模型,并要求兩者的結(jié)果誤差不超過千分之一。System Generator系統(tǒng)參量設(shè)置如下:系統(tǒng)的采樣率為100MHz,F(xiàn)PGA時(shí)鐘頻率為10ns,仿真時(shí)間為20μs。在仿真環(huán)境相同的情況下,100組仿真數(shù)據(jù)都顯示誤差不超過千分之一,滿足設(shè)計(jì)要求。

      仿真結(jié)果正確后,生成VHDL代碼,在Xilinx ISE中綜合和實(shí)現(xiàn),最后下載到FPGA中。FPGA上時(shí)鐘頻率為100MHz,compute_flux運(yùn)算需要240個(gè)時(shí)鐘周期,加上數(shù)據(jù)傳輸耗時(shí),實(shí)際上一次運(yùn)算需要2.8μs。相比于單獨(dú)在3.0GHz雙核處理器的PC上運(yùn)行的4μs,局部加速比達(dá)到了4/2.8=1.43。程序的整體運(yùn)行時(shí)間節(jié)約了16%左右。

      3.3效率分析

      為了分析基于System Generator的開發(fā)效率,采用直接編寫VHDL代碼的方式實(shí)現(xiàn)compute_flux函數(shù),實(shí)現(xiàn)相同的功能。比較兩種方法的開發(fā)時(shí)間、資源使用率和程序執(zhí)行時(shí)間,比較結(jié)果見下表1。從表1中可以看出,基于SystemGenerator的開發(fā)方法節(jié)約了13%的開發(fā)時(shí)間,資源利用率較低,程序執(zhí)行時(shí)間基本相同。另外,兩種的計(jì)算精度是一致的。由此可見,Sys-tem Generator在保證資源利用率和執(zhí)行時(shí)間的基礎(chǔ)上提高了開發(fā)效率,降低了對(duì)開發(fā)人員的要求。

      4結(jié)束語(yǔ)

      本文介紹了在System Generator環(huán)境下建立模型實(shí)現(xiàn)EUL-ER3D算法的方法,經(jīng)過仿真和生成VHDL代碼的過程,在FP-GA和PC上快速、高效地實(shí)現(xiàn)了該軟件算法,相比于PC機(jī),處理速度有明顯提高。本文模塊化的設(shè)計(jì)簡(jiǎn)化了設(shè)計(jì)流程,使得模型易于修改。通過與手工編碼對(duì)比發(fā)現(xiàn),利用System Gener-ator開發(fā)快速而高效,使得FPGA在并行算法開發(fā)和實(shí)現(xiàn)方面具有較好的效果和更多的優(yōu)勢(shì)。

      猜你喜歡
      性能優(yōu)化流體力學(xué)
      SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化的幾點(diǎn)分析
      基于改善水流特性的超聲波熱量表設(shè)計(jì)
      Web應(yīng)用的前端性能優(yōu)化
      論布朗庫(kù)西與現(xiàn)代極簡(jiǎn)主義雕塑
      660MW超超臨界火電機(jī)組RB性能優(yōu)化
      計(jì)算流體力學(xué)在船舶線型優(yōu)化中的應(yīng)用
      任務(wù)引領(lǐng)教學(xué)法在流體力學(xué)課程中的實(shí)踐探析
      Oracle數(shù)據(jù)庫(kù)性能調(diào)整與優(yōu)化分析
      科技視界(2016年1期)2016-03-30 14:27:50
      五大连池市| 广德县| 华阴市| 自贡市| 福建省| 古浪县| 安国市| 牡丹江市| 江都市| 东平县| 延川县| 济宁市| 卢龙县| 潢川县| 嵊州市| 元阳县| 绥化市| 宁强县| 耿马| 莱芜市| 万年县| 时尚| 涞源县| 敖汉旗| 兴隆县| 海安县| 磐安县| 石台县| 浮山县| 广灵县| 沁源县| 栾城县| 丹寨县| 牟定县| 贵州省| 玛曲县| 周至县| 寻乌县| 子洲县| 临泽县| 香格里拉县|