0
鉴于非常稀疏的n×n个矩阵与A
NNZ (A)非零,和致密nxn的矩阵B
。我想计算矩阵产品AxB
。由于n非常大,如果天真地进行,密集矩阵B
不能放入存储器。我有以下两种选择,但不确定哪一种更好。你能提出一些建议吗?谢谢。分块矩阵 - 向量乘法
Option1。我将矩阵B
分成n列向量[b1,b2,...,bn]
。然后,我可以将矩阵A
和任何单个向量bi
放入内存中,并分别计算A*b1, A*b2, ..., A*bn
。
Option2。我分别将矩阵A
和B
分割成四个块,然后使用块矩阵 - 矩阵乘法计算A*B
。
以上哪个选择比较好?我可以说选项1在并行计算中有很高的性能吗?
...使用Eigen,Armedillo或其他第三方矩阵库,而不是重新发明轮子。 – IdeaHat
目前,我可能想知道以上两种选择的性能比较。 –
n的数量级可能很有用......显然'root(n)'会适合内存?所以也许它实际上超出了一个典型的(16 GB)工作内存集的范围? n可能是10^21或更少? – 2013-10-18 20:43:36