王 興,王介君,孫 寧,汪 瑤
(南京信息工程大學(xué)大氣科學(xué)學(xué)院,江蘇 南京 210044)
交叉相關(guān)算法是當(dāng)今應(yīng)用效果較好的外推方法之一,在大氣科學(xué)、地質(zhì)勘探、計(jì)算機(jī)圖形圖像處理、模式識(shí)別與跟蹤等領(lǐng)域得到廣泛研究與應(yīng)用。在氣象方面,交叉相關(guān)是短時(shí)臨近預(yù)報(bào)的常用算法之一。它不僅可應(yīng)用于氣象雷達(dá)數(shù)據(jù)的跟蹤外推,獲得晴空邊界層氣流及降水回波強(qiáng)度的相關(guān)信息[1-2],還可應(yīng)用于對(duì)衛(wèi)星云圖中云團(tuán)移動(dòng)的短時(shí)預(yù)測(cè)及數(shù)值預(yù)報(bào)等諸多方面[3-4]。
由于該算法的時(shí)間復(fù)雜度高、運(yùn)算量大,在對(duì)高清圖像的實(shí)時(shí)跟蹤識(shí)別或氣象精細(xì)化外推預(yù)報(bào)等方面,運(yùn)算速度無法滿足業(yè)務(wù)要求。以廣東及周邊地區(qū)的地閃定位資料外推為例,資料精度為0.001°,經(jīng)緯網(wǎng)格數(shù)為14000×9000,算法的時(shí)間復(fù)雜度為 O(n3),在不做任何改進(jìn)的情況下,外推一次的運(yùn)算次數(shù)不少于1587萬億次,而Intel Core i7-3930K的計(jì)算能力約為186 GOPS,服務(wù)器用Intel Xeon E5-1620的計(jì)算能力也僅為115 GOPS,完成這樣一次計(jì)算至少需要3小時(shí)20分鐘。
鑒于此,許多學(xué)者結(jié)合行業(yè)應(yīng)用特征對(duì)算法進(jìn)行了改進(jìn)和簡(jiǎn)化。朱永松等[5-6]給出了相似性度量的快速實(shí)現(xiàn)方法,通過對(duì)算法進(jìn)行歸并和近似計(jì)算,解決了目標(biāo)跟蹤的實(shí)時(shí)性要求。李卓[7]等通過對(duì)相關(guān)系數(shù)公式進(jìn)行簡(jiǎn)化和迭代,減少重復(fù)運(yùn)算,并通過設(shè)定參考圖像與目標(biāo)圖像的相關(guān)系數(shù)閾值減少計(jì)算量,從而提高了運(yùn)算速度。
盡管各種改進(jìn)或簡(jiǎn)化后的算法在一定程度上提高了計(jì)算速度,但多是以犧牲計(jì)算的精度或準(zhǔn)確性為代價(jià),且對(duì)于如氣象上外推預(yù)報(bào)方面的應(yīng)用,動(dòng)輒數(shù)十分鐘甚至小時(shí)級(jí)的運(yùn)算時(shí)長(zhǎng),根本不能滿足實(shí)際業(yè)務(wù)要求。因此,有必要從承載計(jì)算的硬件層面進(jìn)一步分析。
本文針對(duì) AMD架構(gòu) GPU的特點(diǎn)[8],運(yùn)用OpenCL技術(shù)對(duì)傳統(tǒng)的串行交叉相關(guān)外推算法進(jìn)行并行化改進(jìn),并從算法流程、主存與設(shè)備內(nèi)存之間的數(shù)據(jù)傳輸,以及顯存訪問模式等幾方面對(duì)算法進(jìn)行優(yōu)化。
地閃是云體對(duì)大地的放電現(xiàn)象,它的發(fā)生對(duì)電力、通訊、交通運(yùn)輸系統(tǒng)有著極其重要的影響。近年來,隨著雷電定位系統(tǒng)網(wǎng)絡(luò)的建設(shè)和大量資料的積累,人們對(duì)地閃的分布情況及跟蹤預(yù)測(cè)不斷取得新的理論方法和成果。但由于雷暴云的起電機(jī)制十分復(fù)雜,且具有瞬時(shí)電壓極高、電流極大、電磁輻射極強(qiáng)等特點(diǎn),因此,對(duì)于雷暴云相關(guān)物理過程的監(jiān)測(cè)預(yù)測(cè)仍存在相當(dāng)大的難度[9]。
交叉相關(guān)算法作為一種常用外推預(yù)測(cè)方法,在經(jīng)歷了較長(zhǎng)時(shí)間的研究與應(yīng)用并不斷改進(jìn)后,數(shù)學(xué)理論上已相對(duì)成熟[10]。該方法的總體思路是利用兩組相鄰時(shí)間的地閃監(jiān)測(cè)數(shù)據(jù),通過最大相關(guān)系數(shù)法進(jìn)行匹配,尋求兩組地閃數(shù)據(jù)之間的空間最優(yōu)相關(guān),從而得到△t時(shí)間內(nèi)地閃落點(diǎn)區(qū)域的移動(dòng)速度和移動(dòng)方向,進(jìn)而外推得到下一時(shí)刻地閃的分布特征。應(yīng)用該算法的前提條件是,假設(shè)地閃落點(diǎn)分布的演變過程是線性的。主要過程分為如下幾步:
(1)根據(jù)監(jiān)測(cè)資料的地理范圍,劃分等間距的經(jīng)緯網(wǎng)格,得到M×N的二維矩陣。將相鄰兩個(gè)時(shí)次離散的數(shù)據(jù)按其經(jīng)緯度信息分別填充到初始閃電場(chǎng)和比對(duì)閃電場(chǎng)二維矩陣對(duì)應(yīng)的單元網(wǎng)格中,對(duì)同一時(shí)刻同一地理位置發(fā)生多次閃電的情況做累加統(tǒng)計(jì),從而得到初始閃電場(chǎng)數(shù)據(jù)矩陣A[m,n]和比對(duì)閃電場(chǎng)數(shù)據(jù)矩陣 B[m,n]。
(2)選取一個(gè)整數(shù)a,規(guī)定a的大小必須小于M和N,在初始矩陣A中以a為邊長(zhǎng)劃定一個(gè)正方形區(qū)域,稱作目標(biāo)矩陣C[x,y],該區(qū)域左上角第一個(gè)單元 C[0,0]可在 A[0,0]至 A[M-a-1,N-a-1]之間逐格移動(dòng)。a的取值視地閃監(jiān)測(cè)的地理區(qū)域、范圍、強(qiáng)對(duì)流天氣形勢(shì)、雷暴天氣種類等業(yè)務(wù)場(chǎng)景的不同而有所區(qū)別。
(3)設(shè)定一個(gè)搜索范圍L,對(duì)初始矩陣A中每一個(gè)選定的目標(biāo)矩陣C[x,y],在比對(duì)矩陣B中以 B[x,y]為中心,向四周分別擴(kuò)展L個(gè)單元作為比對(duì)矩陣B相對(duì)初始矩陣A中目標(biāo)矩陣C的搜索匹配范圍,然后自左向右、自上而下逐格移動(dòng)并計(jì)算交叉相關(guān)系數(shù)R,公式為:
其中U、V分別表示目標(biāo)矩陣C的長(zhǎng)和寬,本算法中即為整數(shù)a;C為目標(biāo)矩陣,其中每個(gè)單元記錄了相應(yīng)經(jīng)緯度閃電頻次的累加值;S表示比對(duì)矩陣B相對(duì)目標(biāo)矩陣C的一個(gè)搜索矩陣;i和j表示目標(biāo)矩陣或搜索矩陣的單元格坐標(biāo)和分別表示搜索矩陣和目標(biāo)矩陣所有單元值的平均值;x和y表示比對(duì)矩陣B在搜索范圍內(nèi)位置的坐標(biāo),其取值與搜索范圍的大小相關(guān),而搜索范圍需根據(jù)外推時(shí)間間隔的長(zhǎng)短以及雷暴強(qiáng)度等氣象因素綜合考慮,通常情況下,L為a的3~8倍。
(4)通過比較每一個(gè)目標(biāo)矩陣C與其最優(yōu)相關(guān)的比對(duì)搜索矩陣D的位置坐標(biāo),可得到△t時(shí)間內(nèi)兩者的位移矢量,從而建立最優(yōu)匹配比對(duì)位置的位移矢量數(shù)據(jù)庫。又由于時(shí)間間隔已知,進(jìn)而可建立平面上的速度矢量數(shù)據(jù)庫。
(5)通過對(duì)初始矩陣A中每個(gè)目標(biāo)矩陣C進(jìn)行上述計(jì)算,可得到初始矩陣A與比對(duì)矩陣B之間的線性關(guān)系。
由于經(jīng)緯度和時(shí)間間隔已知,從而可建立時(shí)間間隔與速度、位移的線性關(guān)系,并推測(cè)下一時(shí)刻所對(duì)應(yīng)的位置。
OpenCL(Open Computing Language)是一套為異構(gòu)平臺(tái)編寫程序的框架,此異構(gòu)平臺(tái)可由CPU、GPU或其他類型的處理器共同構(gòu)成[11]。本文選用的硬件平臺(tái)為:Intel Core i7-3770 CPU,AMD Radeon HD 7970(DDR5 3072 MB)核心顯卡,其顯存位寬384 bits,顯存帶寬 268.8 G/s,峰值計(jì)算能力可達(dá) 4.1 TFLOPS。因此,算法并行化的設(shè)計(jì)及優(yōu)化主要針對(duì)AMD Series GPU。
圖2說明了交叉相關(guān)算法SPMD(單程序多數(shù)據(jù))的實(shí)現(xiàn),SPMD執(zhí)行同一段代碼的多個(gè)實(shí)例,每個(gè)實(shí)例對(duì)數(shù)據(jù)的不同部分進(jìn)行操作。在不考慮顯存容量限制和Bank訪問沖突等因素的情況下,理論上可將如圖1中最外兩層循環(huán)(約126萬次)的操作歸并為1次并發(fā)操作。
圖1 交叉相關(guān)串行算法N-S流程圖
圖2 交叉相關(guān)并行算法N-S流程圖
要執(zhí)行OpenCL計(jì)算內(nèi)核,就需要分配設(shè)備內(nèi)存空間并將Host(宿主機(jī))相關(guān)內(nèi)存數(shù)據(jù)復(fù)制到設(shè)備內(nèi)存中。當(dāng)前絕大多數(shù)顯卡都是通過主板上PCI-E接口與主存進(jìn)行雙向數(shù)據(jù)傳輸,然而最新PCI-E×16 v3.0接口的雙向數(shù)據(jù)傳輸理論帶寬是32 GB/s,這與GPU訪問設(shè)備內(nèi)存的速度仍存在相當(dāng)大的差距。所以,設(shè)計(jì)合理的數(shù)據(jù)傳輸策略是提升GPU計(jì)算吞吐量的重要環(huán)節(jié)。
針對(duì)本算法,宿主機(jī)代碼充分使用Buffer對(duì)象,減少Host內(nèi)存與設(shè)備內(nèi)存的交互,提高設(shè)備內(nèi)存自身的使用率。通過下列代碼,將初始矩陣和比對(duì)矩陣中的數(shù)據(jù)批量傳入設(shè)備內(nèi)存。
int CT=iLongitude*iLatitude;
MO[0]=clCreateBuffer(cnt,CL_MEM_READ_ONLY|CL_MEM_COPY_HOST_PTR,sizeof(float)*CT,a,NULL);
MO[1]=clCreateBuffer(cnt,CL_MEM_READ_ONLY|CL_MEM_COPY_HOST_PTR,sizeof(float)*CT,b,NULL);
MO[2]=clCreateBuffer(cnt,CL_MEM_READ_WRITE,sizeof(float)*CT,NULL,NULL);
每次目標(biāo)矩陣與搜索矩陣的交叉相關(guān)系數(shù)計(jì)算,都會(huì)產(chǎn)生中間結(jié)果,可以選擇在設(shè)備內(nèi)存上申請(qǐng)空間來存放這些數(shù)據(jù),從而避免設(shè)備內(nèi)存與主存的頻繁數(shù)據(jù)交互。當(dāng)kernel運(yùn)算完成后,只要將計(jì)算結(jié)果輸出到Host內(nèi)存,代碼如下所示。
因此,行動(dòng)可以定義為有序?qū)?輸入狀態(tài),輸出狀態(tài)> 。在計(jì)算機(jī)科學(xué)中比較關(guān)注的是程序,下面只給出一個(gè)簡(jiǎn)單的擴(kuò)充形式。輸入狀態(tài),輸出狀態(tài)
clEnqueueReadBuffer(CQ,MO[2],CL_TRUE,0,sizeof(float)*CT,r,0,NULL,NULL);
MO是一個(gè)Buffer對(duì)象數(shù)組,其中包含3個(gè)對(duì)象,分別用于存儲(chǔ)初始矩陣、比對(duì)矩陣和外推結(jié)果數(shù)據(jù)。CT定義了矩陣數(shù)組中元素的總數(shù)量。
kernel程序的執(zhí)行效率很大程度上依賴于設(shè)備內(nèi)存,影響性能的主要方面包括訪存次數(shù)和訪存模式。根據(jù)AMD GPU的硬件架構(gòu)設(shè)計(jì),基于Byte地址的總線要訪問設(shè)備內(nèi)存,訪問地址必須和內(nèi)存位寬對(duì)齊。由于HD 7970的內(nèi)存位寬是384 bits,因此必須按48Bytes對(duì)齊來訪問內(nèi)存。如訪問地址0x00002540,此時(shí)它會(huì)同時(shí)得到 0x00002540到0x0000256F的所有數(shù)據(jù)。如果本次訪存只是為了取一個(gè)32 bits整數(shù),那么其余44個(gè)字節(jié)的數(shù)據(jù)未能參與計(jì)算,因而高帶寬的優(yōu)良特性就白白浪費(fèi)了。相反,如果多個(gè)線程訪問連續(xù)48個(gè)字節(jié)以內(nèi)的地址,則可以通過一次訪存請(qǐng)求來完成,從而大幅提高帶寬利用率。該技術(shù)稱作 Coalescing[12]。
為了充分利用HD 7970超大的顯存位寬,且由于HD 7970每個(gè)CU(Compute Unit)能夠在一個(gè)周期內(nèi)處理一個(gè)64線程的quarter-wavefront,因此,本算法設(shè)計(jì)時(shí)考慮將64個(gè)線程的內(nèi)存訪問合并到較少的內(nèi)存請(qǐng)求命令中去。
由于GPU計(jì)算的并行要求,在對(duì)目標(biāo)矩陣和搜索矩陣進(jìn)行計(jì)算時(shí),kernel程序會(huì)多線程分段處理數(shù)組。通常的做法是把數(shù)組分成多段,然后每個(gè)線程處理每段數(shù)組中連續(xù)的若干元素,kernel代碼如下:
該數(shù)據(jù)讀取的模式稱為Sequencial Access,示意流程如圖3所示。當(dāng)Thread_0訪問Data1[0]的元素時(shí),Thread_1則訪問 Data1[array_lenth/get_global_size(0)]的元素,同理,Thread_2則訪問 Data1[2*(array_lenth/get_global_size(0))]的元素。很明顯該方法破壞了數(shù)據(jù)訪問局部性的原則,會(huì)造成讀取性能的急劇降低。
圖3 Sequencial Access流程圖
由上述分析,可對(duì)數(shù)據(jù)讀取模式作適當(dāng)改進(jìn),kernel代碼如下:
當(dāng)Thread_0訪問Data1[0]時(shí),Thread_1訪問Data1[1],Thread_2 訪問 Data1[2],以此類推。如此kernel程序就能充分利用數(shù)據(jù)讀取的局部性特點(diǎn),從而極大地提升內(nèi)存讀取的速度。這樣的數(shù)據(jù)讀取模式稱為Coalescing Access,示意流程如圖4所示。
圖4 Coalescing Access流程圖
OpenCL規(guī)范中定義了大量的內(nèi)置函數(shù),很多與公共C庫提供的函數(shù)類似,其特點(diǎn)是支持矢量數(shù)據(jù)類型。但由于其對(duì)精度的要求,OpenCL內(nèi)置數(shù)學(xué)函數(shù)的運(yùn)算性能往往不如C原生函數(shù)。針對(duì)本算法需要的精度而言,使用公共C函數(shù)庫math.h中的pow函數(shù)代替OpenCL中的pow可在一定程度上提升kernel程序的運(yùn)行效率。
在CPU中,即便兩個(gè)線程的行為高度不一致,其對(duì)性能的影響也是可接受的。而在并行算法中每個(gè)線程的行為需要盡量保持一致,如果分支或跳轉(zhuǎn)過多,則會(huì)大幅降低GPU的運(yùn)算效率。且在GPU中,線程之間的切換是輕量級(jí)的,可以把算法中的循環(huán)結(jié)構(gòu)完全展開,一個(gè)線程就處理一個(gè)數(shù)據(jù)[13-14]。
實(shí)驗(yàn)數(shù)據(jù)選取2013年3月廣東省及其周邊地區(qū)有強(qiáng)對(duì)流天氣發(fā)生時(shí)的地閃落點(diǎn)監(jiān)測(cè)資料。該資料包含地閃發(fā)生的時(shí)間、地理位置、電流強(qiáng)度等信息,其中地閃發(fā)生的時(shí)間精確到秒量級(jí),地閃發(fā)生位置的經(jīng)緯度精確到小數(shù)點(diǎn)后3位,即0.001°。自3月16日開始,南方大部地區(qū)經(jīng)歷了多次大范圍強(qiáng)降水過程,期間多地還出現(xiàn)雷暴、短時(shí)大風(fēng)、冰雹等強(qiáng)對(duì)流天氣,給南方多地造成嚴(yán)重的經(jīng)濟(jì)損失。通過對(duì)3月26日地閃資料的統(tǒng)計(jì)分析,得出逐小時(shí)地閃發(fā)生頻次,如圖5所示。
圖5 2013-03-26廣東及其周邊地區(qū)地閃頻次統(tǒng)計(jì)
結(jié)合資料中經(jīng)緯度信息可以看出,26日凌晨時(shí)分地閃主要分布在江西、湖南的南部及廣西東北部,然后逐漸向東南方向移動(dòng),在6時(shí)地閃發(fā)生區(qū)域主要分布在廣東省及廣西東部地區(qū),且單位小時(shí)內(nèi)地閃頻次達(dá)到最大2397次,隨后逐步減弱,11時(shí)地閃主要分布于廣東省東南沿海地區(qū),14時(shí)后因雷暴中心離開內(nèi)陸,因而監(jiān)測(cè)到的地閃數(shù)量顯著降低。
選取當(dāng)日5、6和7時(shí)監(jiān)測(cè)資料作為實(shí)驗(yàn)數(shù)據(jù),數(shù)據(jù)分析范圍限定在經(jīng)度從106°至120°,緯度從18°至27°,精度為0.001°。因此,所分析的矩陣為 14000 ×9000的網(wǎng)格,相鄰網(wǎng)格間的距離約為100 m。為清楚顯示,剔除地閃發(fā)生頻次較低的網(wǎng)格后,5、6時(shí)的實(shí)況如圖6所示,其中淺色點(diǎn)為5時(shí),黑色點(diǎn)為6時(shí)。
圖6 5時(shí)、6時(shí)地閃落點(diǎn)分布圖
將5、6時(shí)的監(jiān)測(cè)資料代入上述并行化交叉相關(guān)算法程序,分別作為初始矩陣和比對(duì)矩陣,經(jīng)計(jì)算得到外推預(yù)測(cè)的7時(shí)地閃落點(diǎn)分布,結(jié)果如圖7所示,其中淺色點(diǎn)為外推預(yù)測(cè)結(jié)果,黑色點(diǎn)為7時(shí)實(shí)況。同圖6,為清楚顯示剔除了地閃發(fā)生頻次較低的網(wǎng)格。
圖7 7時(shí)外推預(yù)測(cè)和實(shí)況地閃落點(diǎn)分布比對(duì)圖
從圖7可以看出,7時(shí)地閃落點(diǎn)分布較圖6中5、6時(shí)有向東南方向移動(dòng)的趨勢(shì)。由于7時(shí)監(jiān)測(cè)到的地閃數(shù)量超過2000次,而受圖片大小限制,圖中對(duì)顯示的落點(diǎn)進(jìn)行了篩選,又因大部分外推預(yù)測(cè)的地閃落點(diǎn)與實(shí)況重合或部分重合,覆蓋了部分實(shí)況落點(diǎn),因此圖7看似外推預(yù)測(cè)的點(diǎn)數(shù)多于實(shí)況。
為了更加清楚地對(duì)比并行化算法的計(jì)算性能,將上述實(shí)驗(yàn)中監(jiān)測(cè)資料精度分別減小為0.002°、0.005°和0.01°,即將所分析的矩陣分別縮小到 7000×4500、2800×1800和1400×900的網(wǎng)格?;谏鲜鲇布h(huán)境的CPU串行算法程序和基于GPU的并行算法程序執(zhí)行情況如表1所示。
表1 交叉相關(guān)算法程序串行與并行的執(zhí)行時(shí)間對(duì)比
分析表1可知,在不考慮數(shù)據(jù)傳輸和內(nèi)存訪問等方面優(yōu)化的情況下,基于GPU的并行算法程序計(jì)算效率提高了8至9倍。且隨著網(wǎng)格精細(xì)度的提高,并行算法的性能提升效果越好。這是因?yàn)橛?jì)算所耗費(fèi)的時(shí)間除了GPU運(yùn)算本身以外,還有設(shè)備內(nèi)存與主存之間數(shù)據(jù)交互的時(shí)間,當(dāng)輸入數(shù)據(jù)量和PCI-E接口通信量較小時(shí),整個(gè)程序的計(jì)算量也有限,GPU計(jì)算耗時(shí)所占比重較小,而數(shù)據(jù)交互時(shí)間的比重相對(duì)較大。隨著計(jì)算量的逐步增加,GPU并行計(jì)算的性能優(yōu)勢(shì)越發(fā)體現(xiàn),因而逐漸掩蓋了設(shè)備內(nèi)存與主存數(shù)據(jù)交互帶來的時(shí)間損耗。
另一方面,通過對(duì)數(shù)據(jù)傳輸過程的優(yōu)化,減少設(shè)備內(nèi)存與主存的數(shù)據(jù)交互,在設(shè)備內(nèi)存空間足夠的情況下,盡可能使用其保存計(jì)算的中間結(jié)果。再運(yùn)用Coalescing Access技術(shù)優(yōu)化設(shè)備內(nèi)存的訪問方式,以及上文提及的其他輔助技術(shù),將該并行算法的性能再提升近一倍,進(jìn)而達(dá)到原串行算法執(zhí)行效率的17倍。
本文利用GPU在并行計(jì)算方面的優(yōu)勢(shì),對(duì)傳統(tǒng)的串行交叉相關(guān)外推算法進(jìn)行并行化改進(jìn),并針對(duì)AMD架構(gòu)的GPU運(yùn)用OpenCL技術(shù)對(duì)算法程序進(jìn)行優(yōu)化。實(shí)驗(yàn)表明,使用本文算法在AMD Radeon HD 7970硬件平臺(tái)下,程序執(zhí)行效率相較Intel Core i7-3770 CPU單核計(jì)算時(shí)提升了17倍。對(duì)于廣東省及周邊地區(qū)一小時(shí)地閃落點(diǎn)外推預(yù)測(cè),在不損失原有監(jiān)測(cè)精度的情況下,由原來計(jì)算一次歷時(shí)6小時(shí)37分鐘縮短到23分鐘。實(shí)際業(yè)務(wù)應(yīng)用中,如果投入更高性能的GPU設(shè)備,如AMD Radeon HD 7990,根據(jù)其技術(shù)性能參數(shù),有望將計(jì)算時(shí)長(zhǎng)再縮短一半。
關(guān)于地閃外推預(yù)測(cè)算法仍有改進(jìn)的空間:雷暴作為強(qiáng)對(duì)流天氣系統(tǒng)中重要的一部分,當(dāng)今業(yè)務(wù)中對(duì)其的監(jiān)測(cè)、預(yù)報(bào)還需借助天氣雷達(dá)、衛(wèi)星、探空等多種手段以及中尺度數(shù)值預(yù)報(bào)模式等進(jìn)行綜合分析。僅利用閃電定位資料進(jìn)行外推預(yù)測(cè),宏觀上可以有效地預(yù)測(cè)雷暴移動(dòng)的方向和速度。但微觀上看,對(duì)于地閃落點(diǎn)、發(fā)生頻數(shù)、生消趨勢(shì)等方面,其預(yù)測(cè)結(jié)果與實(shí)際情況仍有明顯差距。未來還可以結(jié)合多普勒氣象雷達(dá)和數(shù)值預(yù)報(bào)等多種手段,對(duì)外推預(yù)測(cè)算法進(jìn)行基于GPU的并行化改進(jìn)和優(yōu)化,以提高預(yù)測(cè)的準(zhǔn)確率。
[1]陳明軒,王迎春,俞小鼎.交叉相關(guān)外推算法的改進(jìn)及其在對(duì)流臨近預(yù)報(bào)中的應(yīng)用[J].應(yīng)用氣象學(xué)報(bào),2007,18(5):690-701.
[2]陳雷,戴建華,陶嵐.一種改進(jìn)后的交叉相關(guān)法(COTREC)在降水臨近預(yù)報(bào)中的應(yīng)用[J].熱帶氣象學(xué)報(bào),2009,25(1):117-122.
[3]劉科峰,張韌,孫照渤.基于交叉相關(guān)法的衛(wèi)星云圖中云團(tuán)移動(dòng)的短時(shí)預(yù)測(cè)[J].中國(guó)圖象圖形學(xué)報(bào),2006,11(4):586-591.
[4]胡勝,羅聰,黃曉梅,等.基于雷達(dá)外推和中尺度數(shù)值模式的定量降水預(yù)報(bào)的對(duì)比分析[J].氣象,2012,38(3):274-280.
[5]朱永松,國(guó)澄明.基于相關(guān)系數(shù)的相關(guān)跟蹤算法研究[J].中國(guó)圖象圖形學(xué)報(bào),2004,9(8):963-967.
[6]朱永松,國(guó)澄明.基于相關(guān)系數(shù)的相關(guān)匹配算法的研究[J].信號(hào)處理,2003,19(6):531-534.
[7]李卓,邱慧娟.基于相關(guān)系數(shù)的快速圖像匹配研究[J].北京理工大學(xué)學(xué)報(bào),2007,27(11):998-1000.
[8]丁鵬,陳利學(xué),龔捷,等.GPU通用計(jì)算研究[J].計(jì)算機(jī)與現(xiàn)代化,2010(1):12-15.
[9]焦雪,馮民學(xué),鐘穎穎.2006—2009年江蘇省地閃特征分析及應(yīng)用[J].氣象科學(xué),2011,31(2):205-210.
[10]顧媛,魏鳴.南京一次雷雨的閃電特征與多尺度資料分析[J].氣象科學(xué),2013,33(2):146-152.
[11]AMD上海研發(fā)中心.跨平臺(tái)的多核與眾核編程講義——OpenCL的方式[Z].上海:AMD上海研發(fā)中心,2010:1-10.
[12]Aaftab Munshi,Benedict R Gaster,Timothy G Mattson,et al.OpenCL Programming Guide[M].Addison-Wesley Professional,2011:3-35.
[13]蔡鎮(zhèn)河,張旭,欒江霞.CPU+GPU異構(gòu)模式下并行計(jì)算效率研究[J].計(jì)算機(jī)與現(xiàn)代化,2012(5):185-188.
[14]朱興鋒.基于CUDA的高效IDEA加密算法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2011(12):48-52.