亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法

文檔序號(hào):8528478閱讀:916來(lái)源:國(guó)知局
基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及數(shù)據(jù)挖掘技術(shù)領(lǐng)域,尤其涉及一種基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]K-means算法作為最常用的聚類算法,以其簡(jiǎn)單、有效等優(yōu)點(diǎn)被大量應(yīng)用于模式識(shí)另IJ、機(jī)器學(xué)習(xí)及數(shù)據(jù)挖掘等領(lǐng)域,具體如自動(dòng)文獻(xiàn)分類整理、神經(jīng)網(wǎng)絡(luò)的基函數(shù)中心確定、核磁共振圖像分割處理等。K-means聚類屬于無(wú)監(jiān)督學(xué)習(xí),其流程如圖1所示,基本思想是以空間中K個(gè)質(zhì)心為基準(zhǔn),通過(guò)樣本點(diǎn)離各個(gè)質(zhì)心的距離對(duì)樣本進(jìn)行歸類,并計(jì)算當(dāng)前各類的新質(zhì)心。多次迭代更新聚類質(zhì)心,直到質(zhì)心收斂為主。K-means聚類過(guò)程示意圖如圖2所示。從算法過(guò)程中不難發(fā)現(xiàn)K-means中涉及大量計(jì)算,特別涉及樣本點(diǎn)與質(zhì)心的距離計(jì)算以及更新質(zhì)心運(yùn)算時(shí),會(huì)帶來(lái)很大的計(jì)算開(kāi)銷。在實(shí)際的數(shù)據(jù)挖掘任務(wù)中,樣本規(guī)模往往非常龐大,相應(yīng)的計(jì)算資源和存儲(chǔ)資源消耗都非常大,由于FPGA內(nèi)部資源有限,如何對(duì)K-means聚類過(guò)程進(jìn)行時(shí)間和空間上的優(yōu)化是目前該領(lǐng)域研宄的一個(gè)難題。
[0003]通過(guò)現(xiàn)有文獻(xiàn)搜索,發(fā)現(xiàn)利用FPGA優(yōu)化K-means聚類技術(shù)的文章主要集中在時(shí)間優(yōu)化方面,采取的實(shí)現(xiàn)方式存在開(kāi)發(fā)周期長(zhǎng)、跨平臺(tái)移植性差、不適于多處理器異構(gòu)平臺(tái)協(xié)同加速等不足。Kutty,Boussaid 等人于 2013 年在 Internat1nal Symposium on Circuitsand Systems (ISCAS)上發(fā)表文章〈〈A high speed configurable FPGA architecture fork-mean clustering)),采用全局可配置的方法在FPGA上實(shí)現(xiàn)了 Kneans聚類算法的加速。這種傳統(tǒng)的HDL硬件編程語(yǔ)言進(jìn)行開(kāi)發(fā)使開(kāi)發(fā)人員將大量精力花在時(shí)序邏輯等開(kāi)發(fā)難度大的模塊,無(wú)法專注于算法本身,造成開(kāi)發(fā)效率低下。另一方面,由于HDL硬件語(yǔ)言只能針對(duì)FPGA平臺(tái)進(jìn)行開(kāi)發(fā),造成系統(tǒng)的可移植性和兼容性低。
[0004]2008年,Apple公司提出了第一個(gè)面向異構(gòu)系統(tǒng)通用目的并行編程的開(kāi)放式免版稅標(biāo)準(zhǔn),全稱Open Computing Language (OpenCL),即開(kāi)放式計(jì)算語(yǔ)言。OpenCL適用于不同處理器的協(xié)同并行計(jì)算,其支持的異構(gòu)協(xié)處理器包括CPU、GPU、DSP等,代碼通用性強(qiáng),能輕松在不同設(shè)備端進(jìn)行移植。2011年,Altera公司發(fā)布了 FPGA的OpenCL標(biāo)準(zhǔn)開(kāi)發(fā)計(jì)劃,并于2013年推出了基于OpenCL框架的FPGA產(chǎn)品,將跨平臺(tái)并行編程標(biāo)準(zhǔn)OpenCL擴(kuò)展到了 FPGA領(lǐng)域。
[0005]在編程模式上,F(xiàn)PGA執(zhí)行程序全部采用類C/C++風(fēng)格的OpenCL語(yǔ)言開(kāi)發(fā),開(kāi)發(fā)簡(jiǎn)便,修改靈活,能大大縮短研發(fā)周期,減少產(chǎn)品維護(hù)和升級(jí)的研發(fā)成本;另一方面,新方法基于OpenCL架構(gòu),代碼可以實(shí)現(xiàn)跨平臺(tái)快速移植,適合擴(kuò)展和應(yīng)用于多處理器異構(gòu)平臺(tái)的協(xié)同加速之中。同時(shí),由于FPGA設(shè)備引入內(nèi)核自重構(gòu)機(jī)制,編譯時(shí)能充分利用Altera公司提供的針對(duì)FPGA-OpenCL開(kāi)發(fā)的優(yōu)化技術(shù),達(dá)到了充分挖掘利用FPGA硬件資源的目的。

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

