[发明专利]基于mapreduce框架的超大规模稀疏矩阵乘法运算的方法在审
申请号: | 201410845357.X | 申请日: | 2014-12-31 |
公开(公告)号: | CN104462023A | 公开(公告)日: | 2015-03-25 |
发明(设计)人: | 蒋伟;姚键;潘柏宇;卢述奇 | 申请(专利权)人: | 合一网络技术(北京)有限公司 |
主分类号: | G06F17/16 | 分类号: | G06F17/16 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mapreduce 框架 超大规模 稀疏 矩阵 乘法 运算 方法 | ||
技术领域
本申请涉及一种矩阵乘法 ,具体的,涉及一种基于mapreduce框架的超大规模稀疏矩阵乘法运算的方法。
背景技术
矩阵乘法是线性代数中常见的问题之一,许多数值计算问题都包含着矩阵乘法的计算。因此,提高矩阵乘法算法运行速度问题,多年来一直引起算法研究者们的高度重视。在现有技术CN201310033884.6中,提出了一种将大矩阵乘法问题转换为适合mapreduce的操作,解决大规模矩阵乘法运算因为维度过大,在单机环境下因资源限制导致执行性能低下甚至无法执行的问题。但该操作需要4个mapreduce的job才能完成,仍然占据较大的内存和计算量,因此,如何能够减少计算量,更为快速有效的完成矩阵乘法的操作运算,便成为现有技术亟待解决的技术问题。
发明内容
本发明的目的在于提出一种基于mapreduce框架的超大规模稀疏矩阵乘法运算的方法,使得能够只需要2个mapreduce操作就可以完成超大规模系数矩阵的乘法,减少算法的运行步骤和时间。
为达此目的,本发明采用以下技术方案:
一种基于mapreduce框架下的大规模稀疏矩阵乘法运算的方法,即求矩阵C,使得C=A*B,其中A的存储格式为(i,k,Aik),B的存储格式为(k,j,Bkj),C的存储格式为(i,j,Cij),其中1≤i≤m, 1≤k≤n, 1≤j≤l,所述算法由2个mapreduce的job完成,包括如下步骤:
步骤1:第一个job,该job需要两个mapper和1个reduce完成:
(i) 生成mapper1:对矩阵A的每一个元素(i,k,Aik),输出一个key-value对, mapper1的key和value分别为key-value对的形式,其中,key为(k, A’),value为(i, Aik), A’为常数,表示属于矩阵A;
(ii) 生成mapper2:对矩阵B的每一个元素(k,j,Bkj),输出一个key-value对, mapper2的key和value分别为key-value对的形式,其中,key为(k,B”),value为(j, Bkj) , B”为常数,表示属于矩阵B;
(iii) partitioner : 将mapper1和mapper2输出的key-value对按照key中的key-value对中的key 的hash进行partition;
(iv) groupingComprator: 将mapper1和mapper2输出的key-value对按照key中的key-value对中的key进行分组;
(v) reduce: 对reduce的每一个分组,声明两个hashmap,记为hashmapA和hashmapB,对mapper1和mapper2中的每一个value,将所述value所采用的key-value对放到hashmap,如果mapper1和mapper2中的所述value对应的key的value是A’,则将mapper1和mapper2中的所述value放到hashmapA中, 如果mapper1和mapper2中的所述value对应key的value是B”,则将其放到hashmapB中,由于在mapper1和mapper2中,所述value采用的是key-value对的形式,则,所述hashmapA和hashmapB中的key为所述mapper的value的key,value为所述mapper的value的value;
(vi)对hashmapA的每一个元素(keyA,valueA)和hashmapB的每一个元素(keyB,valueB)做运算,输出一个key-value对,其中key为(keyA,keyB),value为valueA*valueB;
步骤2:第二个job,该job由一个mapper和一个reduce完成,
(i)mapper:对每一个元素之间输出原样输出
(ii)reducer: 对key相同的元素进行分组,对值进行累加。
因此,本发明对矩阵A和矩阵B的元素进行正确的分组,使得矩阵A的第i列的元素与矩阵B的第k行的元素进入到同一个reduce的group中,并对该group中每一个来自A的元素和来自B的元素做一次乘积。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合一网络技术(北京)有限公司,未经合一网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410845357.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:面向计算机辅助翻译的输入方法与装置
- 下一篇:一种单片机通用写入器硬件平台