一種矩陣數(shù)據(jù)元素標識連續(xù)化方法和系統(tǒng)的制作方法
【技術領域】
[0001] 本發(fā)明涉及計算機領域,特別是涉及一種矩陣數(shù)據(jù)元素標識連續(xù)化方法和系統(tǒng)。
【背景技術】
[0002] 在大規(guī)模并行計算中,很重要一類計算是矩陣或向量的計算。通常描述矩陣采用 (Rowkey, colkey, value)的三元組(其中Rowkey, colkey分別為行標、列標,value為實際 存儲的數(shù)據(jù)內容),這樣可以采用稀疏的存儲方式,從而減少存儲空間。用戶再將矩陣按照 行(Rowkey)或者列(colkey)進行劃分,將數(shù)據(jù)散布到多個計算結點(也即計算服務器) 上,從而達到并行計算的目的。通常為了唯一標識矩陣中每個數(shù)據(jù)元素,輸入的Rowkey和 colkey采用位數(shù)較多(64位,128位)的簽名。而在實際的計算過程中,Rowkey和colkey 僅作為一個下標,并不需要很多的位數(shù)。因此為了減少節(jié)點內存存儲空間,并且方便計算時 順序訪問,常常要對key和colkey進行連續(xù)的id化,即將Rowkey和colkey都轉換為連續(xù) 的0-N的整數(shù)列。
[0003] 現(xiàn)有技術中,存在一種對矩陣數(shù)據(jù)的的存儲標識進行id化的方法是串行id化方 法,即采用一個計算節(jié)點,逐個獲取矩陣中的數(shù)據(jù)元素將其行標和列標進行id化,但是該 種方法處理效率低,時間長。
【發(fā)明內容】
[0004] 鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上 述問題的一種矩陣數(shù)據(jù)元素標識連續(xù)化裝置和相應的一種矩陣數(shù)據(jù)元素標識連續(xù)化方法。
[0005] 依據(jù)本發(fā)明的一個方面,提供了一種矩陣數(shù)據(jù)元素標識連續(xù)化方法,包括:
[0006] 針對N個計算節(jié)點,每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié) 點的矩陣分塊的數(shù)據(jù)元素;
[0007] 每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中 的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余N-1個計算節(jié)點發(fā)送的數(shù) 據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
[0008] 每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得與每個數(shù)據(jù)標 識相應的第一標識;
[0009] 每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知給其他計算 節(jié)點。
[0010] 可選的,所述每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié)點的矩 陣分塊的數(shù)據(jù)元素包括:
[0011] 每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的 數(shù)據(jù)元素。
[0012] 可選的,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取 的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括:
[0013] 每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的 列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1個計算節(jié)點發(fā)送的列標 識。
[0014] 可選的,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得 與每個數(shù)據(jù)標識相應的第一標識包括:
[0015] 每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識向量,并對行標識向量進 行連續(xù)化,獲得與每個行標識相應的第一行標識;
[0016] 每個參與計算的計算節(jié)點對本地的列標識進行去重并生成列標識向量,并對列標 識向量進行連續(xù)化,獲得與每個列標識相應的第一列標識。
[0017] 可選的,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知 給其他計算節(jié)點包括:
[0018] 每個參與計算的計算節(jié)點根據(jù)第一列標識與原列標識的對應關系,將第一列標識 通知給其他計算節(jié)點。
[0019] 可選的,所述每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則,將所讀取 的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點包括:
[0020] 每個參與計算的計算節(jié)點根據(jù)閾值的行標識散步規(guī)則,將所讀取的數(shù)據(jù)元素中的 行標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他計算節(jié)點發(fā)送的行標識。
[0021] 可選的,所述每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化,獲得 與每個數(shù)據(jù)標識相應的第一標識包括:
[0022] 每個參與計算的計算節(jié)點根據(jù)本地的列標識生成行標識向量,并對列標識向量進 行連續(xù)化,獲得與每個列標識相應的第一列標識;
[0023] 每個參與計算的計算節(jié)點對本地的行標識進行去重并生成行標識向量,并對行標 識向量進行連續(xù)化,獲得與每個行標識相應的第一行標識。
[0024] 可選的,所述每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通知 給其他計算節(jié)點包括:
[0025] 每個參與計算的計算節(jié)點根據(jù)第一行標識與原行標識的對應關系,將第一行標識 通知給其他計算節(jié)點。
[0026] 可選的,所述對向量進行連續(xù)化包括:
[0027] 每個參與計算的計算節(jié)點i統(tǒng)計待計算的標識總數(shù)Ni,并將所述總數(shù)通知給其他 計算節(jié)點;
[0028] 每個參與計算的計算節(jié)點根據(jù)各計算節(jié)點待計算的標識總數(shù)Ni,計算本節(jié)點起始 的第一標識;
[0029] 每個參與計算的計算節(jié)點根據(jù)本節(jié)點的起始的第一標識,對本節(jié)點的標識向量進 行連續(xù)化,獲得相應的第一標識。
[0030] 依據(jù)本發(fā)明的另一個方面,提供一種矩陣數(shù)據(jù)元素標識連續(xù)化系統(tǒng),包括:
[0031] N個計算節(jié)點;
[0032] 所述每個參與計算的計算節(jié)點包括:
[0033] 數(shù)據(jù)讀取模塊,適于每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中被分配給該計算節(jié) 點的矩陣分塊的數(shù)據(jù)元素;
[0034] 散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)預置的數(shù)據(jù)標識散步規(guī)則, 將所讀取的數(shù)據(jù)元素中的數(shù)據(jù)標識保留在本地或者發(fā)送到相應的計算節(jié)點,并接收剩余 N-1個計算節(jié)點發(fā)送的數(shù)據(jù)標識,獲得由所述計算節(jié)點進行處理的最終數(shù)據(jù)標識;
[0035] 連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)所述最終數(shù)據(jù)標識進行連續(xù)化, 獲得與每個數(shù)據(jù)標識相應的第一標識;
[0036] 通知模塊,適于每個參與計算的計算節(jié)點將第一標識與原數(shù)據(jù)標識的對應關系通 知給其他計算節(jié)點。
[0037] 可選的,所述數(shù)據(jù)讀取模塊進一步適于:
[0038] 每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素,或者按列分塊的 數(shù)據(jù)元素。
[0039] 可選的,當每個參與計算的計算節(jié)點讀取矩陣數(shù)據(jù)中按行分塊的數(shù)據(jù)元素時,所 述散步和接收模塊包括:
[0040] 列散步和接收模塊,適于每個參與計算的計算節(jié)點根據(jù)閾值的列標識散步規(guī)則, 將所讀取的數(shù)據(jù)元素中的列標識保留在本地或者發(fā)送到相應的計算節(jié)點;并接收其他N-1 個計算節(jié)點發(fā)送的列標識。
[0041] 可選的,所述連續(xù)化模塊包括:
[0042] 第一行連續(xù)化模塊,適于每個參與計算的計算節(jié)點根據(jù)本地的行標識生成行標識 向量,并對行標識向量進行連續(xù)