Matrix 使用apachehama实现大矩阵乘法

Matrix 使用apachehama实现大矩阵乘法,matrix,matrix-multiplication,hama,Matrix,Matrix Multiplication,Hama,我试着将稠密矩阵a乘以它的转置a’。矩阵大约有200万行和400列。我在hadoop map reduce中实现了乘法,但由于作业的非局部性(每个记录必须与其他记录相乘),它运行得太慢。因此,我尝试使用ApacheHama进行乘法。有一个名为DenseDoubleMatrix的类,但我认为它没有用,因为它似乎没有使用bsp在集群中分布计算 Hama中是否已经实现了矩阵乘法的任何其他工具,或者我必须使用bsp模型自己实现它?分析您是否真的需要该产品,或者是否有使用A或SVD的QR分解来提高数值稳定

我试着将稠密矩阵a乘以它的转置a’。矩阵大约有200万行和400列。我在hadoop map reduce中实现了乘法,但由于作业的非局部性(每个记录必须与其他记录相乘),它运行得太慢。因此,我尝试使用ApacheHama进行乘法。有一个名为DenseDoubleMatrix的类,但我认为它没有用,因为它似乎没有使用bsp在集群中分布计算


Hama中是否已经实现了矩阵乘法的任何其他工具,或者我必须使用bsp模型自己实现它?

分析您是否真的需要该产品,或者是否有使用A或SVD的QR分解来提高数值稳定性的算法可用。乘积A*A'在数值上是不好的,因为它是A的条件数的平方。我需要这个乘积,因为我需要计算ASo的所有行之间的点积,你需要计算Gram矩阵。然后,你用它做什么?例如,对于最小二乘问题,最好使用A的QR分解。通常,最好先计算QR分解,这里是A的QR分解。然后AA'=R'*Q'*QR=R'*R和R是一个更小的正方形矩阵。对于使用普通矩阵乘法的分布式计算,您可以尝试将矩阵划分为400x400个块。然后,您仍然需要分配5000x5000个矩阵块乘法,并且每个任务都有一个有用的大小,因此相对于数据大小和计算时间,通信开销较小。如果您已经这样做了,请在问题中注明。@LutzL,A=QR,A*A'=QR*(QR)'=QRR'Q'!=R'R