分区矩阵 - 向量乘法

时间:2013-10-18 20:37:51

标签: c++ performance matrix parallel-processing

给定非常稀疏的 nxn 矩阵A,其中 nnz(A)非零,以及密集的 nxn 矩阵{ {1}}。我想计算矩阵乘积B。由于 n 非常大,如果天真地执行,则密集矩阵AxB不能放入存储器中。我有以下两个选项,但不确定哪个更好。你能提一些建议吗?感谢。

选项1。我将矩阵B分成 n 列向量B。然后,我可以将矩阵[b1,b2,...,bn]和任何单个向量A放入内存中,并分别计算bi

1选项。我将矩阵A*b1, A*b2, ..., A*bnA分别划分为四个 n / 2Xn / 2 块,然后使用块矩阵 - 矩阵乘法来计算B

以上哪种选择更好?我可以说选项1在并行计算中具有很高的性能吗?

1 个答案:

答案 0 :(得分:0)

有关两种方法的讨论,请参阅Scalapack文档中的this document中的两个密集矩阵。 Scalapack是分布式线性代数的参考工具之一。