專利名稱:用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機領域,特別是涉及一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法和 系統(tǒng)。
背景技術:
在大規(guī)模并行計算中,很重要一類計算是矩陣或向量的計算。通常描述矩陣采用 (Rowkey, colkey, value)的三元組(其中Rowkey, colkey分別為行標、列標,va Iue為實 際存儲的數(shù)據(jù)內(nèi)容),這樣可以采用稀疏的存儲方式,從而減少存儲空間。用戶再將矩陣按 照行(Rowkey)或者列(colkey)進行劃分,將數(shù)據(jù)散布到多個計算結點(也即計算服務器) 上,從而達到并行計算的目的。通常為了唯一標識矩陣中每個數(shù)據(jù)元素,輸入的Rowkey和 colkey采用位數(shù)較多(64位,128位)的簽名。而在實際的計算過程中,Rowkey和colkey 僅作為一個下標,并不需要很多的位數(shù)。因此為了減少節(jié)點內(nèi)存存儲空間,并且方便計算時 順序訪問,常常要對key和colkey進行連續(xù)的id化,即將Rowkey和colkey都轉換為連續(xù) 的O-N的整數(shù)列。
現(xiàn)有技術中,存在一種對矩陣數(shù)據(jù)的的存儲標識進行id化的方法是串行id化方 法,即采用一個計算節(jié)點,逐個獲取矩陣中的數(shù)據(jù)元素將其行標和列標進行id化,但是該 種方法處理效率低,時間長。發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上 述問題的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的裝置和相應的一種用于連續(xù)化矩陣數(shù)據(jù)元 素標識的方法。
依據(jù)本發(fā)明的一個方面,提供了一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法,包 括
針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié) 點的矩陣分塊的數(shù)據(jù)元素;
每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中 的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù) 據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標 識相應的第一標識;
每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算 節(jié)點。
可選的,所述每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩 陣分塊的數(shù)據(jù)元素包括
每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的數(shù)據(jù)元素??蛇x的,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標識??蛇x的,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識包括每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識;每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識??蛇x的,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點包括每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識通知給其他計算節(jié)點??蛇x的,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識??蛇x的,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識包括每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識;每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識??蛇x的,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點包括每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點??蛇x的,所述對向量進行連續(xù)化包括每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點;每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識;每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。依據(jù)本發(fā)明的另一個方面,提供一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng),包括
N個計算節(jié)點;
所述每個參與計算的計算節(jié)點包括
數(shù)據(jù)讀取模塊,適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié) 點的矩陣分塊的數(shù)據(jù)元素;
散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則, 將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余 N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化, 獲得與每個數(shù)據(jù)標識相應的第一標識;
通知模塊,適于每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通 知給其他計算節(jié)點。
可選的,所述數(shù)據(jù)讀取模塊進一步適于
每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的 數(shù)據(jù)元素。
可選的,當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素時,所 述散步和接收模塊包括
列散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則, 將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1 個計算節(jié)點發(fā)送的列標識。
可選的,所述連續(xù)化模塊包括
第一行連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識 向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識;
第一列連續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的列標識進行去重并生 成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
可選的,所述通知模塊包括
第一通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應 關系,將第一列標識通知給其他計算節(jié)點。
可選的,當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按列分塊的數(shù)據(jù)元素時,所 述散步和接收模塊包括
行散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則, 將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算 節(jié)點發(fā)送的行標識。
可選的,所述連續(xù)化模塊包括
第二列續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向 量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識;
第二行續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的行標識進行去重并生成 行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
可選的,所述通知模塊包括
第二通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點??蛇x的,所述第一列續(xù)化模塊、第一行續(xù)化模塊、第二列續(xù)化模塊、第二行續(xù)化模塊包括統(tǒng)計模塊,適于每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點;起始標識計算模塊,適于每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識;向量連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。與現(xiàn)有技術相比,本發(fā)明包括以下優(yōu)點本發(fā)明每個參與計算的計算節(jié)點從存儲矩陣數(shù)據(jù)元素的服務器中讀取相應矩陣分塊的數(shù)據(jù)元素,然后根據(jù)數(shù)據(jù)標識的散步規(guī)則,將數(shù)據(jù)元素中的數(shù)據(jù)標識發(fā)送至相應的計算該類數(shù)據(jù)標識的計算節(jié)點中,然后每個參與計算的計算節(jié)點將得到的各數(shù)據(jù)標識生成數(shù)據(jù)標識向量,對該數(shù)據(jù)標識向量中每個分量(也即數(shù)據(jù)標識)進行連續(xù)化,獲得與每個分量對應的第一標識;然后每個參與計算的計算節(jié)點再將本地計算得到的數(shù)據(jù)標識與第一標識的對應關系通知給其他計算節(jié)點,那么其他計算節(jié)點即可獲知本地需要進行計算的數(shù)據(jù)元素的連續(xù)化后的第一標識。在這個過程中,對于大規(guī)模的矩陣數(shù)據(jù),可以通過各個計算節(jié)點并行的進行連續(xù)化,加快了連續(xù)化的速度,提高了數(shù)據(jù)處理效率。上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1示出了根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例一的流程示意圖;圖2示出了根據(jù)本發(fā)明一個實施例的矩陣數(shù)據(jù)存儲邏輯示意圖;圖3根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例二的流程示意圖;圖4示出了根據(jù)本發(fā)明實施例的一種數(shù)據(jù)標識廣播邏輯示意圖;圖5根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例三的流程示意圖;圖6根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例一的結構不意圖;圖7示出了根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例二的結構示意圖;以及圖8示出了根據(jù)本發(fā)明一個實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例三的結構示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開 的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例 所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍 完整的傳達給本領域的技術人員。
參照圖1,示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例一的流 程示意圖,具體可以包括
步驟110,針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給 該計算節(jié)點的矩陣分塊的數(shù)據(jù)元素;
在本發(fā)明實施例中,矩陣數(shù)據(jù)存儲在指定的數(shù)據(jù)服務器中,比如日志數(shù)據(jù),其存 儲的邏輯方式可為矩陣的形式。如圖2所示,value為實際的數(shù)據(jù)內(nèi)容,比如日志數(shù)據(jù),ColKeyi (i = 1、2......M)為相應 value 的列標,RowKeyi (i = 1、2......N)為相應 value的行標。其中在該稀疏矩陣中,每行沒列可能存在一定數(shù)量的非零元素(即實際數(shù)據(jù)),和 大量的零元素(零元素沒有數(shù)據(jù),不進行存儲)。
那么對于用于計算的N個計算節(jié)點來說(也即N個計算服務器),首先需要預先將 圖1的矩陣數(shù)據(jù)進行分塊,比如按行分為N塊(N小于等于行數(shù),一般情況下計算節(jié)點的個 數(shù)遠遠小于矩陣的行數(shù)和列數(shù)),然后分別將N指定給一個計算節(jié)點,由該計算節(jié)點進行處理。
那么在進行實際計算之前,各個計算節(jié)點需要根據(jù)預先指定的矩陣分塊,讀取相 應矩陣分塊的數(shù)據(jù)。比如當前存在10個計算節(jié)點,10000行*10000列矩陣的矩陣數(shù)據(jù), 其中第I 1000行的數(shù)據(jù)分配給計算節(jié)點1,第1001 2000行的數(shù)據(jù)分配給計算節(jié)點2,......第9001 10000行的數(shù)據(jù)分配給計算節(jié)點10,那么計算節(jié)點I至10則分別讀取相應1000行的數(shù)據(jù)。
步驟120,每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù) 據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點 發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
本發(fā)明實施例為了將矩陣數(shù)據(jù)的數(shù)據(jù)標識利用各計算節(jié)點進行并行的連續(xù)化 (也即id化),可將各節(jié)點的矩陣數(shù)據(jù)按某個規(guī)則將具有同一屬性的數(shù)據(jù)標識集中發(fā)送到 某個計算節(jié)點進行處理。也即每個參與計算的計算節(jié)點,將將當前讀取的每個數(shù)據(jù)元素的 數(shù)據(jù)標識,根據(jù)預置的數(shù)據(jù)標識散步規(guī)則進行計算,根據(jù)計算結果見數(shù)據(jù)標識發(fā)送給與計 算結果相對應的計算節(jié)點。同時,每個參與計算的計算節(jié)點也接收其他計算節(jié)點發(fā)送到本 節(jié)點數(shù)據(jù)標識。那么最終,每個參與計算的計算節(jié)點則保存了未發(fā)送出去的數(shù)據(jù)標識和其 他計算節(jié)點發(fā)送到本節(jié)點數(shù)據(jù)標識。
如此每個參與計算的計算節(jié)點只處理一部分數(shù)據(jù)標識,并且各個計算節(jié)點處理的 數(shù)據(jù)標識兩兩互不相同。
在本申請實施例中,各計算節(jié)點之間的通信通過MPI (Message Passing Interface,訊息傳遞接口 ;一種消息傳遞編程接口,同時提供了實現(xiàn)其一系列接口的多語言函數(shù)庫)進行。即每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,通過MPI將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識。步驟130,每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識;如前所述,每個參與計算的計算節(jié)點最終保存了未發(fā)送出去的數(shù)據(jù)標識和其他計算節(jié)點發(fā)送到本節(jié)點數(shù)據(jù)標識,那么每個參與計算的計算節(jié)點基于上述最終數(shù)據(jù)標識,進行連續(xù)化。其中,進行連續(xù)化時,每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識,生成數(shù)據(jù)標識向量并進行向量連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識。步驟140,每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點。由于對數(shù)據(jù)標識進行連續(xù)化是在進程中進行,而為了使其他計算節(jié)點的進程也能知道同步知道,需要每個參與計算的計算節(jié)點將當前id化得到的數(shù)據(jù)標識與第一標識的對應關系通知給其他計算節(jié)點,以使整個計算系統(tǒng)全局均知道數(shù)據(jù)標識與第一標識的對應關系,以使后續(xù)計算過程可以使各進程方便將相應矩陣分塊的數(shù)據(jù)以第一標識存儲于內(nèi)存中。本步驟中,每個參與計算的計算節(jié)點通過MPI將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點。參照圖3,示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例二的流程示意圖,具體可以包括步驟210,針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素。即圖2中的矩陣數(shù)據(jù)按行分成N個行塊,并將N個行塊分別分配給一個計算節(jié)點進行計算。那么每個參與計算的計算節(jié)點則讀取分配給該計算節(jié)點的若干行的數(shù)據(jù)元素。即計算節(jié)點按行標讀取矩陣元素,直至在其范圍內(nèi)的行標的矩陣元素讀取完畢。步驟220,每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標識。在本發(fā)明實施例中,首先可定義全局的列標(Colkey)的散步規(guī)則,將每個數(shù)據(jù)元素的列標散步到相應計算節(jié)點,比如規(guī)則R — (RANK = COLKEY% NODES)公式(I)上述公式為對ColKey針對計算節(jié)點總數(shù)Nodes取余,每種余數(shù)對應一個計算節(jié)點R0比如總共4個計算節(jié)點A、B、C、D,余數(shù)為0,1,2,3,那么余數(shù)O可對應計算節(jié)點A,余數(shù)I可對應計算節(jié)點B,余數(shù)2可對應計算節(jié)點C,余數(shù)3可對應計算節(jié)點D。那么計算節(jié)點將當前讀取的矩陣元素,也即(Rowkey, colkey, value),將其中的colkey采用公式(I)進行計算,根據(jù)計算結果與計算節(jié)點的對應關系,將colkey發(fā)送至相應計算節(jié)點。每個參與計算的計算節(jié)點也接收其他計算節(jié)點根據(jù)公式(I)對colkey進行計算然后發(fā)送到本節(jié)點colkey。
步驟230,每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識;
步驟240,每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量, 并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
在步驟230,中,還包括對相同的列標進行合并。即保證每個colkey只有一份。
由步驟230和240,經(jīng)過計算節(jié)點之間的第一次通信過后,每個參與計算的計算節(jié)點保存了一部分列標(colkey)和本節(jié)點當前被分配進行處理行矩陣塊的行標(rowkey)。 那么即可針對該節(jié)點保存的rowkey生成行向量,colkey生成列向量,然后進行連續(xù)化(id 化),得到行標識和第一行標識(連續(xù)化后的標識)的對應關系,和列標識和第一列標識 (連續(xù)化后的標識)的對應關系,也即(RowKey- > RowId)和(ColKey- > ColId)。
其中,針對行向量和列向量的連續(xù)化,其采用方法包括
步驟S11,每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點;
步驟S12,每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識;
步驟S13,每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。
下面以列向量為例進行說明
1、針對N個計算節(jié)點,每個參與計算的計算節(jié)點統(tǒng)計其列向量中分量的數(shù)目Ni ;
2、每個計算節(jié)i點調(diào)用MPI_Allgather函數(shù)將本節(jié)點的分量數(shù)目Ni廣播給其他 N-1計算節(jié)點,并接收其他N-1個計算節(jié)點廣播的分量數(shù)目,獲得每個參與計算的計算節(jié)點 i計算的分量數(shù)目;
3、每個參與計算的計算節(jié)點i,根據(jù)如下公式(2)計算本節(jié)點的起始(第一列標識)ID編號:
StartID =N1......公式⑵
其中,Ni為計算節(jié)點i的分量數(shù)目,rank為當前計算節(jié)點的編號(rank可設置為 O......n,其中 rank = O 時,Star ID = 0)。
4、每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始ID號,對本節(jié)點列向量的各分量進行id化。
當然本申請對各個計算節(jié)點針對(RowKey- > RowId)和(ColKey- > ColId)這種二維結構形式的連續(xù)ID化還可采用其他形式,本發(fā)明實施例對其加以限制。
另外,可選的, 還包括
步驟S21,在本計算結點內(nèi)部設置多個工作線程,并將本結點處理的行分量依次分配到每個工作線程上;
步驟S22,利用每個工作線程對各自對應的數(shù)據(jù)進行連接id化處理。
可選地,所述利用每個工作線程對各自對應的數(shù)據(jù)進行連接id化處理,包括步驟S31對于任意一個工作線程,判斷當前處理的數(shù)據(jù)是否是自身所處理的最后一條數(shù)據(jù);若是,則結束并退出處理流程;若否,則為當前數(shù)據(jù)賦予id,并觸發(fā)下一條數(shù)據(jù)的處理??蛇x地,所述觸發(fā)下一條數(shù)據(jù)的處理,包括利用原子遞增atomic_inc,對下一條數(shù)據(jù)進行連接id化處理。在上述對分量進行id化的過程中,總體上分為行分量處理過程,和列分量處理過程,即每個參與計算的計算節(jié)點計算行分量時獲取其他計算節(jié)點的行分量數(shù)據(jù)進行計算,每個參與計算的計算節(jié)點計算列分量時獲取其他計算節(jié)點的列分量數(shù)據(jù)進行計算。通過上述對分量的計算,那么數(shù)據(jù)并不是在一個隊列中依次進行處理的,而是在多個隊列中并行處理的,其處理速度相對現(xiàn)有技術中的id化處理有大幅度的提升。并行處理的結點數(shù)越多,該數(shù)據(jù)被處理結束的速度就越快。采用本發(fā)明實施例能夠縮短數(shù)據(jù)存儲的時間,尤其是對于大規(guī)模數(shù)據(jù)的存儲,能夠起到節(jié)省時間提高存儲速率的作用,滿足大規(guī)模數(shù)據(jù)存儲的時間性要求,節(jié)省系統(tǒng)資源。步驟250,每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識通知給其他計算節(jié)點。在本發(fā)明實施例中,由于每個參與計算的計算節(jié)點處理的行向量為本身需要處理的矩陣數(shù)據(jù)的行表,即矩陣數(shù)據(jù)`是按行劃分給每個參與計算的計算節(jié)點的,因此
(RowKey- > RowId)和本地的RowKey是--對應的。而(ColKey- > ColId)和本地的
ColKey不是——對應,每一行數(shù)據(jù)都可能包含全部的列,因此需要將(ColKey- > ColId)全局化,即每個參與計算的計算節(jié)點將本地id化得到的(ColKey- > ColId)廣播到其他N-1個計算節(jié)中,參照圖4,其為本實施例每個參與計算的計算節(jié)點的每個(ColKey- >ColId)廣播到其他計算節(jié)點的一個邏輯示意圖。每個參與計算的計算節(jié)點計算得到的(ColKey- > ColId)廣播到其他計算節(jié)點相應的colkey處。如此,對于全局計算節(jié)點來說,均可記錄所有計算節(jié)點計算的(ColKey- > ColId)和其節(jié)點本身的(RowKey- > RowId)。其中,將MPI的MPI_Allgather接口,將本地的(ColKey- > ColId)廣播到其他所有計算結點。然后,每個參與計算的計算節(jié)點在計算其行塊的數(shù)據(jù)元素時,即可根據(jù)其(RowKey- > RowId)和(ColKey- > ColId)對其value存儲至內(nèi)存,在計算時,也可很容易的知道數(shù)據(jù)界限。參照圖,5,示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法實施例二的流程示意圖,具體可以包括步驟310,針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按列分塊的數(shù)據(jù)元素。即將圖2中矩陣數(shù)據(jù)即按列分成N個行塊,并將N個列塊分別分配給一個計算節(jié)點進行計算。那么每個參與計算的計算節(jié)點則讀取分配給該計算節(jié)點的若干列的數(shù)據(jù)元素。步驟320,每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識。
在本發(fā)明實施例中,首先可定義全局的列標(Colkey)的散步規(guī)則,將每個數(shù)據(jù)元素的列標散步到相應計算節(jié)點,比如規(guī)則
R — (RANK = ROWKEY % NODES)公式(3)
那么計算節(jié)點將當前讀取的矩陣元素,也即(Rowkey, colkey, value),將其中的 rowkey采用公式(3)進行計算,根據(jù)計算結果與計算節(jié)點的對應關系,將rowkey發(fā)送至相應計算節(jié)點。每個參與計算的計算節(jié)點也接收其他計算節(jié)點根據(jù)公式(3)對rowkey進行計算然后發(fā)送到本節(jié)點rowkey。
步驟330,每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識;
步驟340,每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量, 并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
在步驟330,中,還包括對相同的行標進行合并。即保證每個rowkey只有一份。
第一次通信過后,步驟320,步驟330,每個參與計算的計算節(jié)點保存了一部分行標(rowkey)和本節(jié)點當前被分配進行處理行矩陣塊的列標 (colkey)。那么即可針對該節(jié)點保存的rowkey生成行向量,colkey生成列向量,然后進行連續(xù)化(id化),得到行標識和第一行標識(連續(xù)化后的標識)的對應關系,和列標識和第一列標識(連續(xù)化后的標識) 的對應關系,也即(RowKey- > RowId)和(ColKey- > ColId)。
其也可以利用步驟Sll至S13和公式⑵進行計算。
步驟350,每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點。
本實施例(colKey-> colld)和本地的colKey是--對應的。而(rowKey->ColId)和本地的rowKey不是--對應,每一行數(shù)據(jù)都可能包含全部的列,因此需要將(rowKey- > rowld)全局化,即每個參與計算的計算節(jié)點將本地id化得到的(rowKey- > rowld)廣播到其他N-1個計算節(jié)中。
本實施例與實施例二基本原理類似,在此不再詳述。
參照圖6,其示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例一的結構示意圖,包括
N個計算節(jié)點;
所述每個參與計算的計算節(jié)點400包括
數(shù)據(jù)讀取模塊410,適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩陣分塊的數(shù)據(jù)元素;
散步和接收模塊420,適于每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
連續(xù)化模塊430,適于每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識;
通知模塊440,適于每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點??蛇x的,所述數(shù)據(jù)讀取模塊進一步適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的數(shù)據(jù)元素??蛇x的,當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素時,所述散步和接收模塊包括列散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標識。 可選的,所述連續(xù)化模塊包括第一行連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識;第一列連續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識??蛇x的,所述通知模塊包括第一通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識通知給其他計算節(jié)點??蛇x的,當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按列分塊的數(shù)據(jù)元素時,所述散步和接收模塊包括行散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識。可選的,所述連續(xù)化模塊包括第二列續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識;第二行續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。可選的,所述通知模塊包括第二通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點??蛇x的,所述第一列續(xù)化模塊、第一行續(xù)化模塊、第二列續(xù)化模塊、第二行續(xù)化模塊包括統(tǒng)計模塊,適于每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點;起始標識計算模塊,適于每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識;向量連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。參照圖7,其示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例二的結構示意圖,包括
N個計算節(jié)點;
所述每個參與計算的計算節(jié)點500包括
數(shù)據(jù)讀取模塊510,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元 素;
列散步和接收模塊520,適于每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī) 則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他 N-1個計算節(jié)點發(fā)送的列標識;
第一行連續(xù)化模塊530,適于每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行 標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識;
第一列連續(xù)化模塊540,適于每個參與計算的計算節(jié)點對本地的列標識進行去重 并生成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
第一通知模塊550,適于每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的 對應關系,將第一列標識通知給其他計算節(jié)點。
參照圖8,其示出了本發(fā)明一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)實施例二的 結構示意圖,包括
N個計算節(jié)點;
所述每個參與計算的計算節(jié)點600包括
數(shù)據(jù)讀取模塊610,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按列分塊的數(shù)據(jù)元 素;
行散步和接收模塊620,適于每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī) 則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他 計算節(jié)點發(fā)送的行標識。
第二列續(xù)化模塊630,適于每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標 識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識;
第二行續(xù)化模塊640,適于每個參與計算的計算節(jié)點對本地的行標識進行去重并 生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
第二通知模塊650,適于每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的 對應關系,將第一行標識通知給其他計算節(jié)點。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。 各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求 的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種 編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā) 明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施 例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構 和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在 上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
的權利要求書由此明確地并入該具體實施方式
,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權利要求
1.一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法,其特征在于,包括 針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩陣分塊的數(shù)據(jù)元素; 每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識; 每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識; 每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)占. 其中,所述每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩陣分塊的數(shù)據(jù)元素包括 每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的數(shù)據(jù)元素。
2.根據(jù)權利要求1所述的方法,其特征在于,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括 每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標識。
3.根據(jù)權利要求2所述的方法,其特征在于,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識包括 每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識; 每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
4.根據(jù)權利要求3所述的方法,其特征在于,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點包括 每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識通知給其他計算節(jié)點。
5.根據(jù)權利要求1所述的方法,其特征在于,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括 每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識。
6.根據(jù)權利要求5所述的方法,其特征在于,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識包括 每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識; 每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
7.根據(jù)權利要求6所述的方法,其特征在于,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點包括 每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點。
8.根據(jù)權利要求3或6所述的方法,其特征在于,所述對向量進行連續(xù)化包括 每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點; 每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識; 每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。
9.一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的系統(tǒng),包括 N個計算節(jié)點; 所述每個參與計算的計算節(jié)點包括 數(shù)據(jù)讀取模塊,適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩陣分塊的數(shù)據(jù)元素; 散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識; 連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標識相應的第一標識; 通知模塊,適于每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算節(jié)點; 其中,所述數(shù)據(jù)讀取模塊進一步適于 每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的數(shù)據(jù)元素。
10.根據(jù)權利要求9所述的系統(tǒng),其特征在于, 當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素時,所述散步和接收模塊包括 列散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標識。
11.根據(jù)權利要求10所述的系統(tǒng),其特征在于,所述連續(xù)化模塊包括 第一行連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識; 第一列連續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
12.根據(jù)權利要求11所述的系統(tǒng),其特征在于,所述通知模塊包括第一通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識通知給其他計算節(jié)點。
13.根據(jù)權利要求9所述的系統(tǒng),其特征在于, 當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按列分塊的數(shù)據(jù)元素時,所述散步和接收模塊包括 行散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識。
14.根據(jù)權利要求13所述的系統(tǒng),其特征在于,所述連續(xù)化模塊包括 第二列續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識; 第二行續(xù)化模塊,適于每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量,并對行標識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
15.根據(jù)權利要求14所述的系統(tǒng),其特征在于,所述通知模塊包括 第二通知模塊,適于每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識通知給其他計算節(jié)點。
16.根據(jù)權利要求12或15所述的系統(tǒng),其特征在于,所述第一列續(xù)化模塊、第一行續(xù)化模塊、第二列續(xù)化模塊、第二行續(xù)化模塊包括 統(tǒng)計模塊,適于每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他計算節(jié)點; 起始標識計算模塊,適于每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始的第一標識; 向量連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進行連續(xù)化,獲得相應的第一標識。
全文摘要
本發(fā)明公開了一種用于連續(xù)化矩陣數(shù)據(jù)元素標識的方法和系統(tǒng),涉及計算機領域。所述系統(tǒng)包括N個計算節(jié)點;所述每個參與計算的計算節(jié)點包括數(shù)據(jù)讀取模塊;散步和接收模塊;連續(xù)化模塊;通知模塊;其中,所述數(shù)據(jù)讀取模塊進一步適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的數(shù)據(jù)元素。對于大規(guī)模的矩陣數(shù)據(jù),可以通過各個計算節(jié)點并行的進行連續(xù)化,加快了連續(xù)化的速度,提高了數(shù)據(jù)處理效率。
文檔編號G06F17/30GK103049487SQ201210517949
公開日2013年4月17日 申請日期2012年12月5日 優(yōu)先權日2012年12月5日
發(fā)明者齊路, 何銳邦, 唐會軍 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司