国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

應(yīng)用于射電天文的高效實(shí)時(shí)管道數(shù)據(jù)流傳輸與處理技術(shù)*

2021-10-26 06:13:22張海龍冶鑫晨王萬瓊王博群張亞州
天文研究與技術(shù) 2021年4期
關(guān)鍵詞:射電緩沖區(qū)數(shù)據(jù)流

張 萌,張海龍,3,4,王 杰,4,李 健,冶鑫晨,4,王萬瓊,李 嘉,王博群,張亞州

(1. 中國科學(xué)院新疆天文臺(tái),新疆 烏魯木齊 830011;2. 中國科學(xué)院大學(xué),北京 100049;3. 中國科學(xué)院射電天文重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210008;4. 國家天文科學(xué)數(shù)據(jù)中心,北京 100101)

多波束和相位陣饋源(Phased Array Feed, PAF)接收技術(shù)的發(fā)展使得天文觀測設(shè)備獲取數(shù)據(jù)的能力不斷提高,射電天文觀測數(shù)據(jù)正在以一種實(shí)時(shí)、海量、持續(xù)的模式增長。終端系統(tǒng)中海量天文信號(hào)的高效傳輸和實(shí)時(shí)處理,需要異構(gòu)的分布式計(jì)算與存儲(chǔ)平臺(tái)作為支撐。數(shù)據(jù)傳輸過程中,系統(tǒng)首先將接收的信號(hào)進(jìn)行數(shù)字化,實(shí)現(xiàn)通道劃分、射頻干擾(Radio Frequency Interference, RFI)消減等預(yù)處理,這些處理可以在ROACH[1],SNAP[2]或RFSoC[3]等系列開發(fā)板卡上執(zhí)行。硬件板卡與服務(wù)器平臺(tái)通過高速網(wǎng)絡(luò)連接,將數(shù)據(jù)打包并通過網(wǎng)絡(luò)傳輸至服務(wù)器進(jìn)行復(fù)雜算法處理?;诂F(xiàn)場可編程門陣列 + 圖形處理器的混合架構(gòu)平臺(tái)對(duì)軟件性能提出了更高的要求,高速實(shí)時(shí)傳輸天文數(shù)據(jù)包時(shí)需要考慮高輸入輸出環(huán)境下的網(wǎng)絡(luò)數(shù)據(jù)包丟失問題。Linux內(nèi)核在處理寬帶網(wǎng)絡(luò)流量時(shí)有很大的開銷,由于采用了用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol, UDP),系統(tǒng)必須處理丟失、無序和重復(fù)的數(shù)據(jù)包,否則會(huì)造成相位信息缺失。對(duì)脈沖星數(shù)據(jù)來說,丟包可對(duì)脈沖星的周期預(yù)測和折疊等產(chǎn)生嚴(yán)重影響。中央處理器與圖形處理器之間數(shù)據(jù)高速流轉(zhuǎn)時(shí),在圖形處理器高效實(shí)時(shí)數(shù)據(jù)處理階段,中央處理器與圖形處理器之間通信速率可能會(huì)造成的性能瓶頸,也是需要考慮并解決的問題。

射電天文數(shù)字終端系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)包高速率實(shí)時(shí)傳輸與預(yù)處理的程序稱為管道[4]。管道中的數(shù)據(jù)鏈?zhǔn)降剡B接在一起,全部同時(shí)在其內(nèi)部流動(dòng)。管道包含多個(gè)處理單元,每個(gè)單元執(zhí)行特定的任務(wù),最基礎(chǔ)和主要的功能是提供緩存模塊,暫時(shí)存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)流轉(zhuǎn)。應(yīng)用于射電天文異構(gòu)終端系統(tǒng)的管道數(shù)據(jù)傳輸主要包括3個(gè)階段,數(shù)據(jù)接收階段、基于中央處理器/圖形處理器的數(shù)據(jù)處理階段、數(shù)據(jù)輸出階段。管道通過緩沖模塊實(shí)現(xiàn)從數(shù)據(jù)接收到寫入磁盤流程的高效傳輸,通過調(diào)用不同階段的程序模塊實(shí)現(xiàn)數(shù)據(jù)流傳輸過程的實(shí)時(shí)處理。

本文研究并分析了可部署在射電望遠(yuǎn)鏡終端系統(tǒng)的數(shù)據(jù)管道,提出了基于現(xiàn)場可編程門陣列 + 圖形處理器的動(dòng)態(tài)、高性能實(shí)現(xiàn)海量射電天文數(shù)據(jù)流實(shí)時(shí)傳輸、處理和監(jiān)控的管道設(shè)計(jì)思路,為未來新疆110 m射電望遠(yuǎn)鏡(QiTai Radio Telescope, QTT)[5]開發(fā)定制多功能實(shí)時(shí)數(shù)據(jù)流傳輸與處理管道軟件提供參考。

1 現(xiàn)有射電天文數(shù)據(jù)流管道軟件

針對(duì)射電天文數(shù)據(jù)的實(shí)時(shí)高速傳輸,國外已取得了一系列研究成果,提供了開源中央處理器/圖形處理器數(shù)據(jù)流管道軟件,包括GUPPI_daq, PSRDADA[6], Hashpipe, Bifrost, Kotekan, Pelican和Cobalt等,國內(nèi)相關(guān)研究正處于起步階段。

