《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種基于OpenCL的高能效并行KNN算法及其GPU驗證
一種基于OpenCL的高能效并行KNN算法及其GPU驗證
2016年電子技術應用第2期
賀 江1,蒲宇亮1,李海波2,閻 波1
1.電子科技大學,四川 成都610036;2.廣東省公安廳,廣東 廣州510050
摘要: 近年來數據分類技術已經被廣泛應用于各類問題中,作為最重要的分類算法之一,K最近鄰法(KNN)也被廣泛使用。在過去的近50年,人們就如何提高KNN的并行性能做出巨大努力?;贑UDA的KNN并行實現算法——CUKNN算法證明KNN在GPU上的并行實現比在CPU上串行實現的速度提升數十倍,然而,CUDA在實現過程中包含了大量的冗余計算。提出了一種并行冒泡的新型KNN并行算法,并通過OpenCL,在以GPU作為計算核心的異構系統上進行驗證,結果顯示提出的方法比CUDA快16倍。
中圖分類號: TP311
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.003
中文引用格式: 賀江,蒲宇亮,李海波,等. 一種基于OpenCL的高能效并行KNN算法及其GPU驗證[J].電子技術應用,2016,42(2):14-16.
英文引用格式: He Jiang,Pu Yuliang,Li Haibo,et al. A energy efficient parallel KNN algorithm evaluated on GPU using OpenCL[J].Application of Electronic Technique,2016,42(2):14-16.
A energy efficient parallel KNN algorithm evaluated on GPU using OpenCL
He Jiang1,Pu Yuliang1,Li Haibo2,Yan Bo1
1.University of Electronic Science and Technology of China,Chengdu 610036,China; 2.Guangdong Provincial Public Security Bureau,Guangzhou 510050,China
Abstract: Recently, data classification techniques have been used to solve many problems. As one of the most popular classification algorithms, K-Nearest Neighbor(KNN) algorithm has been widely used. Over the past 50 years, many efforts about parallel computing have been made to improve the efficiency of KNN. A new CUDA-based parallel implementation of KNN algorithm called CUKNN has proved that the parallel solution implemented by GPU is dozens of times faster than the serial solution implemented by CPU. However, plenty of redundant computation has been done in CUKNN. This paper proposes a new parallel solution of KNN algorithm which is implemented by parallel bubble sort. Then we evaluate it on GPU-based heterogeneous computing system using OpenCL, and the result shows that the efficiency of our solution has improved 16 times.
Key words : KNN;GPGPU;OpenCL;bubble sort;parallel computing

0 引言

    近年來,許多不同類型的處理器廣泛應用于高性能計算領域,如GPU、FPGA、DSP等[1],而異構計算平臺由不同類型的處理器組成,能對許多不同的算法進行加速實現。OpenCL是一種開放式的異構計算標準,支持異構系統的并行程序應用。作為經典聚類算法,KNN在文字識別、預測分析、圖像處理和圖像識別等方面[2]有非常重要的應用。

    為了加速KNN算法的實現,許多文章也提出了一些新的思路。Zhang Hao等[3]通過結合支持向量機(SVM)和KNN算法實現視覺分類識別。Garcia等[4]提出一種基于插入排序的快速KNN算法實現,并分析了奇偶排序和插入排序的性能。2009年,Liang Shenshen等人[5]提出了基于CUDA實現的并行KNN算法,稱該算法為CUKNN。該算法通過調用大量GPU線程,在計算待分類數據和參考數據集時高度并化,然后對距離進行并行排序。

    基于CPU+GPU的異構計算系統最近幾年在算法加速方面得到了廣泛使用,如神經網絡[6]、數據挖掘[7]等。而基于CPU+FPGA系統由于其能效優勢[8],得到業界的認可。

    本文提出了一種基于CPU+GPU異構計算系統的KNN并行算法。該方法將待分類的數據集通過并行冒泡的方法進行分類,稱該方法為PBKNN(parallel sort)。

