CN103049246A - 一种矩阵数据元素标识连续化方法和系统 - Google Patents

一种矩阵数据元素标识连续化方法和系统 Download PDF

Info

Publication number
CN103049246A
CN103049246A CN2012105185772A CN201210518577A CN103049246A CN 103049246 A CN103049246 A CN 103049246A CN 2012105185772 A CN2012105185772 A CN 2012105185772A CN 201210518577 A CN201210518577 A CN 201210518577A CN 103049246 A CN103049246 A CN 103049246A
Authority
CN
China
Prior art keywords
computing node
row
sign
data
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012105185772A
Other languages
English (en)
Other versions
CN103049246B (zh
Inventor
齐路
何锐邦
唐会军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510138373.XA priority Critical patent/CN104714782B/zh
Priority to CN201210518577.2A priority patent/CN103049246B/zh
Publication of CN103049246A publication Critical patent/CN103049246A/zh
Application granted granted Critical
Publication of CN103049246B publication Critical patent/CN103049246B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种矩阵数据元素标识连续化方法和系统,涉及计算机领域。所述方法包括:针对N个计算节点,每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。对于大规模的矩阵数据,可以通过各个计算节点并行的进行连续化,加快了连续化的速度,提高了数据处理效率。

Description

一种矩阵数据元素标识连续化方法和系统
技术领域
本发明涉及计算机领域,特别是涉及一种矩阵数据元素标识连续化方法和系统。
背景技术
在大规模并行计算中,很重要一类计算是矩阵或向量的计算。通常描述矩阵采用(Rowkey,colkey,value)的三元组(其中Rowkey,colkey分别为行标、列标,value为实际存储的数据内容),这样可以采用稀疏的存储方式,从而减少存储空间。用户再将矩阵按照行(Rowkey)或者列(colkey)进行划分,将数据散布到多个计算结点(也即计算服务器)上,从而达到并行计算的目的。通常为了唯一标识矩阵中每个数据元素,输入的Rowkey和colkey采用位数较多(64位,128位)的签名。而在实际的计算过程中,Rowkey和colkey仅作为一个下标,并不需要很多的位数。因此为了减少节点内存存储空间,并且方便计算时顺序访问,常常要对key和colkey进行连续的id化,即将Rowkey和colkey都转换为连续的0-N的整数列。
现有技术中,存在一种对矩阵数据的的存储标识进行id化的方法是串行id化方法,即采用一个计算节点,逐个获取矩阵中的数据元素将其行标和列标进行id化,但是该种方法处理效率低,时间长。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种矩阵数据元素标识连续化装置和相应的一种矩阵数据元素标识连续化方法。
依据本发明的一个方面,提供了一种矩阵数据元素标识连续化方法,包括:
针对N个计算节点,每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
可选的,所述每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素包括:
每个参与计算的计算节点读取矩阵数据中按行分块的数据元素,或者按列分块的数据元素。
可选的,所述每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点包括:
每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
可选的,所述每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识包括:
每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
可选的,所述每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点包括:
每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
可选的,所述每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点包括:
每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
可选的,所述每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识包括:
每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
可选的,所述每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点包括:
每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
可选的,所述对向量进行连续化包括:
每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。
依据本发明的另一个方面,提供一种矩阵数据元素标识连续化系统,包括:
N个计算节点;
所述每个参与计算的计算节点包括:
数据读取模块,适于每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
散步和接收模块,适于每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
连续化模块,适于每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
通知模块,适于每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
可选的,所述数据读取模块进一步适于:
每个参与计算的计算节点读取矩阵数据中按行分块的数据元素,或者按列分块的数据元素。
可选的,当每个参与计算的计算节点读取矩阵数据中按行分块的数据元素时,所述散步和接收模块包括:
列散步和接收模块,适于每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
可选的,所述连续化模块包括:
第一行连续化模块,适于每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
第一列连续化模块,适于每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
可选的,所述通知模块包括:
第一通知模块,适于每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
可选的,当每个参与计算的计算节点读取矩阵数据中按列分块的数据元素时,所述散步和接收模块包括:
行散步和接收模块,适于每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
可选的,所述连续化模块包括:
第二列续化模块,适于每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
第二行续化模块,适于每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
可选的,所述通知模块包括:
第二通知模块,适于每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
可选的,所述第一列续化模块、第一行续化模块、第二列续化模块、第二行续化模块包括:
统计模块,适于每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
起始标识计算模块,适于每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
向量连续化模块,适于每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。与现有技术相比,本发明包括以下优点:
本发明每个参与计算的计算节点从存储矩阵数据元素的服务器中读取相应矩阵分块的数据元素,然后根据数据标识的散步规则,将数据元素中的数据标识发送至相应的计算该类数据标识的计算节点中,然后每个参与计算的计算节点将得到的各数据标识生成数据标识向量,对该数据标识向量中每个分量(也即数据标识)进行连续化,获得与每个分量对应的第一标识;然后每个参与计算的计算节点再将本地计算得到的数据标识与第一标识的对应关系通知给其他计算节点,那么其他计算节点即可获知本地需要进行计算的数据元素的连续化后的第一标识。在这个过程中,对于大规模的矩阵数据,可以通过各个计算节点并行的进行连续化,加快了连续化的速度,提高了数据处理效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种矩阵数据元素标识连续化方法实施例一的流程示意图;
图2示出了根据本发明一个实施例的矩阵数据存储逻辑示意图;
图3根据本发明一个实施例的一种矩阵数据元素标识连续化方法实施例二的流程示意图;
图4示出了根据本发明实施例的一种数据标识广播逻辑示意图;
图5根据本发明一个实施例的一种矩阵数据元素标识连续化方法实施例三的流程示意图;
图6根据本发明一个实施例的一种矩阵数据元素标识连续化系统实施例一的结构示意图;
图7示出了根据本发明一个实施例的一种矩阵数据元素标识连续化系统实施例二的结构示意图;以及
图8示出了根据本发明一个实施例的一种矩阵数据元素标识连续化系统实施例三的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了本发明一种矩阵数据元素标识连续化方法实施例一的流程示意图,具体可以包括:
步骤110,针对N个计算节点,每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
在本发明实施例中,矩阵数据存储在指定的数据服务器中,比如日志数据,其存储的逻辑方式可为矩阵的形式。如图2所示,value为实际的数据内容,比如日志数据,ColKeyi(i=1、2......M)为相应value的列标,RowKeyi(i=1、2......N)为相应value的行标。其中在该稀疏矩阵中,每行没列可能存在一定数量的非零元素(即实际数据),和大量的零元素(零元素没有数据,不进行存储)。
那么对于用于计算的N个计算节点来说(也即N个计算服务器),首先需要预先将图1的矩阵数据进行分块,比如按行分为N块(N小于等于行数,一般情况下计算节点的个数远远小于矩阵的行数和列数),然后分别将N指定给一个计算节点,由该计算节点进行处理。
那么在进行实际计算之前,各个计算节点需要根据预先指定的矩阵分块,读取相应矩阵分块的数据。比如当前存在10个计算节点,10000行*10000列矩阵的矩阵数据,其中第1~1000行的数据分配给计算节点1,第1001~2000行的数据分配给计算节点2,......第9001~10000行的数据分配给计算节点10,那么计算节点1至10则分别读取相应1000行的数据。
步骤120,每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
本发明实施例为了将矩阵数据的数据标识利用各计算节点进行并行的连续化(也即id化),可将各节点的矩阵数据按某个规则将具有同一属性的数据标识集中发送到某个计算节点进行处理。也即每个参与计算的计算节点,将将当前读取的每个数据元素的数据标识,根据预置的数据标识散步规则进行计算,根据计算结果见数据标识发送给与计算结果相对应的计算节点。同时,每个参与计算的计算节点也接收其他计算节点发送到本节点数据标识。那么最终,每个参与计算的计算节点则保存了未发送出去的数据标识和其他计算节点发送到本节点数据标识。
如此每个参与计算的计算节点只处理一部分数据标识,并且各个计算节点处理的数据标识两两互不相同。
在本申请实施例中,各计算节点之间的通信通过MPI(Message PassingInterface,讯息传递接口;一种消息传递编程接口,同时提供了实现其一系列接口的多语言函数库)进行。
即每个参与计算的计算节点根据预置的数据标识散步规则,通过MPI将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识。
步骤130,每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
如前所述,每个参与计算的计算节点最终保存了未发送出去的数据标识和其他计算节点发送到本节点数据标识,那么每个参与计算的计算节点基于上述最终数据标识,进行连续化。
其中,进行连续化时,每个参与计算的计算节点根据所述最终数据标识,生成数据标识向量并进行向量连续化,获得与每个数据标识相应的第一标识。
步骤140,每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
由于对数据标识进行连续化是在进程中进行,而为了使其他计算节点的进程也能知道同步知道,需要每个参与计算的计算节点将当前id化得到的数据标识与第一标识的对应关系通知给其他计算节点,以使整个计算系统全局均知道数据标识与第一标识的对应关系,以使后续计算过程可以使各进程方便将相应矩阵分块的数据以第一标识存储于内存中。
本步骤中,每个参与计算的计算节点通过MPI将第一标识与原数据标识的对应关系通知给其他计算节点。
参照图3,示出了本发明一种矩阵数据元素标识连续化方法实施例二的流程示意图,具体可以包括:
步骤210,针对N个计算节点,每个参与计算的计算节点读取矩阵数据中按行分块的数据元素。
即图2中的矩阵数据按行分成N个行块,并将N个行块分别分配给一个计算节点进行计算。
那么每个参与计算的计算节点则读取分配给该计算节点的若干行的数据元素。即计算节点按行标读取矩阵元素,直至在其范围内的行标的矩阵元素读取完毕。
步骤220,每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
在本发明实施例中,首先可定义全局的列标(Colkey)的散步规则,将每个数据元素的列标散步到相应计算节点,比如规则:
R→(RANK=COLKEY%NODES)  公式(1)
上述公式为对ColKey针对计算节点总数Nodes取余,每种余数对应一个计算节点R。比如总共4个计算节点A、B、C、D,余数为0,1,2,3,那么余数0可对应计算节点A,余数1可对应计算节点B,余数2可对应计算节点C,余数3可对应计算节点D。
那么计算节点将当前读取的矩阵元素,也即(Rowkey,colkey,value),将其中的colkey采用公式(1)进行计算,根据计算结果与计算节点的对应关系,将colkey发送至相应计算节点。每个参与计算的计算节点也接收其他计算节点根据公式(1)对colkey进行计算然后发送到本节点colkey。
步骤230,每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
步骤240,每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
在步骤230,中,还包括:对相同的列标进行合并。即保证每个colkey只有一份。
由步骤230和240,经过计算节点之间的第一次通信过后,每个参与计算的计算节点保存了一部分列标(colkey)和本节点当前被分配进行处理行矩阵块的行标(rowkey)。那么即可针对该节点保存的rowkey生成行向量,colkey生成列向量,然后进行连续化(id化),得到行标识和第一行标识(连续化后的标识)的对应关系,和列标识和第一列标识(连续化后的标识)的对应关系,也即(RowKey->RowId)和(ColKey->ColId)。
其中,针对行向量和列向量的连续化,其采用方法包括:
步骤S11,每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
步骤S12,每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
步骤S13,每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。
下面以列向量为例进行说明:
1、针对N个计算节点,每个参与计算的计算节点统计其列向量中分量的数目Ni
2、每个计算节i点调用MPI_Allgather函数将本节点的分量数目Ni广播给其他N-1计算节点,并接收其他N-1个计算节点广播的分量数目,获得每个参与计算的计算节点i计算的分量数目;
3、每个参与计算的计算节点i,根据如下公式(2)计算本节点的起始(第一列标识)ID编号:
StartID = Σ i = 0 rank - 1 N i ......公式(2)
其中,Ni为计算节点i的分量数目,rank为当前计算节点的编号(rank可设置为0......n,其中rank=0时,StarID=0)。
4、每个参与计算的计算节点根据本节点的起始ID号,对本节点列向量的各分量进行id化。
当然本申请对各个计算节点针对(RowKey->RowId)和(ColKey->ColId)这种二维结构形式的连续ID化还可采用其他形式,本发明实施例对其加以限制。
另外,可选的,还包括:
步骤S21,在本计算结点内部设置多个工作线程,并将本结点处理的行分量依次分配到每个工作线程上;
步骤S22,利用每个工作线程对各自对应的数据进行连接id化处理。
可选地,所述利用每个工作线程对各自对应的数据进行连接id化处理,包括:
步骤S31对于任意一个工作线程,
判断当前处理的数据是否是自身所处理的最后一条数据;
若是,则结束并退出处理流程;
若否,则为当前数据赋予id,并触发下一条数据的处理。
可选地,所述触发下一条数据的处理,包括:利用原子递增atomic_inc,对下一条数据进行连接id化处理。
在上述对分量进行id化的过程中,总体上分为行分量处理过程,和列分量处理过程,即每个参与计算的计算节点计算行分量时获取其他计算节点的行分量数据进行计算,每个参与计算的计算节点计算列分量时获取其他计算节点的列分量数据进行计算。
通过上述对分量的计算,那么数据并不是在一个队列中依次进行处理的,而是在多个队列中并行处理的,其处理速度相对现有技术中的id化处理有大幅度的提升。并行处理的结点数越多,该数据被处理结束的速度就越快。采用本发明实施例能够缩短数据存储的时间,尤其是对于大规模数据的存储,能够起到节省时间提高存储速率的作用,满足大规模数据存储的时间性要求,节省系统资源。
步骤250,每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
在本发明实施例中,由于每个参与计算的计算节点处理的行向量为本身需要处理的矩阵数据的行表,即矩阵数据是按行划分给每个参与计算的计算节点的,因此(RowKey->RowId)和本地的RowKey是一一对应的。而(ColKey->ColId)和本地的ColKey不是一一对应,每一行数据都可能包含全部的列,因此需要将(ColKey->ColId)全局化,即每个参与计算的计算节点将本地id化得到的(ColKey->ColId)广播到其他N-1个计算节中,参照图4,其为本实施例每个参与计算的计算节点的每个(ColKey->ColId)广播到其他计算节点的一个逻辑示意图。每个参与计算的计算节点计算得到的(ColKey->ColId)广播到其他计算节点相应的colkey处。如此,对于全局计算节点来说,均可记录所有计算节点计算的(ColKey->ColId)和其节点本身的(RowKey->RowId)。
其中,将MPI的MPI_Allgather接口,将本地的(ColKey->ColId)广播到其他所有计算结点。
然后,每个参与计算的计算节点在计算其行块的数据元素时,即可根据其(RowKey->RowId)和(ColKey->ColId)对其value存储至内存,在计算时,也可很容易的知道数据界限。
参照图,5,示出了本发明一种矩阵数据元素标识连续化方法实施例二的流程示意图,具体可以包括:
步骤310,针对N个计算节点,每个参与计算的计算节点读取矩阵数据中按列分块的数据元素。
即将图2中矩阵数据即按列分成N个行块,并将N个列块分别分配给一个计算节点进行计算。那么每个参与计算的计算节点则读取分配给该计算节点的若干列的数据元素。
步骤320,每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
在本发明实施例中,首先可定义全局的列标(Colkey)的散步规则,将每个数据元素的列标散步到相应计算节点,比如规则:
R→(RANK=ROWKEY%NODES)  公式(3)
那么计算节点将当前读取的矩阵元素,也即(Rowkey,colkey,value),将其中的rowkey采用公式(3)进行计算,根据计算结果与计算节点的对应关系,将rowkey发送至相应计算节点。每个参与计算的计算节点也接收其他计算节点根据公式(3)对rowkey进行计算然后发送到本节点rowkey。
步骤330,每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
步骤340,每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
在步骤330,中,还包括:对相同的行标进行合并。即保证每个rowkey只有一份。
第一次通信过后,步骤320,步骤330,每个参与计算的计算节点保存了一部分行标(rowkey)和本节点当前被分配进行处理行矩阵块的列标(colkey)。那么即可针对该节点保存的rowkey生成行向量,colkey生成列向量,然后进行连续化(id化),得到行标识和第一行标识(连续化后的标识)的对应关系,和列标识和第一列标识(连续化后的标识)的对应关系,也即(RowKey->RowId)和(ColKey->ColId)。
其也可以利用步骤S11至S13和公式(2)进行计算。
步骤350,每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
本实施例(colKey->colId)和本地的colKey是一一对应的。而(rowKey->ColId)和本地的rowKey不是一一对应,每一行数据都可能包含全部的列,因此需要将(rowKey->rowId)全局化,即每个参与计算的计算节点将本地id化得到的(rowKey->rowId)广播到其他N-1个计算节中。
本实施例与实施例二基本原理类似,在此不再详述。
参照图6,其示出了本发明一种矩阵数据元素标识连续化系统实施例一的结构示意图,包括:
N个计算节点;
所述每个参与计算的计算节点400包括:
数据读取模块410,适于每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
散步和接收模块420,适于每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
连续化模块430,适于每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
通知模块440,适于每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
可选的,所述数据读取模块进一步适于:
每个参与计算的计算节点读取矩阵数据中按行分块的数据元素,或者按列分块的数据元素。
可选的,当每个参与计算的计算节点读取矩阵数据中按行分块的数据元素时,所述散步和接收模块包括:
列散步和接收模块,适于每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
可选的,所述连续化模块包括:
第一行连续化模块,适于每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
第一列连续化模块,适于每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
可选的,所述通知模块包括:
第一通知模块,适于每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
可选的,当每个参与计算的计算节点读取矩阵数据中按列分块的数据元素时,所述散步和接收模块包括:
行散步和接收模块,适于每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
可选的,所述连续化模块包括:
第二列续化模块,适于每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
第二行续化模块,适于每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
可选的,所述通知模块包括:
第二通知模块,适于每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
可选的,所述第一列续化模块、第一行续化模块、第二列续化模块、第二行续化模块包括:
统计模块,适于每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
起始标识计算模块,适于每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
向量连续化模块,适于每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。
参照图7,其示出了本发明一种矩阵数据元素标识连续化系统实施例二的结构示意图,包括:
N个计算节点;
所述每个参与计算的计算节点500包括:
数据读取模块510,每个参与计算的计算节点读取矩阵数据中按行分块的数据元素;
列散步和接收模块520,适于每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识;
第一行连续化模块530,适于每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
第一列连续化模块540,适于每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
第一通知模块550,适于每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
参照图8,其示出了本发明一种矩阵数据元素标识连续化系统实施例二的结构示意图,包括:
N个计算节点;
所述每个参与计算的计算节点600包括:
数据读取模块610,每个参与计算的计算节点读取矩阵数据中按列分块的数据元素;
行散步和接收模块620,适于每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
第二列续化模块630,适于每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
第二行续化模块640,适于每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
第二通知模块650,适于每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种矩阵数据元素标识连续化设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (18)

1.一种矩阵数据元素标识连续化方法,其特征在于,包括:
针对N个计算节点,每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
2.根据权利要求1所述的方法,其特征在于,所述每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素包括:
每个参与计算的计算节点读取矩阵数据中按行分块的数据元素,或者按列分块的数据元素。
3.根据权利要求2所述的方法,其特征在于,所述每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点包括:
每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
4.根据权利要求3所述的方法,其特征在于,所述每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识包括:
每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
5.根据权利要求4所述的方法,其特征在于,所述每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点包括:
每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
6.根据权利要求2所述的方法,其特征在于,所述每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点包括:
每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
7.根据权利要求6所述的方法,其特征在于,所述每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识包括:
每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
8.根据权利要求7所述的方法,其特征在于,所述每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点包括:
每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
9.根据权利要求4或7所述的方法,其特征在于,所述对向量进行连续化包括:
每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。
10.一种矩阵数据元素标识连续化系统,其特征在于,包括:
N个计算节点;
所述每个参与计算的计算节点包括:
数据读取模块,适于每个参与计算的计算节点读取矩阵数据中被分配给该计算节点的矩阵分块的数据元素;
散步和接收模块,适于每个参与计算的计算节点根据预置的数据标识散步规则,将所读取的数据元素中的数据标识保留在本地或者发送到相应的计算节点,并接收剩余N-1个计算节点发送的数据标识,获得由所述计算节点进行处理的最终数据标识;
连续化模块,适于每个参与计算的计算节点根据所述最终数据标识进行连续化,获得与每个数据标识相应的第一标识;
通知模块,适于每个参与计算的计算节点将第一标识与原数据标识的对应关系通知给其他计算节点。
11.根据权利要求10所述的系统,其特征在于,所述数据读取模块进一步适于:
每个参与计算的计算节点读取矩阵数据中按行分块的数据元素,或者按列分块的数据元素。
12.根据权利要求11所述的系统,其特征在于,
当每个参与计算的计算节点读取矩阵数据中按行分块的数据元素时,所述散步和接收模块包括:
列散步和接收模块,适于每个参与计算的计算节点根据阈值的列标识散步规则,将所读取的数据元素中的列标识保留在本地或者发送到相应的计算节点;并接收其他N-1个计算节点发送的列标识。
13.根据权利要求12所述的系统,其特征在于,所述连续化模块包括:
第一行连续化模块,适于每个参与计算的计算节点根据本地的行标识生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识;
第一列连续化模块,适于每个参与计算的计算节点对本地的列标识进行去重并生成列标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识。
14.根据权利要求13所述的系统,其特征在于,所述通知模块包括:
第一通知模块,适于每个参与计算的计算节点根据第一列标识与原列标识的对应关系,将第一列标识通知给其他计算节点。
15.根据权利要求11所述的系统,其特征在于,
当每个参与计算的计算节点读取矩阵数据中按列分块的数据元素时,所述散步和接收模块包括:
行散步和接收模块,适于每个参与计算的计算节点根据阈值的行标识散步规则,将所读取的数据元素中的行标识保留在本地或者发送到相应的计算节点;并接收其他计算节点发送的行标识。
16.根据权利要求15所述的系统,其特征在于,所述连续化模块包括:
第二列续化模块,适于每个参与计算的计算节点根据本地的列标识生成行标识向量,并对列标识向量进行连续化,获得与每个列标识相应的第一列标识;
第二行续化模块,适于每个参与计算的计算节点对本地的行标识进行去重并生成行标识向量,并对行标识向量进行连续化,获得与每个行标识相应的第一行标识。
17.根据权利要求16所述的系统,其特征在于,所述通知模块包括:
第二通知模块,适于每个参与计算的计算节点根据第一行标识与原行标识的对应关系,将第一行标识通知给其他计算节点。
18.根据权利要求14或16所述的系统,其特征在于,所述第一列续化模块、第一行续化模块、第二列续化模块、第二行续化模块包括:
统计模块,适于每个参与计算的计算节点i统计待计算的标识总数Ni,并将所述总数通知给其他计算节点;
起始标识计算模块,适于每个参与计算的计算节点根据各计算节点待计算的标识总数Ni,计算本节点起始的第一标识;
向量连续化模块,适于每个参与计算的计算节点根据本节点的起始的第一标识,对本节点的标识向量进行连续化,获得相应的第一标识。
CN201210518577.2A 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统 Active CN103049246B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510138373.XA CN104714782B (zh) 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统
CN201210518577.2A CN103049246B (zh) 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210518577.2A CN103049246B (zh) 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510138373.XA Division CN104714782B (zh) 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统

Publications (2)

Publication Number Publication Date
CN103049246A true CN103049246A (zh) 2013-04-17
CN103049246B CN103049246B (zh) 2015-06-10

Family

ID=48061899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210518577.2A Active CN103049246B (zh) 2012-12-05 2012-12-05 一种矩阵数据元素标识连续化方法和系统

Country Status (1)

Country Link
CN (1) CN103049246B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049487A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于连续化矩阵数据元素标识的方法和系统
CN104714782A (zh) * 2012-12-05 2015-06-17 北京奇虎科技有限公司 一种矩阵数据元素标识连续化方法和系统
CN105955713A (zh) * 2016-05-10 2016-09-21 河北省科学院应用数学研究所 基于样条插值与数据并行的数据处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0898236B1 (en) * 1997-08-20 2004-11-10 Toa Gosei Kabushiki Kaisha Method and apparatus for manifesting characteristic existing in symbolic sequence
CN1874538A (zh) * 2005-07-20 2006-12-06 华为技术有限公司 一种呼叫事件并发处理方法
CN102141976A (zh) * 2011-01-10 2011-08-03 中国科学院软件研究所 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法
CN103049487A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于连续化矩阵数据元素标识的方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0898236B1 (en) * 1997-08-20 2004-11-10 Toa Gosei Kabushiki Kaisha Method and apparatus for manifesting characteristic existing in symbolic sequence
CN1874538A (zh) * 2005-07-20 2006-12-06 华为技术有限公司 一种呼叫事件并发处理方法
CN102141976A (zh) * 2011-01-10 2011-08-03 中国科学院软件研究所 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法
CN103049487A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于连续化矩阵数据元素标识的方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
陈传伟: "并行计算机系统下的矩阵乘法", 《武汉科技学院学报》 *
齐路等: "基于Linux的RAID在线扩展功能的设计与实现", 《计算机工程》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049487A (zh) * 2012-12-05 2013-04-17 北京奇虎科技有限公司 用于连续化矩阵数据元素标识的方法和系统
CN104714782A (zh) * 2012-12-05 2015-06-17 北京奇虎科技有限公司 一种矩阵数据元素标识连续化方法和系统
CN103049487B (zh) * 2012-12-05 2015-09-30 北京奇虎科技有限公司 用于连续化矩阵数据元素标识的方法和系统
CN104714782B (zh) * 2012-12-05 2017-12-08 北京奇虎科技有限公司 一种矩阵数据元素标识连续化方法和系统
CN105955713A (zh) * 2016-05-10 2016-09-21 河北省科学院应用数学研究所 基于样条插值与数据并行的数据处理方法

Also Published As

Publication number Publication date
CN103049246B (zh) 2015-06-10

Similar Documents

Publication Publication Date Title
CN102426596B (zh) 地图加载方法和装置
CN104424199A (zh) 搜索方法和装置
CN102053977A (zh) 一种搜索结果生成方法及信息搜索系统
CN102254024A (zh) 海量数据处理系统及方法
CN107016501A (zh) 一种高效的工业大数据多维分析方法
CN105518625A (zh) 具有高带宽存储器接口的计算硬件
CN103036977A (zh) 基于内容分发网络的业务推送方法及推送系统
CN112527848B (zh) 基于多数据源的报表数据查询方法、装置、系统及存储介质
CN103823846A (zh) 一种基于图论的大数据存储及查询方法
Gu et al. Chronos: An elastic parallel framework for stream benchmark generation and simulation
CN102981911A (zh) 一种分布式消息处理系统及其中的设备和方法
CN103701906A (zh) 分布式实时计算系统及其数据处理方法
CN105491078A (zh) Soa系统中的数据处理方法及装置、soa系统
CN103049246A (zh) 一种矩阵数据元素标识连续化方法和系统
CN106156142A (zh) 一种文本聚类的处理方法、服务器及系统
CN103870563A (zh) 确定给定文本的主题分布的方法和装置
CN104866508B (zh) 在云环境下管理文件的方法与装置
CN103001967A (zh) 源站服务器和业务推送方法
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
CN104599092A (zh) 用于监控订单业务的方法及设备
CN103049487A (zh) 用于连续化矩阵数据元素标识的方法和系统
CN105338104A (zh) 业务请求响应方法、解析方法和系统
CN109684351A (zh) 一种执行计划查看方法、装置、服务器及存储介质
CN104714782A (zh) 一种矩阵数据元素标识连续化方法和系统
CN114996427A (zh) 基于智能问答的消息展示方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220727

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right