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