來源:德思特分享| 突破FPGA限制:德思特TS-M4i系列數(shù)字化儀利用GPU加速實現(xiàn)高效塊平均處理
原文鏈接:https://mp.weixin.qq.com/s/vV0kwM7Rh3tomrGwgHSGlw
歡迎關(guān)注虹科,為您提供最新資訊!
#塊平均 #數(shù)據(jù)處理 #GPU
應(yīng)用背景
塊或分段內(nèi)存平均模式常用于在不同應(yīng)用當(dāng)中,移除信號中不相干的噪聲。不管是哪家的數(shù)字化儀制造商,幾乎所有基于FPGA實現(xiàn)的塊平均模式都會受到塊或者段內(nèi)存大小的限。該限制一般取決于FPGA的容量,最大樣品量通常在32k到500k之間。
本白皮書將展示如何使用德思特TS-M4i系列數(shù)字化儀的高速PCIe流模式來在軟件中實現(xiàn)塊平均處理,從而突破FPGA的限制。 我們用了TS-M4i.2230(1通道,5 GS/s,8位垂直分辨率,1.5 GHz帶寬)作為例子,對比硬件和軟件進(jìn)行塊平均處理的效果。
什么是塊平均?
塊平均模式可以用來移除隨機(jī)噪聲成分,提高重復(fù)信號的保真度。該模式允許對多次單段采集進(jìn)行處理、累積和平均。 這個過程減少了隨機(jī)噪聲,提高了重復(fù)信號的可見性,平均后的信號具有增強(qiáng)的測量分辨率和更高的信噪比(SNR) 。
塊平均模式可用于改善雷達(dá)測試、天文學(xué)、質(zhì)譜學(xué)、醫(yī)學(xué)成像、超聲波測試、光纖測試和激光測距等各種不同應(yīng)用中的測量。
下面截圖顯示了一個較低電平的信號(大約2mV),完全被隨機(jī)噪聲覆蓋的情形,以及使用不同平均因子獲得的信號質(zhì)量改進(jìn)。雖然在原始單次采集中源信號基本無法看到,但10x平均時,能顯示出實際上有5個信號峰。執(zhí)行1000x的塊平均可以進(jìn)一步改善信號質(zhì)量,揭示出帶有二次最大值和最小值峰的完整信號形狀。
通過塊平均改善噪聲問題,該示例使用了一個500MS/s采樣率(每個采樣點2ns)和14位分辨率的數(shù)字化儀制作
系統(tǒng)配置
為了兼顧更多老舊設(shè)備的性能狀況,測試系統(tǒng)選用了一臺德思特公司內(nèi)的舊辦公電腦,大致配置如下:
● 主板:技嘉GA-H77-D3H
● 運(yùn)行內(nèi)存:8 GB DDR3
● 硬盤:120 GB固態(tài)
● 操作系統(tǒng):Win 7 64bit
● IDE:Visual Studio 2005標(biāo)準(zhǔn)版
主板上有一個空閑的PCIe Gen2 x8插槽,我們就使用該插槽來插數(shù)字化儀板卡。此時,德思特的TS-M4i板卡的流式傳輸可以達(dá)到滿速,約3.4 GB/s(不考慮數(shù)據(jù)處理的情況下)。
軟件實現(xiàn)
測試軟件使用純C++編寫,并基于德思特流式傳輸示例。數(shù)字化儀板卡通過外部觸發(fā)采集,板卡會自動在每個觸發(fā)事件后獲取一段數(shù)據(jù)。數(shù)據(jù)會先存儲在板載內(nèi)存中,然后通過分散聚集式式DMA直接傳輸?shù)絇C的運(yùn)行內(nèi)存,并在運(yùn)行內(nèi)存中進(jìn)行累積,進(jìn)而執(zhí)行塊平均操作。我們針對不同的配置方式和優(yōu)化策略進(jìn)行了測試,來看看分別能達(dá)到什么樣的性能水平。
摘錄出來的一小段源代碼顯示了多線程版本的主求和循環(huán),這正是軟件處理的關(guān)鍵部分,也是決定速度的部分。
以下列表提供了具體實現(xiàn)各個方面的一些信息和備注:
● 數(shù)據(jù)段大?。菏盏接|發(fā)事件后將獲取數(shù)據(jù)的樣本點數(shù)量
● 平均次數(shù):對于一個數(shù)據(jù)段,在算法重置前,整個過程中需要執(zhí)行多少次平均前的累加操作。
● 通知大?。?a href="http://www.nxhydt.com/v/tag/1751/" target="_blank">硬件生成中斷所需的數(shù)據(jù)量。該參數(shù)決定了整個平均循環(huán)的速度。如果通知大小大于數(shù)據(jù)段大小,則會在一次中斷中傳輸多個數(shù)據(jù)段的內(nèi)容,這將減少線程通信和中斷處理的額外開銷。
● 緩沖區(qū)大?。篋MA傳輸?shù)哪繕?biāo)緩沖區(qū)整體大小。在我們的實驗中,這個緩沖區(qū)固定等于通知大小的16倍。
● 觸發(fā)速率:作為外部觸發(fā)的信號發(fā)生器的信號重復(fù)頻率。在結(jié)果表格中,我們給出的是在不填滿(溢出)緩沖區(qū)的情況下可以達(dá)到的最大觸發(fā)速率。
● 線程數(shù):為了加快求和過程,我們對該任務(wù)進(jìn)行并行化優(yōu)化,將其分割成多個不同的軟件線程。如果線程為1,則表示求和過程不使用額外線程,而是直接在主循環(huán)中直接執(zhí)行。
● CPU負(fù)載:由于平均過程是用軟件完成的,具體來說就是CPU進(jìn)行了所有的工作。幸好現(xiàn)代CPU往往包含多個內(nèi)核,我們實際上可以輕松地在它們之間共享工作任務(wù)。
● SSE/SSE2指令:乍一看,這些命令似乎非常適合并行化求和過程,并似乎可以在不需要任何線程編程的情況下加快軟件的速度。但不幸的是,SSE命令集都是基于相同類型的數(shù)據(jù)的,而由于獲取的數(shù)據(jù)是8bit寬度,而平均緩沖區(qū)是32位寬,因此在本例中無法利用該指令集進(jìn)行加速。
效果和比較
所有的測量都是使用一個采樣率高達(dá)5GS/s、垂直分辨率為8位,并且?guī)в型獠坑|發(fā)通道的數(shù)字化儀進(jìn)行的。我們在表格中還列出了不同的程序配置以對比效果差異。
通過普通(性能偏低的)PC在時域上進(jìn)行塊平均的性能對比
新方法:使用CUDA進(jìn)行平均運(yùn)算
2018年11月, 德思特推出了一些使用SCAPP(通過CUDA訪問數(shù)據(jù)和并行處理)選項進(jìn)行塊平均的示例,適用于非常高速的數(shù)據(jù)處理。 其基本概念與前文所述相同,即數(shù)據(jù)由數(shù)字化儀采集并通過PCIe總線連續(xù)傳輸。不同之處在于,平均值的計算操作不是由CPU完成,而是在GPU中完成。GPU解決方案的一個主要優(yōu)點在于, GPU本身就是為并行計算而設(shè)計,這使GPU成為各種類型的塊平均運(yùn)算的理想選擇 。
在實現(xiàn)上,SCAPP允許用戶直接將數(shù)據(jù)傳送到GPU,這使用了RDMA(遠(yuǎn)程直接內(nèi)存存取)技術(shù),然后可以在GPU上執(zhí)行高速時域和頻域信號的平均,并突破通常在CPU和FPGA中出現(xiàn)的數(shù)據(jù)長度或算力限制。
比如, TS-M4i.2220數(shù)字化儀可以以2.5 GS/s的速度連續(xù)采樣信號,我們可以做到在不丟失樣品點的情況下,進(jìn)行長達(dá)數(shù)秒的平均運(yùn)算 。類似地,我們還有14位垂直分辨率的TS-M4i.4451數(shù)字化儀可以以450 MS/s的速度同時對四個通道的信號進(jìn)行同一功能的采樣。數(shù)字化儀板卡還提供了靈活的觸發(fā)、捕獲和讀出模式設(shè)置,從而使它們能夠在觸發(fā)速率極高的情況采回原始信號,進(jìn)而做平均處理。相比之下,F(xiàn)PGA方案需要最高性能級別的FPGA來同時滿足數(shù)據(jù)拉取和平均運(yùn)算,而GPU方案則可以輕松跑滿數(shù)字化儀的全速,即使是使用入門級GPU也不會成為瓶頸。
以下表格展示了使用GPU,并在和之前表格中板卡參數(shù)相同的情況下的測試結(jié)果:
在時域上使用GPU進(jìn)行塊平均的測試結(jié)果
這些結(jié)果是在使用一張Quadro P2000 GPU獲得的。如表所示,數(shù)據(jù)段大小和通知大小并未限制性能,我們遇到唯一限制的瓶頸是GPU內(nèi)存(顯存)。
使用GPU進(jìn)行頻域平均
在需要進(jìn)行頻域平均的情況下,也建議使用GPU,因為GPU允許比FPGA方案更大的平均塊大小。頻域的平均運(yùn)算過程包含兩個步驟,一個是針對塊數(shù)據(jù)的FFT運(yùn)算,另一個是對FFT結(jié)果求和(然后取平均)。其中FFT計算在處理能力方面要求非常高,因此對于頻率域平均而言,除了FPGA外,GPU是唯一的可行方案,CPU并不適合在高速下進(jìn)行FFT轉(zhuǎn)換。
以下表格顯示了使用最大采樣率為500 MS/s的TS-M4i.4451數(shù)字化儀(4通道,14位垂直分辨率)的一些測試結(jié)果。最終表明該方案能高效地實現(xiàn)無間隙數(shù)據(jù)采集,將每個塊中的原始數(shù)據(jù)轉(zhuǎn)換為對應(yīng)電壓值,然后再轉(zhuǎn)換至頻率域做平均。
使用GPU進(jìn)行頻率域塊平均的測試結(jié)果
結(jié)論
如上述結(jié)果所示,只要重復(fù)率不算太高,得益于PCIe總線的高速數(shù)據(jù)傳輸率,使用基于CPU的軟件在進(jìn)行塊平均時,可以實現(xiàn)比FPGA更大的總數(shù)據(jù)段大小,從而平均更長時間的樣本;而使用GPU時,更是可以達(dá)到PCIe總線傳輸所限制的上限速度。對于需要處理更高重復(fù)觸發(fā)率的情況,會對總線傳輸速度提出更高的要求,此時基于FPGA硬件的塊平均仍將是最佳選擇。
上述測試程序也可以提供給您,以便您自己進(jìn)行重復(fù)測試,或者作為實現(xiàn)其他軟件程序的基礎(chǔ)。其中GPU示例是SCAPP軟件選項的一部分,在選購后,德思特的客戶可按照NDA協(xié)議使用。
總的來說,通知大小設(shè)為1 MByte時,可獲得最佳性能。具體執(zhí)行的平均次數(shù)對測試性能并沒有明顯的影響。因為復(fù)制結(jié)果段和清除結(jié)果緩沖所需的時間相對于樣本求和運(yùn)算而言微不足道。
由于在同時采集多個通道時,整個的數(shù)據(jù)處理和求和過程并沒有本質(zhì)區(qū)別,因此只需等價成一個把所有數(shù)據(jù)都合并到一起的新通道即可(等效采樣率= 每通道采樣率 × 通道數(shù))。以下設(shè)置對應(yīng)的最大觸發(fā)速率完全相同:
● 1通道5 GS/s @ 數(shù)據(jù)段大小S1
● 2通道2.5 GS/s @ 數(shù)據(jù)段大小S1/2
● 4通道1.25 GS/s @ 數(shù)據(jù)段大小S1/4
將采樣速度降低到2.5 GS/s時,可以在理論上使軟件針對1個通道執(zhí)行平均運(yùn)算的速度最大化。對于1 M樣本點的數(shù)據(jù)段大小,外加死區(qū)長度為160個樣本點時,理論上的最大觸發(fā)速率為:(2.5 GS/s) / (1 MS+ 160 S) = 2.38 kHz。
注意,這確實會明顯低于單純采集時的最大觸發(fā)速率:2.9 kHz @ 5 GS/s。
關(guān)于德思特 :德思特是虹科的一家姐妹公司,基于超過10年的業(yè)務(wù)沉淀,德思特公司專注提供電子測試/測量解決方案。主要業(yè)務(wù)范圍涵蓋:汽車電子仿真及測試、射頻微波及無線通信測試、無線頻譜監(jiān)測與規(guī)劃、無線通信(包括智能網(wǎng)聯(lián)汽車無線通信、軌道交通、衛(wèi)星通信、室內(nèi)無線通信)、半導(dǎo)體測試、PNT解決方案、大物理和光電測試等。更多資訊請關(guān)注tesight.com或公眾號德思特測試測量
審核編輯 黃宇
-
FPGA
+關(guān)注
關(guān)注
1619文章
21467瀏覽量
597788 -
gpu
+關(guān)注
關(guān)注
27文章
4552瀏覽量
127959 -
PCIe
+關(guān)注
關(guān)注
14文章
1146瀏覽量
81613 -
數(shù)字化儀
+關(guān)注
關(guān)注
0文章
135瀏覽量
17815
發(fā)布評論請先 登錄
相關(guān)推薦
評論