¿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?


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, ¿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
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.