Qual a utilidade do PETSc para matrizes densas?

14

Onde quer que eu tenha visto, os tutoriais / documentos do PETSc etc. dizem que é útil para álgebra linear e geralmente especifica que sistemas esparsos serão beneficiados. E matrizes densas? Estou preocupado sobre como resolver para densa .AUMAx=bUMA

Eu escrevi meu próprio código para CG e QMR no Fortran. A construção básica é separar o pseudo-código e adicionar rotinas BLAS sempre que possível ( ddot, dnrme dgemv) com um pouco de autoajuste. Como isso se compara ao PETSc?

Eu sei que a melhor resposta seria tentar eu mesmo, mas por motivos de tempo e outros, isso não é possível.

Qualquer ajuda é muito apreciada.

Inquérito
fonte

Respostas:

7

Se você possui matrizes densas com estrutura (por exemplo, transformações rápidas, complementos de Schur, etc.), o PETSc pode ser útil. Nesses casos, você não estará montando a matriz completa.

Para sistemas densos montados, o PETSc atualmente usa o PLAPACK, mas a distribuição da matriz no formato nativo do PETSc não é a melhor opção para minimizar a comunicação (na maioria das operações). Jack Poulson, Matt Knepley e eu discutimos como portar a álgebra linear densa do PETSc para usar Elemental , a biblioteca de álgebra linear densa mais moderna de Jack. Ainda não aconteceu, mas faremos quando tivermos tempo.

Se você quiser uma biblioteca de álgebra linear densa com todos os recursos, use Elemental. É provável que sempre tenha uma API mais completa para essas operações do que o PETSc. Se você precisar interagir com sistemas esparsos ou desmontados, provavelmente faz sentido continuar com o PETSc e extrair o que você precisa para usar o Elemental nas partes densas (ou nos ajudar a escrever a interface do PETSc no Elemental).

Jed Brown
fonte
Qual seria sua resposta se eu estivesse trabalhando em um sistema de memória compartilhada?
Inquérito
1
Você pode usar vários processos MPI ou vários pthreads. Não vejo muito sentido em escrever software paralelo que funcione apenas com memória compartilhada, porque geralmente o local da memória em que você pensa ao escrever para a memória distribuída melhora o desempenho em relação a todas as implementações encadeadas, exceto as melhores. Se você deseja apenas uma API "serial" que utilize encadeamentos internamente para álgebra linear densa, poderá usar um BLAS encadeado.
precisa
Quero que meus códigos funcionem na minha estação de trabalho principal Xeon 12 (não estou vendo os Clusters a partir de agora). Estou usando o Intel MKL para BLAS (com rosca). Você ainda recomendaria que eu tentasse o PETSc?
Inquérito
Se tudo o que você quer é BLAS, você está feliz com ele e já escreveu o código, apenas use-o. Se você deseja mais flexibilidade e / ou a oportunidade de usar a memória distribuída, pode querer o PETSc.
precisa
Flexibilidade em termos de? Memória distribuída?
Inquérito
5

O(n3)O(n2)

Como você mencionou que está em um sistema de memória compartilhada, eu recomendaria libFLAME e / ou PLASMA , mas não acho que seja significativamente mais rápido do que o BLAS encadeado pelo fornecedor para as operações de nível 1 e 2.

Jed recomendou o Elemental , que desenvolvo, mas ressaltarei novamente que as operações de nível 1 e 2 não são o foco principal das bibliotecas paralelas de álgebra linear densa. Sinceramente, nunca comparei nenhuma dessas rotinas.

Jack Poulson
fonte
Portanto, pelo que entendi, toda biblioteca de álgebra linear paralela densa subsequente tentará otimizar operações como cálculo de vetor próprio, solução de sistema em vez de BLAS. Além disso, o Elemental parece realmente impressionante. Definitivamente vou tentar quando puder.
Inquérito
Eles normalmente otimizam o BLAS de nível 3. O motivo é que a maioria das pessoas que usa a biblioteca fará grandes cálculos que geralmente podem ser mapeados para o nível 3 do BLAS.
Jack Poulson
Isso acontece porque o BLAS 1/2 não pode melhorar? (Talvez por causa da propriedade superfície-volume?) Dados O (N ^ 2) e computação O (N ^ 2)?
Inquérito
É porque BLAS 1 e 2 são geralmente termos de ordem inferior no cálculo. Todo o 'jogo' da álgebra linear densa de alto desempenho é apertar os olhos a cada operação da maneira certa, para que você possa ligar para o xGEMM e os amigos pelo máximo de trabalho possível.
Jack Poulson
Além disso, sim, o fato de que eles realizam aproximadamente a mesma quantidade de flops que os memops é o motivo pelo qual são evitados o máximo possível.
Jack Poulson