Inversão esparsa Scipy ou spsolve levam a UMFPACK_ERROR_OUT_OF_MEMORY
Estou tentando inverter uma grande(150000,150000)
matriz esparsa da seguinte forma:
import scipy as sp
import scipy.sparse.linalg as splu
#Bs is a large sparse matrix with shape=(150000,150000)
#calculating the sparse inverse
iBs=splu.inv(Bs)
leva à seguinte mensagem de erro:
Traceback (most recent call last):
iBs=splu.inv(Bs)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/linsolve.py", line 134, in spsolve
autoTranspose=True)
File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/umfpack/umfpack.py", line 603, in linsolve
self.numeric(mtx)
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 0x7f2c76b1d320> failed with UMFPACK_ERROR_out_of_memory
Rejeitei o programa para simplesmente resolver um sistema de equações diferenciais lineares:
import numpy as np
N=Bs.shape[0]
I=np.ones(N)
M=splu.spsolve(Bs,I)
e encontro o mesmo erro novamente
Eu estava usando esse código em uma máquina com 16 GB de RAM e depois o movi para um servidor com 32 GB de RAM, sem sucesso.
Alguém encontrou isso antes?