Você está na página 1de 24

Reordenamiento para la factorizacin Cholesky

MSc. Miguel Vargas-Flix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas

13/09/11

1/24

Contenido

Contenido
Factorizacin Cholesky para matrices ralas Reordenamiento de renglones y columnas Matrices de permutacin Representacin de matrices ralas como grafos Algoritmos de reordenamiento Usando la librera METIS para reordenar matrices Preguntas? Bibliografa

13/09/11

2/24

Factorizacin Cholesky para matrices ralas

Factorizacin Cholesky para matrices ralas


Describiremos tres estrategias para disminuir el tiempo y uso de memoria en la factorizaciones Cholesky: 1. Reordenar los renglones y columnas de la matriz del sistema de ecuaciones para reducir el tamao de las matrices resultantes de la factorizacin. 2. Utilizar la factorizacin Cholesky simblica para obtener la factorizacin exacta y formar con sta matrices ralas sin elementos cero. 3. Seleccionando la secuencia de llenado de la factorizacin es posible paralelizar [Heat91]. Para matrices ralas, resultantes de problemas de elemento finito, al utilizar 1 y 2 se puede reducir la complejidad del algoritmo a casi O ( n ), tanto en tiempo de ejecucin como en memoria utilizada. Las estrategias anteriores son aplicables tambin a la factorizacin LU aplicada a matrices no simtricas en cuanto a sus valores, pero simtricas con respecto a su estructura.
13/09/11 3/24

Reordenamiento de renglones y columnas

Reordenamiento de renglones y columnas


Buscamos reordenar los renglones y las columnas de A, de tal forma que se reduzca el nmero de entradas no cero de la matriz factor L. Recordemos la notacin ( L ), que indica el nmero de elementos no cero de L.

A=

L=

A la izquierda est una matriz de rigidez A556556, con ( A )=1810, a la derecha la matriz triangular inferior L, con ( L )=8729, resultante de la factorizacin Cholesky de A.
13/09/11 4/24

Reordenamiento de renglones y columnas

Ahora con reordenamiento tenemos que la matriz de rigidez A' con ( A ' )=1810 (con la misma cantidad de elementos no nulos que A) y su factorizacin L' tiene ( L ' )=3215. Ambas factorizaciones permiten resolver el mismo sistema de ecuaciones.

A' =

L'=