GUPPI_daq是綠岸終極脈沖星處理儀器(the Green Bank Ultimate Pulsar Processing Instrument, GUPPI)數(shù)據(jù)采集子系統(tǒng),通俗靈活,使用簡單,已有十多年的歷史。PSRDADA和Hashpipe均為用于處理高速數(shù)據(jù)流,最初分別應(yīng)用于帕克斯(Parkes)[7]望遠(yuǎn)鏡和綠岸望遠(yuǎn)鏡(Green Bank Telescope, GBT)[8]。Bifrost是快速管道開發(fā)的開源軟件框架,專門為射電天文實(shí)時(shí)數(shù)據(jù)流處理而設(shè)計(jì),應(yīng)用于長波陣列(the Long Wavelength Array, LWA)[9]后端。Kotekan作為加拿大氫強(qiáng)度映射實(shí)驗(yàn)(Canadian Hydrogen Intensity Mapping Experiment, CHIME)[10]高度優(yōu)化的數(shù)據(jù)流處理框架,更注重效率和吞吐量。Pelican提供了高度抽象的應(yīng)用程序接口,為靜態(tài)、準(zhǔn)實(shí)時(shí)處理而設(shè)計(jì)。Cobalt管理通過網(wǎng)絡(luò)和圖形處理器的數(shù)據(jù)流,主要應(yīng)用于低頻陣列(the Low Frequency Array, LOFAR)波束合成。

1.1 GUPPI_daq

應(yīng)用于綠岸望遠(yuǎn)鏡的GUPPI_daq,是脈沖星數(shù)字終端GUPPI的數(shù)據(jù)采集軟件。GUPPI_daq實(shí)現(xiàn)了數(shù)據(jù)流實(shí)時(shí)接收和處理,并以PSRFITS格式記錄文件,實(shí)時(shí)處理選項(xiàng)包括基礎(chǔ)模式、折疊模式和子帶模式。

GUPPI基于CASPER(Collaboration for Astronomy Signal Processing and Electronics Research)FPGA板卡處理800 MHz帶寬、8 bit量化數(shù)據(jù),在10 GB以太網(wǎng)環(huán)境下封裝成數(shù)據(jù)包發(fā)送,由GUPPI_daq負(fù)責(zé)接收,并將數(shù)據(jù)保存至磁盤。傳輸過程中實(shí)現(xiàn)與控制子系統(tǒng)交互,提供人機(jī)交互的軟件界面,并記錄監(jiān)控參數(shù),保存到輸出文件。

GUPPI_daq使用多線程工作模式,線程之間通過基于共享內(nèi)存的環(huán)形緩沖區(qū)傳輸數(shù)據(jù)。在基礎(chǔ)模式下,GUPPI_daq只使用兩個(gè)處理線程和一個(gè)數(shù)據(jù)緩沖區(qū),由網(wǎng)絡(luò)處理線程負(fù)責(zé)接收現(xiàn)場可編程門陣列生成的數(shù)據(jù)包,通過檢查自定義的序號(hào)判斷數(shù)據(jù)包是否丟失,將接收的數(shù)據(jù)保存在環(huán)形緩沖區(qū),丟棄的數(shù)據(jù)填充為零,同時(shí)從狀態(tài)緩沖區(qū)讀取頭信息,復(fù)制到數(shù)據(jù)塊頭中。寫盤處理線程讀取已寫滿的緩沖區(qū)并解析數(shù)據(jù)塊頭信息,以PSRFITS格式保存在磁盤中。

高速率運(yùn)行時(shí),GUPPI_daq存在磁盤寫入速度的限制問題。通過高速以太網(wǎng)接收數(shù)據(jù)時(shí),800 MB/s接收速率下,GUPPI_daq傳輸出現(xiàn)少量數(shù)據(jù)丟包現(xiàn)象[11]。

1.2 Hashpipe

Hashpipe是早期GUPPI_daq的衍生,最初作為美國國家射電天文臺(tái)通用綠岸天文頻譜儀(National Radio Astronomy Observatory Versatile GBT astronomical Spectrometer, NRAO VEGAS)[12]的高效共享管道引擎,由David Macmahon改寫,可用于FX相關(guān)器、波束合成器、脈沖星觀測、快速射電暴(Fast Radio Burst, FRB)、搜尋地外文明(Search for ExtraTerrestrial Intelligence, SETI),也可應(yīng)用于我國FAST、 “天籟” 項(xiàng)目[13]。

Hashpipe設(shè)置共享內(nèi)存段和信號(hào)量機(jī)制等功能,在運(yùn)行時(shí)基于命令行參數(shù)動(dòng)態(tài)構(gòu)建管道,整體框架如圖1。Hashpipe采用模塊化架構(gòu)設(shè)計(jì),藍(lán)色部分表示插件。Hashpipe插件是一個(gè)共享庫,定義了應(yīng)用程序特定的線程模塊、共享數(shù)據(jù)緩沖區(qū)等功能模塊,并且允許用戶創(chuàng)建插件,以便在Hashpipe運(yùn)行時(shí)調(diào)用。紅色部分表示可執(zhí)行文件,在Hashpipe運(yùn)行時(shí)動(dòng)態(tài)調(diào)用已定義的插件。

圖1 Hashpipe整體框架Fig.1 Hashpipe overall framework

Hashpipe核心是靈活的環(huán)形緩沖區(qū),模擬連續(xù)內(nèi)存塊,并實(shí)現(xiàn)數(shù)據(jù)在多個(gè)線程之間的流轉(zhuǎn)和共享,利用中央處理器控制啟動(dòng)和關(guān)閉等操作,通過環(huán)形緩沖區(qū)暫存并傳遞數(shù)據(jù)包,保證數(shù)據(jù)快速捕獲并按正確的順序分發(fā)。

