新四季網

利用gpu片上樹群實現二維數據近鄰搜索的並行方法

2023-05-10 07:17:51 1

利用gpu片上樹群實現二維數據近鄰搜索的並行方法
【專利摘要】本發明提供一種利用GPU片上樹群實現二維數據近鄰搜索的並行方法,涉及基於NVIDIA的GPU+CUDA計算架構的高效四分樹群數據結構和基於此數據結構的並行搜索近鄰算法,該方法能夠為各種應用中的近鄰搜索提供性能加速。根據本發明,該方法包括步驟:將數據拷貝到GPU全局存儲;在GPU片上存儲中構建四分樹群,將數據點組織到樹群內;並行在GPU片上存儲中搜索若干四分樹,為每個數據點查找出其一定範圍內的鄰居;根據具體應用需要對查找到的鄰居做進一步的計算處理。該並行近鄰搜索方法性能優越,在圖像處理、地理信息系統等領域具有重要的應用價值。
【專利說明】利用GPU片上樹群實現二維數據近鄰搜索的並行方法

【技術領域】
[0001]本發明涉及樹型數據結構和並行計算,具體涉及四分樹群的構建、基於該數據結構的近鄰搜索和GPU+CUDA架構編程。

【背景技術】
[0002]四分樹是一種用於組織二維空間數據的多層次樹狀數據結構,在樹內每個非葉節點最多有四個子節點。它將一個正方形區域規則地劃分為4個子區域,每一個子區域再分為4個子區域,如此逐次劃分,直至所有子區域最多只包含一個數據點為止。四分樹的優點是空間關係隱含在數據模型之中,檢索和處理速度較快。該數據結構被廣泛用於圖像處理、地理信息系統和機器人等領域中的近鄰搜索。
[0003]圖形處理器(GPU)是當前蓬勃發展的並行計算平臺。它起源於圖形渲染,現在已出現高級語言支持GPU上的便捷編程。NVIDIA為其GPU提供了 Compute Unified DeviceArchitecture (CUDA)編程模型,擁有類C語言的編程接口。結合CUDA的GPU提供了強大的計算能力和非常高的存儲帶寬,適合於高度並行、計算密集的應用。比如:NVIDIA TeslaC2070擁有1.03TFL0PS/s的單精度浮點峰值和144GB/s的帶寬峰值。儘管計算能力強大,但NVIDIA GPU的花銷較低,而且普遍存在於PC或工作站等不太昂貴的機器中。目前,GPU+CUDA架構已被應用於加速各個科學計算領域中的計算密集型處理。
[0004]在硬體層次,支持CUDA的GPU是一些單指令多數據流(SMD)流多處理器(streammultiprocessor)的集合,每個流多處理器有32個流處理器(stream processor)。比如:NVIDIA Tesla C2070處理器有14個流多處理器,共448個流處理器。每個流多處理器有一個容量有限的快速片上共享存儲,可被一個流多處理器內的所有流處理器共享。每個流處理器擁有一定數量的32位寄存器。流多處理器之間通過延遲較高的片外全局/設備存儲進行通信。全局存儲可被主機讀寫,而且在同一程序的不同核函數之間是一致的。共享存儲顯式地由程式設計師管理。與CPU相比,GPU將更多的電晶體用於製作計算單元,因此GPU的浮點計算峰值比CPU高一個數量級。同時,NVIDIA的特殊優化使得GPU的帶寬也比CPU高一個數量級。
[0005]在軟體層次,CUDA模型是大量並行執行線程的集合,CUDA程序以線程並行的模式執行。由主機控制調度、GPU實際執行的基本任務單元稱為核函數,其形式和功能類似C語言中定義的函數。計算被組織成由一些線程塊構成的線程網格(見圖2)。在指令層次,同一個線程塊內的32個連續線程構成一個最小執行單元,稱為線程warp。一個線程塊是一批次同一時刻在同一流多處理器上SMD並行運行的線程warp的集合。每個流多處理器同一時刻並發執行一個或多個線程塊。對於任一線程,它的索引被用於確定其應該處理的數據。同一個線程塊內的線程通過片上共享存儲進行通信。
[0006]建立在NVIDIA的GPU+CUDA並行計算架構上的四分樹將能極大地提升基於四分樹的近鄰搜索的性能。然而,CUDA計算模型被認為不適合諸如建樹和搜索樹之類的不規則計算;目前,使用CUDA在GPU上建立一個樹型數據結構方面的工作較少。Zhou Kun等在GPU上構建了一個針對多維數據的KD-tree,他們將樹的節點信息等存儲在GPU的全局存儲上,並使用該數據結構加速圖像渲染中的光線追蹤和K個最近鄰搜索。一個混合的四分樹構建方法首先在CPU上構建樹的頂部若干層,然後將數據傳輸到GPU全局存儲,在其上構建樹的剩餘層。該方法也將四分樹建在訪問延遲較高的GPU全局存儲上。而且,沒有正式出版的文檔或公布的代碼可供參考。
[0007]在大體運動模擬中,計算天體間的重力影響涉及找出每個天體的大量鄰居,特別是對單個天體重力影響最大的周圍臨近的鄰居。Martin和Keshav在NVIDIA的GPU+CUDA架構上實現了一個高性能的N-body並行模擬算法,在模擬中他們構建了一個八分樹,以加速查找每個天體的近鄰。實驗證明該基於CUDA的八分樹極大提升了模擬算法的性能。不過,該樹型結構仍然構建在延遲較高的全局存儲上。
[0008]在此類問題的研究中,現有工作集中於在GPU的全局存儲上構建一個單一的樹型數據結構。這樣的策略導致大量效率較低的無法優化的對全局存儲的訪問,而且由於線程競爭著將數據點插入到樹中,致使CUDA程序的線程並行度較低,性能受到很大影響。


