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

C++ 使用C+中的armadillo lib将条目分配到稀疏矩阵中的任何更快的方法+;,c++,sparse-matrix,armadillo,C++,Sparse Matrix,Armadillo,从字面上说,我想把条目——Maaaany条目——放入armadillo模块提供的稀疏矩阵中。 如果我像下面这样做(B是Na X N^2矩阵) sp_cx_mat BB(Na*Na,N*N*Na); 对于(int i=0;i

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

sp_cx_mat BB(Na*Na,N*N*Na);
对于(int i=0;i
做这件事要花很多时间。(N和Na约为64或更像128~)
是否有任何有效的方法可以加快速度,包括内核或优化设置?我已经在使用OpenBLAS内核和AVX优化设置。

处理稀疏矩阵时会有开销。它们仅适用于绝大多数元素(90%+)为零的非常大的矩阵。内部表示本质上是矩阵的一个版本

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


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

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

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

有时安装更多内存或在更大的机器上运行算法更简单

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;
}