Hashpipe將任務(wù)傳輸?shù)絾为?dú)的線程中,線程之間共享內(nèi)存緩沖區(qū),并通過信號(hào)量機(jī)制控制任務(wù),實(shí)現(xiàn)線程間互斥。Hashpipe定義數(shù)據(jù)接收、處理、輸出3個(gè)線程,各個(gè)線程實(shí)現(xiàn)各自的任務(wù)。數(shù)據(jù)接收線程net_thread接收來自計(jì)算機(jī)萬兆網(wǎng)卡的高速網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)數(shù)據(jù)包格式提取文件頭和有效數(shù)據(jù)并解析包頭。來自現(xiàn)場可編程門陣列的數(shù)據(jù)包都有時(shí)間戳,如果無序到達(dá),可以重新排列為適當(dāng)?shù)臅r(shí)間序列,并將數(shù)據(jù)寫入第1個(gè)輸入數(shù)據(jù)緩沖區(qū),一旦連續(xù)的數(shù)據(jù)塊寫滿,該塊將交由下一個(gè)線程處理[14]。處理線程gpu_thread從輸入數(shù)據(jù)緩沖區(qū)獲取數(shù)據(jù),傳輸至圖形處理器執(zhí)行復(fù)雜計(jì)算,然后將結(jié)果寫入輸出數(shù)據(jù)緩沖區(qū)。輸出線程output_thread從輸出數(shù)據(jù)緩沖區(qū)獲取數(shù)據(jù),寫入文件存儲(chǔ)在磁盤上。Hashpipe通過定義監(jiān)控線程監(jiān)聽來自現(xiàn)場可編程門陣列的UDP數(shù)據(jù)包,通過轉(zhuǎn)置線程重新格式化數(shù)據(jù),使時(shí)間樣本在內(nèi)存中正確對(duì)齊。

后端用C/C++語言編寫,頭文件中定義多個(gè)結(jié)構(gòu)體變量以便調(diào)用,定義數(shù)據(jù)緩沖區(qū)hashpipe_databuf,包含需傳輸?shù)臄?shù)據(jù)類型、緩沖區(qū)空間的大小、緩沖區(qū)ID、數(shù)據(jù)存儲(chǔ)塊數(shù)、塊ID等基本信息。hashpipe_thread_desc結(jié)構(gòu)用于存儲(chǔ)描述Hashpipe線程的元數(shù)據(jù);hashpipe_udp_params結(jié)構(gòu)體用于保存網(wǎng)絡(luò)連接參數(shù),包括端口號(hào)、IP、數(shù)據(jù)包的大小等信息。hashpipe_clean_shmem()函數(shù)用于釋放狀態(tài)緩沖區(qū)的占用空間;hashpipe_status_unlock_safe()和hashpipe_status_lock_safe()函數(shù)用于狀態(tài)緩沖區(qū)的線程安全鎖或解鎖,確保狀態(tài)緩沖區(qū)處于鎖定狀態(tài)。根據(jù)實(shí)際需求調(diào)用Hashpipe已有函數(shù),可以滿足數(shù)據(jù)傳輸需求。

界面監(jiān)控采用David Macmahon編寫的ruby程序rb-Hashpipe,作為Hashpipe的可視化前端,可以展示數(shù)據(jù)包接收、線程狀態(tài)和緩沖區(qū)狀態(tài)等信息,在更高級(jí)別將管道抽象以提供簡潔直觀的界面監(jiān)控?cái)?shù)據(jù)。Hashpipe及rb-Hashpipe均可部署在服務(wù)器平臺(tái)上,環(huán)境配置主要步驟如下:

(1)更新GNU系列工具到最新版本,提供Hashpipe編譯環(huán)境;

(2)安裝Ruby管理器rvm;

(3)使用RubyGems更新所需的庫文件;

(4)獲取Hashpipe版本信息并安裝;

(5)配置gnome終端在shell下啟動(dòng)。

數(shù)據(jù)傳輸監(jiān)控界面如圖2。

圖2 數(shù)據(jù)傳輸監(jiān)控界面Fig.2 Data transmission monitoring interface

1.3 PSRDADA

PSRDADA由澳大利亞斯威本科技大學(xué)開發(fā)維護(hù),支持脈沖星信號(hào)分布式采集和數(shù)據(jù)分析,主要用于脈沖星基帶數(shù)據(jù)記錄和處理,管理從模數(shù)轉(zhuǎn)換器采樣到圖形處理器集群的數(shù)據(jù),分析整個(gè)過程的數(shù)據(jù)流。PSRDADA可實(shí)現(xiàn)APSR,BPSR和CASPSR基帶記錄數(shù)據(jù)分發(fā)、管理和監(jiān)控,現(xiàn)階段主要應(yīng)用于澳大利亞帕克斯望遠(yuǎn)鏡的ASPSR,BPSR,CASPSR和HIPSR[15]終端系統(tǒng)。

從基礎(chǔ)層次來看,PSRDADA是一個(gè)靈活易管理的環(huán)形緩沖區(qū),核心功能是在環(huán)形緩沖區(qū)之間傳遞數(shù)據(jù)流。每個(gè)緩沖區(qū)劃分為描述文件信息的文件頭存儲(chǔ)塊,以及多個(gè)存儲(chǔ)數(shù)據(jù)的子塊,接收數(shù)據(jù)時(shí)按順序?qū)懭胱訅K,當(dāng)一個(gè)子塊填滿時(shí),觸發(fā)標(biāo)志位,表示子塊中的數(shù)據(jù)可以讀取。環(huán)形緩沖區(qū)可以實(shí)現(xiàn)數(shù)據(jù)集的出隊(duì)和入隊(duì),多個(gè)數(shù)據(jù)集利用多線程并行在多個(gè)環(huán)形緩沖區(qū)排隊(duì),主要通過共享內(nèi)存、信號(hào)量機(jī)制進(jìn)行線程之間互斥通信。在高級(jí)別配置中,PSRDADA配置可以在集群中各節(jié)點(diǎn)啟動(dòng),通過可視化界面監(jiān)控相關(guān)流程,管理數(shù)據(jù)的傳輸和歸檔。

PSRDADA基于模塊化設(shè)計(jì)實(shí)現(xiàn),包括用于執(zhí)行特定任務(wù)的獨(dú)立進(jìn)程,整齊分離數(shù)據(jù)傳輸、命令、控制指令和數(shù)據(jù)分析等不同操作;創(chuàng)建環(huán)形緩沖區(qū),實(shí)現(xiàn)進(jìn)程之間的數(shù)據(jù)傳輸;配置文件、腳本等,完成分布式工作流程中各種基礎(chǔ)配置;基于網(wǎng)絡(luò)的用戶接口,提供基于網(wǎng)絡(luò)瀏覽器的監(jiān)控界面,并通過gridbus發(fā)送到遠(yuǎn)程計(jì)算設(shè)備,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。

