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