Инверсия большой матрицы

Я пытаюсь взять обратную большую матрицу, общий размер которой составляет 1000 x 1000, но иногда превышает 100 000 x 100 000 (, которая в настоящее время не работает из-за времени и памяти ). Я знаю, что нормальное мнение — «не делай наоборот, найди другой способ сделать это», но в данный момент это невозможно. Причина этого связана с использованием уже созданного программного обеспечения, которое рассчитывает получить обратную матрицу. (Примечание. :Я ищу способы изменить это, но это займет много времени.)

На данный момент мы используем метод декомпозиции LU из численных повторных копий, и в настоящее время я тестирую собственную библиотеку. Библиотека eigen кажется более стабильной и немного быстрее, но я все еще нахожусь на этапе тестирования на точность. Я бегло просмотрел другие библиотеки, такие как ATLAS и LAPACK, но пока не проводил с ними серьезного тестирования.

Кажется, что собственная библиотека не использует параллельные методы для вычисления обратного (, хотя использует для факторизации LU часть обратного ), и, насколько я могу судить, ATLAS и LAPACK похожи в этом ограничении. (Сейчас я проверяю разницу в скорости для eigen с openMP и без него.)

Первый вопрос: может ли кто-нибудь объяснить, как можно оптимизировать инверсию матриц путем распараллеливания. Я нашел статью здесь , в которой говорится о параллельных алгоритмах обращения матриц, но я не понял. Кажется в этой статье говорится о другом методе? Я также не уверен, полезны ли scaLAPACK или PETSc?

Второй вопрос, я прочитал эту статью об использовании графических процессоров для повышения производительности,но я никогда не кодировал для графических процессоров и поэтому понятия не имею, что пытаюсь передать, но диаграммы внизу выглядели довольно тревожно. Как это вообще возможно, и как мне начать реализовывать что-то подобное, если это правда.

Я также нашел эту статью, у меня еще было время прочитать ее, чтобы понять, но она кажется многообещающей, поскольку память является актуальной проблемой нашего программного обеспечения.

Любая информация об этих статьях или проблемах в целом будет очень полезна. И еще раз прошу прощения, если этот вопрос покажется расплывчатым, при необходимости постараюсь расширить.

15
задан Amro 3 July 2013 в 15:06
поделиться