两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于OpenCL與SoC-FPGA的K近鄰分類加速方法

文檔序號:8543494閱讀:558來源:國知局
一種基于OpenCL與SoC-FPGA的K近鄰分類加速方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于SoC-FPGA新型異構(gòu)計算系統(tǒng)的K近鄰分類技術(shù)的加速方法。
【背景技術(shù)】
[0002]K近鄰算法作為二十世紀(jì)十大經(jīng)典數(shù)據(jù)挖掘算法之一,以其精確、簡單、有效等優(yōu)點被廣泛應(yīng)用于文本分類、模式識別、圖像及空間分類等領(lǐng)域。K近鄰算法基于懶惰學(xué)習(xí),其基本思想是在已知訓(xùn)練集中找到距離每個待分類樣本最鄰近的K個參考樣本,根據(jù)這K個參考樣本中最多的類別決定待分類樣本的類別。然而K近鄰算法中涉及大量計算,特別當(dāng)與待分類樣本比較的訓(xùn)練集樣本較大時,會帶來很大的計算開銷。在大型分類系統(tǒng)中,訓(xùn)練集規(guī)模往往非常龐大,相應(yīng)的計算資源和存儲資源消耗都非常大,分類速度已成為K近鄰分類技術(shù)走向?qū)嵱玫囊粋€瓶頸,如何對K近鄰分類過程加速是目前該領(lǐng)域研宄的一個難題。
[0003]隨著現(xiàn)代電子技術(shù)的飛速發(fā)展,處理器的運算速度越來越快,近年來對K近鄰分類加速的研宄主要集中于基于GPU、FPGA等硬件加速方法上。FPGA擁有豐富的邏輯資源、算法模塊和嵌入式硬核模塊,以全數(shù)據(jù)流的形式進行處理,使用硬件以空間上并行的方法提升算法速度,適用于K近鄰分類技術(shù)中待分類樣本與訓(xùn)練集樣本的相似度計算以及K近鄰樣本的查找。利用FPGA實現(xiàn)對K近鄰分類技術(shù)進行加速是該領(lǐng)域的重要研宄方向。
[0004]經(jīng)過現(xiàn)有的技術(shù)文獻檢索發(fā)現(xiàn),利用FPGA加速K近鄰分類技術(shù)的文章采取的實現(xiàn)方式存在開發(fā)周期長、跨平臺移植性差、不適于多處理器異構(gòu)平臺協(xié)同加速等不足。2012 年,Hanaa M.Hussain 等在 NASA/ESA Conference on Adaptive Hardwareand Systems (AHS)上發(fā)表文章《An Adaptive Implementat1n of a DynamicallyReconfigurable K-Nearest Neighbour Classifier on FPGA)),米用動態(tài)局部重構(gòu)的方法在FPGA上實現(xiàn)了 K近鄰分類技術(shù)的加速,但他采用的開發(fā)方式基于傳統(tǒng)的VHDL/Verilog硬件編程語言,開發(fā)復(fù)雜度大,研發(fā)周期長,且研發(fā)程序只能在FPGA上使用,無法移植到其他架構(gòu)的處理器上。
[0005]2008年,Apple公司提出了第一個面向異構(gòu)系統(tǒng)通用目的并行編程的開放式免版稅標(biāo)準(zhǔn),全稱Open Computing Language (OpenCL),即開放式計算語言。OpenCL適用于不同處理器的協(xié)同并行計算,其支持的異構(gòu)協(xié)處理器包括CPU、GPU、DSP等,代碼通用性強,能輕松在不同設(shè)備端進行移植。2011年,Altera公司發(fā)布了 FPGA的OpenCL標(biāo)準(zhǔn)開發(fā)計劃,并于2013年推出了基于OpenCL框架的FPGA產(chǎn)品,將跨平臺并行編程標(biāo)準(zhǔn)OpenCL擴展到了 FPGA領(lǐng)域。
[0006]在編程模式上,F(xiàn)PGA執(zhí)行程序全部采用類C/C++風(fēng)格的OpenCL語言開發(fā),開發(fā)簡便,修改靈活,能大大縮短研發(fā)周期,減少產(chǎn)品維護和升級的研發(fā)成本;另一方面,新方法基于OpenCL架構(gòu),代碼可以實現(xiàn)跨平臺快速移植,適合擴展和應(yīng)用于多處理器異構(gòu)平臺的協(xié)同加速之中。同時,由于FPGA設(shè)備的精細粒度體系結(jié)構(gòu),編譯只生成所需的邏輯結(jié)構(gòu),降低了系統(tǒng)能耗,達到了高性能低功耗計算的目的。

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