PSRDADA基于C語言實(shí)現(xiàn)了針對(duì)APSR, BPSR, CASPSR和PUMA2不同設(shè)備的相應(yīng)開發(fā),通過多命令行執(zhí)行:dada_db可以創(chuàng)建或刪除一個(gè)緩沖區(qū);dada_dbmonitor監(jiān)控已開辟的緩沖區(qū);dada_dbdisk命令實(shí)現(xiàn)數(shù)據(jù)從緩沖區(qū)寫入本地磁盤;dada_header獲取數(shù)據(jù)文件頭信息;dada_dbcopydb,dada_dbdisk和dada_diskdb實(shí)現(xiàn)緩沖區(qū)與緩沖區(qū)及緩沖區(qū)與磁盤間的數(shù)據(jù)拷貝等。

PSRDADA配置與基本使用步驟如下:

(1)安裝或更新PSRDADA需要的GNU工具autoconf(2.59及以上版本),automake(1.9.3及以上版本),libtool(1.5.8及以上版本)和m4(1.4及以上版本);

(2)獲取dada格式的數(shù)據(jù);

緩沖區(qū)創(chuàng)建及數(shù)據(jù)傳輸情況如圖3,dada_db命令開辟共享內(nèi)存鍵為100的緩沖區(qū)結(jié)構(gòu),包括4個(gè)大小為524 288 bytes的數(shù)據(jù)存儲(chǔ)緩沖區(qū),總?cè)萘繛? MB;8個(gè)大小為4 096 bytes的文件頭存儲(chǔ)緩沖區(qū),總?cè)萘繛?2 KB。dada_dbmonitor命令打開監(jiān)控界面,實(shí)現(xiàn)對(duì)文件頭和數(shù)據(jù)緩沖區(qū)讀寫狀態(tài)的監(jiān)控。

圖3 PSRDADA創(chuàng)建數(shù)據(jù)緩沖區(qū)Fig.3 PSRDADA create data buffers

1.4 Bifrost

Bifrost專門用于射電天文數(shù)字信號(hào)處理,實(shí)現(xiàn)流數(shù)據(jù)處理高性能管道的快速開發(fā),用于中央處理器與圖形處理器之間數(shù)據(jù)的高效傳輸?,F(xiàn)階段Bifrost用于處理長波陣列的數(shù)據(jù),實(shí)現(xiàn)在波束合成、相關(guān)器上的應(yīng)用[16]。

Bifrost利用Python實(shí)現(xiàn)了高級(jí)管道接口,可用于數(shù)據(jù)傳輸;利用C++實(shí)現(xiàn)支持圖形處理器的高性能后端,包括一系列與天文數(shù)據(jù)處理相關(guān)的高性能數(shù)據(jù)結(jié)構(gòu)和算法,為干涉測量、脈沖星消色散、計(jì)時(shí)及瞬態(tài)信號(hào)搜尋等應(yīng)用而設(shè)計(jì)的庫函數(shù),用于中央處理器和圖形處理器上數(shù)據(jù)計(jì)算與處理[17]。其中接口和函數(shù)都稱為塊,通過靈活的環(huán)形緩沖區(qū)可以同時(shí)實(shí)現(xiàn)多個(gè)塊之間的通信,同時(shí)執(zhí)行多線程,使得塊可以異步操作。數(shù)據(jù)塊主要有3種類型:(1)tasks從環(huán)中讀取數(shù)據(jù),并實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換,將結(jié)果寫入輸出環(huán)形緩沖區(qū);(2)source從文件或以太網(wǎng)數(shù)據(jù)流的管道外獲取數(shù)據(jù),將數(shù)據(jù)寫入輸出緩沖區(qū);(3)sink可以直接從輸入環(huán)形緩沖區(qū)讀取數(shù)據(jù)并繪制數(shù)據(jù)的塊,或?qū)⑵鋵懭胛募?/p>

Bifrost安裝步驟簡潔,適合快速部署,安裝完成后,通過import bifrost實(shí)現(xiàn)模塊調(diào)用。例如bifrost.pipeline構(gòu)建管道,創(chuàng)建環(huán)形緩沖區(qū);pipeline.run是語句執(zhí)行管道,為每個(gè)塊創(chuàng)建一個(gè)線程;通過bifrost.blocks加載功能塊,調(diào)用快速傅里葉變換(Fast Fourier Transform, FFT)、快速色散測量變換(Fast Dispersion Measure Transform, FDMT)、量化、轉(zhuǎn)置等實(shí)現(xiàn)數(shù)據(jù)處理;網(wǎng)絡(luò)相關(guān)模塊bifrost.udp用于捕獲UDP數(shù)據(jù)包,可統(tǒng)計(jì)并分析包傳輸信息。如果數(shù)據(jù)流傳輸過程中需要一些中間操作,用戶可自定義模塊。

以wav格式的聲音文件為例,Bifrost執(zhí)行步驟一般為

(1)讀取.wav格式的文件;

(2)將原始數(shù)據(jù)拷貝到圖形處理器;

(3)將時(shí)間軸分割成小塊,對(duì)新生成的小塊執(zhí)行快速傅里葉變換;

(4)取這些FFT模的平方;

(5)將數(shù)據(jù)轉(zhuǎn)置為sigproc兼容的格式,進(jìn)行標(biāo)準(zhǔn)化;

(6)將數(shù)據(jù)拷貝到中央處理器;

(7)將數(shù)據(jù)轉(zhuǎn)換為整數(shù)型,并以filterbank格式存儲(chǔ)。

1.5 Kotekan

Kotekan是Andre Recnik使用C/C++組合開發(fā)的軟件框架,主要用于射電天文望遠(yuǎn)鏡數(shù)據(jù)傳輸,最早為CHIME后端應(yīng)用開發(fā),旨在實(shí)現(xiàn)更高的效率和吞吐量[18]。

