提问人:JCut 提问时间:10/23/2023 最后编辑:JCut 更新时间:10/23/2023 访问量:25
使用特征函数在稀疏矩阵-矩阵积中重用模式
Reuse patterns in sparse matrix-matrix product with Eigen lilbrary
问:
我是数值计算的新手,对稀疏运算中的模式重用有一些疑问。
我有两个稀疏矩阵 和 ,它们的非零模式永远不会改变。A
B
我想以这种方式进行计算(使用 C++ 和 Eigen3.4 稀疏操作):C=A*B
Eigen::SparseMatrix<double> A, B, C;
// init A and B
while (/* something */) {
// update A and B, but non-zero patterns never change
C = A * B;
// use C
}
对于 ,我们可以假设每行中的条目和非零条目。A,B,C
N=10000~90000
5
这是我的问题:
的非零模式不应该改变,那么有什么方法可以利用这个属性呢?C
我不希望实际的实现是这样的:
为 分配内存
A*B
复制到(或重定向 to 的指针)。
A*B
C
C
A*B
这显然不是最佳选择。理想情况下,可以直接写入值,无需内存分配或移动。C
如果 Eigen 不能,其他 BLAS 库是否可以利用不变模式?
对不起,我在 Eigen 的文档中找不到相关讨论。 .noalias可以避免这个问题,但是.noalias
适用于密集矩阵。任何建议都可能有所帮助。先谢谢你!
答: 暂无答案
上一个:使用稀疏矩阵的非均匀域移动平均
下一个:检查恒定时间内是否存在边
评论