基于OpenCL的尺度不變特征變換算法的并行設計與論文
針對尺度不變特征變換(SIFT)算法實(shí)時(shí)性差的問(wèn)題,提出了利用開(kāi)放式計算語(yǔ)言(OpenCL)并行優(yōu)化的SIFT算法。首先,通過(guò)對原算法各步驟進(jìn)行組合拆分、重構特征點(diǎn)在內存中的數據索引等方式對原算法進(jìn)行并行化重構,使得計算機網(wǎng)絡(luò )算法的中間計算結果能夠完全在顯存中完成交互;然后,采用復用全局內存對象、共享局部?jì)却、?yōu)化內存讀取等策略對原算法各步驟進(jìn)行并行設計,提高數據讀取效率,降低傳輸延時(shí);最后,利用OpenCL語(yǔ)言在圖形處理單元(GPU)上實(shí)現了SIFT算法的細粒度并行加速,并在中央處理器(CPU)上完成了移植。與原SIFT算法配準效果相近時(shí),并行化的算法在GPU和CPU平臺上特征提取速度分別提升了10.51~19.33和2.34~4.74倍。實(shí)驗結果表明,利用OpenCL并行加速的SIFT算法能夠有效提高圖像配準的實(shí)時(shí)性,并能克服統一計算設備架構(CUDA)因移植困難而不能充分利用異構系統中多種計算核心的缺點(diǎn)。
0引言
以尺度不變特征變換(Scale Invariant Feature Transform, SIFT)算法[1]為代表的基于特征的圖像匹配方法近幾年發(fā)展迅速,該算法對光照、角度或尺度變化的圖像都有較好的匹配精度和適應性,但實(shí)時(shí)性差。為了提高實(shí)時(shí)性,在此基礎上又衍生出了主成分分析(Principal Component Analysis, PCA)SIFT[2]、快速魯棒特征(Speed Up Robust Feature, SURF)檢測[3]等改進(jìn)算法。這些改進(jìn)的算法盡管在速度方面有所提升,但實(shí)時(shí)性仍然不能滿(mǎn)足實(shí)際應用要求且在抗尺度和抗旋轉方面性能都有不同程度的下降,因此仍無(wú)法取代經(jīng)典的SIFT算法[4]。
近年來(lái)隨著(zhù)圖形處理器(Graphics Processing Unit, GPU)計算能力的不斷提升,利用GPU天然硬件并行的特性來(lái)加速非圖形通用大規模運算逐漸受到人們的青睞,目前較為成熟并得到廣泛應用的GPU并行編程模型為英偉達(NVIDIA)公司開(kāi)發(fā)的統一計算設備架構(Compute Unified Device Architecture, CUDA)模型。文獻[5-7]利用CUDA實(shí)現了SIFT算法關(guān)鍵步驟的GPU并行加速,取得了一定的加速效果。文獻[8-9]在移動(dòng)GPU平臺上利用開(kāi)放式計算語(yǔ)言(Open Computing Language, OpenCL)實(shí)現了SIFT算法的并行加速,相對于移動(dòng)中央處理器(Central Processing Unit, CPU)取得了4.6~7.8倍的加速效果。另外,完成同樣的計算,GPU比CPU的功耗低87%,即利用OpenCL實(shí)現的GPU并行運算相對于傳統的CPU具有更高的性能功耗比,但以上方法大多采用步驟分離的優(yōu)化,沒(méi)能充分利用GPU全局內存以及算法各步驟的中間計算結果,加速效果受顯存帶寬的制約。
另外利用CUDA實(shí)現的算法只適用于NVIDIA顯卡,移植困難,而目前的計算機系統大多是“CPU+協(xié)處理器”的異構系統[10],這使得CUDA無(wú)法充分利用異構系統中不同類(lèi)型的計算核心。具有跨平臺特性的開(kāi)放式并行編程語(yǔ)言OpenCL的出現為解決此問(wèn)題提供了契機,利用OpenCL設計的并行算法能夠在CPU+(GPU、數字信號處理器(Digital Signal Processor, DSP)、現場(chǎng)可編程門(mén)陣列(FieldProgrammable Gate Array, FPGA)等異構系統間移植[11-12],該特性使得經(jīng)OpenCL優(yōu)化的算法能夠擺脫對硬件平臺的依賴(lài)。自2010年OpenCL1.1發(fā)布以來(lái),對OpenCL技術(shù)的應用研究逐漸興起。陳鋼等[13]對OpenCL內存操作作了深入的分析;Yan等[14]利用OpenCL實(shí)現了SURF算法的并行加速。OpenCL編程相比CUDA更為復雜[15],在軟件開(kāi)發(fā)方面也面臨更多的挑戰和困難,目前在PC平臺上還沒(méi)有利用OpenCL并行優(yōu)化的SIFT算法出現。
針對以上問(wèn)題,本文對SIFT算法步驟及數據索引方式進(jìn)行重構,提高其并行度,然后通過(guò)優(yōu)化內存讀取、合理利用OpenCL內存層次等策略對該算法進(jìn)一步優(yōu)化,在NVIDIA GPU平臺上實(shí)現了SIFT特征的快速提取。為研究OpenCL的可移植性,將優(yōu)化的GPU版本移植到Intel雙核CPU平臺上,實(shí)驗表明優(yōu)化后的算法在兩種計算平臺上的實(shí)時(shí)性都有一定提升。
1SIFT特征提取算法流程
SIFT算法最早由Lowe[1]在1999年提出并于2004年完善,由于其良好的匹配特性,目前已得到廣泛研究與應用。SIFT特征點(diǎn)提取實(shí)質(zhì)是在不同尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),算法基本步驟如下。
1)尺度空間構建。
2)高斯差分金字塔空間構建。
3)DOG空間極值點(diǎn)檢測。
DOG空間極值點(diǎn)檢測就是將DOG圖像中每個(gè)像素與它同尺度的8鄰域點(diǎn)及上下相鄰尺度對應的9×2個(gè)鄰域點(diǎn)進(jìn)行比較,若為極值點(diǎn)則作為候選特征點(diǎn),記錄其位置和對應的尺度。為獲得更精確的特征點(diǎn)位置,在候選特征點(diǎn)處進(jìn)行泰勒展開(kāi),得到式(4):
D(x)=D+DTxx+12xT2Dx2x(4)
其中:關(guān)鍵點(diǎn)偏移量為x此處的偏移量x,與后面的x的命名重復,不太規范,因一篇論文中,一個(gè)變量?jì)H能代表一個(gè)含義,若包括兩個(gè)含義,則指代不清晰,是否可以用另一個(gè)變量對此進(jìn)行說(shuō)明?
回復:這兩個(gè)變量x是使用字體來(lái)區分的,一個(gè)是粗斜體表示向量,一個(gè)是細斜體,表示普通變量。是可以區分的。
這個(gè)公式是經(jīng)典文獻[1]中此算法的原作者提出的公式,也是用這種方式表述的。為保持統一,所以我覺(jué)得可以不用修改。=(x,y,σ)T;(x,y,σ)在該極值點(diǎn)處的值為D;令D(x)x=0,可通過(guò)式(5)求得極值:
=-2D-1x2Dx(5)
在Lowe[1]的文章中當在任意方向上的偏移量大于0.5時(shí),認為該點(diǎn)與其他關(guān)鍵點(diǎn)很相似,將其剔除;否則保留該點(diǎn)為候選特征點(diǎn),并計算該點(diǎn)對應的尺度。
4)特征點(diǎn)主方向計算。
5)SIFT特征矢量生成。
將特征點(diǎn)鄰域內圖像坐標根據步驟4)計算出的特征點(diǎn)主方向進(jìn)行旋轉,使得特征向量具有旋轉不變性,旋轉后以特征點(diǎn)為中心劃分成4×4個(gè)子區域,在每個(gè)子區域內計算8方向的梯度方向直方圖,即可構成4×4×8共128維SIFT特征矢量。
2SIFT算法的并行化重構
OpenCL標準將內核可用的內存分為私有內存、局部?jì)却婧腿謨却?常量?jì)却娴阮?lèi)型[16],所以在利用OpenCL優(yōu)化算法時(shí),充分挖掘GPU內存的存儲層次,合理分配工作組大小是提高并行運算效率的關(guān)鍵[17]。為提高算法并行度方便數據劃分、降低內存帶寬要求,本文對SIFT算法作了以下重構。
1)步驟合并。將構造尺度空間、創(chuàng )建高斯金字塔及極值點(diǎn)檢測三步驟統一設計,目的是充分利用OpenCL的global memory和local memory的訪(fǎng)問(wèn)機制,使得這3個(gè)步驟的中間計算結果最大限度地在顯存中完成交互,減少內存與顯存間的數據交換次數,隱藏帶寬延時(shí)。
2)步驟拆分。將極值點(diǎn)定位分為極值點(diǎn)坐標檢測和極值點(diǎn)精確定位兩步:第1步只返回極值點(diǎn)坐標,目的是輔助主機端完成內存分配;第2步完成極值點(diǎn)精確定位。
3)重構數據索引。本文全面摒棄基于隊列的特征點(diǎn)索引方式,而是采用線(xiàn)性存儲的方式管理特征點(diǎn)集,這對OpenCL內核的工作項劃分、提高數據讀取效率以及降低內存訪(fǎng)問(wèn)沖突都非常有效。
4)任務(wù)細粒度并行。經(jīng)過(guò)數據索引重構,在OpenCL的內核運行時(shí),可方便地部署大規模的工作組和工作項,實(shí)現計算任務(wù)的細粒度劃分。經(jīng)過(guò)以上設計后不僅能提高數據訪(fǎng)問(wèn)速度,而且能夠避免潛在的內存訪(fǎng)問(wèn)沖突。
3SIFT算法的OpenCL實(shí)現
圖1為并行設計的SIFT特征提取流程。整個(gè)設計充分利用全局內存以降低數據傳輸延時(shí)。主機端首先分配相應內存對象,然后依次入列高斯模糊、DOG金字塔和極值點(diǎn)檢測3個(gè)OpenCL內核,完成后即可生成尺度空間和DOG金字塔,從全局優(yōu)化考慮,將這兩部的結果駐留在全局內存中,只返回經(jīng)壓縮的極值點(diǎn)坐標。接著(zhù)按序運行極值點(diǎn)精確定位、特征點(diǎn)方向計算和特征向量生成3個(gè)步驟,計算完成后即完成特征提取全過(guò)程。整個(gè)流程僅有返回極值點(diǎn)坐標和返回特征點(diǎn)結果兩次讀回操作,其余的中間結果全部在顯存中完成交互,提高數據利用率,降低顯存帶寬要求。
3.1高斯模糊+DOG+極值點(diǎn)檢測內核設計
深入發(fā)掘算法的并行潛力,充分利用OpenCL的內存層次、合理配置工作項數量和工作組大小是性能提升的關(guān)鍵,也是內核設計的難點(diǎn)。
3.1.1高斯濾波內核設計及工作項分配
為降低計算量,將二維高斯變換分解為沿水平和垂直方向的一維變換,分解后可減少(N2-2×N)×W×H次乘法運算(N為高斯核大小,W、H為圖像的寬和高)。由于每個(gè)像素相互獨立,所以在NDRange函數入列高斯濾波內核時(shí)將工作項大小設置為W×H-N,即每個(gè)工作項完成一個(gè)像素的卷積。另外,進(jìn)行卷積時(shí)相鄰像素(圖2黑實(shí)線(xiàn)框內數據)要重復讀取圖2灰色部分的數據,為提高讀取效率,本文通過(guò)配置工作組,實(shí)現原始數據在局部?jì)却嬷泄蚕。圖2為水平高斯核寬度為7、工作組大小設置為8時(shí)的數據分配,圖2表示每8個(gè)工作組讀取14個(gè)數據,完成8個(gè)點(diǎn)(圖2黑虛線(xiàn)框內數據)的卷積運算。
在工作組內共享局部?jì)却嫱ǔD芴岣哂嬎阈阅,但并不絕對[18]。為找到工作組的最佳大小,本文測試了不同工作組大小時(shí),寬度為11的高斯核對分辨率為1280×960的圖片進(jìn)行水平卷積的耗時(shí),測試結果如圖3所示。隨著(zhù)工作組的增大,耗時(shí)逐漸減少,當工作組大于128后,耗時(shí)基本不再改變,又因為局部?jì)却娴南拗,工作組不宜太大,于是本文將工作組大小配置為128。如此設計需考慮同一工作組中工作項的同步化問(wèn)題,本文采用OpenCL提供的barrier(CLK_LOCAL_MEM_FENCE)障礙函數來(lái)實(shí)現,垂直濾波與此類(lèi)似,不再贅述。
3.1.2DOG金字塔構建
此步驟的內核有兩種設計方法:1)一次入列內核,只將高斯金字塔相鄰兩層相減,得到一層DOG圖像;2)一次入列內核,將高斯金字塔整組圖像傳入內核,計算完成后即可得到一組DOG圖像。
經(jīng)實(shí)驗發(fā)現,第2種方法數據利用率高,耗時(shí)較短。又因為高斯金字塔每組層數固定,所以第2種設計的參數也固定,于是本文采用第2種設計方法,數據劃分如圖4所示。為進(jìn)一步提高運算效率,對數據的運算都以float4型向量進(jìn)行,共配置(W×H+3)/4個(gè)工作項,即每個(gè)工作項完成一組高斯金字塔對應位置(圖4單個(gè)虛線(xiàn)框內數據)的float4型向量相減。
3.1.3極值點(diǎn)檢測及內核精確定位
入列極值點(diǎn)精確定位內核前,主機端需預先分配內存,而事先并不知道需要為多少個(gè)特征點(diǎn)分配內存,所以本文將極值點(diǎn)檢測和精確定位作為兩個(gè)內核先后入列,為減少數據傳輸,極值點(diǎn)檢測內核只返回壓縮的極值點(diǎn)坐標數組。
極值點(diǎn)檢測內核計算完成后,根據返回的極值點(diǎn)坐標在CPU端統計極值點(diǎn)位置和個(gè)數N,然后為N個(gè)特征點(diǎn)分配內存,如圖5所示(實(shí)際分配1.5×N個(gè),Lowe[1]文中指出實(shí)際的特征點(diǎn)數會(huì )是極值點(diǎn)數N的1.15倍左右)。圖5中每個(gè)虛線(xiàn)框用來(lái)保存一個(gè)特征點(diǎn)的完整信息。最后入列極值點(diǎn)精確定位內核,每個(gè)極值點(diǎn)配置一個(gè)工作項,計算出的精確坐標按工作項索引存入圖5對應的位置。
3.2計算梯度方向直方圖
至此,已經(jīng)得到每個(gè)特征點(diǎn)的坐標、尺度,并按線(xiàn)性存儲在圖5所示的全局內存中。因為每個(gè)特征點(diǎn)在內存中按線(xiàn)性排列,相互獨立,所以為每個(gè)特征點(diǎn)配置一個(gè)工作組來(lái)計算梯度方向直方圖,工作組分配如圖6(a)所示。將工作組內工作項設置為2維,為確定工作組最佳大小,本文嘗試了{1,RAD}、{2,RAD}、{4,RAD}、{8,RAD}四種方式,經(jīng)測試{2,RAD}效果最好(其中RAD為特征點(diǎn)的鄰域寬度)。當RAD=5時(shí),每個(gè)工作組分配10個(gè)工作項,工作組中的數據分配如圖6(b)所示,圖6(b)中標有相同數字的像素被同一工作項處理。為實(shí)現數據共享,在工作組local_memory中構建方向直方圖,這時(shí)必須使用OpenCL提供的atomic_add原子累加操作才能保證多個(gè)工作項同時(shí)累加直方圖同一位置時(shí)不會(huì )出錯。直方圖生成后統計出大于直方圖極值80%的點(diǎn)的個(gè)數和角度,作為獨立的候選特征點(diǎn),將結果填入圖5中對應的位置。
3.3特征向量生成
計算出特征點(diǎn)主方向后,即可入列特征向量生成內核,因數據重構后各特征點(diǎn)在內存中線(xiàn)性存儲且可獨立計算,所以為每個(gè)特征點(diǎn)分配一個(gè)工作組。又因每個(gè)特征點(diǎn)鄰域被劃分為4×4個(gè)子區域,所以為每個(gè)工作組配置16個(gè)工作項分別計算每個(gè)子區域的8個(gè)方向,數據劃分如圖7。圖7中每個(gè)箭頭的長(cháng)度表示每個(gè)方向的梯度累計值,箭頭越長(cháng)代表值越大。所有工作組計算完畢后,整個(gè)SIFT特征提取算法執行完畢,提取出的特征點(diǎn)全部存儲在圖5所示的線(xiàn)性?xún)却嬷小?/p>
利用以上方法對兩幅圖片進(jìn)行特征提取后,即可利用歐氏距離準則完成兩幅圖片特征點(diǎn)的粗匹配,然后用隨機抽樣一致(RANdom Sample Consensus, RANSAC)算法對粗匹配對進(jìn)行提純,計算得到兩幅圖片之間的變換矩陣,完成兩幅圖片的匹配。
4優(yōu)化后的算法在CPU上的移植
為進(jìn)一步驗證OpenCL的可移植性并比較OpenCL在不同平臺上的加速性能,本文將優(yōu)化后的OpenCL_GPU_SIFT算法移植為能在CPU上運行的OpenCL_CPU_SIFT版本。盡管OpenCL具有跨平臺特性,但由于硬件資源的差異,仍需注意以下兩點(diǎn):
1)本文采用的Intel core i5 3210m CPU不支持OpenCL 32位原子操作,所以在3.2節的內核設計中無(wú)法使用atomic_add原子累加操作,只能將3.2節的'工作組大小配置為1,此時(shí)每個(gè)工作組中只有一個(gè)工作項,因而不能實(shí)現局部?jì)却婀蚕怼?/p>
2)工作組中工作項的數量上限一般受限于兩點(diǎn):一是設備所能提供的資源數,二是內核所需的資源數,這里的資源主要指的是局部?jì)却。針?.2節的內核,GT635m GPU的局部?jì)却鏋?7KB(K表示×1024),工作組上限為512,而Intel 3210m CPU的局部?jì)却嬷挥?2KB(K表示×1024),工作組上限為352,所以工作組大小一定要根據硬件平臺來(lái)設置,這點(diǎn)尤為重要。針對以上兩點(diǎn)修改后得到的OpenCL_CPU_SIFT版本即可運行于Intel 3210m CPU中,可見(jiàn)OpenCL具有較好的可移植性。
5實(shí)驗結果及分析
5.1實(shí)驗平臺
本實(shí)驗的實(shí)驗平臺CPU為Intel Core i5 3210m,雙核心四線(xiàn)程,2.5GHz;GPU采用NVIDA GeForce GT 635m,核心頻率660MHz,96個(gè)流處理器單元,128位總線(xiàn)寬度;開(kāi)發(fā)環(huán)境為Vs2013,OpenCV版本2.4.9,OpenCL版本1.1。
5.2實(shí)驗方法
本文實(shí)驗的代碼是在Rob Hess維護的SIFT算法(http://robwhess.github.io/opensift/,本文稱(chēng)之為CPU_SIFT)的基礎上修改而來(lái)。實(shí)驗分別測試并行化的OpenCL_CPU_SIFT和OpenCL_GPU_SIFT這兩個(gè)版本用時(shí),并與未優(yōu)化的CPU_SIFT版本用時(shí)作比較分別計算兩個(gè)版本的加速比。實(shí)驗選取a,b兩組圖片。a組有a1~a5共5幅圖片,b組有b1~b4 4對共8幅圖片。為使實(shí)驗結果更具有參考性,其中a1選取Rob Hess采用的behavior圖,分辨率為320×300;a2選取國際通用的Lena圖,分辨率為512×512;a3此處是否描述有誤?即a2~a5,共4幅圖像,而后面的描述中卻有3幅,所以請作相應調整!玜5為利用CCD攝像頭獲取的3幅紋理從簡(jiǎn)單到復雜的測試圖片,分辨率分別為960×720、1280×960、2560×1440。另外為了測試優(yōu)化后的算法對不同圖片的適應性,b組圖片選取4對有角度、光照和尺度變化的圖片,分辨率統一為1280×960。
5.3實(shí)驗結果
在與原CPU_SIFT算法匹配效果一致的情況下,各圖片的耗時(shí)如表2所示,利用OpenCL優(yōu)化后的CPU版本和GPU版本的加速比最大分別為4倍和19倍左右,如圖8所示。這表明OpenCL不僅具有優(yōu)秀的并行計算能力,而且具有較好的跨平臺特性,這也是OpenCL相對于CUDA的一大優(yōu)勢。
通過(guò)對比表1和表2可知,本文在PC平臺實(shí)現的SIFT算法的加速比比文獻[9]中實(shí)現的加速比更高,特別是當圖像分辨率較大時(shí),本文實(shí)現的加速比會(huì )進(jìn)一步增大。這主要是因為兩點(diǎn):1)數據量越大,越能充分發(fā)揮GPU并行運算的能力,越能隱藏數據傳輸延時(shí);2)由于移動(dòng)處理器架構的限制,文獻[9]只針對SIFT特征點(diǎn)檢測部分進(jìn)行了優(yōu)化,而本文則是對整個(gè)SIFT算法流程進(jìn)行統一優(yōu)化,充分利用了GPU的全局內存,數據讀取效率更高。另外,通過(guò)對比進(jìn)一步證明了OpenCL對移動(dòng)平臺和PC平臺都具有廣泛的適用性,再次說(shuō)明OpenCL具有較好的可移植性和跨平臺性。
圖9為本文算法對a組圖像的特征提取結果。由圖9可知,優(yōu)化的算法對圖像處理領(lǐng)域常用的Lena圖和behavior圖都能有效地提取特征點(diǎn),a3~a5三張圖片的紋理由簡(jiǎn)單到復雜,優(yōu)化后的算法均能有效提取特征點(diǎn)。在b組圖片中,b1的兩幅圖片有角度變化,b2有光照變化,b3既有角度又有光照變化,b4的角度、光照和尺度均有變化,匹配結果如圖10所示。綜合圖9和圖10的實(shí)驗結果可知,優(yōu)化后的算法對不同分辨率、不同紋理復雜度的圖像都能提取穩定的特征點(diǎn),對具有角度、光照和尺度變化的圖像都能正確匹配,這表明并行化后的算法對各種圖片都有較好的適應性。
為進(jìn)一步分析不同平臺不同數據規模對OpenCL加速性能的影響,針對a3、a4和a5三幅不同分辨率的圖像,本文分別統計了優(yōu)化后的GPU和CPU版本各步驟的加速比,結果如圖11和圖12。圖11和圖12中步驟1為高斯模糊+高斯差分金字塔生成,步驟2為極值點(diǎn)定位,步驟3為計算方向直方圖,步驟4為特征矢量生成。對比圖11和圖12可知,無(wú)論是GPU還是CPU平臺,優(yōu)化后,高斯模糊+高斯差分金字塔生成步驟加速比都最大,GPU版本甚至達到了50倍,這是因為該步驟中各工作項數據獨立無(wú)分支,并行度高。而極值點(diǎn)定位步驟有大量的選擇判斷語(yǔ)句,并行度較差,閆鈞華等[19]將此步驟放在CPU端執行,本文將此步驟一并優(yōu)化,速度有一定提升但不夠理想,這是因為在并行編程中無(wú)論CPU還是GPU都受分支語(yǔ)句的影響,GPU尤其如此。另外,與圖11不同,圖12中的三條曲線(xiàn)無(wú)交叉,隨著(zhù)圖片分辨率的增大各步驟的加速比都逐步增大,說(shuō)明數據規模越大越能發(fā)揮并行運算的優(yōu)勢。另外OpenCL_CPU_SIFT版本的特征向量生成步驟比計算方向直方圖步驟的加速效果更好,這是因為前者通過(guò)工作組共享局部?jì)却婺艹浞掷肅PU的L1 cache,從而提升運算性能。
6結語(yǔ)
本文對SIFT算法進(jìn)行合并、拆分和數據重構等并行化設計,改善提高了算法的并行度,并通過(guò)合理設置工作組和工作項大小,充分利用內存層次等方法對算法進(jìn)一步優(yōu)化。利用OpenCL并行編程語(yǔ)言的跨平臺特性,本文分別在NVIDIA GPU和Intel CPU平臺上對該算法進(jìn)行并行優(yōu)化,分別取得了10.51~19.33和2.34~4.74倍的加速,并利用OpenCL的可移植性解決了CUDA對硬件平臺的依賴(lài)問(wèn)題。本文的研究?jì)热菁敖Y果可應用于提升遙感圖像拼接、醫學(xué)影像配準和流水線(xiàn)工件定位等領(lǐng)域的圖像匹配速度。
目前本文的優(yōu)化方法在同一時(shí)刻只將OpenCL內核入列到CPU或者GPU中,即同一時(shí)刻只能充分利用CPU或GPU的計算能力,接下來(lái)本文將進(jìn)一步研究異構系統中不同平臺間的并行性,將可并行運行的內核同時(shí)入列到CPU和GPU中運行,進(jìn)而擴展到多核多CPU和多GPU的復雜異構系統中,進(jìn)一步提高算法的運行速度。
【基于OpenCL的尺度不變特征變換算法的并行設計與論文】相關(guān)文章:
基于遺傳算法的優(yōu)化設計論文11-20
基于多島遺傳算法的多狀態(tài)動(dòng)力學(xué)模型并行修正方法論文05-17
基于遺傳算法的大型圓振動(dòng)篩的優(yōu)化設計論文07-14
算法設計與分析課程論文11-18
簡(jiǎn)議基于遺傳算法的MR減振器多目標優(yōu)化設計論文11-16
基于現代密碼學(xué)的加密算法驗證系統的設計與實(shí)現的論文11-14
基于科技創(chuàng )新團隊特征的培育建議的論文08-25
下沉式廣場(chǎng)尺度空間設計論文11-21