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

北斗衛星信號仿真器的GPU速度優化

2016-10-22 09:05:22胡鐵喬趙小龍
中國民航大學學報 2016年3期
關鍵詞:優化信號

胡鐵喬,趙小龍,陳 明

(1.中國民航大學智能信號與圖像處理重點實驗室,天津 300300;2.北京一樸科技有限公司,北京 100080)

北斗衛星信號仿真器的GPU速度優化

胡鐵喬1,趙小龍1,陳明2

(1.中國民航大學智能信號與圖像處理重點實驗室,天津300300;2.北京一樸科技有限公司,北京100080)

針對衛星信號軟件仿真器耗時長的問題,提出基于圖形處理器(GPU)的速度優化方法并介紹了現有衛星信號仿真器的特點。在分析仿真器結構的基礎上給出了結構調整方案,介紹了不同GPU存儲器的特點及優化方法?;谟嬎憬y一設備架構(CUDA)實現了北斗衛星信號仿真器的數據實時生成。對速度優化后的仿真器進行了速度測試和性能驗證。介紹了仿真器程序優化過程,優化后的仿真器大大提高了信號生成速度和科研效率,對程序優化具有一定的借鑒意義。

仿真器;圖形處理器;計算統一設備架構

除了美國的GPS導航系統和歐洲的伽利略導航系統,中國也發展了自己的導航系統,即北斗衛星導航系統(BeiDou Navigation Satellite System)[1]。衛星信號仿真器在全球導航衛星系統(GNSS)接收機的開發過程中起著重要作用。相對于利用真實衛星信號,軟件模擬器提供可控場景,提高接收機的研發效率[2-3]?;谟布姆抡嫫飨鄬碗s,技術難度比較大[3],而基于PC平臺的軟件模擬器則具有結構靈活、開放、低成本等優點[4-6]。但由于軟件仿真器在生成中頻數據的過程中需進行大量數據計算,在CPU上進行串行計算需消耗的時間比較長,不能產生實時信號,因此計算速度成為影響仿真器效率的關鍵因素。

在利用軟件仿真器進行場景仿真時,通用的做法是先將生成的數據進行存盤,使用時再去讀取文件。GPU是一種高度并行化的眾核處理器,可以利用大量處理單元進行并行計算,CUDA是由NVIDIA在2006年提出的利用CPU實現通用計算的編程模型,研發人員可以使用熟悉的C語言編寫CUDA并行程序[7],為仿真器的速度優化提供了便利,也為仿真器實時生成中頻數據提供了可能。使用實時化仿真器生成信號并通過硬件回放卡實時回放信號,完全可以達到與硬件仿真器同樣的效果,同時具有容易擴充、方便調整的優點。實時化仿真器可大大縮短信號生成時間,顯著提高科研效率。

1 北斗衛星信號仿真器

1.1北斗衛星信號結構

B1、B2信號由I、Q兩個支路組成,信號由“測距碼+導航電文”正交調制在載波上。B1、B2信號表達式分別為

其中:上標j表示衛星編號;下標B1I表示B1頻點I支路,B1Q表示B1頻點Q支路,B2I表示B2頻點I支路,B2Q表示B2頻點Q支路;A表示振幅;C表示測距碼;D表示調制在測距碼上的數據碼;f1表示B1信號載頻;f2表示B2信號載頻。

1.2總體功能

仿真器功能模塊包括:衛星位置和用戶位置計算模塊、偽隨機碼生成模塊、導航電文生成模塊、隨機噪聲生成模塊、誤差仿真模塊和信號生成(調制)模塊。信號仿真器總體流程如圖1所示。

圖1 衛星信號仿真器流程圖Fig1 Simulator flow chart

