¿Qué tan útil es PETSc para matrices densas?


14

Dondequiera que haya visto, el tutorial / documentos de PETSc, etc., dicen que es útil para el álgebra lineal y generalmente especifica que los sistemas dispersos se beneficiarán. ¿Qué pasa con las matrices densas? Me preocupa resolver para A densa .UNX=siUN

He escrito mi propio código para CG y QMR en Fortran. La construcción básica es separar el pseudocódigo y agregar rutinas BLAS siempre que sea posible ( ddot, dnrmy dgemv) con un poco de autoajuste. ¿Cómo se comparará esto con PETSc?

Sé que la mejor respuesta sería intentarlo yo mismo, pero por razones de tiempo y de otros, eso no es posible.

Cualquier ayuda es muy apreciada.

Respuestas:


7

Si tiene matrices densas con estructura (por ejemplo, transformaciones rápidas, complementos de Schur, etc.), PETSc podría ser útil. En estos casos, no ensamblará la matriz completa.

Para los sistemas densos ensamblados, PETSc actualmente usa PLAPACK, pero la distribución de matriz en formato nativo PETSc no es la mejor para minimizar la comunicación (para la mayoría de las operaciones). Jack Poulson, Matt Knepley y yo hemos discutido la posibilidad de portar el denso álgebra lineal de PETSc para usar Elemental , la biblioteca de álgebra lineal densa más moderna de Jack. Todavía no ha sucedido, pero lo haremos cuando tengamos tiempo.

Si desea una biblioteca de álgebra lineal densa con todas las funciones, use Elemental. Es probable que siempre tenga una API más completa para esas operaciones que PETSc. Si necesita interactuar con sistemas dispersos o sin ensamblar, es probable que tenga sentido seguir con PETSc y extraer lo que necesita para usar Elemental para las partes densas (o ayudarnos a escribir la interfaz PETSc en Elemental).


¿Cuál sería su respuesta si estuviera trabajando en un sistema de memoria compartida?
Investigación

1
Puede usar múltiples procesos MPI o múltiples pthreads. No veo mucho sentido escribir software paralelo que solo funcione con memoria compartida porque, por lo general, la localidad de memoria en la que piensa cuando escribe para memoria distribuida mejora el rendimiento en relación con todas las implementaciones, excepto las mejores. Si solo desea una API "serial" que use hilos internamente para álgebra lineal densa, puede usar un BLAS roscado.
Jed Brown

Quiero que mis códigos funcionen en mi estación de trabajo central Xeon 12 (no estoy viendo Clusters por ahora). Estoy usando Intel MKL para BLAS (roscado). ¿Seguiría recomendando que pruebe PETSc?
Investigación

Si todo lo que quiere es BLAS, está contento con él y ya ha escrito el código, simplemente utilícelo. Si desea más flexibilidad y / o la oportunidad de usar memoria distribuida, es posible que desee PETSc.
Jed Brown

Flexibilidad en términos de? Memoria distribuida?
Investigación

5

O(norte3)O(norte2)

Como mencionó que está en un sistema de memoria compartida, le habría recomendado libFLAME y / o PLASMA , pero no creo que ninguno de ellos sea significativamente más rápido que el BLAS roscado del proveedor para sus operaciones de nivel 1 y nivel 2.

Jed recomendó Elemental , que desarrollo, pero volveré a enfatizar que las operaciones de nivel 1 y nivel 2 no son el foco principal de las bibliotecas de álgebra lineal densa paralela. Sinceramente, nunca he comparado ninguna de esas rutinas.


Entonces, de lo que obtengo, cada biblioteca de álgebra lineal densa paralela posterior intentará optimizar operaciones como el cálculo de vectores propios, la solución del sistema en lugar de BLAS. Además, Elemental se ve realmente impresionante. Definitivamente lo intentaré cuando pueda.
Investigación del

Por lo general, optimizarán el nivel 3 BLAS. La razón es que la mayoría de las personas que usan la biblioteca harán grandes cálculos que generalmente pueden asignarse al nivel 3 BLAS.
Jack Poulson

¿Es porque BLAS 1/2 no puede mejorar? (¿Tal vez debido a la propiedad de superficie a volumen?) O (N ^ 2) datos y O (N ^ 2) cálculo?
Investigación del

Es porque BLAS 1 y 2 son generalmente términos de orden inferior en el cálculo. El 'juego' completo de álgebra lineal densa de alto rendimiento consiste en entrecerrar los ojos en cada operación de la manera correcta para que pueda llamar a xGEMM y amigos para la mayor parte del trabajo posible.
Jack Poulson

Además, sí, el hecho de que realizan aproximadamente la misma cantidad de fracasos que los memops es la razón por la que se evitan tanto como sea posible.
Jack Poulson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.