我正在使用 ublas::Compressed Matrix 与稀疏线性求解器 UMFPACK 一起工作。由于我正在进行模拟,因此每次线性系统的构造都略有不同,这可能涉及放大/缩小系数矩阵和一些稀疏矩阵乘法。线性系统的规模约为 25k。
即使有用于 UMFPACK 的 boost 绑定补丁,我仍然需要不时更改矩阵,有时甚至计算非零值的数量也会很耗时(理想情况下,我必须给出数字初始化矩阵时的非零值)。此外,我使用 ublas::range 动态附加列/行。
所以我的问题是:有没有有效的方法来做到这一点?现在对我来说太慢了。转置一个尺寸为 15k 的矩阵花费近 6 秒,附加大约 12k 行很快(因为我猜它是一个行主矩阵),但将相同数量的列附加到矩阵可能花费高达 20 秒(我猜同样原因如上所述,所以即使我使用了列主矩阵,所需的总时间也是相同的)。
这里有点绝望。欢迎任何建议。
干杯。