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

?

基于異構模式的高光譜數(shù)據(jù)加速處理方法研究

2022-05-18 08:57張遠張大偉陳仁華建文
南京信息工程大學學報 2022年2期
關鍵詞:傅里葉線程海量

張遠 張大偉 陳仁 華建文

0 引言

“風云四號”氣象衛(wèi)星于2016年12月發(fā)射,并在軌成功運行.“風云四號”01星大氣垂直探測儀首次實現(xiàn)了靜止軌道傅里葉高光譜探測,精細觀測到大氣的垂直結構.干涉式大氣垂直探測儀的核心系統(tǒng)是干涉儀,探測儀實際上就是空間工作的傅里葉變換光譜儀[1].為了滿足氣象衛(wèi)星更高時空分辨率的大氣探測需求,后續(xù)將會使用更大面陣的焦平面探測器,獲取更大數(shù)據(jù)量的光譜數(shù)據(jù),提高空間分辨率和探測頻率,實現(xiàn)短周期的實時天氣預報等.隨著“風云四號”大氣垂直探測儀在光譜分辨率上的重大突破,獲取的遙感高光譜數(shù)據(jù)量會變得更大,海量遙感高光譜數(shù)據(jù)的較低計算效率成為大氣遙感高光譜應用的瓶頸.

為解決海量高光譜數(shù)據(jù)的高性能處理問題,國內外眾多研究人員提出通過使用計算機集群模式、基于消息傳遞的并行編程環(huán)境MPI(Message Passing Interface)、基于圖形處理的處理器GPU(Graphic Processing Unit)等提高光譜數(shù)據(jù)的處理效率[2].基于GPU的CUDA(Compute Unified Device Architecture)通用并行計算的架構技術,利用GPU多計算核心、高內存帶寬、浮點運算的運行速度快等特點,可以對海量高光譜數(shù)據(jù)進行并行優(yōu)化,提升高光譜數(shù)據(jù)的處理性能.如今,基于CPU-GPU的異構計算已經成為研究和應用的熱點,GPU逐漸成為解決海量高光譜數(shù)據(jù)的高性能處理問題的有效途徑.利用GPU加速技術,國內外學者在高光譜數(shù)據(jù)處理中嘗試了目標檢測、圖像分類、影像坐標轉換、圖像處理等算法的并行優(yōu)化,并且實驗取得很大的性能提升.文獻[3]研究并實現(xiàn)了基于GPU的光譜相關系數(shù)填圖(SCM)算法的并行化,將加速比提高到25倍左右;文獻[4]在影像坐標轉換過程中引入了CPU-GPU協(xié)同處理技術,這一技術使得坐標轉換效率提高10倍;文獻[5]基于正交空間投影的目標檢測算法提出了高光譜圖像的并行優(yōu)化處理方法,將串行計算速度提高50倍;文獻[6]基于GPU設計了針對遙感圖像預處理過程中的幾何校正的并行算法,結果表明基于GPU陣列的幾何校正有效提高了矯正效率;文獻[7]分析和總結了CPU-GPU架構在高光譜影像數(shù)據(jù)處理系統(tǒng)中的應用,指出這種異構架構在該領域的應用具有可行性且前景廣闊;文獻[8]利用卷積神經網絡(CNN)提取原始圖像特征領域,對現(xiàn)有并行算法GCN(GPU based Cube-CNN)計算效率不夠高的情況,提出了基于通用矩陣乘法(GEMM)算法的GGCN(GPU based Cube-CNN improved by GEMM)并行算法,提升了算法的效率并有效提高了GPU的利用率.綜上所述,對于海量高光譜遙感數(shù)據(jù)的高性能處理引入基于GPU計算的技術手段是可行的.

