从字面上看,我想把条目 - 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优化设置了。
答案 0 :(得分:0)
处理稀疏矩阵存在开销。它们仅适用于绝大多数元素(90%+)为零的非常大的矩阵。内部表示基本上是矩阵的compressed版本。
如果元素的总数(零和非零)适合可用内存,则使用普通密集矩阵可能会更快。密集矩阵没有压缩的开销。
有时,在更大的机器上安装更多内存或运行算法会更容易。