Использование памяти растет бесконечно при использовании scipy.sparse.linalg.eigsh - PullRequest
0 голосов
/ 19 февраля 2019

Вот код:

# input:
# A : a large csr matrix (365 million rows and 1.3 billion entries), 32 bit float datatype

# get the two largest eigenvalues of A and the corresponding eigenvectors
from scipy.sparse.linalg import eigsh
(w,V) = eigsh(A,k=2,tol=10e-2,ncv=5)

Насколько я могу сказать, здесь не так много места, чтобы возиться, но я наблюдаю, что у моей машины изначально достаточно памяти(90G включая swap), но использование памяти eigsh медленно увеличивается во время выполнения, пока у меня не кончится память.Есть ли что-то очевидное, чего мне здесь не хватает?

Что я пробовал:

- Просмотр источника.Это много, но, насколько я мог видеть, между кодами python между итерациями не выделяется память.Я не так хорош в Фортране, но было бы неожиданно, если бы ARPACK или вызывающая подпрограмма выделяли память.

- Пробовал эквивалентную вещь в Octave (клон MATLAB), с похожими эффектами, хотя и менее очевидным, посколькутип данных обязательно имеет двойную точность и поэтому он более ограничен с самого начала.Так что, возможно, это может быть что-то с самим ARPACK?

- Гуглил кучу.Похоже, что Сципи где-то использовал (делал?) Круговую ссылку, что вызывало у других горе при многократном вызове eigsh, но я звоню один раз, так что, возможно, это не та проблема.

Любая помощьБуду очень признателен.

...