欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

于異構(gòu)平臺(tái)的面向高維數(shù)據(jù)的詞匯樹(shù)構(gòu)建方法

文檔序號(hào):9810364閱讀:506來(lái)源:國(guó)知局
于異構(gòu)平臺(tái)的面向高維數(shù)據(jù)的詞匯樹(shù)構(gòu)建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于并行處理器技術(shù)領(lǐng)域,具體涉及一種基于異構(gòu)平臺(tái)處理能力的面向高維數(shù)據(jù)的詞匯樹(shù)(Vocabulary Tree)構(gòu)建方法。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時(shí)代的到來(lái),海量數(shù)據(jù)已經(jīng)滲透到社會(huì)的每一個(gè)行業(yè),對(duì)于海量數(shù)據(jù)的處理已經(jīng)成為議論的熱點(diǎn)。在圖像檢索領(lǐng)域,大量的數(shù)據(jù)圖片給檢索帶來(lái)了前所未有的困難。根據(jù)資料顯示,F(xiàn)acebook每天上傳的圖片量達(dá)到3.5億,數(shù)據(jù)量達(dá)到7PB,對(duì)于如此龐大的數(shù)據(jù),如何快速有效的檢索從而提供更好的用戶體驗(yàn)變成了巨大的挑戰(zhàn)。高維Vocabulary Tree(詞匯樹(shù))的提出有效地提高了圖像識(shí)別方面的性能,該算法首先用局部特征提取算法對(duì)圖像提取特征點(diǎn),然后將這些圖像特征點(diǎn)的集合通過(guò)聚類的方法生成數(shù)據(jù)詞匯,接著采用TF-1DF的加權(quán)方法,使得圖片的檢索時(shí)間能夠有效地縮短。
[0003]雖然高維詞匯樹(shù)的提出有效地高了圖像檢索的效率,但是基于大數(shù)據(jù)圖片的高維詞匯樹(shù)的構(gòu)建過(guò)程仍然十分耗時(shí),一百萬(wàn)張圖片,包含了四億多個(gè)特征點(diǎn),而每個(gè)特征點(diǎn)都是由64維或者128構(gòu)成的高維數(shù)據(jù),總數(shù)據(jù)量將近50GB,其建樹(shù)過(guò)程需要花費(fèi)64個(gè)小時(shí)。而假如要處理前文提到的Facebook的數(shù)據(jù)量,即使處理時(shí)間是線性增長(zhǎng)的,也需要9000多個(gè)小時(shí)一一超過(guò)一年的時(shí)間。而一旦圖像數(shù)據(jù)庫(kù)發(fā)生改動(dòng),那就需要重新為新的圖像數(shù)據(jù)集建樹(shù),如此長(zhǎng)的建樹(shù)時(shí)間給圖像搜索應(yīng)用帶來(lái)極大的不便。因此提升高維詞匯樹(shù)構(gòu)建過(guò)程的速度是十分必要的。
[0004]在過(guò)去的近十年時(shí)間內(nèi),圖形處理器(GPU)不僅在圖像處理方面發(fā)揮作用,在并行處理領(lǐng)域也得到了飛速的發(fā)展,而且在性能加速方面的能力也已經(jīng)遠(yuǎn)遠(yuǎn)勝出CPU。由于GPU通用計(jì)算的編程模型(如CUDA、0penCL)逐漸成熟,越來(lái)越多復(fù)雜的、計(jì)算量大的難題都已經(jīng)移植到GPU上處理,很多已經(jīng)得到了解決并且在性能方面有很大提升。同時(shí)隨著多核CPU處理器技術(shù)的出現(xiàn),CPU強(qiáng)大的計(jì)算能力也不容忽視,超級(jí)計(jì)算機(jī)通常配置幾百個(gè)CPU處理器。在GPU和多核CPU快速發(fā)展的情形下,完全能夠利用這些強(qiáng)大的計(jì)算資源來(lái)提升構(gòu)建高維詞匯樹(shù)的速度。而節(jié)點(diǎn)的處理算法中分類以及求和這兩個(gè)數(shù)據(jù)密集型的過(guò)程又非常適合使用GPU進(jìn)行加速。因此,高維詞匯樹(shù)的構(gòu)建適合部署到異構(gòu)處理平臺(tái)(通用處理器和圖形處理器(GPGPU)混合架構(gòu))上進(jìn)行。本發(fā)明致力于利用異構(gòu)平臺(tái)處理器,以提升高維詞匯樹(shù)構(gòu)建速度。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的在于提供一種高速的面向高維數(shù)據(jù)詞匯樹(shù)的構(gòu)建方法。
[0006]本發(fā)明提供的面向高維數(shù)據(jù)的詞匯樹(shù)的構(gòu)建方法,是基于異構(gòu)平臺(tái)(通用處理器和圖形處理器(GPGPU)混合架構(gòu))的,包括:利用異構(gòu)平臺(tái)中圖形處理器(GPU)強(qiáng)大的并行計(jì)算能力與可編程性,提升高維詞匯樹(shù)構(gòu)建過(guò)程的速度;利用高維詞匯樹(shù)算法特性和圖形處理器的內(nèi)存訪問(wèn)模式優(yōu)化算法;提出主機(jī)和圖形處理器在高維詞匯樹(shù)算法運(yùn)行過(guò)程中的協(xié)調(diào)策略。
[0007]在高維詞匯樹(shù)的構(gòu)建中,計(jì)算量主要集中在節(jié)點(diǎn)生成的部分,所以本發(fā)明將高維詞匯樹(shù)中隊(duì)列管理以及預(yù)處理工作放在主機(jī)端,生成新節(jié)點(diǎn)算法中的分類以及求和兩個(gè)部分交由GPU進(jìn)行處理。
[0008]詞匯樹(shù)的構(gòu)建流程如下:
在運(yùn)行建樹(shù)程序前,將所有圖片的高維特征點(diǎn)作為一整個(gè)節(jié)點(diǎn)放入隊(duì)列中。之后,開(kāi)始運(yùn)行建樹(shù)程序,建樹(shù)過(guò)程根據(jù)主機(jī)端的主線程維護(hù)的隊(duì)列進(jìn)行。
[0009]第一步,程序從任務(wù)隊(duì)列中取出待處理的節(jié)點(diǎn),并將需要處理的數(shù)據(jù)傳輸?shù)紾PU的主存中。
[0010]由于高維詞匯樹(shù)的建樹(shù)過(guò)程可以使用多個(gè)GPU合作,所以需要合理地調(diào)度任務(wù),確保多個(gè)GPU的負(fù)載相近,否則會(huì)拖慢整個(gè)程序的進(jìn)度。根據(jù)節(jié)點(diǎn)大小的不同,程序?qū)⒉捎貌煌腉PU協(xié)同策略,所以本程序?qū)⒐?jié)點(diǎn)分為三種,并放到不同的隊(duì)列中進(jìn)行處理。在前一個(gè)隊(duì)列處理完之前程序不會(huì)處理下一個(gè)隊(duì)列中的節(jié)點(diǎn)。
[0011]第一種是大型節(jié)點(diǎn)。這類節(jié)點(diǎn)的大小超過(guò)GPU主存的容量,要將其劃分為可以放入GPU中的數(shù)據(jù)塊。如果是多GPU結(jié)構(gòu),每個(gè)GPU會(huì)依次拿取自己的數(shù)據(jù)塊;如果是單GPU結(jié)構(gòu),該GPU會(huì)順序處理所有的數(shù)據(jù)塊。每次處理完所有數(shù)據(jù)塊的分類或者求和之后,進(jìn)行同步,并將結(jié)果匯總至主機(jī)端內(nèi)存上的數(shù)組中,之后再進(jìn)行下一部分的處理。在大型節(jié)點(diǎn)中還有一種特殊的超大型節(jié)點(diǎn)。一般節(jié)點(diǎn)的數(shù)據(jù)會(huì)在主機(jī)端預(yù)先重構(gòu)完畢,而這種超大型節(jié)點(diǎn)的重構(gòu)數(shù)據(jù)會(huì)超出主機(jī)端的主存容量,需要在GHJ進(jìn)行處理的同時(shí)對(duì)其進(jìn)行重構(gòu),以減少主機(jī)端內(nèi)存的壓力。
[0012]第二種是普通的節(jié)點(diǎn),可以整塊放入GPU內(nèi)存中,不需要?jiǎng)澐譃閿?shù)據(jù)塊。在這一部分中,GPU會(huì)按順序從隊(duì)列中獲取任務(wù),處理完一個(gè)任務(wù)后即可取下一塊任務(wù)。
[0013]最后,是碎片化節(jié)點(diǎn)。到了隊(duì)列的尾部,高維詞匯樹(shù)的底層,會(huì)產(chǎn)生許多只有數(shù)百,數(shù)十個(gè)高維特征點(diǎn)的節(jié)點(diǎn)。GPU需要盡可能多的數(shù)據(jù)以充分利用GPU的計(jì)算能力,所以要放入盡量多的碎片化節(jié)點(diǎn)以填滿GPU的內(nèi)存,此時(shí)GPU每次可以處理上百個(gè)節(jié)點(diǎn)。
[0014]第二步,程序?qū)?jié)點(diǎn)進(jìn)行處理,生成K個(gè)子節(jié)點(diǎn)。
[0015]首先,在節(jié)點(diǎn)中隨機(jī)尋找K個(gè)高維特征點(diǎn)作為初始的中心點(diǎn),然后對(duì)高維特征點(diǎn)進(jìn)行分類處理,之后對(duì)每個(gè)分類求和,最后得到新的K個(gè)中心點(diǎn);經(jīng)過(guò)循環(huán)上述過(guò)程,至中心點(diǎn)結(jié)果不變后,得到K個(gè)新的中心點(diǎn)。
[0016]GPU上節(jié)點(diǎn)的處理工作有兩部分:一是對(duì)每個(gè)高維特征點(diǎn)進(jìn)行分類,二是對(duì)每個(gè)類別的高維特征點(diǎn)進(jìn)行求和;由于這兩部分都具有數(shù)據(jù)密集的特性,它們非常適合用GHJ進(jìn)行并行加速。然而由于這兩部分具有不同的計(jì)算模式和內(nèi)存訪問(wèn)特點(diǎn),如采用相同的并行模式很難充分利用GHJ的計(jì)算資源。因此,需要對(duì)它們采用不同的并行模式以提高并行性能。
[0017]對(duì)于分類計(jì)算,每個(gè)線程以高維特征點(diǎn)為任務(wù)目標(biāo),去完成分類任務(wù)。線程的任務(wù)是首先求出高維特征點(diǎn)與所有中心點(diǎn)的多維距離,然后確定與之距離最短的中心點(diǎn),將結(jié)果存儲(chǔ)到全局內(nèi)存中。由于計(jì)算最短距離不適合由多個(gè)線程共同完成,所以在這里選擇根據(jù)高維特征點(diǎn)進(jìn)行處理的方式,線程會(huì)各自讀取高維特征點(diǎn)進(jìn)行處理。中心點(diǎn)的數(shù)據(jù)被存儲(chǔ)在線程塊的共享內(nèi)存中,這是所有高維特征點(diǎn)公用的數(shù)據(jù),放在共享內(nèi)存中能夠減少不必要的主存訪問(wèn)。當(dāng)一個(gè)線程在處理完一個(gè)節(jié)點(diǎn)后,它會(huì)讀取下一個(gè)要處理的高維特征點(diǎn)并循環(huán)直至處理完所有的節(jié)點(diǎn)。
[0018]對(duì)于求和計(jì)算,分類只需要共享中心點(diǎn)的數(shù)據(jù)進(jìn)行讀取即可,但是求和部分每個(gè)點(diǎn)都需要維護(hù)自己的局部和。假如不做改變,仍然根據(jù)點(diǎn)進(jìn)行并行計(jì)算,每個(gè)線程所維護(hù)的局部和勢(shì)必要放在全局內(nèi)存上,那么每次累加的操作都會(huì)涉及到一次對(duì)全局內(nèi)存的訪問(wèn),這些主存訪問(wèn)都是不必要的,會(huì)對(duì)性能造成影響。所以,求和部分GPU按維度進(jìn)行并行處理,一個(gè)線程塊會(huì)處理一組節(jié)點(diǎn),每個(gè)線程會(huì)負(fù)責(zé)特定的維度,每個(gè)線程只需要存儲(chǔ)自己負(fù)責(zé)的維度的局部和即可,這樣就能將局部和放在共享內(nèi)存上,減少不必要的GPU主存訪問(wèn)。每次處理完一個(gè)點(diǎn)中的特定維度,線程會(huì)根據(jù)線程塊中的總線程數(shù)累加一定的地址得到下一部分有相同維度的數(shù)據(jù)。最終,在這組節(jié)點(diǎn)中所有線程都完成累加后,會(huì)有特定的線程將各自負(fù)責(zé)的值累加到全局變量上。
[0019]除了并行算法,本發(fā)明還對(duì)于GPU中的內(nèi)存訪問(wèn)進(jìn)行了優(yōu)化。在GPU中全局內(nèi)存,也就是主存的訪問(wèn)速度非常慢,會(huì)比共享內(nèi)存和寄存器慢數(shù)百倍,而共享內(nèi)存的訪問(wèn)速度只會(huì)比寄存器慢數(shù)倍。所以本發(fā)明的優(yōu)化目標(biāo)是減少對(duì)全局內(nèi)存的訪問(wèn)或者將經(jīng)常訪
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永宁县| 高尔夫| 陆丰市| 鄢陵县| 新田县| 洞口县| 四会市| 祁连县| 安平县| 五原县| 凤城市| 洪洞县| 兰溪市| 枣庄市| 兴国县| 慈溪市| 藁城市| 临沧市| 桐庐县| 巴楚县| 前郭尔| 年辖:市辖区| 乌审旗| 江永县| 石棉县| 河间市| 泉州市| 北京市| 陕西省| 区。| 博客| 方城县| 进贤县| 木兰县| 枣强县| 阜南县| 遂川县| 新巴尔虎左旗| 姚安县| 揭西县| 阳泉市|