本文使用基于CPU-GPU異構計算的遙感高光譜數(shù)據(jù)加速處理技術,結合使用快速傅里葉變換完成高光譜數(shù)據(jù)的傅里葉分析,解決海量高光譜數(shù)據(jù)處理過程中的干涉數(shù)據(jù)到光譜數(shù)據(jù)轉換效率較低的問題.這一技術是“風云四號”干涉式大氣垂直探測儀系統(tǒng)研究中的一項重要環(huán)節(jié),對提高光譜分辨率和大氣垂直探測能力,提高我國天氣預報能力具有重要意義.

圖1 CPU和GPU結構Fig.1 The CPU (a) and GPU (b) structures

1 GPU并行運算性能優(yōu)勢

為滿足不同的需求,CPU與GPU結構上有較大的區(qū)別(圖1).CPU在邏輯上有三大組成部分,分別是控制單元、運算單元和存儲單元.在結構上,CPU有較大容量的高速緩存(cache),有復雜的邏輯控制與分支預測,這種結構使得運算單元(ALU)只占CPU結構空間較小的一部分.而GPU在結構設計上包含了大量的ALU,即圖1b中右上的密集的方格,與CPU相比較,GPU沒有復雜的邏輯控制,具有較小的高速緩存,且緩存是為了單個線程(thread)提供數(shù)據(jù)等.GPU在內存設計上分紋理內存、共享內存、全局內存等.使用特定的內存可以更好地提高數(shù)據(jù)的訪問速度,且有更高的內存帶寬,利用大量ALU進行并行處理,計算能力更強.

在實際問題處理中,某些問題或問題中的某一部分解決方式具有很強的并行性,如果按照串行運算處理時,處理時間較長,使用并行計算明顯具有時間上的優(yōu)勢,特別是待處理的數(shù)據(jù)量較大時.而利用GPU就可以很好地解決這類問題,GPU包含了數(shù)量眾多的更小、更高效的核心,這些核心可以很好地解決多任務并行處理的問題.以Fermi架構為例,GPU設計上包含了多個SM(Streaming Multiprocessors,流式多處理器),而每個SM都支持數(shù)以百計的線程并行執(zhí)行,所以當GPU進行并行運算時,成百上千的線程可以并行執(zhí)行.CUDA core為GPU的計算核心,相當于微型CPU,線程的管理和執(zhí)行采用的是SIMT(Single Instruction Multiple Thread)架構,每個線程都有它自己的狀態(tài)寄存器和指令地址計數(shù)器,這就使得GPU擅長解決大規(guī)模的數(shù)據(jù)并行任務.

在結構層次上,GPU往下可分為SM、SP(Stream Processor),CUDA中線程分為Grid、Block、Thread三個組織層次,Grid、Block均為dim3結構.CUDA Thread 最終的并行執(zhí)行是在實際的物理硬件上實現(xiàn)的,邏輯線程與實際的物理硬件有著一定的映射關系,即Thread對應SP(即CUDA core),Block對應SM,Grid對應Device設備.GPU并行執(zhí)行時任務線程層次如圖2所示.

圖2 CUDA Thread層次Fig.2 CUDA Thread levels

串行運算和并行運算的區(qū)別在于:串行計算將一個任務分解為大量離散的指令,指令是順序執(zhí)行的,而并行計算將一個任務的處理分為幾個階段,每個部分同樣分解為一系列的離散指令,在某些階段,任務適合并行處理時,這些指令可在眾多線程中同時執(zhí)行,提高了解決問題的速度.

2 高光譜數(shù)據(jù)處理相關算法研究

2.1 Cooley-Tukey FFT 算法

對于一個非周期離散時間信號x(n),其離散傅里葉變換為

(1)

式中,k=0,1,…,N-1,為DFT系數(shù).

離散傅里葉變換(DFT)運算時間復雜度為O(n2).為了簡化DFT,利用其周期性、對稱性等特點,便出現(xiàn)了快速傅里葉變換(FFT),其時間復雜度為O(nlog2n),其中Cooley-Tukey FFT 算法[9]最為成熟.

快速傅里葉變換用數(shù)學公式表示如下:

