#python #numpy #python-multithreading #lapack
Вопрос:
Я вычислял собственное значение/функцию очень большой матрицы (32^3 на 32^3, так что 32768 на 32768), и функция np.linalg.eigh() дает ошибку сегментации к концу вычисления.
Я предполагаю, что это проблема с незаконным доступом к памяти (может быть, LAPACK?), Но кто-нибудь знает, как это решить? Моя оперативная память далека от переполнения, так как процесс занимал всего ~5 ГБ памяти. У меня 24 процессора с оперативной памятью 377 ГБ. Numpy для этого процесса я заметил, что он автоматически многопоточен, поэтому для вычисления собственных функций используются все 24 процессора.
Спасибо вам за вашу помощь!
Код, вероятно, не поможет, но на всякий случай:
from numpy import linalg as LA # something unrelated above print('Conversion: ', time.time()-start) start = time.time() v, w = LA.eigh(real) # SEGFAULT! print('ED: ', time.time()-start) # something unrelated below