Download Conceptos básicos de segmentación
Document related concepts
Transcript
Bibliotecas de Álgebra Lineal
Dispersa
Avances en la Generación de Bibliotecas de Álgebra Lineal
Universidad Politécnica de Valencia
Marzo, 2006
Índice
Estructuras de datos “dispersas”
Vectores
Matrices
BLAS disperso
Introducción
Estándar TF
Funcionalidad TF
Sistemas lineales dispersos
Métodos directos
Métodos iterativos
Problemas de valores propios dispersos
Bibliotecas de Álgebra lineal dispersa
Estructuras de datos “dispersas”: Vectores
Un vector disperso se almacena realmente como dos vectores
Valores de
elementos
no nulos
X
INDX
10.0
-2.0
1.5
2.3
6.1
-6.4
4.3
8.0
1.9
9.7
0
4
5
6
11
12
23
25
47
53
Bibliotecas de Álgebra lineal dispersa
Índices de
elementos
no nulos
Estructuras de datos “dispersas”: Matrices
No hay un formato de almacenamiento globalmente óptimo para
representar matrices dispersas
Las ventajas de un formato concreto dependen de varios factores:
Algoritmo que actúa sobre la estructura de datos
Patrón de dispersión de la matriz
Arquitectura del computador
Formato original de los datos
Bibliotecas de Álgebra lineal dispersa
Estructuras de datos “dispersas”: Matrices
...Aunque sí hay algunos formatos más utilizados
Coordinado (por filas)
0
1
0
0.1
1
1.1
2
2.0
3
3.0
2
VAL
0.1
1.1
2.0
2.2
3.0
Valores
INDX
0
1
2
2
3
Índices
filas
JNDX
1
1
0
2
0
Índices
columnas
2.2
Bibliotecas de Álgebra lineal dispersa
Estructuras de datos “dispersas”: Matrices
0
Harwell-Boeing (por columnas) o formato comprimido por columnas
1
0
0.1
1
1.1
2
2.0
3
3.0
2
VAL
2.0
3.0
0.1
1.1
2.2
Valores
INDX
2
3
0
1
2
Índices
filas
JNDX
0
2
4
5
2.2
Bibliotecas de Álgebra lineal dispersa
Índices
inicio
columnas
Estructuras de datos “dispersas”: Matrices
También hay formatos para matrices dispersas por bloques
0,0
0,3
1,2
2,0
2.0
0.1
1.1
0.0
0.1
0.2
1.1
1.0
1.1
1.2
2.0
2.1
2.2
3.0
3.1
3.2
2.2
3.0
Bibliotecas de Álgebra lineal dispersa
BLAS disperso: Introducción
La falta de un formato de representación de matrices universal y la
dependencia que tienen los métodos de las características del problema
han provocado que no exista una única biblioteca globalmente
aceptada como estándar para problemas dispersos
Implementaciones BLAS disperso
NIST S-BLAS
PSBLAS
SparseLib++
Bibliotecas de Álgebra lineal dispersa
BLAS disperso: Estándar TF
La implementación del BLASTF disperso así como el formato de
almacenamiento de la matriz queda en manos de la biblioteca
El desarrollador de la biblioteca decide la estructura de datos óptima
para su problema, arquitectura, datos,...
Las matrices dispersas se manejan a través de descriptores (handles)
BLAS disperso incluye núcleos de cálculo, aunque en menor número que el
BLAS denso
BLAS disperso también incluye núcleos para la gestión de matrices
dispersas
Bibliotecas de Álgebra lineal dispersa
BLAS disperso: Funcionalidad TF
Operaciones de nivel 1 (Vectores)
void BLAS_xusdot
void BLAS_xusaxpy
void BLAS_xusga
void BLAS_xusgz
void BLAS_xussc
Bibliotecas de Álgebra lineal dispersa
BLAS disperso: Funcionalidad TF
Gestión de matrices dispersas:
#include “blas_sparse.h”
...
blas_sparse_matrix A; % Descriptor (int)
...
A = BLAS_duscr_begin( M, N );
for (i=0; i<nz; i++)
BLAS_duscr_insert_entry( A, val[i], indx[i], jndx[i] );
BLAS_uscr_end(A);
...
BLAS_usds(A);
Existen diferentes métodos de introducir elementos en la matriz dispersa,
así como de especificar propiedades de las matrices
Bibliotecas de Álgebra lineal dispersa
Sistemas lineales dispersos: Métodos directos
Calculan una factorización de la matriz con “bajo llenado” de los factores
PAQ = LU
El principal problema de los métodos directos es la explosión en el
número de elementos no nulos en los factores, aunque han mejorado
Habitualmente un método directo está compuesto por una serie de etapas:
1) Reordenación para minimización del llenado
2) Elaboración del grafo de dependencias de tareas
3) Algoritmo de factorización numérica
4) Algoritmo de resolución de sistemas triangulares lineales
La etapa 1) junto con la estrategia de pivotamiento determinan el llenado
Bibliotecas de Álgebra lineal dispersa
Sistemas lineales dispersos: Métodos directos
Existen multitud de paquetes de métodos secuenciales y paralelos:
GSPAR (de HSL)
UMFPACK 2.2, 3.2
MA41, MA48
MUMPS
PARDISO
SuperLU
WSMP
etc.
“Recent advances in direct methods for solving unsymmetric sparse systems of
linear equations”
A. Gupta
ACM TOMS, Vol. 28(3):301-324, 2002
Bibliotecas de Álgebra lineal dispersa
Sistemas lineales dispersos: Métodos iterativos
Aplican un esquema iterativo que, bajo ciertas condiciones, converge a la
solución
x k 1 = f A , x k
El principal problema de los métodos iterativos es la falta de
convergencia global o la lentitud de la convergencia. Para solucionar
este problema se suelen utilizar métodos de precondicionado
Bibliotecas de Álgebra lineal dispersa
Sistemas lineales dispersos: Métodos iterativos
En los métodos iterativos, la matriz dispersa suele aparecer involucrada en
operaciones del tipo matriz-vector:
Bajo coste
Preservan la estructura dispersa de la matriz
Los paquetes de métodos iterativos a menudo utilizan “comunicación
revertida” para dejar en manos del usuario el procedimiento para el cálculo
del producto. Los métodos iterativos en sí NO acceden a la matriz, sólo a
los resultados de las operaciones
Bibliotecas de Álgebra lineal dispersa
Sistemas lineales dispersos: Métodos iterativos
Existen diferentes familias de métodos iterativos:
Métodos básicos: Jacobi, Gauss-Seidel, SOR
Métodos de proyección
Métodos basados en subespacios de Krylov
También existen diferentes bibliotecas que implementan estos métodos:
BlockSolve95
CERFACS
ITPACK
LASPack
SPARSKIT
PETSc
etc.
Bibliotecas de Álgebra lineal dispersa
Problemas de valores propios dispersos
Los paquetes para la resolución de problemas de valores propios dispersos
están basados en los métodos iterativos de Lanczos y Arnoldi
En estos métodos, la matriz dispersa aparece en operaciones del tipo
producto matriz-vector o resolución de sistemas lineales
El modo de realizar estas operaciones queda en manos del usuario usando
“comunicación revertida”
Bibliotecas de Álgebra lineal dispersa
Problemas de valores propios dispersos
Ejemplo (ARPACK):
while (TRUE){
...
snaupd( &ido, &bmat, &n,..., &info );
if (ido == newprod)
matvec('A', n,...) /* Rutina del usuario, independiente
* de ARPACK.
*/
else
break
}
...
Bibliotecas de Álgebra lineal dispersa
Problemas de valores propios dispersos
Existen diferentes bibliotecas que implementan métodos iterativos para este
tipo de problemas
LZPACK
LASO
PARPACK
SLEPc
SPAM
etc.
Bibliotecas de Álgebra lineal dispersa