Es decir reducimos la factorizacin ( L ' )=3215 =0.368. ( L )=8729 Para determinar este reordenamiento utilizamos las rutinas de la librera METIS [Kary99].
13/09/11 5/24

Matrices de permutacin

Matrices de permutacin
Dada P una matriz de permutacin, las permutaciones (reordenamientos) de columnas del tipo A' P A, o de rengln A' A P solas destruyen la simetra de A [Golu96 p148]. Para preservar la simetra de A solamente podemos considerar reordenamiento de las entradas de la forma A' P A P T. Es de notar que esta permutaciones no mueven los elementos fuera de la diagonal a la diagonal. La diagonal de P A P T es un reordenamiento de la diagonal de A. Dado que P A P T es adems simtrica y positiva definida para cualquier permutacin de la matriz P, podemos entonces resolver el sistema reordenado ( P A P T ) ( P x )=( P b ). La eleccin de P tendr un efecto determinante en el tamao de las entradas no cero de L. Calcular un buen reordenamiento de la matriz A que minimice las entradas no cero de L es un problema NP completo [Yann81], sin embargo existen heursticas que generan un reordenamiento aceptable en un tiempo reducido.
13/09/11 6/24

Representacin de matrices ralas como grafos

Representacin de matrices ralas como grafos


Un grafo G= ( X , E ) consiste en un conjunto finito de nodos o vrtices X junto con un conjunto E de aristas, los cuales son pares no ordenados de vrtices. Un ordenamiento (o etiquetado) de G es simplemente un mapeo del conjunto { 1, 2,, N } en X , donde N denota el nmero de nodos de G. El grafo ordenado por ser denotado como G =( X , E ). Sea A una matriz simtrica de N N , el grafo ordenado de A, denotado por G A =( X A , E A ) en el A cual los N vrtices de G A estn numerados de 1 a N , y { x i , x j }E si y solo s ai j =a j i0 , i j. Aqu x i denota el nodo de X A con etiqueta i.

1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * * Matriz A
13/09/11

2 4 5 6

Grafo G

7/24

Representacin de matrices ralas como grafos

Para cualquier matriz de permutacin P I , los grafos no ordenados (o etiquetados) de A y P A P T son los mismos pero su etiquetado asociado es diferente. As, un grafo no etiquetado de A representa la estructura de A sin sugerir un orden en particular. Esta representa la equivalencia de las clases de matrices P A P T. Entonces, encontrar una buena permutacin de A equivale a encontrar un buen ordenamiento de su grafo [Geor81].

1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * * Matriz P A P
T
13/09/11

2 1 4 5

Grafo G

P AP

8/24

Representacin de matrices ralas como grafos

Dos nodos x , y X en un grafo G ( X , E ) son adyacentes si { x , y }E . Para Y X , el conjunto adyacente de Y , denotado como ady ( Y ), es adj ( Y )= { x X Y { x , y }E para algn yY }. En otras palabras, ady (Y ) es simplemente el conjunto de nodos en G que no estn en Y pero son adyacentes en al menos un nodo de Y .

1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * *

2 4 5 6

Y ={ x 1 , x 2}

adj Y = { x 3 , x 4 , x 6 } gr x 2 =3 Ejemplo de adyacencia de un conjunto Y X .


13/09/11 9/24

Representacin de matrices ralas como grafos

Para Y X , el grado de Y , denotado por gr ( Y ), es simplemente el nmero ady ( Y ), donde S denota el nmero de miembros del conjunto S . En el caso de que se trate de un solo elemento, consideraremos gr ( { x 2 })gr ( x 2 ).

1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * *

2 4 5 6

Y ={ x 1 , x 2}

adj Y = { x 3 , x 4 , x 6 } gr x 2 =3 Ejemplo de adyacencia de un conjunto Y X .

13/09/11

10/24

Algoritmos de reordenamiento

Algoritmos de reordenamiento
Vamos a hablar muy brevemente de los algoritmos de reordenamiento. La heurstica ms comn utilizada para realizar el reordenamiento es el algoritmo de grado mnimo. La versin bsica de ste [Geor81 p116] es: Dada un matriz A y su correspondiente grafo G 0 i 1 repetir En el grafo de eliminacin G i1 ( X i1 , E i1 ), elegir un nodo x i que tenga grado mnimo. Formar el grafo de eliminacin G i ( X i , E i ) como sigue: Eliminar el nodo x i de G i1 y sus aristas inicidentes Agregar aristas al grafo tal que los nodos adj ( x 1 ) sean pares adyacentes en G i. i i+1 mientras i< X Cuando el grado mnimo se presenta en varios nodos, usualmente se elige uno de forma arbitraria.
13/09/11 11/24

Algoritmos de reordenamiento

A continuacin un ejemplo de una secuecia dada por el algoritmo de grado mnimo:


i Grafo de eliminacin G i1
1 2 4 5 6 1 2 3 3

xi

gr ( x i )

2
6 1 5 3

3
6 5

13/09/11

12/24

Algoritmos de reordenamiento

Grafo de eliminacin G i1
1

xi
5

gr ( x i )
2

4
6 5 1 6

5 6

1 6

1 0

La secuencia de eliminacin es entonces 4, 2, 3, 5, 1, 6. ste es el nuevo orden para la matriz A, lo que equivale a una matriz de permutacin 0 0 0 P= 0 1 0

( )
0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0
13/09/11

0 0 0 . 0 0 1

Versiones ms avanzadas de este algoritmo pueden consultarse en [Geor89].


13/24

Algoritmos de reordenamiento

Ahora vamos a revisar brevemente el mtodo de diseccin anidada, el cual es ms apropiado para matrices resultantes de problemas de diferencias finitas y elemento finito. La principal ventaja de este algoritmo comparado con el de grado mnimo es la velocidad y el poder predecir las necesidades de almacenamiento. La ordenacin producida es similar a la del algoritmo de grado mnimo. Vamos a introducir la definicin de separador. El conjunto S X es un separador del grafo conectado G si el grafo seccin G ( X S ) est desconectado. Se muestra que S = { x 3 , x 4 , x 5 } es un separador de G, dado que G ( X S ) tiene tres componentes, los conjuntos de nodos { x 1 }, { x 2 } y { x 6 , x 7 }:
5 1 2 3

4 6 7
13/09/11 14/24

Algoritmos de reordenamiento

Sea A una matriz simtrica y G A su grafo no dirigido asociado. Consideremos un separador S en G A, cuya remocin desconecta el grafo en dos conjuntos de nodos C 1 y C 2. Si los nodos en S son numerados despus de aquellos de C 1 y C 2, entonces se inducir una particin en la correspondiente matriz ordenada. La observacin principal es que los bloques cero en la matriz continan siendo cero despus de la factorizacin. Cuando es elegido apropiadamente, una submatriz grande est garantizada de permanecer cero. La idea puede ser aplicada recursivamente, de tal forma que los ceros puedan ser preservados en la misma forma en las submatrices.

C1

C2 S

A1 0 V 1 0 A2 V 2 V T V T AS 1 2

]
15/24