(2)

(3)

其中:k=0,1,…,N/2-1;DF(k)和GF(k)分別是序列XF(k)的偶數(shù)數(shù)列和奇數(shù)數(shù)列.

圖3 Cooley-Tukey FFT蝴蝶操作結構Fig.3 Structure of Cooley-Tukey FFT butterfly operation

2.2 FFT在GPU上的并行化

既然Cooley-Tukey FFT 算法采用分治的思想,那么分治過程就會有分解和合并兩個階段,合并階段進行的是蝴蝶操作.合并過程大致如下:經過前面分解過后,各個序列長度均為1,第一組合并(即蝴蝶操作)是將這些序列兩兩合并,由于原序列被分為了n個短序列,故一共需要進行n/2次合并.以此類推,共進行l(wèi)og2n組的合并,時間復雜度為O(nlog2n).

每一組合并中有n/2次蝴蝶操作,由于它們之間沒有先后順序關系,因此可以分配足夠的線程,使得一組中n/2次蝴蝶操作同時進行,該組計算的并行時間復雜度為O(1),整個計算過程一共需要進行l(wèi)og2n組合并,故采用蝴蝶操作并行化時,整個計算過程的并行時間復雜度為O(log2n).本文利用該方法在GPU上實現(xiàn)FFT的并行化操作,加快高光譜數(shù)據(jù)的處理速度.

3 基于異構計算的遙感高光譜數(shù)據(jù)并行處理實現(xiàn)流程

通過對CPU和GPU結構比較,使用CPU 完成數(shù)據(jù)處理過程中邏輯控制的計算,而GPU完成具有數(shù)據(jù)密集型的并行處理的計算.明白CPU-GPU的協(xié)同處理技術后,使用NVIDIA 的CUDA并行編程框架制訂數(shù)據(jù)并行處理流程,包括高光譜數(shù)據(jù)的讀取、CPU和GPU端內存分配、數(shù)據(jù)的分塊處理、CPU-GPU內存交互、GPU端核函數(shù)定義等,建立穩(wěn)定高效的處理流程,具體流程如圖4所示,圖4a為傳統(tǒng)CPU計算流程,圖4b為異構計算流程.異構計算流程如下:

1)CPU和GPU端內存分配.CPU和GPU兩者內存地址不同,需要在兩端進行內存單獨分配,便于CPU和GPU對內存數(shù)據(jù)操作,為后續(xù)的CPU-GPU內存交互做準備.

2)大氣遙感高光譜數(shù)據(jù)的讀取.原高光譜數(shù)據(jù)以二進制格式存儲在PC機中,需要數(shù)據(jù)讀至CPU內存中,用于后續(xù)高光譜數(shù)據(jù)的處理.

3)CPU-GPU內存交互.由于CPU 與 GPU端內存相互獨立,即兩端分配的內存只能在各自端使用,因此在GPU端運行核函數(shù)時,需要將用于計算的數(shù)據(jù)從CPU端內存拷貝到 GPU端內存,核函數(shù)計算完成之后,也需要把計算結果拷貝到CPU端,然后在主機端完成后面的處理.

4)GPU端核函數(shù)定義.在GPU端定義核函數(shù),將CPU端拷貝來的數(shù)據(jù)在GPU端進行數(shù)據(jù)的并行計算,同時設置線程網格(Grid)和 線程塊(Block)的大小,確定使用線程的數(shù)量.

5)核函數(shù)的執(zhí)行.定義的核函數(shù)將在分配的大量線程上運行,線程之間的運行同時進行,互補干擾,這得益于GPU本身的物理結構擁有很多的硬件線程,它們使用單指令多數(shù)據(jù)運算.

圖4 CPU計算和異構計算流程Fig.4 Processes of the CPU-based computing (a) and CPU-GPU heterogeneous computing (b)

4 實驗與分析