配置參數由配置文件獲取,配置文件中記錄了配置的信號頻率(B1頻點、B2頻點)、中頻頻率、采樣率、載噪比、前端帶寬、量化位數、是否正交輸出、是否仿真誤差、軌跡文件路徑等參數。程序需要從文件中讀取用戶設置的起始仿真時間、仿真時長、用戶速度、用戶軌跡類型等參數。為了加快仿真速度,用戶位置提前計算好,使用時再進行查表。仿真器每次仿真0.1 s的數據,在0.1 s時間內判斷一次可見星,每顆可見星計算一次碼延時(Tp)和載波相位延時(Tc)、進行一次信號調制(信號生成),添加隨機噪聲并進行一次量化,最后寫入文件。如果設置的仿真時長全部完成,則結束程序[4-6]。

1.3仿真器結構調整

信號仿真器的速度優化瓶頸是信號生成部分,由于計算量較大,因此該部分是優化的重點。信號生成部分是一個循環結構,該部分的偽代碼為

為適應并行化計算,程序結構需適當調整,并且為了與信號回放卡連接,信號生成部分的速度要足夠快。因此為盡量降低該部分的工作量,將判斷可見星的計算放在信號生成模塊之外,使用時進行查表。同時,衛星信號的碼延時和載波相位延時計算(Tp、Tc真值的生成及插值計算)比較耗時,因此該部分也調整到了信號生成模塊之外(提前生成真值)。

2 仿真器的GPU優化

2.1CUDA編程模型

在CUDA編程模型中,PC機的CPU稱為主機(Host),GPU稱為設備(Device),二者協同工作。在一個完整的程序中,CPU主要處理串行計算和邏輯性較強的事務,而GPU則負責執行高度線程化的并行處理任務[9]。在GPU上運行的CUDA并行計算函數稱為內核(kernel),一個完整的CUDA程序由主機端的串行處理函數和一系列設備端的內核并行處理函數共同組成,如圖2所示。

在CUDA架構下,線程(Thread)是GPU執行的最小單位,若干個線程組成線程塊(Block),若干個線程塊構成一個網格(Grid),一個網格對應一個內核函數。

圖2 CUDA編程模型Fig2 CUDA programming model

2.2仿真器的GPU優化

2.2.1存儲器優化

CUDA程序在運行前需將數據從主機端復制到顯存中,計算結束后將數據從顯存復制回內存。全局存儲器位于顯卡的顯存中,CPU和GPU都能對其進行讀寫訪問。同時,所有線程都能讀寫其任意位置,一般用于存儲大型的公用數據,如仿真器中用到的時間數組,以62 MHz采樣率為例,每次計算0.1 s,則時間數組有6.2 M個double型元素,共占用49.6 M存儲空間,故該變量只能位于全局存儲器。此外,生成調制信號用到的正弦和余弦表、星歷參數等數據量較大的參數都位于全局存儲器。在計算能力3.5的顯卡上,全局存儲器具有緩存,如果遵守全局存儲器的對齊要求,就可避免分區沖突,有效利用帶寬,否則會導致較低的訪問效率[7]。

常量存儲器(constant memory)顧名思義就是存儲常數的存儲器,是另一種具有緩存的存儲器,GPU生成信號過程中用到的參數如采樣率、中頻頻率等可以存儲在常量存儲器。

使用頁鎖定存儲器(pinned memory)可以明顯提高主機內存和設備全局存儲器的數據傳輸速度。如生成的衛星信號位于全局存儲器,同時在內存上使用cudaHostAlloc(void**pHost,size_t size,unsigned int flags)函數分配一段頁鎖定存儲器,并且flags參數配置為cudaHostAllocMapped,即在內存上分配的空間可以映射到顯存。使用cudaHostGetDevicePointer(void** pDevice,void*pHost,unsigned int flags)函數可以獲得該內存空間映射到顯存的地址指針,這就意味著映射的頁鎖定存儲器有兩個地址指針,一個位于內存,另一個位于顯存。這樣CPU和GPU都可以訪問該空間,并且沒有顯式的數據傳輸,速度較一般的數據拷貝方式要快[11-12]。