Kotekan管道是模塊化的,由一系列對(duì)數(shù)據(jù)執(zhí)行不同操作的單元組成,實(shí)現(xiàn)了實(shí)時(shí)管理X引擎的數(shù)據(jù)流,包括接收來自F引擎的UDP數(shù)據(jù)包,圖形處理器節(jié)點(diǎn)內(nèi)數(shù)據(jù)流實(shí)時(shí)處理及結(jié)果存儲(chǔ)。核心結(jié)構(gòu)是先進(jìn)先出(First In First Out, FIFO)環(huán)形緩沖區(qū),通過系統(tǒng)內(nèi)存的環(huán)形緩沖區(qū)實(shí)現(xiàn)中央處理器與AMD GPU之間通信,及傳輸?shù)綀D形處理器進(jìn)行處理之前數(shù)據(jù)檢查和暫存[19]。

Kotekan創(chuàng)建網(wǎng)絡(luò)線程、GPU線程、GPU回調(diào)線程、GPU后處理線程和輸出線程。每個(gè)線程與一個(gè)或多個(gè)環(huán)形緩沖區(qū)對(duì)象的接口關(guān)聯(lián),接收的數(shù)據(jù)均通過環(huán)形緩沖區(qū)暫存,實(shí)現(xiàn)邊讀邊寫。這些線程和緩沖區(qū)形成了如圖4的數(shù)據(jù)路徑,管道可以多線程并行地產(chǎn)生多個(gè)結(jié)果數(shù)據(jù)集[20]。

圖4 Kotekan中數(shù)據(jù)流Fig.4 Data flow in Kotekan

緩沖數(shù)據(jù)由Kotekan::stage處理模塊寫入和讀取,從網(wǎng)絡(luò)或外部設(shè)備獲取數(shù)據(jù),通過數(shù)據(jù)處理算法實(shí)現(xiàn)數(shù)據(jù)操作,最后將處理后的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸或存儲(chǔ)在本地。

1.6 Pelican

Pelican[21]是由牛津電子中心開發(fā)的實(shí)時(shí)數(shù)據(jù)流處理框架,具有高效、模塊化、輕量級(jí)、可校準(zhǔn)的特點(diǎn),主要應(yīng)用于LOFAR和BEST-II,通過圖形處理器對(duì)數(shù)據(jù)進(jìn)行并行處理。Pelican提供了高度抽象的應(yīng)用程序接口(Application Programming Interface, API),適合用于靜態(tài)、準(zhǔn)實(shí)時(shí)處理。

Pelican用C++實(shí)現(xiàn)了可重用的模塊化組件,將數(shù)據(jù)獲取和處理分離,具有靈活性和通用性,具備讀取UDP數(shù)據(jù)的機(jī)制,將數(shù)據(jù)流傳遞給各計(jì)算服務(wù)器,完成數(shù)據(jù)緩沖、處理和文件寫入。Pelican可對(duì)望遠(yuǎn)鏡接收數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,也可用于任何需要處理傳入數(shù)據(jù)流的應(yīng)用程序。

Pelican可用于脈沖星搜尋的數(shù)據(jù)預(yù)處理。平方公里陣列(Square Kilometre Array, SKA)早期計(jì)劃使用Pelican處理非成圖的基于圖形處理器實(shí)時(shí)射電脈沖檢測,流程如圖5。首先通過軟件服務(wù)器讀取UDP數(shù)據(jù),去除窄帶頻譜干擾的峰值,實(shí)現(xiàn)圖形處理器中進(jìn)一步窄帶劃分,完成復(fù)雜數(shù)據(jù)到功率數(shù)據(jù)的轉(zhuǎn)換,將數(shù)據(jù)傳輸至圖形處理器模塊執(zhí)行分散搜索算法。

短時(shí)間內(nèi)成像導(dǎo)致相關(guān)器輸出速率非常大,為了提高數(shù)據(jù)傳輸速率并產(chǎn)生更新的校準(zhǔn)系數(shù),系統(tǒng)需對(duì)輸出數(shù)據(jù)流進(jìn)行實(shí)時(shí)處理。Pelican可用于射電望遠(yuǎn)鏡數(shù)據(jù)轉(zhuǎn)換成科學(xué)圖像之前的數(shù)據(jù)校準(zhǔn)和成像方程求解。Pelican實(shí)現(xiàn)科學(xué)成像的框架如圖6。系統(tǒng)接收來自ROACH2的子帶數(shù)據(jù),通過實(shí)時(shí)更新相關(guān)器的相位和振幅系數(shù),提供初始校準(zhǔn),然后基于圖形處理器的2D-FFT生成臟圖,潔化后執(zhí)行基于特定步長的圖像差分比較,閾值檢測器用來發(fā)現(xiàn)瞬態(tài)事件,最后用堆疊模塊形成一個(gè)高動(dòng)態(tài)范圍的圖像[22]。

圖6 Pelican實(shí)現(xiàn)成像框架Fig.6 Pelican realized imaging framework

1.7 Cobalt

Cobalt是基于圖形處理器設(shè)計(jì)開發(fā)的LOFAR望遠(yuǎn)鏡軟件相關(guān)器和波束形成器[23]。軟件部分實(shí)現(xiàn)了數(shù)據(jù)管道,用于管理通過網(wǎng)絡(luò)和中央處理器、圖形處理器的數(shù)據(jù)流,并完成數(shù)據(jù)存儲(chǔ)。

圖7為從外部系統(tǒng)到Cobalt內(nèi)部數(shù)據(jù)流示意圖。接收的數(shù)據(jù)存入輸入緩沖區(qū),完成子帶處理后進(jìn)行存儲(chǔ),模塊間以all-to-all模式通信。

圖7 Cobalt數(shù)據(jù)流示意圖Fig.7 Cobalt data flow

