scipy.sparse.linalg.spsolve在Linux系统上的大型稀疏matrix的令人惊讶的行为

我正在计算一个线性系统Ax = b的解,其中A是一个大的(通常是200,000行和列,用于相关的稠密matrix)稀疏matrix和大约100列的稀疏matrix。

当我在Windows系统(Python 2.7scipy 0.14.0 )上运行我的代码时,使用以下命令

from scipy.sparse.linalg import spsolve ... Temp = spsolve(A.tocsc(),b.tocsc()) 

运行平稳,需要大约7 GB的RAM内存。

在Linux系统(相同的CPU,相同数量的RAM内存:64 GB,Linux Mint 17.3python 2.7 ,scipy 0.13.3 )上运行完全相同的代码需要超过20 GB的RAM内存,以下错误消息:

<function umfpack_di_numeric at ...> failed with UMFPACK_ERROR_out_of_memory (参见1 ) <function umfpack_di_numeric at ...> failed with UMFPACK_ERROR_out_of_memory

因为这个错误是依赖于操作系统的,所以我排除了有关matrixAB的任何问题(与本文中提到的一些解决scheme相反),我试图find一个特定于Linux的修复程序。但是我不知道从哪里开始…有没有人会知道发生了什么? 为什么这样的问题是针对Linux系统的?

请在下面find完整的错误信息:

Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1489, in __call__ return self.func(*args) File "...", line 1533, in mmvConstruction ... File "...", line 1555, in modes_cb Temp = spsolve(k[inter][:,inter].tocsc(),k[inter][:,exter].tocsc()) File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 151, in spsolve Afactsolve = factorized(A) File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 352, in factorized umf.numeric(A) File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/umfpack/umfpack.py", line 450, in numeric umfStatus[status])) RuntimeError:<function umfpack_di_numeric at ...> failed with UMFPACK_ERROR_out_of_memory

错误信息

更新 :仍然试图找出一个解决scheme…似乎Linux Mint上最新版本的BLAS是相当古老的:1.8.2。 在Windows上,我使用BLAS 1.9.1。 当使用test_numpy.py文件在这里可用: https : test_numpy.py我注意到Linux和Windows之间的非常显着的区别: Linux :版本1.8.2,maxint 9223372036854775807,点:0.76秒 – Windows :版本1.9.1,maxint 2147483647,点:0,037秒。 我正在调查Linux上的OPENBLAS是否可以解决这个问题

更新2:我意识到问题可能是硬件相关的。 事实上,在同一个Linux Mint发行版(Rosa 17.3)上使用完全相同的库的一台较老的PC提供了更令人满意的结果。 在第一次更新中提到的基准testing在这台旧PC上提供: Linux :version 1.8.2,maxint 9223372036854775807,dot:0,054 s。

Solutions Collecting From Web of "scipy.sparse.linalg.spsolve在Linux系统上的大型稀疏matrix的令人惊讶的行为"

那么经过彻底的调查,我现在深信,我所遇到的问题与Linux Mint(Rosa 17.3)可能不适合最新处理器的事实有关。

我在文章更新中提到的比较强调,软件安装是正确的。 然后我在PC上安装Fedora 23 ,按顺序安装:

  • libblas
  • 蟒蛇
  • 蟒蛇,SciPy的

然后我用完全相同的矩阵运行完全相同的代码,没有任何问题:内存消耗被限制在7 GB左右,类似于在Windows系统上观察到的情况。