¿PETSc utiliza las bibliotecas LAPACK para matemáticas de matriz dispersa?

10

¿Compilar PETSc con una biblioteca externa BLAS / LAPACK afecta significativamente el rendimiento en matrices dispersas, o solo usa esas bibliotecas para matemáticas de matriz densas?

Dan
fuente
Puede usar LU para el preacondicionamiento.
stali

Respuestas:

10

PETSc utiliza BLAS para algunas primitivas de vector, pero generalmente están limitadas por el ancho de banda de la memoria y no hay mucha variación en la "optimización", por lo que tiende a no hacer mucha diferencia de rendimiento.

También utiliza Lapack para algunos análisis, como las estimaciones de Lanczos o Arnoldi de valores propios y valores singulares, pero estos generalmente no son sensibles al rendimiento.

Las operaciones densas de "nivel 3" generalmente solo aparecen en un contexto sensible al rendimiento cuando se utilizan solucionadores directos dispersos de bibliotecas de terceros (por ejemplo, MUMPS, SuperLU, UMFPACK), en cuyo caso el llenado eventualmente conduce a problemas densos que son lo suficientemente grandes como para beneficiarse de llamando a BLAS.

Si confía en estos solucionadores directos dispersos aplicados a grandes problemas, entonces vale la pena construir con una implementación BLAS ajustada, de lo contrario, hace muy poca diferencia.

Jed Brown
fuente
Jed, ¿cómo usa PETSc LAPACK para la estimación de valores propios / singulares en el caso de matrices distribuidas? ¿Es entonces una rutina en bloque o ScaLAPACK?
Alexander
La iteración de Arnoldi genera una matriz de dimensión de Hessenberg igual al número de iteraciones (digamos 30 o 100). Los valores propios o singulares de la matriz de Hessenberg se calculan de forma redundante en cada proceso utilizando LAPACK. Esto es mucho más rápido que intentar hacerlo en paralelo ya que los tamaños son pequeños y los datos ya están distribuidos de forma redundante. Similar para Lanczos.
Jed Brown