Многопоточный линейный решатель Eigen - с использованием предварительного кондиционера IncompleteLU с Bicgstab - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь решить большую разреженную матрицу с BICGSTAB в Eigen.Я должен выполнить код параллельно, и кажется, что предварительное условие IncompleteLU - единственный способ, которым мое решение сходится.Однако, когда я использую BIGSTAB с предварительным условием IncompleteLU, код запускается в последовательном режиме.Можно ли изменить BIGSTAB.h и использовать INcompleteLU вместо DigonalPreconditioner?

1 Ответ

0 голосов
/ 06 января 2019

BiCGSTAB может работать параллельно в Eigen, если ваш код скомпилирован с OpenMP.Это верно независимо от вашего выбора предварительного кондиционера.Однако, я полагаю, вы заметили, что предварительная обработка ILUT в Eigen является последовательной.Это алгоритмическое ограничение ILUT, а не проблема реализации, поэтому единственный способ обойти это - использовать другой прекондиционер.Для справки, ViennaCL, другая библиотека линейной алгебры, реализует некоторые интересные параллельные предварительные условия: http://viennacl.sourceforge.net/doc/manual-algorithms.html#manual-algorithms-preconditioners-parallel-ilu0.Если вам особенно интересен прекондиционер типа LU, вы можете прочитать статью Чоу и Пателя, которая реализована в ViennaCL: https://www.cc.gatech.edu/~echow/pubs/parilu-sisc.pdf.

...