此外,共享存儲器(shared memory)的使用可以顯著提高數據訪問速度。Shared memory位于GPU片內,訪問速度僅次于寄存器,同一個塊內的線程都可以訪問,是Block內線程通信的一種理想方式,一般用于存儲Block線程公用數據。在沒有存儲體沖突(bank conflict)的情況下其速度可達到寄存器的速度[7]。Shared memory是以bank為單位組織的,在32位模式下bank以4字節為單位組織,相鄰的4字節位于不同的bank;在64位模式下,bank以8字節為單位組織,相鄰的8字節位于不同的bank。在32位模式下,以32×32的float型數組為例介紹共享存儲器的訪問特點,如圖3所示。

圖3 32×32 float型數組Fig3 32×32 float array

1)1個 warp內的 32個線程同時訪問 32個bank,其特點是每次只能響應1個線程的訪問請求,因此32個bank同時響應32個線程,沒有訪問沖突;

2)32個線程同時訪問共享存儲器中的1個bank,由于CUDA的廣播機制,該bank中的數據會一次廣播給warp中的所有線程,因此也沒有訪問沖突;

3)當所有warp中的所有線程同時訪問同一列時,由于同一列屬于1個bank,而1個bank每次只能相應1個線程的訪問請求,因此有沖突。

2.2.2部分算法的改進

為了適應并行計算,在不影響仿真器性能的條件下,部分算法進行了改進。以Tp、Tc的插值算法為例,原來使用了三階內插算法,計算相對耗時且不利于并行計算,現改為線性內插算法,使用y=kx+b式近似推出所有采樣點的Tp、Tc值。信號生成的周期是0.1 s,Tp、Tc真值的生成周期是1 ms,因此在1個信號生成周期內有100個真值,每個塊處理fs/100個點。

以tp[100]表示提前生成的真值,因為有100個真值,因此在GPU上需要分配100個Block,每個Block的大小根據需要分配,如可分配128個線程。每個Block計算1個斜率kbid,下標bid代表每個Block的ID。在CPU上串行執行的線性內插部分代碼為

該并行計算模型如圖4所示。

圖4 100個Block并行運行示意圖Fig.4 100 Blocks run in parallel

這樣在GPU上就有100個Blcok同時執行,計算速度大大加快。

2.2.3加噪和量化函數的優化

加噪函數(AddNoise())僅僅做了一次加法運算,并且CPU生成的隨機噪聲在信號生成模塊之前已經復制到顯存,對全局存儲器的訪問滿足對齊要求,因此在GPU上完成加噪功能速度很快。由于量化函數(Quantization())在計算過程中需使用所有數據的和,故在量化函數中使用了并行規約求和思想[10],并行規約算法適合在GPU上并行執行。加噪函數和量化函數分別在CPU和GPU上的運行耗時對比如表1所示。

表1 兩個函數并行化前后速度對比Tab.1 Speed contrast before and after parallelization

其他優化手段包括指令優化等,如求模運算每次需要32個時鐘周期,而改為等價的乘法指令則只需要4個時鐘周期[9]。數據的存儲精度對速度同樣會有較大的影響,由于仿真器量化后的存儲類型是char型,故在不影響精度的情況下,可將生成信號的類型由double型改為float型,這樣精度沒有損失,但卻增加了運算吞吐量,因此運行速度也會加快。

3 優化后的仿真器速度及性能測試

對仿真器進行優化的主要目的是提高信號生成速度,同時又不損失性能,以下將分別驗證。

3.1速度測試

信號生成部分的調制過程與在CPU上計算沒有差別,不同的是在CPU上是單線程計算,而在GPU上同時有大量線程計算。由于對存儲器的訪問進行了細致的優化以及對仿真器結構的調整,因此信號生成速度大大加快。測試時長設置為10 s、50 s、100 s,分別使用優化前的CPU版本和優化后的GPU版本進行測試。采樣率為80 MHz,中頻頻率為29.52 MHz,測試用的PC平臺為HP Z820工作站,運行程序的顯卡為GTX TITIAN Black高性能游戲顯卡,該顯卡核心為英偉達GK110,具有2 880個流處理單元,核心頻率為889 MHz,板載6 G容量的GDDR5顯存,顯存位寬384 Bit,采用PCI-E 3.0接口,計算能力為3.5。測試結果如表2所示。

