Download PLAPACK Parallel Linear Algrebra Package

Document related concepts
no text concepts found
Transcript
PLAPACK
(Parallel Linear Algebra Package)
Jesús Cámara Moreno
Programación Paralela y Computación de
Altas Prestaciones
Indice
„
„
„
„
„
„
„
„
„
„
„
„
Introducción
Enfoque Adoptado
Redistribución, Duplicación y Reducción de Vectores
Inicialización de PLAPACK. Funciones.
Templates. Funciones.
Linear Algebra Objects. Funciones.
Operaciones Vector-Vector
Operaciones Matriz-Vector
Operaciones Matriz-Matriz
Otras Funciones
Bibliografía
Anexos
Introducción
„
PLAPACK es una librería desarrollada en la Universidad de Texas en
Austin para la implementación paralela de algoritmos y aplicaciones
de álgebra lineal sobre supercomputadores de memoria distribuida.
„
Permite a desarrolladores de librerías, científicos e ingenieros explotar
el 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ón
„
PLAPACK no se debe confundir con una paralelización
de 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 Adoptado
„
PLAPACK 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 (objetos
referenciados dentro de matrices distribuidas y vectores
para direccionar sub-bloques de matrices y vectores)Æ
traducción línea a línea de un algoritmo por bloques dado.
Enfoque Adoptado
„
Physically 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 las
duplicaciones de datos necesarias al paralelizar algoritmos en álgebra lineal densa
… Enfoque 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 Vectores
Scatter
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.
Gather
Redistribución de Vectores
(Broadcast)
Scatter + Collect
Duplicación de Vectores
(MPI_Reduce_Scatter)
Distributed Reduction
Reducción de Vectores
Distributed Reduction
Reducción de Vectores
Aplicación de PBMD
„
„
Multiplicació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 cada
nodo.
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
Templates
„
En 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 Plantillas
„
Rutinas 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 Objects
„
„
Linear 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 LAO
„
Rutinas 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 LAO
„
Rutinas 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-Vector
„
En 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-Vector
„
Copia:
„
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-Vector
„
En 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-Vector
„
Multiplicación General Matriz-Vector:
ejemplo
Operaciones Matriz-Vector
„
Multiplicación Martiz_Simétrica – Vector
Operaciones Matriz-Vector
„
Multiplicación Martiz_Triangular – Vector
Operaciones Matriz-Vector
„
Triangular Solve
Operaciones Matriz-Matriz
„
En 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-Matriz
„
Multiplicación General de Matrices
Operaciones Matriz-Matriz
„
Multiplicación General de Matrices (cont.)
Operaciones Matriz-Matriz
„
Multiplicació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 Funciones
„
Copia 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 Funciones
„
Copia Especializada
Bibliografía
„
Robert 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/Gui
de/Guide_html.html
ANEXOS
Factorización de Cholesky
„ Inicialización de una Plantilla
„ Multiplicación Matriz-Vector
„ Resumen Rutinas PLAPACK
„
Factorización de Cholesky
„
Dada 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 Cholesky
„
Implementació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:
Factorización de Cholesky
„
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 acur
Si 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.
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