Cobalt由幾個(gè)交互子系統(tǒng)組成,管理來自網(wǎng)絡(luò)的數(shù)據(jù)流,實(shí)現(xiàn)高速率、可持續(xù)數(shù)據(jù)傳輸,持久性存儲(chǔ)數(shù)據(jù),并進(jìn)行控制、監(jiān)控、記錄日志和元數(shù)據(jù)。圖8顯示了Cobalt的組件依賴關(guān)系和數(shù)據(jù)流。Cobalt處理大量獨(dú)立的數(shù)據(jù)流,每個(gè)AntennaFieldInput接收10 GbE端口的UDP數(shù)據(jù)包,并將有效數(shù)據(jù)轉(zhuǎn)發(fā)到TransposeSender,通過環(huán)形緩沖區(qū)移動(dòng)整數(shù)倍,執(zhí)行延遲補(bǔ)償。這些數(shù)據(jù)流在沒有相互依賴的情況下結(jié)合信息傳遞接口(Message Passing Interface, MPI)實(shí)現(xiàn)并行處理,圖形處理器上的信號(hào)處理管道GPUpipeline包含TransposeReceiver組件,傳輸子帶數(shù)據(jù),與MPI_Isend和MPI_Irecv非阻塞發(fā)送和接收相結(jié)合,傳輸相關(guān)或波束數(shù)據(jù)。輸出組件接收?qǐng)D形處理器子帶數(shù)據(jù),最終使用casacore以MeasurementSet或HDF5格式存儲(chǔ)[24]。

圖8 Cobalt組件依賴關(guān)系和數(shù)據(jù)流Fig.8 Cobalt component dependencies and data flow

圖5 平方公里陣列計(jì)劃利用Pelican實(shí)現(xiàn)數(shù)據(jù)處理流程

Cobalt可以處理離線任務(wù),包括自動(dòng)標(biāo)記、校準(zhǔn)、平均、脈沖星數(shù)據(jù)相干消色散和動(dòng)態(tài)光譜產(chǎn)生以及脈沖星數(shù)據(jù)在線折疊和搜索。Cobalt具備可擴(kuò)展性,如子陣列并行觀測、中斷響應(yīng)以及其他的觀測模式。在網(wǎng)絡(luò)帶寬和計(jì)算能力方面,Cobalt提供了額外容量,效率顯著提高,例如低波段天線和高波段天線的并行觀測。一般來說,相關(guān)器只能處理單個(gè)項(xiàng)目的數(shù)據(jù),Cobalt因擁有巨大的計(jì)算和吞吐能力,可以同時(shí)處理多個(gè)項(xiàng)目數(shù)據(jù)。

目前已有更新版本Cobalt 2.0,具備更好的靈活性和吞吐量,接收數(shù)據(jù)量速率超過1 TB/s,更大限度地利用圖形處理器的優(yōu)勢,實(shí)現(xiàn)高性能計(jì)算和數(shù)據(jù)實(shí)時(shí)處理。

2 面臨的問題

現(xiàn)階段數(shù)據(jù)流管道軟件面臨的重點(diǎn)與難點(diǎn):

(1)現(xiàn)有射電天文數(shù)據(jù)流管道軟件均為特定觀測設(shè)備設(shè)計(jì),為滿足特定需求開發(fā),并不適用于所有類型的觀測設(shè)備及觀測模式。針對(duì)具體觀測設(shè)備,應(yīng)根據(jù)各觀測設(shè)備的接收系統(tǒng)需求來實(shí)現(xiàn)相應(yīng)的軟件功能。部分軟件系統(tǒng)雖然可移植到不同的觀測設(shè)備終端,使用時(shí)并不需要其全部功能,需要深入研究底層代碼,完成二次開發(fā)及調(diào)試,開發(fā)成本高、難度大。

(2)已有大型射電望遠(yuǎn)鏡終端系統(tǒng)多采用基于Xilinx FPGA的ROACH系列、SNAP系列硬件板卡,近幾年推出了集成度更高的RFSoC,可提供高速以太網(wǎng)數(shù)據(jù)傳輸接口,對(duì)服務(wù)器端數(shù)據(jù)流實(shí)時(shí)接收能力提出了更高的要求。部署在服務(wù)器端的管道需要滿足基于RFSoC平臺(tái)更高帶寬的數(shù)據(jù)接收需求,提高數(shù)據(jù)的傳輸效率。

(3)數(shù)據(jù)實(shí)時(shí)高效傳輸與處理能力是管道軟件性能提高的方向。數(shù)據(jù)處理平臺(tái)多采用圖形處理器集群實(shí)現(xiàn)大規(guī)模數(shù)據(jù)處理,然而數(shù)據(jù)分發(fā)與收集并沒有得到有效的處理,高效實(shí)現(xiàn)數(shù)據(jù)流在多圖形處理器上的分發(fā)與匯總,將大大提高傳輸與計(jì)算效率。

(4)為滿足多功能數(shù)字終端系統(tǒng)的數(shù)據(jù)處理要求,應(yīng)形成一套配置靈活的系統(tǒng)軟件,構(gòu)建的管道軟件應(yīng)實(shí)現(xiàn)數(shù)據(jù)處理與分析所需算法,針對(duì)不同觀測模式提供可調(diào)用的類庫,滿足多觀測課題的需求。

3 大口徑射電望遠(yuǎn)鏡數(shù)據(jù)流管道軟件設(shè)計(jì)思路

應(yīng)用于大口徑射電望遠(yuǎn)鏡數(shù)據(jù)流傳輸與處理的管道軟件,作為多功能終端系統(tǒng)軟件中重要的組成部分,將完成數(shù)據(jù)流獲取、傳輸、管理與監(jiān)控;高效捕獲并暫存來自現(xiàn)場可編程門陣列的網(wǎng)絡(luò)數(shù)據(jù)包,實(shí)現(xiàn)數(shù)據(jù)在中央處理器與圖形處理器之間高速流轉(zhuǎn)及相關(guān)處理;提供圖形處理器內(nèi)部數(shù)據(jù)處理算法調(diào)用,實(shí)現(xiàn)原始數(shù)據(jù)格式到標(biāo)準(zhǔn)文件格式的轉(zhuǎn)換及數(shù)據(jù)類型的匹配,最終將數(shù)據(jù)高效寫入磁盤存儲(chǔ)。