表2 優化前后速度測試對比Tab.2 Speed contrast before and after parallelization

由表2可知,仿真器速度已達到實時要求,加速比達到60左右,并有一定冗余量,這為連接硬件回放卡奠定了基礎。

3.2性能測試

用軟件接收機(SDR)對仿真器生成的數字中頻文件進行驗證。測試使用北京一樸科技有限公司的GNSS仿真驗證軟件,該軟件由GPS-L1及北斗B1、B2、B3頻點的仿真和驗證功能部分組成。

用實時化后的仿真器生成數字中頻數據文件,測試頻點為BD2-B3頻點,初始WGS84坐標為(40,120,100),初始ENU速度為(3,4,0),載噪比設置為43。

在GNSS仿真驗證軟件菜單欄選擇“系統類別”中的“接收機”選項,再點擊“參數設置”配置接收機參數,本次測試的參數配置如圖5所示。

圖5 參數設置Fig.5 Parameter setting

點擊菜單欄“運行”后,GNSS仿真驗證軟件運行界面如圖6所示。軟件主界面分星空圖、位置信息、圖表信息、通道信息4部分,仿真器位置及速度在位置信息部分會顯示。由圖6可看出位置及速度解算均正確,證明仿真器經CUDA速度優化后,性能沒有損失。

圖6 軟件接收機Fig.6 GNSS SDR

4 結語

針對基于CPU的衛星信號仿真器生成信號速度慢的缺點,基于GPU利用CUDA架構對仿真器進行優化,使其速度大大提高,滿足實時生成信號的要求,為連接回放卡實時回放信號提供了基礎。經接收機驗證,沒有性能損失。后續研究將通過進一步提高GPU對資源的利用率來提高計算速度,同時研究利用GPU實時生成多天線信號。

[1]北斗衛星導航系統網站.北斗衛星導航系統簡介[EB/OL].(2015-05-02)[2015-09-02].http://www.beidou.gov.cn.

[2]王帥.GNSS多頻段衛星信號模擬器關鍵技術研究及其實現[D].桂林:桂林電子科技大學,2014.

[3]王軍.GPS衛星信號模擬器的硬件實現[D].西安:西安理工大學,2011.

[4]傅金梅.GNSS中頻衛星信號的仿真研究 [D].西安:西安電子科技大學,2014.

[5]熊智華.GNSS中頻衛星信號的仿真研究 [D].南京:南京理工大學,2012.

[6]侯博,謝杰,范志良,等.多模衛星信號模擬器設計與實現[J].計算機測量與控制,2012,20(1):170-172.

[7]NVIDIA.CUDACProgrammingGuidv7.0[EB/OL].(2015-03-05)[2015-08-30].http://www.signal-pro.org.cn/CN/column/column106.shtml.

[8]王顥.GNSS衛星信號模擬器的軟件設計與實現 [D].西安:西安電子科技大學,2013.

[9]劉金碩,鄧娟,周崢,等.基于CUDA的并行程序設計[M].北京:科學出版社,2014:92-108.

[10]MARK HARRIES.Optimizing Parallel Reduction in CUDA[EB/OL].(2015-03-05)[2015-09-02].http://docs.nvidia.com/cuda/samples/6_ Advanced/redu-ction/doc/reduction.pdf.

[11]NVIDIA.CUDA RunTime API v7.0[EB/OL].(2015-03-05)[2015-08-31].http://docs.nvidia.com/cuda/cuda-runtime-api/index.html.

[12]NVIDIA.CUDACBestPracticeGuidev7.0[EB/OL].(2015-03-05).[2015-09-02].http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/.

(責任編輯:黨亞茹)

Speed optimization of Beidou satellite signal simulator based on GPU

HU Tieqiao1,ZHAO Xiaolong1,CHEN Ming2
(1.Intelligent Signal and Image Processing Key Lab of Tianjin,CAUC,Tianjin 300300,China;2.Beijing YIPU Technology Co.,Ltd,Beijing 100080,China)

