利用gpu對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法和裝置。該方法主要包括:在衛(wèi)星信號(hào)的軟件接收機(jī)中設(shè)置CPU單元和GPU單元,軟件接收機(jī)中的CPU單元讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令傳輸給GPU單元;所述GPU單元接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的多個(gè)通道并行對(duì)所述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理;所述GPU單元將所述多個(gè)通道分別得到的捕獲處理結(jié)果進(jìn)行累加,將累加結(jié)果傳輸給所述CPU單元。本發(fā)明實(shí)施例通過(guò)在衛(wèi)星信號(hào)的軟件接收機(jī)中同時(shí)設(shè)置CPU單元和GPU單元,將衛(wèi)星數(shù)據(jù)的捕獲處理運(yùn)算部分設(shè)置在GPU平臺(tái)上實(shí)現(xiàn),大大提高衛(wèi)星捕獲速度,滿足海量衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí)捕獲要求,從而實(shí)現(xiàn)衛(wèi)星的實(shí)施、快速失鎖重捕。
【專利說(shuō)明】利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及衛(wèi)星信號(hào)捕獲【技術(shù)領(lǐng)域】,尤其涉及一種利用GPU (Graphic Processing Unit,圖形處理器)對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法和裝置。
【背景技術(shù)】
[0002] 基于PC(personal computer,個(gè)人計(jì)算機(jī))平臺(tái)的軟件接收機(jī)中,衛(wèi)星信號(hào)的捕 獲、跟蹤和定位都采用軟件方式實(shí)現(xiàn)。由于基于PC平臺(tái)的軟件接收機(jī)需要捕獲的衛(wèi)星導(dǎo)航 信號(hào)是海量的,并且衛(wèi)星信號(hào)的捕獲和相關(guān)所需要的算法運(yùn)算量極高,因此需要對(duì)PC平臺(tái) 的CPU(Central Processing Unit,中央處理器)進(jìn)行速度優(yōu)化,以滿足算法的實(shí)時(shí)性,保證 對(duì)衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí)捕獲和實(shí)時(shí)跟蹤。
[0003] 目前,現(xiàn)有技術(shù)中的一種提高基于PC平臺(tái)的軟件接收機(jī)對(duì)衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí) 捕獲能力的方法為:采取選用更高性能的CPU的方式,或利用利用多個(gè)CPU組成服務(wù)器陣列 的方式來(lái)提高對(duì)衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí)捕獲能力。
[0004] 現(xiàn)有技術(shù)中的提高基于PC平臺(tái)的軟件接收機(jī)對(duì)衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí)捕獲能力的 方法的缺點(diǎn)為:兩種方式都將大大提高軟件接收機(jī)的成本。PC平臺(tái)的CPU并非是專為計(jì)算 密集型任務(wù)所設(shè)計(jì),CPU是時(shí)分處理系統(tǒng),因此,即使是更高性能的CPU也上不能滿足海量 衛(wèi)星導(dǎo)航信號(hào)的實(shí)時(shí)捕獲要求。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實(shí)施例提供了一種利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法和裝置,以 提高衛(wèi)星捕獲速度。
[0006] 本發(fā)明提供了如下方案:
[0007] -種利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,在衛(wèi)星信號(hào)的軟件接收機(jī)中設(shè)置 中央處理器CPU單元和圖形處理器GPU單元,所述的方法具體包括:
[0008] 軟件接收機(jī)中的CPU單元讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令傳輸給 GPU單元;
[0009] 所述GPU單元接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的多個(gè)通 道并行對(duì)所述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理;
[0010] 所述GPU單元將所述多個(gè)通道分別得到的捕獲處理結(jié)果進(jìn)行累加,將累加結(jié)果傳 輸給所述CPU單元。
[0011] 所述的軟件接收機(jī)中的CPU單元讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令 傳輸給GPU單元,包括 :
[0012] 軟件接收機(jī)中的CPU單元讀取一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù),按照設(shè)定的時(shí)間間隔T將 所述一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù)劃分為依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù);
[0013] 針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù),所述CPU單元設(shè)置所述GPU單元中的各個(gè)通道處 理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的共同數(shù)據(jù)起始點(diǎn)indexStart,根據(jù)各個(gè)通道的碼相位初 始值和步進(jìn)值分別計(jì)算出各個(gè)通道的碼相位跳變點(diǎn)indexEnd ;
[0014] 所述CPU單元將每個(gè)通道的indexStart和indexEnd設(shè)置在每個(gè)通道的索引 index結(jié)構(gòu)體中,將攜帶每個(gè)通道的index結(jié)構(gòu)體的針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲 處理指令和所述依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù)傳輸給所述GPU單元。
[0015] 所述的GPU單元接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的多個(gè) 通道并行對(duì)所述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,包括:
[0016] 所述GPU單元中的每個(gè)通道配置了一個(gè)處理器,所述GPU單元接收到所述捕獲處 理指令后,所述GPU單元中的每個(gè)通道的處理器分別獲取自身通道的index結(jié)構(gòu)體;
[0017] 所述每個(gè)通道的處理器將自身通道的index結(jié)構(gòu)體中的indexStart作為自身 通道處理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的起始數(shù)據(jù)點(diǎn),將自身通道的index結(jié)構(gòu)體中的 indexEnd作為自身通道處理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的結(jié)束數(shù)據(jù)點(diǎn),所述每個(gè)通道的 處理器計(jì)算每個(gè)線程需要處理的數(shù)據(jù)點(diǎn)數(shù)為:
【權(quán)利要求】
1. 一種利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,其特征在于,在衛(wèi)星信號(hào)的軟件接 收機(jī)中設(shè)置中央處理器CPU單元和圖形處理器GPU單元,所述的方法具體包括: 軟件接收機(jī)中的CPU單元讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令傳輸給GPU 單元; 所述GPU單元接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的多個(gè)通道并 行對(duì)所述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理; 所述GPU單元將所述多個(gè)通道分別得到的捕獲處理結(jié)果進(jìn)行累加,將累加結(jié)果傳輸給 所述CPU單元。
2. 根據(jù)權(quán)利要求1所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,其特征在于,所述 的軟件接收機(jī)中的CPU單元讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令傳輸給GPU單 元,包括: 軟件接收機(jī)中的CPU單元讀取一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù),按照設(shè)定的時(shí)間間隔T將所述 一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù)劃分為依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù); 針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù),所述CPU單元設(shè)置所述GPU單元中的各個(gè)通道處理所 述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的共同數(shù)據(jù)起始點(diǎn)indexStart,根據(jù)各個(gè)通道的碼相位初始值 和步進(jìn)值分別計(jì)算出各個(gè)通道的碼相位跳變點(diǎn)indexEnd ; 所述CPU單元將每個(gè)通道的indexStart和indexEnd設(shè)置在每個(gè)通道的索引index結(jié) 構(gòu)體中,將攜帶每個(gè)通道的index結(jié)構(gòu)體的針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令 和所述依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù)傳輸給所述GPU單元。
3. 根據(jù)權(quán)利要求2所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,其特征在于,所述 的GPU單元接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的多個(gè)通道并行對(duì)所 述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,包括: 所述GPU單元中的每個(gè)通道配置了一個(gè)處理器,所述GPU單元接收到所述捕獲處理指 令后,所述GPU單元中的每個(gè)通道的處理器分別獲取自身通道的index結(jié)構(gòu)體; 所述每個(gè)通道的處理器將自身通道的index結(jié)構(gòu)體中的indexStart作為自身通道處 理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的起始數(shù)據(jù)點(diǎn),將自身通道的index結(jié)構(gòu)體中的indexEnd 作為自身通道處理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的結(jié)束數(shù)據(jù)點(diǎn),所述每個(gè)通道的處理器計(jì) 算每個(gè)線程需要處理的數(shù)據(jù)點(diǎn)數(shù)為:
所述N為每個(gè)通道設(shè)置的線程 數(shù); 所述每個(gè)通道的處理器利用各個(gè)線程按照設(shè)定的捕獲處理算法對(duì)所述第一時(shí)間片段 的衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,將捕獲處理結(jié)果傳輸給所述GPU單元的中心處理器,并且每個(gè) 通道的處理器清除自身通道的index結(jié)構(gòu)體。
4. 根據(jù)權(quán)利要求3所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,其特征在于,所 述的GPU單元將所述多個(gè)通道分別得到的捕獲處理結(jié)果進(jìn)行累加,將累加結(jié)果傳輸給所述 CPU單元,包括: 所述GPU單元的中心處理器調(diào)用GPU kernel函數(shù),計(jì)算各個(gè)通道的處理器傳輸過(guò)來(lái)的 捕獲處理結(jié)果的乘累加結(jié)果,將該乘累加結(jié)果作為所述GPU單元對(duì)所述第一時(shí)間片段的衛(wèi) 星數(shù)據(jù)的捕獲處理結(jié)果; 所述GPU單元將所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果傳輸給所述的CPU單 JLi〇
5. 根據(jù)權(quán)利要求2至4任一項(xiàng)所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的方法,其 特征在于,所述的GPU單元將所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果傳輸給所述的 CPU單元之后,還包括: 所述CPU單元接收到所述GPU單元對(duì)所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果 后,根據(jù)所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果更新碼環(huán)載波環(huán)參數(shù); 所述CPU單元針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù),更新indexStart = indexStart+T,將更 新后的indexStart作為各個(gè)通道處理所述第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的共同數(shù)據(jù)起始點(diǎn), 根據(jù)更新后的碼環(huán)載波環(huán)參數(shù)和各個(gè)通道的步進(jìn)值分別計(jì)算出各個(gè)通道的碼相位跳變點(diǎn) indexEnd; 所述CPU單元將每個(gè)通道的indexStart和indexEnd設(shè)置在每個(gè)通道的索引index結(jié) 構(gòu)體中,將攜帶每個(gè)通道的index結(jié)構(gòu)體的針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令 傳輸給所述GPU單元; 所述GPU單元接收到所述針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令后,按照所述 第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理過(guò)程,利用多個(gè)通道并行對(duì)所述第二時(shí)間片段的衛(wèi)星 數(shù)據(jù)進(jìn)行捕獲處理,將捕獲處理結(jié)果傳輸給所述的CPU單元; 重復(fù)執(zhí)行上述處理過(guò)程,直到所述一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù)中的每個(gè)時(shí)間片段的衛(wèi)星數(shù) 據(jù)都進(jìn)行了捕獲處理。
6. -種利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的裝置,其特征在于,該裝置設(shè)置在衛(wèi)星信 號(hào)的軟件接收機(jī)中,所述裝置包括: 中央處理器CPU單元,用于讀取衛(wèi)星數(shù)據(jù),將所述衛(wèi)星數(shù)據(jù)和捕獲處理指令傳輸給GPU 單元; 圖形處理器GPU單元,用于接收到所述衛(wèi)星數(shù)據(jù)和捕獲處理指令后,所述GPU單元中的 多個(gè)通道并行對(duì)所述衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,將所述多個(gè)通道分別得到的捕獲處理結(jié)果進(jìn) 行累加,將累加結(jié)果傳輸給所述CPU單元。
7. 根據(jù)權(quán)利要求6所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的裝置,其特征在于: 所述的CPU單元,具體用于讀取一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù),按照設(shè)定的時(shí)間間隔T將所述 一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù)劃分為依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù); 針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù),所述CPU單元設(shè)置所述GPU單元中的各個(gè)通道處理所 述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的共同數(shù)據(jù)起始點(diǎn)indexStart,根據(jù)各個(gè)通道的碼相位初始值 和步進(jìn)值分別計(jì)算出各個(gè)通道的碼相位跳變點(diǎn)indexEnd ; 所述CPU單元將每個(gè)通道的indexStart和indexEnd設(shè)置在每個(gè)通道的索引index結(jié) 構(gòu)體中,將攜帶每個(gè)通道的index結(jié)構(gòu)體的針對(duì)第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令 和所述依次排列的多個(gè)時(shí)間片段的衛(wèi)星數(shù)據(jù)傳輸給所述GPU單元。
8. 根據(jù)權(quán)利要求6所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的裝置,其特征在于: 所述的GPU單元,具體用于給GPU單元中的每個(gè)通道配置了一個(gè)處理器,接收到所述捕 獲處理指令后,所述GPU單元中的每個(gè)通道的處理器分別獲取自身通道的index結(jié)構(gòu)體; 所述每個(gè)通道的處理器將自身通道的index結(jié)構(gòu)體中的indexStart作為自身通道處 理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的起始數(shù)據(jù)點(diǎn),將自身通道的index結(jié)構(gòu)體中的indexEnd 作為自身通道處理所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的結(jié)束數(shù)據(jù)點(diǎn),所述每個(gè)通道的處理器計(jì) 算每個(gè)線程需要處理的數(shù)據(jù)點(diǎn)數(shù)為:
所述N為每個(gè)通道設(shè)置的線程 數(shù); 所述每個(gè)通道的處理器利用各個(gè)線程按照設(shè)定的捕獲處理算法對(duì)所述第一時(shí)間片段 的衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,將捕獲處理結(jié)果傳輸給所述GPU單元的中心處理器,并且每個(gè) 通道的處理器清除自身通道的index結(jié)構(gòu)體。
9. 根據(jù)權(quán)利要求8所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的裝置,其特征在于: 所述的GPU單元,具體用于利用中心處理器調(diào)用GPU kernel函數(shù),計(jì)算各個(gè)通道的處 理器傳輸過(guò)來(lái)的捕獲處理結(jié)果的乘累加結(jié)果,將該乘累加結(jié)果作為所述GPU單元對(duì)所述第 一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果; 將所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果傳輸給所述的所述CPU單元。
10. 根據(jù)權(quán)利要求7至9任一項(xiàng)所述的利用GPU對(duì)衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理的裝置,其特 征在于: 所述的CPU單元,還用于接收到所述GPU單元對(duì)所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲 處理結(jié)果后,根據(jù)所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理結(jié)果更新碼環(huán)載波環(huán)參數(shù); 針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù),更新indexStart = indexStart+T,將更新后的 indexStart作為各個(gè)通道處理所述第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的共同數(shù)據(jù)起始點(diǎn),根據(jù) 更新后的碼環(huán)載波環(huán)參數(shù)和各個(gè)通道的步進(jìn)值分別計(jì)算出各個(gè)通道的碼相位跳變點(diǎn) indexEnd; 將每個(gè)通道的indexStart和indexEnd設(shè)置在每個(gè)通道的索引index結(jié)構(gòu)體中,將攜 帶每個(gè)通道的index結(jié)構(gòu)體的針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令傳輸給所述 GPU單元; 所述的GPU單元,還用于接收到所述針對(duì)第二時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理指令 后,按照所述第一時(shí)間片段的衛(wèi)星數(shù)據(jù)的捕獲處理過(guò)程,利用多個(gè)通道并行對(duì)所述第二時(shí) 間片段的衛(wèi)星數(shù)據(jù)進(jìn)行捕獲處理,將捕獲處理結(jié)果傳輸給所述的CPU單元; 重復(fù)執(zhí)行上述處理過(guò)程,直到所述一段時(shí)間內(nèi)的衛(wèi)星數(shù)據(jù)中的每個(gè)時(shí)間片段的衛(wèi)星數(shù) 據(jù)都進(jìn)行了捕獲處理。
【文檔編號(hào)】G01S19/37GK104267416SQ201410445890
【公開(kāi)日】2015年1月7日 申請(qǐng)日期:2014年9月3日 優(yōu)先權(quán)日:2014年9月3日
【發(fā)明者】張軍, 史豐豐, 陳麗, 謝維華, 陳明, 咸德勇, 徐金鋒, 李兆南, 程夢(mèng)飛, 鄒本杰 申請(qǐng)人:北京一樸科技有限公司