Параллельный метод для получения всех собственных значений большой разреженной матрицы - PullRequest
0 голосов
/ 07 января 2020
  1. Можно ли вычислить все собственные значения большой разреженной матрицы с использованием нескольких процессоров ?

  2. Если да, то возможно ли это сделать без сохранения полной плотной матрицы в памяти? (используя только сохраненную разреженную матрицу)

  3. Если да, то какой хороший ( быстрое и низкое использование памяти ) способ сделать это ?

  4. Может numpy или scipy сделать это?

Моя матрица сложная , не эрмитово , как разреженный как единичная матрица и размерности N x N, где N = BinomialCoefficient(L,Floor(L/2)), где нам нужно взять L как можно большего .

Например, при L = 20, N = 184 756 он составляет 99,9995% разреженных, имея только N ненулевых элементов. Таким образом, использование памяти разреженной матрицы составляет ~ 0,1 ГБ, но для плотной матрицы будет ~ 10 ТБ. С L = 30, N = 155 117 520 и мы используем ~ 60GB (разреженный) и ~ 10EB (плотный). Поэтому невозможно хранить полную плотную матрицу в памяти.

У меня есть доступ к процессорам Intel® Gold 6148 Skylake @ 2,4 [ГГц] с объемом оперативной памяти до 752 [ГБ] каждый. Я мог бы использовать Python, C (ScaLAPACK, OpenBLAS, MAGMA, ELPA, MUMPS, SuperLU, SuiteSparse, PETS c, Lis, ...), C ++ (Armadillo, Eigen, BLitz ++, Trilinos, ... ), Matlab, R, Perl, Fortran, mpi4py, CUDA, Intel® Math Kernel Library и несколько других программ.

Я строю свою матрицу, используя Python (scipy.sparse, numpy и multiprocessing). Я пытался использовать numpy.linalg.eigvals() и scipy.linalg.eigvals(), но кажется, что они используют только ядра одного процессора. Я мог бы углубиться в это, но я не смогу, если есть лучший способ решить мою матрицу.

Для любопытных моя матрица исходит из представления неэрмитова оператора на подмножестве состояний длина L квант спин 1/2 цепочка с сильными взаимодействиями. Мне нужен полный спектр, потому что он позволяет мне изучать распределение уровней энергии в спектре для фиксированного набора квантовых чисел.

Я далеко не профессионал в области компьютерных наук, поэтому, если я пропустил некоторые основа c концепция, пожалуйста, будь добр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...