【發明內容】

[0009]本發明的目的是提供一種基於NVIDIA的GPU+CUDA計算架構的高效四分樹群和基於此數據結構的並行搜索近鄰的方法,能夠為各種應用中的近鄰搜索提供性能加速。
[0010]為實現上述目的,一種利用GPU片上樹群實現二維數據近鄰搜索的並行方法,步驟如下:
[0011](I)將待組織的數據拷貝到GPU全局存儲;
[0012](2)在GPU片上存儲中構建四分樹群,將數據點組織到樹群內;
[0013](3)並行在GPU片上存儲中搜索若干四分樹,為每個數據點查找出其一定範圍內的鄰居;
[0014](4)根據應用需要對查找到的鄰居做進一步的計算處理。
[0015]與以往已在GPU上實現的樹型數據結構不同,本發明利用GPU高速但有限的片上存儲實現四分樹的構建和搜索,極大地提升了存儲訪問的效率。同時,樹群以每個CUDA線程塊為單位實現一棵較小的四分樹,線程並行度相對一個單一的四分樹要高許多倍,從而提升了建樹的效率。該基於四分樹群的近鄰搜索算法性能優越,在圖像處理和計算機仿真等領域中具有重要的應用價值。

【專利附圖】

【附圖說明】
[0016]圖1利用GPU片上樹群實現二維數據近鄰搜索的結構
[0017]圖2主機端代碼的順序執行和設備端代碼的並行執行
[0018]圖3區域格的二維層次遞歸劃分
[0019]圖4區域格四分樹形式的數據點組織

