使用C ++中的armadillo lib将条目分配到稀疏矩阵的任何更快的方法

时间:2016-04-08 14:12:11

标签: c++ sparse-matrix armadillo

从字面上看,我想把条目 - maaaaany条目 - 放入armadillo模块提供的稀疏矩阵中。 如果我这样做如下(B是Na X N ^ 2矩阵)

sp_cx_mat BB(Na*Na, N*N*Na);    
for (int i = 0; i < Na; i++){
    BB(span(i*N, (i + 1)*N - 1), span(i*N*N, (i + 1)*N*N - 1)) = B;
}   

这需要花费很多时间。 (N和Na约为64或更高,如128~) 有没有有效的方法来加快速度,包括内核或优化设置?我已经在使用Open BLAS内核和AVX优化设置了。

1 个答案:

答案 0 :(得分:0)

处理稀疏矩阵存在开销。它们仅适用于绝大多数元素(90%+)为零的非常大的矩阵。内部表示基本上是矩阵的compressed版本。

如果元素的总数(零和非零)适合可用内存,则使用普通密集矩阵可能会更快。密集矩阵没有压缩的开销。

有时,在更大的机器上安装更多内存或运行算法会更容易。