Análisis de Técnicas de Precondicionamiento para los Sistemas

Transcripción

Análisis de Técnicas de Precondicionamiento para los Sistemas
Análisis de Técnicas de Precondicionamiento
para los Sistemas Lineales provenientes del
Simulador SEMIYA de INTEVEP
Autores:
Allan J. Peláez
José L. Salas
Germán Larrazábal
Pablo Guillén
Junio, 2002
Índice General
1 Introducción
3
2 Métodos iterativos
2.1 Metodologı́a de los Métodos de Proyección . . . . . . . . . . .
2.2 Método de Arnoldi . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Métodos de Proyección . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Generalizado del Residuo Mı́nimo (GMRES) . . . . . .
2.3.2 Gradiente BiConjugado (BiCG, Lanczos No Simétrico)
2.3.3 Gradiente Conjugado al Cuadrado (CGS) . . . . . . .
2.3.4 Gradiente BiConjugado Estabilizado (BiCGstab) . . .
.
.
.
.
.
.
.
5
6
7
8
8
9
11
12
3 Precondicionadores
3.1 Precondicionadores Polinomiales . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Factorizaciones Incompletas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Precondicionadores SPAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
14
15
17
4 Gradiente Conjugado Precondicionado con Reinicio (GCPRNS)
18
5 Estudio Experimental
5.1 Casos de prueba . . . . . . . . .
5.2 Precondicionadores considerados
5.3 Criterio de Parada . . . . . . .
5.4 Resultados Numéricos . . . . .
19
19
22
23
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Conclusiones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
32
2
1
Introducción
La resolución de sistemas lineales es posiblemente el núcleo computacional más importante de la
mayorı́a de las aplicaciones de ingenierı́a. En el pasado las técnicas numéricas de resolución de
sistemas lineales más usadas eran los métodos directos. Sin embargo, estos métodos presentan
serias limitaciones de aplicación para el caso de matrices dispersas. Por ejemplo, una malla
de 50x50x50 nodos con 5 grados de libertad por nodo, caso tı́pico de la ecuación de Euler en
dinámica de fluidos, genera un sistema lineal de 625.000 filas, con un promedio de unos 150
elementos no nulos por fila, lo que genera un llenado de la matriz de únicamente el 0,024%,
y un volumen de datos de unos 715 Mbytes. Aunque se aplique técnicas de reordenación que
minimicen el llenado introducido por un método directo, este llenado no bajará del 0,5%, lo
que genera un volumen de datos de aproximadamente 14 Gbytes. Si se tiene en cuenta que
este ejemplo está muy por debajo de los requerimientos de un caso real, se ve claramente la
imposibilidad de usar métodos directos al menos en gran parte de las aplicaciones. Además,
los métodos directos presentan un grado de paralelismo bajo lo que limita su escalabilidad en
sistemas paralelos. Por último, los métodos directos pueden presentar problemas graves de
exactitud numérica tanto por exceso como por defecto. Un sistema de coma flotante en doble
precisión permite tener hasta 15 cifras decimales exactas. La propagación del error al usar un
método directo multiplica el error relativo en los datos por el número de condición de la matriz,
que suele estar en el rango 103 -109 en la mayorı́a de las aplicaciones industriales. Esto da un
margen de 12 a 4 cifras exactas en la solución. Este margen es adecuado para muchas de las
aplicaciones, pero en algunos casos se puede tener problemas de exactitud por defecto. Esta
falta de exactitud es irresoluble usando un método directo. En otros casos, donde únicamente
se requieren unas pocas cifras exactas (3 ó 4) se puede estar haciendo trabajo en vano.
La solución a todos estos inconvenientes la dan los métodos iterativos. Estos métodos no
modifican la estructura de la matriz de coeficientes, ya que su principal operación es el producto
matriz por vector. Por ello, no requieren tanta memoria como los métodos directos, y tampoco
presentan muchas dificultades de paralelización, ya que la operación matriz por vector es
altamente paralela. Además, aunque la convergencia de un método iterativo puede ser lenta,
siempre existe la posibilidad de ajustarse a la exactitud deseada.
Los métodos iterativos se dividen en los llamados métodos clásicos y los llamados métodos
de proyección. Existe una extensa bibliografı́a que analiza el comportamiento de los métodos
iterativos clásicos: Jacobi, Gauss-Seidel, SOR, SSOR, Chebyshev [Axe85] [Var62].
Los llamados métodos de proyección, son los más eficaces, de hecho, este estudio experimental
se centra exclusivamente en la implementación y evaluación de un método de proyección
capaz de resolver sistemas no simétricos, este método es llamado: Gradiente Conjugado
Precondicionado con Reinicio (GCPRNS). Adicionalmente, se hace referencia a otros
métodos de proyección para sistemas no simétricos, tales como: GMRES(m), Gradiente
3
Biconjugado y sus variantes BiCGstab, CGS. Todos ellos han sido ampliamente estudiados
en cuanto a convergencia y propiedades numéricas [CIKM94] [NRT92] [SS86] [Son89] [SF93]
[dV92] [Wei94].
Como se indicó anteriormente, las aplicaciones de simulación numérica en ingenierı́a deben
contar con módulos de software robustos y eficientes que permitan resolver sistemas lineales.
Las simulaciones que se llevan a cabo dentro de nuestra industria petrolera, no escapan a esta
realidad; una de las principales simulaciones que realiza dicha industria, es la simulación de
yacimientos, la cual consiste en predecir los procesos complejos que ocurren en medios porosos
para optimizar la recuperación de hidrocarburos. Con este fin, se deben implantar modelos
matemáticos que describan el flujo de fluidos en medios porosos, ası́ como también el diseño y
desarrollo de las herramientas computacionales que permitan representar, evaluar y analizar las
cantidades fı́sicas obtenidas de los modelos.
Los modelos matemáticos usados para describir el flujo de fluidos en medios porosos son sistemas
de ecuaciones diferenciales parciales y ecuaciones de restricción (condiciones iniciales y de
borde, propiedades, generación, etc), en donde el tamaño de las aplicaciones a escala de campo
requieren grandes periodos en el tiempo de predicción. Matemáticamente los procedimientos
de solución numérica deben simular con suficiente precisión el flujo en medios porosos haciendo
uso de mallados bastos e intervalos de tiempo grandes. Los yacimientos poseen escalas de
heterogeneidad que van desde nivel de poro hasta escalas de campo. La precisión en la solución
del modelo matemático implementado permitirı́a intuir como modelar eficientemente los efectos
de las heterogeneidades en los diferentes niveles o escalas de longitud. El proceso continuo de
las propiedades del yacimiento y las propiedades del fluido necesario para usar bloques de malla
en tamaños de 10-100 metros en las simulaciones a escala de campo, incrementan los tiempos
de ejecución en la solución numérica del modelo implementado.
Estos hechos conllevan al uso de modelos matemáticos precisos que describan adecuadamente
las cantidades fı́sicas obtenidas y disminuyan la incertidumbre en los largos periodos de tiempo
de predicción requeridos, ası́ como también, el uso de herramientas computacionales de alto
rendimiento que permitan la obtención de las simulaciones en tiempos cortos de ejecución.
En tal sentido, este trabajo se enfoca en analizar diferentes tipos de métodos iterativos
precondicionados para resolver sistemas lineales provenientes de un operador de conveccióndifusión y un sistema proveniente del simulador de yacimientos de INTEVEP, llamado
SEMIYA.
Este trabajo está organizado de la siguiente manera:
• En la sección 2, se realiza una descripción de los métodos iterativos para sistemas no
simétricos más importantes.
4
• En la sección 3, se describen los precondicionadores algebraicos más usados en la
actualidad.
• En la sección 4, se presenta un nuevo método iterativo precondicionado.
• En la sección 5, se describen los estudios a realizar y posteriormente, los resultados
obtenidos.
2
Métodos iterativos
El término ”método iterativo”hace referencia a un amplio conjunto de técnicas que aplican, de
forma repetitiva, algún algoritmo más o menos simple por el que se obtiene una secuencia de
aproximaciones a la solución, y en los que la solución exacta del sistema lineal Ax = b es el
lı́mite al que converge la secuencia, cuando ésta es convergente. Estos métodos resultan muy
adecuados para la resolución de grandes sistemas dispersos de ecuaciones lineales.
Una de las principales ventajas de los métodos iterativos para sistemas dispersos, reside en que
utilizan exclusivamente aquellos elementos mij distintos de cero, obteniendo un considerable
ahorro en número de operaciones y almacenamiento de memoria. A diferencia de los métodos
directos, la estructura de la matriz no es relevante, pero en cambio, no siempre se converge a la
solución al ritmo deseado.
Los métodos iterativos se pueden clasificar en dos tipos: métodos estacionarios y métodos
no estacionarios. Los métodos estacionarios son más simples y fáciles de implementar, pero
su velocidad de convergencia suele ser muy baja, de forma que su uso sólo está justificado con
algunos tipos de matrices concretas. Los métodos no estacionarios se diferencian de los anteriores
en que hacen uso de información, evaluada en cada iteración, que les permite obtener la solución
de modo dinámico. En general, estos métodos suelen ser más eficientes para la mayor parte
de los problemas. El Gradiente Conjugado es un método iterativo no estacionario que permite
resolver sistemas lineales bajo la restricción de que la matriz de coeficientes A, sea simétrica
y definida positiva. Desarrollado originalmente en 1952 por Hestenes y Stiefel, el método del
Gradiente Conjugado se basa en realizar una proyección ortogonal en el subespacio de Krylov
Km(ro, A) [Saa96], donde r0 es el residuo inicial. Este método no requiere una factorización
de la matriz, ni es dependiente de parámetros definidos por el usuario, como sucede con otros
métodos iterativos.
Entre los métodos iterativos no estacionarios existentes para matrices no simétricas podemos
encontrar dos formas de abordar el problema. Por un lado existen métodos que transforman
el sistema en simétrico, y lo resuelven como tal. Sin embargo, el coste de almacenamiento se
duplica por lo que su uso no es muy adecuado cuando esto supone una limitación. Los métodos
que abordan directamente el problema no simétrico son más efectivos. Entre ellos, encontramos
5
los métodos de Residuos Mı́nimos Generalizado (GMRES) y Gradiente Biconjugado
(BiCG). El primero de ellos alcanza la convergencia en un número muy bajo de pasos, aunque
también requiere un elevado coste de memoria. Por otro lado, el método BiCG tiene una
eficacia comparable al GMRES con un coste modesto de memoria, aunque su convergencia no
es siempre regular, e incluso puede que ésta no se produzca.
2.1
Metodologı́a de los Métodos de Proyección
Dado un sistema lineal n × n
Ax = b
(1)
Sea el subespacio vectorial K de dimensión m < n, generado por la base V ≡ [v1 , . . . , vm ].
Se toma como aproximación de x el vector x̃ = V y, donde y es un vector de dimensión m.
Existen diferentes criterios para seleccionar y, el criterio más habitual es forzar que el vector
residuo, r = b − Ax̃, sea ortogonal a otro subespacio Λ de dimensión m generado por la base
W ≡ [w1 , . . . , wm ], es decir, se impone que:
W t · (b − AV y) = 0
(2)
−1
Se tiene entonces que y = (W t AV ) · W t b, suponiendo que la matriz W t AV sea no singular.
Es decir, se ha reducido el problema original a resolver un sistema lineal de m × m.
Los diferentes métodos de proyección se limitan a elegir diferentes subespacios K y Λ para
hacer la aproximación. Además, habitualmente los métodos se formulan sobre el sistema del
error en vez de sobre el sistema original. Es decir, dada una primera aproximación a la solución
x0 , buscamos un vector de corrección e, que aproxime la solución exacta del sistema Aẽ = r0 ,
donde ẽ = x̃ − x0 es el vector error. Entonces la aproximación a la solución se dará como
x = x0 + e.
Ası́ pues, el algoritmo genérico de todo método de proyección es el siguiente:
Mientras no convergencia
1.
Elegir V = [v1 . . . vm ] y W = [w1 . . . wm ]
2.
Calcular r = b − Ax
3.
Calcular y = (W t AV )−1 · W t r
4.
Calcular x = x + V y
FinMientras
6
La metodologı́a general de los métodos de proyección también se aplica a los problemas de
autovalores, de hecho ambos problemas, resolución de sistemas lineales y cálculo de autovalores,
están estrechamente relacionados. Para problemas de autovalores el proceso de proyección es
idéntico, pero ahora b = λx, con lo cual queda sustituyendo en (2):
W t · (AV y − λV y) = 0 ⇒ W t · AV y = λW t V y
(3)
Este es un problema generalizado de autovalores de dimensión mxm. Usualmente en problemas
de autovalores se eligen K y Λ de forma que W t V = I. Ası́ el problema queda reducido a un
problema de autovalores de dimensión m × m.
Aunque existen muchas opciones para elegir los subespacios K y Λ la elección más habitual es
que K y Λ sean subespacios de Krylov.
Definición 2.1 Se define el subespacio de Krylov de dimensión m asociado a la matriz A y
al vector v como el subespacio generado por la base {v, Av, A2 v, . . . , Am−1 v}, y se denota por
Km (A, v).
Uno de los principales motivos por el cual se usan subespacios de Krylov es la sencillez con
la que se puede invertir la matriz W t AV , y la sencillez con la que se puede generar una base
ortonormal de Km (A, v). La generación de bases ortonormales juega un papel fundamental en
los métodos de proyección. Al proceso de generación de una base ortonormal se le denomina
método de Arnoldi.
2.2
Método de Arnoldi
El sistema clásico de generación de bases ortonormales es el método de Gram-Schmidt, que
partiendo de un conjunto de vectores linealmente independientes genera un conjunto de vectores
ortonormales. Cuando el proceso de ortonormalización y la generación de los vectores de partida
se entremezcla, se denomina a este proceso método de Arnoldi [Arn51] [SS86].
El algoritmo de Arnoldi genera una base ortonormal Wm = {w1 , . . . , wm } del subespacio
Km (A, v) con kv1 k = 1. Dicho algoritmo puede verse en la figura 1. Por razones de estabilidad
numérica en una realización práctica del algoritmo se debe usar la forma modificada del método
de Gram-Schmidt.
Se debe señalar que después de m iteraciones del método de Arnoldi se tiene un conjunto de
(m + 1) vectores columna ortonormales que forman la matriz Wm+1 , y una matriz de dimensión
(m + 1) × m, que se denomina Ĥm , y cuyos elementos no nulos son los coeficientes hij generados
por el algoritmo. También se tiene una matriz de dimensión m × m, que se denomina Hm ,
que no es más que la matriz Ĥm a la que se le ha eliminado la fila (m + 1). La matriz Hm es
simplemente la proyección sobre el subespacio Km (A, v1 ) de la matriz A. Es decir,
7
w1 = v1
Do j = 1, m − 1
Do i = 1, j
hij =< Awj , wi >
EndDo
P
ŵj+1 = Awj − ji=1 hij wi
hj+i,j = kŵj+1 k
wj+1 = ŵj+1 /hj+1,j
EndDo
Figura 1: Método de Arnoldi.
Hm = Wmt AWm
(4)
donde Wm = [w1 , . . . , wm ]. Por su parte la matriz Ĥm cumple la relación:
AWm = Wm+1 Ĥm
(5)
La comprobación de lo anterior es inmediato por simple sustitución.
2.3
Métodos de Proyección
Seguidamente se describen los métodos de proyección más importantes. Al final de cada
descripción del método se cita la referencia original donde está descrito, o bien una referencia
actual que lo describe ampliamente. Para un resumen general de todos los métodos de proyección
ver [AMS90] [Saa89] [FM84].
2.3.1
Generalizado del Residuo Mı́nimo (GMRES)
Sea x0 , una aproximación inicial a la solución, sea r0 = b−Ax0 el residuo inicial, y sea Km (A, v1 )
el subespacio de Krylov generado por {v1 , Av1 , A2 v1 , . . . , Am−1 v1 } con v1 = r0 /kr0 k.
El método GMRES propone calcular la aproximación a la solución como xm = x0 + zm con
zm ∈ Km (A, v1 ), imponiendo la condición de que la norma del residuo rm sea mı́nima para todos
los vectores zm . Este es un método de proyección donde de nuevo K = Λ = Km (A, v1 ).
En primer lugar se genera una base ortonormal de mediante el método de Arnoldi, de nuevo se
denominará Wm = [w1 , . . . , wm ]. El problema que ahora se debe resolver es:
minkb − A(x0 + zm )k = minkr0 − Azm k = minkβv1 − AWm yk
donde β = kr0 k. Usando la ecuación (5) se tiene que:
8
(6)
minkβv1 − AWm yk = minkWm+1 (βe1 − Ĥm y)k
(7)
donde e1 es el primer vector de la base canónica. Dado que Wm+1 es ortonormal se tiene que el
vector y es la solución de:
minkβe1 − Ĥm y)k
(8)
La forma más sencilla de calcular y es mediante la factorización QR de la matriz Ĥm usando
rotaciones de Givens, esto es Qm Ĥm = Rm . La matriz Ĥm es Hessemberg superior, la matriz
Qm de dimensión (m+1)×(m+1) es el producto acumulado de todas las matrices de rotación, y
la matriz Rm de dimensión (m + 1) × m es triangular superior con su ultima fila igual a cero. De
esta forma el algoritmo de factorización QR se puede aplicar sucesivamente en cada iteración del
método, manteniendo ası́ la factorización actualizada. El problema finalmente queda reducido
a resolver el siguiente sistema triangular superior:
Rm y = gm = Qm βe1
(9)
Ya que la matriz Qm sólo se usa para calcular el lado derecho de este sistema no es necesario
almacenarla sino que basta con aplicar las sucesivas rotaciones que forman Qm al vector βe1 .
De nuevo, igual que en el método FOM, no es preciso construir en cada iteración la solución ya
que el residuo en el paso m-ésimo se puede evaluar como la componente (m + 1) del vector βe1 .
El método tiene el problema de que se deben ir almacenando los vectores de la base ortonormal
para al final poder formar el vector zm . Lógicamente esto implica un fuerte gasto de memoria.
Para salvar esta dificultad, la táctica habitual es marcar un número máximo de iteraciones,
al cabo de las cuales el método se reinicializa tomando como aproximación inicial la última
aproximación propuesta. El algoritmo del GMRES(m) con parámetro de reinicio m se muestra
en la figura 2.
En [SS86] se describe ampliamente este método. Para una revisión más detallada consultar
dicha referencia.
2.3.2
Gradiente BiConjugado (BiCG, Lanczos No Simétrico)
Se ha presentado el método simétrico de Lanczos como un caso particular de método de Arnoldi
cuando la matriz A es simétrica positiva definida, ya que las propiedades de minimización de
los algoritmos derivados del método de Arnoldi tiene su equivalente en el método simétrico de
Lanczos [Ashb90]. Sin embargo, prescindiendo del objetivo de minimización, existe otra forma
de generalizar a matrices no simétricas el método de Lanczos.
9
Elegir x0 ; Calcular r0 = b − Ax0 y w1 = r0 /kr0 k
While (not convergence)
Do j = 1, m − 1
Do i = 1, j
hij =< Awj , wi >
EndDo
P
ŵj+1 = Awj − ji=1 hij wi
hj+1,j = kŵj+1 k
wj+1 = ŵj+1 /hj+1,j
Calcular la rotación de Givens
Actualizar g y la matriz R
IF (convergencia) GOTO 10
EndDo
10: Calcular ym = R−1 · g
Calcular x = x0 + W y
EndWhile
Figura 2: Algoritmo del GMRES(m).
Sean W = [w1 , . . . , wn ] y V = [v1 , . . . , vn ] dos bases ortonormales tales que V −t = W . El método
no simétrico de Lanczos pretende obtener una matriz tridiagonal no simétrica que cumpla:












βn 
α 1 β2

 γ2 α2 β3


γ3 α3
−1
T = V AV 

···

β4
···
···
γn−1 αn−1
γn α n
(10)
Reescribiendo la ecuación (10) como AV = V T y At W = W T t se tienen dos ecuaciones
equivalentes a la ecuación correspondiente al caso simétrico presentada a continuación:
Awj = βj wj−1 + αj wj + βj+1 wj+1
(11)
Avj = βj vj−1 + αj vj + γj+1 vj+1
(12)
At wj = γj wj−1 + αj wj + βj+1 wj+1
(13)
con j = 1, 2, . . . , n y entendiendo que β1 = βn+1 = γ1 = γn+1 = 0. De forma equivalente al caso
simétrico se obtienen ahora las siguientes relaciones:
10
Elegir x0 ; Calcular r0 = b − Ax0
Elegir r̂0 = r0 ; p0 = p̂0 ; ρ0 = 0
While (not convergence)
ρk =< r̂k−1 , rk−1 >
ρk
βk = ρk−1
pk = rk−1 + βk · pk−1
p̂k = r̂k−1 + βk · p̂k−1
k
αk = <p̂k ρ,Ap
k>
xk = xk−1 + αk · pk
rk = rk−1 + αk · Apk
r̂k = r̂k−1 + αk · At p̂k
EndWhile
Figura 3: Algoritmo del Gradiente BiConjugado.
αj = wjt Awj
(14)
γj+1 vj+1 = (A − αj I)vj − βj vj−1 ≡ v̂j+1
(15)
βj+1 wj+1 = (A − αj I)wj − γj wj−1 ≡ ŵj+1
(16)
En [Fle76] se propone el método equivalente al Gradiente Conjugado para sistemas no simétricos
basado en las relaciones (14), (15) y (16). El algoritmo del Gradiente Biconjugado puede verse
en la figura 3.
Dado que ahora A ya no define una norma, no existe ninguna propiedad de minimización
del error equivalente a la del Gradiente Conjugado. Notar que el algoritmo del BiCG
genera dos bases mutuamente ortogonales de los espacios K = Km (A, r0 ) y Λ = Km (At , r̂o ),
respectivamente.
En [Fle76] se describe ampliamente este método. Para una revisión más detallada consultar
dicha referencia.
2.3.3
Gradiente Conjugado al Cuadrado (CGS)
Sonneveld observó que cuando el BiCG converge las dos secuencias de vectores rj y r̂j convergen
hacia cero. Dado que los vectores rj y r̂j pueden escribirse como:
rj = Pj (A)r0
11
(17)
r̂j = Pj (At )r̂0
(18)
< r̂j , rj >=< Pi (At )r̂0 , Pj (A)r0 >=< r̂0 , Pi (A)Pj (A)r0 >
(19)
Se puede escribir entonces:
Es decir, los parámetros escalares del BiCG se pueden calcular sin necesidad de usar At , usando
únicamente productos por la matriz A como indica la ecuación (19).
Elegir x0 ; Calcular r0 = b − Ax0
Elegir r̂0 = r0 ; p0 = q0 ; ρ0 = 0
While (not convergence)
ρk =< r̂0 , rk−1 >
ρk
βk = ρk−1
u = rk−1 + βk · qk−1
pk = u + βk · (qk−1 + βk · pk−1 )
ρk
αk = <p̂0 ,Ap
k>
qk = u − αk · pk
xk = xk−1 + αk · (u + qk )
rk = rk−1 + αk · (u + qk )
EndWhile
Figura 4: Algoritmo del CGS.
De esta forma se demuestra que se puede calcular r̂k como:
r̂k = Pk2 (A)r0
(20)
El método resultante se denominó Gradiente Conjugado Cuadrado (CGS). El algoritmo del
CGS puede verse en la figura 4.
En [Son89] se describe ampliamente este método. Para una revisión más detallada consultar
dicha referencia.
2.3.4
Gradiente BiConjugado Estabilizado (BiCGstab)
El principal inconveniente del CGS es que presenta una convergencia a saltos. Esto sucede en
situaciones como la siguiente, supongamos que r0 tiene pequeñas componentes en alguna de las
direcciones de los autovectores de A, y que Pj (λ) toma valores grandes para dichas componentes,
pero de forma que el producto no contribuye significativamente a la norma de rj . Sin embargo,
el valor que tome Pj2 (λ) en esas mismas componentes puede ser significativamente más grande
12
de forma que dichas componentes dominen el residuo rj . Esto provoca residuos sucesivos que
crecen, y que súbitamente decrecen cuando la contribución en esas componentes se cancela por
la evolución del método.
Elegir x0 ; Calcular r0 = b − Ax0
Elegir r̂0 = r0 ; p0 = q0 = 0; ρ0 = α1 = ω0 = 1
While (not convergence)
ρk =< r̂0 , rk−1 >
ρk
αk
βk = ρk−1
ωk−1
pk = rk−1 + βk · (pk−1 − ωk−1 qk−1 )
qk = Apk
αk = <r̂0ρ,qk k >
sk = rk−1 − αk · qk
tk = Ask
k ,sk >
ωk = <t
<tk ,tk >
xk = xk−1 + αk · pk + ωk · sk
rk = sk + ωk · tk
EndWhile
Figura 5: Algoritmo del BiCGstab.
Van der Vost propuso, para suavizar la convergencia a saltos del CGS, modificar el polinomio
que se usaba para el cálculo de rk . En concreto, propuso usar:
rk = Qk (A)Pk (A)r0
(21)
Qk (λ) = (1 − ω1 λ)(1 − ω2 λ) . . . (1 − ωk λ)
(22)
donde las constantes ωi son elegidas en cada iteración de tal forma que la norma de rk es
minimizada respecto a ωk . En la figura 5 se puede ver el algoritmo del BiCGstab.
En [dV92] se describe ampliamente este método. Para una revisión más detallada consultar
dicha referencia.
13
3
Precondicionadores
Todos los métodos iterativos convergen a la solución a un ritmo que depende de las propiedades
espectrales de la matriz 1 de coeficientes. A menudo, es necesario transformar la matriz en
otra con un espectro más apropiado. Un precondicionador M es la matriz que se encarga
de realizar dicha transformación. Como ejemplo, consideremos un problema Ax = b, y una
matriz M tal que M −1 A posee un radio espectral inferior al de A. En estas condiciones, la
solución al sistema transformado, M −1 Ax = M −1 b es equivalente a la solución de Ax = b, pero
sus propiedades espectrales permiten alcanzar más rápidamente la convergencia. Si se desea
introducir mejoras en el esquema numérico con el fin de acelerar la convergencia, la principal
mejora se logra mediante la introducción de un precondicionador. Existen tres opciones básicas:
usar los llamados precondicionadores clásicos, usar los multinivel, o usar aquellos basados en
descomposición en dominios. En este trabajo, solo estamos interesados en los precondicionadores
clásicos.
Los precondicionadores clásicos, se basan en manipulaciones puramente algebraicas de la matriz
para obtener algún tipo de aproximación de la inversa. Los precondicionadores clásicos más
conocidos son las factorizaciones incompletas y los precondicionadores polinomiales [AMS89]
[AMO92] [BMT94] [BCMM95] [EOV90] [MdV77] [Saa85] [dV82] [Yea89] [Zla82]. En los últimos
años se están investigando un nuevo tipo de precondicionadores clásicos llamados Aproximación
Dispersa de la Inversa (SParse Approximate Inverse, SPAI) [GS93] [GS94] [GS95] [KY93]. A
continuación se describen estos tres tipos de precondicionadores.
3.1
Precondicionadores Polinomiales
Los precondicionadores polinomiales se basan en aproximar la matriz M −1 mediante un
polinomio de grado m de la matriz A [AMS89] [AMO92] [EOV90] [Saa85]. Esto es:
M −1 = A−1 = Pm (A) = q0 I + q1 A + · · · + qm Am
(23)
De esta forma, cada vez que se debe multiplicar la matriz M −1 por un vector lo que realmente
se hace es multiplicar m veces la matriz A por un vector. Los coeficientes del polinomio se
eligen de forma que se minimice:
minE k1 − Pm (λ)k
(24)
donde E es un intervalo que incluye el espectro de A. El problema de minimización (24) tiene
diferentes soluciones en función de que norma consideremos. Si se toma la norma infinito para
(24) (kf k∞ = maxλ∈E kf (λ)k) la solución es:
1
Se denomina Espectro de una matriz al conjunto de sus autovalores. Se denomina Radio Espectral de una
matriz al máximo de sus autovalores, en valor absoluto.
14
λPm (λ) =
Tm ( d+c−2λ
)
d−c
Tm ( d+c
)
d−c
(25)
donde Tm (λ) es el polinomio de Chebyshev de primera clase de grado m, y E = [c, d]. El principal
problema que presentan los precondicionadores polinomiales es la necesidad de disponer de
buenas cotas del espectro de A, ya que si no en (25) se requieren grados muy grandes del
polinomio para que la aproximación sea buena. Esto limita mucho la aplicabilidad práctica de
estos precondicionadores.
3.2
Factorizaciones Incompletas
Los únicos precondicionadores que son lo suficientemente generales, y que no requieren la
estimación de ningún parámetro son las factorizaciones incompletas. La idea inicial de una
factorización incompleta es factorizar la matriz A (factorizaciones LU , Cholesky o LDLt ) pero
sin introducir todo el llenado que se produce en el proceso de factorización. En consecuencia,
el precondicionador puede aplicarse resolviendo dos sistemas triangulares cuya dispersidad y
complejidad de cálculo, depende del tipo de factorización incompleta que se aplique.
Es bien conocido que los tres bucles que constituyen un algoritmo de factorización pueden ser
intercambiados dando lugar a las diferentes formas ijk de la factorización. La elección de la
forma ijk más eficiente responde en el caso de matrices densas a criterios de explotación de la
localidad de datos [DGK84] [NJL94], pero en el caso de matrices dispersas estamos obligados a
elegir aquella forma ijk que se adapte al formato de almacenamiento usado.
Existen tres formas fundamentales de factorizaciones incompletas:
• Factorizaciones sin llenado: ILU (0), ICH(0) [MdV77].
• Factorizaciones con llenado, usando como criterio para la introducción del llenado la
posición dentro de la matriz: ILU (k), ICH(k) [MdV77] [Wat81].
• Factorizaciones con llenado, usando como criterio para la introducción del llenado
umbrales numéricos: ILU (τ ), ICH(τ ) [Zla82].
Las factorizaciones del tipo ILU (0) han sido principalmente usadas en el contexto de EDPs.
Son las más sencillas y no introducen llenado alguno, es decir, la factorización incompleta
tiene la misma cantidad de elementos no nulos y en las mismas posiciones que en la matriz A.
Esto permite reutilizar, para el precondicionador, todos los vectores de ı́ndices usados para la
matriz, con un considerable ahorro de memoria. Sin embargo, salvo en problemas relativamente
sencillos (EDPs elı́pticas con coeficientes constantes) este tipo de precondicionadores no son lo
15
suficientemente potentes.
El parámetro k de una factorización ILU (k), en el contexto de EDPs para problemas
discretizados mediante diferencias finitas, indica el número de columnas alrededor de la diagonal
en las que se permite llenado. Para problemas discretizados mediante elementos finitos el criterio
es diferente. Al factorizar la fila i-ésima asociada al nodo i-ésimo de la malla de elementos finitos,
sólo se permite llenado en las columnas asociadas a los nodos que son k-vecinos del nodo i-ésimo.
Se dice que un nodo N es k-vecino de un nodo M si el camino más corto que une N con M
atraviesa k nodos.
En general, las factorizaciones del tipo ILU (k) adolecen del defecto de considerar que la
importancia numérica de un llenado lij , depende únicamente de la proximidad topológica entre
los nodos i y j, sin tener en cuenta el fenómeno fı́sico que la matriz A representa. Habitualmente,
el uso de las factorizaciones del tipo ILU (k) se restringen a problemas de EDPs que modelan
fenómenos de difusión y que son discretizados mediante diferencias finitas.
Las factorizaciones del tipo ILU (τ ) deciden introducir o no un llenado lij en función de si es
superior o inferior a un umbral determinado. Dicho umbral se calcula relativo al valor de los
elementos de la fila i-ésima de A usando el parámetro τ . Este cálculo se puede realizar usando
cualquier medida, por ejemplo, el valor medio de los elementos de la fila i-ésima, o cualquier
norma de la fila i-ésima. Estas factorizaciones son de aplicación general, pero adolecen de una
falta de control fino sobre la cantidad total de llenado que se permite. Esta falta de control genera
problemas de dimensionamiento del espacio de memoria reservado al precondicionador, y sobre
todo, impide buscar un buen compromiso entre complejidad de cálculo del precondicionador y
la aceleración que el precondicionador introduce en el método iterativo.
En [Saa94b] y [Saa94a] se define un tipo hı́brido de factorización incompleta, llamado
ILU t(f il, τ ), que es de aplicación totalmente genérica y que supera los inconvenientes de
las factorizaciones del tipo ILU (τ ). Dicha factorización sigue una doble estrategia en la
introducción del llenado:
• Al factorizar la fila i-ésima se introducen todos los llenados lij que superen un umbral
numérico relativo a la fila i-ésima (parámetro τ ).
• Una vez finalizada la factorización de la fila i-ésima, sólo se almacenan en la estructura de
datos de salida tantos elementos como tuviese la matriz A en la fila i-ésima más 2 veces
f il (f il más en la parte L, y f il más en la parte U ). Se eligen para su almacenamiento
aquellos elementos con un valor absoluto mayor.
Ası́ pues, el parámetro τ sirve para controlar el umbral numérico de cálculo, y el parámetro f il
16
sirve para controlar la cantidad efectiva de llenado.
Una modificación habitual en las factorizaciones incompletas es añadir los coeficientes no
incluidos al termino de la diagonal de U de tal forma que la fila i-ésima de A y de la factorización
sumen lo mismo. Son las llamadas factorizaciones M ILU (Modified Incomplete LU ). Sin
embargo, este tipo de modificación puede presentar algunos problemas de estabilidad numérica
[Eij90b] [Eij90a].
3.3
Precondicionadores SPAI
La idea básica de los precondicionadores SPAI es buscar una matriz M tal que AM sea tan
cercana a la identidad como sea posible. En los últimos años, ha habido un gran interés por
desarrollar precondicionadores SPAI, ya que la aplicación de estos precondicionadores, en cada
iteración del método iterativo, sólo requiere la multiplicación matriz por vector; que como se sabe
es una operación altamente paralela. Hoy en dı́a, hay planteadas dos metodologı́as principales
para calcular tales precondicionadores. La primera, se basa en minimizar kAM −Ik en la norma
de Frobenius [GS93] [GS94] [GS95] [GH97] [KY93]. Dado que:
kAM −
Ik2F
=
N
X
kAmi − ei k22
(26)
i=1
donde ei es el vector i-ésimo de la base canónica. Cada columna de M se puede calcular en
paralelo resolviendo el problema de mı́nimos cuadrados:
minkAmi − ei k2
(27)
donde i = 1, . . . N .
Para resolver (27) de forma eficiente es crucial la observación de que la inversa de A usualmente
es mucho más densa que A, pero los coeficientes significativos de A−1 son únicamente unos
pocos. Es decir, se espera que M sea una matriz dispersa. Por lo tanto, el problema (27) es en
realidad de una dimensión muy pequeña y puede ser resuelto de forma eficiente. Dado que la
estructura de M no es conocida a priori, se comienza con una estructura diagonal, y se aumenta
el llenado hasta que kAmi − ei k2 ≤ ε para i = 1, . . . N con 0 < ε < 1, o bien se llega a un
máximo nivel de llenado permitido. A los precondicionadores SPAI derivados de esta técnica
los llamaremos LSQ-SPAI (Least SQuare SPAI).
La segunda técnica, se basa en descomponer A como un producto de matrices ortogonales y
diagonales, de manera que A−1 quede descompuesta de forma trivial [SC98] [BMT96]. Es decir,
A = W DZ t
(28)
donde W y Z son matrices ortogonales y D es una matriz diagonal. Entonces, se tiene que:
17
A−1 = ZD−1 W t
(29)
Si se aplica algún criterio de diezmado en el proceso de construcción de las matrices ortogonales
se tiene una aproximación dispersa de A−1 . Las formas de generar la descomposición de la
ecuación (28) pueden ser diversas. En [SC98] se usa la base generada por el GMRES; en
[BMT96] se usa un algoritmo de ortogonalización basado en el método de Lanczos, tanto para
el caso simétrico como no simétrico. A los precondicionadores SPAI derivados de esta técnica
los llamaremos ORT-SPAI (ORThogonal SPAI).
La principal ventaja de estos precondicionadores SPAI es que presentan un grado de paralelismo
alto, tanto en su cálculo como en su aplicación. Su principal es que no existe garantı́a de que
A−1 sea lo suficientemente dispersa como para que esta aproximación sea práctica.
Aunque se han presentado algunos resultados prometedores de ambas técnicas, no está claro que
su aplicabilidad sea general. En [LC99], se presenta un estudio experimental sobre la viabilidad
de estos precondicionadores para problemas convectivos. En este estudio se construyen ambos
precondicionadores (LSQ-SPAI y ORT-SPAI) de forma de que éstos sean una cota optimista
de las verdaderas implementaciones. Los resultados mostrados en ese trabajo muestran la poca
robustes de estos precondicionadores. Sin embargo, para problemas en donde la matriz inversa
se puede aproximar bien por una matriz dispersas éstos precondicionadores se hacen atractivos.
En otro trabajo, nos centraremos en ésta técnica de precondicionamiento.
4
Gradiente Conjugado Precondicionado con Reinicio
(GCPRNS)
Este es un método que aun no ha sido publicado ante la comunidad cientı́fica, por lo tanto, no
han surgido crı́ticas en torno al mismo, sin embargo, este estudio se centra en la implementación
y posterior evaluación del mismo, tomando en cuenta la convergencia versus la cantidad de
iteraciones.
El método del Gradiente Conjugado Precondicionado con Reinicio, hace uso de las
ecuaciones (30) y (31) para conseguir la solución de x = A−1 b.
xi+1 = xi + αi pi
pi+1 = Api −
i
X
(σij pj )
j=0
18
(30)
(31)
Donde:
< ri , Api >
< Api , Api >
(32)
< AM −1 Api , Apj >
< Apj , Apj >
(33)
αi =
σij =
Desafortunadamente, para llevar a cabo el cálculo de pi+1 se requiere almacenar todos los pi
anteriores, lo cual no serı́a práctico para resolver problemas de gran tamaño, ya que se necesitarı́a
una gran cantidad de memoria para lograrlo; dando una idea de lo costoso (en cuanto a memoria)
que resulta almacenar todos los pi anteriores, la resolución de un sistema de n × n implica el uso
de n × n × 8 bytes de memoria, solamente para almacenar la totalidad de los pi ; no conforme
con esto, es necesario almacenar también, todos los Api anteriores, con la finalidad de acelerar
la ejecución al no repetir cálculos, pero pagando este beneficio con una cantidad de memoria
igual a la que se usa para almacenar todos los pi .
Según los inconvenientes anteriores, serı́a utópico en términos computacionales, pensar en
resolver problemas de gran tamaño usando este método, sin embargo, es posible introducir
una técnica de reinicio (restart), la cual incluye un parámetro k, que sirve para reiniciar la
iteración cada k iteraciones haciendo x0 = xk y comenzando de nuevo. Esto hace que sólo sea
necesario almacenar los k últimos pi y Api , permitiendo ahorrar una significativa cantidad de
memoria. En la figura 6, se puede observar el algoritmo final donde se incluye el parámetro de
reinicio.
5
Estudio Experimental
Con este estudio se pretende determinar de manera experimental, la eficiencia del método
del Gradiente Conjugado Precondicionado con Reinicio, resolviendo sistemas con
caracterı́sticas muy particulares descritas mas adelante. Se hacen comparaciones del desempeño
del algoritmo usando distintos precondicionadores, con la finalidad de obtener alguna referencia
práctica, que permita tomar una decisión respecto al tipo de precondicionador que deba ser
usado con este método, para resolver sistemas lineales similares a los incluidos como casos de
prueba. Adicionalmente y con intención de tomar como punto de comparación, se estudia la
eficiencia y el rendimiento de los métodos GMRES y BiCGstab, tomando como caso de
prueba un sistema lineal proveniente del simulador SEMIYA, también descrito mas adelante.
5.1
Casos de prueba
Tres de los sistemas lineales de prueba considerados en este estudio, provienen de la
discretización de un operador escalar elı́ptico de segundo orden en 3D usando diferencias finitas
con un 7-stencil. El módulo de software que realiza esta discretización ha sido desarrollado con
19
Para un valor inicial de x0 calcular r0 = b − Ax
para 1=1,2,. . . número de iteraciones
p0 = M −1 r0 ;
parar = falso;
mientras (no-parar)
i = 0;
mientras (i < (restart y no-parar))
<r,Api >
αi = <Ap
i Api >
xi+1 = xi + αi pi
ri = b − Axi
<AM −1 Api ,Apj >
<Apj Apj >
Pi
pi+1 = M −1 Api − j=0 (σi,j pj )
σi,j =
i = i + 1;
fin mientras
número de iteraciones ← número de iteraciones + restart;
si ((número de iteraciones> M ax) ó (T oleranciaSuperada))
parar ← verdad;
fin si
fin mientras
fin para
Figura 6: Gradiente Conjugado Precondicionado con Reinicio (GCPRNS).
anterioridad y se profundizan detalles respecto al mismo en [PSL01]. La ecuación (34) describe
al operador elı́ptico del cual provienen las matrices de prueba.
L(~u) =
donde
∂
∂
∂
∂
∂
∂
∂
∂
∂
(α ~u) +
(β ~u) + (γ ~u) +
(δ~u) +
(ζ~u) + (η~u)
∂x ∂x
∂y ∂y
∂z ∂z
∂x
∂y
∂z