El efecto de un conjunto separador

S en una matriz.

Esta procedimiento aplicado de forma de forma recursiva se conoce como algoritmo de diseccin anidada generalizado [Lipt77].
13/09/11

Algoritmos de reordenamiento

La idea es tratar de dividir el grafo tratando de que sean de igual tamao con un separador pequeo. Para encontrar este separador se busca generar una estructura grande y entonces elegir un separador de un nivel medio. Este es un algoritmo recursivo que emplea la estrategia de divide y vencers, a continuacin describimos el algoritmo. Sea S una clase de grafos cerrados en los cuales se cumple el teorema del separador n [Lipt79]. Sean , constantes asociadas con el teorema del separador y sea G ( X , E ) un grafo de n nodos en S . El algoritmo es recursivo y numera los nodos de G tal que la eliminacin gaussiana rala (factorizacin Cholesky rala) es eficiente. El algoritmo supone que l de los nodos de G ya contienen nmeros asignados, cada uno de los cuales es ms grande que b (se explica ms adelante). El objetivo es numerar los nodos restantes de G consecutivamente de a a b. Se inicia el algoritmo con todos los nodos de G no numerados, con a 1, b n y l 0. Esto enumerar los nodos en G de 1 a n. En este algoritmo los nodos en el separados son incluidos en la llamada recursiva pero son no numerados. Una versin mejorada del algoritmo es la empleada en la librera METIS [Kary99].
13/09/11 16/24

Algoritmos de reordenamiento

Sea dado G ( X , E ) inicio 2 si G ( 1 ) Los nodos son ordenados arbitrariamente de a a b (puede utilizarse el algoritmo de grado mnimo) si_no Encontrar conjuntos A, B y C que satisfagan el teorema del separador n, donde C es el conjunto separador. Al remover C se divide el resto de G en dos conjuntos A y B los cuales no tienen que ser conexos. Sea A conteniendo i nodos no numerados, B contiene j y C contiene k nodos no numerados. Numerar los nodos no numerados en C de forma arbitraria de bk +1 a b, es decir, estamos asignando a los nodos de C los nmeros ms grandes. Eliminar todos las aristas cuyas conexiones estn ambas en C. Aplicar el algoritmo recursivamente al subgrafo inducido por BC para numerar los nodos no numerados en B de a bk j+1 a b bk. Aplicar el algoritmo recursivamente al subgrafo inducido por AC para numerar los nodos no numerados en B de a bk ji+1 a b bk j. fin_si fin

13/09/11

17/24

Usando la librera METIS para reordenar matrices

Usando la librera METIS para reordenar matrices


Es una librera para particionar grafos y adems tiene rutinas para reordenar matrices: http://glaros.dtc.umn.edu/gkhome/metis/metis/overview Vamos a utlizar la funcin METIS_NodeND. void METIS_NodeND(int* n, idxtype* xadj, idxtype* adjncy, int* numflag, int* options, idxtype* perm, idxtype* iperm) Esta funcion calcula un reordenamiento que reduce el fill-in de la factorizacin de una matriz rala, utiliza el algoritmo multinivel de diseccin anidada.
n Number of nodes in the graph xadj, adjncy The adjacency structure of the graph. numflag Used to indicate which numbering scheme is used for the adjacency structure of the graph. numflag can take the following two values: 0 C-style numbering is assumed that starts from 0 1 Fortran-style numbering is assumed that starts from 1 options This is an array of 8 integers that is used to pass parameters for the various phases of the algorithm. If options[0]=0 then default values are used. perm, iperm These are vectors, each of size n. Upon successful completion, they store the fillreducing permutation and inverse-permutation.
13/09/11 18/24