1 KNN算法與OpenCL架構

1.1 KNN算法

    KNN分類算法實現簡單,分類錯誤率低,其實現通常分為三步:距離計算、距離排序、分類判決。

    距離計算是計算待分類數據和參考數據集數據之間的距離,本文采用的是歐式距離。

    算出待分類數據與每個參考數據集樣本之間的距離之后,需選出其中最小的K個距離,作為判決的標準。針對如何從多個數據中選取K個最小的數據,提出了一種新的并行冒泡排序方法,該方法無冗余計算且可并行實現。并行冒泡排序也曾被提出來加速排序的計算速度,如奇偶冒泡排序[9],但該算法由于大量冗余計算,實現時性能不佳。本文提出的并行冒泡排序只需要K個氣泡來選取K個最小的數據,如圖1所示。

gnx3-t1.gif

1.2 OpenCL架構

    OpenCL程序在主機和設備上執行,支持基于數據和基于任務的并行編程模型。圖2是有主機的多個設備組成的OpenCL平臺模型[10]。

gnx3-t2.gif

    執行內核程序時,OpenCL將定義一個索引來執行該內核的實例,該實例就是OpenCL的工作項,每個工作項執行的代碼相同。工作項的內存稱作私有內存。一些特定的工作項組成工作組,相同工作組共享局部內存,相同工作組中的不同工作項在不同計算單元上并行運行。

    本文采用通用圖形處理器(GPGPU)來作為異構系統的計算設備,由于GPU擁有大量的計算核心,其浮點計算效率遠高于CPU,所以GPU作為OpenCL的通用計算設備擁有很高的計算效率。

2 并行冒泡的KNN算法實現

2.1 距離計算內核

    距離計算內核計算每個待分類數據到每個參考數據集樣本之間的距離,每次距離計算由一個工作項完成。數據集由CPU傳輸到GPU的全局內存,相應工作組的數據由GPU全局內存傳輸到GPU局部內存,以此充分利用局部內存的帶寬,提高GPU計算核心的數據訪存速度。距離計算如圖3所示。

gnx3-t3.gif

2.2 距離分組排序內核

    為了充分利用GPU的計算資源,提高計算的并行度,將得到的待分類數據和參考數據集的所有距離進行排序時,先將距離分組,若分組數為N,通過并行冒泡選取每組數據最小的K個距離,得到N×K個距離。一個待分類數據共有N個工作組進行分組排序。

    每個工作組通過并行冒泡進行排序,一個工作組擁有K個工作項,每個工作項對比相鄰的兩個數據,K個工作項從數據的起始端一直對比到數據的末端,從而選出最小的K個距離。第1個周期時,共一個工作項進行第1個和第2個距離進行比較;第2個周期時,第1個氣泡比較第3個和第4個距離,第2個數據比較第1個和第2個距離,直到N個工作項產生N個氣泡。氣泡數目穩定后,經過若干個周期,K個氣泡便可以同時攜帶K個最小的距離。所以該過程共有2個過程,氣泡增加,氣泡穩定。具體過程如圖4、圖5所示。

gnx3-t4.gif

gnx3-t5.gif

2.3 距離計算內核

    在分組內核中,每個待分類數據共得到M×K個距離,該內核就是從這M×K個數據中選出K個最小的數據。由于參考數據集很大,這個內核消耗的計算時間相比分組排序只占小部分。

3 結果分析

3.1 算法性能分析

    為了讓距離分組內核得到合理的分組數目,通過設置不同的分組數目,得到在GPU上計算消耗的時間。實驗中,采用英特爾處理器i7-3770K作為OpenCL主機,AMD Radeon HD7950作為OpenCL設備。該CPU是4核處理器,主頻3.5 GHz,24 GB內存。該GPU擁有28個計算單元,最大工作頻率為900 MHz,3 GB GDDR5內存,內存帶寬為240 GB/s。所有實驗數據由MATLAB產生,參考數據集為10 240×8個浮點數據,每個數據共64維,K為16,待分類數據個數為32。

    為了找到每個待分類數據距離的最佳分組數,將每個待分類數據10 240×8個參考數據集的距離進行分組,將分組數分別設置為4×8,8×8,直至48×8。通過實驗,記錄每次實驗的GPU時間消耗,如圖6所示。