3.1 基于零拷貝和環(huán)形緩沖區(qū)的數(shù)據(jù)傳輸

110 m射電望遠(yuǎn)鏡多功能數(shù)字終端采用現(xiàn)場可編程門陣列+圖形處理器集群架構(gòu)模式,如圖9[25]。RFSoC實(shí)現(xiàn)數(shù)據(jù)采樣和預(yù)處理,單塊RFSoC芯片可實(shí)現(xiàn)8通道,每通道最大采樣速率為4.096 GSPS,12 bit采樣,采樣后每通道的數(shù)據(jù)量約為48 Gbps。經(jīng)過RFSoC預(yù)處理將采樣數(shù)據(jù)劃分成多個(gè)子帶,利用RFSoC提供100 GB的數(shù)據(jù)傳輸接口,通過高速以太網(wǎng)傳輸至圖形處理器集群,實(shí)現(xiàn)數(shù)據(jù)相關(guān)并進(jìn)行數(shù)據(jù)預(yù)處理。

圖9 110 m射電望遠(yuǎn)鏡終端系統(tǒng)框架Fig.9 The block diagram of QTT backend system

網(wǎng)絡(luò)數(shù)據(jù)傳輸使用UDP協(xié)議,網(wǎng)卡緩沖區(qū)的數(shù)據(jù)通過Linux內(nèi)核協(xié)議棧傳輸至用戶應(yīng)用程序,數(shù)據(jù)包在內(nèi)核態(tài)與用戶態(tài)之間拷貝,系統(tǒng)消耗大且存在傳輸瓶頸。為了有效降低系統(tǒng)資源占用,實(shí)現(xiàn)圖形處理器服務(wù)器端傳輸?shù)牡蛠G包率和低延遲需求,圖形處理器服務(wù)器端可基于零拷貝技術(shù)實(shí)現(xiàn)高輸入輸出環(huán)境下的高性能數(shù)據(jù)獲取。標(biāo)準(zhǔn)數(shù)據(jù)傳輸與零拷貝數(shù)據(jù)傳輸對(duì)比如圖10。管道軟件實(shí)現(xiàn)基于零拷貝的數(shù)據(jù)傳輸模塊,創(chuàng)建并行網(wǎng)絡(luò)輸入線程,在用戶態(tài)以輪詢方式讀取網(wǎng)卡緩沖區(qū)中的數(shù)據(jù)包,實(shí)時(shí)寫入動(dòng)態(tài)創(chuàng)建的環(huán)形緩沖區(qū),避免以標(biāo)準(zhǔn)內(nèi)核協(xié)議棧方式處理,減少網(wǎng)卡到管道軟件過程中的數(shù)據(jù)拷貝次數(shù),以提高數(shù)據(jù)訪問效率。

圖10 標(biāo)準(zhǔn)數(shù)據(jù)傳輸與零拷貝數(shù)據(jù)傳輸Fig.10 Standard data transfer and zero-copy data transfer

3.2 基于圖形處理器集群的數(shù)據(jù)實(shí)時(shí)處理

基于混合架構(gòu)的110 m射電望遠(yuǎn)鏡多功能終端系統(tǒng)計(jì)劃實(shí)現(xiàn)脈沖星、暫現(xiàn)源、分子譜線、總功率、甚長基線干涉測量(Very Long Baseline Interferometry, VLBI)、基帶數(shù)據(jù)等多種觀測模式。圖形處理器集群內(nèi)部數(shù)據(jù)流如圖11,現(xiàn)場可編程門陣列預(yù)處理后的數(shù)據(jù)傳輸至圖形處理器集群,實(shí)現(xiàn)數(shù)據(jù)處理。數(shù)據(jù)流經(jīng)解碼、射頻干擾消減后,針對(duì)不同觀測模式完成相應(yīng)處理,并最終以VDIF,PSRDada或PSRFITS等格式存儲(chǔ)。

圖11 110 m射電望遠(yuǎn)鏡多功能數(shù)字終端圖形處理器集群內(nèi)部數(shù)據(jù)流Fig.11 QTT multifunctional digital backend GPU cluster internal data flow

管道軟件應(yīng)提供圖形處理器內(nèi)部數(shù)據(jù)處理模塊,用甚長基線干涉測量技術(shù)充分整合天文學(xué)算法,實(shí)現(xiàn)解碼、射頻干擾識(shí)別、校準(zhǔn)、折疊、標(biāo)準(zhǔn)格式輸出等常用功能,實(shí)現(xiàn)標(biāo)準(zhǔn)文件格式的轉(zhuǎn)換及數(shù)據(jù)類型的匹配?;诰W(wǎng)絡(luò)提供友好的訪問界面,以模塊化的方式實(shí)現(xiàn)更好的靈活性并支持?jǐn)U展,提供用戶自定義模塊功能,允許用戶根據(jù)實(shí)際需求調(diào)用模塊或編寫自定義模塊。

針對(duì)110 m射電望遠(yuǎn)鏡多功能數(shù)字終端數(shù)據(jù)流,數(shù)據(jù)傳輸流程如圖12。網(wǎng)絡(luò)線程捕獲來自RFSoC的數(shù)據(jù)并存儲(chǔ)至輸入數(shù)據(jù)環(huán)形緩沖區(qū),管道軟件運(yùn)行在多臺(tái)圖形處理器服務(wù)器上,每臺(tái)甚長基線干涉測量服務(wù)器接收一個(gè)頻率通道子帶。為實(shí)現(xiàn)圖形處理器集群上多線程并行和分布式執(zhí)行,高效及時(shí)運(yùn)行和數(shù)據(jù)塊轉(zhuǎn)發(fā),集群節(jié)點(diǎn)中結(jié)合MPI實(shí)現(xiàn)數(shù)據(jù)的分發(fā)和獲取,采用MPI提供的非阻塞消息接收與發(fā)送調(diào)用接口MPI_Isend和MPI_Irecv,實(shí)現(xiàn)計(jì)算和通信重疊進(jìn)行,提高數(shù)據(jù)處理效率。圖形處理器集群處理后的數(shù)據(jù)暫存于輸出數(shù)據(jù)緩沖區(qū),并通過并行輸出線程傳輸至存儲(chǔ)系統(tǒng)。