Usando la librera METIS para reordenar matrices

Ejemplo
1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * * Matriz A
13/09/11

2 4 5 6

Grafo G

int n = 6; int xadj[7] = {1, 3, 6, 8, 9, 11, 13}; int adjncy[12] = {2, 6, 1, 3, 4, 2, 5, 2, 3, 6, 1, 5}; int numflag = 1; int options[8] = {0, 0, 0, 0, 0, 0, 0, 0}; int perm[6]; int iperm[6]; METIS_NodeND(&n, xadj, adjncy, &numflag, options, perm, iperm);
19/24

Usando la librera METIS para reordenar matrices

Resultado
perm = {4, 2, 6, 5, 3, 1} iperm = {6, 2, 5, 1, 4, 3}

1 2 3 4 5 6 1 2 3 4 5 6

[ ]
* * * * * * * * * * * * * * * * * * Matriz P A P
T
13/09/11

2 1 4 3

Grafo G

P AP

Vamos a utilizar perm e iperm para reordenar la matriz A y el vector b.

20/24

Usando la librera METIS para reordenar matrices

Reordenamiento
Para reordenar la matriz rala A a partir de perm e iperm, para obtener Ar = P A P T , podemos utilizar el siguiente algoritmo: para i 1n j permi Reservar espacio en J i ( A r ), tal que J i ( Ar )=J j ( A ) para k 1J j ( A ) l J kj ( A ) m iperm l J k ( Ar ) m i V ik ( Ar ) V kj ( A ) fin_para Los ndices de J i ( A r ) no estn en orden ascendente, reordenar J i ( A r ) y V i ( Ar ). fin_para

13/09/11

21/24

Usando la librera METIS para reordenar matrices

Hay que reordenar b para obtener un vector b r= P b. para i 1n j permi bir b j fin_para Podemos entonces resolver el sistema Ar x r =br . Finalmente hay que reordenar x r con la permutacin inversa para obtener x= P T x r. para i 1n j iperm i x i x rj fin_para La librera METIS est diseada para trabajar con C, para utilizarla con C++ es neceario usar: extern "C" { #include <metis.h> }
13/09/11 22/24

Preguntas?

Preguntas?

13/09/11

23/24

Bibliografa

Bibliografa
[Gall90] [Geor81] [Geor89] [Golu96] [Heat91] [Kary99] [Lipt77] [Quar00] [Yann81] K. A. Gallivan, M. T. Heath, E. Ng, J. M. Ortega, B. W. Peyton, R. J. Plemmons, C. H. Romine, A. H. Sameh, R. G. Voigt, Parallel Algorithms for Matrix Computations, SIAM, 1990. A. George, J. W. H. Liu. Computer solution of large sparse positive definite systems. PrenticeHall, 1981. A. George, J. W. H. Liu. The evolution of the minimum degree ordering algorithm. SIAM Review Vol 31-1, pp 1-19, 1989. G. H. Golub, C. F. Van Loan. Matrix Computations. Third edidion. The Johns Hopkins University Press, 1996. M T. Heath, E. Ng, B. W. Peyton. Parallel Algorithms for Sparse Linear Systems. SIAM Review, Vol. 33, No. 3, pp. 420-460, 1991. G. Karypis, V. Kumar. A Fast and Highly Quality Multilevel Scheme for Partitioning Irregular Graphs. SIAM Journal on Scientific Computing, Vol. 20-1, pp. 359-392, 1999. R. J. Lipton, D. J. Rose, R. E. Tarjan. Generalized Nested Dissection, Computer Science Department, Stanford University, 1997. A. Quarteroni, R. Sacco, F. Saleri. Numerical Mathematics. Springer, 2000. M. Yannakakis. Computing the minimum fill-in is NP-complete. SIAM Journal on Algebraic Discrete Methods, Volume 2, Issue 1, pp 77-79, March, 1981.

13/09/11

24/24

Você também pode gostar