本實驗使用同一臺PC機,分別測試基于CPU計算和基于CPU-GPU異構計算處理高光譜數(shù)據(jù),處理的數(shù)據(jù)量均為400份文件,一份文件有36 MB光譜數(shù)據(jù),總共14.4 GB的數(shù)據(jù),比較兩者處理相同任務所用的時間,判斷基于CPU-GPU異構計算的并行處理是否具有性能優(yōu)勢.

1)軟硬件環(huán)境

采用一臺PC機,使用NVIDIA 公司的GenForce GTX 1660 GPU顯卡,顯卡容量6 GB,有1 408個CUDA核心;CPU處理器為Intel(R) Core(TM) i9-9900K,物理內存32 GB.實驗在64 bit Windows10系統(tǒng)下進行,采用Visual Studio 2017 集成開發(fā)環(huán)境,使用C++編程語言,進行基于CPU計算和基于CPU-GPU異構計算的高光譜數(shù)據(jù)處理.

2)實驗結果分析

分別使用基于CPU計算和基于CPU-GPU異構計算的技術處理相同海量高光譜數(shù)據(jù),兩者所用計算數(shù)據(jù)均用雙精度表示,計算完成干涉圖到光譜圖的轉換時間,使用計時工具計時,并判斷計算結果準確性.兩者所用時間:前者130 min左右,后者約1.5 min,說明采用異構計算可以明顯提升處理性能,速度提升80多倍.為驗證結果準確性,這里選取兩幅對應的光譜圖顯示,一幅為基于CPU-GPU異構模式的計算數(shù)據(jù)圖像,一幅為基于CPU的使用matlab函數(shù)庫計算的數(shù)據(jù)圖像,如圖5所示.數(shù)據(jù)結果比較采用(a-b)/((a+b)/2)誤差的形式,a表示圖5a即基于CPU-GPU異構模式的計算數(shù)據(jù),b表示圖5b即使用CPU計算的數(shù)據(jù),結果如圖6所示,兩者相對誤差量級基本在10-14,可以說明兩種方式處理后的數(shù)據(jù)是一致的.故使用基于CPU-GPU異構計算的并行加速處理的方法處理大氣遙感高光譜數(shù)據(jù)時,速度明顯提升,準確性也可以保證.

圖5 基于CPU-GPU異構計算和基于CPU計算得到的光譜圖Fig.5 Spectrograms obtained from CPU-GPU heterogeneous computing (a) and CPU-based computing (b)

圖6 兩種情況計算結果相對誤差Fig.6 Relative error between CPU-GPU heterogeneous computing and CPU-based computing

5 結束語

本文針對海量高光譜數(shù)據(jù)處理效率較低的情況,將基于CPU-GPU異構計算的技術引入到高光譜數(shù)據(jù)處理中來,并將其用于高光譜數(shù)據(jù)處理的一套系統(tǒng)中,對整體的性能進行優(yōu)化,極大地提高了數(shù)據(jù)處理的效率.實驗結果表明,本方法較傳統(tǒng)的CPU計算有著較大的性能提升,速度提升80多倍,研究成果將會在“風云四號”干涉式大氣垂直探測儀獲得的數(shù)據(jù)處理中得到應用.基于CPU-GPU異構計算的大氣高光譜數(shù)據(jù)并行加速處理技術,是提高高光譜分辨率探測和大氣垂直探測能力的要求,對于提高我國天氣預報能力具有重要的應用價值.

猜你喜歡
傅里葉線程海量
一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
實時操作系統(tǒng)mbedOS 互斥量調度機制剖析
構造Daubechies小波的一些注記
法國數(shù)學家、物理學家傅里葉
基于國產化環(huán)境的線程池模型研究與實現(xiàn)
海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
“海量+”:大學生品格提升的浸潤方——以高職藝術設計專業(yè)為例
基于傅里葉域卷積表示的目標跟蹤算法
一個圖形所蘊含的“海量”巧題
計算機中的多線程問題