O PETSc já utiliza bibliotecas LAPACK para matemática matricial esparsa?


10

A compilação do PETSc com uma biblioteca externa BLAS / LAPACK afeta significativamente o desempenho em matrizes esparsas ou apenas usa essas bibliotecas para matemática densa de matriz?


Você pode usar a LU para pré-condicionar.
Stali #

Respostas:


10

O PETSc usa o BLAS para algumas primitivas de vetor, mas elas geralmente são limitadas pela largura de banda da memória e não há muita variação na "otimização"; portanto, tende a não fazer muita diferença de desempenho.

Ele também usa Lapack para algumas análises, como estimativas de Lanczos ou Arnoldi de autovalores e valores singulares, mas geralmente eles não são sensíveis ao desempenho.

As operações densas de "nível 3" geralmente só aparecem em um contexto sensível ao desempenho ao usar solucionadores diretos esparsos de bibliotecas de terceiros (por exemplo, MUMPS, SuperLU, UMFPACK); nesse caso, o preenchimento eventualmente leva a problemas densos que são grandes o suficiente para se beneficiarem. chamando BLAS.

Se você contar com esses solucionadores diretos esparsos aplicados a grandes problemas, vale a pena construir com uma implementação BLAS ajustada, caso contrário, fará pouca diferença.


Jed, como o PETSc usa o LAPACK para estimativa de valores próprios / singulares no caso de matrizes distribuídas? É então uma rotina em bloco ou ScaLAPACK?
2626 Alexander

A iteração Arnoldi gera uma matriz de dimensão Hessenberg igual ao número de iterações (digamos 30 ou 100). Os valores próprios ou singulares da matriz de Hessenberg são computados de forma redundante em cada processo usando LAPACK. Isso é muito mais rápido do que tentar fazê-lo em paralelo, pois os tamanhos são pequenos e os dados já estão distribuídos de forma redundante. Semelhante para Lanczos.
22412 Jed Brown
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.