(34)

u1 (x, y, z)
α1,1 (x, y, z) · · · α1,m (x, y, z)




.
..
..
..
 , α(x, y, z) = 

..
~u(x, y, z) = 
.
.
.




um (x, y, z)
αm,1 (x, y, z) · · · αm,m (x, y, z)
y β, γ, δ, ζ y η son matrices de dimensión m × m, donde m es el número de grados de libertad
asociado a cada nodo de la malla de discretización. El coeficiente de convección, Cc, está definido
por:
Cc =
kwk
~ ∞
k~v k∞
20
donde




kαk∞
kδk∞




~v =  kβk∞  , w
~ =  kζk∞ 
kγk∞
kηk∞
Este tipo de operador elı́ptico se presenta en varios campos de la ingenierı́a como resultado
de la linealización de ecuaciones más complejas, por ejemplo en Dinámica de Fluidos. El
valor de Cc determina el tipo de problema que caracteriza la ecuación, presentándose dos casos
especı́ficos. Cuando, Cc −→ 0 la ecuación caracteriza a un problema dominado fuertemente por
la difusión (Mecánica Estructural), la cual al discretizarse por diferencias finitas, genera un
sistema de ecuaciones lineales con las siguientes caracterı́sticas
• Número de condición razonable.
• Simétrica definida positiva.
Cuando, Cc −→ ∞ la ecuación caracteriza a un problema dominado fuertemente por la
convección (Dinámica de Fluidos), la cual al discretizarse por diferencias finitas, genera
un sistema de ecuaciones lineales con las siguientes caracterı́sticas:
• Número de condición grande.
• No simétrica (tiende a ser singular).
Adicionalmente, se incluye como caso de prueba, un sistema lineal proveniente del simulador
SEMIYA. Cabe destacar, que para poder procesar los sistemas lineales provenientes de este
simulador, fue necesario desarrollar una rutina de conversión de formato, capaz de leer la matriz
de coeficientes aumentada y almacenarla en una estructura de datos llamada TDMatrix, la
cual es la estructura fundamental de la librerı́a U CSparseLib [Lar01].
A continuación, se presentan las caracterı́sticas comunes, más importantes de los sistemas
lineales considerados como casos de prueba en este estudio.
• Sistemas no simétricos.
• Escasa cantidad de filas diagonal dominante (exceptuando caso de SEMIYA).
Seguidamente se describen cada uno de los casos de prueba considerados, tomando en cuenta
la dimensión, parámetros de generación, densidad y cantidad de elementos no nulos.
Caso 8000 × 8000: La dimensión de esta matriz es 8000 × 8000, es generada con Cc = 200, y la
malla originaria de la misma contiene 20 nodos por dimensión, además, tiene 53600 elementos
no nulos, densidad de 0, 083% y 0 filas diagonal dominante.
21
Caso 64000×64000: La dimensión de esta matriz es 64000×64000, es generada con Cc = 200, y
la malla originaria de la misma contiene 40 nodos por dimensión, además, tiene 438400 elementos
no nulos, densidad de 0, 010% y 1 fila diagonal dominante.
Caso 216000 × 216000: La dimensión de esta matriz es 216000 × 216000, es generada con
Cc = 200, y la malla originaria de la misma contiene 60 nodos por dimensión, además, tiene
1490400 elementos no nulos, densidad de 0, 003% y 181 filas diagonal dominante.
Caso 10404 × 10404 (Sistema lineal proveniente del simulador SEMIYA): La dimensión
de esta matriz es 10404 × 10404, la malla originaria de la misma contiene 51 × 51 × 4 nodos,
además, tiene 66810 elementos no nulos, densidad de 0, 061% y 10404 filas diagonal dominante.
En la figura 7, se puede apreciar claramente la estructura general de las matrices de prueba. Es
importante resaltar que todas las matrices, poseen la misma estructura y que los parámetros
de entrada, sólo influyen en la dimensión de la matriz y en los valores de los elementos de la
misma.
Figura 7: Estructura general de las matrices de prueba.
5.2
Precondicionadores considerados
El precondicionador usado juega un papel sumamente importante en el desempeño de un
método iterativo. Cabe destacar que, en este estudio, el sistema Ax = b a ser resuelto, es
precondicionado por la izquierda, es decir, si M es el precondicionador, entonces el sistema
22
precondicionado queda de la siguiente forma M −1 Ax = M −1 b. para las pruebas se consideró un
precondicionador de tipo polinomial y dos del tipo ILU t(f il, τ ), a continuación se describen
cada uno de los precondicionadores usados.
El primer precondicionador considerado, es uno de tipo polinomial, este se puede describir
mediante la ecuación (35)
M −1 =
1
D+U
w
(35)
Donde D es la diagonal de A, U es la triangular estrictamente superior de A y w es un parámetro
que debe estar en el siguiente rango: 0 < w < 1.
El segundo precondicionador es uno de tipo ILU t(f il, τ ), donde f il = 0 y τ = 10−3 , el mismo
es explicado en la sección 3.2.
El tercer precondicionador considerado es igual que el anterior, de tipo ILU t(f il, τ ) pero donde
f il = 10 y τ = 10−3 .
5.3
Criterio de Parada
En todo método iterativo es necesario especificar mediante ciertas condiciones cuando hay que
detener el proceso. El criterio de detención que es utilizado tiene en cuenta dos factores:
1. La solución encontrada satisface los requerimientos de precisión.
2. La cantidad de iteraciones empleadas supera el máximo establecido.
La primera condición surge cuando, en una situación práctica, los datos asociados al sistema
de ecuaciones (matriz A y vector b) no son valores exactos, sino que tienen asociados un error.
Dada la incertidumbre de estos valores, la solución del sistema tendrá una precisión limitada
que no se puede sobrepasar. Este criterio también tiene utilidad para las situaciones en las que
no se requiere utilizar toda la precisión que ofrece el sistema, ahorrando de ese modo tiempo
de cálculo. Existen diversos criterios para chequear cuando se ha alcanzado el error mı́nimo
ik
≤ ², donde
permitido, el criterio utilizado en el algoritmo es establecido por la condición kr
kbk
el valor de ² es dado mediante un parámetro de usuario y debe ser proporcional a la precisión
que se desee alcanzar en el resultado, para las pruebas realizadas con los casos: 10404 × 10404
se fijó ² = 10−8 . De esta manera, cuando se verifica la condición anterior el proceso iterativo se
detiene. La norma utilizada es la euclı́dea:
kxk ≡
à n
X
i=1
23
!1
| xi |
2
2
La aplicación de esta condición incrementa en uno el número de productos escalares por
iteración, ya que es necesario obtener en cada iteración el valor de kri k. Dado que b es una
constante, el cálculo de su norma se puede realizar en la fase de inicialización de variables
ahorrando tiempo de cálculo.
El segundo criterio se establece cuando el tiempo de ejecución del algoritmo tiene importancia.
Una vez implementado el algoritmo, sólo nos interesa evaluar la escalabilidad del mismo
mediante la medición de tiempos de ejecución. De ese modo, se establece un lı́mite máximo
al número de iteraciones que realiza el algoritmo, lo que permite hacer un uso eficiente del
sistema y obtener una uniformidad en los resultados, este lı́mite máximo de iteraciones también
es dado mediante un parámetro de usuario llamado maxiter y para las pruebas realizadas se
tomó maxiter = 100.
5.4
Resultados Numéricos
Luego de ejecutar el algoritmo GCPRNS con los casos de prueba antes mencionados, se
recolectaron los distintos resultados obtenidos y a partir de estos se generó una serie de
gráficos que expresan de forma muy sencilla, el desempeño del mismo al ser usado con los
precondicionadores de prueba. Basicamente se refleja la cantidad de iteraciones necesarias para
alcanzar la precisión deseada, teniendo en cuenta el precondicionador usado. A continuación, se
presenta una serie de tablas en las que se muestran los resultados obtenidos al respecto, luego,
los gráficos representativos de los mismos.
Precondicionador/Restart
ILU(0)/32
ILU(0)/75
ILU(10)/32
ILU(10)/75
POLINOMIAL/32
POLINOMIAL/75
No de Iteraciones
¯
À100
À100
13
13
À100
42
Densidad Precondicionador
0.083%
0.083%
0.331%
0.331%
0.048%
0.048%
Mflops
1.630E-01
1.630E-01
2.725E+00
2.725E+00
8.150E-02
8.150E-02
Eficiencia de los precondicionadores en el caso 8000 × 8000
Precondicionador/Restart
ILU(0)/32
ILU(0)/75
ILU(10)/32
ILU(10)/75
POLINOMIAL/32
POLINOMIAL/75
No de Iteraciones
¯
À100
À100
11
11
À100
54
Densidad Precondicionador
0.010%
0.010%
0.041%
0.041%
0.006%
0.006%
Eficiencia de los precondicionadores en el caso 64000 × 64000
24
Mflops
1.356E+00
1.356E+00
2.216E+01
2.216E+01
6.780E-01
6.780E-01
Precondicionador/Restart
ILU(0)/32
ILU(0)/75
ILU(10)/32
ILU(10)/75
POLINOMIAL/32
POLINOMIAL/75
No de Iteraciones
¯
À100
À100
10
10
À100
À100
Densidad Precondicionador
0.003%
0.003%
0.012%
0.012%
0.001%
0.001%
Mflops
4.634E+00
4.634E+00
7.488E+01
7.488E+01
2.317E+00
2.317E+00
Eficiencia de los precondicionadores en el caso 216000 × 216000
Precondicionador/Restart
ILU(0)/32
ILU(0)/75
ILU(10)/32
ILU(10)/75
POLINOMIAL/32
POLINOMIAL/75
No de Iteraciones
¯
À100
63
32
32
À100
À100
Densidad Precondicionador
0.061%
0.061%
0.251%
0.251%
0.035%
0.035%
Mflops
1.962E-01
1.962E-01
3.466E+00
3.466E+00
0.981E-02
0.981E-02
Eficiencia de los precondicionadores en el caso 10404 × 10404
Las tablas anteriores reflejan las ventajas y desventajas de cada precondicionador, es decir, el
hecho de que un determinado precondicionador minimize la cantidad de iteraciones necesarias
para lograr la precisión deseada, es considerado una ventaja, pero no implica que el mismo
sea computacionalmente eficiente, para ello es necesario evaluar el costo computacional que
implica su uso, la primera columna de las tablas, refleja el precondicionador estudiado, la
segunda columna, expresa la cantidad de iteraciones necesarias para lograr la precisión deseada
utilizando el precondicionador de la primera columna, la tercera columna refleja su densidad y
la cuarta columna expresa el costo en Mflops (por iteración) que implica el uso del mismo,
es importante resaltar que el costo computacional es proporcional a la densidad. Otra
caracterı́stica importante, es la robustez de los precondicionadores, es fácil observar que el
único precondicionador que permitió llegar a la precisión deseada en todos los casos fue el
ILU t(10, 10−3 ), demostrando ser un precondicionador sumamente robusto para los casos de
prueba.
En las figuras 8, 10, 12 y 14 se puede apreciar claramente, la diferencia inducida por cada
precondicionador en el rendimiento del algoritmo GCPRNS con parámetro de reinicio k = 32,
a su vez, las figuras 9, 11, 13 y 15 son análogas pero con parámetro de reinicio k = 75, el
precondicionador ILU t(10, 10−3 ) muestra en todos los casos, una clara superioridad respecto a
los otros precondicionadores considerados, los cuales escasamente inducen alguna eficiencia la
búsqueda de la solución.
25
0
-1
-2
ILU(0)
ILU(10)
POLINOMIAL
log(||r||/||b||)
-3
-4
-5
-6
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 8: Resultados de ejecución del algoritmo (GCPRNS) con k = 32, para el caso 8000×8000.
0
-1
-2
ILU(0)
ILU(10)
POLINOMIAL
log(||r||/||b||)
-3
-4
-5
-6
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 9: Resultados de ejecución del algoritmo (GCPRNS) con k = 75, para el caso 8000×8000.
26
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
ILU(0)
ILU(10)
POLINOMIAL
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 10: Resultados de ejecución del algoritmo (GCPRNS) con k = 32, para el caso
64000 × 64000.
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
ILU(0)
ILU(10)
POLINOMIAL
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 11: Resultados de ejecución del algoritmo (GCPRNS) con k = 75, para el caso
64000 × 64000.
27
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
ILU(0)
ILU(10)
POLINOMIAL
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 12: Resultados de ejecución del algoritmo (GCPRNS) con k = 32, para el caso
216000 × 216000.
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
ILU(0)
ILU(10)
POLINOMIAL
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 13: Resultados de ejecución del algoritmo (GCPRNS) con k = 75, para el caso
216000 × 216000.
28
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
ILU(0)
ILU(10)
POLINOMIAL
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 14: Resultados de ejecución del algoritmo (GCPRNS) con k = 32, para el caso
10404 × 10404.
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
ILU(0)
ILU(10)
POLINOMIAL
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 15: Resultados de ejecución del algoritmo (GCPRNS) con k = 75, para el caso
10404 × 10404.
29
Una vez obtenidos los resultados de la ejecución del GCPRNS con los casos de prueba
planteados, se procedió a evaluar los métodos GMRES y BiCGstab implementados en la
librerı́a U CSparseLib [Lar01], tomando como único caso de prueba, el sistema lineal proveniente
del simulador SEMIYA. Cabe destacar que en vista del bajo rendimiento inducido por el
precondicionador de tipo Polinomial, especı́ficamente en el caso 10404 × 10404, se tomó la
decisión de excluirlo en estas pruebas. A continuación, en las figuras 16 y 17, se muestra la
curva caracterı́stica de convergencia para las pruebas antes mencionadas. Para el GMRES se
fijó el reinicio en 32.
0
-1
ILU(0)
ILU(10)
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 16: Resultados de ejecución del algoritmo (GMRES), para el caso 10404 × 10404.
0
-1
ILU(0)
ILU(10)
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 17: Resultados de ejecución del algoritmo (BiCGstab), para el caso 10404 × 10404.
Las figuras 18 y 19, muestran unos gráficos similares a los anteriormente expuestos, pero
generados a partir de los resultados de ejecución de los métodos usados por SEMIYA para
30
resolver el caso 10404 × 10404. En ambos casos, el parámetro de reinicio del GMRES fue 32.
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
GMRES
BICGSTAB
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 18: Resultados de ejecución de los algoritmos (GMRES) y (BiCGstab), usando un
precondicionador de tipo Jacobi, para el caso 10404 × 10404.
0
-1
-2
log(||r||/||b||)
-3
-4
-5
-6
-7
GMRES
BICGSTAB
-8
-9
-10
0
10
20
30
40
50
60
ITERACIONES
70
80
90
100
Figura 19: Resultados de ejecución de los algoritmos (GMRES) y (BiCGstab), usando un
precondicionador de tipo Tridiagonal, para el caso 10404 × 10404.
Para establecer cierta similitud en las comparaciones, se fijaron 100 iteraciones como máximo
para generar los gráficos, es decir, a pesar de que los resultados recibidos presentaban
convergencia, ésta se alcanzaba, para algunos casos, en una cantidad de iteraciones mucho
mayor que la cantidad máxima de iteraciones fijada. Los métodos usados por SEMIYA fueron
los mismos usados en las pruebas anteriores, BiCGstab y GMRES, la principal diferencia
se centra en el tipo de precondicionador usado, los cuales son de tipo tridiagonal y de tipo
Jacobi.
31
6
Conclusiones
Debido al importante papel que cumple la técnica de precondicionamiento en el campo de los
métodos iterativos, se torna necesario que el estudio de nuevos métodos, se lleve a cabo tomando
muy en cuenta, la influencia que producen distintos precondicionadores en los mismos; un
precondicionador puede aumentar la efectividad de un método, pero a la vez podrı́a decrementar
su eficiencia, lo ideal es la consecución de precondicionadores cuyo costo computacional de
aplicación esté balanceado con la eficiencia que pudiese inducir sobre algún método particular.
Los resultados obtenidos en este estudio, muestran que el método del Gradiente Conjugado
Precondicionado con Reinicio es efectivo y eficiente, en problemas similares a los estudiados,
sólo cuando se emplea un precondicionador adecuado tal como el ILU t, lo que puede ser
considerado una caracterı́stica en común con la mayorı́a de los métodos iterativos. Sin
embargo, es necesario llevar a cabo estudios adicionales, respecto a la conveniencia de los
precondicionadores usados, tomando en cuenta los recursos computacionales requeridos para
la aplicación de los mismos, con la finalidad de relacionar el nivel de efectividad con el nivel de
eficiencia que puedan inducir.
Particularmente, para el sistema lineal proveniente del simulador SEMIYA, el precondicionador
ILU t mostró una clara superioridad tanto en eficiencia como en robustez con respecto a cualquier
otro incluido en este estudio, mejorando aun más el rendimiento inducido por los que utiliza el
simulador, siendo BiCGstab el método más destacado, serı́a ideal una combinación del mismo
con el precondicionador ILU t.
En otro orden de ideas, cabe resaltar el alto grado de paralelización que presenta el
algoritmo estudiado, este hace uso de una gran cantidad de productos escalares, ası́ como
de una considerable cantidad de operaciones matriz-vector, por ende, su paralelización es
altamente factible y permitirı́a mejorar en gran medida, el buen desempeño ya mostrado; serı́a
importante plantear nuevamente este estudio, pero utilizando las versiones paralelizadas de
dichos algoritmos, con lo cual se lograrı́a observar cual de ellos puede aprovechar en mayor
proporción, la ventaja que ofrece la ejecución en arquitecturas paralelas.
32
Referencias
[AMO92]
S. Ashby, T. Manteuffel, and J. Otto. A Comparison of Adaptive Chebyshev and
Least Squares Polynomial Preconditioning for Hermitian Positive Definite Linear
Systems. SIAM J. Sci. Stat. Comput., 13(1):1–29, 1992.
[AMS89]
S. Ashby, T. Manteuffel, and P. Saylor. Adaptive Polynomial Preconditioning for
Hermitian Indefinite Linear Systems. BIT, 29:583–609, 1989.
[AMS90]
S. Ashby, T. Manteuffel, and P. Saylor. A Taxonomy for Conjugate Gradient
Methods. SIAM Jour. Numer. Analysis, 27(6):1542–1568, 1990.
[Arn51]
W. E. Arnoldi. The Principle of Minimized Iteration in the Solution of Matrix
Eigenvalue Problem. Quart. Appl. Math, 9:17–29, 1951.
[Axe85]
O. Axelsson. A Survey of Preconditioned Iterative Methods for Linear Systems of
Algebraic Equations. BIT, 25:166–187, 1985.
[BCMM95] R. Bru, C. Corral, A. Martinez, and J. Mas. Multisplitting Preconditioners based on
Incomplete Choleski Factorizations. Technical report, Departamento de Matemtica
Aplicada, Universidad de Valencia, 1995.
[BMT94]
M. Benzi, C. Meyer, and M. Tuma. A Sparse Approximate Inverse Preconditioner
for the Conjugate Gradient Method. Technical report, Mathematics Department,
North Carolina State University, 1994.
[BMT96]
M. Benzi, C. Meyer, and M. Tuma. A Sparse Approximate Inverse Preconditioner
for the Conjugate Gradient Method. SIAM J. Scientific Computing, 17(3):1135–
1151, 1996.
[CIKM94] S. Campbell, I. Ipsen, C. Kelley, and C. Meyer. GMRES and the Minimal
Polynomial. Technical report, Center for Research in Scientific Computing, North
Carolina State University, 1994.
[DGK84]
J. Dongarra, F. Gustavson, and A. Karp. Implementing Linear Algebra Algorithms
for Dense Matrices on a Vector Pipeline Machine. SIAM Review, 26:91–112, 1984.
[dV82]
H. A. Van der Vost. A Vectorizable Variant of some ICCG Methods. SIAM J. Sci.
Stat. Comput., 3(3), 1982.
[dV92]
H. A. Van der Vost. Bi-CGstab: A Fast and Smoothly Converging Variant of
the BiCG for the Solution of Nonsymmetric Linear Systems. SIAM J. Sci. Stat.
Comput., 13(2), 1992.
[Eij90a]
V. Eijkhout. Analysis of Parallel Incomplete Point Factorizations. Technical Report
1045, CSRD, 1990.
33
[Eij90b]
V. Eijkhout. Beware of Modified Incomplete Point Factorizations. Technical Report
1048, CSRD, 1990.
[EOV90]
S. Eisenstat, J. Ortega, and C. Vaughan. Efficient Polynomial Preconditioning for
the Conjugate Gradient Method. SIAM J. Sci. Stat. Comput., 11(5):859–872, 1990.
[Fle76]
R. Flecher. Conjugate Gradient Methods for Indefinite Systems. Lecture Notes in
Mathematics 506, 1976.
[FM84]
V. Faber and T. Manteuffel. Necessary and Sufficient Conditions for the Existence
of a Conjugate Gradient Method. SIAM J. Numer. Analysis, 21(2):352–362, 1984.
[GH97]
M. Grote and T. Huckle. Parallel Preconditioning with Sparse Approximate Inverse.
SIAM Scientific Computing, 18(3):838–853, 1997.
[GS93]
M. Grote and H. Simon. Parallel Preconditioning and Approximate Inverses on the
Connection Machine. In 6th SIAM Conference on Parallel Processing for Scientific
Computing, pages 519–523. SIAM, 1993.
[GS94]
M. Grote and H. Simon. A New Approach to Parallel Preconditioning with Sparse
Approximate Inverses. Technical Report SCCM-94-03, Department of Sci. Comput.
and Comput. Math., Stanford University, 1994.
[GS95]
M. Grote and H. Simon. Effective Parallel Preconditioning with Sparse Approximate
Inverses. In 7th SIAM Conference on Parallel Processing for Scientific Computing,
pages 466–471. SIAM, 1995.
[KY93]
L. Yu Kolotilina and A. Yu Yeremin. Factorized Sparse Approximate Inverse
Preconditionings I. theory. SIAM Jour. Matrix Analy. Appli., 14:45–58, 1993.
[Lar01]
G. Larrazabal. UCSparseLib: Una Libreria para Resolver Sistemas Lineales
Dispersos.
Technical report, Departamento de Computación, FACYT-UC,
Universidad de Carabobo, actualmente en desarrollo, 2001.
[LC99]
G. Larrazábal and J. M. Cela. Study of SPAI Preconditioner for Convective
Problems. In 5th International Conference on Numerical Methods in Engineering
and Applied Sciences, (CIMENICS2000), Caracas, Venezuela, 1999.
[MdV77]
J. A. Meijerink and H. A. Van der Vost. An Iterative Solution Method for Linear
Systems of which the Coefficient Matrix is a Symmetric M-matrix. Math. Compt.,
31:148–162, 1977.
[NJL94]
J.Ñavarro, T. Juan, and T. Lang. MOB Forms: A Class of Multilevel Block
Algorithms for Dense Linear Algebra Operations. In ICS 94, 1994.
34
[NRT92]
N.Ñachtigal, S. Reddy, and L. Trefethen. How Fast are Nonsymmetric Matrix
Iterations? SIAM J. Matrix Anal. Appl., 13(3), 1992.
[PSL01]
A. Pelaez, J. Salas, and G. Larrazabal. Reordenamiento de Matrices Dispersas
usando METIS: Un estudio experimental. Technical report, Facultad de Ciencias y
Tecnología de la Universidad de Carabobo, Venezuela, 2001.
[Saa85]
Y. Saad. Practical Use of Polynomial Preconditionings for the Conjugate Gradient
Method. SIAM J. Sci. Stat. Comput., 6(4), 1985.
[Saa89]
Y. Saad. Krylov Subspace Methods on supercomputers. SIAM Journal on Sci. Sta.
Comput., 10(6):1200–1232, 1989.
[Saa94a]
Y. Saad. Highly Parallel Preconditioners for General Sparse Matrices. In Recent
Advances in Iterative Methods, volume 60. Springer-Verlag, 1994.
[Saa94b]
Y. Saad. ILUT: a Dual Threshold Incomplete LU Factorization. Numerical Linear
Algebra with Applications, 1(4), 1994.
[Saa96]
Y. Saad. Iterative Methods for Sparse Linear Systems. PWD Publishing, New York,
1996.
[SC98]
Y. Saad and E. Chow. Approximate Inverse Preconditioners via sparse-sparse
Iterations. SIAM J. Scientific Computing, 19, 1998.
[SF93]
G. Sleijpen and D. Fokkema. BIGCstab(l) for Linear Equations Involving
Unsymmetric Matrices with Complex Spectrum. Electronic Transactions on
Numerical Analysis, 1:11–32, 1993.
[Son89]
P. Sonneveld. CGS, A Fast Lanczos Type Solver for Nonsymmetric Linear Systems.
SIAM J. Sci. Stat. Comput., 10(1), 1989.
[SS86]
Y. Saad and M. H. Sultz. GMRES: A Generalized Minimal Residual Algorithm for
Solving Nonsymmetric Linear Systems. SIAM J. Sci. Stat. Comput., 7(3), 1986.
[Var62]
R. Varga. Matrix Iterative Analysis. Prentice-Hall International, 1962.
[Wat81]
J. Watt. A Conjugate Gradient Truncated Direct Method for the Iterative Solution
of the Reservoir Simulation Pressure Equation. Society of Petroleum Engineer
Journal, 21:345–353, 1981.
[Wei94]
R. Weiss. Minimization Properties and Short Recurrences for Krylov Subspace
Methods. Electronic Transactions on Numerical Analysis, 2:57–65, 1994.
[Yea89]
D. Young and et al.
Application of Sparse Matrix Solvers as Effective
Preconditioners. SIAM J. Sci. Stat. Comput., 10(6):1186–1199, 1989.
35
[Zla82]
Z. Zlatev. Use of Iterative Refinement in the Solution of Sparse Linear Systems.
SIAM Jour. Numer. Analysis, 19:381–399, 1982.
36

Documentos relacionados