Ошибка сегментации Numpy для np.linalg.eigh()

#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