Download Conceptos básicos de segmentación

Document related concepts

Subespacio de Krylov wikipedia , lookup

Matriz dispersa wikipedia , lookup

Matriz tridiagonal wikipedia , lookup

Método del gradiente conjugado wikipedia , lookup

Álgebra lineal numérica wikipedia , lookup

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