圖12 數(shù)據(jù)傳輸流程圖Fig.12 Data transmission flowchart

3.3 基于BeeGFS的數(shù)據(jù)存儲(chǔ)

隨著數(shù)據(jù)量的迅速增加,高性能計(jì)算系統(tǒng)需要更復(fù)雜、更高效的方法管理和存儲(chǔ)大量數(shù)據(jù)。分布式文件系統(tǒng)將數(shù)據(jù)分布到眾多存儲(chǔ)設(shè)備上,對(duì)數(shù)據(jù)進(jìn)行分布式存儲(chǔ)和管理,實(shí)現(xiàn)分布式讀寫。借助并行分布式文件系統(tǒng)BeeGFS[26]構(gòu)建更高效的數(shù)據(jù)存儲(chǔ)后端,提高輸入輸出性能,實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)后端的高性能和可擴(kuò)展性。

基于BeeGFS的數(shù)據(jù)存儲(chǔ)系統(tǒng)整體框架如圖13。圖形處理器集群處理過的數(shù)據(jù)整合后封裝成特定的格式,通過構(gòu)建并行輸出管理線程同時(shí)傳輸一個(gè)或者多個(gè)數(shù)據(jù)流,相同格式的數(shù)據(jù)寫入同一環(huán)形緩沖區(qū),傳輸至文件存儲(chǔ)系統(tǒng),通過BeeGFS提供的Client讀寫數(shù)據(jù),利用多個(gè)獨(dú)立I/O實(shí)現(xiàn)高并發(fā)讀寫?;贐eeGFS分布式文件系統(tǒng)實(shí)現(xiàn)元數(shù)據(jù)分離,MDS和OSS的本地文件系統(tǒng)分別承載元數(shù)據(jù)和數(shù)據(jù)的存儲(chǔ),其中文件頭中包含的日期時(shí)間、觀測環(huán)境參數(shù)等觀測信息,作為元數(shù)據(jù)信息的主要組成部分,存儲(chǔ)于元數(shù)據(jù)服務(wù)器。MDS,OSS以及Client的擴(kuò)展性使得基于BeeGFS的數(shù)據(jù)存儲(chǔ)系統(tǒng)能夠滿足大規(guī)模數(shù)據(jù)存儲(chǔ)擴(kuò)展的需求。

圖13 基于BeeGFS的數(shù)據(jù)存儲(chǔ)系統(tǒng)Fig.13 Data storage system based on BeeGFS

4 結(jié) 語

射電天文望遠(yuǎn)鏡數(shù)字終端系統(tǒng)越來越依賴實(shí)時(shí)處理來克服數(shù)據(jù)存儲(chǔ)和分析的瓶頸,天文領(lǐng)域已經(jīng)開發(fā)并研究了數(shù)據(jù)流處理管道,用于提高數(shù)據(jù)傳輸和處理的效率,簡化數(shù)據(jù)處理代碼開發(fā)難度。本文綜述了現(xiàn)有射電天文數(shù)據(jù)傳輸管道軟件,介紹了射電天文數(shù)據(jù)傳輸管道軟件的結(jié)構(gòu)、功能,并在圖形處理器服務(wù)器上進(jìn)行了測試。在總結(jié)現(xiàn)有管道軟件的基礎(chǔ)上,本文給出了未來大口徑射電望遠(yuǎn)鏡多功能終端系統(tǒng)應(yīng)根據(jù)實(shí)際觀測需求設(shè)計(jì)數(shù)據(jù)傳輸管道的一般思路。未來多功能數(shù)字終端系統(tǒng)基于現(xiàn)場可編程門陣列+圖形處理器實(shí)現(xiàn),應(yīng)該向易升級(jí)、改造、靈活、可擴(kuò)展的方向發(fā)展。

致謝:本文得到中國虛擬天文臺(tái)、國家天文科學(xué)數(shù)據(jù)中心、中國科學(xué)院科學(xué)數(shù)據(jù)中心體系提供的數(shù)據(jù)資源和技術(shù)支持。

猜你喜歡
射電緩沖區(qū)數(shù)據(jù)流
嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
誰能抓住“神秘天神”——快速射電暴?
軍事文摘(2022年12期)2022-07-13 03:10:22
射電星系
美國的綠岸射電望遠(yuǎn)鏡
軍事文摘(2021年22期)2022-01-18 06:22:52
汽車維修數(shù)據(jù)流基礎(chǔ)(下)
一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
世界著名射電望遠(yuǎn)鏡
太空探索(2016年9期)2016-07-12 10:00:01
基于數(shù)據(jù)流聚類的多目標(biāo)跟蹤算法
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
北醫(yī)三院 數(shù)據(jù)流疏通就診量
仁怀市| 西青区| 铜鼓县| 象山县| 唐河县| 香港| 确山县| 永清县| 四会市| 资源县| 句容市| 惠东县| 蓬溪县| 旬邑县| 石嘴山市| 霸州市| 馆陶县| 离岛区| 丘北县| 沾益县| 富民县| 淄博市| 巧家县| 萍乡市| 中阳县| 洪江市| 长岭县| 奎屯市| 微山县| 平利县| 稷山县| 启东市| 彭山县| 特克斯县| 乐昌市| 贵定县| 楚雄市| 永胜县| 海阳市| 梁山县| 怀仁县|