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