【具體實施方式】
[0020]本發明的核心思想是構建一種可駐留於GPU高速片上存儲的數據結構-四分樹群,使用其組織各種應用中的數據點,在計算中作為加速數據結構,提升並行為全部數據點查找近鄰的性能。
[0021]下面結合附圖和算法實現偽碼詳細描述本發明中的數據結構、該數據結構的構建和使用該數據結構並行搜索數據點的近鄰等算法。
[0022](I)數據點的組織
[0023]四分樹群是一個包含了大量規模較小的CUDA四分樹的森林。本發明將整個數據點部署區域等分為大量正方形區域格,使得每個區域格包含不多於設定閾值數目的數據點(實驗測試中閾值設定為64,即每個區域格最多包含64個數據點)。每個區域格中的數據點用一個CUDA四分樹組織起來。如圖3所示,一個區域格首先劃分為四個更小、均等的區域小格,然後每個區域小格再迭代劃分,直到其包含不多於一個的數據點。最終,圖3區域格內的所有數據點組織到了圖4所示的CUDA四分樹中,空間相近的數據點在樹中互為兄弟節點。
[0024]與一棵大樹相比,樹群可最大化建樹時的CUDA線程並行度;每個CUDA四分樹較小,可完全駐留在GPU快速片上存儲中,避免了訪問全局存儲招致的高延遲,能帶來相當可觀的性能提升。
[0025]⑵GPU片上存儲構建四分樹群
[0026]首先,數據集由內存複製到GPU全局存儲。依據數據分布的範圍和對分布密度的經驗預估將數據分布區域劃分成區域格。每個線程持有一個數據點,根據其坐標將其劃歸到特定的區域格中。如果每個區域格包含的數據點數大於設定的閾值,則每個區域格分裂為四個更小的區域格;反之,停止數據點的劃歸。
[0027]在生成四分樹群時,每個CUDA線程塊負責一個區域格,構建一棵CUDA-quadtree。其中,每個線程持有一個數據點,將其插入樹中。為了便利在CUDA-quadtree中搜索近鄰,每個區域子格的中心點和邊長組合構成「虛節點」以代表該區域,即CUDA-quadtree中的非葉節點。比如:以區域格的中心點和區域格邊長組合四分樹的「根虛節點」,代表該區域格覆蓋的區域。假設一個區域格內最多有η個數據點,則生成的四分樹最大可能佔用空間為η*4+1,據此在共享存儲上分配一固定大小的數組,以保存四分樹信息。該信息數組逆序填充,即當有新數據點插入到CUDA-quadtree時,在數組已保存的數據點前一空白處存儲新數據點信息。
[0028]如表I偽碼所示,線程插入數據點是一個反覆嘗試的過程,其間線程競爭獲取一次插入機會。首先,線程O初始化「根虛節點」並創建四個空葉節點。然後,每個線程根據持有數據點在區域格中的位置尋找合適的葉節點執行插入操作。當這樣的位置找到後,一個競爭勝出線程對其添加唯一寫入權限鎖,獨佔該位置,插入持有的數據點(將該數據點寫入信息數組),釋放該位置,退出插入操作。如果一個線程競爭失敗,沒有鎖住合適的葉節點,則該線程等待下一次機會重新嘗試前述插入操作。然而,在第二輪中,一個線程找到並鎖住的葉節點位置已經被其他插入的數據點佔用。於是,該線程創建一個帶有四個空葉節點的子樹,插入到該位置,並將原有節點和自己持有的數據點插入到該子樹的葉節點中,釋放該位置,退出插入操作。其餘線程繼續如表一所示繼續嘗試,直到其持有的數據點插入到CUDA-quadtree的一個葉節點中。最後,線程塊內線程協同一次性以訪存效率最優的數據融合方式將四分樹信息數組寫入全局存儲。
[0029]表IGPU片上數據點插入的偽碼示例

【權利要求】
1.一種利用GPU片上樹群實現二維數據近鄰搜索的並行方法,包括步驟: (1)將待組織的數據拷貝到GPU全局存儲; (2)在GPU片上存儲中構建四分樹群,將數據點組織到樹群內; (3)並行在GPU片上存儲中搜索若干四分樹,為每個數據點查找出其一定範圍內的鄰居; (4)根據應用需要對查找到的鄰居做進一步的計算處理。
2.按照權利要求1所述的方法,其特徵在於所述的方法充分利用GPU高效的片上存儲,構建四分樹群和搜索四分樹群的工作均在該存儲中進行,構建好的四分樹由線程協同以訪存最優的存儲融合的方式寫入全局存儲;在搜索四分樹時,以相同的方式將四分樹由全局存儲讀入片上存儲,然後再進行搜索。
3.按照權利要求1所述的方法,其特徵在於所構建的數據結構為由許多四分樹組成的樹群,每個線程塊負責一個四分樹的構建和搜索,以便保證數據結構能夠載入有限的片上存儲和保證CUDA線程並行度儘可能大。
4.按照權利要求1所述的方法,其特徵在於每個線程負責一個數據點,在四分樹的構建過程中將該數據點插入到四分樹中,在近鄰搜索過程中為一個數據點搜索其周圍的鄰居。
5.按照權利要求1所述的方法,其特徵在於為數據點搜索近鄰時逐一將四分樹以訪存最優的方式載入片上存儲,在高效的片上存儲中完成查找工作。
【文檔編號】G06F17/30GK104050175SQ201310078697
【公開日】2014年9月17日 申請日期:2013年3月13日 優先權日:2013年3月13日
【發明者】易衛東, 菅立恆 申請人:中國科學院大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