pré-condicionando um método krylov com outro método krylov


13

Em métodos como gmres ou bicgstab, pode ser atraente usar outro método de krylov como pré-condicionador. Afinal, eles são fáceis de implementar de maneira livre de matriz e em um ambiente paralelo. Por exemplo, um exemplo pode usar algumas (digamos ~ 5) iterações da bigcstab não condicionada como preconcionador para gmres ou qualquer outra combinação de métodos de krylov. Não encontro muita referência a essa abordagem na literatura, por isso espero que seja porque não é muito eficaz. Eu gostaria de entender por que não é eficiente. Existem casos em que é uma boa escolha?

Em minha pesquisa, estou interessado na solução de problemas elípticos 3d em um ambiente paralelo (mpi).


3
Os métodos do espaço de Krylov não são lineares. Portanto, eles não podem ser usados ​​como pré-condicionador em um método que espera um operador linear. Você poderia usá-lo no FGMRES. Mas eu não vejo por que eles devem melhorar o espectro
Guido Kanschat

Respostas:


14

Interessante que essa pergunta tenha sido ontem, pois acabei de concluir uma implementação ontem que faz isso.

Meu Histórico

Apenas para começar, deixe-me saber que, embora minha formação acadêmica seja de computação científica, todo o trabalho que fiz desde a graduação, incluindo meu doutorado atual. trabalho, tem sido em eletromagnetismo computacional. Então, acho que nossos antecedentes são um pouco parecidos, já que você também parece estar olhando para a física (com base no seu perfil).

FGMRES

Primeiro de tudo, o que você está procurando, como Guido Kanschat já mencionou em um comentário, é chamado GMRES Flexível ou FGMRES. A referência, incluindo o pseudocódigo, está em [1]. Embora eu às vezes ache um pouco difícil ler artigos numéricos do SIAM, [1] (e a maioria dos outros trabalhos de Saad, incluindo o brilhante [B1], aparentemente legalmente disponível gratuitamente on-line) é diferente; o artigo é uma leitura fascinante, muito claramente escrita e com alguns bons exemplos e sugestões de aplicações.

O FGMRES é fácil de implementar, principalmente se você já possui um GMRES pré-condicionado à DIREITA. Observe a palavra-chave DIREITA aqui - se você tiver um GMRES pré-condicionado à ESQUERDA, ou seja, você está acostumado a resolver MAx = Mb, precisará fazer algumas modificações. Compare [B1, algoritmo 9.4 na pág. 282] a [BI, algoritmo 9.5, pág. 284] Você também pode encontrar o FGMRES em [B1, Algoritmo 9.6, pág. 287], mas eu realmente encorajo você a ler [1], pois é curto, bem escrito e ainda possui muitos detalhes interessantes.

O que isso faz

O FGMRES basicamente permite que você troque os pré-condicionadores para cada iteração, se desejar. Uma das aplicações para isso é que você pode usar algum pré-condicionador que funcione muito bem quando você estiver longe da solução e depois mudar para outro quando chegar mais perto. [2], que não li em detalhes, parece discutir algo semelhante a isso.

No entanto, a aplicação mais interessante no meu caso foi que você poderia usar um GMRES (pré-condicionado) como pré-condicionador para o seu FGMRES. Esta é a razão por trás do nome típico para FGMRES, "GMRES interno-externo". Aqui, "externo" refere-se ao solucionador FGMRES, que (como pré-condicionador) usa um solucionador "interno".

Então, quão bom é isso na prática?

No meu caso, isso funcionou absolutamente brilhante. No circuito interno, "resolvo" uma formulação de complexidade reduzida do meu problema. Por si só, esta solução é muito imprecisa para o nosso uso, mas funciona absolutamente bem como pré-condicionador. Observe a solução "" around "" - não há necessidade de executar o solucionador interno para convergência, pois você está procurando apenas aproximações aproximadas. No meu caso, passei de 151 iterações, cada uma custando 64 segundos, para 72 iterações, cada uma custando 79 segundos (usei 5 iterações fixas no GMRES interno). Isso é uma economia total de uma hora, sem perda de precisão e muito pouco trabalho de codificação, pois já tínhamos um GMRES em funcionamento, que tornamos recursivo.

Para algumas aplicações desse material, demonstrando o desempenho potencial, consulte [3] (que realmente usa um FGMRES de três níveis, portanto FGMRES, com FGMRES como interno, com GMRES como interno) e [4], que pode ser muito aplicativo específico para o seu uso, mas contém vários casos de teste interessantes.

Referências

[1] Y. Saad, "Um algoritmo GMRES pré-condicionado flexível interno-externo", SIAM J. Sci. Comp., Vol. 14, n. 2, pp. 461–469, março de 1993. http://www-users.cs.umn.edu/~saad/PDF/umsi-91-279.pdf

[2] D.-Z. Ding, R.-S. Chen e Z. Fan, “Método GMRES flexível pré-condicionado SSOR para análise MLFMM da dispersão de objetos abertos”, Progress In Electromagnetics Research, vol. 89, pp. 339–357, 2009. http://www.jpier.org/PIER/pier89/22.08112601.pdf

[3] TF Eibert, “Alguns resultados de espalhamento calculados por técnicas de equação de superfície integral e técnicas híbridas de elementos finitos de elementos finitos, aceleradas pelo método multipolar rápido multinível”, IEEE Antennas and Propagation Magazine, vol. 49, n. 2, pp. 61–69, 2007.

[4] Ergül, T. Malas e L. Gürel, “Soluções de problemas eletromagnéticos em larga escala usando um esquema interno-externo iterativo com algoritmos multipolares rápidos multiníveis comuns e aproximados,” Progress In Electromagnetics Research, vol. 106, pp. 203–223, 2010. http://www.jpier.org/PIER/pier106/13.10061711.pdf

[B1] Y. Saad, Métodos iterativos para sistemas lineares esparsos. SIAM, 2003. http://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf


8

Esse método de subespaço Krylov aninhado pode funcionar muito bem na prática. Pode ser interessante para sistemas lineares não simétricos, para os quais o GMRES reiniciado estagna e o GMRES não reiniciado é muito caro ou usa muita memória. Alguma literatura:

  1. GMRESR: Uma família de métodos GMRES aninhados , van der Vorst, Vuik
  2. Métodos flexíveis de subespaço Krylov interno-externo , Simoncini, Szyld
  3. Um algoritmo GMRES pré-condicionado interno-externo flexível , Saad
  4. Outras experiências com GMRESR , Vuik
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.