60
PLAPACK (Parallel Linear Algebra Package) Jesús Cámara Moreno Programación Paralela y Computación de Altas Prestaciones

(Parallel Linear Algebra Package) - UM

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: (Parallel Linear Algebra Package) - UM

PLAPACK(Parallel Linear Algebra Package)

Jesús Cámara Moreno

Programación Paralela y Computación de Altas Prestaciones

Page 2: (Parallel Linear Algebra Package) - UM

IndiceIntroducciónEnfoque AdoptadoRedistribución, Duplicación y Reducción de VectoresInicialización de PLAPACK. Funciones.Templates. Funciones.Linear Algebra Objects. Funciones.Operaciones Vector-VectorOperaciones Matriz-VectorOperaciones Matriz-MatrizOtras FuncionesBibliografíaAnexos

Page 3: (Parallel Linear Algebra Package) - UM

IntroducciónPLAPACK es una librería desarrollada en la Universidad de Texas en Austin para la implementación paralela de algoritmos y aplicacionesde álgebra lineal sobre supercomputadores de memoria distribuida.

Permite a desarrolladores de librerías, científicos e ingenieros explotarel enfoque natural de codificación de algoritmos por bloques.

Se centra más en la distribución de los datos gran rendimiento y menos programación por parte del usuario.

Se aplica principalmente en problemas de álgebra lineal densa.

Utiliza MPI debajo de la capa de comunicación de PLAPACK.

El cómputo local realizado por PLAPACK depende en gran medida de las llamadas realizadas a operaciones implementadas por BLAS.

Page 4: (Parallel Linear Algebra Package) - UM

IntroducciónPLAPACK no se debe confundir con una paralelizaciónde LAPACK o un reempaquetado de ScaLAPACK.

LAPACK es una librería de para álgebra lineal densa en supercomputadores de memoria compartida. Hace uso de los niveles 1, 2, y 3 de BLAS para lograr portabilidad.

ScaLAPACK surge del intento por portar LAPACK a computadores de memoria distribuida, haciendo especial hincapié en una máxima reutilización del código a través de mínimos cambios en los componentes de LAPACK.

Page 5: (Parallel Linear Algebra Package) - UM

Introducción

¿Por qué surge PLAPACK?

Debido a la frustración del profesor Robert A. Van de Geijn en su intento por enseñar en un curso de post-grado Técnicas Paralelas para el desarrollo de Algoritmos Numéricos.

Podía explicar la implementación escalable de alto rendimiento de algoritmos como Multiplicación de Matrices o la Factorización de Cholesky sin llenar más de la mitad de una pizarra, pero la presentación del código real paralelo requería una explicación de llamadas a subrutinas con quince o treinta parámetros, por lo que el blocking usado al describir el algoritmo (requerido para lograr un alto rendimiento), no se traducía bien al código.

Page 6: (Parallel Linear Algebra Package) - UM

Enfoque AdoptadoPLAPACK intenta superar esta complejidad adoptando un enfoque de programación basada en objetos (usada en librerías de computación paralela de alto rendimiento como PETSc o MPI) con el objetivo de crear un código robusto y simplificar la implementación de la interfaz de la librería.

Las descripciones de matrices distribuidas y vectores en PLAPACK son almacenadas en objetos de álgebra lineal (Linear Algebra Objects).

También permite la utilización de vistas (objetosreferenciados dentro de matrices distribuidas y vectorespara direccionar sub-bloques de matrices y vectores)traducción línea a línea de un algoritmo por bloques dado.

Page 7: (Parallel Linear Algebra Package) - UM

Enfoque AdoptadoPhysically Based Matrix Distribution: distribución de los datos en una malla de procesos mediante la separación de los vectores asociados al problema y la asignación de sub-vectores a los nodos. La distribución de la matriz es entonces inducida por la distribución de estos vectores.

Intento de crear interfaces más razonables entre aplicaciones y librerías

Ventajas:

Reduce el overhead de la comunicación.Soporta y explota las comunicaciones colectivas requeridas para mejorar lasduplicaciones de datos necesarias al paralelizar algoritmos en álgebra lineal densaEnfoque por capas con operaciones de alto nivel para la implementación paralela de operaciones comunes del tipo matriz-vector y matriz-matriz.Simplifica enormemente la implementación de la infraestructura permite mucha más generalidad en futuras ampliaciones.Reduce la cantidad de código requerido en comparación con otras librerías de álgebra lineal densa.

Page 8: (Parallel Linear Algebra Package) - UM

Redistribución de VectoresSc

atte

r

Distribución de un vector como paso intermedio a través del cual la redistribución de filas y columnas de las matrices puede ser implementada en un enfoque de construcción de bloques.

Page 9: (Parallel Linear Algebra Package) - UM

Redistribución de VectoresG

athe

r

Page 10: (Parallel Linear Algebra Package) - UM

Duplicación de VectoresSc

atte

r+ C

olle

ct(B

road

cast

)

Page 11: (Parallel Linear Algebra Package) - UM

Reducción de VectoresD

istr

ibut

edR

educ

tion

