(parallel linear algebra package) - um

Post on 07-Jul-2022

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PLAPACK(Parallel Linear Algebra Package)

Jesús Cámara Moreno

Programación Paralela y Computación de Altas Prestaciones

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

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.

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.

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.

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.

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.

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.

Redistribución de VectoresG

athe

r

Duplicación de VectoresSc

atte

r+ C

olle

ct(B

road

cast

)

Reducción de VectoresD

istr

ibut

edR

educ

tion

(MPI

_Red

uce_

Scat

ter)

Reducción de VectoresD

istr

ibut

edR

educ

tion

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.

Funciones de Inicialización

Funciones de Inicialización

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.

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.

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

Funciones sobre Plantillas

ejemplo

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

Linear Algebra Objects

• Destructor de Objetos:

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.

Funciones sobre LAO

Funciones sobre LAO

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.

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)

Operaciones Vector-VectorCopia:

Intercambio de Contenido (swap):

Operaciones Vector-Vector

Escalado de un Vector:

Operaciones Vector-Vector

Sumar un Vector a un Vector Escalado:

Operaciones Vector-Vector

Producto:

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)

Operaciones Matriz-VectorMultiplicación General Matriz-Vector:

ejemplo

Operaciones Matriz-VectorMultiplicación Martiz_Simétrica – Vector

Operaciones Matriz-VectorMultiplicación Martiz_Triangular – Vector

Operaciones Matriz-Vector

Triangular Solve

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)

Operaciones Matriz-MatrizMultiplicación General de Matrices

Operaciones Matriz-Matriz

Multiplicación General de Matrices (cont.)

Operaciones Matriz-MatrizMultiplicación Matriz_Simétrica-Matriz

Operaciones Matriz-Matriz

Multiplicación Matriz_Triangular-Matriz

Otras Funciones

Conversión de Tipos (casting)

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

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.

Otras FuncionesCopia Especializada

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

ANEXOS

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

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.

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

Factorización de Cholesky

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

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

Inicializar una Plantilla Volver

Multiplicación Matriz-Vector Volver

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

Resumen de Rutinas PLAPACK

top related