基于mapreduce的大规模稀疏矩阵乘法运算的方法技术

技术编号:8715932 阅读:671 留言:0更新日期:2013-05-17 18:54
本发明专利技术提供一种基于mapreduce的大规模稀疏矩阵乘法运算的方法,假设大规模稀疏矩阵为A和B,A和B的乘积矩阵为C,方法包括:步骤10、由一个mapreduce Job完成转置矩阵A,输出矩阵A’;步骤20、变换矩阵B,将矩阵B中以坐标点的存储方式变换为以稀疏向量的存储方式,输出矩阵B’;步骤30、连接矩阵A’与B’,计算乘积分量,通过连接操作,得到Cij在矩阵A列号k与矩阵B行号k上的乘积分量;步骤40、合并乘积分量,通过累加乘积分量Cij_k计算Cij。将大规模矩阵乘法运算转换为转置、变换、连接与合并等适合mapreduce计算的基本操作,从而解决单机大矩阵乘法运算的资源限制问题。

【技术实现步骤摘要】

本专利技术涉及一种。
技术介绍
矩阵乘法是线性代数中常见的问题之一,许多数值计算问题都包含着矩阵乘法的计算。因此,提高矩阵乘法算法运行速度问题,多年来一直引起算法研究者们的高度重视。在研究界主要通过两种方式来达到目的:改进算法降低矩阵乘法的算法复杂度和矩阵乘法的算法并行化。第一种方法的研究成果表明,在矩阵规模不大情况下,降低算法复杂度的好处非常明显,对于nXn与nXn的矩阵乘法运算,最优方法的算法复杂度接近下限ηΧη。但在当今数据急剧膨胀的互联网时代,单纯的降低矩阵乘法的算法复杂度仍无法满足大规模矩阵乘法的存储和计算要·求。第二种方法通过对大矩阵进行分块,在不同的机器下并行地完成分块的矩阵乘法运算,然后合并分块的运算结果得到最终运算结果。mapreduce是一种基于函数的编程模型,具有接口简单,健壮容错的特点,因此mapreduce非常适合大规模数据的批量处理。本专利技术将大矩阵乘法问题转换为适合mapreduce的操作,解决大规模矩阵乘法运算因为维度过大,在单机环境下因资源限制导致执行性能低下甚至无法执行的问题。
技术实现思路
本专利技术要解决的技术问题,在于提供一种,将大规模矩阵乘法运算转换为转置、变换、连接与合并等适合mapreduce计算的基本操作,从而解决单机大矩阵乘法运算的资源限制问题,特别适用于大规模稀疏矩阵E级维度的矩阵。本专利技术是这样实现的:一种,假设大规模稀疏矩阵为A和B,A和B的乘积矩阵为C,A={(i, k, Aik) I i e ,k e ,Aik 关 0},B={(k,j,BkJ) I k e , j e , Bkj ^ 0},求矩阵C= KiJCij) I i e ,j e , 关 0},使得权利要求1.一种,其特征在于:假设大规模稀疏矩阵为A和B,A和B的乘积矩阵为C,A={(i, k, Aik) I i e ,ke , Aik 关 0},B={(k,j,BkJ) I k e ,je ,Bkj 关 0}, 求矩阵 C= KHCij) I i e ,j e [1,2…ILCij 关 0}, 使得2.根据权利要求1所述的,其特征在于:所述步骤10的mapreduce的过程具体为: 步骤ll、map函数读取矩阵A中的由记录位置与<i, k, Aik>构成的key-value对,然后输出由列号k与对应的稀疏向量partColumnVector〈i, Aik>构成的key-value对到中间结果,其中partColumnVector由<i,Aik>为元素构成的稀疏向量; 步骤12、combine函数合并mapper端的中间结果,输出格式与map函数输出一致;步骤13、reduce函数进一步合并combine函数输出的结果,将来自不同mapper的key相同的partColumnVector合并成完整的列向量columnVector,然后将由列号与columnVector构成的key-value对写到矩阵A’对应的文件路径; 步骤14、最终输出转置后的矩阵A’,其内容是由矩阵A的列号与列向量构成。3.根据权利要求1所述的,其特征在于:所述步骤20的mapreduce的过程具体为: 步骤21、map函数读取矩阵B中的由记录位置与<k, j, BkJ>构成的key-value对,然后输出由行号k与对应的稀疏向量partRowVector〈j, BkJ>构成的key-value对到中间结果,其中partRowVector由<j, Bkj>为元素构成的稀疏向量; 步骤22、combine函数合并mapper端的中间结果,输出格式与map函数输出一致;步骤23、reduce函数进一步合并combine函数输出的结果,将来自不同mapper的key相同的partRowVector合并成完整的行向量rowVector,然后将由行号与rowVector构成的key-value对写到矩阵B’对应的文件路径; 步骤24、最终输出转置后的矩阵B’,其内容是由矩阵B的行号与行向量构成。4.根据权利要求1所述的,其特征在于:所述步骤30的mapreduce的过程具体为: 步骤31、map函数将接收的key-value对直接输出到中间结果文件; 步骤32、reduce函数接收到key为k的记录,解析value_list提取columnVector与rowVector,然后将两个向量中的元素进行笛卡尔积连接,计算Cu在矩阵A列号k与矩阵B行号k上的乘积分量Cij k,最后将<i,j>作为key,Cij k作为value的键值对写到矩阵C’文件中。5.根据权利要求1所述的,其特征在于:所述步骤40的mapreduce的过程具体为: 步骤41、map函数将接收的key-value对直接输出到中间结果文件; 步骤42、reduce函数接收到key为<i, j>的记录,对value_list中元素进行求和操作,所得到的和即为Cu,最后将<i,j>`作为key,Cij作为value的键值对写到矩阵C文件中。全文摘要本专利技术提供一种,假设大规模稀疏矩阵为A和B,A和B的乘积矩阵为C,方法包括步骤10、由一个mapreduce Job完成转置矩阵A,输出矩阵A’;步骤20、变换矩阵B,将矩阵B中以坐标点的存储方式变换为以稀疏向量的存储方式,输出矩阵B’;步骤30、连接矩阵A’与B’,计算乘积分量,通过连接操作,得到Cij在矩阵A列号k与矩阵B行号k上的乘积分量;步骤40、合并乘积分量,通过累加乘积分量Cij_k计算Cij。将大规模矩阵乘法运算转换为转置、变换、连接与合并等适合mapreduce计算的基本操作,从而解决单机大矩阵乘法运算的资源限制问题。文档编号G06F7/523GK103106183SQ20131003388公开日2013年5月15日 申请日期2013年1月29日 优先权日2013年1月29日专利技术者刘德建, 陈宏展, 吴拥民, 刘飞荣 申请人:福建天晴数码有限公司本文档来自技高网...

【技术保护点】
一种基于mapreduce的大规模稀疏矩阵乘法运算的方法,其特征在于:假设大规模稀疏矩阵为A和B,A和B的乘积矩阵为C,A={(i,k,Aik)︱i∈[1,2…m],k∈[1,2…n],Aik≠0},B={(k,j,Bkj)︱k∈[1,2…n],j∈[1,2…l],Bkj≠0},求矩阵C={(i,j,Cij)︱i∈[1,2…m],j∈[1,2…l],Cij≠0},使得i=1,2,..,m;j=1,2,...,l;所述方法包括:步骤10、由一个mapreduce Job完成转置矩阵A,输出矩阵A’;步骤20、变换矩阵B,将矩阵B中以坐标点的存储方式变换为以稀疏向量的存储方式,输出矩阵B’;步骤30、连接矩阵A’与B’,计算乘积分量,通过连接操作,得到Cij在矩阵A列号k与矩阵B行号k上的乘积分量;步骤40、合并乘积分量,通过累加乘积分量Cij_k计算Cij。FDA00002788267600011.jpg

【技术特征摘要】

【专利技术属性】
技术研发人员:刘德建陈宏展吴拥民刘飞荣
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1