(MPI

_Red

uce_

Scat

ter)

Page 12: (Parallel Linear Algebra Package) - UM

Reducción de VectoresD

istr

ibut

edR

educ

tion

Page 13: (Parallel Linear Algebra Package) - UM

Aplicación de PBMDMultiplicación Matriz-Vector: Ax = y

Se parte de que x e y éstán idénticamente distribuidos. Mediante la difusión del vector x en columnas, se duplican todos los elementos necesarios de x para que la multiplicación local matriz-vector de cada nodo puede comenzar.

Después de ejecutar esta multiplicación, como sólo una porción del vector y se conoce dentro de cada nodo, se realiza una reducción distribuida (MPI_Reduce_scatter) de los resultados locales parciales dentro de las filas de los nodos, dejando la parte apropiada del vector y resultante en cadanodo.

Multiplicación Matriz-Matriz:

La duplicación de vectores se realizaría duplicando la fila de la matriz dentro de la fila de nodos y la columna de la matriz dentro de la columna de nodos.

Page 14: (Parallel Linear Algebra Package) - UM

Funciones de Inicialización

Page 15: (Parallel Linear Algebra Package) - UM

Funciones de Inicialización

Page 16: (Parallel Linear Algebra Package) - UM

TemplatesEn lugar de describir directamente la distribución de cada vector y matriz individual, PLAPACK requiere que la distribución de los vectores y matrices sea descrita mediante una plantilla (template)

La distribución del resto de vectores y matrices se realizaráindicando su alineación con respecto a estas plantillas.

p.e, si el primer elemento del vector es alineado con el elemento i de la plantilla, el j-ésimo elemento será distribuido asignándolo al mismo nodo que el i+j-ésimo elemento de la plantilla del vector.

La plantilla de la matriz es distribuida a los nodos inducida por la plantilla del vector. El resto de matrices a ser distribuidas se alinean con respecto a esta plantilla de la matriz.

Page 17: (Parallel Linear Algebra Package) - UM

Funciones sobre Plantillas

Devuelve un objeto de tipo template, que es un puntero a la estructura de datos que contiene el mapeo de vectores y matrices a la malla de nodos.

Page 18: (Parallel Linear Algebra Package) - UM

Funciones sobre PlantillasRutinas de consulta: usadas para consultar información sobre la malla de nodos y la distribución de la plantilla.

Page 19: (Parallel Linear Algebra Package) - UM

Funciones sobre Plantillas

ejemplo

Page 20: (Parallel Linear Algebra Package) - UM

Linear Algebra ObjectsLinear Algebra Objects = Matrices y Vectores distribuidos.La información que describe a cada uno se codifica en un objeto.

Page 21: (Parallel Linear Algebra Package) - UM

Linear Algebra Objects

• Destructor de Objetos:

Page 22: (Parallel Linear Algebra Package) - UM

Funciones sobre LAORutinas de consulta: usadas para consultar información de los LAO creados e impedir que se pueda acceder directamente a la ED que codifica cada objeto.

Page 23: (Parallel Linear Algebra Package) - UM

Funciones sobre LAO

Page 24: (Parallel Linear Algebra Package) - UM

Funciones sobre LAO

Page 25: (Parallel Linear Algebra Package) - UM

Funciones sobre LAORutinas de Inicialización

Todas las rutinas de PLAPACK retornan un valor entero. Si es = 0 la rutina ha finalizado correctamente. Si es > 0 la rutina no finalizó bien y si es < 0 hay algún warning.

Page 26: (Parallel Linear Algebra Package) - UM

Operaciones Vector-VectorEn PLAPACK, las operaciones vector-vector están estratificadas como sigue:

PLAPACK proporciona llamadas independientes de la plataforma de nivel 1 de BLAS mediante la adición del prefijo PLA_ y proporciona 2 capas más:

El nivel global se emplea como medio de comunicación primario para que todos los nodos realicen simultáneamente la llamada a la función global, la cual realiza la llamada a BLAS sobre los objetos distribuidos.

Cuando un nodo llama al nivel local, es equivalente a extraer la información local de los objetos (tipo de datos, dimensiones y puntero al buffer) y a realizar localmente la operación en cuestión llamando a funciones del nivel de BLAS correspondiente precedidas por PLA_ (ejemplo)

Page 27: (Parallel Linear Algebra Package) - UM

Operaciones Vector-VectorCopia:

Intercambio de Contenido (swap):

Page 28: (Parallel Linear Algebra Package) - UM

Operaciones Vector-Vector

Escalado de un Vector:

Page 29: (Parallel Linear Algebra Package) - UM

Operaciones Vector-Vector

Sumar un Vector a un Vector Escalado:

Page 30: (Parallel Linear Algebra Package) - UM

Operaciones Vector-Vector

Producto:

Page 31: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-VectorEn PLAPACK, las operaciones vector-vector están estratificadas como sigue:

PLAPACK proporciona llamadas independientes de la plataforma de nivel 2 de BLAS mediante la adición del prefijo PLA_ y proporciona 2 capas más:

