一種基于cuda實現聚類的方法及裝置制造方法
【專利摘要】本申請公開了一種基于CUDA實現聚類的方法及裝置,包括:將確定的計算統一設備架構(CUDA)類數組和CUDA點數組劃分為至少一個16*16的大小的矩陣;對不足16乘16的矩陣,賦值標志位為0,其他位為1;對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算;對不足16*16的矩陣,在結果累加時,乘上標志位,以獲得GPU矩陣運算結果;統計GPU矩陣運算結果,當矩陣運算結果中改變的點數不小于預先設置的閾值時,根據矩陣運算結果更新CUDA類數組,直至聚類完成。本發明通過劃分確定的CUDA類數組和CUDA點數組為16*16的矩陣;對不足16*16的矩陣,賦值標志位為0,其他位為1,在結果累加時,乘上標志位,以獲得GPU矩陣運算結果。實現了對不規則的矩陣的聚類在CUDA下實現高效運行。
【專利說明】-種基于CUDA實現聚類的方法及裝置
【技術領域】
[0001] 本申請涉及數據處理技術,尤指一種基于計算統一設備架構(CUDA)實現聚類的 方法及裝置。
【背景技術】
[0002] 聚類分析又稱群分析,它是研究(樣品或指標)分類問題的一種統計分析方法,同 時也是數據挖掘的一個重要算法。聚類分析以相似性為基礎,在一個聚類中的模式之間比 不在同一聚類中的模式之間具有更多的相似性。
[0003] K-means算法是聚類分析中的一種硬聚類算法,是典型的基于原型的目標函數聚 類方法,K-means算法以數據點到原型的某種距離作為優化的目標函數,利用函數求極值的 方法得到迭代運算的調整規則。K-means算法以歐式距離作為相似度測度,是求對應某一初 始聚類中心向量最優分類,使得評價指標最小;采用誤差平方和準則函數作為聚類準則函 數。
[0004] 計算統一設備架構(Compute Unified Device Architecture,簡稱 CUDA)是英偉 達(NVIDIA)公司推出的并行計算架構,該架構通過利用圖形處理器(GPU)的處理能力,能 夠大幅提升計算性能。其中程序代碼通常采用C語言的超集CUDA C編寫。該技術封裝了 使用GPU的細節,使用類似C語言的方式為使用者提供較簡單利用GPU的編程體驗。該技 術可以利用GPU的眾核特性,大幅加速并行化的應用。
[0005] 目前,已經出現一些使用K-means聚類方法對CUDA進行優化的方法,并取得了不 錯的效果。這些方法大致是將中央處理器(CPU)的點數組經過轉置處理后賦值給CUDA點 數組,CPU類數組直接賦值給CUDA類數組,通過對K-means方法進行修改,對矩陣維度為2 的冪的矩陣,尤其常見的維度為32、64、128等矩陣,使用類似于矩陣乘法的形式(按照矩陣 相乘的方式進行矩陣運算,只是將矩陣元素的乘操作改為求差的平方)進行矩陣運算,通 過統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的點數大于或等于預先設置的閾值 時,根據GPU矩陣運算結果更新CUDA類數組,否則,完成聚類。但是,現有使用K-means聚 類方法對CUDA進行優化的方法中,僅針對規則矩陣(指矩陣維度為2的冪的矩陣,尤其常 見的維度為32、64、128等矩陣)進行優化處理,對于維度不規則的矩陣,無法利用CUDA進 行優化處理,使K-means聚類方法在CUDA下實現高效運行。
【發明內容】
[0006] 為了解決上述問題,本發明提供一種基于CUDA實現聚類的方法及裝置,能夠支持 不規則矩陣的聚類,實現K-means聚類方法在CUDA下的高效運行。
[0007] 為了達到本發明的目的,本申請提供一種基于CUDA實現聚類的方法包括:
[0008] 將確定的計算統一設備架構CUDA類數組和CUDA點數組劃分為一個或一個以上16 乘16的大小的矩陣;對不足16乘16的矩陣,標志位賦值為0,除標志位以外的其他位賦值 為1 ;
[0009] 對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算,對不足16乘16的矩 陣,在結果累加時,乘上標志位,以獲得圖形處理器GPU矩陣運算結果;
[0010] 統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的點數大于或等于預先設置 的閾值時,根據GPU矩陣運算結果更新CUDA類數組,直至聚類完成。
[0011] 進一步地,該方法之前還包括:
[0012] 從輸入文件中獲取每行一組浮點數的二進制或文本形式的信息,根據獲取的二進 制或文本形式的信息,建立中央處理器CPU內存相應的CPU點數組和CPU類數組;
[0013] 根據CPU點數組和CPU類數組,確定CUDA點數組、CUDA類數組。
[0014] 進一步地,根據CPU內存相應的數組,確定的GPU端CUDA點數組、CUDA類數組具 體包括:將CPU點數組轉置變化后賦值給CUDA點數組,將CPU類數組直接賦值給CUDA類數 組。
[0015] 進一步地,統計GPU矩陣運算結果通過聚類結果數組實現統計。
[0016] 進一步地,該方法之前還包括:預先設置元素個數與CUDA點數組相同的聚類結果 數組,并初始化聚類結果數組各元素為-1。
[0017] 另一方面,本申請還提供一種基于CUDA實現聚類的裝置,包括:劃分單元、計算單 元和統計處理單元;其中,
[0018] 劃分單元,用于將確定的計算統一設備架構CUDA類數組和CUDA點數組劃分為一 個或一個以上16乘16的大小的矩陣;對不足16乘16的矩陣,標志位賦值為0,除標志位 以外的其他位賦值為1 ;
[0019] 計算單元,用于對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算,對不 足16乘16的矩陣,在結果累加時,乘上標志位,以獲得圖形處理器GPU矩陣運算結果;
[0020] 統計處理單元,用于統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的點數大 于或等于預先設置的閾值時,根據GPU矩陣運算結果更新CUDA類數組,直至聚類完成。
[0021] 進一步地,該裝置還包括接收單元和確定單元,
[0022] 接收單元,用于接收CPU處理的點數組和類數組;
[0023] 確定單元,用于將CPU點數組轉置變化后賦值給CUDA點數組,將CPU類數組直接 賦值給CUDA類數組。
[0024] 與現有技術相比,本發明提供的技術方案,包括:將確定的計算統一設備架構 (CUDA)類數組和CUDA點數組劃分為一個或一個以上16乘16的大小的矩陣;對不足16乘 16的矩陣,標志位賦值為0,除標志位以外的其他位賦值為1 ;對各劃分的矩陣,按照類似于 矩陣乘法的形式進行矩陣運算,對不足16乘16的矩陣,在結果累加時,乘上標志位,以獲得 圖形處理器(GPU)矩陣運算結果;統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的 點數大于或等于預先設置的閾值時,根據GPU矩陣運算結果更新CUDA類數組,直至聚類完 成。本發明通過劃分確定的CUDA類數組和CUDA點數組為16乘16的大小的矩陣;對不足 16乘16的矩陣,標志位賦值為0,除標志位以外的其他位賦值為1 ;對不足16乘16的矩陣, 在結果累加時,乘上標志位,以獲得GPU矩陣運算結果。實現了對不規則的矩陣的聚類,使 K-means聚類方法在CUDA下實現了高效運行。
【專利附圖】
【附圖說明】
[0025] 附圖用來提供對本申請技術方案的進一步理解,并且構成說明書的一部分,與本 申請的實施例一起用于解釋本申請的技術方案,并不構成對本申請技術方案的限制。
[0026] 圖1為本發明基于CUDA實現聚類的方法的流程圖;
[0027] 圖2為本發明基于CUDA實現聚類的裝置的結構框圖。
【具體實施方式】
[0028] 為使本申請的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本申請 的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中 的特征可以相互任意組合。
[0029] 圖1為本發明基于CUDA實現聚類的方法的流程圖,如圖1所示,包括:
[0030] 步驟100、將確定的計算統一設備架構(CUDA)類數組和CUDA點數組劃分為一個或 一個以上16乘16的大小的矩陣;對不足16乘16的矩陣,標志位賦值為0,除標志位以外 的其他位賦值為1 ;
[0031] 需要說明的是,CUDA類數組和CUDA點數組是在GPU內存中完成的數組,只有在 GPU上實現聚類時,才需要確定CUDA類數組和CUDA點數組。
[0032] 步驟101、對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算,對不足16 乘16的矩陣,在結果累加時,乘上標志位,以獲得圖形處理器(GPU)矩陣運算結果。這里, CUDA類數組和CUDA點數組劃分為16乘16的矩陣,CUDA類數組的矩陣中行的元素與CUDA 點數組列的元素按照矩陣乘法會進行相乘,這里類似于矩陣乘法的形式,是指將該部分相 乘部分替換為求差的平方。
[0033] 以下以矩陣
【權利要求】
1. 一種基于CUDA實現聚類的方法,其特征在于,包括: 將確定的計算統一設備架構CUDA類數組和CUDA點數組劃分為一個或一個以上16乘 16的大小的矩陣;對不足16乘16的矩陣,標志位賦值為0,除標志位以外的其他位賦值為 1 ; 對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算,對不足16乘16的矩陣, 在結果累加時,乘上標志位,以獲得圖形處理器GPU矩陣運算結果; 統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的點數大于或等于預先設置的閾 值時,根據GPU矩陣運算結果更新CUDA類數組,直至聚類完成。
2. 根據權利要求1所述的方法,其特征在于,該方法之前還包括: 從輸入文件中獲取每行一組浮點數的二進制或文本形式的信息,根據獲取的二進制或 文本形式的信息,建立中央處理器CPU內存相應的CPU點數組和CPU類數組; 根據CPU點數組和CPU類數組,確定CUDA點數組、CUDA類數組。
3. 根據權利要求2所述的方法,其特征在于,所述根據CPU內存相應的數組,確定的 GPU端CUDA點數組、CUDA類數組具體包括:將CPU點數組轉置變化后賦值給CUDA點數組, 將CPU類數組直接賦值給CUDA類數組。
4. 根據權利要求1?3任一項所述的方法,其特征在于,所述統計GPU矩陣運算結果通 過聚類結果數組實現統計。
5. 根據權利要求4所述的方法,其特征在于,該方法之前還包括:預先設置元素個數與 CUDA點數組相同的聚類結果數組,并初始化聚類結果數組各元素為-1。
6. -種基于CUDA實現聚類的裝置,其特征在于,包括:劃分單元、計算單元和統計處理 單元;其中, 劃分單元,用于將確定的計算統一設備架構CUDA類數組和CUDA點數組劃分為一個或 一個以上16乘16的大小的矩陣;對不足16乘16的矩陣,標志位賦值為0,除標志位以外 的其他位賦值為1 ; 計算單元,用于對各劃分的矩陣,按照類似于矩陣乘法的形式進行矩陣運算,對不足16 乘16的矩陣,在結果累加時,乘上標志位,以獲得圖形處理器GPU矩陣運算結果; 統計處理單元,用于統計GPU矩陣運算結果,當GPU矩陣運算結果中改變的點數大于或 等于預先設置的閾值時,根據GPU矩陣運算結果更新CUDA類數組,直至聚類完成。
7. 根據權利要求6所述的裝置,其特征在于,該裝置還包括接收單元和確定單元, 接收單元,用于接收CPU處理的點數組和類數組; 確定單元,用于將CPU點數組轉置變化后賦值給CUDA點數組,將CPU類數組直接賦值 給⑶DA類數組。
【文檔編號】G06F17/30GK104123372SQ201410360455
【公開日】2014年10月29日 申請日期:2014年7月25日 優先權日:2014年7月25日
【發明者】沈鉑, 張剛, 邱學侃, 胡金輝, 王婭娟, 張清 申請人:浪潮(北京)電子信息產業有限公司