The existing Beidou satellite signal software simulator is time-consuming,a method of program performance optimization based on GPU(graphic processing unit)is proposed.Introducing the features of existing satellite signal simulator,the structure adjustment plan is given after analyzing the simulator structure.Characteristics and optimization methods of different GPU memory is introduced and the real-time signal generator based on CUDA(compute unified device architecture)is realized.The performance and speed of optimized simulator are tested and verified with detailed optimizing process.The optimized simulator speeds up the signal generation and improves the efficiency of science research.The current method has a certain referencial significance on program optimization.

simulator;graphics processing unit;unified compute device architecture

TN96;V241.52

A

1674-5590(2016)03-0033-05

2015-09-06;

2015-10-16

國家自然科學基金項目(61271404,61471363);中央高?;究蒲袠I務費專項(3122014D008)

胡鐵喬(1970—),男,河南洛陽人,副教授,碩士,研究方向為自適應信號處理、陣列信號處理、硬件系統的設計與實現.

猜你喜歡
優化信號
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
完形填空二則
孩子停止長個的信號
基于LabVIEW的力加載信號采集與PID控制
一種基于極大似然估計的信號盲抽取算法
主站蜘蛛池模板: 精品欧美日韩国产日漫一区不卡| 国产成人精品2021欧美日韩| 亚洲国内精品自在自线官| 国产全黄a一级毛片| 久久久久88色偷偷| 青青青视频蜜桃一区二区| 麻豆精品久久久久久久99蜜桃| 欧美色伊人| 国产1区2区在线观看| 亚洲乱强伦| 亚洲综合片| 麻豆国产原创视频在线播放 | 亚洲欧美激情另类| 婷婷丁香色| 国产成人免费高清AⅤ| 美女无遮挡免费视频网站| 成人午夜在线播放| 一本色道久久88综合日韩精品| 99久视频| 丁香五月激情图片| 欧美国产精品不卡在线观看| 性喷潮久久久久久久久| 亚洲成人高清无码| 国产白浆视频| 国产91精选在线观看| 国产日韩欧美在线视频免费观看| 老司机午夜精品网站在线观看 | 视频二区欧美| 免费无码AV片在线观看国产| 午夜少妇精品视频小电影| 五月婷婷精品| 亚洲AⅤ波多系列中文字幕| 亚洲黄网在线| 亚洲欧美日韩动漫| 成人综合网址| 亚洲国产日韩在线观看| 日韩在线播放中文字幕| 国产精品无码作爱| 狂欢视频在线观看不卡| 97视频免费在线观看| a毛片在线| 91久久精品国产| 一区二区自拍| 欧美亚洲欧美区| 欧美黑人欧美精品刺激| 国产真实二区一区在线亚洲| 九九线精品视频在线观看| 国产在线高清一级毛片| 凹凸国产熟女精品视频| 亚洲精品手机在线| 99久久性生片| 国产最爽的乱婬视频国语对白| 美女国产在线| 亚洲无码高清免费视频亚洲| 久久免费视频播放| 日韩无码白| 亚洲天堂网在线视频| 免费国产小视频在线观看| 99在线免费播放| AV不卡在线永久免费观看| 美美女高清毛片视频免费观看| 日本三级黄在线观看| 亚洲AⅤ无码日韩AV无码网站| 国产丝袜第一页| 国产内射在线观看| 这里只有精品在线播放| 国产亚洲精久久久久久无码AV| 国产特级毛片aaaaaa| 欧美成a人片在线观看| 免费人成黄页在线观看国产| 亚洲中文字幕97久久精品少妇| 中字无码av在线电影| 国产精品毛片在线直播完整版| 色婷婷天天综合在线| 国产麻豆另类AV| 婷婷色在线视频| 日韩a级毛片| 国产麻豆精品久久一二三| 波多野结衣的av一区二区三区| 99爱在线| 精品一区二区三区自慰喷水| av一区二区无码在线|