[0007]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于SoC-FPGA新型異構(gòu)計算系統(tǒng)的K近鄰分類技術(shù)的加速方法,解決現(xiàn)有技術(shù)的K近鄰算法存在的運算量大、占用硬件資源多、功耗大和系統(tǒng)時延大等問題。
[0008]本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:一種基于OpenCL與SoC-FPGA的K近鄰分類加速方法,它包括以下步驟:
51:在OpenCL編程架構(gòu)下,構(gòu)建ARM主機端和FPGA設(shè)備端協(xié)作的SoC-FPGA異構(gòu)平臺模型,所述的ARM主機端與FPGA設(shè)備端通過AXI片內(nèi)總線連接;
52:在ARM主機端構(gòu)建控制作用的OpenCL主機程序,所述的主機程序?qū)Νh(huán)境參數(shù)進行配置,確定設(shè)備端平臺以及完成平臺初始化工作;
53:ARM主機端的主機程序創(chuàng)建內(nèi)核并且完成ARM主機端與FPGA設(shè)備端的內(nèi)存分配,向內(nèi)存中寫入數(shù)據(jù),通過參數(shù)傳遞的方式完成主機端與設(shè)備端的內(nèi)存映射;
54:ARM主機端的主機程序配置FPGA設(shè)備端的內(nèi)核程序,并且調(diào)用FPGA設(shè)備端的內(nèi)核程序,將訓(xùn)練集數(shù)據(jù)和待分類數(shù)據(jù)經(jīng)過SoC的AXI片內(nèi)總線傳輸至FPGA設(shè)備端,其中,所述的訓(xùn)練集數(shù)據(jù)存儲在全局內(nèi)存中,所述的待分類數(shù)據(jù)存儲在局部內(nèi)存中;
55:FPGA設(shè)備端包括至少兩個OpenCL內(nèi)核程序;所述的OpenCL內(nèi)核程序核包括第一內(nèi)核程序和第二內(nèi)核程序;所述的第一內(nèi)核程序負責(zé)并行地計算每個待分類數(shù)據(jù)距離每個訓(xùn)練集數(shù)據(jù)的歐氏距離,產(chǎn)生距離矩陣,并將數(shù)據(jù)傳輸至第二內(nèi)核程序進行處理;
56:FPGA設(shè)備端的第二內(nèi)核程序?qū)嚯x矩陣的每一行進行不完全排序,篩選出每行的最小K個距離,并找到相應(yīng)的訓(xùn)練集元素類型,傳回ARM主機端處理;
57:ARM主機端將找到的訓(xùn)練集元素類型進行類別統(tǒng)計,以頻率最高的類別對待分類數(shù)據(jù)進行歸類,完成整個K近鄰分類過程。
[0009]步驟S6中所述的排序為并行冒泡排序。
[0010]一種基于OpenCL與SoC-FPGA的K近鄰分類加速方法還包括一個釋放內(nèi)核與內(nèi)存資源步驟S8:在步驟S7完成之后,釋放所有內(nèi)核與內(nèi)存資源。
[0011]步驟S4所述的配置FPGA設(shè)備端的內(nèi)核程序包括配置工作組組數(shù)、工作組大小以及計算單元維度。
[0012]本發(fā)明的有益效果是:
(I)本發(fā)明根據(jù)K近鄰算法的可并行化特性,運用OpenCL標(biāo)準(zhǔn),實現(xiàn)K近鄰分類算法的FPGA并行優(yōu)化,并在ARM主機端和FPGA設(shè)備端形成系統(tǒng)級流水,能更好地處理具有大量分支跳轉(zhuǎn)結(jié)構(gòu)的程序,使得硬件資源得到充分利用,解決現(xiàn)有技術(shù)的基于OpenCL標(biāo)準(zhǔn)的異構(gòu)系統(tǒng)單純用設(shè)備端實現(xiàn)加速,沒有考慮挖掘主機端計算潛力的問題。
[0013](2)本發(fā)明采用的SoC-FPGA系統(tǒng)由兩部分子系統(tǒng)構(gòu)成,分別為ARM架構(gòu)子系統(tǒng)和FPGA架構(gòu)子系統(tǒng),由于兩個系統(tǒng)集成在同一塊芯片上,AXI片內(nèi)總線高帶寬特性將大大縮短主機與設(shè)備的通信時延,相比傳統(tǒng)的GPU-CPU異構(gòu)模式,系統(tǒng)時延更小,數(shù)據(jù)吞吐量更高;該方法不僅提升了 K近鄰算法的執(zhí)行速度,而且相比傳統(tǒng)的GPU異構(gòu)計算系統(tǒng),本發(fā)明功耗更低,獲得了更高的能量效率。
[0014](3)本發(fā)明通過合理配置計算位置,實現(xiàn)數(shù)據(jù)計算優(yōu)化:根據(jù)K近鄰分類算法的任務(wù)分配,計算密集度高且適合并行的距離矩陣計算以及距離排序部分以內(nèi)核程序形式在FPGA端執(zhí)行,類別統(tǒng)計以及分類等輕計算量且不易并行的部分在ARM端執(zhí)行。
[0015](4)由于FPGA設(shè)備的精細粒度體系結(jié)構(gòu),編譯只生成所需的邏輯結(jié)構(gòu),降低了系統(tǒng)能耗,達到了高性能低功耗計算的目的。
[0016](5)本發(fā)明通過合理配置數(shù)據(jù)存放的方式,實現(xiàn)數(shù)據(jù)訪存優(yōu)化=OpenCL標(biāo)準(zhǔn)所提供的內(nèi)存模型包括全局內(nèi)存、本地內(nèi)存以及私有內(nèi)存等,由于全局內(nèi)存擁有資源多但訪問速度慢,而本地內(nèi)存訪問速度快但資源較少,將數(shù)據(jù)量相對較少的待分類數(shù)據(jù)存儲至本地內(nèi)存,將數(shù)據(jù)量較大訓(xùn)練集數(shù)據(jù)存儲至全局內(nèi)存。
[0017](6)采用OpenCL標(biāo)準(zhǔn)開發(fā),系統(tǒng)可移植性強,兼容性強。
[0018](7) FPGA執(zhí)行程序全部采用類C/C++風(fēng)格的
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
涿鹿县| 泸水县| 密云县| 康乐县| 错那县| 澄江县| 布尔津县| 龙里县| 绍兴县| 增城市| 前郭尔| 衡水市| 西充县| 金塔县| 阜新市| 白山市| 威远县| 漠河县| 始兴县| 盐亭县| 绥中县| 保靖县| 巨鹿县| 和平县| 田林县| 双牌县| 鹤峰县| 陇南市| 双鸭山市| 阿克| 泰兴市| 墨竹工卡县| 柯坪县| 瑞昌市| 蓝田县| 泰来县| 绵竹市| 台北县| 山阴县| 桦川县| 高安市|