gnx3-t6.gif

    當分組數較小時,分組排序內核隨著分組數的變大,時間消耗迅速下降;當分組數變大后,時間消耗趨于穩定。因為當分組數較小時,每個工作項的計算量和數據傳輸量過大,且GPU的計算資源沒有充分利用;當分組數變大后,GPU計算資源得到充分利用,但工作組和工作項的數目也會隨之變大,從而導致額外的控制開銷。根據實驗數據,將分組數設定為32。

    本次實驗,把CUKNN和PBKNN進行OpenCL實現時,工作組大小均設置為256。CUKNN進行排序時,每個工作組將浪費(256-K)/256×100%的時間計算無關數據的排序。而PBKNN對此進行優化,避免了無關數據的排序。所以,理論上來說,PBKNN的時間消耗是CUKNN的K/256。

3.2 實驗驗證

    PBKNN和CUKNN采用相同的數據和相同的實驗環境。參考數據集中數據點個數從1×10 240到64×10 240變化,如表1。對于PBKNN,共有256個工作組,每個工作組共有64個工作項;對于CUKNN,工作組數目分別設置為40,80,120,…,320,其每個工作組的工作項數目最大時,性能最好。所以每個工作組的工作項的數目設置為256。

    BPKNN和CUKNN均通過三個內核實現KNN算法。由于第一個和第三個內核的時間消耗較少,主要對比第二個內核的時間消耗。實驗結果如表1。

gnx3-b1.gif

    從實驗結果可以看出,在相同的實現平臺上通過減少無關數據的排序,PBKNN相比于CUKNN計算時間大幅減少,因而對應的能量效率也得到了很大的提升。

4 結論

    本文提出了一種基于CPU+GPU的異構計算架構的并行冒泡KNN算法—PBKNN算法,該算法充分利用了GPU的并行計算能力及OpenCL的編程優化。通過在AMD Radeon HD GPU實測,PBKNN在關鍵排序時間僅為CUKNN的1/16,因而極大地提升了處理速度和計算能效。

參考文獻

[1] Khronos group.The open standard for parallel programming of heterogeneous systems[EB/OL].http://www.khronos.org/opencl/.

[2] PENG Y,KOU G,SHI Y,et al.A descriptive framework for the field of data mining and knowledge discovery[J].Int.J.Inf.Technol.Decis.Mak.,2008,7(4):639-682.

[3] ZHANG H,BERG A C,MAIRE M,et al.SVM-KNN:discriminative nearest neighbor classification for visual category recognition[C].In International Conference on Computer Vision and Pattern Recognition,New York(NY),USA,2006.

[4] GARCIA V,DEBREUVE E,BARLAUD M.Fast k nearest neighbor search using GPU[C].In:IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops(CVPRW′08),2008:1-6.

[5] LIANG S,WANG C,LIU Y,et al.CUKNN:a parallel implementation of knearest neighbor on cuda enabled GPU[C].In:IEEE Youth Conference on Information,Computing and Telecommunication(YC-ICT′09),2009:415-418.

[6] HOFFMANN J,EI-LAITHY K,G?譈TTLER F,et al.Simulating biological-inspired spiking neural networks with OpenCL[C].ICANN 2010,Part I,LNCS 6352,2010:184-187.

[7] CHE S,BOYER M,MENG J Y,et al.A performance study of general purpose applications on graphics processors[J].Journal of Parallel and Distributed Computing,2008,68(10):137-1380.