[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種提升了 K-means聚類算法的執(zhí)行速度、獲得了更高的能量效率的基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法,解決現(xiàn)有技術(shù)的針對(duì)已有的K-means聚類算法存在的運(yùn)算量大,占用硬件資源多,功耗大,系統(tǒng)時(shí)延大等問(wèn)題。
[0007]本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法,它包括以下步驟:
51:在OpenCL編程架構(gòu)下,構(gòu)建ARM主機(jī)端和FPGA設(shè)備端協(xié)作的SoC-FPGA異構(gòu)平臺(tái)模型,ARM主機(jī)端對(duì)環(huán)境參數(shù)進(jìn)行配置,完成初始化;所述的ARM主機(jī)端與FPGA設(shè)備端通過(guò)AXI片內(nèi)總線連接;
52:ARM主機(jī)端構(gòu)建OpenCL主機(jī)程序,主機(jī)程序創(chuàng)建內(nèi)核,完成ARM主機(jī)端與OpenCL設(shè)備端的內(nèi)存分配,并向內(nèi)存中寫(xiě)入數(shù)據(jù),通過(guò)參數(shù)傳遞的方式完成ARM主機(jī)端與OpenCL設(shè)備端的內(nèi)存映射;
53:ARM主機(jī)端的主機(jī)程序配置FPGA設(shè)備端工作組組數(shù)、工作組大小以及計(jì)算單元維度,并調(diào)用FPGA端的內(nèi)核程序,將樣本集數(shù)據(jù)和初始質(zhì)心數(shù)據(jù)經(jīng)過(guò)AXI片內(nèi)總線傳輸至FPGA設(shè)備端,其中,所述的樣本集數(shù)據(jù)存儲(chǔ)在全局內(nèi)存中,所述的質(zhì)心數(shù)據(jù)存儲(chǔ)在局部?jī)?nèi)存中;
54:FPGA設(shè)備端構(gòu)建第一 OpenCL內(nèi)核程序,所述的第一 OpenCL內(nèi)核程序并行流水地計(jì)算每個(gè)樣本集數(shù)據(jù)到每個(gè)質(zhì)心的歐式距離,產(chǎn)生一個(gè)距離矩陣;
55:FPGA設(shè)備端自重構(gòu)第二 OpenCL內(nèi)核程序,所述的第二 OpenCL內(nèi)核程序接收第一OpenCL內(nèi)核程序產(chǎn)生的距離矩陣,對(duì)于矩陣中的每行數(shù)據(jù)運(yùn)用并歸查找的方法并行處理距離矩陣的每行數(shù)據(jù),篩選出每行最小的元素并記錄其對(duì)應(yīng)質(zhì)心,完成樣本集的歸類處理;
56:FPGA設(shè)備端自重構(gòu)第三OpenCL內(nèi)核程序,所述的第三OpenCL內(nèi)核程序采用并行方式對(duì)每個(gè)質(zhì)心簇中的樣本點(diǎn)距離進(jìn)行累加,統(tǒng)計(jì)出每個(gè)質(zhì)心簇中樣本點(diǎn)個(gè)數(shù),并將數(shù)據(jù)結(jié)果通過(guò)AXI總線傳回ARM主機(jī)端;
57:ARM主機(jī)端的主機(jī)程序通過(guò)各個(gè)質(zhì)心簇的距離累加和分別除以各自的樣本點(diǎn)數(shù)量,計(jì)算出新質(zhì)心數(shù)據(jù);
58:ARM主機(jī)端的主機(jī)程序?qū)⑿沦|(zhì)心與原質(zhì)心進(jìn)行做差比較:
(1)若結(jié)果大于給定標(biāo)準(zhǔn),則繼續(xù)進(jìn)行聚類迭代,跳轉(zhuǎn)至步驟S2;
(2)若結(jié)果小于給定標(biāo)準(zhǔn),表明質(zhì)心收斂,則不再進(jìn)行聚類迭代,整個(gè)K-means聚類任務(wù)完成。
[0008]基于SoC-FPGA的自重構(gòu)K-means聚類技術(shù)實(shí)現(xiàn)方法還包括一個(gè)釋放內(nèi)核與內(nèi)存資源步驟S9:在步驟S8完成之后,釋放所有內(nèi)核與內(nèi)存資源。
[0009]步驟S8所述的將新質(zhì)心與原質(zhì)心進(jìn)行做差比較為將新質(zhì)心數(shù)據(jù)與原質(zhì)心數(shù)據(jù)用方差表征差異程度;所述的給定標(biāo)準(zhǔn)為已知閾值。
[0010]本發(fā)明的有益效果是:
(I)本發(fā)明在計(jì)算過(guò)程中針對(duì)FPGA內(nèi)部資源不足的問(wèn)題,設(shè)計(jì)了 FPGA設(shè)備端的內(nèi)核自重構(gòu)機(jī)制,使內(nèi)核模塊根據(jù)當(dāng)前任務(wù)進(jìn)度分時(shí)動(dòng)態(tài)載入FPGA,從而優(yōu)化了 FPGA硬件資源的利用效率;解決現(xiàn)有技術(shù)提供的針對(duì)FPGA-OpenCL開(kāi)發(fā)的優(yōu)化方法包括向量化和流水線復(fù)制等技術(shù),雖然能使系統(tǒng)獲得更強(qiáng)大的計(jì)算能力,但硬件資源占用率升高、甚至無(wú)法配置等冋題。
[0011](2)本發(fā)明采用的SoC-FPGA系統(tǒng)由兩部分子系統(tǒng)構(gòu)成,分別為ARM架構(gòu)子系統(tǒng)和FPGA架構(gòu)子系統(tǒng),由于兩個(gè)系統(tǒng)集成在同一塊芯片上,AXI片內(nèi)總線高帶寬特性將大大縮短主機(jī)與設(shè)備的通信時(shí)延,提高數(shù)據(jù)吞吐量。
[0012](3)本發(fā)明通過(guò)合理配置計(jì)算位置,實(shí)現(xiàn)數(shù)據(jù)計(jì)算優(yōu)化:根據(jù)K-means聚類算法的特性,計(jì)算密集度高且適合并行的距離矩陣計(jì)算、樣本歸類、距離累加及樣本數(shù)量統(tǒng)計(jì)等模塊以內(nèi)核程序形式在FPGA端執(zhí)行,而質(zhì)心更新及迭代控制等輕計(jì)算量且不易并行的模塊在ARM端執(zhí)行。
[0013](4)由于FPGA設(shè)備的精細(xì)粒度體系結(jié)構(gòu),編譯只生成所需的邏輯結(jié)構(gòu),降低了系統(tǒng)能耗,達(dá)到了高性能低功耗計(jì)算的目的。
[0014](5)本發(fā)明通過(guò)合理配置數(shù)據(jù)存放的方式,實(shí)現(xiàn)數(shù)據(jù)訪存優(yōu)化:0penCL標(biāo)準(zhǔn)所提供的內(nèi)存模型包括全局內(nèi)存、本地內(nèi)存以及私有內(nèi)存等,由于全局內(nèi)存擁有資源多但訪問(wèn)速度慢,而本地內(nèi)存訪問(wèn)速度快但資源較少,將數(shù)據(jù)量相對(duì)較少的待分類數(shù)據(jù)存儲(chǔ)至本地內(nèi)存,將數(shù)據(jù)量較大訓(xùn)練集數(shù)據(jù)存儲(chǔ)至全局內(nèi)存。
[0015](6)采用OpenCL標(biāo)準(zhǔn)開(kāi)發(fā),系統(tǒng)可移植性強(qiáng),兼容性強(qiáng)。
[0016](7) FPGA執(zhí)行程序全部采用類C/C++風(fēng)格的OpenCL語(yǔ)言開(kāi)發(fā),開(kāi)發(fā)簡(jiǎn)便,修改靈活,能大大縮短研發(fā)周期,減少產(chǎn)品維護(hù)和升級(jí)的研發(fā)成本。
【附圖說(shuō)明
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1