如果我scipy.linalg.solve
在我的工作站上使用(我相信它称为 LAPACK 的 gesv 函数)来解决 ~12000 个未知问题(使用 ~12000 方、密集、非对称矩阵),我会在10-15 分钟内得到一个很好的答案。
只是为了探索可能的极限(注意我没有说“有用”),我将潜在问题的分辨率提高了一倍,这导致需要解决约 50000 个未知数。虽然从技术上讲,一旦我添加了更多 10 GB 的交换空间,这将在我的工作站上运行,但使用一些具有足够 RAM 的硬件似乎更谨慎,因此我在 AWS EC2 高内存 Quadruple Extra Large 上启动了它。 .. 它在过去14 小时内一直在磨损(嘿,现场实例很便宜),并且无法判断它有多远。
不幸的是,我不知道所涉及的求解器的时间复杂度是多少(我的 google-fu 在这方面失败了)。如果是 O(N^2) 那么我预计它会在大约 4 小时后完成;如果是 O(N^3) 那么可能会在 16 小时内完成。当然,这将 N 解释为未知数的数量——它翻了两番——矩阵中的元素数量增加了 16 倍!
以及帮助我确定这是否有机会在我的(项目)生命周期内完成的建议,或者没有得到感激的建议!
其他信息:
稀疏矩阵在这里不感兴趣(我的矩阵是密集的,在任何情况下,即使在 64 位上,scipy 也不能处理超过2**31
非零的元素)。
我在工作站上使用 Debian/Squeeze 的 scipy,在 EC2 上使用 Ubuntu 12.04。显然都是64位。