Большая матричная инверсия
Я смотрю на обратную матрицу большого размера, обычного размера 1000 x 1000, но иногда превышающую 100000 x 100000 (которая в настоящее время дает сбой из-за времени и памяти). Я знаю, что нормальным настроением является «не принимать обратное, найти какой-то другой способ сделать это», но в настоящий момент это невозможно. Причина этого заключается в использовании уже созданного программного обеспечения, которое рассчитывает получить обратную матрицу. (Примечание: я ищу способы изменить это, но это займет много времени)
В настоящее время мы используем метод декомпозиции LU из числовых списков, и в настоящее время я нахожусь в процессе тестирования собственной библиотеки. Собственная библиотека кажется более стабильной и немного более быстрой, но я все еще на стадии тестирования на точность. Я быстро ознакомился с другими библиотеками, такими как ATLAS и LAPACK, но пока не проводил каких-либо существенных испытаний с ними.
Кажется, что собственная библиотека не использует параллельные методы для вычисления обратного (хотя и для части обратного факторизации LU) и, насколько я могу судить, ATLAS и LAPACK похожи в этом ограничении. (В настоящее время я тестирую разницу в скорости для собственных с openMP и без.)
Первый вопрос: может кто-нибудь объяснить, как можно было бы оптимизировать инверсию матриц путем распараллеливания. Я нашел статьюВот что говорит о матричных инверсиях параллельных алгоритмов, но я не понял. Похоже на тоэтот статья рассказывает о другом методе? Я также не уверен, что scaLAPACK или PETSc полезны?
Второй вопрос я прочиталэтот статья об использовании графических процессоров для повышения производительности, но я никогда не программировал графические процессоры и поэтому понятия не имею, что пытается передать, но графики внизу выглядели довольно тревожно. Как это вообще возможно, и как мне начать реализовывать нечто подобное, если это должно быть правдой.
Я также нашелэтот У статьи, еще не было времени, чтобы прочитать ее, чтобы понять, но она кажется многообещающей, так как память является актуальной проблемой нашего программного обеспечения.
Любая информация об этих статьях или проблемах в целом будет очень полезна. И снова я прошу прощения, если этот вопрос кажется расплывчатым, я постараюсь расширить, если это необходимо.