[8] BALEVIC A,ROCKSTROH L,LI W,et al.Acceleration of a finite-difference time-domain method with general purpose GPUs(GPGPUs)[C].Proc.of International Conference on Computer and Information Technology,2008,1-2:291-294.

[9] PETERS H,SCHULZ-HILDEBRANDT O,LUTTENBERGER N.A novel sorting algorithm for many-core architectures based on adaptive bitonic sort[C].In:Parallel & Distributed Processing Symposium(IPDPS),2012 IEEE 26th International,2012.

[10] GROUP K O W.The opencl specification[EB/OL].(2011)[2015].http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          老色鬼久久亚洲一区二区| 亚洲高清视频在线观看| 亚洲区国产区| 欧美一区二区视频网站| 久久久精品欧美丰满| 国产精品日韩精品| 亚洲欧美激情视频在线观看一区二区三区| 亚洲特黄一级片| 亚洲高清不卡一区| 欧美激情第4页| 国产精品99久久久久久白浆小说| 欧美一区二区三区男人的天堂| 亚洲韩国一区二区三区| 怡红院精品视频| 亚洲国产va精品久久久不卡综合| 午夜精品视频在线观看一区二区| 欧美aaa级| 欧美一区二区高清| 亚洲国产精品日韩| 国产亚洲精久久久久久| 欧美日韩亚洲国产一区| 欧美午夜一区| 欧美激情片在线观看| 亚洲免费在线播放| 亚洲成色最大综合在线| 激情欧美亚洲| 久久亚洲一区二区三区四区| 亚洲免费成人av电影| 欧美日韩一区二区三区免费| 一本一本久久a久久精品牛牛影视| 日韩一区二区久久| 国产伦精品一区二区三区在线观看| 国产精品成av人在线视午夜片| 久久综合久久综合久久| 又紧又大又爽精品一区二区| 国产在线精品成人一区二区三区| 国产精品久久久久久影院8一贰佰| 一区二区久久久久| 激情一区二区| 欧美另类一区| 日韩一级免费| 欧美日韩一区成人| 国产麻豆成人精品| 亚洲欧美视频一区二区三区| 亚洲国产清纯| 久久免费午夜影院| 国产麻豆一精品一av一免费| 亚洲美女av电影| 欧美日韩国产在线播放网站| 亚洲三级毛片| 亚洲一区二区精品| 欧美电影资源| 亚洲国产精品va在线看黑人动漫| 91久久国产自产拍夜夜嗨| 亚洲影视中文字幕| 欧美三级视频在线| 久久人人97超碰人人澡爱香蕉| 另类图片国产| 久久久蜜桃精品| 欧美在线二区| 国产综合香蕉五月婷在线| 国产精品夜夜夜一区二区三区尤| 国产视频精品免费播放| 午夜性色一区二区三区免费视频| 六月婷婷久久| 一区电影在线观看| 国产精品一区二区三区久久| 麻豆精品视频在线观看| 欧美视频网站| 免费久久99精品国产自在现线| 亚洲精品在线观看视频| 国产精品久久久久久久久动漫| 国产欧美日韩专区发布| 精品999在线观看| 免费日韩视频| 激情综合激情| 91久久精品国产| 欧美精品久久久久久久免费观看| 欧美+日本+国产+在线a∨观看| 久久成人羞羞网站| 欧美日本亚洲韩国国产| 一区二区三区|亚洲午夜| 亚洲福利在线观看| 激情五月***国产精品| 一本色道久久综合亚洲精品小说| 国产日韩专区在线| 中文久久精品| 一区二区国产精品| 欧美深夜福利| 狠狠色狠狠色综合日日小说| 一本色道婷婷久久欧美| 久久久999| 午夜精品久久久久久99热软件| av不卡在线看| 亚洲区一区二区三区| 国产综合色产在线精品| 欧美三级午夜理伦三级中视频| 欧美午夜视频| 欧美人与禽猛交乱配视频| 午夜精品福利一区二区三区av| 在线日韩av片| 西西人体一区二区| 亚洲精品久久久久久久久久久久久| 欧美人妖另类| 精品成人在线视频| 韩日成人av| 国产欧美综合在线| 亚洲一区中文| 国产情人综合久久777777| 久久久久久久久岛国免费| 狼人天天伊人久久| 国内揄拍国内精品久久| 久久国产高清| 久久中文欧美| 99人久久精品视频最新地址| 欧美一区二区高清| 国产精品久久久久久久久果冻传媒| 欧美在线一级va免费观看| 亚洲国内精品在线| 亚洲毛片网站| 国产综合色在线视频区| 日韩网站在线| 欧美日韩免费一区| 亚洲欧洲日本一区二区三区| 久久影院午夜片一区| 亚洲激情小视频| 亚洲在线免费| 精品99一区二区| 日韩视频一区二区在线观看| 欧美主播一区二区三区| 蜜桃av久久久亚洲精品| 在线日本高清免费不卡| 激情久久久久久久久久久久久久久久| 亚洲一区在线免费观看| 久久精品国产亚洲高清剧情介绍| 国产偷自视频区视频一区二区| 国产精品大片免费观看| 欧美一区二区三区四区在线| 亚洲专区国产精品| 在线播放豆国产99亚洲| 欧美激情亚洲国产| 欧美日韩亚洲不卡| 亚洲美女免费精品视频在线观看| 亚洲一区二区成人在线观看| 国产午夜精品一区二区三区视频| 欧美丰满高潮xxxx喷水动漫| 亚洲国产欧美一区二区三区久久| 国产精品无人区| 国产精品视屏| 先锋影音网一区二区| 国产一区二区三区黄视频| 一区二区日韩精品| 亚洲精品影视在线观看| 久久久www免费人成黑人精品| 国产精品一区二区你懂的| 国产日产高清欧美一区二区三区| 欧美影院视频| 国产综合香蕉五月婷在线| 欧美成人第一页| 国产精品一区免费在线观看| 亚洲精品一二| 影音先锋亚洲精品| 亚洲欧美成人在线| 国内精品一区二区三区| 一区二区三区在线不卡| 国产精品亚洲视频| 欧美一级久久| 久久av资源网站| 一区二区亚洲| 欧美韩日一区二区| 国产乱码精品一区二区三区五月婷| 久久综合九色综合久99| 久久人人爽爽爽人久久久| 国产专区欧美专区| 国产精品黄色| 精品福利免费观看| 国产精品视频在线观看| 国产精品综合网站| 亚洲九九爱视频| 国产精品婷婷午夜在线观看| 亚洲免费福利视频| 欧美日韩国产在线看| 欧美一区二粉嫩精品国产一线天| 国产亚洲成av人片在线观看桃| 精品成人在线观看| 亚洲精品国产品国语在线app| 欧美aa在线视频| 午夜视频一区| 日韩亚洲一区在线播放| 欧美一区二区三区四区在线| 国产精品久久久一区二区三区| 欧美无乱码久久久免费午夜一区| 欧美三级网页| 欧美日本亚洲视频| 欧美插天视频在线播放| 久久综合五月| 亚洲精品三级| 亚洲影院色在线观看免费| 国产欧美一区二区三区沐欲| 国产午夜精品理论片a级探花| 欧美中文字幕| 久久精品91久久香蕉加勒比| 一本色道久久综合狠狠躁的推荐| 久久国产福利| 免费观看成人| 美日韩精品免费观看视频| 久久精品亚洲精品国产欧美kt∨| 亚洲另类在线视频| 亚洲视频香蕉人妖| 99国产精品久久久久久久久久| 国产夜色精品一区二区av| 国产精品久久久久久亚洲调教| 亚洲美女少妇无套啪啪呻吟| 91久久久久久| 欧美一区二区三区在线观看视频| 亚洲精品视频在线观看网站| 欧美视频网址| 亚洲人成亚洲人成在线观看图片| 午夜精品短视频| 欧美日韩在线视频首页| 国产精品久久久久9999高清| 欧美中文在线视频| 欧美激情2020午夜免费观看| 欧美国产亚洲精品久久久8v| 久久久亚洲欧洲日产国码αv| 日韩亚洲欧美一区二区三区| 国产美女精品视频| 亚洲一区二区免费在线| 国产日韩欧美精品在线| 亚洲黄色免费网站| 亚洲一区二区三区午夜| 国产精品入口| 欧美日韩国产成人精品| 午夜精品久久久久久久白皮肤| 欧美一区二区三区在线观看视频| 亚洲第一区在线观看| 国产色产综合产在线视频| 精品99一区二区三区| 性欧美暴力猛交69hd| 蜜桃视频一区| 亚洲精品黄网在线观看| 国产一区在线观看视频| 夜夜嗨av一区二区三区免费区| 玉米视频成人免费看| 亚洲激精日韩激精欧美精品| 国产欧美日韩不卡| 国产综合久久久久久| 91久久嫩草影院一区二区| 欧美精品一区二区三区久久久竹菊| 美女脱光内衣内裤视频久久网站| 久久精品国产v日韩v亚洲| 一本久久综合亚洲鲁鲁五月天| 极品日韩久久| 久久久久国产精品人| 亚洲国产精品t66y| 在线免费观看一区二区三区| 欧美日韩色综合| 欧美在线观看视频一区二区| 国产精品综合色区在线观看| 欧美国产91| 欧美日韩成人一区| 国产一区二区黄| 午夜精品一区二区三区在线视| 欧美性大战久久久久久久蜜臀| 欧美视频在线播放| 国产精品wwwwww| 蜜桃av久久久亚洲精品| 久久麻豆一区二区| 亚洲高清视频一区| 亚洲第一中文字幕在线观看| 亚洲精品午夜| 国产精品第2页| 麻豆成人综合网| 在线精品观看| 国产一区二区三区在线观看精品| 欧美日韩精品一区二区天天拍小说| 亚洲精品1区2区| 午夜精品久久99蜜桃的功能介绍| 欧美精品1区2区| 亚洲一区二区三区中文字幕在线| 久久精品国产精品亚洲精品| 韩日欧美一区| 1000精品久久久久久久久| 亚洲国产精品日韩| 亚洲美女精品成人在线视频| 极品裸体白嫩激情啪啪国产精品| 国产亚洲欧美另类一区二区三区| 久久久久国产精品麻豆ai换脸| 久久久99爱| 久久久亚洲国产美女国产盗摄| 日韩一区二区精品| 亚洲激情在线观看视频免费| 亚洲一区二区三区免费视频| 欧美成人免费va影院高清| 欧美精品日韩一本| 亚洲日本中文字幕| 欧美在线综合| 亚洲欧美自拍偷拍| 国外成人在线视频| 亚洲一区二区三区在线观看视频| 欧美日韩在线播放一区二区| 在线日韩视频| 国产日韩精品一区二区三区| 欧美一区二区三区在线观看视频| 欧美在线观看一区二区三区| 欧美高清视频一区二区三区在线观看| 国产色综合久久| 欧美aⅴ99久久黑人专区| 亚洲春色另类小说| 亚洲国产91| 亚洲图片欧美日产| 欧美大片第1页| 99ri日韩精品视频| 亚洲激情国产精品| 韩国三级电影久久久久久| 老牛影视一区二区三区| 国产私拍一区| 亚洲国产一区二区三区a毛片| 葵司免费一区二区三区四区五区| 国产乱肥老妇国产一区二| 亚洲电影免费观看高清完整版在线观看| 欧美成人午夜剧场免费观看| 亚洲一区日本| 久久久爽爽爽美女图片| 国产精品第2页| 国产精品视频免费| 一区二区高清视频| 国产一区二区三区直播精品电影|