一種基于mic實(shí)現(xiàn)聚類算法的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種基于MIC實(shí)現(xiàn)聚類算法的方法及裝置,其中方法的具體實(shí)現(xiàn)過程為:將確定的MIC類數(shù)組和MIC點(diǎn)數(shù)組劃分為一個(gè)或一個(gè)以上的矩陣;對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算;統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果,當(dāng)MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)大于或等于預(yù)先設(shè)置的閾值時(shí),根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組,直至聚類完成;裝置的結(jié)構(gòu)包括接收單元、劃分單元、計(jì)算單元、統(tǒng)計(jì)處理單元和確定單元。該一種基于MIC實(shí)現(xiàn)聚類算法的方法及裝置與現(xiàn)有技術(shù)相比,使用了MIC協(xié)處理器,提高了運(yùn)算性能,實(shí)用性強(qiáng)。
【專利說明】-種基于MIC實(shí)現(xiàn)聚類算法的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,具體地說是一種實(shí)用性強(qiáng)、基于MIC實(shí)現(xiàn)聚類算 法的方法及裝置。
【背景技術(shù)】
[0002] 聚類分析又稱群分析,它是研究(樣品或指標(biāo))分類問題的一種統(tǒng)計(jì)分析方法,同 時(shí)也是數(shù)據(jù)挖掘的一個(gè)重要算法。聚類分析以相似性為基礎(chǔ),在一個(gè)聚類中的模式之間比 不在同一聚類中的模式之間具有更多的相似性。
[0003] K-means算法是聚類分析中的一種硬聚類算法,是典型的基于原型的目標(biāo)函數(shù)聚 類方法,K-means算法以數(shù)據(jù)點(diǎn)到原型的某種距離作為優(yōu)化的目標(biāo)函數(shù),利用函數(shù)求極值的 方法得到迭代運(yùn)算的調(diào)整規(guī)則。K-means算法以歐式距離作為相似度測度,是求對應(yīng)某一初 始聚類中心向量最優(yōu)分類,使得評價(jià)指標(biāo)最?。徊捎谜`差平方和準(zhǔn)則函數(shù)作為聚類準(zhǔn)則函 數(shù)。
[0004] 集成眾核技術(shù)MIC (Many Integrated Core)是Intel公司在2012年底推出的基 于x86架構(gòu)的高并發(fā)協(xié)處理器架構(gòu)。其產(chǎn)品系列名稱為Intel Xeon Phi。
[0005] 但是,現(xiàn)在還沒有一種方法,可以使用MIC優(yōu)化算法,使之能夠高效k-means算法, 更遑論處理任意規(guī)模的k-means算法。
[0006] 基于此,現(xiàn)提供一種基于MIC實(shí)現(xiàn)聚類算法的方法及裝置,該方法及裝置基于集 成眾核技術(shù)MIC實(shí)現(xiàn)聚類算法,實(shí)用性強(qiáng)。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實(shí)用性強(qiáng)、基于MIC實(shí)現(xiàn)聚類 算法的方法及裝置。
[0008] -種基于MIC實(shí)現(xiàn)聚類算法的方法,其具體實(shí)現(xiàn)過程為: 一、 開辟CPU端內(nèi)存,并根據(jù)該CPU端內(nèi)存設(shè)置MIC數(shù)組; 二、 將CPU內(nèi)存復(fù)制到MIC數(shù)組; 三、 將確定的MIC數(shù)組劃分為一個(gè)或一個(gè)以上16乘16的大小的矩陣;對不足16乘16 的矩陣,設(shè)置對應(yīng)矩陣行列的兩個(gè)標(biāo)志位,標(biāo)志位為16bit,其中每個(gè)bit對應(yīng)矩陣中行或 列,如存在該行或列,則該bit賦值為1,否則賦值為0 ; 四、 對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算,對不足16乘16的矩陣,在結(jié) 果累加時(shí),使用標(biāo)志位參與運(yùn)算,以獲得協(xié)處理器MIC矩陣運(yùn)算結(jié)果; 五、 統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果,當(dāng)MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)大于或等于預(yù)先設(shè)置的 閾值時(shí),根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組,直至聚類完成。
[0009] 所述步驟一中的CPU端內(nèi)存包括CPU點(diǎn)數(shù)組和CPU類數(shù)組,相對應(yīng)的,MIC數(shù)組包 括MIC點(diǎn)數(shù)組、MIC類數(shù)組,其具體的開辟過程為: 從輸入文件中獲取每行一組浮點(diǎn)數(shù)的二進(jìn)制或文本形式的信息,根據(jù)獲取的二進(jìn)制或 文本形式的信息,建立中央處理器CPU內(nèi)存相應(yīng)的CPU點(diǎn)數(shù)組和CPU類數(shù)組; 根據(jù)CPU點(diǎn)數(shù)組和CPU類數(shù)組,確定MIC點(diǎn)數(shù)組、MIC類數(shù)組。
[0010] 所述MIC點(diǎn)數(shù)組、MIC類數(shù)組確定過程為:將CPU點(diǎn)數(shù)組轉(zhuǎn)置變化后賦值給MIC點(diǎn) 數(shù)組,將CPU類數(shù)組直接賦值給MIC類數(shù)組。
[0011] 所述矩陣運(yùn)算前進(jìn)行初始化的步驟:設(shè)置元素個(gè)數(shù)與MIC點(diǎn)數(shù)組相同的聚類結(jié)果 數(shù)組,并初始化聚類結(jié)果數(shù)組各元素為-1。
[0012] 所述步驟五中統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果通過聚類結(jié)果數(shù)組實(shí)現(xiàn)。
[0013] 所述步驟五中聚類完成是指MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)小于預(yù)先設(shè)置的閾 值。
[0014] 所述步驟五中根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組的具體過程為:根據(jù)MIC矩 陣運(yùn)算結(jié)果更新CPU類數(shù)組,再直接將CPU類數(shù)組賦值給MIC類數(shù)組。
[0015] 一種基于MIC實(shí)現(xiàn)聚類算法的裝置,該裝置包括接收單元、劃分單元、計(jì)算單元、 統(tǒng)計(jì)處理單元和確定單元;其中, 接收單元,用于接收CPU處理的點(diǎn)數(shù)組和類數(shù)組; 劃分單元,用于將確定的MIC類數(shù)組和MIC點(diǎn)數(shù)組劃分為一個(gè)或一個(gè)以上16乘16的 大小的矩陣;對不足16乘16的矩陣,標(biāo)志位賦值為0,除標(biāo)志位以外的其他位賦值為1 ; 計(jì)算單元,用于對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算,對不足16乘16 的矩陣,在結(jié)果累加時(shí),使用標(biāo)志位參與運(yùn)算,以獲得協(xié)處理器MIC矩陣運(yùn)算結(jié)果; 統(tǒng)計(jì)處理單元,用于統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果,當(dāng)MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)大于或 等于預(yù)先設(shè)置的閾值時(shí),根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組,直至聚類完成; 確定單元,用于將CPU點(diǎn)數(shù)組轉(zhuǎn)置變化后賦值給MIC點(diǎn)數(shù)組,將CPU類數(shù)組直接賦值給 MIC類數(shù)組。
[0016] 本發(fā)明的一種基于MIC實(shí)現(xiàn)聚類算法的方法,具有以下優(yōu)點(diǎn): 該發(fā)明的一種基于MIC實(shí)現(xiàn)聚類算法的方法及裝置使用了 MIC協(xié)處理器,提高了運(yùn)算 性能;實(shí)現(xiàn)了對不規(guī)則的矩陣的聚類,使K-means聚類方法在MIC下實(shí)現(xiàn)了高效運(yùn)行;實(shí)用 性強(qiáng),適用范圍廣泛,易于推廣。
【專利附圖】
【附圖說明】
[0017] 附圖1為本發(fā)明基于MIC實(shí)現(xiàn)聚類算法的方法的流程圖。
[0018] 附圖2為本發(fā)明基于MIC實(shí)現(xiàn)聚類算法的裝置示意圖。
【具體實(shí)施方式】
[0019] 下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明。
[0020] 本發(fā)明提供一種基于MIC實(shí)現(xiàn)聚類算法的方法,如附圖1所示,其具體實(shí)現(xiàn)過程 為: 一、開辟CPU端內(nèi)存,并根據(jù)該CPU端內(nèi)存設(shè)置MIC數(shù)組。
[0021] 所述步驟一中的CPU端內(nèi)存包括CPU點(diǎn)數(shù)組和CPU類數(shù)組,相對應(yīng)的,MIC數(shù)組包 括MIC點(diǎn)數(shù)組、MIC類數(shù)組,其具體的開辟過程為: 從輸入文件中獲取每行一組浮點(diǎn)數(shù)的二進(jìn)制或文本形式的信息,根據(jù)獲取的二進(jìn)制或 文本形式的信息,建立中央處理器CPU內(nèi)存相應(yīng)的CPU點(diǎn)數(shù)組和CPU類數(shù)組。
[0022] 根據(jù)CPU點(diǎn)數(shù)組和CPU類數(shù)組,確定MIC點(diǎn)數(shù)組、MIC類數(shù)組。
[0023] 所述MIC點(diǎn)數(shù)組、MIC類數(shù)組確定過程為:將CPU點(diǎn)數(shù)組轉(zhuǎn)置變化后賦值給MIC點(diǎn) 數(shù)組,將CPU類數(shù)組直接賦值給MIC類數(shù)組。
[0024] 二、將CPU內(nèi)存復(fù)制到MIC數(shù)組。
[0025] 三、將確定的MIC數(shù)組劃分為一個(gè)或一個(gè)以上16乘16的大小的矩陣;對不足16 乘16的矩陣,設(shè)置對應(yīng)矩陣行列的兩個(gè)標(biāo)志位,標(biāo)志位為16bit,其中每個(gè)bit對應(yīng)矩陣中 行或列,如存在該行或列,則該bit賦值為1,否則賦值為0。
[0026] 在該步驟中,選擇16為計(jì)算維度,是由MIC硬件特性決定的,即因?yàn)镸IC的主要 運(yùn)算單元為512位寬的向量化單元,512位寬即對應(yīng)16個(gè)浮點(diǎn)數(shù)。使用標(biāo)志位參與運(yùn)算是 指,使用MIC專用函數(shù),在執(zhí)行累加函數(shù)時(shí),將標(biāo)志位作為參數(shù)傳入,即可計(jì)算出結(jié)果,即標(biāo) 志位為0的不進(jìn)行累加,標(biāo)志位為1的進(jìn)行累加。
[0027] 另外,MIC類數(shù)組和MIC點(diǎn)數(shù)組是在MIC內(nèi)存中完成的數(shù)組,只有在MIC上實(shí)現(xiàn)聚 類時(shí),才需要確定MIC類數(shù)組和MIC點(diǎn)數(shù)組。
[0028] 四、對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算,對不足16乘16的矩陣, 在結(jié)果累加時(shí),使用標(biāo)志位參與運(yùn)算,以獲得協(xié)處理器MIC矩陣運(yùn)算結(jié)果。
[0029] 這里,MIC類數(shù)組和MIC點(diǎn)數(shù)組劃分為16乘16的矩陣,MIC類數(shù)組的矩陣中行的 元素與MIC點(diǎn)數(shù)組列的元素按照矩陣乘法會(huì)進(jìn)行相乘,這里類似于矩陣乘法的形式,是指 將該部分相乘部分替換為求差的平方。
[0030] 以下以矩陣
【權(quán)利要求】
1. 一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于其具體實(shí)現(xiàn)過程為: 一、 開辟CPU端內(nèi)存,并根據(jù)該CPU端內(nèi)存設(shè)置MIC數(shù)組; 二、 將CPU內(nèi)存復(fù)制到MIC數(shù)組; 三、 將確定的MIC數(shù)組劃分為一個(gè)或一個(gè)以上16乘16的大小的矩陣;對不足16乘16 的矩陣,設(shè)置對應(yīng)矩陣行列的兩個(gè)標(biāo)志位,標(biāo)志位為16bit,其中每個(gè)bit對應(yīng)矩陣中行或 列,如存在該行或列,則該bit賦值為1,否則賦值為0 ; 四、 對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算,對不足16乘16的矩陣,在結(jié) 果累加時(shí),使用標(biāo)志位參與運(yùn)算,以獲得協(xié)處理器MIC矩陣運(yùn)算結(jié)果; 五、 統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果,當(dāng)MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)大于或等于預(yù)先設(shè)置的 閾值時(shí),根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組,直至聚類完成。
2. 根據(jù)權(quán)利要求1所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于:所述步驟 一中的CPU端內(nèi)存包括CPU點(diǎn)數(shù)組和CPU類數(shù)組,相對應(yīng)的,MIC數(shù)組包括MIC點(diǎn)數(shù)組、MIC 類數(shù)組,其具體的開辟過程為: 從輸入文件中獲取每行一組浮點(diǎn)數(shù)的二進(jìn)制或文本形式的信息,根據(jù)獲取的二進(jìn)制或 文本形式的信息,建立中央處理器CPU內(nèi)存相應(yīng)的CPU點(diǎn)數(shù)組和CPU類數(shù)組; 根據(jù)CPU點(diǎn)數(shù)組和CPU類數(shù)組,確定MIC點(diǎn)數(shù)組、MIC類數(shù)組。
3. 根據(jù)權(quán)利要求2所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于:所述MIC點(diǎn) 數(shù)組、MIC類數(shù)組確定過程為:將CPU點(diǎn)數(shù)組轉(zhuǎn)置變化后賦值給MIC點(diǎn)數(shù)組,將CPU類數(shù)組 直接賦值給MIC類數(shù)組。
4. 根據(jù)權(quán)利要求1?3中任一所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于: 所述矩陣運(yùn)算前進(jìn)行初始化的步驟:設(shè)置元素個(gè)數(shù)與MIC點(diǎn)數(shù)組相同的聚類結(jié)果數(shù)組,并 初始化聚類結(jié)果數(shù)組各元素為-1。
5. 根據(jù)權(quán)利要求4所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于:所述步驟 五中統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果通過聚類結(jié)果數(shù)組實(shí)現(xiàn)。
6. 根據(jù)權(quán)利要求4所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于:所述步驟 五中根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組的具體過程為:根據(jù)MIC矩陣運(yùn)算結(jié)果更新CPU 類數(shù)組,再直接將CPU類數(shù)組賦值給MIC類數(shù)組。
7. 根據(jù)權(quán)利要求4所述的一種基于MIC實(shí)現(xiàn)聚類算法的方法,其特征在于:所述步驟 五中聚類完成是指MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)小于預(yù)先設(shè)置的閾值。
8. -種基于MIC實(shí)現(xiàn)聚類算法的裝置,其特征在于:該裝置包括接收單元、劃分單元、 計(jì)算單元、統(tǒng)計(jì)處理單元和確定單元;其中, 接收單元,用于接收CPU處理的點(diǎn)數(shù)組和類數(shù)組; 劃分單元,用于將確定的MIC類數(shù)組和MIC點(diǎn)數(shù)組劃分為一個(gè)或一個(gè)以上16乘16的 大小的矩陣;對不足16乘16的矩陣,標(biāo)志位賦值為0,除標(biāo)志位以外的其他位賦值為1 ; 計(jì)算單元,用于對各劃分的矩陣,按照矩陣乘法的形式進(jìn)行矩陣運(yùn)算,對不足16乘16 的矩陣,在結(jié)果累加時(shí),使用標(biāo)志位參與運(yùn)算,以獲得協(xié)處理器MIC矩陣運(yùn)算結(jié)果; 統(tǒng)計(jì)處理單元,用于統(tǒng)計(jì)MIC矩陣運(yùn)算結(jié)果,當(dāng)MIC矩陣運(yùn)算結(jié)果中改變的點(diǎn)數(shù)大于或 等于預(yù)先設(shè)置的閾值時(shí),根據(jù)MIC矩陣運(yùn)算結(jié)果更新MIC類數(shù)組,直至聚類完成; 確定單元,用于將CPU點(diǎn)數(shù)組轉(zhuǎn)置變化后賦值給MIC點(diǎn)數(shù)組,將CPU類數(shù)組直接賦值給 MIC類數(shù)組。
【文檔編號(hào)】G06F17/16GK104360985SQ201410555944
【公開日】2015年2月18日 申請日期:2014年10月20日 優(yōu)先權(quán)日:2014年10月20日
【發(fā)明者】王恩東, 沈鉑, 王婭娟, 張清 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司