El nivel global se emplea como medio de comunicación primario para que todos los nodos realicen simultáneamente la llamada a la función global, la cual realiza la llamada a BLAS sobre los objetos distribuidos.

Cuando un nodo llama al nivel local, es equivalente a extraer la información local de los objetos (tipo de datos, dimensiones y puntero al buffer) y a realizar localmente la operación en cuestión llamando a funciones del nivel de BLAS correspondiente precedidas por PLA_ (ejemplo)

Page 32: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-VectorMultiplicación General Matriz-Vector:

ejemplo

Page 33: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-VectorMultiplicación Martiz_Simétrica – Vector

Page 34: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-VectorMultiplicación Martiz_Triangular – Vector

Page 35: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-Vector

Triangular Solve

Page 36: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-MatrizEn PLAPACK, las operaciones vector-vector están estratificadas como sigue:

PLAPACK proporciona llamadas independientes de la plataforma de nivel 3 de BLAS mediante la adición del prefijo PLA_ y proporciona 2 capas más:

El nivel global se emplea como medio de comunicación primario para que todos los nodos realicen simultáneamente la llamada a la función global, la cual realiza la llamada a BLAS sobre los objetos distribuidos.

Cuando un nodo llama al nivel local, es equivalente a extraer la información local de los objetos (tipo de datos, dimensiones y puntero al buffer) y a realizar localmente la operación en cuestión llamando a funciones del nivel de BLAS correspondiente precedidas por PLA_ (ejemplo)

Page 37: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-MatrizMultiplicación General de Matrices

Page 38: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-Matriz

Multiplicación General de Matrices (cont.)

Page 39: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-MatrizMultiplicación Matriz_Simétrica-Matriz

Page 40: (Parallel Linear Algebra Package) - UM

Operaciones Matriz-Matriz

Multiplicación Matriz_Triangular-Matriz

Page 41: (Parallel Linear Algebra Package) - UM

Otras Funciones

Conversión de Tipos (casting)

Copiar Contenido (los objetos han de tener la misma dimensión)

Page 42: (Parallel Linear Algebra Package) - UM

Otras FuncionesCopia Especializada: copia solo la porción superior/inferior de una matriz triangular o, más generalmente, la porción superior/inferior de una matriz trapezoidal.

Se adopta que el objeto de entrada determina la forma de los datos a copiar.

Page 43: (Parallel Linear Algebra Package) - UM

Otras FuncionesCopia Especializada

Page 44: (Parallel Linear Algebra Package) - UM

BibliografíaRobert A. Van de Geijn, Using PLAPACK, April,1997.

Página Principal (sw + documentación): http://www.cs.utexas.edu/users/plapack/

Manual de Usuario (en html):http://www.cs.utexas.edu/users/plapack/Guide/Guide_html.html

Page 45: (Parallel Linear Algebra Package) - UM

ANEXOS

Factorización de CholeskyInicialización de una PlantillaMultiplicación Matriz-VectorResumen Rutinas PLAPACK

Page 46: (Parallel Linear Algebra Package) - UM

Factorización de CholeskyDada una matriz cuadrada simétrica positivamente definida A, la factorización de Cholesky de A viene dada por la expresión: A=LLT, donde L es triangular inferior.

Page 47: (Parallel Linear Algebra Package) - UM

Factorización de CholeskyImplementación (machacando porción triangular inferior de A con L):

Observaciones:

El algoritmo no indexa explícitamente elementos individuales de la matriz original y referencia diferentes partes de la matriz actual, no la original.

Los bloques son referencias dentro de la matriz original.Se calcula factorización de A22 recursivamente, produciendo L22

Page 48: (Parallel Linear Algebra Package) - UM

Factorización de Cholesky

Usando PLAPACK, el código paralelo necesario para realizar la factorización sería:

Page 49: (Parallel Linear Algebra Package) - UM

Toda la información descrita por A (sus datos y cómo se distribuye en los nodos) es codificada en un objeto (estructura de datos) referenciado por a.

PLA_Obj_view_all crea una segunda referencia, acur, dentro de los mismos datos.

PLA_Obj_global_length extrae el tamaño actual de la matriz referenciada por acurSi es cero, la recursión ha terminado.

La llamada a PLA_Obj_split_4 particiona la matriz, creando nuevas referencias para los cuatro cuadrantes.

El elemento a11 es actualizado tomando su raíz cuadrada en la subrutina Take_sqrt.

a21 es escalado por 1/a11 llamando a PLA_Inv_scal y

Finalmente, la actualización de la matriz simétrica se logra mediante la llamada a PLA_Syr, que establece la siguiene iteración, correspodiente con el siguiente nivel de recursión en nuestro algoritmo original.

Factorización de Cholesky

Page 50: (Parallel Linear Algebra Package) - UM

Inicializar una Plantilla Volver

Page 51: (Parallel Linear Algebra Package) - UM

Multiplicación Matriz-Vector Volver

Page 52: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 53: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 54: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 55: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 56: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 57: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 58: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 59: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK

Page 60: (Parallel Linear Algebra Package) - UM

Resumen de Rutinas PLAPACK